 738b04c881
			
		
	
	738b04c881
	
	
	
		
			
			Removed upstreamed:
  pending-5.15/101-Use-stddefs.h-instead-of-compiler.h.patch[1]
  ipq806x/patches-5.15/122-01-clk-qcom-clk-krait-fix-wrong-div2-functions.patch[2]
  bcm27xx/patches-5.15/950-0198-drm-fourcc-Add-packed-10bit-YUV-4-2-0-format.patch[3]
Manually rebased:
  ramips/patches-5.15/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch[4]
Added patch/backported:
  ramips/patches-5.15/107-PCI-mt7621-Add-sentinel-to-quirks-table.patch[5]
All other patches automatically rebased.
1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.86&id=c160505c9b574b346031fdf2c649d19e7939ca11
2. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.86&id=a051e10bfc6906d29dae7a31f0773f2702edfe1b
3. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v5.15.86&id=ec1727f89ecd6f2252c0c75e200058819f7ce47a
4. Quilt gave this output when I applied the patch to rebase it:
% quilt push -f
Applying patch platform/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch
patching file arch/mips/ralink/Kconfig
patching file drivers/pci/controller/Kconfig
patching file drivers/pci/controller/Makefile
patching file drivers/staging/Kconfig
patching file drivers/staging/Makefile
patching file drivers/staging/mt7621-pci/Kconfig
patching file drivers/staging/mt7621-pci/Makefile
patching file drivers/staging/mt7621-pci/TODO
patching file drivers/staging/mt7621-pci/mediatek,mt7621-pci.txt
patching file drivers/staging/mt7621-pci/pci-mt7621.c
Hunk #1 FAILED at 1.
Not deleting file drivers/staging/mt7621-pci/pci-mt7621.c as content differs from patch
1 out of 1 hunk FAILED -- saving rejects to file drivers/staging/mt7621-pci/pci-mt7621.c.rej
patching file drivers/pci/controller/pcie-mt7621.c
Applied patch platform/100-PCI-mt7621-Add-MediaTek-MT7621-PCIe-host-controller-.patch (forced; needs refresh)
Upon inspecting drivers/staging/mt7621-pci/pci-mt7621.c.rej, it seems that
the original patch wants to delete drivers/staging/mt7621-pci/pci-mt7621.c
but upstream's version was not an exact match.  I opted to delete that
file.
5. Suggestion by hauke: 19098934f9
"This patch is in upstream kernel, but it was backported to the old
staging driver in kernel 5.15."
Build system: x86_64
Build-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod
Run-tested: bcm2711/RPi4B, filogic/xiaomi_redmi-router-ax6000-ubootmod
Signed-off-by: John Audia <therealgraysky@proton.me>
		
	
		
			
				
	
	
		
			150 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			150 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Daniel Golle <daniel@makrotopia.org>
 | |
| Subject: libata: add ledtrig support
 | |
| 
 | |
| This adds a LED trigger for each ATA port indicating disk activity.
 | |
| 
 | |
| As this is needed only on specific platforms (NAS SoCs and such),
 | |
| these platforms should define ARCH_WANTS_LIBATA_LEDS if there
 | |
| are boards with LED(s) intended to indicate ATA disk activity and
 | |
| need the OS to take care of that.
 | |
| In that way, if not selected, LED trigger support not will be
 | |
| included in libata-core and both, codepaths and structures remain
 | |
| untouched.
 | |
| 
 | |
| Signed-off-by: Daniel Golle <daniel@makrotopia.org>
 | |
| ---
 | |
|  drivers/ata/Kconfig       | 16 ++++++++++++++++
 | |
|  drivers/ata/libata-core.c | 41 +++++++++++++++++++++++++++++++++++++++++
 | |
|  include/linux/libata.h    |  9 +++++++++
 | |
|  3 files changed, 66 insertions(+)
 | |
| 
 | |
| --- a/drivers/ata/Kconfig
 | |
| +++ b/drivers/ata/Kconfig
 | |
| @@ -67,6 +67,22 @@ config ATA_FORCE
 | |
|  
 | |
|  	  If unsure, say Y.
 | |
|  
 | |
| +config ARCH_WANT_LIBATA_LEDS
 | |
| +	bool
 | |
| +
 | |
| +config ATA_LEDS
 | |
| +	bool "support ATA port LED triggers"
 | |
| +	depends on ARCH_WANT_LIBATA_LEDS
 | |
| +	select NEW_LEDS
 | |
| +	select LEDS_CLASS
 | |
| +	select LEDS_TRIGGERS
 | |
| +	default y
 | |
| +	help
 | |
| +	  This option adds a LED trigger for each registered ATA port.
 | |
| +	  It is used to drive disk activity leds connected via GPIO.
 | |
| +
 | |
| +	  If unsure, say N.
 | |
| +
 | |
|  config ATA_ACPI
 | |
