apm821xx: add support for kernel 5.10 for testing
This patch copies over refreshed patches from 5.4. - dropped crypto patches (they got upstreamed) - dropped renesas USB 3 firmware loader (they got upstreamed) - NAND now needs extra device-properties for ECC settings. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
This commit is contained in:
		| @@ -1653,6 +1653,11 @@ XHCI_MODULES := xhci-hcd xhci-pci xhci-plat-hcd | ||||
| ifdef CONFIG_TARGET_ramips_mt7621 | ||||
|   XHCI_MODULES += xhci-mtk | ||||
| endif | ||||
| ifndef CONFIG_LINUX_5_4 | ||||
|   ifdef CONFIG_TARGET_apm821xx_nand | ||||
|     XHCI_MODULES += xhci-pci-renesas | ||||
|   endif | ||||
| endif | ||||
| XHCI_FILES := $(wildcard $(patsubst %,$(LINUX_DIR)/drivers/usb/host/%.ko,$(XHCI_MODULES))) | ||||
| XHCI_AUTOLOAD := $(patsubst $(LINUX_DIR)/drivers/usb/host/%.ko,%,$(XHCI_FILES)) | ||||
|  | ||||
| @@ -1667,6 +1672,7 @@ define KernelPackage/usb3 | ||||
| 	CONFIG_USB_XHCI_PCI \ | ||||
| 	CONFIG_USB_XHCI_PLATFORM \ | ||||
| 	CONFIG_USB_XHCI_MTK \ | ||||
| 	CONFIG_USB_XHCI_PCI_RENESAS \ | ||||
| 	CONFIG_USB_XHCI_HCD_DEBUGGING=n | ||||
|   FILES:= \ | ||||
| 	$(XHCI_FILES) | ||||
|   | ||||
| @@ -10,6 +10,7 @@ FEATURES:=fpu dt gpio ramdisk squashfs usb | ||||
| SUBTARGETS:=nand sata | ||||
|  | ||||
| KERNEL_PATCHVER:=5.4 | ||||
| KERNEL_TESTING_PATCHVER:=5.10 | ||||
|  | ||||
| define Target/Description | ||||
| 	Build images for AppliedMicro APM821xx based boards. | ||||
|   | ||||
							
								
								
									
										286
									
								
								target/linux/apm821xx/config-5.10
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										286
									
								
								target/linux/apm821xx/config-5.10
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,286 @@ | ||||
| # CONFIG_40x is not set | ||||
| CONFIG_44x=y | ||||
| CONFIG_460EX=y | ||||
| CONFIG_4xx=y | ||||
| CONFIG_4xx_SOC=y | ||||
| # CONFIG_ADVANCED_OPTIONS is not set | ||||
| CONFIG_APM821xx=y | ||||
| CONFIG_APOLLO3G=y | ||||
| # CONFIG_ARCHES is not set | ||||
| CONFIG_ARCH_32BIT_OFF_T=y | ||||
| CONFIG_ARCH_DMA_ADDR_T_64BIT=y | ||||
| CONFIG_ARCH_HIBERNATION_POSSIBLE=y | ||||
| CONFIG_ARCH_KEEP_MEMBLOCK=y | ||||
| CONFIG_ARCH_MAY_HAVE_PC_FDC=y | ||||
| CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y | ||||
| CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y | ||||
| CONFIG_ARCH_MMAP_RND_BITS=11 | ||||
| CONFIG_ARCH_MMAP_RND_BITS_MAX=17 | ||||
| CONFIG_ARCH_MMAP_RND_BITS_MIN=11 | ||||
| CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MAX=17 | ||||
| CONFIG_ARCH_MMAP_RND_COMPAT_BITS_MIN=11 | ||||
| CONFIG_ARCH_OPTIONAL_KERNEL_RWX=y | ||||
| CONFIG_ARCH_SUSPEND_POSSIBLE=y | ||||
| CONFIG_ARCH_WEAK_RELEASE_ACQUIRE=y | ||||
| CONFIG_AUDIT_ARCH=y | ||||
| # CONFIG_BAMBOO is not set | ||||
| # CONFIG_BLK_DEV_INITRD is not set | ||||
| CONFIG_BLK_MQ_PCI=y | ||||
| CONFIG_BLK_PM=y | ||||
| CONFIG_BLUESTONE=y | ||||
| CONFIG_BOOKE=y | ||||
| CONFIG_BOOKE_WDT=y | ||||
| # CONFIG_CANYONLANDS is not set | ||||
| CONFIG_CLKDEV_LOOKUP=y | ||||
| CONFIG_CLONE_BACKWARDS=y | ||||
| CONFIG_CMDLINE="rootfstype=squashfs noinitrd" | ||||
| CONFIG_CMDLINE_FROM_BOOTLOADER=y | ||||
| CONFIG_COMMON_CLK=y | ||||
| CONFIG_COMPAT_32BIT_TIME=y | ||||
| CONFIG_CPU_BIG_ENDIAN=y | ||||
| CONFIG_CRC16=y | ||||
| # CONFIG_CRC32_SARWATE is not set | ||||
| CONFIG_CRC32_SLICEBY8=y | ||||
| CONFIG_CRYPTO_ACOMP2=y | ||||
| CONFIG_CRYPTO_AEAD=y | ||||
| CONFIG_CRYPTO_AEAD2=y | ||||
| CONFIG_CRYPTO_AUTHENC=y | ||||
| CONFIG_CRYPTO_CCM=y | ||||
| CONFIG_CRYPTO_CFB=y | ||||
| CONFIG_CRYPTO_CTR=y | ||||
| CONFIG_CRYPTO_DEFLATE=y | ||||
| CONFIG_CRYPTO_DEV_PPC4XX=y | ||||
| CONFIG_CRYPTO_DRBG=y | ||||
| CONFIG_CRYPTO_DRBG_HMAC=y | ||||
| CONFIG_CRYPTO_DRBG_MENU=y | ||||
| CONFIG_CRYPTO_ECB=y | ||||
| CONFIG_CRYPTO_ESSIV=y | ||||
| CONFIG_CRYPTO_GCM=y | ||||
| CONFIG_CRYPTO_GF128MUL=y | ||||
| CONFIG_CRYPTO_GHASH=y | ||||
| CONFIG_CRYPTO_HASH=y | ||||
| CONFIG_CRYPTO_HASH2=y | ||||
| CONFIG_CRYPTO_HMAC=y | ||||
| CONFIG_CRYPTO_HW=y | ||||
| CONFIG_CRYPTO_JITTERENTROPY=y | ||||
| CONFIG_CRYPTO_LIB_SHA256=y | ||||
| CONFIG_CRYPTO_LZO=y | ||||
| CONFIG_CRYPTO_MANAGER=y | ||||
| CONFIG_CRYPTO_MANAGER2=y | ||||
| CONFIG_CRYPTO_MD5_PPC=y | ||||
| CONFIG_CRYPTO_NULL=y | ||||
| CONFIG_CRYPTO_NULL2=y | ||||
| CONFIG_CRYPTO_OFB=y | ||||
| CONFIG_CRYPTO_RNG=y | ||||
| CONFIG_CRYPTO_RNG2=y | ||||
| CONFIG_CRYPTO_RNG_DEFAULT=y | ||||
| CONFIG_CRYPTO_SEQIV=y | ||||
| CONFIG_CRYPTO_SHA1_PPC=y | ||||
| CONFIG_CRYPTO_SHA256=y | ||||
| CONFIG_DATA_SHIFT=12 | ||||
| CONFIG_DEBUG_MISC=y | ||||
| CONFIG_DMA_DIRECT_REMAP=y | ||||
| CONFIG_DMA_REMAP=y | ||||
| CONFIG_DTC=y | ||||
| # CONFIG_E200 is not set | ||||
| CONFIG_EARLY_PRINTK=y | ||||
| # CONFIG_EBONY is not set | ||||
| CONFIG_EDAC_ATOMIC_SCRUB=y | ||||
| CONFIG_EDAC_SUPPORT=y | ||||
| # CONFIG_EIGER is not set | ||||
| CONFIG_EXTRA_TARGETS="uImage" | ||||
| CONFIG_FIXED_PHY=y | ||||
| CONFIG_FORCE_PCI=y | ||||
| CONFIG_FREEZER=y | ||||
| # CONFIG_FSL_LBC is not set | ||||
| CONFIG_FW_CACHE=y | ||||
| CONFIG_FW_LOADER_PAGED_BUF=y | ||||
| CONFIG_GCC_PLUGINS=y | ||||
| # CONFIG_GCC_PLUGIN_CYC_COMPLEXITY is not set | ||||
| # CONFIG_GCC_PLUGIN_LATENT_ENTROPY is not set | ||||
| # CONFIG_GCC_PLUGIN_RANDSTRUCT is not set | ||||
| # CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF is not set | ||||
| # CONFIG_GCC_PLUGIN_STRUCTLEAK_BYREF_ALL is not set | ||||
| # CONFIG_GCC_PLUGIN_STRUCTLEAK_USER is not set | ||||
| CONFIG_GENERIC_ALLOCATOR=y | ||||
| CONFIG_GENERIC_ATOMIC64=y | ||||
| CONFIG_GENERIC_BUG=y | ||||
| CONFIG_GENERIC_CLOCKEVENTS=y | ||||
| CONFIG_GENERIC_CMOS_UPDATE=y | ||||
| CONFIG_GENERIC_CPU=y | ||||
| CONFIG_GENERIC_CPU_AUTOPROBE=y | ||||
| CONFIG_GENERIC_EARLY_IOREMAP=y | ||||
| CONFIG_GENERIC_IRQ_SHOW=y | ||||
| CONFIG_GENERIC_IRQ_SHOW_LEVEL=y | ||||
| CONFIG_GENERIC_ISA_DMA=y | ||||
| CONFIG_GENERIC_MSI_IRQ=y | ||||
| CONFIG_GENERIC_MSI_IRQ_DOMAIN=y | ||||
| CONFIG_GENERIC_PCI_IOMAP=y | ||||
| CONFIG_GENERIC_SMP_IDLE_THREAD=y | ||||
| CONFIG_GENERIC_STRNCPY_FROM_USER=y | ||||
| CONFIG_GENERIC_STRNLEN_USER=y | ||||
| CONFIG_GENERIC_TIME_VSYSCALL=y | ||||
| # CONFIG_GEN_RTC is not set | ||||
| # CONFIG_GLACIER is not set | ||||
| CONFIG_GPIOLIB=y | ||||
| CONFIG_GPIO_GENERIC=y | ||||
| CONFIG_GPIO_GENERIC_PLATFORM=y | ||||
| CONFIG_HAS_DMA=y | ||||
| CONFIG_HAS_IOMEM=y | ||||
| CONFIG_HAS_IOPORT_MAP=y | ||||
| CONFIG_HW_RANDOM=y | ||||
| CONFIG_HW_RANDOM_PPC4XX=y | ||||
| CONFIG_I2C=y | ||||
| CONFIG_I2C_BOARDINFO=y | ||||
| CONFIG_I2C_CHARDEV=y | ||||
| CONFIG_I2C_IBM_IIC=y | ||||
| CONFIG_IBM_EMAC=y | ||||
| CONFIG_IBM_EMAC_EMAC4=y | ||||
| CONFIG_IBM_EMAC_POLL_WEIGHT=32 | ||||
| CONFIG_IBM_EMAC_RGMII=y | ||||
| CONFIG_IBM_EMAC_RXB=128 | ||||
| CONFIG_IBM_EMAC_RX_COPY_THRESHOLD=256 | ||||
| CONFIG_IBM_EMAC_TAH=y | ||||
| CONFIG_IBM_EMAC_TXB=128 | ||||
| # CONFIG_ICON is not set | ||||
| CONFIG_ILLEGAL_POINTER_VALUE=0 | ||||
| CONFIG_IRQCHIP=y | ||||
| CONFIG_IRQ_DOMAIN=y | ||||
| CONFIG_IRQ_DOMAIN_HIERARCHY=y | ||||
| CONFIG_IRQ_FORCED_THREADING=y | ||||
| CONFIG_IRQ_WORK=y | ||||
| CONFIG_ISA_DMA_API=y | ||||
| # CONFIG_JFFS2_FS is not set | ||||
| # CONFIG_KATMAI is not set | ||||
| CONFIG_KERNEL_START=0xc0000000 | ||||
| CONFIG_LEDS_TRIGGER_MTD=y | ||||
| CONFIG_LEDS_TRIGGER_PATTERN=y | ||||
| CONFIG_LIBFDT=y | ||||
| CONFIG_LOCK_DEBUGGING_SUPPORT=y | ||||
| CONFIG_LOWMEM_SIZE=0x30000000 | ||||
| CONFIG_LZO_COMPRESS=y | ||||
| CONFIG_LZO_DECOMPRESS=y | ||||
| # CONFIG_MATH_EMULATION is not set | ||||
| CONFIG_MDIO_BUS=y | ||||
| CONFIG_MDIO_DEVICE=y | ||||
| CONFIG_MEMFD_CREATE=y | ||||
| CONFIG_MIGRATION=y | ||||
| CONFIG_MMU_GATHER_PAGE_SIZE=y | ||||
| CONFIG_MODULES_USE_ELF_RELA=y | ||||
| CONFIG_MODULE_ALLOW_MISSING_NAMESPACE_IMPORTS=y | ||||
| CONFIG_MTD_CFI_ADV_OPTIONS=y | ||||
| # CONFIG_MTD_CFI_GEOMETRY is not set | ||||
| # CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set | ||||
| CONFIG_NEED_DMA_MAP_STATE=y | ||||
| CONFIG_NEED_PER_CPU_KM=y | ||||
| CONFIG_NEED_SG_DMA_LENGTH=y | ||||
| CONFIG_NOT_COHERENT_CACHE=y | ||||
| CONFIG_NO_HZ=y | ||||
| CONFIG_NO_HZ_COMMON=y | ||||
| CONFIG_NO_HZ_IDLE=y | ||||
| CONFIG_NR_IRQS=512 | ||||
| CONFIG_NVMEM=y | ||||
| CONFIG_NVMEM_SYSFS=y | ||||
| CONFIG_OF=y | ||||
| CONFIG_OF_ADDRESS=y | ||||
| CONFIG_OF_EARLY_FLATTREE=y | ||||
| CONFIG_OF_FLATTREE=y | ||||
| CONFIG_OF_GPIO=y | ||||
| CONFIG_OF_IRQ=y | ||||
| CONFIG_OF_KOBJ=y | ||||
| CONFIG_OF_MDIO=y | ||||
| CONFIG_OF_NET=y | ||||
| CONFIG_OLD_SIGACTION=y | ||||
| CONFIG_OLD_SIGSUSPEND=y | ||||
| CONFIG_PACKING=y | ||||
| CONFIG_PAGE_OFFSET=0xc0000000 | ||||
| CONFIG_PCI=y | ||||
| CONFIG_PCIEAER=y | ||||
| CONFIG_PCIEPORTBUS=y | ||||
| CONFIG_PCIE_PME=y | ||||
| CONFIG_PCI_DISABLE_COMMON_QUIRKS=y | ||||
| CONFIG_PCI_DOMAINS=y | ||||
| CONFIG_PCI_MSI=y | ||||
| CONFIG_PCI_MSI_ARCH_FALLBACKS=y | ||||
| CONFIG_PCI_MSI_IRQ_DOMAIN=y | ||||
| CONFIG_PGTABLE_LEVELS=2 | ||||
| CONFIG_PHYLIB=y | ||||
| CONFIG_PHYSICAL_START=0x00000000 | ||||
| CONFIG_PHYS_64BIT=y | ||||
| CONFIG_PHYS_ADDR_T_64BIT=y | ||||
| CONFIG_PM=y | ||||
| # CONFIG_PMU_SYSFS is not set | ||||
| CONFIG_PM_AUTOSLEEP=y | ||||
| CONFIG_PM_CLK=y | ||||
| CONFIG_PM_SLEEP=y | ||||
| CONFIG_PM_WAKELOCKS=y | ||||
| CONFIG_PM_WAKELOCKS_GC=y | ||||
| CONFIG_PM_WAKELOCKS_LIMIT=100 | ||||
| CONFIG_PPC=y | ||||
| CONFIG_PPC32=y | ||||
| CONFIG_PPC44x_SIMPLE=y | ||||
| CONFIG_PPC4xx_CPM=y | ||||
| CONFIG_PPC4xx_GPIO=y | ||||
| CONFIG_PPC4xx_MSI=y | ||||
| CONFIG_PPC4xx_PCI_EXPRESS=y | ||||
| # CONFIG_PPC64 is not set | ||||
| # CONFIG_PPC_47x is not set | ||||
| # CONFIG_PPC_85xx is not set | ||||
| # CONFIG_PPC_8xx is not set | ||||
| CONFIG_PPC_ADV_DEBUG_DACS=2 | ||||
| CONFIG_PPC_ADV_DEBUG_DAC_RANGE=y | ||||
| CONFIG_PPC_ADV_DEBUG_DVCS=2 | ||||
| CONFIG_PPC_ADV_DEBUG_IACS=4 | ||||
| CONFIG_PPC_ADV_DEBUG_REGS=y | ||||
| # CONFIG_PPC_BOOK3S_6xx is not set | ||||
| CONFIG_PPC_DCR=y | ||||
| CONFIG_PPC_DCR_NATIVE=y | ||||
| # CONFIG_PPC_EARLY_DEBUG is not set | ||||
| CONFIG_PPC_FPU=y | ||||
| CONFIG_PPC_INDIRECT_PCI=y | ||||
| # CONFIG_PPC_IRQ_SOFT_MASK_DEBUG is not set | ||||
| CONFIG_PPC_MMU_NOHASH=y | ||||
| CONFIG_PPC_MMU_NOHASH_32=y | ||||
| CONFIG_PPC_MSI_BITMAP=y | ||||
| CONFIG_PPC_PAGE_SHIFT=12 | ||||
| # CONFIG_PPC_PTDUMP is not set | ||||
| CONFIG_PPC_UDBG_16550=y | ||||
| CONFIG_PPC_WERROR=y | ||||
| CONFIG_PTE_64BIT=y | ||||
| # CONFIG_RAINIER is not set | ||||
| CONFIG_RAS=y | ||||
| CONFIG_RATIONAL=y | ||||
| CONFIG_RSEQ=y | ||||
| # CONFIG_SAM440EP is not set | ||||
| # CONFIG_SCOM_DEBUGFS is not set | ||||
| # CONFIG_SEQUOIA is not set | ||||
| CONFIG_SERIAL_8250_EXTENDED=y | ||||
| CONFIG_SERIAL_8250_FSL=y | ||||
| CONFIG_SERIAL_8250_SHARE_IRQ=y | ||||
| CONFIG_SERIAL_MCTRL_GPIO=y | ||||
| CONFIG_SERIAL_OF_PLATFORM=y | ||||
| CONFIG_SGL_ALLOC=y | ||||
| CONFIG_SPARSE_IRQ=y | ||||
| CONFIG_SRCU=y | ||||
| CONFIG_SUSPEND=y | ||||
| CONFIG_SUSPEND_FREEZER=y | ||||
| CONFIG_SWPHY=y | ||||
| CONFIG_SYSCTL_EXCEPTION_TRACE=y | ||||
| # CONFIG_TAISHAN is not set | ||||
| CONFIG_TASK_SIZE=0xc0000000 | ||||
| CONFIG_THREAD_INFO_IN_TASK=y | ||||
| CONFIG_THREAD_SHIFT=13 | ||||
| CONFIG_TICK_CPU_ACCOUNTING=y | ||||
| CONFIG_TINY_SRCU=y | ||||
| CONFIG_USB_SUPPORT=y | ||||
| CONFIG_VDSO32=y | ||||
| # CONFIG_VIRTIO_MENU is not set | ||||
| # CONFIG_VIRT_CPU_ACCOUNTING_NATIVE is not set | ||||
| # CONFIG_WARP is not set | ||||
| CONFIG_WATCHDOG_CORE=y | ||||
| # CONFIG_XILINX_SYSACE is not set | ||||
| CONFIG_XZ_DEC_BCJ=y | ||||
| CONFIG_XZ_DEC_POWERPC=y | ||||
| # CONFIG_YOSEMITE is not set | ||||
| CONFIG_ZLIB_DEFLATE=y | ||||
| CONFIG_ZLIB_INFLATE=y | ||||
| @@ -233,7 +233,7 @@ | ||||
| 					status = "disabled"; | ||||
| 				}; | ||||
|  | ||||
| 				ndfc@1,0 { | ||||
| 				ndfc: ndfc@1,0 { | ||||
| 					compatible = "ibm,ndfc"; | ||||
| 					reg = <00000003 00000000 00002000>; | ||||
| 					ccr = <0x00001000>; | ||||
| @@ -241,6 +241,17 @@ | ||||
| 					status = "disabled"; | ||||
|  | ||||
| 					nand { | ||||
| 						/* | ||||
| 						 * These are the same fixed "MAGIC" values | ||||
| 						 * settings as in the drivers code. | ||||
| 						 * They are the same for all devices that | ||||
| 						 * have NAND. | ||||
| 						 */ | ||||
| 						nand-ecc-engine = <&ndfc>; | ||||
| 						nand-ecc-algo = "hamming"; | ||||
| 						nand-ecc-step-size = <256>; | ||||
| 						nand-ecc-strength = <1>; | ||||
|  | ||||
| 						#address-cells = <1>; | ||||
| 						#size-cells = <1>; | ||||
| 					}; | ||||
|   | ||||
| @@ -47,6 +47,8 @@ | ||||
| 		status = "okay"; | ||||
| 		/* 32 MiB NAND Flash */ | ||||
| 		nand { | ||||
| 			nand-is-boot-medium; | ||||
|  | ||||
| 			partition@0 { | ||||
| 				label = "u-boot"; | ||||
| 				reg = <0x00000000 0x00150000>; | ||||
|   | ||||
| @@ -50,6 +50,8 @@ | ||||
| 	ndfc@1,0 { | ||||
| 		status = "okay"; | ||||
| 		nand { | ||||
| 			nand-is-boot-medium; | ||||
|  | ||||
| 			partition@0 { | ||||
| 				label = "u-boot"; | ||||
| 				reg = <0x00000000 0x00100000>; | ||||
|   | ||||
| @@ -36,6 +36,8 @@ | ||||
| 		status = "okay"; | ||||
| 		/* 32 MiB SLC NAND Flash */ | ||||
| 		nand { | ||||
| 			nand-is-boot-medium; | ||||
|  | ||||
| 			partition@0 { | ||||
| 				label = "u-boot"; | ||||
| 				reg = <0x00000000 0x00100000>; | ||||
|   | ||||
| @@ -173,10 +173,13 @@ | ||||
| }; | ||||
|  | ||||
| &EBC0 { | ||||
| 	ndfc@1,0 { | ||||
| 	ndfc: ndfc@1,0 { | ||||
|  | ||||
| 		status = "okay"; | ||||
| 		/* 128 MiB Nand Flash */ | ||||
| 		nand { | ||||
| 			nand-is-boot-medium; | ||||
|  | ||||
| 			partition0,0@0 { | ||||
| 				label = "NAND 128MiB 3,3V 8-bit"; | ||||
| 				reg = <0x00000000 0x08000000>; | ||||
|   | ||||
| @@ -0,0 +1,30 @@ | ||||
| --- a/arch/powerpc/platforms/44x/Kconfig | ||||
| +++ b/arch/powerpc/platforms/44x/Kconfig | ||||
| @@ -121,6 +121,17 @@ config CANYONLANDS | ||||
|  	help | ||||
|  	  This option enables support for the AMCC PPC460EX evaluation board. | ||||
|   | ||||
| +config APOLLO3G | ||||
| +	bool "Apollo3G" | ||||
| +	depends on 44x | ||||
| +	default n | ||||
| +	select PPC44x_SIMPLE | ||||
| +	select APM821xx | ||||
| +	select IBM_EMAC_RGMII | ||||
| +	select 460EX | ||||
| +	help | ||||
| +	  This option enables support for the AMCC Apollo 3G board. | ||||
| + | ||||
|  config GLACIER | ||||
|  	bool "Glacier" | ||||
|  	depends on 44x | ||||
| --- a/arch/powerpc/platforms/44x/ppc44x_simple.c | ||||
| +++ b/arch/powerpc/platforms/44x/ppc44x_simple.c | ||||
| @@ -47,6 +47,7 @@ machine_device_initcall(ppc44x_simple, p | ||||
|   * board.c file for it rather than adding it to this list. | ||||
|   */ | ||||
|  static char *board[] __initdata = { | ||||
| +	"amcc,apollo3g", | ||||
|  	"amcc,arches", | ||||
|  	"amcc,bamboo", | ||||
|  	"apm,bluestone", | ||||
| @@ -0,0 +1,51 @@ | ||||
| --- a/arch/powerpc/platforms/4xx/pci.c | ||||
| +++ b/arch/powerpc/platforms/4xx/pci.c | ||||
| @@ -1060,15 +1060,24 @@ static int __init apm821xx_pciex_init_po | ||||
|  	u32 val; | ||||
|   | ||||
|  	/* | ||||
| -	 * Do a software reset on PCIe ports. | ||||
| -	 * This code is to fix the issue that pci drivers doesn't re-assign | ||||
| -	 * bus number for PCIE devices after Uboot | ||||
| -	 * scanned and configured all the buses (eg. PCIE NIC IntelPro/1000 | ||||
| -	 * PT quad port, SAS LSI 1064E) | ||||
| +	 * Only reset the PHY when no link is currently established. | ||||
| +	 * This is for the Atheros PCIe board which has problems to establish | ||||
| +	 * the link (again) after this PHY reset. All other currently tested | ||||
| +	 * PCIe boards don't show this problem. | ||||
|  	 */ | ||||
| - | ||||
| -	mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x0); | ||||
| -	mdelay(10); | ||||
| +	val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP); | ||||
| +	if (!(val & 0x00001000)) { | ||||
| +		/* | ||||
| +		 * Do a software reset on PCIe ports. | ||||
| +		 * This code is to fix the issue that pci drivers doesn't re-assign | ||||
| +		 * bus number for PCIE devices after Uboot | ||||
| +		 * scanned and configured all the buses (eg. PCIE NIC IntelPro/1000 | ||||
| +		 * PT quad port, SAS LSI 1064E) | ||||
| +		 */ | ||||
| + | ||||
| +		mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x0); | ||||
| +		mdelay(10); | ||||
| +	} | ||||
|   | ||||
|  	if (port->endpoint) | ||||
|  		val = PTYPE_LEGACY_ENDPOINT << 20; | ||||
| @@ -1085,9 +1094,12 @@ static int __init apm821xx_pciex_init_po | ||||
|  	mtdcri(SDR0, PESDR0_460EX_L0DRV, 0x00000130); | ||||
|  	mtdcri(SDR0, PESDR0_460EX_L0CLK, 0x00000006); | ||||
|   | ||||
| -	mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x10000000); | ||||
| -	mdelay(50); | ||||
| -	mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x30000000); | ||||
| +	val = mfdcri(SDR0, port->sdr_base + PESDRn_LOOP); | ||||
| +	if (!(val & 0x00001000)) { | ||||
| +		mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x10000000); | ||||
| +		mdelay(50); | ||||
| +		mtdcri(SDR0, PESDR0_460EX_PHY_CTL_RST, 0x30000000); | ||||
| +	} | ||||
|   | ||||
|  	mtdcri(SDR0, port->sdr_base + PESDRn_RCSSET, | ||||
|  		mfdcri(SDR0, port->sdr_base + PESDRn_RCSSET) | | ||||
| @@ -0,0 +1,14 @@ | ||||
| --- a/arch/powerpc/platforms/4xx/pci.c | ||||
| +++ b/arch/powerpc/platforms/4xx/pci.c | ||||
| @@ -1902,9 +1902,9 @@ static void __init ppc4xx_configure_pcie | ||||
|  		 * if it works | ||||
|  		 */ | ||||
|  		out_le32(mbase + PECFG_PIM0LAL, 0x00000000); | ||||
| -		out_le32(mbase + PECFG_PIM0LAH, 0x00000000); | ||||
| +		out_le32(mbase + PECFG_PIM0LAH, 0x00000008); | ||||
|  		out_le32(mbase + PECFG_PIM1LAL, 0x00000000); | ||||
| -		out_le32(mbase + PECFG_PIM1LAH, 0x00000000); | ||||
| +		out_le32(mbase + PECFG_PIM1LAH, 0x0000000c); | ||||
|  		out_le32(mbase + PECFG_PIM01SAH, 0xffff0000); | ||||
|  		out_le32(mbase + PECFG_PIM01SAL, 0x00000000); | ||||
|   | ||||
| @@ -0,0 +1,53 @@ | ||||
| From a0dc613140bab907a3d5787a7ae7b0638bf674d0 Mon Sep 17 00:00:00 2001 | ||||
| From: Christian Lamparter <chunkeey@gmail.com> | ||||
| Date: Thu, 23 Jun 2016 20:28:20 +0200 | ||||
| Subject: [PATCH] usb: xhci: force MSI for uPD720201 and | ||||
|  uPD720202 | ||||
|  | ||||
| The APM82181 does not support MSI-X. When probed, it will | ||||
| produce a noisy warning. | ||||
|  | ||||
| --- | ||||
|  drivers/usb/host/pci-quirks.c | 362 ++++++++++++++++++++++++++++++++++++++++++ | ||||
|  1 file changed, 362 insertions(+) | ||||
|  | ||||
| --- a/drivers/usb/host/xhci-pci.c | ||||
| +++ b/drivers/usb/host/xhci-pci.c | ||||
| @@ -260,6 +260,7 @@ static void xhci_pci_quirks(struct devic | ||||
|  	    pdev->device == 0x0015) { | ||||
|  		xhci->quirks |= XHCI_RESET_ON_RESUME; | ||||
|  		xhci->quirks |= XHCI_ZERO_64B_REGS; | ||||
| +		xhci->quirks |= XHCI_FORCE_MSI; | ||||
|  	} | ||||
|  	if (pdev->vendor == PCI_VENDOR_ID_VIA) | ||||
|  		xhci->quirks |= XHCI_RESET_ON_RESUME; | ||||
| --- a/drivers/usb/host/xhci.c | ||||
| +++ b/drivers/usb/host/xhci.c | ||||
| @@ -423,10 +423,14 @@ static int xhci_try_enable_msi(struct us | ||||
|  		free_irq(hcd->irq, hcd); | ||||
|  	hcd->irq = 0; | ||||
|   | ||||
| -	ret = xhci_setup_msix(xhci); | ||||
| -	if (ret) | ||||
| -		/* fall back to msi*/ | ||||
| +	if (xhci->quirks & XHCI_FORCE_MSI) { | ||||
|  		ret = xhci_setup_msi(xhci); | ||||
| +	} else { | ||||
| +		ret = xhci_setup_msix(xhci); | ||||
| +		if (ret) | ||||
| +			/* fall back to msi*/ | ||||
| +			ret = xhci_setup_msi(xhci); | ||||
| +	} | ||||
|   | ||||
|  	if (!ret) { | ||||
|  		hcd->msi_enabled = 1; | ||||
| --- a/drivers/usb/host/xhci.h | ||||
| +++ b/drivers/usb/host/xhci.h | ||||
| @@ -1886,6 +1886,7 @@ struct xhci_hcd { | ||||
|  	struct xhci_hub		usb2_rhub; | ||||
|  	struct xhci_hub		usb3_rhub; | ||||
|  	/* support xHCI 1.0 spec USB2 hardware LPM */ | ||||
| +#define XHCI_FORCE_MSI		(1 << 24) | ||||
|  	unsigned		hw_lpm_support:1; | ||||
|  	/* Broken Suspend flag for SNPS Suspend resume issue */ | ||||
|  	unsigned		broken_suspend:1; | ||||
| @@ -0,0 +1,65 @@ | ||||
| From 694f9bfb8efaef8a33e8992015ff9d0866faf4a2 Mon Sep 17 00:00:00 2001 | ||||
| From: Christian Lamparter <chunkeey@gmail.com> | ||||
| Date: Sun, 17 Dec 2017 17:27:15 +0100 | ||||
| Subject: [PATCH 1/2] hwmon: tc654 add detection routine | ||||
|  | ||||
| This patch adds a detection routine for the TC654/TC655 | ||||
| chips.  Both IDs are listed in the Datasheet. | ||||
|  | ||||
| Signed-off-by: Christian Lamparter <chunkeey@gmail.com> | ||||
| --- | ||||
|  drivers/hwmon/tc654.c | 29 +++++++++++++++++++++++++++++ | ||||
|  1 file changed, 29 insertions(+) | ||||
|  | ||||
| --- a/drivers/hwmon/tc654.c | ||||
| +++ b/drivers/hwmon/tc654.c | ||||
| @@ -55,6 +55,11 @@ enum tc654_regs { | ||||
|  /* Register data is read (and cached) at most once per second. */ | ||||
|  #define TC654_UPDATE_INTERVAL		HZ | ||||
|   | ||||
| +/* Manufacturer and Version Identification Register Values */ | ||||
| +#define TC654_MFR_ID_MICROCHIP		0x84 | ||||
| +#define TC654_VER_ID			0x00 | ||||
| +#define TC655_VER_ID			0x01 | ||||
| + | ||||
|  struct tc654_data { | ||||
|  	struct i2c_client *client; | ||||
|   | ||||
| @@ -481,6 +486,29 @@ static const struct i2c_device_id tc654_ | ||||
|  	{} | ||||
|  }; | ||||
|   | ||||
| +static int | ||||
| +tc654_detect(struct i2c_client *new_client, struct i2c_board_info *info) | ||||
| +{ | ||||
| +	struct i2c_adapter *adapter = new_client->adapter; | ||||
| +	int manufacturer, product; | ||||
| + | ||||
| +	if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) | ||||
| +		return -ENODEV; | ||||
| + | ||||
| +	manufacturer = i2c_smbus_read_byte_data(new_client, TC654_REG_MFR_ID); | ||||
| +	if (manufacturer != TC654_MFR_ID_MICROCHIP) | ||||
| +		return -ENODEV; | ||||
| + | ||||
| +	product = i2c_smbus_read_byte_data(new_client, TC654_REG_VER_ID); | ||||
| +	if (!((product == TC654_VER_ID) || (product == TC655_VER_ID))) | ||||
| +		return -ENODEV; | ||||
| + | ||||
| +	strlcpy(info->type, product == TC654_VER_ID ? "tc654" : "tc655", | ||||
| +		I2C_NAME_SIZE); | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| + | ||||
|  MODULE_DEVICE_TABLE(i2c, tc654_id); | ||||
|   | ||||
|  static struct i2c_driver tc654_driver = { | ||||
| @@ -489,6 +517,7 @@ static struct i2c_driver tc654_driver = | ||||
|  		   }, | ||||
|  	.probe_new = tc654_probe, | ||||
|  	.id_table = tc654_id, | ||||
| +	.detect = tc654_detect, | ||||
|  }; | ||||
|   | ||||
|  module_i2c_driver(tc654_driver); | ||||
| @@ -0,0 +1,174 @@ | ||||
| From 9cb27801b5cbad2e1aaf45aac428cb2fac5e1372 Mon Sep 17 00:00:00 2001 | ||||
| From: Christian Lamparter <chunkeey@gmail.com> | ||||
| Date: Sun, 17 Dec 2017 17:29:13 +0100 | ||||
| Subject: [PATCH] hwmon: tc654: add thermal_cooling device | ||||
|  | ||||
| This patch adds a thermaL_cooling device to the tc654 driver. | ||||
| This allows the chip to be used for DT-based cooling. | ||||
|  | ||||
| Signed-off-by: Christian Lamparter <chunkeey@gmail.com> | ||||
| --- | ||||
|  drivers/hwmon/tc654.c | 103 +++++++++++++++++++++++++++++++++++------- | ||||
|  1 file changed, 86 insertions(+), 17 deletions(-) | ||||
|  | ||||
| --- a/drivers/hwmon/tc654.c | ||||
| +++ b/drivers/hwmon/tc654.c | ||||
| @@ -15,6 +15,7 @@ | ||||
|  #include <linux/module.h> | ||||
|  #include <linux/mutex.h> | ||||
|  #include <linux/slab.h> | ||||
| +#include <linux/thermal.h> | ||||
|  #include <linux/util_macros.h> | ||||
|   | ||||
|  enum tc654_regs { | ||||
| @@ -132,6 +133,9 @@ struct tc654_data { | ||||
|  			 * writable register used to control the duty | ||||
|  			 * cycle of the V OUT output. | ||||
|  			 */ | ||||
| + | ||||
| +	/* optional cooling device */ | ||||
| +	struct thermal_cooling_device *cdev; | ||||
|  }; | ||||
|   | ||||
|  /* helper to grab and cache data, at most one time per second */ | ||||
| @@ -367,36 +371,30 @@ static ssize_t pwm_mode_store(struct dev | ||||
|  static const int tc654_pwm_map[16] = { 77,  88, 102, 112, 124, 136, 148, 160, | ||||
|  				      172, 184, 196, 207, 219, 231, 243, 255}; | ||||
|   | ||||
| +static int get_pwm(struct tc654_data *data) | ||||
| +{ | ||||
| +	if (data->config & TC654_REG_CONFIG_SDM) | ||||
| +		return 0; | ||||
| +	else | ||||
| +		return tc654_pwm_map[data->duty_cycle]; | ||||
| +} | ||||
| + | ||||
|  static ssize_t pwm_show(struct device *dev, struct device_attribute *da, | ||||
|  			char *buf) | ||||
|  { | ||||
|  	struct tc654_data *data = tc654_update_client(dev); | ||||
| -	int pwm; | ||||
|   | ||||
|  	if (IS_ERR(data)) | ||||
|  		return PTR_ERR(data); | ||||
|   | ||||
| -	if (data->config & TC654_REG_CONFIG_SDM) | ||||
| -		pwm = 0; | ||||
| -	else | ||||
| -		pwm = tc654_pwm_map[data->duty_cycle]; | ||||
| - | ||||
| -	return sprintf(buf, "%d\n", pwm); | ||||
| +	return sprintf(buf, "%d\n", get_pwm(data)); | ||||
|  } | ||||
|   | ||||
| -static ssize_t pwm_store(struct device *dev, struct device_attribute *da, | ||||
| -			 const char *buf, size_t count) | ||||
| +static int _set_pwm(struct tc654_data *data, unsigned long val) | ||||
|  { | ||||
| -	struct tc654_data *data = dev_get_drvdata(dev); | ||||
|  	struct i2c_client *client = data->client; | ||||
| -	unsigned long val; | ||||
|  	int ret; | ||||
|   | ||||
| -	if (kstrtoul(buf, 10, &val)) | ||||
| -		return -EINVAL; | ||||
| -	if (val > 255) | ||||
| -		return -EINVAL; | ||||
| - | ||||
|  	mutex_lock(&data->update_lock); | ||||
|   | ||||
|  	if (val == 0) | ||||
| @@ -416,6 +414,22 @@ static ssize_t pwm_store(struct device * | ||||
|   | ||||
|  out: | ||||
|  	mutex_unlock(&data->update_lock); | ||||
| +	return ret; | ||||
| +} | ||||
| + | ||||
| +static ssize_t pwm_store(struct device *dev, struct device_attribute *da, | ||||
| +		       const char *buf, size_t count) | ||||
| +{ | ||||
| +	struct tc654_data *data = dev_get_drvdata(dev); | ||||
| +	unsigned long val; | ||||
| +	int ret; | ||||
| + | ||||
| +	if (kstrtoul(buf, 10, &val)) | ||||
| +		return -EINVAL; | ||||
| +	if (val > 255) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	ret = _set_pwm(data, val); | ||||
|  	return ret < 0 ? ret : count; | ||||
|  } | ||||
|   | ||||
| @@ -447,6 +461,47 @@ static struct attribute *tc654_attrs[] = | ||||
|   | ||||
|  ATTRIBUTE_GROUPS(tc654); | ||||
|   | ||||
| +/* cooling device */ | ||||
| + | ||||
| +static int tc654_get_max_state(struct thermal_cooling_device *cdev, | ||||
| +			       unsigned long *state) | ||||
| +{ | ||||
| +	*state = 255; | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static int tc654_get_cur_state(struct thermal_cooling_device *cdev, | ||||
| +                              unsigned long *state) | ||||
| +{ | ||||
| +	struct tc654_data *data = tc654_update_client(cdev->devdata); | ||||
| + | ||||
| +	if (IS_ERR(data)) | ||||
| +		return PTR_ERR(data); | ||||
| + | ||||
| +	*state = get_pwm(data); | ||||
| +	return 0; | ||||
| +} | ||||
| + | ||||
| +static int tc654_set_cur_state(struct thermal_cooling_device *cdev, | ||||
| +			       unsigned long state) | ||||
| +{ | ||||
| +	struct tc654_data *data = tc654_update_client(cdev->devdata); | ||||
| + | ||||
| +	if (IS_ERR(data)) | ||||
| +		return PTR_ERR(data); | ||||
| + | ||||
| +	if (state > 255) | ||||
| +		return -EINVAL; | ||||
| + | ||||
| +	return _set_pwm(data, state); | ||||
| +} | ||||
| + | ||||
| +static const struct thermal_cooling_device_ops tc654_fan_cool_ops = { | ||||
| +	.get_max_state = tc654_get_max_state, | ||||
| +	.get_cur_state = tc654_get_cur_state, | ||||
| +	.set_cur_state = tc654_set_cur_state, | ||||
| +}; | ||||
| + | ||||
|  /* | ||||
|   * device probe and removal | ||||
|   */ | ||||
| @@ -477,7 +532,21 @@ static int tc654_probe(struct i2c_client | ||||
|  	hwmon_dev = | ||||
|  	    devm_hwmon_device_register_with_groups(dev, client->name, data, | ||||
|  						   tc654_groups); | ||||
| -	return PTR_ERR_OR_ZERO(hwmon_dev); | ||||
| +	if (IS_ERR(hwmon_dev)) | ||||
| +		return PTR_ERR(hwmon_dev); | ||||
| + | ||||
| +#if IS_ENABLED(CONFIG_OF) | ||||
| +	/* Optional cooling device register for Device tree platforms */ | ||||
| +	data->cdev = thermal_of_cooling_device_register(client->dev.of_node, | ||||
| +							"tc654", hwmon_dev, | ||||
| +							&tc654_fan_cool_ops); | ||||
| +#else /* CONFIG_OF */ | ||||
| +	/* Optional cooling device register for non Device tree platforms */ | ||||
| +	data->cdev = thermal_cooling_device_register("tc654", hwmon_dev, | ||||
| +						     &tc654_fan_cool_ops); | ||||
| +#endif /* CONFIG_OF */ | ||||
| + | ||||
| +	return PTR_ERR_OR_ZERO(data->cdev); | ||||
|  } | ||||
|   | ||||
|  static const struct i2c_device_id tc654_id[] = { | ||||
| @@ -0,0 +1,29 @@ | ||||
| From c9395ad54e2cabb87d408becc37566f3d8248933 Mon Sep 17 00:00:00 2001 | ||||
| From: Christian Lamparter <chunkeey@gmail.com> | ||||
| Date: Sun, 1 Dec 2019 02:08:23 +0100 | ||||
| Subject: [PATCH] powerpc: bootwrapper: force gzip as mkimage's compression | ||||
|  method | ||||
|  | ||||
| Due to CONFIG_KERNEL_XZ symbol, the bootwrapper code tries to | ||||
| instruct the mkimage to use the xz compression, which isn't | ||||
| supported. This patch forces the gzip compression, which is | ||||
| supported and doesn't matter because the generated uImage for | ||||
| the apm821xx target gets ignored as the OpenWrt toolchain will | ||||
| do separate U-Boot kernel images for each device individually. | ||||
|  | ||||
| Signed-off-by: Christian Lamparter <chunkeey@gmail.com> | ||||
| --- | ||||
|  arch/powerpc/boot/Makefile | 2 +- | ||||
|  1 file changed, 1 insertion(+), 1 deletion(-) | ||||
|  | ||||
| --- a/arch/powerpc/boot/Makefile | ||||
| +++ b/arch/powerpc/boot/Makefile | ||||
| @@ -250,7 +250,7 @@ compressor-$(CONFIG_KERNEL_LZO) := lzo | ||||
|   | ||||
|  # args (to if_changed): 1 = (this rule), 2 = platform, 3 = dts 4=dtb 5=initrd | ||||
|  quiet_cmd_wrap	= WRAP    $@ | ||||
| -      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -Z $(compressor-y) -c -o $@ -p $2 \ | ||||
| +      cmd_wrap	=$(CONFIG_SHELL) $(wrapper) -Z gzip -c -o $@ -p $2 \ | ||||
|  		$(CROSSWRAP) $(if $3, -s $3)$(if $4, -d $4)$(if $5, -i $5) \ | ||||
|  		vmlinux | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Christian Lamparter
					Christian Lamparter