|  	bool "ATA ACPI Support"
 | |
|  	depends on ACPI
 | |
| --- a/drivers/ata/libata-core.c
 | |
| +++ b/drivers/ata/libata-core.c
 | |
| @@ -656,6 +656,19 @@ u64 ata_tf_read_block(const struct ata_t
 | |
|  	return block;
 | |
|  }
 | |
|  
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +#define LIBATA_BLINK_DELAY 20 /* ms */
 | |
| +static inline void ata_led_act(struct ata_port *ap)
 | |
| +{
 | |
| +	unsigned long led_delay = LIBATA_BLINK_DELAY;
 | |
| +
 | |
| +	if (unlikely(!ap->ledtrig))
 | |
| +		return;
 | |
| +
 | |
| +	led_trigger_blink_oneshot(ap->ledtrig, &led_delay, &led_delay, 0);
 | |
| +}
 | |
| +#endif
 | |
| +
 | |
|  /**
 | |
|   *	ata_build_rw_tf - Build ATA taskfile for given read/write request
 | |
|   *	@tf: Target ATA taskfile
 | |
| @@ -4580,6 +4593,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
 | |
|  		if (tag < 0)
 | |
|  			return NULL;
 | |
|  	}
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +	ata_led_act(ap);
 | |
| +#endif
 | |
|  
 | |
|  	qc = __ata_qc_from_tag(ap, tag);
 | |
|  	qc->tag = qc->hw_tag = tag;
 | |
| @@ -5358,6 +5374,9 @@ struct ata_port *ata_port_alloc(struct a
 | |
|  	ap->stats.unhandled_irq = 1;
 | |
|  	ap->stats.idle_irq = 1;
 | |
|  #endif
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +	ap->ledtrig = kzalloc(sizeof(struct led_trigger), GFP_KERNEL);
 | |
| +#endif
 | |
|  	ata_sff_port_init(ap);
 | |
|  
 | |
|  	return ap;
 | |
| @@ -5393,6 +5412,12 @@ static void ata_host_release(struct kref
 | |
|  
 | |
|  		kfree(ap->pmp_link);
 | |
|  		kfree(ap->slave_link);
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +		if (ap->ledtrig) {
 | |
| +			led_trigger_unregister(ap->ledtrig);
 | |
| +			kfree(ap->ledtrig);
 | |
| +		};
 | |
| +#endif
 | |
|  		kfree(ap);
 | |
|  		host->ports[i] = NULL;
 | |
|  	}
 | |
| @@ -5799,7 +5824,23 @@ int ata_host_register(struct ata_host *h
 | |
|  		host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
 | |
|  		host->ports[i]->local_port_no = i + 1;
 | |
|  	}
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +	for (i = 0; i < host->n_ports; i++) {
 | |
| +		if (unlikely(!host->ports[i]->ledtrig))
 | |
| +			continue;
 | |
|  
 | |
| +		snprintf(host->ports[i]->ledtrig_name,
 | |
| +			sizeof(host->ports[i]->ledtrig_name), "ata%u",
 | |
| +			host->ports[i]->print_id);
 | |
| +
 | |
| +		host->ports[i]->ledtrig->name = host->ports[i]->ledtrig_name;
 | |
| +
 | |
| +		if (led_trigger_register(host->ports[i]->ledtrig)) {
 | |
| +			kfree(host->ports[i]->ledtrig);
 | |
| +			host->ports[i]->ledtrig = NULL;
 | |
| +		}
 | |
| +	}
 | |
| +#endif
 | |
|  	/* Create associated sysfs transport objects  */
 | |
|  	for (i = 0; i < host->n_ports; i++) {
 | |
|  		rc = ata_tport_add(host->dev,host->ports[i]);
 | |
| --- a/include/linux/libata.h
 | |
| +++ b/include/linux/libata.h
 | |
| @@ -23,6 +23,9 @@
 | |
|  #include <linux/cdrom.h>
 | |
|  #include <linux/sched.h>
 | |
|  #include <linux/async.h>
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +#include <linux/leds.h>
 | |
| +#endif
 | |
|  
 | |
|  /*
 | |
|   * Define if arch has non-standard setup.  This is a _PCI_ standard
 | |
| @@ -894,6 +897,12 @@ struct ata_port {
 | |
|  #ifdef CONFIG_ATA_ACPI
 | |
|  	struct ata_acpi_gtm	__acpi_init_gtm; /* use ata_acpi_init_gtm() */
 | |
|  #endif
 | |
| +
 | |
| +#ifdef CONFIG_ATA_LEDS
 | |
| +	struct led_trigger	*ledtrig;
 | |
| +	char			ledtrig_name[8];
 | |
| +#endif
 | |
| +
 | |
|  	/* owned by EH */
 | |
|  	u8			sector_buf[ATA_SECT_SIZE] ____cacheline_aligned;
 | |
|  };
 |