layerscape: refresh patches

Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
Stijn Tintel 2017-10-08 16:34:37 +03:00
parent 239dff6697
commit d2fdece2e1
29 changed files with 2414 additions and 3610 deletions

View file

@ -43,8 +43,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
create mode 100644 drivers/staging/fsl-dpaa2/Kconfig create mode 100644 drivers/staging/fsl-dpaa2/Kconfig
create mode 100644 drivers/staging/fsl-dpaa2/Makefile create mode 100644 drivers/staging/fsl-dpaa2/Makefile
diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig
index e1c0e2e0..4211a7fd 100644
--- a/drivers/base/Kconfig --- a/drivers/base/Kconfig
+++ b/drivers/base/Kconfig +++ b/drivers/base/Kconfig
@@ -237,6 +237,7 @@ config GENERIC_CPU_AUTOPROBE @@ -237,6 +237,7 @@ config GENERIC_CPU_AUTOPROBE
@ -55,11 +53,9 @@ index e1c0e2e0..4211a7fd 100644
source "drivers/base/regmap/Kconfig" source "drivers/base/regmap/Kconfig"
diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
index ad7250fa..6d788fd7 100644
--- a/drivers/crypto/Makefile --- a/drivers/crypto/Makefile
+++ b/drivers/crypto/Makefile +++ b/drivers/crypto/Makefile
@@ -3,7 +3,7 @@ obj-$(CONFIG_CRYPTO_DEV_ATMEL_SHA) += atmel-sha.o @@ -3,7 +3,7 @@ obj-$(CONFIG_CRYPTO_DEV_ATMEL_SHA) += at
obj-$(CONFIG_CRYPTO_DEV_ATMEL_TDES) += atmel-tdes.o obj-$(CONFIG_CRYPTO_DEV_ATMEL_TDES) += atmel-tdes.o
obj-$(CONFIG_CRYPTO_DEV_BFIN_CRC) += bfin_crc.o obj-$(CONFIG_CRYPTO_DEV_BFIN_CRC) += bfin_crc.o
obj-$(CONFIG_CRYPTO_DEV_CCP) += ccp/ obj-$(CONFIG_CRYPTO_DEV_CCP) += ccp/
@ -68,8 +64,6 @@ index ad7250fa..6d788fd7 100644
obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-aes.o obj-$(CONFIG_CRYPTO_DEV_GEODE) += geode-aes.o
obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o obj-$(CONFIG_CRYPTO_DEV_HIFN_795X) += hifn_795x.o
obj-$(CONFIG_CRYPTO_DEV_IMGTEC_HASH) += img-hash.o obj-$(CONFIG_CRYPTO_DEV_IMGTEC_HASH) += img-hash.o
diff --git a/drivers/net/ethernet/freescale/Kconfig b/drivers/net/ethernet/freescale/Kconfig
index d1ca45fb..74a2864e 100644
--- a/drivers/net/ethernet/freescale/Kconfig --- a/drivers/net/ethernet/freescale/Kconfig
+++ b/drivers/net/ethernet/freescale/Kconfig +++ b/drivers/net/ethernet/freescale/Kconfig
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
@ -88,8 +82,6 @@ index d1ca45fb..74a2864e 100644
+source "drivers/net/ethernet/freescale/sdk_fman/Kconfig" +source "drivers/net/ethernet/freescale/sdk_fman/Kconfig"
+source "drivers/net/ethernet/freescale/sdk_dpaa/Kconfig" +source "drivers/net/ethernet/freescale/sdk_dpaa/Kconfig"
endif # NET_VENDOR_FREESCALE endif # NET_VENDOR_FREESCALE
diff --git a/drivers/net/ethernet/freescale/Makefile b/drivers/net/ethernet/freescale/Makefile
index cbe21dc7..a5d4405f 100644
--- a/drivers/net/ethernet/freescale/Makefile --- a/drivers/net/ethernet/freescale/Makefile
+++ b/drivers/net/ethernet/freescale/Makefile +++ b/drivers/net/ethernet/freescale/Makefile
@@ -21,4 +21,6 @@ gianfar_driver-objs := gianfar.o \ @@ -21,4 +21,6 @@ gianfar_driver-objs := gianfar.o \
@ -99,8 +91,6 @@ index cbe21dc7..a5d4405f 100644
+obj-$(if $(CONFIG_FSL_SDK_FMAN),y) += sdk_fman/ +obj-$(if $(CONFIG_FSL_SDK_FMAN),y) += sdk_fman/
+obj-$(if $(CONFIG_FSL_SDK_DPAA_ETH),y) += sdk_dpaa/ +obj-$(if $(CONFIG_FSL_SDK_DPAA_ETH),y) += sdk_dpaa/
obj-$(CONFIG_FSL_FMAN) += fman/ obj-$(CONFIG_FSL_FMAN) += fman/
diff --git a/drivers/ptp/Kconfig b/drivers/ptp/Kconfig
index ee3de342..4c45beda 100644
--- a/drivers/ptp/Kconfig --- a/drivers/ptp/Kconfig
+++ b/drivers/ptp/Kconfig +++ b/drivers/ptp/Kconfig
@@ -39,6 +39,35 @@ config PTP_1588_CLOCK_GIANFAR @@ -39,6 +39,35 @@ config PTP_1588_CLOCK_GIANFAR
@ -139,8 +129,6 @@ index ee3de342..4c45beda 100644
config PTP_1588_CLOCK_IXP46X config PTP_1588_CLOCK_IXP46X
tristate "Intel IXP46x as PTP clock" tristate "Intel IXP46x as PTP clock"
depends on IXP4XX_ETH depends on IXP4XX_ETH
diff --git a/drivers/rtc/Kconfig b/drivers/rtc/Kconfig
index 0723c97e..df610dcd 100644
--- a/drivers/rtc/Kconfig --- a/drivers/rtc/Kconfig
+++ b/drivers/rtc/Kconfig +++ b/drivers/rtc/Kconfig
@@ -414,6 +414,14 @@ config RTC_DRV_PCF85063 @@ -414,6 +414,14 @@ config RTC_DRV_PCF85063
@ -158,11 +146,9 @@ index 0723c97e..df610dcd 100644
config RTC_DRV_PCF8563 config RTC_DRV_PCF8563
tristate "Philips PCF8563/Epson RTC8564" tristate "Philips PCF8563/Epson RTC8564"
help help
diff --git a/drivers/rtc/Makefile b/drivers/rtc/Makefile
index 1ac694a3..7675b8a7 100644
--- a/drivers/rtc/Makefile --- a/drivers/rtc/Makefile
+++ b/drivers/rtc/Makefile +++ b/drivers/rtc/Makefile
@@ -111,6 +111,7 @@ obj-$(CONFIG_RTC_DRV_PCF2127) += rtc-pcf2127.o @@ -111,6 +111,7 @@ obj-$(CONFIG_RTC_DRV_PCF2127) += rtc-pcf
obj-$(CONFIG_RTC_DRV_PCF50633) += rtc-pcf50633.o obj-$(CONFIG_RTC_DRV_PCF50633) += rtc-pcf50633.o
obj-$(CONFIG_RTC_DRV_PCF85063) += rtc-pcf85063.o obj-$(CONFIG_RTC_DRV_PCF85063) += rtc-pcf85063.o
obj-$(CONFIG_RTC_DRV_PCF8523) += rtc-pcf8523.o obj-$(CONFIG_RTC_DRV_PCF8523) += rtc-pcf8523.o
@ -170,8 +156,6 @@ index 1ac694a3..7675b8a7 100644
obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o obj-$(CONFIG_RTC_DRV_PCF8563) += rtc-pcf8563.o
obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o obj-$(CONFIG_RTC_DRV_PCF8583) += rtc-pcf8583.o
obj-$(CONFIG_RTC_DRV_PIC32) += rtc-pic32.o obj-$(CONFIG_RTC_DRV_PIC32) += rtc-pic32.o
diff --git a/drivers/soc/Kconfig b/drivers/soc/Kconfig
index e6e90e80..f31bceb6 100644
--- a/drivers/soc/Kconfig --- a/drivers/soc/Kconfig
+++ b/drivers/soc/Kconfig +++ b/drivers/soc/Kconfig
@@ -1,8 +1,7 @@ @@ -1,8 +1,7 @@
@ -184,9 +168,6 @@ index e6e90e80..f31bceb6 100644
source "drivers/soc/mediatek/Kconfig" source "drivers/soc/mediatek/Kconfig"
source "drivers/soc/qcom/Kconfig" source "drivers/soc/qcom/Kconfig"
source "drivers/soc/rockchip/Kconfig" source "drivers/soc/rockchip/Kconfig"
diff --git a/drivers/soc/fsl/Kconfig b/drivers/soc/fsl/Kconfig
new file mode 100644
index 00000000..d4cd25f1
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/Kconfig +++ b/drivers/soc/fsl/Kconfig
@@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
@ -212,9 +193,6 @@ index 00000000..d4cd25f1
+if ARM || ARM64 +if ARM || ARM64
+source "drivers/soc/fsl/Kconfig.arm" +source "drivers/soc/fsl/Kconfig.arm"
+endif +endif
diff --git a/drivers/soc/fsl/Kconfig.arm b/drivers/soc/fsl/Kconfig.arm
new file mode 100644
index 00000000..106c9b98
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/Kconfig.arm +++ b/drivers/soc/fsl/Kconfig.arm
@@ -0,0 +1,16 @@ @@ -0,0 +1,16 @@
@ -234,8 +212,6 @@ index 00000000..106c9b98
+if LS_SOC_DRIVERS +if LS_SOC_DRIVERS
+ source "drivers/soc/fsl/layerscape/Kconfig" + source "drivers/soc/fsl/layerscape/Kconfig"
+endif +endif
diff --git a/drivers/soc/fsl/Makefile b/drivers/soc/fsl/Makefile
index 75e1f533..b8708569 100644
--- a/drivers/soc/fsl/Makefile --- a/drivers/soc/fsl/Makefile
+++ b/drivers/soc/fsl/Makefile +++ b/drivers/soc/fsl/Makefile
@@ -5,3 +5,7 @@ @@ -5,3 +5,7 @@
@ -246,9 +222,6 @@ index 75e1f533..b8708569 100644
+obj-$(CONFIG_FSL_LS2_CONSOLE) += ls2-console/ +obj-$(CONFIG_FSL_LS2_CONSOLE) += ls2-console/
+obj-$(CONFIG_SUSPEND) += rcpm.o +obj-$(CONFIG_SUSPEND) += rcpm.o
+obj-$(CONFIG_LS_SOC_DRIVERS) += layerscape/ +obj-$(CONFIG_LS_SOC_DRIVERS) += layerscape/
diff --git a/drivers/soc/fsl/layerscape/Kconfig b/drivers/soc/fsl/layerscape/Kconfig
new file mode 100644
index 00000000..e1373aa1
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/layerscape/Kconfig +++ b/drivers/soc/fsl/layerscape/Kconfig
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
@ -262,16 +235,10 @@ index 00000000..e1373aa1
+ Say y here to enable FTM alarm support. The FTM alarm provides + Say y here to enable FTM alarm support. The FTM alarm provides
+ alarm functions for wakeup system from deep sleep. There is only + alarm functions for wakeup system from deep sleep. There is only
+ one FTM can be used in ALARM(FTM 0). + one FTM can be used in ALARM(FTM 0).
diff --git a/drivers/soc/fsl/layerscape/Makefile b/drivers/soc/fsl/layerscape/Makefile
new file mode 100644
index 00000000..6299aa1d
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/layerscape/Makefile +++ b/drivers/soc/fsl/layerscape/Makefile
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+obj-$(CONFIG_FTM_ALARM) += ftm_alarm.o +obj-$(CONFIG_FTM_ALARM) += ftm_alarm.o
diff --git a/drivers/soc/fsl/rcpm.c b/drivers/soc/fsl/rcpm.c
new file mode 100644
index 00000000..a6a31c87
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/rcpm.c +++ b/drivers/soc/fsl/rcpm.c
@@ -0,0 +1,154 @@ @@ -0,0 +1,154 @@
@ -429,8 +396,6 @@ index 00000000..a6a31c87
+} +}
+ +
+subsys_initcall(layerscape_rcpm_init); +subsys_initcall(layerscape_rcpm_init);
diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
index 58a7b350..f8e54860 100644
--- a/drivers/staging/Kconfig --- a/drivers/staging/Kconfig
+++ b/drivers/staging/Kconfig +++ b/drivers/staging/Kconfig
@@ -94,6 +94,8 @@ source "drivers/staging/fbtft/Kconfig" @@ -94,6 +94,8 @@ source "drivers/staging/fbtft/Kconfig"
@ -449,8 +414,6 @@ index 58a7b350..f8e54860 100644
+source "drivers/staging/fsl_qbman/Kconfig" +source "drivers/staging/fsl_qbman/Kconfig"
+ +
endif # STAGING endif # STAGING
diff --git a/drivers/staging/Makefile b/drivers/staging/Makefile
index 2fa9745d..cbd7b089 100644
--- a/drivers/staging/Makefile --- a/drivers/staging/Makefile
+++ b/drivers/staging/Makefile +++ b/drivers/staging/Makefile
@@ -36,9 +36,11 @@ obj-$(CONFIG_UNISYSSPAR) += unisys/ @@ -36,9 +36,11 @@ obj-$(CONFIG_UNISYSSPAR) += unisys/
@ -465,9 +428,6 @@ index 2fa9745d..cbd7b089 100644
obj-$(CONFIG_GREYBUS) += greybus/ obj-$(CONFIG_GREYBUS) += greybus/
obj-$(CONFIG_BCM2708_VCHIQ) += vc04_services/ obj-$(CONFIG_BCM2708_VCHIQ) += vc04_services/
+obj-$(CONFIG_FSL_SDK_DPA) += fsl_qbman/ +obj-$(CONFIG_FSL_SDK_DPA) += fsl_qbman/
diff --git a/drivers/staging/fsl-dpaa2/Kconfig b/drivers/staging/fsl-dpaa2/Kconfig
new file mode 100644
index 00000000..8042d9cc
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/Kconfig +++ b/drivers/staging/fsl-dpaa2/Kconfig
@@ -0,0 +1,41 @@ @@ -0,0 +1,41 @@
@ -512,9 +472,6 @@ index 00000000..8042d9cc
+source "drivers/staging/fsl-dpaa2/mac/Kconfig" +source "drivers/staging/fsl-dpaa2/mac/Kconfig"
+source "drivers/staging/fsl-dpaa2/evb/Kconfig" +source "drivers/staging/fsl-dpaa2/evb/Kconfig"
+source "drivers/staging/fsl-dpaa2/ethsw/Kconfig" +source "drivers/staging/fsl-dpaa2/ethsw/Kconfig"
diff --git a/drivers/staging/fsl-dpaa2/Makefile b/drivers/staging/fsl-dpaa2/Makefile
new file mode 100644
index 00000000..cbaa8c20
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/Makefile +++ b/drivers/staging/fsl-dpaa2/Makefile
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
@ -527,6 +484,3 @@ index 00000000..cbaa8c20
+obj-$(CONFIG_FSL_DPAA2_EVB) += evb/ +obj-$(CONFIG_FSL_DPAA2_EVB) += evb/
+obj-$(CONFIG_FSL_DPAA2_ETHSW) += ethsw/ +obj-$(CONFIG_FSL_DPAA2_ETHSW) += ethsw/
+obj-$(CONFIG_PTP_1588_CLOCK_DPAA2) += rtc/ +obj-$(CONFIG_PTP_1588_CLOCK_DPAA2) += rtc/
--
2.14.1

View file

@ -37,8 +37,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
arch/arm64/mm/dma-mapping.c | 6 ++++ arch/arm64/mm/dma-mapping.c | 6 ++++
15 files changed, 197 insertions(+), 3 deletions(-) 15 files changed, 197 insertions(+), 3 deletions(-)
diff --git a/arch/arm/include/asm/delay.h b/arch/arm/include/asm/delay.h
index b1ce037e..1445b0ca 100644
--- a/arch/arm/include/asm/delay.h --- a/arch/arm/include/asm/delay.h
+++ b/arch/arm/include/asm/delay.h +++ b/arch/arm/include/asm/delay.h
@@ -57,6 +57,22 @@ extern void __bad_udelay(void); @@ -57,6 +57,22 @@ extern void __bad_udelay(void);
@ -64,11 +62,9 @@ index b1ce037e..1445b0ca 100644
/* Loop-based definitions for assembly code. */ /* Loop-based definitions for assembly code. */
extern void __loop_delay(unsigned long loops); extern void __loop_delay(unsigned long loops);
extern void __loop_udelay(unsigned long usecs); extern void __loop_udelay(unsigned long usecs);
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h
index 021692c6..172a4f2e 100644
--- a/arch/arm/include/asm/io.h --- a/arch/arm/include/asm/io.h
+++ b/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h
@@ -129,6 +129,7 @@ static inline u32 __raw_readl(const volatile void __iomem *addr) @@ -129,6 +129,7 @@ static inline u32 __raw_readl(const vola
#define MT_DEVICE_NONSHARED 1 #define MT_DEVICE_NONSHARED 1
#define MT_DEVICE_CACHED 2 #define MT_DEVICE_CACHED 2
#define MT_DEVICE_WC 3 #define MT_DEVICE_WC 3
@ -76,7 +72,7 @@ index 021692c6..172a4f2e 100644
/* /*
* types 4 onwards can be found in asm/mach/map.h and are undefined * types 4 onwards can be found in asm/mach/map.h and are undefined
* for ioremap * for ioremap
@@ -220,6 +221,34 @@ extern int pci_ioremap_io(unsigned int offset, phys_addr_t phys_addr); @@ -220,6 +221,34 @@ extern int pci_ioremap_io(unsigned int o
#endif #endif
#endif #endif
@ -111,7 +107,7 @@ index 021692c6..172a4f2e 100644
/* /*
* IO port access primitives * IO port access primitives
* ------------------------- * -------------------------
@@ -408,6 +437,8 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size); @@ -408,6 +437,8 @@ void __iomem *ioremap_wc(resource_size_t
#define ioremap_wc ioremap_wc #define ioremap_wc ioremap_wc
#define ioremap_wt ioremap_wc #define ioremap_wt ioremap_wc
@ -120,8 +116,6 @@ index 021692c6..172a4f2e 100644
void iounmap(volatile void __iomem *iomem_cookie); void iounmap(volatile void __iomem *iomem_cookie);
#define iounmap iounmap #define iounmap iounmap
diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
index 9b7c328f..27f3df7d 100644
--- a/arch/arm/include/asm/mach/map.h --- a/arch/arm/include/asm/mach/map.h
+++ b/arch/arm/include/asm/mach/map.h +++ b/arch/arm/include/asm/mach/map.h
@@ -21,9 +21,9 @@ struct map_desc { @@ -21,9 +21,9 @@ struct map_desc {
@ -136,8 +130,6 @@ index 9b7c328f..27f3df7d 100644
MT_CACHECLEAN, MT_CACHECLEAN,
MT_MINICLEAN, MT_MINICLEAN,
MT_LOW_VECTORS, MT_LOW_VECTORS,
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index a8d656d9..4ab57b37 100644
--- a/arch/arm/include/asm/pgtable.h --- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h
@@ -118,6 +118,13 @@ extern pgprot_t pgprot_s2_device; @@ -118,6 +118,13 @@ extern pgprot_t pgprot_s2_device;
@ -154,8 +146,6 @@ index a8d656d9..4ab57b37 100644
#define pgprot_writecombine(prot) \ #define pgprot_writecombine(prot) \
__pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE) __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE)
diff --git a/arch/arm/kernel/bios32.c b/arch/arm/kernel/bios32.c
index 2f0e0773..d2f4869a 100644
--- a/arch/arm/kernel/bios32.c --- a/arch/arm/kernel/bios32.c
+++ b/arch/arm/kernel/bios32.c +++ b/arch/arm/kernel/bios32.c
@@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
@ -167,11 +157,10 @@ index 2f0e0773..d2f4869a 100644
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <asm/mach/map.h> #include <asm/mach/map.h>
@@ -63,6 +65,47 @@ void pcibios_report_status(u_int status_mask, int warn) @@ -64,6 +66,47 @@ void pcibios_report_status(u_int status_
pcibios_bus_report_status(bus, status_mask, warn);
} }
+/* /*
+ * Check device tree if the service interrupts are there + * Check device tree if the service interrupts are there
+ */ + */
+int pcibios_check_service_irqs(struct pci_dev *dev, int *irqs, int mask) +int pcibios_check_service_irqs(struct pci_dev *dev, int *irqs, int mask)
@ -212,14 +201,13 @@ index 2f0e0773..d2f4869a 100644
+ return count; + return count;
+} +}
+ +
/* +/*
* We don't use this to fix the device, but initialisation of it. * We don't use this to fix the device, but initialisation of it.
* It's not the correct use for this, but it works. * It's not the correct use for this, but it works.
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c * Note that the arbiter/ISA bridge appears to be buggy, specifically in
index ab771000..9b5f4465 100644
--- a/arch/arm/mm/dma-mapping.c --- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c +++ b/arch/arm/mm/dma-mapping.c
@@ -2392,6 +2392,7 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, @@ -2392,6 +2392,7 @@ void arch_setup_dma_ops(struct device *d
set_dma_ops(dev, dma_ops); set_dma_ops(dev, dma_ops);
} }
@ -227,11 +215,9 @@ index ab771000..9b5f4465 100644
void arch_teardown_dma_ops(struct device *dev) void arch_teardown_dma_ops(struct device *dev)
{ {
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
index ff0eed23..2f2f4269 100644
--- a/arch/arm/mm/ioremap.c --- a/arch/arm/mm/ioremap.c
+++ b/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c
@@ -398,6 +398,13 @@ void __iomem *ioremap_wc(resource_size_t res_cookie, size_t size) @@ -398,6 +398,13 @@ void __iomem *ioremap_wc(resource_size_t
} }
EXPORT_SYMBOL(ioremap_wc); EXPORT_SYMBOL(ioremap_wc);
@ -245,11 +231,9 @@ index ff0eed23..2f2f4269 100644
/* /*
* Remap an arbitrary physical address space into the kernel virtual * Remap an arbitrary physical address space into the kernel virtual
* address space as memory. Needed when the kernel wants to execute * address space as memory. Needed when the kernel wants to execute
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index f7c74135..4a2fb704 100644
--- a/arch/arm/mm/mmu.c --- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c
@@ -313,6 +313,13 @@ static struct mem_type mem_types[] __ro_after_init = { @@ -313,6 +313,13 @@ static struct mem_type mem_types[] __ro_
.prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE, .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
.domain = DOMAIN_KERNEL, .domain = DOMAIN_KERNEL,
}, },
@ -263,7 +247,7 @@ index f7c74135..4a2fb704 100644
[MT_ROM] = { [MT_ROM] = {
.prot_sect = PMD_TYPE_SECT, .prot_sect = PMD_TYPE_SECT,
.domain = DOMAIN_KERNEL, .domain = DOMAIN_KERNEL,
@@ -644,6 +651,7 @@ static void __init build_mem_type_table(void) @@ -644,6 +651,7 @@ static void __init build_mem_type_table(
} }
kern_pgprot |= PTE_EXT_AF; kern_pgprot |= PTE_EXT_AF;
vecs_pgprot |= PTE_EXT_AF; vecs_pgprot |= PTE_EXT_AF;
@ -271,7 +255,7 @@ index f7c74135..4a2fb704 100644
/* /*
* Set PXN for user mappings * Set PXN for user mappings
@@ -672,6 +680,7 @@ static void __init build_mem_type_table(void) @@ -672,6 +680,7 @@ static void __init build_mem_type_table(
mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot; mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot;
mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd; mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd;
mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot; mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot;
@ -279,8 +263,6 @@ index f7c74135..4a2fb704 100644
mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot; mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot;
mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= ecc_mask; mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= ecc_mask;
mem_types[MT_ROM].prot_sect |= cp->pmd; mem_types[MT_ROM].prot_sect |= cp->pmd;
diff --git a/arch/arm64/include/asm/cache.h b/arch/arm64/include/asm/cache.h
index 5082b30b..bde44993 100644
--- a/arch/arm64/include/asm/cache.h --- a/arch/arm64/include/asm/cache.h
+++ b/arch/arm64/include/asm/cache.h +++ b/arch/arm64/include/asm/cache.h
@@ -18,7 +18,7 @@ @@ -18,7 +18,7 @@
@ -292,11 +274,9 @@ index 5082b30b..bde44993 100644
#define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT) #define L1_CACHE_BYTES (1 << L1_CACHE_SHIFT)
/* /*
diff --git a/arch/arm64/include/asm/io.h b/arch/arm64/include/asm/io.h
index 0bba427b..36c1fbf3 100644
--- a/arch/arm64/include/asm/io.h --- a/arch/arm64/include/asm/io.h
+++ b/arch/arm64/include/asm/io.h +++ b/arch/arm64/include/asm/io.h
@@ -171,6 +171,8 @@ extern void __iomem *ioremap_cache(phys_addr_t phys_addr, size_t size); @@ -171,6 +171,8 @@ extern void __iomem *ioremap_cache(phys_
#define ioremap_nocache(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE)) #define ioremap_nocache(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
#define ioremap_wc(addr, size) __ioremap((addr), (size), __pgprot(PROT_NORMAL_NC)) #define ioremap_wc(addr, size) __ioremap((addr), (size), __pgprot(PROT_NORMAL_NC))
#define ioremap_wt(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE)) #define ioremap_wt(addr, size) __ioremap((addr), (size), __pgprot(PROT_DEVICE_nGnRE))
@ -305,11 +285,9 @@ index 0bba427b..36c1fbf3 100644
#define iounmap __iounmap #define iounmap __iounmap
/* /*
diff --git a/arch/arm64/include/asm/pci.h b/arch/arm64/include/asm/pci.h
index b9a7ba9c..8a189159 100644
--- a/arch/arm64/include/asm/pci.h --- a/arch/arm64/include/asm/pci.h
+++ b/arch/arm64/include/asm/pci.h +++ b/arch/arm64/include/asm/pci.h
@@ -31,6 +31,10 @@ static inline int pci_get_legacy_ide_irq(struct pci_dev *dev, int channel) @@ -31,6 +31,10 @@ static inline int pci_get_legacy_ide_irq
return -ENODEV; return -ENODEV;
} }
@ -320,8 +298,6 @@ index b9a7ba9c..8a189159 100644
static inline int pci_proc_domain(struct pci_bus *bus) static inline int pci_proc_domain(struct pci_bus *bus)
{ {
return 1; return 1;
diff --git a/arch/arm64/include/asm/pgtable-prot.h b/arch/arm64/include/asm/pgtable-prot.h
index 2142c772..cdf8b25d 100644
--- a/arch/arm64/include/asm/pgtable-prot.h --- a/arch/arm64/include/asm/pgtable-prot.h
+++ b/arch/arm64/include/asm/pgtable-prot.h +++ b/arch/arm64/include/asm/pgtable-prot.h
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
@ -332,11 +308,9 @@ index 2142c772..cdf8b25d 100644
#define PROT_SECT_DEVICE_nGnRE (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_DEVICE_nGnRE)) #define PROT_SECT_DEVICE_nGnRE (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_DEVICE_nGnRE))
#define PROT_SECT_NORMAL (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL)) #define PROT_SECT_NORMAL (PROT_SECT_DEFAULT | PMD_SECT_PXN | PMD_SECT_UXN | PMD_ATTRINDX(MT_NORMAL))
diff --git a/arch/arm64/include/asm/pgtable.h b/arch/arm64/include/asm/pgtable.h
index 61e21401..b8c876fb 100644
--- a/arch/arm64/include/asm/pgtable.h --- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h +++ b/arch/arm64/include/asm/pgtable.h
@@ -356,6 +356,11 @@ static inline int pmd_protnone(pmd_t pmd) @@ -356,6 +356,11 @@ static inline int pmd_protnone(pmd_t pmd
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN) __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN)
#define pgprot_writecombine(prot) \ #define pgprot_writecombine(prot) \
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN) __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
@ -348,8 +322,6 @@ index 61e21401..b8c876fb 100644
#define pgprot_device(prot) \ #define pgprot_device(prot) \
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRE) | PTE_PXN | PTE_UXN) __pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRE) | PTE_PXN | PTE_UXN)
#define __HAVE_PHYS_MEM_ACCESS_PROT #define __HAVE_PHYS_MEM_ACCESS_PROT
diff --git a/arch/arm64/kernel/pci.c b/arch/arm64/kernel/pci.c
index 409abc45..0568ec3a 100644
--- a/arch/arm64/kernel/pci.c --- a/arch/arm64/kernel/pci.c
+++ b/arch/arm64/kernel/pci.c +++ b/arch/arm64/kernel/pci.c
@@ -17,6 +17,8 @@ @@ -17,6 +17,8 @@
@ -361,10 +333,11 @@ index 409abc45..0568ec3a 100644
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/pci-acpi.h> #include <linux/pci-acpi.h>
#include <linux/pci-ecam.h> #include <linux/pci-ecam.h>
@@ -54,6 +56,66 @@ int pcibios_alloc_irq(struct pci_dev *dev) @@ -53,6 +55,66 @@ int pcibios_alloc_irq(struct pci_dev *de
return 0; return 0;
} }
+
+/* +/*
+ * Check device tree if the service interrupts are there + * Check device tree if the service interrupts are there
+ */ + */
@ -424,12 +397,9 @@ index 409abc45..0568ec3a 100644
+ +
+ return 0; + return 0;
+} +}
+
/* /*
* raw_pci_read/write - Platform-specific PCI config space access. * raw_pci_read/write - Platform-specific PCI config space access.
*/
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index b5bf46ce..1ef0d6df 100644
--- a/arch/arm64/mm/dma-mapping.c --- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c
@@ -30,6 +30,7 @@ @@ -30,6 +30,7 @@
@ -440,22 +410,19 @@ index b5bf46ce..1ef0d6df 100644
static int swiotlb __ro_after_init; static int swiotlb __ro_after_init;
@@ -917,6 +918,10 @@ static int __init __iommu_dma_init(void) @@ -918,6 +919,10 @@ static int __init __iommu_dma_init(void)
#ifdef CONFIG_PCI
if (!ret) if (!ret)
ret = register_iommu_dma_ops_notifier(&pci_bus_type); ret = register_iommu_dma_ops_notifier(&pci_bus_type);
+#endif #endif
+#ifdef CONFIG_FSL_MC_BUS +#ifdef CONFIG_FSL_MC_BUS
+ if (!ret) + if (!ret)
+ ret = register_iommu_dma_ops_notifier(&fsl_mc_bus_type); + ret = register_iommu_dma_ops_notifier(&fsl_mc_bus_type);
#endif +#endif
return ret; return ret;
} }
@@ -971,3 +976,4 @@ void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size, arch_initcall(__iommu_dma_init);
@@ -971,3 +976,4 @@ void arch_setup_dma_ops(struct device *d
dev->archdata.dma_coherent = coherent; dev->archdata.dma_coherent = coherent;
__iommu_setup_dma_ops(dev, dma_base, size, iommu); __iommu_setup_dma_ops(dev, dma_base, size, iommu);
} }
+EXPORT_SYMBOL(arch_setup_dma_ops); +EXPORT_SYMBOL(arch_setup_dma_ops);
--
2.14.1

View file

@ -23,11 +23,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
include/linux/mtd/spi-nor.h | 14 +- include/linux/mtd/spi-nor.h | 14 +-
4 files changed, 432 insertions(+), 76 deletions(-) 4 files changed, 432 insertions(+), 76 deletions(-)
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index 2a47a3f0..4f21401d 100644
--- a/drivers/mtd/mtdchar.c --- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c +++ b/drivers/mtd/mtdchar.c
@@ -451,7 +451,7 @@ static int mtdchar_readoob(struct file *file, struct mtd_info *mtd, @@ -451,7 +451,7 @@ static int mtdchar_readoob(struct file *
* data. For our userspace tools it is important to dump areas * data. For our userspace tools it is important to dump areas
* with ECC errors! * with ECC errors!
* For kernel internal usage it also might return -EUCLEAN * For kernel internal usage it also might return -EUCLEAN
@ -36,8 +34,6 @@ index 2a47a3f0..4f21401d 100644
* been corrected by the ECC algorithm. * been corrected by the ECC algorithm.
* *
* Note: currently the standard NAND function, nand_read_oob_std, * Note: currently the standard NAND function, nand_read_oob_std,
diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
index 5c82e4ef..8fb75532 100644
--- a/drivers/mtd/spi-nor/fsl-quadspi.c --- a/drivers/mtd/spi-nor/fsl-quadspi.c
+++ b/drivers/mtd/spi-nor/fsl-quadspi.c +++ b/drivers/mtd/spi-nor/fsl-quadspi.c
@@ -41,6 +41,8 @@ @@ -41,6 +41,8 @@
@ -90,7 +86,7 @@ index 5c82e4ef..8fb75532 100644
.devtype = FSL_QUADSPI_VYBRID, .devtype = FSL_QUADSPI_VYBRID,
.rxfifo = 128, .rxfifo = 128,
.txfifo = 64, .txfifo = 64,
@@ -232,7 +241,7 @@ static struct fsl_qspi_devtype_data vybrid_data = { @@ -232,7 +241,7 @@ static struct fsl_qspi_devtype_data vybr
.driver_data = QUADSPI_QUIRK_SWAP_ENDIAN, .driver_data = QUADSPI_QUIRK_SWAP_ENDIAN,
}; };
@ -99,7 +95,7 @@ index 5c82e4ef..8fb75532 100644
.devtype = FSL_QUADSPI_IMX6SX, .devtype = FSL_QUADSPI_IMX6SX,
.rxfifo = 128, .rxfifo = 128,
.txfifo = 512, .txfifo = 512,
@@ -241,7 +250,7 @@ static struct fsl_qspi_devtype_data imx6sx_data = { @@ -241,7 +250,7 @@ static struct fsl_qspi_devtype_data imx6
| QUADSPI_QUIRK_TKT245618, | QUADSPI_QUIRK_TKT245618,
}; };
@ -108,7 +104,7 @@ index 5c82e4ef..8fb75532 100644
.devtype = FSL_QUADSPI_IMX7D, .devtype = FSL_QUADSPI_IMX7D,
.rxfifo = 512, .rxfifo = 512,
.txfifo = 512, .txfifo = 512,
@@ -250,7 +259,7 @@ static struct fsl_qspi_devtype_data imx7d_data = { @@ -250,7 +259,7 @@ static struct fsl_qspi_devtype_data imx7
| QUADSPI_QUIRK_4X_INT_CLK, | QUADSPI_QUIRK_4X_INT_CLK,
}; };
@ -117,7 +113,7 @@ index 5c82e4ef..8fb75532 100644
.devtype = FSL_QUADSPI_IMX6UL, .devtype = FSL_QUADSPI_IMX6UL,
.rxfifo = 128, .rxfifo = 128,
.txfifo = 512, .txfifo = 512,
@@ -267,6 +276,14 @@ static struct fsl_qspi_devtype_data ls1021a_data = { @@ -267,6 +276,14 @@ static struct fsl_qspi_devtype_data ls10
.driver_data = 0, .driver_data = 0,
}; };
@ -140,7 +136,7 @@ index 5c82e4ef..8fb75532 100644
unsigned int chip_base_addr; /* We may support two chips. */ unsigned int chip_base_addr; /* We may support two chips. */
bool has_second_chip; bool has_second_chip;
bool big_endian; bool big_endian;
@@ -309,6 +327,23 @@ static inline int needs_wakeup_wait_mode(struct fsl_qspi *q) @@ -309,6 +327,23 @@ static inline int needs_wakeup_wait_mode
return q->devtype_data->driver_data & QUADSPI_QUIRK_TKT245618; return q->devtype_data->driver_data & QUADSPI_QUIRK_TKT245618;
} }
@ -164,7 +160,7 @@ index 5c82e4ef..8fb75532 100644
/* /*
* R/W functions for big- or little-endian registers: * R/W functions for big- or little-endian registers:
* The qSPI controller's endian is independent of the CPU core's endian. * The qSPI controller's endian is independent of the CPU core's endian.
@@ -331,6 +366,31 @@ static u32 qspi_readl(struct fsl_qspi *q, void __iomem *addr) @@ -331,6 +366,31 @@ static u32 qspi_readl(struct fsl_qspi *q
return ioread32(addr); return ioread32(addr);
} }
@ -196,7 +192,7 @@ index 5c82e4ef..8fb75532 100644
/* /*
* An IC bug makes us to re-arrange the 32-bit data. * An IC bug makes us to re-arrange the 32-bit data.
* The following chips, such as IMX6SLX, have fixed this bug. * The following chips, such as IMX6SLX, have fixed this bug.
@@ -373,8 +433,15 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) @@ -373,8 +433,15 @@ static void fsl_qspi_init_lut(struct fsl
void __iomem *base = q->iobase; void __iomem *base = q->iobase;
int rxfifo = q->devtype_data->rxfifo; int rxfifo = q->devtype_data->rxfifo;
u32 lut_base; u32 lut_base;
@ -213,7 +209,7 @@ index 5c82e4ef..8fb75532 100644
fsl_qspi_unlock_lut(q); fsl_qspi_unlock_lut(q);
@@ -382,25 +449,51 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) @@ -382,25 +449,51 @@ static void fsl_qspi_init_lut(struct fsl
for (i = 0; i < QUADSPI_LUT_NUM; i++) for (i = 0; i < QUADSPI_LUT_NUM; i++)
qspi_writel(q, 0, base + QUADSPI_LUT_BASE + i * 4); qspi_writel(q, 0, base + QUADSPI_LUT_BASE + i * 4);
@ -230,11 +226,10 @@ index 5c82e4ef..8fb75532 100644
- addrlen = ADDR32BIT; - addrlen = ADDR32BIT;
- dummy = 8; - dummy = 8;
- } - }
-
- qspi_writel(q, LUT0(CMD, PAD1, cmd) | LUT1(ADDR, PAD1, addrlen),
+ /* Read */ + /* Read */
+ lut_base = SEQID_READ * 4; + lut_base = SEQID_READ * 4;
+
- qspi_writel(q, LUT0(CMD, PAD1, cmd) | LUT1(ADDR, PAD1, addrlen),
+ if (nor->flash_read == SPI_NOR_FAST) { + if (nor->flash_read == SPI_NOR_FAST) {
+ qspi_writel(q, LUT0(CMD, PAD1, read_op) | + qspi_writel(q, LUT0(CMD, PAD1, read_op) |
+ LUT1(ADDR, PAD1, addrlen), + LUT1(ADDR, PAD1, addrlen),
@ -281,7 +276,7 @@ index 5c82e4ef..8fb75532 100644
/* Write enable */ /* Write enable */
lut_base = SEQID_WREN * 4; lut_base = SEQID_WREN * 4;
qspi_writel(q, LUT0(CMD, PAD1, SPINOR_OP_WREN), qspi_writel(q, LUT0(CMD, PAD1, SPINOR_OP_WREN),
@@ -409,16 +502,8 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) @@ -409,16 +502,8 @@ static void fsl_qspi_init_lut(struct fsl
/* Page Program */ /* Page Program */
lut_base = SEQID_PP * 4; lut_base = SEQID_PP * 4;
@ -300,7 +295,7 @@ index 5c82e4ef..8fb75532 100644
base + QUADSPI_LUT(lut_base)); base + QUADSPI_LUT(lut_base));
qspi_writel(q, LUT0(FSL_WRITE, PAD1, 0), qspi_writel(q, LUT0(FSL_WRITE, PAD1, 0),
base + QUADSPI_LUT(lut_base + 1)); base + QUADSPI_LUT(lut_base + 1));
@@ -432,10 +517,8 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) @@ -432,10 +517,8 @@ static void fsl_qspi_init_lut(struct fsl
/* Erase a sector */ /* Erase a sector */
lut_base = SEQID_SE * 4; lut_base = SEQID_SE * 4;
@ -313,7 +308,7 @@ index 5c82e4ef..8fb75532 100644
base + QUADSPI_LUT(lut_base)); base + QUADSPI_LUT(lut_base));
/* Erase the whole chip */ /* Erase the whole chip */
@@ -476,6 +559,44 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) @@ -476,6 +559,44 @@ static void fsl_qspi_init_lut(struct fsl
qspi_writel(q, LUT0(CMD, PAD1, SPINOR_OP_BRWR), qspi_writel(q, LUT0(CMD, PAD1, SPINOR_OP_BRWR),
base + QUADSPI_LUT(lut_base)); base + QUADSPI_LUT(lut_base));
@ -358,7 +353,7 @@ index 5c82e4ef..8fb75532 100644
fsl_qspi_lock_lut(q); fsl_qspi_lock_lut(q);
} }
@@ -483,8 +604,24 @@ static void fsl_qspi_init_lut(struct fsl_qspi *q) @@ -483,8 +604,24 @@ static void fsl_qspi_init_lut(struct fsl
static int fsl_qspi_get_seqid(struct fsl_qspi *q, u8 cmd) static int fsl_qspi_get_seqid(struct fsl_qspi *q, u8 cmd)
{ {
switch (cmd) { switch (cmd) {
@ -384,7 +379,7 @@ index 5c82e4ef..8fb75532 100644
case SPINOR_OP_WREN: case SPINOR_OP_WREN:
return SEQID_WREN; return SEQID_WREN;
case SPINOR_OP_WRDI: case SPINOR_OP_WRDI:
@@ -496,6 +633,7 @@ static int fsl_qspi_get_seqid(struct fsl_qspi *q, u8 cmd) @@ -496,6 +633,7 @@ static int fsl_qspi_get_seqid(struct fsl
case SPINOR_OP_CHIP_ERASE: case SPINOR_OP_CHIP_ERASE:
return SEQID_CHIP_ERASE; return SEQID_CHIP_ERASE;
case SPINOR_OP_PP: case SPINOR_OP_PP:
@ -392,7 +387,7 @@ index 5c82e4ef..8fb75532 100644
return SEQID_PP; return SEQID_PP;
case SPINOR_OP_RDID: case SPINOR_OP_RDID:
return SEQID_RDID; return SEQID_RDID;
@@ -507,6 +645,8 @@ static int fsl_qspi_get_seqid(struct fsl_qspi *q, u8 cmd) @@ -507,6 +645,8 @@ static int fsl_qspi_get_seqid(struct fsl
return SEQID_EN4B; return SEQID_EN4B;
case SPINOR_OP_BRWR: case SPINOR_OP_BRWR:
return SEQID_BRWR; return SEQID_BRWR;
@ -401,7 +396,7 @@ index 5c82e4ef..8fb75532 100644
default: default:
if (cmd == q->nor[0].erase_opcode) if (cmd == q->nor[0].erase_opcode)
return SEQID_SE; return SEQID_SE;
@@ -531,8 +671,11 @@ fsl_qspi_runcmd(struct fsl_qspi *q, u8 cmd, unsigned int addr, int len) @@ -531,8 +671,11 @@ fsl_qspi_runcmd(struct fsl_qspi *q, u8 c
/* save the reg */ /* save the reg */
reg = qspi_readl(q, base + QUADSPI_MCR); reg = qspi_readl(q, base + QUADSPI_MCR);
@ -415,7 +410,7 @@ index 5c82e4ef..8fb75532 100644
qspi_writel(q, QUADSPI_RBCT_WMRK_MASK | QUADSPI_RBCT_RXBRD_USEIPS, qspi_writel(q, QUADSPI_RBCT_WMRK_MASK | QUADSPI_RBCT_RXBRD_USEIPS,
base + QUADSPI_RBCT); base + QUADSPI_RBCT);
qspi_writel(q, reg | QUADSPI_MCR_CLR_RXF_MASK, base + QUADSPI_MCR); qspi_writel(q, reg | QUADSPI_MCR_CLR_RXF_MASK, base + QUADSPI_MCR);
@@ -582,10 +725,10 @@ static void fsl_qspi_read_data(struct fsl_qspi *q, int len, u8 *rxbuf) @@ -582,10 +725,10 @@ static void fsl_qspi_read_data(struct fs
q->chip_base_addr, tmp); q->chip_base_addr, tmp);
if (len >= 4) { if (len >= 4) {
@ -428,7 +423,7 @@ index 5c82e4ef..8fb75532 100644
break; break;
} }
@@ -619,11 +762,12 @@ static inline void fsl_qspi_invalid(struct fsl_qspi *q) @@ -619,11 +762,12 @@ static inline void fsl_qspi_invalid(stru
} }
static ssize_t fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, static ssize_t fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor,
@ -442,7 +437,7 @@ index 5c82e4ef..8fb75532 100644
dev_dbg(q->dev, "to 0x%.8x:0x%.8x, len : %d\n", dev_dbg(q->dev, "to 0x%.8x:0x%.8x, len : %d\n",
q->chip_base_addr, to, count); q->chip_base_addr, to, count);
@@ -633,10 +777,13 @@ static ssize_t fsl_qspi_nor_write(struct fsl_qspi *q, struct spi_nor *nor, @@ -633,10 +777,13 @@ static ssize_t fsl_qspi_nor_write(struct
qspi_writel(q, tmp | QUADSPI_MCR_CLR_TXF_MASK, q->iobase + QUADSPI_MCR); qspi_writel(q, tmp | QUADSPI_MCR_CLR_TXF_MASK, q->iobase + QUADSPI_MCR);
/* fill the TX data to the FIFO */ /* fill the TX data to the FIFO */
@ -458,7 +453,7 @@ index 5c82e4ef..8fb75532 100644
} }
/* fill the TXFIFO upto 16 bytes for i.MX7d */ /* fill the TXFIFO upto 16 bytes for i.MX7d */
@@ -657,11 +804,43 @@ static void fsl_qspi_set_map_addr(struct fsl_qspi *q) @@ -657,11 +804,43 @@ static void fsl_qspi_set_map_addr(struct
{ {
int nor_size = q->nor_size; int nor_size = q->nor_size;
void __iomem *base = q->iobase; void __iomem *base = q->iobase;
@ -506,7 +501,7 @@ index 5c82e4ef..8fb75532 100644
} }
/* /*
@@ -681,19 +860,36 @@ static void fsl_qspi_init_abh_read(struct fsl_qspi *q) @@ -681,19 +860,36 @@ static void fsl_qspi_init_abh_read(struc
{ {
void __iomem *base = q->iobase; void __iomem *base = q->iobase;
int seqid; int seqid;
@ -549,7 +544,7 @@ index 5c82e4ef..8fb75532 100644
/* We only use the buffer3 */ /* We only use the buffer3 */
qspi_writel(q, 0, base + QUADSPI_BUF0IND); qspi_writel(q, 0, base + QUADSPI_BUF0IND);
@@ -704,6 +900,11 @@ static void fsl_qspi_init_abh_read(struct fsl_qspi *q) @@ -704,6 +900,11 @@ static void fsl_qspi_init_abh_read(struc
seqid = fsl_qspi_get_seqid(q, q->nor[0].read_opcode); seqid = fsl_qspi_get_seqid(q, q->nor[0].read_opcode);
qspi_writel(q, seqid << QUADSPI_BFGENCR_SEQID_SHIFT, qspi_writel(q, seqid << QUADSPI_BFGENCR_SEQID_SHIFT,
q->iobase + QUADSPI_BFGENCR); q->iobase + QUADSPI_BFGENCR);
@ -561,7 +556,7 @@ index 5c82e4ef..8fb75532 100644
} }
/* This function was used to prepare and enable QSPI clock */ /* This function was used to prepare and enable QSPI clock */
@@ -822,6 +1023,7 @@ static const struct of_device_id fsl_qspi_dt_ids[] = { @@ -822,6 +1023,7 @@ static const struct of_device_id fsl_qsp
{ .compatible = "fsl,imx7d-qspi", .data = (void *)&imx7d_data, }, { .compatible = "fsl,imx7d-qspi", .data = (void *)&imx7d_data, },
{ .compatible = "fsl,imx6ul-qspi", .data = (void *)&imx6ul_data, }, { .compatible = "fsl,imx6ul-qspi", .data = (void *)&imx6ul_data, },
{ .compatible = "fsl,ls1021a-qspi", .data = (void *)&ls1021a_data, }, { .compatible = "fsl,ls1021a-qspi", .data = (void *)&ls1021a_data, },
@ -569,7 +564,7 @@ index 5c82e4ef..8fb75532 100644
{ /* sentinel */ } { /* sentinel */ }
}; };
MODULE_DEVICE_TABLE(of, fsl_qspi_dt_ids); MODULE_DEVICE_TABLE(of, fsl_qspi_dt_ids);
@@ -835,8 +1037,12 @@ static int fsl_qspi_read_reg(struct spi_nor *nor, u8 opcode, u8 *buf, int len) @@ -835,8 +1037,12 @@ static int fsl_qspi_read_reg(struct spi_
{ {
int ret; int ret;
struct fsl_qspi *q = nor->priv; struct fsl_qspi *q = nor->priv;
@ -583,7 +578,7 @@ index 5c82e4ef..8fb75532 100644
if (ret) if (ret)
return ret; return ret;
@@ -848,9 +1054,13 @@ static int fsl_qspi_write_reg(struct spi_nor *nor, u8 opcode, u8 *buf, int len) @@ -848,9 +1054,13 @@ static int fsl_qspi_write_reg(struct spi
{ {
struct fsl_qspi *q = nor->priv; struct fsl_qspi *q = nor->priv;
int ret; int ret;
@ -598,7 +593,7 @@ index 5c82e4ef..8fb75532 100644
if (ret) if (ret)
return ret; return ret;
@@ -859,7 +1069,7 @@ static int fsl_qspi_write_reg(struct spi_nor *nor, u8 opcode, u8 *buf, int len) @@ -859,7 +1069,7 @@ static int fsl_qspi_write_reg(struct spi
} else if (len > 0) { } else if (len > 0) {
ret = fsl_qspi_nor_write(q, nor, opcode, 0, ret = fsl_qspi_nor_write(q, nor, opcode, 0,
@ -607,7 +602,7 @@ index 5c82e4ef..8fb75532 100644
if (ret > 0) if (ret > 0)
return 0; return 0;
} else { } else {
@@ -875,7 +1085,7 @@ static ssize_t fsl_qspi_write(struct spi_nor *nor, loff_t to, @@ -875,7 +1085,7 @@ static ssize_t fsl_qspi_write(struct spi
{ {
struct fsl_qspi *q = nor->priv; struct fsl_qspi *q = nor->priv;
ssize_t ret = fsl_qspi_nor_write(q, nor, nor->program_opcode, to, ssize_t ret = fsl_qspi_nor_write(q, nor, nor->program_opcode, to,
@ -616,7 +611,7 @@ index 5c82e4ef..8fb75532 100644
/* invalid the data in the AHB buffer. */ /* invalid the data in the AHB buffer. */
fsl_qspi_invalid(q); fsl_qspi_invalid(q);
@@ -922,7 +1132,7 @@ static ssize_t fsl_qspi_read(struct spi_nor *nor, loff_t from, @@ -922,7 +1132,7 @@ static ssize_t fsl_qspi_read(struct spi_
len); len);
/* Read out the data directly from the AHB buffer.*/ /* Read out the data directly from the AHB buffer.*/
@ -625,7 +620,7 @@ index 5c82e4ef..8fb75532 100644
len); len);
return len; return len;
@@ -980,6 +1190,8 @@ static int fsl_qspi_probe(struct platform_device *pdev) @@ -980,6 +1190,8 @@ static int fsl_qspi_probe(struct platfor
struct spi_nor *nor; struct spi_nor *nor;
struct mtd_info *mtd; struct mtd_info *mtd;
int ret, i = 0; int ret, i = 0;
@ -634,7 +629,7 @@ index 5c82e4ef..8fb75532 100644
q = devm_kzalloc(dev, sizeof(*q), GFP_KERNEL); q = devm_kzalloc(dev, sizeof(*q), GFP_KERNEL);
if (!q) if (!q)
@@ -1027,6 +1239,12 @@ static int fsl_qspi_probe(struct platform_device *pdev) @@ -1027,6 +1239,12 @@ static int fsl_qspi_probe(struct platfor
goto clk_failed; goto clk_failed;
} }
@ -647,7 +642,7 @@ index 5c82e4ef..8fb75532 100644
/* find the irq */ /* find the irq */
ret = platform_get_irq(pdev, 0); ret = platform_get_irq(pdev, 0);
if (ret < 0) { if (ret < 0) {
@@ -1050,6 +1268,7 @@ static int fsl_qspi_probe(struct platform_device *pdev) @@ -1050,6 +1268,7 @@ static int fsl_qspi_probe(struct platfor
mutex_init(&q->lock); mutex_init(&q->lock);
@ -655,7 +650,7 @@ index 5c82e4ef..8fb75532 100644
/* iterate the subnodes. */ /* iterate the subnodes. */
for_each_available_child_of_node(dev->of_node, np) { for_each_available_child_of_node(dev->of_node, np) {
/* skip the holes */ /* skip the holes */
@@ -1076,18 +1295,25 @@ static int fsl_qspi_probe(struct platform_device *pdev) @@ -1076,18 +1295,25 @@ static int fsl_qspi_probe(struct platfor
ret = of_property_read_u32(np, "spi-max-frequency", ret = of_property_read_u32(np, "spi-max-frequency",
&q->clk_rate); &q->clk_rate);
if (ret < 0) if (ret < 0)
@ -685,7 +680,7 @@ index 5c82e4ef..8fb75532 100644
/* Set the correct NOR size now. */ /* Set the correct NOR size now. */
if (q->nor_size == 0) { if (q->nor_size == 0) {
@@ -1110,8 +1336,12 @@ static int fsl_qspi_probe(struct platform_device *pdev) @@ -1110,8 +1336,12 @@ static int fsl_qspi_probe(struct platfor
nor->page_size = q->devtype_data->txfifo; nor->page_size = q->devtype_data->txfifo;
i++; i++;
@ -698,8 +693,6 @@ index 5c82e4ef..8fb75532 100644
/* finish the rest init. */ /* finish the rest init. */
ret = fsl_qspi_nor_setup_last(q); ret = fsl_qspi_nor_setup_last(q);
if (ret) if (ret)
diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
index 793d321d..190e0e45 100644
--- a/drivers/mtd/spi-nor/spi-nor.c --- a/drivers/mtd/spi-nor/spi-nor.c
+++ b/drivers/mtd/spi-nor/spi-nor.c +++ b/drivers/mtd/spi-nor/spi-nor.c
@@ -40,6 +40,13 @@ @@ -40,6 +40,13 @@
@ -747,7 +740,7 @@ index 793d321d..190e0e45 100644
*/ */
static int read_cr(struct spi_nor *nor) static int read_cr(struct spi_nor *nor)
{ {
@@ -160,6 +170,8 @@ static inline int spi_nor_read_dummy_cycles(struct spi_nor *nor) @@ -160,6 +170,8 @@ static inline int spi_nor_read_dummy_cyc
case SPI_NOR_DUAL: case SPI_NOR_DUAL:
case SPI_NOR_QUAD: case SPI_NOR_QUAD:
return 8; return 8;
@ -756,7 +749,7 @@ index 793d321d..190e0e45 100644
case SPI_NOR_NORMAL: case SPI_NOR_NORMAL:
return 0; return 0;
} }
@@ -961,6 +973,8 @@ static const struct flash_info spi_nor_ids[] = { @@ -961,6 +973,8 @@ static const struct flash_info spi_nor_i
/* ESMT */ /* ESMT */
{ "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_HAS_LOCK) }, { "f25l32pa", INFO(0x8c2016, 0, 64 * 1024, 64, SECT_4K | SPI_NOR_HAS_LOCK) },
@ -765,7 +758,7 @@ index 793d321d..190e0e45 100644
/* Everspin */ /* Everspin */
{ "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) }, { "mr25h256", CAT25_INFO( 32 * 1024, 1, 256, 2, SPI_NOR_NO_ERASE | SPI_NOR_NO_FR) },
@@ -1014,12 +1028,15 @@ static const struct flash_info spi_nor_ids[] = { @@ -1014,12 +1028,15 @@ static const struct flash_info spi_nor_i
{ "mx25l3205d", INFO(0xc22016, 0, 64 * 1024, 64, SECT_4K) }, { "mx25l3205d", INFO(0xc22016, 0, 64 * 1024, 64, SECT_4K) },
{ "mx25l3255e", INFO(0xc29e16, 0, 64 * 1024, 64, SECT_4K) }, { "mx25l3255e", INFO(0xc29e16, 0, 64 * 1024, 64, SECT_4K) },
{ "mx25l6405d", INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K) }, { "mx25l6405d", INFO(0xc22017, 0, 64 * 1024, 128, SECT_4K) },
@ -782,7 +775,7 @@ index 793d321d..190e0e45 100644
{ "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) }, { "mx25l25655e", INFO(0xc22619, 0, 64 * 1024, 512, 0) },
{ "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_QUAD_READ) }, { "mx66l51235l", INFO(0xc2201a, 0, 64 * 1024, 1024, SPI_NOR_QUAD_READ) },
{ "mx66l1g55g", INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) }, { "mx66l1g55g", INFO(0xc2261b, 0, 64 * 1024, 2048, SPI_NOR_QUAD_READ) },
@@ -1033,10 +1050,11 @@ static const struct flash_info spi_nor_ids[] = { @@ -1033,10 +1050,11 @@ static const struct flash_info spi_nor_i
{ "n25q128a11", INFO(0x20bb18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) }, { "n25q128a11", INFO(0x20bb18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) },
{ "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) }, { "n25q128a13", INFO(0x20ba18, 0, 64 * 1024, 256, SECT_4K | SPI_NOR_QUAD_READ) },
{ "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_QUAD_READ) }, { "n25q256a", INFO(0x20ba19, 0, 64 * 1024, 512, SECT_4K | SPI_NOR_QUAD_READ) },
@ -796,7 +789,7 @@ index 793d321d..190e0e45 100644
/* PMC */ /* PMC */
{ "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) }, { "pm25lv512", INFO(0, 0, 32 * 1024, 2, SECT_4K_PMC) },
@@ -1054,8 +1072,11 @@ static const struct flash_info spi_nor_ids[] = { @@ -1054,8 +1072,11 @@ static const struct flash_info spi_nor_i
{ "s70fl01gs", INFO(0x010221, 0x4d00, 256 * 1024, 256, 0) }, { "s70fl01gs", INFO(0x010221, 0x4d00, 256 * 1024, 256, 0) },
{ "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64, 0) }, { "s25sl12800", INFO(0x012018, 0x0300, 256 * 1024, 64, 0) },
{ "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) }, { "s25sl12801", INFO(0x012018, 0x0301, 64 * 1024, 256, 0) },
@ -809,7 +802,7 @@ index 793d321d..190e0e45 100644
{ "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) }, { "s25fl129p1", INFO(0x012018, 0x4d01, 64 * 1024, 256, SPI_NOR_DUAL_READ | SPI_NOR_QUAD_READ) },
{ "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) }, { "s25sl004a", INFO(0x010212, 0, 64 * 1024, 8, 0) },
{ "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) }, { "s25sl008a", INFO(0x010213, 0, 64 * 1024, 16, 0) },
@@ -1130,6 +1151,9 @@ static const struct flash_info spi_nor_ids[] = { @@ -1130,6 +1151,9 @@ static const struct flash_info spi_nor_i
{ "w25x80", INFO(0xef3014, 0, 64 * 1024, 16, SECT_4K) }, { "w25x80", INFO(0xef3014, 0, 64 * 1024, 16, SECT_4K) },
{ "w25x16", INFO(0xef3015, 0, 64 * 1024, 32, SECT_4K) }, { "w25x16", INFO(0xef3015, 0, 64 * 1024, 32, SECT_4K) },
{ "w25x32", INFO(0xef3016, 0, 64 * 1024, 64, SECT_4K) }, { "w25x32", INFO(0xef3016, 0, 64 * 1024, 64, SECT_4K) },
@ -819,7 +812,7 @@ index 793d321d..190e0e45 100644
{ "w25q32", INFO(0xef4016, 0, 64 * 1024, 64, SECT_4K) }, { "w25q32", INFO(0xef4016, 0, 64 * 1024, 64, SECT_4K) },
{ {
"w25q32dw", INFO(0xef6016, 0, 64 * 1024, 64, "w25q32dw", INFO(0xef6016, 0, 64 * 1024, 64,
@@ -1192,6 +1216,53 @@ static const struct flash_info *spi_nor_read_id(struct spi_nor *nor) @@ -1192,6 +1216,53 @@ static const struct flash_info *spi_nor_
id[0], id[1], id[2]); id[0], id[1], id[2]);
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);
} }
@ -873,7 +866,7 @@ index 793d321d..190e0e45 100644
static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len, static int spi_nor_read(struct mtd_info *mtd, loff_t from, size_t len,
size_t *retlen, u_char *buf) size_t *retlen, u_char *buf)
@@ -1411,7 +1482,7 @@ static int macronix_quad_enable(struct spi_nor *nor) @@ -1411,7 +1482,7 @@ static int macronix_quad_enable(struct s
* Write status Register and configuration register with 2 bytes * Write status Register and configuration register with 2 bytes
* The first byte will be written to the status register, while the * The first byte will be written to the status register, while the
* second byte will be written to the configuration register. * second byte will be written to the configuration register.
@ -882,7 +875,7 @@ index 793d321d..190e0e45 100644
*/ */
static int write_sr_cr(struct spi_nor *nor, u16 val) static int write_sr_cr(struct spi_nor *nor, u16 val)
{ {
@@ -1459,6 +1530,24 @@ static int spansion_quad_enable(struct spi_nor *nor) @@ -1459,6 +1530,24 @@ static int spansion_quad_enable(struct s
return 0; return 0;
} }
@ -907,7 +900,7 @@ index 793d321d..190e0e45 100644
static int set_quad_mode(struct spi_nor *nor, const struct flash_info *info) static int set_quad_mode(struct spi_nor *nor, const struct flash_info *info)
{ {
int status; int status;
@@ -1604,9 +1693,25 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode) @@ -1604,9 +1693,25 @@ int spi_nor_scan(struct spi_nor *nor, co
write_sr(nor, 0); write_sr(nor, 0);
spi_nor_wait_till_ready(nor); spi_nor_wait_till_ready(nor);
} }
@ -933,7 +926,7 @@ index 793d321d..190e0e45 100644
mtd->priv = nor; mtd->priv = nor;
mtd->type = MTD_NORFLASH; mtd->type = MTD_NORFLASH;
mtd->writesize = 1; mtd->writesize = 1;
@@ -1639,6 +1744,8 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode) @@ -1639,6 +1744,8 @@ int spi_nor_scan(struct spi_nor *nor, co
nor->flags |= SNOR_F_USE_FSR; nor->flags |= SNOR_F_USE_FSR;
if (info->flags & SPI_NOR_HAS_TB) if (info->flags & SPI_NOR_HAS_TB)
nor->flags |= SNOR_F_HAS_SR_TB; nor->flags |= SNOR_F_HAS_SR_TB;
@ -942,7 +935,7 @@ index 793d321d..190e0e45 100644
#ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS #ifdef CONFIG_MTD_SPI_NOR_USE_4K_SECTORS
/* prefer "small sector" erase if possible */ /* prefer "small sector" erase if possible */
@@ -1676,9 +1783,15 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode) @@ -1676,9 +1783,15 @@ int spi_nor_scan(struct spi_nor *nor, co
/* Some devices cannot do fast-read, no matter what DT tells us */ /* Some devices cannot do fast-read, no matter what DT tells us */
if (info->flags & SPI_NOR_NO_FR) if (info->flags & SPI_NOR_NO_FR)
nor->flash_read = SPI_NOR_NORMAL; nor->flash_read = SPI_NOR_NORMAL;
@ -961,7 +954,7 @@ index 793d321d..190e0e45 100644
ret = set_quad_mode(nor, info); ret = set_quad_mode(nor, info);
if (ret) { if (ret) {
dev_err(dev, "quad mode not supported\n"); dev_err(dev, "quad mode not supported\n");
@@ -1691,6 +1804,9 @@ int spi_nor_scan(struct spi_nor *nor, const char *name, enum read_mode mode) @@ -1691,6 +1804,9 @@ int spi_nor_scan(struct spi_nor *nor, co
/* Default commands */ /* Default commands */
switch (nor->flash_read) { switch (nor->flash_read) {
@ -971,8 +964,6 @@ index 793d321d..190e0e45 100644
case SPI_NOR_QUAD: case SPI_NOR_QUAD:
nor->read_opcode = SPINOR_OP_READ_1_1_4; nor->read_opcode = SPINOR_OP_READ_1_1_4;
break; break;
diff --git a/include/linux/mtd/spi-nor.h b/include/linux/mtd/spi-nor.h
index f2a71803..5003ff64 100644
--- a/include/linux/mtd/spi-nor.h --- a/include/linux/mtd/spi-nor.h
+++ b/include/linux/mtd/spi-nor.h +++ b/include/linux/mtd/spi-nor.h
@@ -31,10 +31,10 @@ @@ -31,10 +31,10 @@
@ -1037,6 +1028,3 @@ index f2a71803..5003ff64 100644
int (*prepare)(struct spi_nor *nor, enum spi_nor_ops ops); int (*prepare)(struct spi_nor *nor, enum spi_nor_ops ops);
void (*unprepare)(struct spi_nor *nor, enum spi_nor_ops ops); void (*unprepare)(struct spi_nor *nor, enum spi_nor_ops ops);
--
2.14.1

View file

@ -17,8 +17,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
include/linux/fsl_ifc.h | 7 ++ include/linux/fsl_ifc.h | 7 ++
6 files changed, 280 insertions(+), 3 deletions(-) 6 files changed, 280 insertions(+), 3 deletions(-)
diff --git a/drivers/memory/Kconfig b/drivers/memory/Kconfig
index 4b4c0c3c..820f5590 100644
--- a/drivers/memory/Kconfig --- a/drivers/memory/Kconfig
+++ b/drivers/memory/Kconfig +++ b/drivers/memory/Kconfig
@@ -115,7 +115,7 @@ config FSL_CORENET_CF @@ -115,7 +115,7 @@ config FSL_CORENET_CF
@ -30,8 +28,6 @@ index 4b4c0c3c..820f5590 100644
config JZ4780_NEMC config JZ4780_NEMC
bool "Ingenic JZ4780 SoC NEMC driver" bool "Ingenic JZ4780 SoC NEMC driver"
diff --git a/drivers/memory/fsl_ifc.c b/drivers/memory/fsl_ifc.c
index 1b182b11..10d2a5f8 100644
--- a/drivers/memory/fsl_ifc.c --- a/drivers/memory/fsl_ifc.c
+++ b/drivers/memory/fsl_ifc.c +++ b/drivers/memory/fsl_ifc.c
@@ -24,6 +24,7 @@ @@ -24,6 +24,7 @@
@ -51,7 +47,7 @@ index 1b182b11..10d2a5f8 100644
/* /*
* convert_ifc_address - convert the base address * convert_ifc_address - convert the base address
@@ -311,6 +314,261 @@ static int fsl_ifc_ctrl_probe(struct platform_device *dev) @@ -311,6 +314,261 @@ err:
return ret; return ret;
} }
@ -313,7 +309,7 @@ index 1b182b11..10d2a5f8 100644
static const struct of_device_id fsl_ifc_match[] = { static const struct of_device_id fsl_ifc_match[] = {
{ {
.compatible = "fsl,ifc", .compatible = "fsl,ifc",
@@ -318,10 +576,15 @@ static const struct of_device_id fsl_ifc_match[] = { @@ -318,10 +576,15 @@ static const struct of_device_id fsl_ifc
{}, {},
}; };
@ -329,8 +325,6 @@ index 1b182b11..10d2a5f8 100644
}, },
.probe = fsl_ifc_ctrl_probe, .probe = fsl_ifc_ctrl_probe,
.remove = fsl_ifc_ctrl_remove, .remove = fsl_ifc_ctrl_remove,
diff --git a/drivers/mtd/maps/physmap_of.c b/drivers/mtd/maps/physmap_of.c
index 11d63046..38b90301 100644
--- a/drivers/mtd/maps/physmap_of.c --- a/drivers/mtd/maps/physmap_of.c
+++ b/drivers/mtd/maps/physmap_of.c +++ b/drivers/mtd/maps/physmap_of.c
@@ -20,6 +20,7 @@ @@ -20,6 +20,7 @@
@ -341,7 +335,7 @@ index 11d63046..38b90301 100644
#include <linux/of.h> #include <linux/of.h>
#include <linux/of_address.h> #include <linux/of_address.h>
#include <linux/of_platform.h> #include <linux/of_platform.h>
@@ -209,6 +210,9 @@ static int of_flash_probe(struct platform_device *dev) @@ -209,6 +210,9 @@ static int of_flash_probe(struct platfor
return err; return err;
} }
@ -351,8 +345,6 @@ index 11d63046..38b90301 100644
err = -ENOMEM; err = -ENOMEM;
info->list[i].map.virt = ioremap(info->list[i].map.phys, info->list[i].map.virt = ioremap(info->list[i].map.phys,
info->list[i].map.size); info->list[i].map.size);
diff --git a/drivers/mtd/nand/Kconfig b/drivers/mtd/nand/Kconfig
index b254090b..961f1aa1 100644
--- a/drivers/mtd/nand/Kconfig --- a/drivers/mtd/nand/Kconfig
+++ b/drivers/mtd/nand/Kconfig +++ b/drivers/mtd/nand/Kconfig
@@ -438,7 +438,7 @@ config MTD_NAND_FSL_ELBC @@ -438,7 +438,7 @@ config MTD_NAND_FSL_ELBC
@ -364,11 +356,9 @@ index b254090b..961f1aa1 100644
select FSL_IFC select FSL_IFC
select MEMORY select MEMORY
help help
diff --git a/drivers/mtd/nand/fsl_ifc_nand.c b/drivers/mtd/nand/fsl_ifc_nand.c
index d1570f51..785e9ee0 100644
--- a/drivers/mtd/nand/fsl_ifc_nand.c --- a/drivers/mtd/nand/fsl_ifc_nand.c
+++ b/drivers/mtd/nand/fsl_ifc_nand.c +++ b/drivers/mtd/nand/fsl_ifc_nand.c
@@ -904,9 +904,12 @@ static int fsl_ifc_chip_init(struct fsl_ifc_mtd *priv) @@ -904,9 +904,12 @@ static int fsl_ifc_chip_init(struct fsl_
chip->ecc.algo = NAND_ECC_HAMMING; chip->ecc.algo = NAND_ECC_HAMMING;
} }
@ -382,8 +372,6 @@ index d1570f51..785e9ee0 100644
return 0; return 0;
} }
diff --git a/include/linux/fsl_ifc.h b/include/linux/fsl_ifc.h
index c332f0a4..a41d21b6 100644
--- a/include/linux/fsl_ifc.h --- a/include/linux/fsl_ifc.h
+++ b/include/linux/fsl_ifc.h +++ b/include/linux/fsl_ifc.h
@@ -274,6 +274,8 @@ @@ -274,6 +274,8 @@
@ -407,6 +395,3 @@ index c332f0a4..a41d21b6 100644
}; };
extern struct fsl_ifc_ctrl *fsl_ifc_ctrl_dev; extern struct fsl_ifc_ctrl *fsl_ifc_ctrl_dev;
--
2.14.1

View file

@ -30,8 +30,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
create mode 100644 drivers/pci/host/pci-layerscape-ep.c create mode 100644 drivers/pci/host/pci-layerscape-ep.c
create mode 100644 drivers/pci/host/pci-layerscape-ep.h create mode 100644 drivers/pci/host/pci-layerscape-ep.h
diff --git a/drivers/irqchip/irq-ls-scfg-msi.c b/drivers/irqchip/irq-ls-scfg-msi.c
index 02cca74c..119f4ef0 100644
--- a/drivers/irqchip/irq-ls-scfg-msi.c --- a/drivers/irqchip/irq-ls-scfg-msi.c
+++ b/drivers/irqchip/irq-ls-scfg-msi.c +++ b/drivers/irqchip/irq-ls-scfg-msi.c
@@ -17,13 +17,32 @@ @@ -17,13 +17,32 @@
@ -84,7 +82,7 @@ index 02cca74c..119f4ef0 100644
}; };
static struct irq_chip ls_scfg_msi_irq_chip = { static struct irq_chip ls_scfg_msi_irq_chip = {
@@ -49,19 +71,56 @@ static struct msi_domain_info ls_scfg_msi_domain_info = { @@ -49,19 +71,56 @@ static struct msi_domain_info ls_scfg_ms
.chip = &ls_scfg_msi_irq_chip, .chip = &ls_scfg_msi_irq_chip,
}; };
@ -143,7 +141,7 @@ index 02cca74c..119f4ef0 100644
} }
static struct irq_chip ls_scfg_msi_parent_chip = { static struct irq_chip ls_scfg_msi_parent_chip = {
@@ -81,8 +140,8 @@ static int ls_scfg_msi_domain_irq_alloc(struct irq_domain *domain, @@ -81,8 +140,8 @@ static int ls_scfg_msi_domain_irq_alloc(
WARN_ON(nr_irqs != 1); WARN_ON(nr_irqs != 1);
spin_lock(&msi_data->lock); spin_lock(&msi_data->lock);
@ -154,7 +152,7 @@ index 02cca74c..119f4ef0 100644
__set_bit(pos, msi_data->used); __set_bit(pos, msi_data->used);
else else
err = -ENOSPC; err = -ENOSPC;
@@ -106,7 +165,7 @@ static void ls_scfg_msi_domain_irq_free(struct irq_domain *domain, @@ -106,7 +165,7 @@ static void ls_scfg_msi_domain_irq_free(
int pos; int pos;
pos = d->hwirq; pos = d->hwirq;
@ -163,7 +161,7 @@ index 02cca74c..119f4ef0 100644
pr_err("failed to teardown msi. Invalid hwirq %d\n", pos); pr_err("failed to teardown msi. Invalid hwirq %d\n", pos);
return; return;
} }
@@ -123,15 +182,22 @@ static const struct irq_domain_ops ls_scfg_msi_domain_ops = { @@ -123,15 +182,22 @@ static const struct irq_domain_ops ls_sc
static void ls_scfg_msi_irq_handler(struct irq_desc *desc) static void ls_scfg_msi_irq_handler(struct irq_desc *desc)
{ {
@ -191,7 +189,7 @@ index 02cca74c..119f4ef0 100644
if (virq) if (virq)
generic_handle_irq(virq); generic_handle_irq(virq);
} }
@@ -143,7 +209,7 @@ static int ls_scfg_msi_domains_init(struct ls_scfg_msi *msi_data) @@ -143,7 +209,7 @@ static int ls_scfg_msi_domains_init(stru
{ {
/* Initialize MSI domain parent */ /* Initialize MSI domain parent */
msi_data->parent = irq_domain_add_linear(NULL, msi_data->parent = irq_domain_add_linear(NULL,
@ -200,7 +198,7 @@ index 02cca74c..119f4ef0 100644
&ls_scfg_msi_domain_ops, &ls_scfg_msi_domain_ops,
msi_data); msi_data);
if (!msi_data->parent) { if (!msi_data->parent) {
@@ -164,16 +230,117 @@ static int ls_scfg_msi_domains_init(struct ls_scfg_msi *msi_data) @@ -164,16 +230,117 @@ static int ls_scfg_msi_domains_init(stru
return 0; return 0;
} }
@ -319,7 +317,7 @@ index 02cca74c..119f4ef0 100644
res = platform_get_resource(pdev, IORESOURCE_MEM, 0); res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
msi_data->regs = devm_ioremap_resource(&pdev->dev, res); msi_data->regs = devm_ioremap_resource(&pdev->dev, res);
if (IS_ERR(msi_data->regs)) { if (IS_ERR(msi_data->regs)) {
@@ -182,23 +349,48 @@ static int ls_scfg_msi_probe(struct platform_device *pdev) @@ -182,23 +349,48 @@ static int ls_scfg_msi_probe(struct plat
} }
msi_data->msiir_addr = res->start; msi_data->msiir_addr = res->start;
@ -378,7 +376,7 @@ index 02cca74c..119f4ef0 100644
platform_set_drvdata(pdev, msi_data); platform_set_drvdata(pdev, msi_data);
return 0; return 0;
@@ -207,8 +399,10 @@ static int ls_scfg_msi_probe(struct platform_device *pdev) @@ -207,8 +399,10 @@ static int ls_scfg_msi_probe(struct plat
static int ls_scfg_msi_remove(struct platform_device *pdev) static int ls_scfg_msi_remove(struct platform_device *pdev)
{ {
struct ls_scfg_msi *msi_data = platform_get_drvdata(pdev); struct ls_scfg_msi *msi_data = platform_get_drvdata(pdev);
@ -390,7 +388,7 @@ index 02cca74c..119f4ef0 100644
irq_domain_remove(msi_data->msi_domain); irq_domain_remove(msi_data->msi_domain);
irq_domain_remove(msi_data->parent); irq_domain_remove(msi_data->parent);
@@ -218,12 +412,6 @@ static int ls_scfg_msi_remove(struct platform_device *pdev) @@ -218,12 +412,6 @@ static int ls_scfg_msi_remove(struct pla
return 0; return 0;
} }
@ -403,11 +401,9 @@ index 02cca74c..119f4ef0 100644
static struct platform_driver ls_scfg_msi_driver = { static struct platform_driver ls_scfg_msi_driver = {
.driver = { .driver = {
.name = "ls-scfg-msi", .name = "ls-scfg-msi",
diff --git a/drivers/pci/host/Makefile b/drivers/pci/host/Makefile
index 084cb498..88e87704 100644
--- a/drivers/pci/host/Makefile --- a/drivers/pci/host/Makefile
+++ b/drivers/pci/host/Makefile +++ b/drivers/pci/host/Makefile
@@ -17,7 +17,7 @@ obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx.o @@ -17,7 +17,7 @@ obj-$(CONFIG_PCIE_XILINX) += pcie-xilinx
obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o obj-$(CONFIG_PCIE_XILINX_NWL) += pcie-xilinx-nwl.o
obj-$(CONFIG_PCI_XGENE) += pci-xgene.o obj-$(CONFIG_PCI_XGENE) += pci-xgene.o
obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o obj-$(CONFIG_PCI_XGENE_MSI) += pci-xgene-msi.o
@ -416,9 +412,6 @@ index 084cb498..88e87704 100644
obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o obj-$(CONFIG_PCI_VERSATILE) += pci-versatile.o
obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o obj-$(CONFIG_PCIE_IPROC) += pcie-iproc.o
obj-$(CONFIG_PCIE_IPROC_MSI) += pcie-iproc-msi.o obj-$(CONFIG_PCIE_IPROC_MSI) += pcie-iproc-msi.o
diff --git a/drivers/pci/host/pci-layerscape-ep-debugfs.c b/drivers/pci/host/pci-layerscape-ep-debugfs.c
new file mode 100644
index 00000000..5f4870ba
--- /dev/null --- /dev/null
+++ b/drivers/pci/host/pci-layerscape-ep-debugfs.c +++ b/drivers/pci/host/pci-layerscape-ep-debugfs.c
@@ -0,0 +1,758 @@ @@ -0,0 +1,758 @@
@ -1180,9 +1173,6 @@ index 00000000..5f4870ba
+MODULE_AUTHOR("Minghuan Lian <Minghuan.Lian@freescale.com>"); +MODULE_AUTHOR("Minghuan Lian <Minghuan.Lian@freescale.com>");
+MODULE_DESCRIPTION("Freescale Layerscape PCIe EP controller driver"); +MODULE_DESCRIPTION("Freescale Layerscape PCIe EP controller driver");
+MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/host/pci-layerscape-ep.c b/drivers/pci/host/pci-layerscape-ep.c
new file mode 100644
index 00000000..8f1cca6e
--- /dev/null --- /dev/null
+++ b/drivers/pci/host/pci-layerscape-ep.c +++ b/drivers/pci/host/pci-layerscape-ep.c
@@ -0,0 +1,309 @@ @@ -0,0 +1,309 @@
@ -1495,9 +1485,6 @@ index 00000000..8f1cca6e
+MODULE_AUTHOR("Minghuan Lian <Minghuan.Lian@freescale.com>"); +MODULE_AUTHOR("Minghuan Lian <Minghuan.Lian@freescale.com>");
+MODULE_DESCRIPTION("Freescale Layerscape PCIe EP driver"); +MODULE_DESCRIPTION("Freescale Layerscape PCIe EP driver");
+MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL v2");
diff --git a/drivers/pci/host/pci-layerscape-ep.h b/drivers/pci/host/pci-layerscape-ep.h
new file mode 100644
index 00000000..990c0ff5
--- /dev/null --- /dev/null
+++ b/drivers/pci/host/pci-layerscape-ep.h +++ b/drivers/pci/host/pci-layerscape-ep.h
@@ -0,0 +1,115 @@ @@ -0,0 +1,115 @@
@ -1616,8 +1603,6 @@ index 00000000..990c0ff5
+int ls_pcie_ep_dbgfs_remove(struct ls_pcie *pcie); +int ls_pcie_ep_dbgfs_remove(struct ls_pcie *pcie);
+ +
+#endif /* _PCIE_LAYERSCAPE_EP_H */ +#endif /* _PCIE_LAYERSCAPE_EP_H */
diff --git a/drivers/pci/host/pci-layerscape.c b/drivers/pci/host/pci-layerscape.c
index 65370799..4713b872 100644
--- a/drivers/pci/host/pci-layerscape.c --- a/drivers/pci/host/pci-layerscape.c
+++ b/drivers/pci/host/pci-layerscape.c +++ b/drivers/pci/host/pci-layerscape.c
@@ -35,12 +35,14 @@ @@ -35,12 +35,14 @@
@ -1637,7 +1622,7 @@ index 65370799..4713b872 100644
struct pcie_host_ops *ops; struct pcie_host_ops *ops;
}; };
@@ -86,6 +88,14 @@ static void ls_pcie_drop_msg_tlp(struct ls_pcie *pcie) @@ -86,6 +88,14 @@ static void ls_pcie_drop_msg_tlp(struct
iowrite32(val, pcie->pp.dbi_base + PCIE_STRFMR1); iowrite32(val, pcie->pp.dbi_base + PCIE_STRFMR1);
} }
@ -1652,7 +1637,7 @@ index 65370799..4713b872 100644
static int ls1021_pcie_link_up(struct pcie_port *pp) static int ls1021_pcie_link_up(struct pcie_port *pp)
{ {
u32 state; u32 state;
@@ -134,7 +144,7 @@ static int ls_pcie_link_up(struct pcie_port *pp) @@ -134,7 +144,7 @@ static int ls_pcie_link_up(struct pcie_p
struct ls_pcie *pcie = to_ls_pcie(pp); struct ls_pcie *pcie = to_ls_pcie(pp);
u32 state; u32 state;
@ -1661,7 +1646,7 @@ index 65370799..4713b872 100644
pcie->drvdata->ltssm_shift) & pcie->drvdata->ltssm_shift) &
LTSSM_STATE_MASK; LTSSM_STATE_MASK;
@@ -153,6 +163,9 @@ static void ls_pcie_host_init(struct pcie_port *pp) @@ -153,6 +163,9 @@ static void ls_pcie_host_init(struct pci
ls_pcie_clear_multifunction(pcie); ls_pcie_clear_multifunction(pcie);
ls_pcie_drop_msg_tlp(pcie); ls_pcie_drop_msg_tlp(pcie);
iowrite32(0, pcie->pp.dbi_base + PCIE_DBI_RO_WR_EN); iowrite32(0, pcie->pp.dbi_base + PCIE_DBI_RO_WR_EN);
@ -1671,7 +1656,7 @@ index 65370799..4713b872 100644
} }
static int ls_pcie_msi_host_init(struct pcie_port *pp, static int ls_pcie_msi_host_init(struct pcie_port *pp,
@@ -196,20 +209,38 @@ static struct ls_pcie_drvdata ls1021_drvdata = { @@ -196,20 +209,38 @@ static struct ls_pcie_drvdata ls1021_drv
static struct ls_pcie_drvdata ls1043_drvdata = { static struct ls_pcie_drvdata ls1043_drvdata = {
.lut_offset = 0x10000, .lut_offset = 0x10000,
.ltssm_shift = 24, .ltssm_shift = 24,
@ -1710,11 +1695,9 @@ index 65370799..4713b872 100644
{ }, { },
}; };
diff --git a/drivers/pci/host/pcie-designware.c b/drivers/pci/host/pcie-designware.c
index af8f6e92..2358e049 100644
--- a/drivers/pci/host/pcie-designware.c --- a/drivers/pci/host/pcie-designware.c
+++ b/drivers/pci/host/pcie-designware.c +++ b/drivers/pci/host/pcie-designware.c
@@ -478,6 +478,12 @@ int dw_pcie_wait_for_link(struct pcie_port *pp) @@ -478,6 +478,12 @@ int dw_pcie_wait_for_link(struct pcie_po
return -ETIMEDOUT; return -ETIMEDOUT;
} }
@ -1727,22 +1710,18 @@ index af8f6e92..2358e049 100644
int dw_pcie_link_up(struct pcie_port *pp) int dw_pcie_link_up(struct pcie_port *pp)
{ {
u32 val; u32 val;
diff --git a/drivers/pci/host/pcie-designware.h b/drivers/pci/host/pcie-designware.h
index a567ea28..4e6672b2 100644
--- a/drivers/pci/host/pcie-designware.h --- a/drivers/pci/host/pcie-designware.h
+++ b/drivers/pci/host/pcie-designware.h +++ b/drivers/pci/host/pcie-designware.h
@@ -82,5 +82,6 @@ int dw_pcie_wait_for_link(struct pcie_port *pp); @@ -82,5 +82,6 @@ int dw_pcie_wait_for_link(struct pcie_po
int dw_pcie_link_up(struct pcie_port *pp); int dw_pcie_link_up(struct pcie_port *pp);
void dw_pcie_setup_rc(struct pcie_port *pp); void dw_pcie_setup_rc(struct pcie_port *pp);
int dw_pcie_host_init(struct pcie_port *pp); int dw_pcie_host_init(struct pcie_port *pp);
+void dw_pcie_disable_outbound_atu(struct pcie_port *pp, int index); +void dw_pcie_disable_outbound_atu(struct pcie_port *pp, int index);
#endif /* _PCIE_DESIGNWARE_H */ #endif /* _PCIE_DESIGNWARE_H */
diff --git a/drivers/pci/pcie/portdrv_core.c b/drivers/pci/pcie/portdrv_core.c
index e9270b40..1bad877a 100644
--- a/drivers/pci/pcie/portdrv_core.c --- a/drivers/pci/pcie/portdrv_core.c
+++ b/drivers/pci/pcie/portdrv_core.c +++ b/drivers/pci/pcie/portdrv_core.c
@@ -44,52 +44,30 @@ static void release_pcie_device(struct device *dev) @@ -44,52 +44,30 @@ static void release_pcie_device(struct d
} }
/** /**
@ -1806,7 +1785,7 @@ index e9270b40..1bad877a 100644
/* /*
* Allocate as many entries as the port wants, so that we can check * Allocate as many entries as the port wants, so that we can check
@@ -97,20 +75,13 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) @@ -97,20 +75,13 @@ static int pcie_port_enable_msix(struct
* equal to the number of entries this port actually uses, we'll happily * equal to the number of entries this port actually uses, we'll happily
* go through without any tricks. * go through without any tricks.
*/ */
@ -1832,7 +1811,7 @@ index e9270b40..1bad877a 100644
/* /*
* The code below follows the PCI Express Base Specification 2.0 * The code below follows the PCI Express Base Specification 2.0
@@ -125,18 +96,16 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) @@ -125,18 +96,16 @@ static int pcie_port_enable_msix(struct
pcie_capability_read_word(dev, PCI_EXP_FLAGS, &reg16); pcie_capability_read_word(dev, PCI_EXP_FLAGS, &reg16);
entry = (reg16 & PCI_EXP_FLAGS_IRQ) >> 9; entry = (reg16 & PCI_EXP_FLAGS_IRQ) >> 9;
if (entry >= nr_entries) if (entry >= nr_entries)
@ -1856,7 +1835,7 @@ index e9270b40..1bad877a 100644
/* /*
* The code below follows Section 7.10.10 of the PCI Express * The code below follows Section 7.10.10 of the PCI Express
@@ -151,13 +120,11 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) @@ -151,13 +120,11 @@ static int pcie_port_enable_msix(struct
pci_read_config_dword(dev, pos + PCI_ERR_ROOT_STATUS, &reg32); pci_read_config_dword(dev, pos + PCI_ERR_ROOT_STATUS, &reg32);
entry = reg32 >> 27; entry = reg32 >> 27;
if (entry >= nr_entries) if (entry >= nr_entries)
@ -1873,7 +1852,7 @@ index e9270b40..1bad877a 100644
} }
/* /*
@@ -165,41 +132,54 @@ static int pcie_port_enable_msix(struct pci_dev *dev, int *vectors, int mask) @@ -165,41 +132,54 @@ static int pcie_port_enable_msix(struct
* what we have. Otherwise, the port has some extra entries not for the * what we have. Otherwise, the port has some extra entries not for the
* services we know and we need to work around that. * services we know and we need to work around that.
*/ */
@ -1947,7 +1926,7 @@ index e9270b40..1bad877a 100644
/* /*
* If MSI cannot be used for PCIe PME or hotplug, we have to use * If MSI cannot be used for PCIe PME or hotplug, we have to use
@@ -207,41 +187,25 @@ static int init_service_irqs(struct pci_dev *dev, int *irqs, int mask) @@ -207,41 +187,25 @@ static int init_service_irqs(struct pci_
*/ */
if (((mask & PCIE_PORT_SERVICE_PME) && pcie_pme_no_msi()) || if (((mask & PCIE_PORT_SERVICE_PME) && pcie_pme_no_msi()) ||
((mask & PCIE_PORT_SERVICE_HP) && pciehp_no_msi())) { ((mask & PCIE_PORT_SERVICE_HP) && pciehp_no_msi())) {
@ -2001,7 +1980,7 @@ index e9270b40..1bad877a 100644
/** /**
* get_port_device_capability - discover capabilities of a PCI Express port * get_port_device_capability - discover capabilities of a PCI Express port
* @dev: PCI Express port to examine * @dev: PCI Express port to examine
@@ -378,7 +342,7 @@ int pcie_port_device_register(struct pci_dev *dev) @@ -378,7 +342,7 @@ int pcie_port_device_register(struct pci
* that can be used in the absence of irqs. Allow them to determine * that can be used in the absence of irqs. Allow them to determine
* if that is to be used. * if that is to be used.
*/ */
@ -2010,7 +1989,7 @@ index e9270b40..1bad877a 100644
if (status) { if (status) {
capabilities &= PCIE_PORT_SERVICE_VC | PCIE_PORT_SERVICE_HP; capabilities &= PCIE_PORT_SERVICE_VC | PCIE_PORT_SERVICE_HP;
if (!capabilities) if (!capabilities)
@@ -401,7 +365,7 @@ int pcie_port_device_register(struct pci_dev *dev) @@ -401,7 +365,7 @@ int pcie_port_device_register(struct pci
return 0; return 0;
error_cleanup_irqs: error_cleanup_irqs:
@ -2019,7 +1998,7 @@ index e9270b40..1bad877a 100644
error_disable: error_disable:
pci_disable_device(dev); pci_disable_device(dev);
return status; return status;
@@ -469,7 +433,7 @@ static int remove_iter(struct device *dev, void *data) @@ -469,7 +433,7 @@ static int remove_iter(struct device *de
void pcie_port_device_remove(struct pci_dev *dev) void pcie_port_device_remove(struct pci_dev *dev)
{ {
device_for_each_child(&dev->dev, NULL, remove_iter); device_for_each_child(&dev->dev, NULL, remove_iter);
@ -2028,7 +2007,7 @@ index e9270b40..1bad877a 100644
pci_disable_device(dev); pci_disable_device(dev);
} }
@@ -499,7 +463,6 @@ static int pcie_port_probe_service(struct device *dev) @@ -499,7 +463,6 @@ static int pcie_port_probe_service(struc
if (status) if (status)
return status; return status;
@ -2036,7 +2015,7 @@ index e9270b40..1bad877a 100644
get_device(dev); get_device(dev);
return 0; return 0;
} }
@@ -524,8 +487,6 @@ static int pcie_port_remove_service(struct device *dev) @@ -524,8 +487,6 @@ static int pcie_port_remove_service(stru
pciedev = to_pcie_device(dev); pciedev = to_pcie_device(dev);
driver = to_service_driver(dev->driver); driver = to_service_driver(dev->driver);
if (driver && driver->remove) { if (driver && driver->remove) {
@ -2045,11 +2024,9 @@ index e9270b40..1bad877a 100644
driver->remove(pciedev); driver->remove(pciedev);
put_device(dev); put_device(dev);
} }
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 1b711796..6738d816 100644
--- a/include/linux/pci.h --- a/include/linux/pci.h
+++ b/include/linux/pci.h +++ b/include/linux/pci.h
@@ -1823,6 +1823,7 @@ void pcibios_release_device(struct pci_dev *dev); @@ -1823,6 +1823,7 @@ void pcibios_release_device(struct pci_d
void pcibios_penalize_isa_irq(int irq, int active); void pcibios_penalize_isa_irq(int irq, int active);
int pcibios_alloc_irq(struct pci_dev *dev); int pcibios_alloc_irq(struct pci_dev *dev);
void pcibios_free_irq(struct pci_dev *dev); void pcibios_free_irq(struct pci_dev *dev);
@ -2057,6 +2034,3 @@ index 1b711796..6738d816 100644
#ifdef CONFIG_HIBERNATE_CALLBACKS #ifdef CONFIG_HIBERNATE_CALLBACKS
extern struct dev_pm_ops pcibios_pm_ops; extern struct dev_pm_ops pcibios_pm_ops;
--
2.14.1

View file

@ -26,8 +26,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
create mode 100644 drivers/net/phy/cortina.c create mode 100644 drivers/net/phy/cortina.c
create mode 100644 drivers/net/phy/fsl_backplane.c create mode 100644 drivers/net/phy/fsl_backplane.c
diff --git a/drivers/net/phy/Kconfig b/drivers/net/phy/Kconfig
index 30a3a2f5..3521c1ac 100644
--- a/drivers/net/phy/Kconfig --- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig +++ b/drivers/net/phy/Kconfig
@@ -89,6 +89,12 @@ config MDIO_BUS_MUX_MMIOREG @@ -89,6 +89,12 @@ config MDIO_BUS_MUX_MMIOREG
@ -55,11 +53,9 @@ index 30a3a2f5..3521c1ac 100644
config DAVICOM_PHY config DAVICOM_PHY
tristate "Davicom PHYs" tristate "Davicom PHYs"
---help--- ---help---
diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
index 93a68fcd..ef3ec265 100644
--- a/drivers/net/phy/Makefile --- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile +++ b/drivers/net/phy/Makefile
@@ -30,6 +30,7 @@ obj-$(CONFIG_MDIO_BUS_MUX_BCM_IPROC) += mdio-mux-bcm-iproc.o @@ -30,6 +30,7 @@ obj-$(CONFIG_MDIO_BUS_MUX_BCM_IPROC) +=
obj-$(CONFIG_MDIO_BUS_MUX_GPIO) += mdio-mux-gpio.o obj-$(CONFIG_MDIO_BUS_MUX_GPIO) += mdio-mux-gpio.o
obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += mdio-mux-mmioreg.o obj-$(CONFIG_MDIO_BUS_MUX_MMIOREG) += mdio-mux-mmioreg.o
obj-$(CONFIG_MDIO_CAVIUM) += mdio-cavium.o obj-$(CONFIG_MDIO_CAVIUM) += mdio-cavium.o
@ -67,7 +63,7 @@ index 93a68fcd..ef3ec265 100644
obj-$(CONFIG_MDIO_GPIO) += mdio-gpio.o obj-$(CONFIG_MDIO_GPIO) += mdio-gpio.o
obj-$(CONFIG_MDIO_HISI_FEMAC) += mdio-hisi-femac.o obj-$(CONFIG_MDIO_HISI_FEMAC) += mdio-hisi-femac.o
obj-$(CONFIG_MDIO_MOXART) += mdio-moxart.o obj-$(CONFIG_MDIO_MOXART) += mdio-moxart.o
@@ -48,6 +49,7 @@ obj-$(CONFIG_BCM_CYGNUS_PHY) += bcm-cygnus.o @@ -48,6 +49,7 @@ obj-$(CONFIG_BCM_CYGNUS_PHY) += bcm-cygn
obj-$(CONFIG_BCM_NET_PHYLIB) += bcm-phy-lib.o obj-$(CONFIG_BCM_NET_PHYLIB) += bcm-phy-lib.o
obj-$(CONFIG_BROADCOM_PHY) += broadcom.o obj-$(CONFIG_BROADCOM_PHY) += broadcom.o
obj-$(CONFIG_CICADA_PHY) += cicada.o obj-$(CONFIG_CICADA_PHY) += cicada.o
@ -75,8 +71,6 @@ index 93a68fcd..ef3ec265 100644
obj-$(CONFIG_DAVICOM_PHY) += davicom.o obj-$(CONFIG_DAVICOM_PHY) += davicom.o
obj-$(CONFIG_DP83640_PHY) += dp83640.o obj-$(CONFIG_DP83640_PHY) += dp83640.o
obj-$(CONFIG_DP83848_PHY) += dp83848.o obj-$(CONFIG_DP83848_PHY) += dp83848.o
diff --git a/drivers/net/phy/aquantia.c b/drivers/net/phy/aquantia.c
index 09b0b0aa..e8ae50e1 100644
--- a/drivers/net/phy/aquantia.c --- a/drivers/net/phy/aquantia.c
+++ b/drivers/net/phy/aquantia.c +++ b/drivers/net/phy/aquantia.c
@@ -21,6 +21,8 @@ @@ -21,6 +21,8 @@
@ -88,11 +82,10 @@ index 09b0b0aa..e8ae50e1 100644
#define PHY_ID_AQR405 0x03a1b4b0 #define PHY_ID_AQR405 0x03a1b4b0
#define PHY_AQUANTIA_FEATURES (SUPPORTED_10000baseT_Full | \ #define PHY_AQUANTIA_FEATURES (SUPPORTED_10000baseT_Full | \
@@ -153,6 +155,30 @@ static struct phy_driver aquantia_driver[] = { @@ -154,6 +156,30 @@ static struct phy_driver aquantia_driver
.ack_interrupt = aquantia_ack_interrupt,
.read_status = aquantia_read_status, .read_status = aquantia_read_status,
}, },
+{ {
+ .phy_id = PHY_ID_AQR106, + .phy_id = PHY_ID_AQR106,
+ .phy_id_mask = 0xfffffff0, + .phy_id_mask = 0xfffffff0,
+ .name = "Aquantia AQR106", + .name = "Aquantia AQR106",
@ -116,10 +109,11 @@ index 09b0b0aa..e8ae50e1 100644
+ .ack_interrupt = aquantia_ack_interrupt, + .ack_interrupt = aquantia_ack_interrupt,
+ .read_status = aquantia_read_status, + .read_status = aquantia_read_status,
+}, +},
{ +{
.phy_id = PHY_ID_AQR405, .phy_id = PHY_ID_AQR405,
.phy_id_mask = 0xfffffff0, .phy_id_mask = 0xfffffff0,
@@ -173,6 +199,8 @@ static struct mdio_device_id __maybe_unused aquantia_tbl[] = { .name = "Aquantia AQR405",
@@ -173,6 +199,8 @@ static struct mdio_device_id __maybe_unu
{ PHY_ID_AQ1202, 0xfffffff0 }, { PHY_ID_AQ1202, 0xfffffff0 },
{ PHY_ID_AQ2104, 0xfffffff0 }, { PHY_ID_AQ2104, 0xfffffff0 },
{ PHY_ID_AQR105, 0xfffffff0 }, { PHY_ID_AQR105, 0xfffffff0 },
@ -128,9 +122,6 @@ index 09b0b0aa..e8ae50e1 100644
{ PHY_ID_AQR405, 0xfffffff0 }, { PHY_ID_AQR405, 0xfffffff0 },
{ } { }
}; };
diff --git a/drivers/net/phy/cortina.c b/drivers/net/phy/cortina.c
new file mode 100644
index 00000000..72f4228a
--- /dev/null --- /dev/null
+++ b/drivers/net/phy/cortina.c +++ b/drivers/net/phy/cortina.c
@@ -0,0 +1,118 @@ @@ -0,0 +1,118 @@
@ -252,9 +243,6 @@ index 00000000..72f4228a
+}; +};
+ +
+MODULE_DEVICE_TABLE(mdio, cortina_tbl); +MODULE_DEVICE_TABLE(mdio, cortina_tbl);
diff --git a/drivers/net/phy/fsl_backplane.c b/drivers/net/phy/fsl_backplane.c
new file mode 100644
index 00000000..76865261
--- /dev/null --- /dev/null
+++ b/drivers/net/phy/fsl_backplane.c +++ b/drivers/net/phy/fsl_backplane.c
@@ -0,0 +1,1358 @@ @@ -0,0 +1,1358 @@
@ -1616,11 +1604,9 @@ index 00000000..76865261
+MODULE_DESCRIPTION("Freescale Backplane driver"); +MODULE_DESCRIPTION("Freescale Backplane driver");
+MODULE_AUTHOR("Shaohui Xie <Shaohui.Xie@freescale.com>"); +MODULE_AUTHOR("Shaohui Xie <Shaohui.Xie@freescale.com>");
+MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL v2");
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index f3e64a89..42cdd5b7 100644
--- a/drivers/net/phy/phy.c --- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c +++ b/drivers/net/phy/phy.c
@@ -585,7 +585,7 @@ int phy_mii_ioctl(struct phy_device *phydev, struct ifreq *ifr, int cmd) @@ -585,7 +585,7 @@ int phy_mii_ioctl(struct phy_device *phy
return 0; return 0;
case SIOCSHWTSTAMP: case SIOCSHWTSTAMP:
@ -1629,7 +1615,7 @@ index f3e64a89..42cdd5b7 100644
return phydev->drv->hwtstamp(phydev, ifr); return phydev->drv->hwtstamp(phydev, ifr);
/* fall through */ /* fall through */
@@ -610,6 +610,9 @@ static int phy_start_aneg_priv(struct phy_device *phydev, bool sync) @@ -610,6 +610,9 @@ static int phy_start_aneg_priv(struct ph
bool trigger = 0; bool trigger = 0;
int err; int err;
@ -1639,7 +1625,7 @@ index f3e64a89..42cdd5b7 100644
mutex_lock(&phydev->lock); mutex_lock(&phydev->lock);
if (AUTONEG_DISABLE == phydev->autoneg) if (AUTONEG_DISABLE == phydev->autoneg)
@@ -1009,7 +1012,7 @@ void phy_state_machine(struct work_struct *work) @@ -1009,7 +1012,7 @@ void phy_state_machine(struct work_struc
old_state = phydev->state; old_state = phydev->state;
@ -1668,7 +1654,7 @@ index f3e64a89..42cdd5b7 100644
return phy_read_mmd_indirect(phydev, MDIO_PCS_EEE_WK_ERR, MDIO_MMD_PCS); return phy_read_mmd_indirect(phydev, MDIO_PCS_EEE_WK_ERR, MDIO_MMD_PCS);
} }
EXPORT_SYMBOL(phy_get_eee_err); EXPORT_SYMBOL(phy_get_eee_err);
@@ -1404,6 +1413,9 @@ int phy_ethtool_get_eee(struct phy_device *phydev, struct ethtool_eee *data) @@ -1404,6 +1413,9 @@ int phy_ethtool_get_eee(struct phy_devic
{ {
int val; int val;
@ -1678,7 +1664,7 @@ index f3e64a89..42cdd5b7 100644
/* Get Supported EEE */ /* Get Supported EEE */
val = phy_read_mmd_indirect(phydev, MDIO_PCS_EEE_ABLE, MDIO_MMD_PCS); val = phy_read_mmd_indirect(phydev, MDIO_PCS_EEE_ABLE, MDIO_MMD_PCS);
if (val < 0) if (val < 0)
@@ -1437,6 +1449,9 @@ int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data) @@ -1437,6 +1449,9 @@ int phy_ethtool_set_eee(struct phy_devic
{ {
int val = ethtool_adv_to_mmd_eee_adv_t(data->advertised); int val = ethtool_adv_to_mmd_eee_adv_t(data->advertised);
@ -1706,11 +1692,9 @@ index f3e64a89..42cdd5b7 100644
phydev->drv->get_wol(phydev, wol); phydev->drv->get_wol(phydev, wol);
} }
EXPORT_SYMBOL(phy_ethtool_get_wol); EXPORT_SYMBOL(phy_ethtool_get_wol);
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 5fdc491e..039f9664 100644
--- a/drivers/net/phy/phy_device.c --- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c +++ b/drivers/net/phy/phy_device.c
@@ -1046,7 +1046,7 @@ int phy_suspend(struct phy_device *phydev) @@ -1046,7 +1046,7 @@ int phy_suspend(struct phy_device *phyde
if (wol.wolopts) if (wol.wolopts)
return -EBUSY; return -EBUSY;
@ -1719,7 +1703,7 @@ index 5fdc491e..039f9664 100644
ret = phydrv->suspend(phydev); ret = phydrv->suspend(phydev);
if (ret) if (ret)
@@ -1063,7 +1063,7 @@ int phy_resume(struct phy_device *phydev) @@ -1063,7 +1063,7 @@ int phy_resume(struct phy_device *phydev
struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver); struct phy_driver *phydrv = to_phy_driver(phydev->mdio.dev.driver);
int ret = 0; int ret = 0;
@ -1728,7 +1712,7 @@ index 5fdc491e..039f9664 100644
ret = phydrv->resume(phydev); ret = phydrv->resume(phydev);
if (ret) if (ret)
@@ -1726,7 +1726,7 @@ static int phy_remove(struct device *dev) @@ -1726,7 +1726,7 @@ static int phy_remove(struct device *dev
phydev->state = PHY_DOWN; phydev->state = PHY_DOWN;
mutex_unlock(&phydev->lock); mutex_unlock(&phydev->lock);
@ -1737,11 +1721,9 @@ index 5fdc491e..039f9664 100644
phydev->drv->remove(phydev); phydev->drv->remove(phydev);
phydev->drv = NULL; phydev->drv = NULL;
diff --git a/drivers/net/phy/swphy.c b/drivers/net/phy/swphy.c
index 34f58f23..52ddddbe 100644
--- a/drivers/net/phy/swphy.c --- a/drivers/net/phy/swphy.c
+++ b/drivers/net/phy/swphy.c +++ b/drivers/net/phy/swphy.c
@@ -77,6 +77,7 @@ static const struct swmii_regs duplex[] = { @@ -77,6 +77,7 @@ static const struct swmii_regs duplex[]
static int swphy_decode_speed(int speed) static int swphy_decode_speed(int speed)
{ {
switch (speed) { switch (speed) {
@ -1749,8 +1731,6 @@ index 34f58f23..52ddddbe 100644
case 1000: case 1000:
return SWMII_SPEED_1000; return SWMII_SPEED_1000;
case 100: case 100:
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 850c8b51..5f253f1a 100644
--- a/include/linux/phy.h --- a/include/linux/phy.h
+++ b/include/linux/phy.h +++ b/include/linux/phy.h
@@ -81,6 +81,7 @@ typedef enum { @@ -81,6 +81,7 @@ typedef enum {
@ -1761,7 +1741,7 @@ index 850c8b51..5f253f1a 100644
PHY_INTERFACE_MODE_MAX, PHY_INTERFACE_MODE_MAX,
} phy_interface_t; } phy_interface_t;
@@ -784,6 +785,9 @@ int phy_stop_interrupts(struct phy_device *phydev); @@ -784,6 +785,9 @@ int phy_stop_interrupts(struct phy_devic
static inline int phy_read_status(struct phy_device *phydev) static inline int phy_read_status(struct phy_device *phydev)
{ {
@ -1771,6 +1751,3 @@ index 850c8b51..5f253f1a 100644
return phydev->drv->read_status(phydev); return phydev->drv->read_status(phydev);
} }
--
2.14.1

View file

@ -92,9 +92,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
create mode 100644 drivers/staging/fsl-dpaa2/rtc/dprtc.h create mode 100644 drivers/staging/fsl-dpaa2/rtc/dprtc.h
create mode 100644 drivers/staging/fsl-dpaa2/rtc/rtc.c create mode 100644 drivers/staging/fsl-dpaa2/rtc/rtc.c
diff --git a/drivers/soc/fsl/ls2-console/Kconfig b/drivers/soc/fsl/ls2-console/Kconfig
new file mode 100644
index 00000000..47d0dc11
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/ls2-console/Kconfig +++ b/drivers/soc/fsl/ls2-console/Kconfig
@@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
@ -102,16 +99,10 @@ index 00000000..47d0dc11
+ tristate "Layerscape MC and AIOP console support" + tristate "Layerscape MC and AIOP console support"
+ depends on ARCH_LAYERSCAPE + depends on ARCH_LAYERSCAPE
+ default y + default y
diff --git a/drivers/soc/fsl/ls2-console/Makefile b/drivers/soc/fsl/ls2-console/Makefile
new file mode 100644
index 00000000..62b96346
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/ls2-console/Makefile +++ b/drivers/soc/fsl/ls2-console/Makefile
@@ -0,0 +1 @@ @@ -0,0 +1 @@
+obj-$(CONFIG_FSL_LS2_CONSOLE) += ls2-console.o +obj-$(CONFIG_FSL_LS2_CONSOLE) += ls2-console.o
diff --git a/drivers/soc/fsl/ls2-console/ls2-console.c b/drivers/soc/fsl/ls2-console/ls2-console.c
new file mode 100644
index 00000000..68415ad0
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/ls2-console/ls2-console.c +++ b/drivers/soc/fsl/ls2-console/ls2-console.c
@@ -0,0 +1,284 @@ @@ -0,0 +1,284 @@
@ -399,9 +390,6 @@ index 00000000..68415ad0
+MODULE_AUTHOR("Roy Pledge <roy.pledge@freescale.com>"); +MODULE_AUTHOR("Roy Pledge <roy.pledge@freescale.com>");
+MODULE_LICENSE("Dual BSD/GPL"); +MODULE_LICENSE("Dual BSD/GPL");
+MODULE_DESCRIPTION("Freescale LS2 console driver"); +MODULE_DESCRIPTION("Freescale LS2 console driver");
diff --git a/drivers/staging/fsl-dpaa2/ethernet/Makefile b/drivers/staging/fsl-dpaa2/ethernet/Makefile
new file mode 100644
index 00000000..e26911d5
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/Makefile +++ b/drivers/staging/fsl-dpaa2/ethernet/Makefile
@@ -0,0 +1,11 @@ @@ -0,0 +1,11 @@
@ -416,9 +404,6 @@ index 00000000..e26911d5
+ +
+# Needed by the tracing framework +# Needed by the tracing framework
+CFLAGS_dpaa2-eth.o := -I$(src) +CFLAGS_dpaa2-eth.o := -I$(src)
diff --git a/drivers/staging/fsl-dpaa2/ethernet/README b/drivers/staging/fsl-dpaa2/ethernet/README
new file mode 100644
index 00000000..410952ec
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/README +++ b/drivers/staging/fsl-dpaa2/ethernet/README
@@ -0,0 +1,186 @@ @@ -0,0 +1,186 @@
@ -608,9 +593,6 @@ index 00000000..410952ec
+ +
+Hardware specific statistics for the network interface as well as some +Hardware specific statistics for the network interface as well as some
+non-standard driver stats can be consulted through ethtool -S option. +non-standard driver stats can be consulted through ethtool -S option.
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.c
new file mode 100644
index 00000000..445c5d17
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.c +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.c
@@ -0,0 +1,350 @@ @@ -0,0 +1,350 @@
@ -964,9 +946,6 @@ index 00000000..445c5d17
+{ +{
+ debugfs_remove(dpaa2_dbg_root); + debugfs_remove(dpaa2_dbg_root);
+} +}
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.h b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.h
new file mode 100644
index 00000000..551e6c4c
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-debugfs.h
@@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
@ -1030,9 +1009,6 @@ index 00000000..551e6c4c
+#endif /* CONFIG_FSL_DPAA2_ETH_DEBUGFS */ +#endif /* CONFIG_FSL_DPAA2_ETH_DEBUGFS */
+ +
+#endif /* DPAA2_ETH_DEBUGFS_H */ +#endif /* DPAA2_ETH_DEBUGFS_H */
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-trace.h b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-trace.h
new file mode 100644
index 00000000..e8e6522a
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-trace.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth-trace.h
@@ -0,0 +1,184 @@ @@ -0,0 +1,184 @@
@ -1220,9 +1196,6 @@ index 00000000..e8e6522a
+#undef TRACE_INCLUDE_FILE +#undef TRACE_INCLUDE_FILE
+#define TRACE_INCLUDE_FILE dpaa2-eth-trace +#define TRACE_INCLUDE_FILE dpaa2-eth-trace
+#include <trace/define_trace.h> +#include <trace/define_trace.h>
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
new file mode 100644
index 00000000..452eca52
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.c
@@ -0,0 +1,3155 @@ @@ -0,0 +1,3155 @@
@ -4381,9 +4354,6 @@ index 00000000..452eca52
+ +
+module_init(dpaa2_eth_driver_init); +module_init(dpaa2_eth_driver_init);
+module_exit(dpaa2_eth_driver_exit); +module_exit(dpaa2_eth_driver_exit);
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h
new file mode 100644
index 00000000..86cb12e9
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-eth.h
@@ -0,0 +1,460 @@ @@ -0,0 +1,460 @@
@ -4847,9 +4817,6 @@ index 00000000..86cb12e9
+ +
+int setup_fqs_taildrop(struct dpaa2_eth_priv *priv, bool enable); +int setup_fqs_taildrop(struct dpaa2_eth_priv *priv, bool enable);
+#endif /* __DPAA2_H */ +#endif /* __DPAA2_H */
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
new file mode 100644
index 00000000..9859814e
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c +++ b/drivers/staging/fsl-dpaa2/ethernet/dpaa2-ethtool.c
@@ -0,0 +1,856 @@ @@ -0,0 +1,856 @@
@ -5709,9 +5676,6 @@ index 00000000..9859814e
+ .get_rxnfc = dpaa2_eth_get_rxnfc, + .get_rxnfc = dpaa2_eth_get_rxnfc,
+ .set_rxnfc = dpaa2_eth_set_rxnfc, + .set_rxnfc = dpaa2_eth_set_rxnfc,
+}; +};
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpkg.h b/drivers/staging/fsl-dpaa2/ethernet/dpkg.h
new file mode 100644
index 00000000..02290a08
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpkg.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpkg.h
@@ -0,0 +1,176 @@ @@ -0,0 +1,176 @@
@ -5891,9 +5855,6 @@ index 00000000..02290a08
+}; +};
+ +
+#endif /* __FSL_DPKG_H_ */ +#endif /* __FSL_DPKG_H_ */
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpni-cmd.h b/drivers/staging/fsl-dpaa2/ethernet/dpni-cmd.h
new file mode 100644
index 00000000..fa353d75
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpni-cmd.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpni-cmd.h
@@ -0,0 +1,600 @@ @@ -0,0 +1,600 @@
@ -6497,9 +6458,6 @@ index 00000000..fa353d75
+}; +};
+ +
+#endif /* _FSL_DPNI_CMD_H */ +#endif /* _FSL_DPNI_CMD_H */
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpni.c b/drivers/staging/fsl-dpaa2/ethernet/dpni.c
new file mode 100644
index 00000000..3c23e4dc
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpni.c +++ b/drivers/staging/fsl-dpaa2/ethernet/dpni.c
@@ -0,0 +1,1770 @@ @@ -0,0 +1,1770 @@
@ -8273,9 +8231,6 @@ index 00000000..3c23e4dc
+ +
+ return 0; + return 0;
+} +}
diff --git a/drivers/staging/fsl-dpaa2/ethernet/dpni.h b/drivers/staging/fsl-dpaa2/ethernet/dpni.h
new file mode 100644
index 00000000..600c3574
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/dpni.h +++ b/drivers/staging/fsl-dpaa2/ethernet/dpni.h
@@ -0,0 +1,989 @@ @@ -0,0 +1,989 @@
@ -9268,9 +9223,6 @@ index 00000000..600c3574
+ const struct dpni_rule_cfg *cfg); + const struct dpni_rule_cfg *cfg);
+ +
+#endif /* __FSL_DPNI_H */ +#endif /* __FSL_DPNI_H */
diff --git a/drivers/staging/fsl-dpaa2/ethernet/net.h b/drivers/staging/fsl-dpaa2/ethernet/net.h
new file mode 100644
index 00000000..5020dee1
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethernet/net.h +++ b/drivers/staging/fsl-dpaa2/ethernet/net.h
@@ -0,0 +1,480 @@ @@ -0,0 +1,480 @@
@ -9754,9 +9706,6 @@ index 00000000..5020dee1
+ (((u32)((vlan_id) & 0xFFF)))) + (((u32)((vlan_id) & 0xFFF))))
+ +
+#endif /* __FSL_NET_H */ +#endif /* __FSL_NET_H */
diff --git a/drivers/staging/fsl-dpaa2/ethsw/Kconfig b/drivers/staging/fsl-dpaa2/ethsw/Kconfig
new file mode 100644
index 00000000..06c70408
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethsw/Kconfig +++ b/drivers/staging/fsl-dpaa2/ethsw/Kconfig
@@ -0,0 +1,6 @@ @@ -0,0 +1,6 @@
@ -9766,9 +9715,6 @@ index 00000000..06c70408
+ default y + default y
+ ---help--- + ---help---
+ Prototype driver for DPAA2 Ethernet Switch. + Prototype driver for DPAA2 Ethernet Switch.
diff --git a/drivers/staging/fsl-dpaa2/ethsw/Makefile b/drivers/staging/fsl-dpaa2/ethsw/Makefile
new file mode 100644
index 00000000..20eb3ac4
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile +++ b/drivers/staging/fsl-dpaa2/ethsw/Makefile
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
@ -9782,9 +9728,6 @@ index 00000000..20eb3ac4
+ +
+clean: +clean:
+ make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
diff --git a/drivers/staging/fsl-dpaa2/ethsw/dpsw-cmd.h b/drivers/staging/fsl-dpaa2/ethsw/dpsw-cmd.h
new file mode 100644
index 00000000..f7374d1c
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethsw/dpsw-cmd.h +++ b/drivers/staging/fsl-dpaa2/ethsw/dpsw-cmd.h
@@ -0,0 +1,851 @@ @@ -0,0 +1,851 @@
@ -10639,9 +10582,6 @@ index 00000000..f7374d1c
+}; +};
+ +
+#endif /* __FSL_DPSW_CMD_H */ +#endif /* __FSL_DPSW_CMD_H */
diff --git a/drivers/staging/fsl-dpaa2/ethsw/dpsw.c b/drivers/staging/fsl-dpaa2/ethsw/dpsw.c
new file mode 100644
index 00000000..179e98c8
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethsw/dpsw.c +++ b/drivers/staging/fsl-dpaa2/ethsw/dpsw.c
@@ -0,0 +1,2762 @@ @@ -0,0 +1,2762 @@
@ -13407,9 +13347,6 @@ index 00000000..179e98c8
+ +
+ return 0; + return 0;
+} +}
diff --git a/drivers/staging/fsl-dpaa2/ethsw/dpsw.h b/drivers/staging/fsl-dpaa2/ethsw/dpsw.h
new file mode 100644
index 00000000..c91abeb4
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethsw/dpsw.h +++ b/drivers/staging/fsl-dpaa2/ethsw/dpsw.h
@@ -0,0 +1,1269 @@ @@ -0,0 +1,1269 @@
@ -14682,9 +14619,6 @@ index 00000000..c91abeb4
+ u16 *minor_ver); + u16 *minor_ver);
+ +
+#endif /* __FSL_DPSW_H */ +#endif /* __FSL_DPSW_H */
diff --git a/drivers/staging/fsl-dpaa2/ethsw/switch.c b/drivers/staging/fsl-dpaa2/ethsw/switch.c
new file mode 100644
index 00000000..3f2c9648
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/ethsw/switch.c +++ b/drivers/staging/fsl-dpaa2/ethsw/switch.c
@@ -0,0 +1,1857 @@ @@ -0,0 +1,1857 @@
@ -16545,9 +16479,6 @@ index 00000000..3f2c9648
+ +
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("DPAA2 Ethernet Switch Driver (prototype)"); +MODULE_DESCRIPTION("DPAA2 Ethernet Switch Driver (prototype)");
diff --git a/drivers/staging/fsl-dpaa2/evb/Kconfig b/drivers/staging/fsl-dpaa2/evb/Kconfig
new file mode 100644
index 00000000..3534f697
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/evb/Kconfig +++ b/drivers/staging/fsl-dpaa2/evb/Kconfig
@@ -0,0 +1,7 @@ @@ -0,0 +1,7 @@
@ -16558,9 +16489,6 @@ index 00000000..3534f697
+ default y + default y
+ ---help--- + ---help---
+ Prototype driver for DPAA2 Edge Virtual Bridge. + Prototype driver for DPAA2 Edge Virtual Bridge.
diff --git a/drivers/staging/fsl-dpaa2/evb/Makefile b/drivers/staging/fsl-dpaa2/evb/Makefile
new file mode 100644
index 00000000..ecc529d7
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/evb/Makefile +++ b/drivers/staging/fsl-dpaa2/evb/Makefile
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
@ -16574,9 +16502,6 @@ index 00000000..ecc529d7
+ +
+clean: +clean:
+ make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
diff --git a/drivers/staging/fsl-dpaa2/evb/dpdmux-cmd.h b/drivers/staging/fsl-dpaa2/evb/dpdmux-cmd.h
new file mode 100644
index 00000000..66306804
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/evb/dpdmux-cmd.h +++ b/drivers/staging/fsl-dpaa2/evb/dpdmux-cmd.h
@@ -0,0 +1,279 @@ @@ -0,0 +1,279 @@
@ -16859,9 +16784,6 @@ index 00000000..66306804
+}; +};
+ +
+#endif /* _FSL_DPDMUX_CMD_H */ +#endif /* _FSL_DPDMUX_CMD_H */
diff --git a/drivers/staging/fsl-dpaa2/evb/dpdmux.c b/drivers/staging/fsl-dpaa2/evb/dpdmux.c
new file mode 100644
index 00000000..f7a87633
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/evb/dpdmux.c +++ b/drivers/staging/fsl-dpaa2/evb/dpdmux.c
@@ -0,0 +1,1112 @@ @@ -0,0 +1,1112 @@
@ -17977,9 +17899,6 @@ index 00000000..f7a87633
+ +
+ return 0; + return 0;
+} +}
diff --git a/drivers/staging/fsl-dpaa2/evb/dpdmux.h b/drivers/staging/fsl-dpaa2/evb/dpdmux.h
new file mode 100644
index 00000000..a6ccc7ef
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/evb/dpdmux.h +++ b/drivers/staging/fsl-dpaa2/evb/dpdmux.h
@@ -0,0 +1,453 @@ @@ -0,0 +1,453 @@
@ -18436,9 +18355,6 @@ index 00000000..a6ccc7ef
+ u16 *minor_ver); + u16 *minor_ver);
+ +
+#endif /* __FSL_DPDMUX_H */ +#endif /* __FSL_DPDMUX_H */
diff --git a/drivers/staging/fsl-dpaa2/evb/evb.c b/drivers/staging/fsl-dpaa2/evb/evb.c
new file mode 100644
index 00000000..9ee09b42
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/evb/evb.c +++ b/drivers/staging/fsl-dpaa2/evb/evb.c
@@ -0,0 +1,1350 @@ @@ -0,0 +1,1350 @@
@ -19792,9 +19708,6 @@ index 00000000..9ee09b42
+ +
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("Layerscape DPAA Edge Virtual Bridge driver (prototype)"); +MODULE_DESCRIPTION("Layerscape DPAA Edge Virtual Bridge driver (prototype)");
diff --git a/drivers/staging/fsl-dpaa2/mac/Kconfig b/drivers/staging/fsl-dpaa2/mac/Kconfig
new file mode 100644
index 00000000..c94f7c1b
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/mac/Kconfig +++ b/drivers/staging/fsl-dpaa2/mac/Kconfig
@@ -0,0 +1,23 @@ @@ -0,0 +1,23 @@
@ -19821,9 +19734,6 @@ index 00000000..c94f7c1b
+ PHYs. + PHYs.
+ . + .
+ Leave disabled if unsure. + Leave disabled if unsure.
diff --git a/drivers/staging/fsl-dpaa2/mac/Makefile b/drivers/staging/fsl-dpaa2/mac/Makefile
new file mode 100644
index 00000000..bda94101
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/mac/Makefile +++ b/drivers/staging/fsl-dpaa2/mac/Makefile
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
@ -19837,9 +19747,6 @@ index 00000000..bda94101
+ +
+clean: +clean:
+ make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
diff --git a/drivers/staging/fsl-dpaa2/mac/dpmac-cmd.h b/drivers/staging/fsl-dpaa2/mac/dpmac-cmd.h
new file mode 100644
index 00000000..abdc3c0d
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/mac/dpmac-cmd.h +++ b/drivers/staging/fsl-dpaa2/mac/dpmac-cmd.h
@@ -0,0 +1,172 @@ @@ -0,0 +1,172 @@
@ -20015,9 +19922,6 @@ index 00000000..abdc3c0d
+}; +};
+ +
+#endif /* _FSL_DPMAC_CMD_H */ +#endif /* _FSL_DPMAC_CMD_H */
diff --git a/drivers/staging/fsl-dpaa2/mac/dpmac.c b/drivers/staging/fsl-dpaa2/mac/dpmac.c
new file mode 100644
index 00000000..f7827423
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/mac/dpmac.c +++ b/drivers/staging/fsl-dpaa2/mac/dpmac.c
@@ -0,0 +1,620 @@ @@ -0,0 +1,620 @@
@ -20641,9 +20545,6 @@ index 00000000..f7827423
+ +
+ return 0; + return 0;
+} +}
diff --git a/drivers/staging/fsl-dpaa2/mac/dpmac.h b/drivers/staging/fsl-dpaa2/mac/dpmac.h
new file mode 100644
index 00000000..32d4ada2
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/mac/dpmac.h +++ b/drivers/staging/fsl-dpaa2/mac/dpmac.h
@@ -0,0 +1,342 @@ @@ -0,0 +1,342 @@
@ -20989,9 +20890,6 @@ index 00000000..32d4ada2
+ u16 *minor_ver); + u16 *minor_ver);
+ +
+#endif /* __FSL_DPMAC_H */ +#endif /* __FSL_DPMAC_H */
diff --git a/drivers/staging/fsl-dpaa2/mac/mac.c b/drivers/staging/fsl-dpaa2/mac/mac.c
new file mode 100644
index 00000000..30169639
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/mac/mac.c +++ b/drivers/staging/fsl-dpaa2/mac/mac.c
@@ -0,0 +1,666 @@ @@ -0,0 +1,666 @@
@ -21661,9 +21559,6 @@ index 00000000..30169639
+ +
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("DPAA2 PHY proxy interface driver"); +MODULE_DESCRIPTION("DPAA2 PHY proxy interface driver");
diff --git a/drivers/staging/fsl-dpaa2/rtc/Makefile b/drivers/staging/fsl-dpaa2/rtc/Makefile
new file mode 100644
index 00000000..541a7acd
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/rtc/Makefile +++ b/drivers/staging/fsl-dpaa2/rtc/Makefile
@@ -0,0 +1,10 @@ @@ -0,0 +1,10 @@
@ -21677,9 +21572,6 @@ index 00000000..541a7acd
+ +
+clean: +clean:
+ make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean + make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
diff --git a/drivers/staging/fsl-dpaa2/rtc/dprtc-cmd.h b/drivers/staging/fsl-dpaa2/rtc/dprtc-cmd.h
new file mode 100644
index 00000000..618c7e54
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/rtc/dprtc-cmd.h +++ b/drivers/staging/fsl-dpaa2/rtc/dprtc-cmd.h
@@ -0,0 +1,160 @@ @@ -0,0 +1,160 @@
@ -21843,9 +21735,6 @@ index 00000000..618c7e54
+}; +};
+#pragma pack(pop) +#pragma pack(pop)
+#endif /* _FSL_DPRTC_CMD_H */ +#endif /* _FSL_DPRTC_CMD_H */
diff --git a/drivers/staging/fsl-dpaa2/rtc/dprtc.c b/drivers/staging/fsl-dpaa2/rtc/dprtc.c
new file mode 100644
index 00000000..399177e4
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/rtc/dprtc.c +++ b/drivers/staging/fsl-dpaa2/rtc/dprtc.c
@@ -0,0 +1,746 @@ @@ -0,0 +1,746 @@
@ -22595,9 +22484,6 @@ index 00000000..399177e4
+ +
+ return 0; + return 0;
+} +}
diff --git a/drivers/staging/fsl-dpaa2/rtc/dprtc.h b/drivers/staging/fsl-dpaa2/rtc/dprtc.h
new file mode 100644
index 00000000..fc96cac6
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/rtc/dprtc.h +++ b/drivers/staging/fsl-dpaa2/rtc/dprtc.h
@@ -0,0 +1,172 @@ @@ -0,0 +1,172 @@
@ -22773,9 +22659,6 @@ index 00000000..fc96cac6
+ uint16_t *minor_ver); + uint16_t *minor_ver);
+ +
+#endif /* __FSL_DPRTC_H */ +#endif /* __FSL_DPRTC_H */
diff --git a/drivers/staging/fsl-dpaa2/rtc/rtc.c b/drivers/staging/fsl-dpaa2/rtc/rtc.c
new file mode 100644
index 00000000..0afc6538
--- /dev/null --- /dev/null
+++ b/drivers/staging/fsl-dpaa2/rtc/rtc.c +++ b/drivers/staging/fsl-dpaa2/rtc/rtc.c
@@ -0,0 +1,243 @@ @@ -0,0 +1,243 @@
@ -23022,6 +22905,3 @@ index 00000000..0afc6538
+ +
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+MODULE_DESCRIPTION("DPAA2 RTC (PTP 1588 clock) driver (prototype)"); +MODULE_DESCRIPTION("DPAA2 RTC (PTP 1588 clock) driver (prototype)");
--
2.14.1

View file

@ -11,8 +11,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/ata/ahci_qoriq.c | 63 ++++++++++++++++++++++++++++++++++++++++++------ drivers/ata/ahci_qoriq.c | 63 ++++++++++++++++++++++++++++++++++++++++++------
1 file changed, 56 insertions(+), 7 deletions(-) 1 file changed, 56 insertions(+), 7 deletions(-)
diff --git a/drivers/ata/ahci_qoriq.c b/drivers/ata/ahci_qoriq.c
index 1eba8dff..2f30a39f 100644
--- a/drivers/ata/ahci_qoriq.c --- a/drivers/ata/ahci_qoriq.c
+++ b/drivers/ata/ahci_qoriq.c +++ b/drivers/ata/ahci_qoriq.c
@@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@
@ -57,7 +55,7 @@ index 1eba8dff..2f30a39f 100644
{}, {},
}; };
MODULE_DEVICE_TABLE(of, ahci_qoriq_of_match); MODULE_DEVICE_TABLE(of, ahci_qoriq_of_match);
@@ -154,6 +163,8 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv) @@ -154,6 +163,8 @@ static int ahci_qoriq_phy_init(struct ah
switch (qpriv->type) { switch (qpriv->type) {
case AHCI_LS1021A: case AHCI_LS1021A:
@ -66,7 +64,7 @@ index 1eba8dff..2f30a39f 100644
writel(SATA_ECC_DISABLE, qpriv->ecc_addr); writel(SATA_ECC_DISABLE, qpriv->ecc_addr);
writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1); writel(AHCI_PORT_PHY_1_CFG, reg_base + PORT_PHY1);
writel(LS1021A_PORT_PHY2, reg_base + PORT_PHY2); writel(LS1021A_PORT_PHY2, reg_base + PORT_PHY2);
@@ -161,19 +172,56 @@ static int ahci_qoriq_phy_init(struct ahci_host_priv *hpriv) @@ -161,19 +172,56 @@ static int ahci_qoriq_phy_init(struct ah
writel(LS1021A_PORT_PHY4, reg_base + PORT_PHY4); writel(LS1021A_PORT_PHY4, reg_base + PORT_PHY4);
writel(LS1021A_PORT_PHY5, reg_base + PORT_PHY5); writel(LS1021A_PORT_PHY5, reg_base + PORT_PHY5);
writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS); writel(AHCI_PORT_TRANS_CFG, reg_base + PORT_TRANS);
@ -126,7 +124,7 @@ index 1eba8dff..2f30a39f 100644
break; break;
} }
@@ -204,13 +252,14 @@ static int ahci_qoriq_probe(struct platform_device *pdev) @@ -204,13 +252,14 @@ static int ahci_qoriq_probe(struct platf
qoriq_priv->type = (enum ahci_qoriq_type)of_id->data; qoriq_priv->type = (enum ahci_qoriq_type)of_id->data;
@ -144,6 +142,3 @@ index 1eba8dff..2f30a39f 100644
rc = ahci_platform_enable_resources(hpriv); rc = ahci_platform_enable_resources(hpriv);
if (rc) if (rc)
--
2.14.1

View file

@ -13,8 +13,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/clk/clk-qoriq.c | 170 ++++++++++++++++++++++++++++++++++++++++++++---- drivers/clk/clk-qoriq.c | 170 ++++++++++++++++++++++++++++++++++++++++++++----
1 file changed, 156 insertions(+), 14 deletions(-) 1 file changed, 156 insertions(+), 14 deletions(-)
diff --git a/drivers/clk/clk-qoriq.c b/drivers/clk/clk-qoriq.c
index 80ae2a51..0e7de00a 100644
--- a/drivers/clk/clk-qoriq.c --- a/drivers/clk/clk-qoriq.c
+++ b/drivers/clk/clk-qoriq.c +++ b/drivers/clk/clk-qoriq.c
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
@ -34,7 +32,7 @@ index 80ae2a51..0e7de00a 100644
struct clockgen_pll pll[6]; struct clockgen_pll pll[6];
struct clk *cmux[NUM_CMUX]; struct clk *cmux[NUM_CMUX];
struct clk *hwaccel[NUM_HWACCEL]; struct clk *hwaccel[NUM_HWACCEL];
@@ -266,6 +267,39 @@ static const struct clockgen_muxinfo ls1043a_hwa2 = { @@ -266,6 +267,39 @@ static const struct clockgen_muxinfo ls1
}, },
}; };
@ -74,11 +72,10 @@ index 80ae2a51..0e7de00a 100644
static const struct clockgen_muxinfo t1023_hwa1 = { static const struct clockgen_muxinfo t1023_hwa1 = {
{ {
{}, {},
@@ -488,6 +522,42 @@ static const struct clockgen_chipinfo chipinfo[] = { @@ -489,6 +523,42 @@ static const struct clockgen_chipinfo ch
.pll_mask = 0x07,
.flags = CG_PLL_8BIT, .flags = CG_PLL_8BIT,
}, },
+ { {
+ .compat = "fsl,ls1046a-clockgen", + .compat = "fsl,ls1046a-clockgen",
+ .init_periph = t2080_init_periph, + .init_periph = t2080_init_periph,
+ .cmux_groups = { + .cmux_groups = {
@ -114,10 +111,11 @@ index 80ae2a51..0e7de00a 100644
+ }, + },
+ .pll_mask = 0x03, + .pll_mask = 0x03,
+ }, + },
{ + {
.compat = "fsl,ls2080a-clockgen", .compat = "fsl,ls2080a-clockgen",
.cmux_groups = { .cmux_groups = {
@@ -846,7 +916,12 @@ static void __init create_muxes(struct clockgen *cg) &clockgen2_cmux_cga12, &clockgen2_cmux_cgb
@@ -846,7 +916,12 @@ static void __init create_muxes(struct c
static void __init clockgen_init(struct device_node *np); static void __init clockgen_init(struct device_node *np);
@ -154,7 +152,7 @@ index 80ae2a51..0e7de00a 100644
0, 1, 1); 0, 1, 1);
if (IS_ERR(clk)) if (IS_ERR(clk))
pr_err("%s: Couldn't register %s: %ld\n", __func__, name, pr_err("%s: Couldn't register %s: %ld\n", __func__, name,
@@ -907,6 +977,29 @@ static struct clk *sysclk_from_parent(const char *name) @@ -907,6 +977,29 @@ static struct clk *sysclk_from_parent(co
return clk; return clk;
} }
@ -184,7 +182,7 @@ index 80ae2a51..0e7de00a 100644
static struct clk * __init create_sysclk(const char *name) static struct clk * __init create_sysclk(const char *name)
{ {
struct device_node *sysclk; struct device_node *sysclk;
@@ -916,7 +1009,11 @@ static struct clk * __init create_sysclk(const char *name) @@ -916,7 +1009,11 @@ static struct clk * __init create_sysclk
if (!IS_ERR(clk)) if (!IS_ERR(clk))
return clk; return clk;
@ -197,7 +195,7 @@ index 80ae2a51..0e7de00a 100644
if (!IS_ERR(clk)) if (!IS_ERR(clk))
return clk; return clk;
@@ -927,7 +1024,27 @@ static struct clk * __init create_sysclk(const char *name) @@ -927,7 +1024,27 @@ static struct clk * __init create_sysclk
return clk; return clk;
} }
@ -226,7 +224,7 @@ index 80ae2a51..0e7de00a 100644
return NULL; return NULL;
} }
@@ -950,11 +1067,19 @@ static void __init create_one_pll(struct clockgen *cg, int idx) @@ -950,11 +1067,19 @@ static void __init create_one_pll(struct
u32 __iomem *reg; u32 __iomem *reg;
u32 mult; u32 mult;
struct clockgen_pll *pll = &cg->pll[idx]; struct clockgen_pll *pll = &cg->pll[idx];
@ -246,7 +244,7 @@ index 80ae2a51..0e7de00a 100644
if (cg->info.flags & CG_VER3) { if (cg->info.flags & CG_VER3) {
switch (idx) { switch (idx) {
case PLATFORM_PLL: case PLATFORM_PLL:
@@ -1000,12 +1125,13 @@ static void __init create_one_pll(struct clockgen *cg, int idx) @@ -1000,12 +1125,13 @@ static void __init create_one_pll(struct
for (i = 0; i < ARRAY_SIZE(pll->div); i++) { for (i = 0; i < ARRAY_SIZE(pll->div); i++) {
struct clk *clk; struct clk *clk;
@ -261,7 +259,7 @@ index 80ae2a51..0e7de00a 100644
if (IS_ERR(clk)) { if (IS_ERR(clk)) {
pr_err("%s: %s: register failed %ld\n", pr_err("%s: %s: register failed %ld\n",
__func__, pll->div[i].name, PTR_ERR(clk)); __func__, pll->div[i].name, PTR_ERR(clk));
@@ -1013,6 +1139,11 @@ static void __init create_one_pll(struct clockgen *cg, int idx) @@ -1013,6 +1139,11 @@ static void __init create_one_pll(struct
} }
pll->div[i].clk = clk; pll->div[i].clk = clk;
@ -273,7 +271,7 @@ index 80ae2a51..0e7de00a 100644
} }
} }
@@ -1142,6 +1273,13 @@ static struct clk *clockgen_clk_get(struct of_phandle_args *clkspec, void *data) @@ -1142,6 +1273,13 @@ static struct clk *clockgen_clk_get(stru
goto bad_args; goto bad_args;
clk = pll->div[idx].clk; clk = pll->div[idx].clk;
break; break;
@ -287,7 +285,7 @@ index 80ae2a51..0e7de00a 100644
default: default:
goto bad_args; goto bad_args;
} }
@@ -1253,6 +1391,7 @@ static void __init clockgen_init(struct device_node *np) @@ -1253,6 +1391,7 @@ static void __init clockgen_init(struct
clockgen.info.flags |= CG_CMUX_GE_PLAT; clockgen.info.flags |= CG_CMUX_GE_PLAT;
clockgen.sysclk = create_sysclk("cg-sysclk"); clockgen.sysclk = create_sysclk("cg-sysclk");
@ -295,7 +293,7 @@ index 80ae2a51..0e7de00a 100644
create_plls(&clockgen); create_plls(&clockgen);
create_muxes(&clockgen); create_muxes(&clockgen);
@@ -1273,8 +1412,11 @@ static void __init clockgen_init(struct device_node *np) @@ -1273,8 +1412,11 @@ err:
CLK_OF_DECLARE(qoriq_clockgen_1, "fsl,qoriq-clockgen-1.0", clockgen_init); CLK_OF_DECLARE(qoriq_clockgen_1, "fsl,qoriq-clockgen-1.0", clockgen_init);
CLK_OF_DECLARE(qoriq_clockgen_2, "fsl,qoriq-clockgen-2.0", clockgen_init); CLK_OF_DECLARE(qoriq_clockgen_2, "fsl,qoriq-clockgen-2.0", clockgen_init);
@ -307,6 +305,3 @@ index 80ae2a51..0e7de00a 100644
CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init); CLK_OF_DECLARE(qoriq_clockgen_ls2080a, "fsl,ls2080a-clockgen", clockgen_init);
/* Legacy nodes */ /* Legacy nodes */
--
2.14.1

View file

@ -13,8 +13,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/firmware/psci.c | 12 ++- drivers/firmware/psci.c | 12 ++-
3 files changed, 77 insertions(+), 113 deletions(-) 3 files changed, 77 insertions(+), 113 deletions(-)
diff --git a/drivers/cpufreq/Kconfig b/drivers/cpufreq/Kconfig
index d8b164a7..bc9264c7 100644
--- a/drivers/cpufreq/Kconfig --- a/drivers/cpufreq/Kconfig
+++ b/drivers/cpufreq/Kconfig +++ b/drivers/cpufreq/Kconfig
@@ -332,7 +332,7 @@ endif @@ -332,7 +332,7 @@ endif
@ -26,8 +24,6 @@ index d8b164a7..bc9264c7 100644
depends on !CPU_THERMAL || THERMAL depends on !CPU_THERMAL || THERMAL
select CLK_QORIQ select CLK_QORIQ
help help
diff --git a/drivers/cpufreq/qoriq-cpufreq.c b/drivers/cpufreq/qoriq-cpufreq.c
index 53d8c3fb..e2ea433a 100644
--- a/drivers/cpufreq/qoriq-cpufreq.c --- a/drivers/cpufreq/qoriq-cpufreq.c
+++ b/drivers/cpufreq/qoriq-cpufreq.c +++ b/drivers/cpufreq/qoriq-cpufreq.c
@@ -11,6 +11,7 @@ @@ -11,6 +11,7 @@
@ -151,7 +147,7 @@ index 53d8c3fb..e2ea433a 100644
if (!cpu_present(cpu)) if (!cpu_present(cpu))
return NULL; return NULL;
@@ -112,37 +87,28 @@ static struct device_node *cpu_to_clk_node(int cpu) @@ -112,37 +87,28 @@ static struct device_node *cpu_to_clk_no
if (!np) if (!np)
return NULL; return NULL;
@ -197,7 +193,7 @@ index 53d8c3fb..e2ea433a 100644
} }
/* reduce the duplicated frequencies in frequency table */ /* reduce the duplicated frequencies in frequency table */
@@ -198,10 +164,11 @@ static void freq_table_sort(struct cpufreq_frequency_table *freq_table, @@ -198,10 +164,11 @@ static void freq_table_sort(struct cpufr
static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy)
{ {
@ -211,7 +207,7 @@ index 53d8c3fb..e2ea433a 100644
struct cpufreq_frequency_table *table; struct cpufreq_frequency_table *table;
struct cpu_data *data; struct cpu_data *data;
unsigned int cpu = policy->cpu; unsigned int cpu = policy->cpu;
@@ -221,17 +188,13 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) @@ -221,17 +188,13 @@ static int qoriq_cpufreq_cpu_init(struct
goto err_nomem2; goto err_nomem2;
} }
@ -232,7 +228,7 @@ index 53d8c3fb..e2ea433a 100644
} }
table = kcalloc(count + 1, sizeof(*table), GFP_KERNEL); table = kcalloc(count + 1, sizeof(*table), GFP_KERNEL);
@@ -240,23 +203,11 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) @@ -240,23 +203,11 @@ static int qoriq_cpufreq_cpu_init(struct
goto err_pclk; goto err_pclk;
} }
@ -258,7 +254,7 @@ index 53d8c3fb..e2ea433a 100644
table[i].driver_data = i; table[i].driver_data = i;
} }
freq_table_redup(table, count); freq_table_redup(table, count);
@@ -282,7 +233,6 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) @@ -282,7 +233,6 @@ static int qoriq_cpufreq_cpu_init(struct
policy->cpuinfo.transition_latency = u64temp + 1; policy->cpuinfo.transition_latency = u64temp + 1;
of_node_put(np); of_node_put(np);
@ -266,7 +262,7 @@ index 53d8c3fb..e2ea433a 100644
return 0; return 0;
@@ -290,10 +240,7 @@ static int qoriq_cpufreq_cpu_init(struct cpufreq_policy *policy) @@ -290,10 +240,7 @@ err_nomem1:
kfree(table); kfree(table);
err_pclk: err_pclk:
kfree(data->pclk); kfree(data->pclk);
@ -277,7 +273,7 @@ index 53d8c3fb..e2ea433a 100644
kfree(data); kfree(data);
err_np: err_np:
of_node_put(np); of_node_put(np);
@@ -357,12 +304,25 @@ static struct cpufreq_driver qoriq_cpufreq_driver = { @@ -357,12 +304,25 @@ static struct cpufreq_driver qoriq_cpufr
.attr = cpufreq_generic_attr, .attr = cpufreq_generic_attr,
}; };
@ -308,7 +304,7 @@ index 53d8c3fb..e2ea433a 100644
{ .compatible = "fsl,qoriq-clockgen-2.0", }, { .compatible = "fsl,qoriq-clockgen-2.0", },
{} {}
}; };
@@ -380,16 +340,12 @@ static int __init qoriq_cpufreq_init(void) @@ -380,16 +340,12 @@ static int __init qoriq_cpufreq_init(voi
match = of_match_node(node_matches, np); match = of_match_node(node_matches, np);
data = match->data; data = match->data;
@ -328,11 +324,9 @@ index 53d8c3fb..e2ea433a 100644
ret = cpufreq_register_driver(&qoriq_cpufreq_driver); ret = cpufreq_register_driver(&qoriq_cpufreq_driver);
if (!ret) if (!ret)
pr_info("Freescale QorIQ CPU frequency scaling driver\n"); pr_info("Freescale QorIQ CPU frequency scaling driver\n");
diff --git a/drivers/firmware/psci.c b/drivers/firmware/psci.c
index 8263429e..323c9fc0 100644
--- a/drivers/firmware/psci.c --- a/drivers/firmware/psci.c
+++ b/drivers/firmware/psci.c +++ b/drivers/firmware/psci.c
@@ -418,8 +418,12 @@ CPUIDLE_METHOD_OF_DECLARE(psci, "psci", &psci_cpuidle_ops); @@ -418,8 +418,12 @@ CPUIDLE_METHOD_OF_DECLARE(psci, "psci",
static int psci_system_suspend(unsigned long unused) static int psci_system_suspend(unsigned long unused)
{ {
@ -347,7 +341,7 @@ index 8263429e..323c9fc0 100644
} }
static int psci_system_suspend_enter(suspend_state_t state) static int psci_system_suspend_enter(suspend_state_t state)
@@ -439,6 +443,8 @@ static void __init psci_init_system_suspend(void) @@ -439,6 +443,8 @@ static void __init psci_init_system_susp
if (!IS_ENABLED(CONFIG_SUSPEND)) if (!IS_ENABLED(CONFIG_SUSPEND))
return; return;
@ -356,7 +350,7 @@ index 8263429e..323c9fc0 100644
ret = psci_features(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND)); ret = psci_features(PSCI_FN_NATIVE(1_0, SYSTEM_SUSPEND));
if (ret != PSCI_RET_NOT_SUPPORTED) if (ret != PSCI_RET_NOT_SUPPORTED)
@@ -516,6 +522,8 @@ static void __init psci_0_2_set_functions(void) @@ -516,6 +522,8 @@ static void __init psci_0_2_set_function
arm_pm_restart = psci_sys_reset; arm_pm_restart = psci_sys_reset;
pm_power_off = psci_sys_poweroff; pm_power_off = psci_sys_poweroff;
@ -365,6 +359,3 @@ index 8263429e..323c9fc0 100644
} }
/* /*
--
2.14.1

View file

@ -28,8 +28,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
create mode 100644 drivers/dma/dpaa2-qdma/fsl_dpdmai_cmd.h create mode 100644 drivers/dma/dpaa2-qdma/fsl_dpdmai_cmd.h
create mode 100644 drivers/dma/fsl-qdma.c create mode 100644 drivers/dma/fsl-qdma.c
diff --git a/drivers/dma/Kconfig b/drivers/dma/Kconfig
index 141aefbe..e5b0fb0b 100644
--- a/drivers/dma/Kconfig --- a/drivers/dma/Kconfig
+++ b/drivers/dma/Kconfig +++ b/drivers/dma/Kconfig
@@ -192,6 +192,20 @@ config FSL_EDMA @@ -192,6 +192,20 @@ config FSL_EDMA
@ -53,8 +51,6 @@ index 141aefbe..e5b0fb0b 100644
config FSL_RAID config FSL_RAID
tristate "Freescale RAID engine Support" tristate "Freescale RAID engine Support"
depends on FSL_SOC && !ASYNC_TX_ENABLE_CHANNEL_SWITCH depends on FSL_SOC && !ASYNC_TX_ENABLE_CHANNEL_SWITCH
diff --git a/drivers/dma/Makefile b/drivers/dma/Makefile
index e4dc9cac..1226cbb4 100644
--- a/drivers/dma/Makefile --- a/drivers/dma/Makefile
+++ b/drivers/dma/Makefile +++ b/drivers/dma/Makefile
@@ -29,6 +29,8 @@ obj-$(CONFIG_DW_DMAC_CORE) += dw/ @@ -29,6 +29,8 @@ obj-$(CONFIG_DW_DMAC_CORE) += dw/
@ -66,9 +62,6 @@ index e4dc9cac..1226cbb4 100644
obj-$(CONFIG_FSL_RAID) += fsl_raid.o obj-$(CONFIG_FSL_RAID) += fsl_raid.o
obj-$(CONFIG_HSU_DMA) += hsu/ obj-$(CONFIG_HSU_DMA) += hsu/
obj-$(CONFIG_IMG_MDC_DMA) += img-mdc-dma.o obj-$(CONFIG_IMG_MDC_DMA) += img-mdc-dma.o
diff --git a/drivers/dma/dpaa2-qdma/Kconfig b/drivers/dma/dpaa2-qdma/Kconfig
new file mode 100644
index 00000000..084e34bf
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/Kconfig +++ b/drivers/dma/dpaa2-qdma/Kconfig
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
@ -80,9 +73,6 @@ index 00000000..084e34bf
+ ---help--- + ---help---
+ NXP Data Path Acceleration Architecture 2 QDMA driver, + NXP Data Path Acceleration Architecture 2 QDMA driver,
+ using the NXP MC bus driver. + using the NXP MC bus driver.
diff --git a/drivers/dma/dpaa2-qdma/Makefile b/drivers/dma/dpaa2-qdma/Makefile
new file mode 100644
index 00000000..ba599ac6
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/Makefile +++ b/drivers/dma/dpaa2-qdma/Makefile
@@ -0,0 +1,8 @@ @@ -0,0 +1,8 @@
@ -94,9 +84,6 @@ index 00000000..ba599ac6
+obj-$(CONFIG_FSL_DPAA2_QDMA) += fsl-dpaa2-qdma.o +obj-$(CONFIG_FSL_DPAA2_QDMA) += fsl-dpaa2-qdma.o
+ +
+fsl-dpaa2-qdma-objs := dpaa2-qdma.o dpdmai.o +fsl-dpaa2-qdma-objs := dpaa2-qdma.o dpdmai.o
diff --git a/drivers/dma/dpaa2-qdma/dpaa2-qdma.c b/drivers/dma/dpaa2-qdma/dpaa2-qdma.c
new file mode 100644
index 00000000..ad6b03f7
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/dpaa2-qdma.c +++ b/drivers/dma/dpaa2-qdma/dpaa2-qdma.c
@@ -0,0 +1,986 @@ @@ -0,0 +1,986 @@
@ -1086,9 +1073,6 @@ index 00000000..ad6b03f7
+ +
+MODULE_DESCRIPTION("NXP DPAA2 qDMA driver"); +MODULE_DESCRIPTION("NXP DPAA2 qDMA driver");
+MODULE_LICENSE("Dual BSD/GPL"); +MODULE_LICENSE("Dual BSD/GPL");
diff --git a/drivers/dma/dpaa2-qdma/dpaa2-qdma.h b/drivers/dma/dpaa2-qdma/dpaa2-qdma.h
new file mode 100644
index 00000000..71a00db8
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/dpaa2-qdma.h +++ b/drivers/dma/dpaa2-qdma/dpaa2-qdma.h
@@ -0,0 +1,262 @@ @@ -0,0 +1,262 @@
@ -1354,9 +1338,6 @@ index 00000000..71a00db8
+#define SG_POOL_SIZE (sizeof(struct qdma_sg_blk) +\ +#define SG_POOL_SIZE (sizeof(struct qdma_sg_blk) +\
+ sizeof(struct dpaa2_qdma_sg) * NUM_SG_PER_BLK) + sizeof(struct dpaa2_qdma_sg) * NUM_SG_PER_BLK)
+#endif /* __DPAA2_QDMA_H */ +#endif /* __DPAA2_QDMA_H */
diff --git a/drivers/dma/dpaa2-qdma/dpdmai.c b/drivers/dma/dpaa2-qdma/dpdmai.c
new file mode 100644
index 00000000..ad13fc1e
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/dpdmai.c +++ b/drivers/dma/dpaa2-qdma/dpdmai.c
@@ -0,0 +1,454 @@ @@ -0,0 +1,454 @@
@ -1814,9 +1795,6 @@ index 00000000..ad13fc1e
+ +
+ return 0; + return 0;
+} +}
diff --git a/drivers/dma/dpaa2-qdma/fsl_dpdmai.h b/drivers/dma/dpaa2-qdma/fsl_dpdmai.h
new file mode 100644
index 00000000..e931ce16
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/fsl_dpdmai.h +++ b/drivers/dma/dpaa2-qdma/fsl_dpdmai.h
@@ -0,0 +1,521 @@ @@ -0,0 +1,521 @@
@ -2341,9 +2319,6 @@ index 00000000..e931ce16
+ struct dpdmai_tx_queue_attr *attr); + struct dpdmai_tx_queue_attr *attr);
+ +
+#endif /* __FSL_DPDMAI_H */ +#endif /* __FSL_DPDMAI_H */
diff --git a/drivers/dma/dpaa2-qdma/fsl_dpdmai_cmd.h b/drivers/dma/dpaa2-qdma/fsl_dpdmai_cmd.h
new file mode 100644
index 00000000..7d403c01
--- /dev/null --- /dev/null
+++ b/drivers/dma/dpaa2-qdma/fsl_dpdmai_cmd.h +++ b/drivers/dma/dpaa2-qdma/fsl_dpdmai_cmd.h
@@ -0,0 +1,222 @@ @@ -0,0 +1,222 @@
@ -2569,9 +2544,6 @@ index 00000000..7d403c01
+ MC_RSP_OP(cmd, 1, 0, 32, uint32_t, attr->fqid) + MC_RSP_OP(cmd, 1, 0, 32, uint32_t, attr->fqid)
+ +
+#endif /* _FSL_DPDMAI_CMD_H */ +#endif /* _FSL_DPDMAI_CMD_H */
diff --git a/drivers/dma/fsl-qdma.c b/drivers/dma/fsl-qdma.c
new file mode 100644
index 00000000..6c4c2813
--- /dev/null --- /dev/null
+++ b/drivers/dma/fsl-qdma.c +++ b/drivers/dma/fsl-qdma.c
@@ -0,0 +1,1201 @@ @@ -0,0 +1,1201 @@
@ -3776,6 +3748,3 @@ index 00000000..6c4c2813
+MODULE_ALIAS("platform:fsl-qdma"); +MODULE_ALIAS("platform:fsl-qdma");
+MODULE_DESCRIPTION("Freescale qDMA engine driver"); +MODULE_DESCRIPTION("Freescale qDMA engine driver");
+MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL v2");
--
2.14.1

View file

@ -14,11 +14,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
2 files changed, 290 insertions(+), 4 deletions(-) 2 files changed, 290 insertions(+), 4 deletions(-)
create mode 100644 drivers/soc/fsl/layerscape/ftm_alarm.c create mode 100644 drivers/soc/fsl/layerscape/ftm_alarm.c
diff --git a/drivers/clocksource/fsl_ftm_timer.c b/drivers/clocksource/fsl_ftm_timer.c
index 738515b8..770bbbca 100644
--- a/drivers/clocksource/fsl_ftm_timer.c --- a/drivers/clocksource/fsl_ftm_timer.c
+++ b/drivers/clocksource/fsl_ftm_timer.c +++ b/drivers/clocksource/fsl_ftm_timer.c
@@ -83,11 +83,11 @@ static inline void ftm_counter_disable(void __iomem *base) @@ -83,11 +83,11 @@ static inline void ftm_counter_disable(v
static inline void ftm_irq_acknowledge(void __iomem *base) static inline void ftm_irq_acknowledge(void __iomem *base)
{ {
@ -34,9 +32,6 @@ index 738515b8..770bbbca 100644
} }
static inline void ftm_irq_enable(void __iomem *base) static inline void ftm_irq_enable(void __iomem *base)
diff --git a/drivers/soc/fsl/layerscape/ftm_alarm.c b/drivers/soc/fsl/layerscape/ftm_alarm.c
new file mode 100644
index 00000000..6f9882ff
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/layerscape/ftm_alarm.c +++ b/drivers/soc/fsl/layerscape/ftm_alarm.c
@@ -0,0 +1,286 @@ @@ -0,0 +1,286 @@
@ -326,6 +321,3 @@ index 00000000..6f9882ff
+ return platform_driver_register(&ftm_alarm_driver); + return platform_driver_register(&ftm_alarm_driver);
+} +}
+device_initcall(ftm_alarm_init); +device_initcall(ftm_alarm_init);
--
2.14.1

View file

@ -11,11 +11,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 18 ++++++++++++++++-- drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-) 1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
index cc2fde2a..54f60ba1 100644
--- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c --- a/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
+++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c +++ b/drivers/gpu/drm/fsl-dcu/fsl_dcu_drm_drv.c
@@ -225,7 +225,6 @@ static int fsl_dcu_drm_pm_suspend(struct device *dev) @@ -225,7 +225,6 @@ static int fsl_dcu_drm_pm_suspend(struct
if (!fsl_dev) if (!fsl_dev)
return 0; return 0;
@ -23,7 +21,7 @@ index cc2fde2a..54f60ba1 100644
drm_kms_helper_poll_disable(fsl_dev->drm); drm_kms_helper_poll_disable(fsl_dev->drm);
console_lock(); console_lock();
@@ -243,6 +242,8 @@ static int fsl_dcu_drm_pm_suspend(struct device *dev) @@ -243,6 +242,8 @@ static int fsl_dcu_drm_pm_suspend(struct
return PTR_ERR(fsl_dev->state); return PTR_ERR(fsl_dev->state);
} }
@ -32,7 +30,7 @@ index cc2fde2a..54f60ba1 100644
clk_disable_unprepare(fsl_dev->pix_clk); clk_disable_unprepare(fsl_dev->pix_clk);
clk_disable_unprepare(fsl_dev->clk); clk_disable_unprepare(fsl_dev->clk);
@@ -263,6 +264,14 @@ static int fsl_dcu_drm_pm_resume(struct device *dev) @@ -263,6 +264,14 @@ static int fsl_dcu_drm_pm_resume(struct
return ret; return ret;
} }
@ -47,7 +45,7 @@ index cc2fde2a..54f60ba1 100644
if (fsl_dev->tcon) if (fsl_dev->tcon)
fsl_tcon_bypass_enable(fsl_dev->tcon); fsl_tcon_bypass_enable(fsl_dev->tcon);
fsl_dcu_drm_init_planes(fsl_dev->drm); fsl_dcu_drm_init_planes(fsl_dev->drm);
@@ -273,7 +282,6 @@ static int fsl_dcu_drm_pm_resume(struct device *dev) @@ -273,7 +282,6 @@ static int fsl_dcu_drm_pm_resume(struct
console_unlock(); console_unlock();
drm_kms_helper_poll_enable(fsl_dev->drm); drm_kms_helper_poll_enable(fsl_dev->drm);
@ -55,7 +53,7 @@ index cc2fde2a..54f60ba1 100644
return 0; return 0;
} }
@@ -389,6 +397,12 @@ static int fsl_dcu_drm_probe(struct platform_device *pdev) @@ -389,6 +397,12 @@ static int fsl_dcu_drm_probe(struct plat
goto disable_clk; goto disable_clk;
} }
@ -68,6 +66,3 @@ index cc2fde2a..54f60ba1 100644
fsl_dev->tcon = fsl_tcon_init(dev); fsl_dev->tcon = fsl_tcon_init(dev);
drm = drm_dev_alloc(driver, dev); drm = drm_dev_alloc(driver, dev);
--
2.14.1

View file

@ -16,11 +16,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
3 files changed, 323 insertions(+), 52 deletions(-) 3 files changed, 323 insertions(+), 52 deletions(-)
create mode 100644 drivers/soc/fsl/guts.c create mode 100644 drivers/soc/fsl/guts.c
diff --git a/drivers/base/soc.c b/drivers/base/soc.c
index 0c5cf872..0e701e22 100644
--- a/drivers/base/soc.c --- a/drivers/base/soc.c
+++ b/drivers/base/soc.c +++ b/drivers/base/soc.c
@@ -167,19 +167,23 @@ static int soc_device_match_one(struct device *dev, void *arg) @@ -167,19 +167,23 @@ static int soc_device_match_one(struct d
const struct soc_device_attribute *match = arg; const struct soc_device_attribute *match = arg;
if (match->machine && if (match->machine &&
@ -48,9 +46,6 @@ index 0c5cf872..0e701e22 100644
return 0; return 0;
return 1; return 1;
diff --git a/drivers/soc/fsl/guts.c b/drivers/soc/fsl/guts.c
new file mode 100644
index 00000000..7d28784a
--- /dev/null --- /dev/null
+++ b/drivers/soc/fsl/guts.c +++ b/drivers/soc/fsl/guts.c
@@ -0,0 +1,238 @@ @@ -0,0 +1,238 @@
@ -292,8 +287,6 @@ index 00000000..7d28784a
+ platform_driver_unregister(&fsl_guts_driver); + platform_driver_unregister(&fsl_guts_driver);
+} +}
+module_exit(fsl_guts_exit); +module_exit(fsl_guts_exit);
diff --git a/include/linux/fsl/guts.h b/include/linux/fsl/guts.h
index 649e9171..3efa3b86 100644
--- a/include/linux/fsl/guts.h --- a/include/linux/fsl/guts.h
+++ b/include/linux/fsl/guts.h +++ b/include/linux/fsl/guts.h
@@ -29,83 +29,112 @@ @@ -29,83 +29,112 @@
@ -457,6 +450,3 @@ index 649e9171..3efa3b86 100644
/* Alternate function signal multiplex control */ /* Alternate function signal multiplex control */
#define MPC85xx_PMUXCR_QE(x) (0x8000 >> (x)) #define MPC85xx_PMUXCR_QE(x) (0x8000 >> (x))
--
2.14.1

View file

@ -13,11 +13,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/i2c/muxes/i2c-mux-pca954x.c | 43 +++++++++++++++++++++++++++++++++++++ drivers/i2c/muxes/i2c-mux-pca954x.c | 43 +++++++++++++++++++++++++++++++++++++
2 files changed, 52 insertions(+), 1 deletion(-) 2 files changed, 52 insertions(+), 1 deletion(-)
diff --git a/drivers/i2c/busses/i2c-imx.c b/drivers/i2c/busses/i2c-imx.c
index 47fc1f1a..a35c366b 100644
--- a/drivers/i2c/busses/i2c-imx.c --- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c +++ b/drivers/i2c/busses/i2c-imx.c
@@ -889,6 +889,14 @@ static int i2c_imx_xfer(struct i2c_adapter *adapter, @@ -889,6 +889,14 @@ static int i2c_imx_xfer(struct i2c_adapt
dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__); dev_dbg(&i2c_imx->adapter.dev, "<%s>\n", __func__);
@ -32,7 +30,7 @@ index 47fc1f1a..a35c366b 100644
result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent); result = pm_runtime_get_sync(i2c_imx->adapter.dev.parent);
if (result < 0) if (result < 0)
goto out; goto out;
@@ -1100,7 +1108,7 @@ static int i2c_imx_probe(struct platform_device *pdev) @@ -1100,7 +1108,7 @@ static int i2c_imx_probe(struct platform
} }
/* Request IRQ */ /* Request IRQ */
@ -41,8 +39,6 @@ index 47fc1f1a..a35c366b 100644
pdev->name, i2c_imx); pdev->name, i2c_imx);
if (ret) { if (ret) {
dev_err(&pdev->dev, "can't claim irq %d\n", irq); dev_err(&pdev->dev, "can't claim irq %d\n", irq);
diff --git a/drivers/i2c/muxes/i2c-mux-pca954x.c b/drivers/i2c/muxes/i2c-mux-pca954x.c
index 9c4ac26c..3c27ab84 100644
--- a/drivers/i2c/muxes/i2c-mux-pca954x.c --- a/drivers/i2c/muxes/i2c-mux-pca954x.c
+++ b/drivers/i2c/muxes/i2c-mux-pca954x.c +++ b/drivers/i2c/muxes/i2c-mux-pca954x.c
@@ -74,6 +74,7 @@ struct pca954x { @@ -74,6 +74,7 @@ struct pca954x {
@ -53,7 +49,7 @@ index 9c4ac26c..3c27ab84 100644
}; };
/* Provide specs for the PCA954x types we know about */ /* Provide specs for the PCA954x types we know about */
@@ -196,6 +197,13 @@ static int pca954x_deselect_mux(struct i2c_mux_core *muxc, u32 chan) @@ -196,6 +197,13 @@ static int pca954x_deselect_mux(struct i
if (!(data->deselect & (1 << chan))) if (!(data->deselect & (1 << chan)))
return 0; return 0;
@ -67,7 +63,7 @@ index 9c4ac26c..3c27ab84 100644
/* Deselect active channel */ /* Deselect active channel */
data->last_chan = 0; data->last_chan = 0;
return pca954x_reg_write(muxc->parent, client, data->last_chan); return pca954x_reg_write(muxc->parent, client, data->last_chan);
@@ -228,6 +236,28 @@ static int pca954x_probe(struct i2c_client *client, @@ -228,6 +236,28 @@ static int pca954x_probe(struct i2c_clie
return -ENOMEM; return -ENOMEM;
data = i2c_mux_priv(muxc); data = i2c_mux_priv(muxc);
@ -96,7 +92,7 @@ index 9c4ac26c..3c27ab84 100644
i2c_set_clientdata(client, muxc); i2c_set_clientdata(client, muxc);
data->client = client; data->client = client;
@@ -240,11 +270,16 @@ static int pca954x_probe(struct i2c_client *client, @@ -240,11 +270,16 @@ static int pca954x_probe(struct i2c_clie
* that the mux is in fact present. This also * that the mux is in fact present. This also
* initializes the mux to disconnected state. * initializes the mux to disconnected state.
*/ */
@ -113,7 +109,7 @@ index 9c4ac26c..3c27ab84 100644
match = of_match_device(of_match_ptr(pca954x_of_match), &client->dev); match = of_match_device(of_match_ptr(pca954x_of_match), &client->dev);
if (match) if (match)
data->chip = of_device_get_match_data(&client->dev); data->chip = of_device_get_match_data(&client->dev);
@@ -252,6 +287,7 @@ static int pca954x_probe(struct i2c_client *client, @@ -252,6 +287,7 @@ static int pca954x_probe(struct i2c_clie
data->chip = &chips[id->driver_data]; data->chip = &chips[id->driver_data];
data->last_chan = 0; /* force the first selection */ data->last_chan = 0; /* force the first selection */
@ -121,7 +117,7 @@ index 9c4ac26c..3c27ab84 100644
idle_disconnect_dt = of_node && idle_disconnect_dt = of_node &&
of_property_read_bool(of_node, "i2c-mux-idle-disconnect"); of_property_read_bool(of_node, "i2c-mux-idle-disconnect");
@@ -312,6 +348,13 @@ static int pca954x_resume(struct device *dev) @@ -312,6 +348,13 @@ static int pca954x_resume(struct device
struct i2c_mux_core *muxc = i2c_get_clientdata(client); struct i2c_mux_core *muxc = i2c_get_clientdata(client);
struct pca954x *data = i2c_mux_priv(muxc); struct pca954x *data = i2c_mux_priv(muxc);
@ -135,6 +131,3 @@ index 9c4ac26c..3c27ab84 100644
data->last_chan = 0; data->last_chan = 0;
return i2c_smbus_write_byte(client, 0); return i2c_smbus_write_byte(client, 0);
} }
--
2.14.1

View file

@ -23,11 +23,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
include/linux/iommu.h | 55 +++++++--- include/linux/iommu.h | 55 +++++++---
10 files changed, 645 insertions(+), 115 deletions(-) 10 files changed, 645 insertions(+), 115 deletions(-)
diff --git a/drivers/iommu/amd_iommu.c b/drivers/iommu/amd_iommu.c
index c380b7e8..93199931 100644
--- a/drivers/iommu/amd_iommu.c --- a/drivers/iommu/amd_iommu.c
+++ b/drivers/iommu/amd_iommu.c +++ b/drivers/iommu/amd_iommu.c
@@ -373,6 +373,8 @@ static struct iommu_group *acpihid_device_group(struct device *dev) @@ -373,6 +373,8 @@ static struct iommu_group *acpihid_devic
if (!entry->group) if (!entry->group)
entry->group = generic_device_group(dev); entry->group = generic_device_group(dev);
@ -36,7 +34,7 @@ index c380b7e8..93199931 100644
return entry->group; return entry->group;
} }
@@ -3159,9 +3161,10 @@ static bool amd_iommu_capable(enum iommu_cap cap) @@ -3159,9 +3161,10 @@ static bool amd_iommu_capable(enum iommu
return false; return false;
} }
@ -49,7 +47,7 @@ index c380b7e8..93199931 100644
struct unity_map_entry *entry; struct unity_map_entry *entry;
int devid; int devid;
@@ -3170,41 +3173,56 @@ static void amd_iommu_get_dm_regions(struct device *dev, @@ -3170,41 +3173,56 @@ static void amd_iommu_get_dm_regions(str
return; return;
list_for_each_entry(entry, &amd_iommu_unity_map, list) { list_for_each_entry(entry, &amd_iommu_unity_map, list) {
@ -120,7 +118,7 @@ index c380b7e8..93199931 100644
{ {
struct dma_ops_domain *dma_dom = to_dma_ops_domain(to_pdomain(domain)); struct dma_ops_domain *dma_dom = to_dma_ops_domain(to_pdomain(domain));
unsigned long start, end; unsigned long start, end;
@@ -3228,9 +3246,9 @@ static const struct iommu_ops amd_iommu_ops = { @@ -3228,9 +3246,9 @@ static const struct iommu_ops amd_iommu_
.add_device = amd_iommu_add_device, .add_device = amd_iommu_add_device,
.remove_device = amd_iommu_remove_device, .remove_device = amd_iommu_remove_device,
.device_group = amd_iommu_device_group, .device_group = amd_iommu_device_group,
@ -133,8 +131,6 @@ index c380b7e8..93199931 100644
.pgsize_bitmap = AMD_IOMMU_PGSIZES, .pgsize_bitmap = AMD_IOMMU_PGSIZES,
}; };
diff --git a/drivers/iommu/arm-smmu-v3.c b/drivers/iommu/arm-smmu-v3.c
index e6f9b2d7..e3ed8dc5 100644
--- a/drivers/iommu/arm-smmu-v3.c --- a/drivers/iommu/arm-smmu-v3.c
+++ b/drivers/iommu/arm-smmu-v3.c +++ b/drivers/iommu/arm-smmu-v3.c
@@ -410,6 +410,9 @@ @@ -410,6 +410,9 @@
@ -147,7 +143,7 @@ index e6f9b2d7..e3ed8dc5 100644
static bool disable_bypass; static bool disable_bypass;
module_param_named(disable_bypass, disable_bypass, bool, S_IRUGO); module_param_named(disable_bypass, disable_bypass, bool, S_IRUGO);
MODULE_PARM_DESC(disable_bypass, MODULE_PARM_DESC(disable_bypass,
@@ -1370,8 +1373,6 @@ static bool arm_smmu_capable(enum iommu_cap cap) @@ -1370,8 +1373,6 @@ static bool arm_smmu_capable(enum iommu_
switch (cap) { switch (cap) {
case IOMMU_CAP_CACHE_COHERENCY: case IOMMU_CAP_CACHE_COHERENCY:
return true; return true;
@ -156,7 +152,7 @@ index e6f9b2d7..e3ed8dc5 100644
case IOMMU_CAP_NOEXEC: case IOMMU_CAP_NOEXEC:
return true; return true;
default: default:
@@ -1709,6 +1710,9 @@ arm_smmu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova) @@ -1709,6 +1710,9 @@ arm_smmu_iova_to_phys(struct iommu_domai
struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
struct io_pgtable_ops *ops = smmu_domain->pgtbl_ops; struct io_pgtable_ops *ops = smmu_domain->pgtbl_ops;
@ -166,7 +162,7 @@ index e6f9b2d7..e3ed8dc5 100644
if (!ops) if (!ops)
return 0; return 0;
@@ -1880,6 +1884,31 @@ static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args) @@ -1880,6 +1884,31 @@ static int arm_smmu_of_xlate(struct devi
return iommu_fwspec_add_ids(dev, args->args, 1); return iommu_fwspec_add_ids(dev, args->args, 1);
} }
@ -207,8 +203,6 @@ index e6f9b2d7..e3ed8dc5 100644
.pgsize_bitmap = -1UL, /* Restricted during device attach */ .pgsize_bitmap = -1UL, /* Restricted during device attach */
}; };
diff --git a/drivers/iommu/arm-smmu.c b/drivers/iommu/arm-smmu.c
index 8f728144..df18dac3 100644
--- a/drivers/iommu/arm-smmu.c --- a/drivers/iommu/arm-smmu.c
+++ b/drivers/iommu/arm-smmu.c +++ b/drivers/iommu/arm-smmu.c
@@ -49,6 +49,7 @@ @@ -49,6 +49,7 @@
@ -237,7 +231,7 @@ index 8f728144..df18dac3 100644
static int force_stage; static int force_stage;
module_param(force_stage, int, S_IRUGO); module_param(force_stage, int, S_IRUGO);
MODULE_PARM_DESC(force_stage, MODULE_PARM_DESC(force_stage,
@@ -1343,6 +1348,9 @@ static phys_addr_t arm_smmu_iova_to_phys(struct iommu_domain *domain, @@ -1343,6 +1348,9 @@ static phys_addr_t arm_smmu_iova_to_phys
struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain); struct arm_smmu_domain *smmu_domain = to_smmu_domain(domain);
struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops; struct io_pgtable_ops *ops= smmu_domain->pgtbl_ops;
@ -247,7 +241,7 @@ index 8f728144..df18dac3 100644
if (!ops) if (!ops)
return 0; return 0;
@@ -1368,8 +1376,6 @@ static bool arm_smmu_capable(enum iommu_cap cap) @@ -1368,8 +1376,6 @@ static bool arm_smmu_capable(enum iommu_
* requests. * requests.
*/ */
return true; return true;
@ -256,7 +250,7 @@ index 8f728144..df18dac3 100644
case IOMMU_CAP_NOEXEC: case IOMMU_CAP_NOEXEC:
return true; return true;
default: default:
@@ -1478,10 +1484,12 @@ static struct iommu_group *arm_smmu_device_group(struct device *dev) @@ -1478,10 +1484,12 @@ static struct iommu_group *arm_smmu_devi
} }
if (group) if (group)
@ -270,7 +264,7 @@ index 8f728144..df18dac3 100644
else else
group = generic_device_group(dev); group = generic_device_group(dev);
@@ -1534,17 +1542,44 @@ static int arm_smmu_domain_set_attr(struct iommu_domain *domain, @@ -1534,17 +1542,44 @@ out_unlock:
static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args) static int arm_smmu_of_xlate(struct device *dev, struct of_phandle_args *args)
{ {
@ -325,7 +319,7 @@ index 8f728144..df18dac3 100644
.pgsize_bitmap = -1UL, /* Restricted during device attach */ .pgsize_bitmap = -1UL, /* Restricted during device attach */
}; };
@@ -1581,16 +1618,22 @@ static void arm_smmu_device_reset(struct arm_smmu_device *smmu) @@ -1581,16 +1618,22 @@ static void arm_smmu_device_reset(struct
for (i = 0; i < smmu->num_mapping_groups; ++i) for (i = 0; i < smmu->num_mapping_groups; ++i)
arm_smmu_write_sme(smmu, i); arm_smmu_write_sme(smmu, i);
@ -357,7 +351,7 @@ index 8f728144..df18dac3 100644
writel_relaxed(reg, gr0_base + ARM_SMMU_GR0_sACR); writel_relaxed(reg, gr0_base + ARM_SMMU_GR0_sACR);
} }
@@ -2024,6 +2067,11 @@ static int arm_smmu_device_dt_probe(struct platform_device *pdev) @@ -2024,6 +2067,11 @@ static int arm_smmu_device_dt_probe(stru
bus_set_iommu(&pci_bus_type, &arm_smmu_ops); bus_set_iommu(&pci_bus_type, &arm_smmu_ops);
} }
#endif #endif
@ -369,8 +363,6 @@ index 8f728144..df18dac3 100644
return 0; return 0;
} }
diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c
index 1520e7f0..3ade4153 100644
--- a/drivers/iommu/dma-iommu.c --- a/drivers/iommu/dma-iommu.c
+++ b/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c
@@ -37,15 +37,50 @@ struct iommu_dma_msi_page { @@ -37,15 +37,50 @@ struct iommu_dma_msi_page {
@ -428,11 +420,10 @@ index 1520e7f0..3ade4153 100644
} }
int iommu_dma_init(void) int iommu_dma_init(void)
@@ -61,26 +96,54 @@ int iommu_dma_init(void) @@ -62,25 +97,53 @@ int iommu_dma_init(void)
* callback when domain->type == IOMMU_DOMAIN_DMA.
*/ */
int iommu_get_dma_cookie(struct iommu_domain *domain) int iommu_get_dma_cookie(struct iommu_domain *domain)
+{ {
+ if (domain->iova_cookie) + if (domain->iova_cookie)
+ return -EEXIST; + return -EEXIST;
+ +
@ -457,7 +448,7 @@ index 1520e7f0..3ade4153 100644
+ * used by the devices attached to @domain. + * used by the devices attached to @domain.
+ */ + */
+int iommu_get_msi_cookie(struct iommu_domain *domain, dma_addr_t base) +int iommu_get_msi_cookie(struct iommu_domain *domain, dma_addr_t base)
{ +{
struct iommu_dma_cookie *cookie; struct iommu_dma_cookie *cookie;
+ if (domain->type != IOMMU_DOMAIN_UNMANAGED) + if (domain->type != IOMMU_DOMAIN_UNMANAGED)
@ -488,7 +479,7 @@ index 1520e7f0..3ade4153 100644
* *
* IOMMU drivers should normally call this from their domain_free callback. * IOMMU drivers should normally call this from their domain_free callback.
*/ */
@@ -92,7 +155,7 @@ void iommu_put_dma_cookie(struct iommu_domain *domain) @@ -92,7 +155,7 @@ void iommu_put_dma_cookie(struct iommu_d
if (!cookie) if (!cookie)
return; return;
@ -497,7 +488,7 @@ index 1520e7f0..3ade4153 100644
put_iova_domain(&cookie->iovad); put_iova_domain(&cookie->iovad);
list_for_each_entry_safe(msi, tmp, &cookie->msi_page_list, list) { list_for_each_entry_safe(msi, tmp, &cookie->msi_page_list, list) {
@@ -104,21 +167,99 @@ void iommu_put_dma_cookie(struct iommu_domain *domain) @@ -104,21 +167,99 @@ void iommu_put_dma_cookie(struct iommu_d
} }
EXPORT_SYMBOL(iommu_put_dma_cookie); EXPORT_SYMBOL(iommu_put_dma_cookie);
@ -603,7 +594,7 @@ index 1520e7f0..3ade4153 100644
} }
/** /**
@@ -136,11 +277,12 @@ static void iova_reserve_pci_windows(struct pci_dev *dev, @@ -136,11 +277,12 @@ static void iova_reserve_pci_windows(str
int iommu_dma_init_domain(struct iommu_domain *domain, dma_addr_t base, int iommu_dma_init_domain(struct iommu_domain *domain, dma_addr_t base,
u64 size, struct device *dev) u64 size, struct device *dev)
{ {
@ -619,7 +610,7 @@ index 1520e7f0..3ade4153 100644
/* Use the smallest supported page size for IOVA granularity */ /* Use the smallest supported page size for IOVA granularity */
order = __ffs(domain->pgsize_bitmap); order = __ffs(domain->pgsize_bitmap);
@@ -160,22 +302,37 @@ int iommu_dma_init_domain(struct iommu_domain *domain, dma_addr_t base, @@ -160,22 +302,37 @@ int iommu_dma_init_domain(struct iommu_d
end_pfn = min_t(unsigned long, end_pfn, end_pfn = min_t(unsigned long, end_pfn,
domain->geometry.aperture_end >> order); domain->geometry.aperture_end >> order);
} }
@ -666,7 +657,7 @@ index 1520e7f0..3ade4153 100644
} }
EXPORT_SYMBOL(iommu_dma_init_domain); EXPORT_SYMBOL(iommu_dma_init_domain);
@@ -643,11 +800,12 @@ static struct iommu_dma_msi_page *iommu_dma_get_msi_page(struct device *dev, @@ -643,11 +800,12 @@ static struct iommu_dma_msi_page *iommu_
{ {
struct iommu_dma_cookie *cookie = domain->iova_cookie; struct iommu_dma_cookie *cookie = domain->iova_cookie;
struct iommu_dma_msi_page *msi_page; struct iommu_dma_msi_page *msi_page;
@ -681,7 +672,7 @@ index 1520e7f0..3ade4153 100644
list_for_each_entry(msi_page, &cookie->msi_page_list, list) list_for_each_entry(msi_page, &cookie->msi_page_list, list)
if (msi_page->phys == msi_addr) if (msi_page->phys == msi_addr)
return msi_page; return msi_page;
@@ -656,13 +814,18 @@ static struct iommu_dma_msi_page *iommu_dma_get_msi_page(struct device *dev, @@ -656,13 +814,18 @@ static struct iommu_dma_msi_page *iommu_
if (!msi_page) if (!msi_page)
return NULL; return NULL;
@ -706,7 +697,7 @@ index 1520e7f0..3ade4153 100644
goto out_free_iova; goto out_free_iova;
INIT_LIST_HEAD(&msi_page->list); INIT_LIST_HEAD(&msi_page->list);
@@ -670,7 +833,10 @@ static struct iommu_dma_msi_page *iommu_dma_get_msi_page(struct device *dev, @@ -670,7 +833,10 @@ static struct iommu_dma_msi_page *iommu_
return msi_page; return msi_page;
out_free_iova: out_free_iova:
@ -718,7 +709,7 @@ index 1520e7f0..3ade4153 100644
out_free_page: out_free_page:
kfree(msi_page); kfree(msi_page);
return NULL; return NULL;
@@ -711,7 +877,7 @@ void iommu_dma_map_msi_msg(int irq, struct msi_msg *msg) @@ -711,7 +877,7 @@ void iommu_dma_map_msi_msg(int irq, stru
msg->data = ~0U; msg->data = ~0U;
} else { } else {
msg->address_hi = upper_32_bits(msi_page->iova); msg->address_hi = upper_32_bits(msi_page->iova);
@ -727,8 +718,6 @@ index 1520e7f0..3ade4153 100644
msg->address_lo += lower_32_bits(msi_page->iova); msg->address_lo += lower_32_bits(msi_page->iova);
} }
} }
diff --git a/drivers/iommu/intel-iommu.c b/drivers/iommu/intel-iommu.c
index 002f8a42..befbfd30 100644
--- a/drivers/iommu/intel-iommu.c --- a/drivers/iommu/intel-iommu.c
+++ b/drivers/iommu/intel-iommu.c +++ b/drivers/iommu/intel-iommu.c
@@ -440,6 +440,7 @@ struct dmar_rmrr_unit { @@ -440,6 +440,7 @@ struct dmar_rmrr_unit {
@ -739,7 +728,7 @@ index 002f8a42..befbfd30 100644
}; };
struct dmar_atsr_unit { struct dmar_atsr_unit {
@@ -4250,27 +4251,40 @@ static inline void init_iommu_pm_ops(void) {} @@ -4250,27 +4251,40 @@ static inline void init_iommu_pm_ops(voi
int __init dmar_parse_one_rmrr(struct acpi_dmar_header *header, void *arg) int __init dmar_parse_one_rmrr(struct acpi_dmar_header *header, void *arg)
{ {
struct acpi_dmar_reserved_memory *rmrr; struct acpi_dmar_reserved_memory *rmrr;
@ -793,7 +782,7 @@ index 002f8a42..befbfd30 100644
kfree(rmrru); kfree(rmrru);
} }
@@ -5219,6 +5234,45 @@ static void intel_iommu_remove_device(struct device *dev) @@ -5219,6 +5234,45 @@ static void intel_iommu_remove_device(st
iommu_device_unlink(iommu->iommu_dev, dev); iommu_device_unlink(iommu->iommu_dev, dev);
} }
@ -839,7 +828,7 @@ index 002f8a42..befbfd30 100644
#ifdef CONFIG_INTEL_IOMMU_SVM #ifdef CONFIG_INTEL_IOMMU_SVM
#define MAX_NR_PASID_BITS (20) #define MAX_NR_PASID_BITS (20)
static inline unsigned long intel_iommu_get_pts(struct intel_iommu *iommu) static inline unsigned long intel_iommu_get_pts(struct intel_iommu *iommu)
@@ -5349,19 +5403,21 @@ struct intel_iommu *intel_svm_device_to_iommu(struct device *dev) @@ -5349,19 +5403,21 @@ struct intel_iommu *intel_svm_device_to_
#endif /* CONFIG_INTEL_IOMMU_SVM */ #endif /* CONFIG_INTEL_IOMMU_SVM */
static const struct iommu_ops intel_iommu_ops = { static const struct iommu_ops intel_iommu_ops = {
@ -874,8 +863,6 @@ index 002f8a42..befbfd30 100644
}; };
static void quirk_iommu_g4x_gfx(struct pci_dev *dev) static void quirk_iommu_g4x_gfx(struct pci_dev *dev)
diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c
index 87d3060f..372fc463 100644
--- a/drivers/iommu/iommu.c --- a/drivers/iommu/iommu.c
+++ b/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c
@@ -68,6 +68,13 @@ struct iommu_group_attribute { @@ -68,6 +68,13 @@ struct iommu_group_attribute {
@ -892,7 +879,7 @@ index 87d3060f..372fc463 100644
#define IOMMU_GROUP_ATTR(_name, _mode, _show, _store) \ #define IOMMU_GROUP_ATTR(_name, _mode, _show, _store) \
struct iommu_group_attribute iommu_group_attr_##_name = \ struct iommu_group_attribute iommu_group_attr_##_name = \
__ATTR(_name, _mode, _show, _store) __ATTR(_name, _mode, _show, _store)
@@ -133,8 +140,131 @@ static ssize_t iommu_group_show_name(struct iommu_group *group, char *buf) @@ -133,8 +140,131 @@ static ssize_t iommu_group_show_name(str
return sprintf(buf, "%s\n", group->name); return sprintf(buf, "%s\n", group->name);
} }
@ -1024,7 +1011,7 @@ index 87d3060f..372fc463 100644
static void iommu_group_release(struct kobject *kobj) static void iommu_group_release(struct kobject *kobj)
{ {
struct iommu_group *group = to_iommu_group(kobj); struct iommu_group *group = to_iommu_group(kobj);
@@ -212,6 +342,11 @@ struct iommu_group *iommu_group_alloc(void) @@ -212,6 +342,11 @@ struct iommu_group *iommu_group_alloc(vo
*/ */
kobject_put(&group->kobj); kobject_put(&group->kobj);
@ -1036,7 +1023,7 @@ index 87d3060f..372fc463 100644
pr_debug("Allocated group %d\n", group->id); pr_debug("Allocated group %d\n", group->id);
return group; return group;
@@ -318,7 +453,7 @@ static int iommu_group_create_direct_mappings(struct iommu_group *group, @@ -318,7 +453,7 @@ static int iommu_group_create_direct_map
struct device *dev) struct device *dev)
{ {
struct iommu_domain *domain = group->default_domain; struct iommu_domain *domain = group->default_domain;
@ -1045,7 +1032,7 @@ index 87d3060f..372fc463 100644
struct list_head mappings; struct list_head mappings;
unsigned long pg_size; unsigned long pg_size;
int ret = 0; int ret = 0;
@@ -331,18 +466,21 @@ static int iommu_group_create_direct_mappings(struct iommu_group *group, @@ -331,18 +466,21 @@ static int iommu_group_create_direct_map
pg_size = 1UL << __ffs(domain->pgsize_bitmap); pg_size = 1UL << __ffs(domain->pgsize_bitmap);
INIT_LIST_HEAD(&mappings); INIT_LIST_HEAD(&mappings);
@ -1070,7 +1057,7 @@ index 87d3060f..372fc463 100644
for (addr = start; addr < end; addr += pg_size) { for (addr = start; addr < end; addr += pg_size) {
phys_addr_t phys_addr; phys_addr_t phys_addr;
@@ -358,7 +496,7 @@ static int iommu_group_create_direct_mappings(struct iommu_group *group, @@ -358,7 +496,7 @@ static int iommu_group_create_direct_map
} }
out: out:
@ -1079,11 +1066,10 @@ index 87d3060f..372fc463 100644
return ret; return ret;
} }
@@ -562,6 +700,19 @@ struct iommu_group *iommu_group_get(struct device *dev) @@ -563,6 +701,19 @@ struct iommu_group *iommu_group_get(stru
}
EXPORT_SYMBOL_GPL(iommu_group_get); EXPORT_SYMBOL_GPL(iommu_group_get);
+/** /**
+ * iommu_group_ref_get - Increment reference on a group + * iommu_group_ref_get - Increment reference on a group
+ * @group: the group to use, must not be NULL + * @group: the group to use, must not be NULL
+ * + *
@ -1096,10 +1082,11 @@ index 87d3060f..372fc463 100644
+ return group; + return group;
+} +}
+ +
/** +/**
* iommu_group_put - Decrement group reference * iommu_group_put - Decrement group reference
* @group: the group to use * @group: the group to use
@@ -1557,20 +1708,38 @@ int iommu_domain_set_attr(struct iommu_domain *domain, *
@@ -1557,20 +1708,38 @@ int iommu_domain_set_attr(struct iommu_d
} }
EXPORT_SYMBOL_GPL(iommu_domain_set_attr); EXPORT_SYMBOL_GPL(iommu_domain_set_attr);
@ -1144,11 +1131,9 @@ index 87d3060f..372fc463 100644
} }
/* Request that a device is direct mapped by the IOMMU */ /* Request that a device is direct mapped by the IOMMU */
diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index b12c12d7..9799daea 100644
--- a/drivers/iommu/mtk_iommu.c --- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c +++ b/drivers/iommu/mtk_iommu.c
@@ -410,6 +410,8 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev) @@ -410,6 +410,8 @@ static struct iommu_group *mtk_iommu_dev
data->m4u_group = iommu_group_alloc(); data->m4u_group = iommu_group_alloc();
if (IS_ERR(data->m4u_group)) if (IS_ERR(data->m4u_group))
dev_err(dev, "Failed to allocate M4U IOMMU group\n"); dev_err(dev, "Failed to allocate M4U IOMMU group\n");
@ -1157,11 +1142,9 @@ index b12c12d7..9799daea 100644
} }
return data->m4u_group; return data->m4u_group;
} }
diff --git a/drivers/iommu/mtk_iommu_v1.c b/drivers/iommu/mtk_iommu_v1.c
index b8aeb076..c7063e9d 100644
--- a/drivers/iommu/mtk_iommu_v1.c --- a/drivers/iommu/mtk_iommu_v1.c
+++ b/drivers/iommu/mtk_iommu_v1.c +++ b/drivers/iommu/mtk_iommu_v1.c
@@ -502,6 +502,8 @@ static struct iommu_group *mtk_iommu_device_group(struct device *dev) @@ -502,6 +502,8 @@ static struct iommu_group *mtk_iommu_dev
data->m4u_group = iommu_group_alloc(); data->m4u_group = iommu_group_alloc();
if (IS_ERR(data->m4u_group)) if (IS_ERR(data->m4u_group))
dev_err(dev, "Failed to allocate M4U IOMMU group\n"); dev_err(dev, "Failed to allocate M4U IOMMU group\n");
@ -1170,8 +1153,6 @@ index b8aeb076..c7063e9d 100644
} }
return data->m4u_group; return data->m4u_group;
} }
diff --git a/include/linux/dma-iommu.h b/include/linux/dma-iommu.h
index 32c58906..36d3206d 100644
--- a/include/linux/dma-iommu.h --- a/include/linux/dma-iommu.h
+++ b/include/linux/dma-iommu.h +++ b/include/linux/dma-iommu.h
@@ -27,6 +27,7 @@ int iommu_dma_init(void); @@ -27,6 +27,7 @@ int iommu_dma_init(void);
@ -1182,7 +1163,7 @@ index 32c58906..36d3206d 100644
void iommu_put_dma_cookie(struct iommu_domain *domain); void iommu_put_dma_cookie(struct iommu_domain *domain);
/* Setup call for arch DMA mapping code */ /* Setup call for arch DMA mapping code */
@@ -66,6 +67,7 @@ int iommu_dma_mapping_error(struct device *dev, dma_addr_t dma_addr); @@ -66,6 +67,7 @@ int iommu_dma_mapping_error(struct devic
/* The DMA API isn't _quite_ the whole story, though... */ /* The DMA API isn't _quite_ the whole story, though... */
void iommu_dma_map_msi_msg(int irq, struct msi_msg *msg); void iommu_dma_map_msi_msg(int irq, struct msi_msg *msg);
@ -1190,7 +1171,7 @@ index 32c58906..36d3206d 100644
#else #else
@@ -82,6 +84,11 @@ static inline int iommu_get_dma_cookie(struct iommu_domain *domain) @@ -82,6 +84,11 @@ static inline int iommu_get_dma_cookie(s
return -ENODEV; return -ENODEV;
} }
@ -1202,7 +1183,7 @@ index 32c58906..36d3206d 100644
static inline void iommu_put_dma_cookie(struct iommu_domain *domain) static inline void iommu_put_dma_cookie(struct iommu_domain *domain)
{ {
} }
@@ -90,6 +97,10 @@ static inline void iommu_dma_map_msi_msg(int irq, struct msi_msg *msg) @@ -90,6 +97,10 @@ static inline void iommu_dma_map_msi_msg
{ {
} }
@ -1213,8 +1194,6 @@ index 32c58906..36d3206d 100644
#endif /* CONFIG_IOMMU_DMA */ #endif /* CONFIG_IOMMU_DMA */
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* __DMA_IOMMU_H */ #endif /* __DMA_IOMMU_H */
diff --git a/include/linux/iommu.h b/include/linux/iommu.h
index 436dc213..188599f5 100644
--- a/include/linux/iommu.h --- a/include/linux/iommu.h
+++ b/include/linux/iommu.h +++ b/include/linux/iommu.h
@@ -117,18 +117,32 @@ enum iommu_attr { @@ -117,18 +117,32 @@ enum iommu_attr {
@ -1283,7 +1262,7 @@ index 436dc213..188599f5 100644
/* Window handling functions */ /* Window handling functions */
int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr, int (*domain_window_enable)(struct iommu_domain *domain, u32 wnd_nr,
@@ -233,9 +248,14 @@ extern phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t io @@ -233,9 +248,14 @@ extern phys_addr_t iommu_iova_to_phys(st
extern void iommu_set_fault_handler(struct iommu_domain *domain, extern void iommu_set_fault_handler(struct iommu_domain *domain,
iommu_fault_handler_t handler, void *token); iommu_fault_handler_t handler, void *token);
@ -1300,7 +1279,7 @@ index 436dc213..188599f5 100644
extern int iommu_attach_group(struct iommu_domain *domain, extern int iommu_attach_group(struct iommu_domain *domain,
struct iommu_group *group); struct iommu_group *group);
@@ -253,6 +273,7 @@ extern void iommu_group_remove_device(struct device *dev); @@ -253,6 +273,7 @@ extern void iommu_group_remove_device(st
extern int iommu_group_for_each_dev(struct iommu_group *group, void *data, extern int iommu_group_for_each_dev(struct iommu_group *group, void *data,
int (*fn)(struct device *, void *)); int (*fn)(struct device *, void *));
extern struct iommu_group *iommu_group_get(struct device *dev); extern struct iommu_group *iommu_group_get(struct device *dev);
@ -1308,7 +1287,7 @@ index 436dc213..188599f5 100644
extern void iommu_group_put(struct iommu_group *group); extern void iommu_group_put(struct iommu_group *group);
extern int iommu_group_register_notifier(struct iommu_group *group, extern int iommu_group_register_notifier(struct iommu_group *group,
struct notifier_block *nb); struct notifier_block *nb);
@@ -439,16 +460,22 @@ static inline void iommu_set_fault_handler(struct iommu_domain *domain, @@ -439,16 +460,22 @@ static inline void iommu_set_fault_handl
{ {
} }
@ -1333,6 +1312,3 @@ index 436dc213..188599f5 100644
static inline int iommu_request_dm_for_dev(struct device *dev) static inline int iommu_request_dm_for_dev(struct device *dev)
{ {
return -ENODEV; return -ENODEV;
--
2.14.1

View file

@ -16,20 +16,16 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
kernel/irq/msi.c | 4 ++-- kernel/irq/msi.c | 4 ++--
5 files changed, 79 insertions(+), 2 deletions(-) 5 files changed, 79 insertions(+), 2 deletions(-)
diff --git a/drivers/irqchip/Makefile b/drivers/irqchip/Makefile
index e4dbfc85..53d2cd54 100644
--- a/drivers/irqchip/Makefile --- a/drivers/irqchip/Makefile
+++ b/drivers/irqchip/Makefile +++ b/drivers/irqchip/Makefile
@@ -74,3 +74,4 @@ obj-$(CONFIG_LS_SCFG_MSI) += irq-ls-scfg-msi.o @@ -74,3 +74,4 @@ obj-$(CONFIG_LS_SCFG_MSI) += irq-ls-scf
obj-$(CONFIG_EZNPS_GIC) += irq-eznps.o obj-$(CONFIG_EZNPS_GIC) += irq-eznps.o
obj-$(CONFIG_ARCH_ASPEED) += irq-aspeed-vic.o obj-$(CONFIG_ARCH_ASPEED) += irq-aspeed-vic.o
obj-$(CONFIG_STM32_EXTI) += irq-stm32-exti.o obj-$(CONFIG_STM32_EXTI) += irq-stm32-exti.o
+obj-$(CONFIG_QUICC_ENGINE) += irq-qeic.o +obj-$(CONFIG_QUICC_ENGINE) += irq-qeic.o
diff --git a/drivers/irqchip/irq-gic-v3-its.c b/drivers/irqchip/irq-gic-v3-its.c
index acb9d250..2f1c8826 100644
--- a/drivers/irqchip/irq-gic-v3-its.c --- a/drivers/irqchip/irq-gic-v3-its.c
+++ b/drivers/irqchip/irq-gic-v3-its.c +++ b/drivers/irqchip/irq-gic-v3-its.c
@@ -1659,6 +1659,7 @@ static int its_init_domain(struct fwnode_handle *handle, struct its_node *its) @@ -1659,6 +1659,7 @@ static int its_init_domain(struct fwnode
inner_domain->parent = its_parent; inner_domain->parent = its_parent;
inner_domain->bus_token = DOMAIN_BUS_NEXUS; inner_domain->bus_token = DOMAIN_BUS_NEXUS;
@ -37,8 +33,6 @@ index acb9d250..2f1c8826 100644
info->ops = &its_msi_domain_ops; info->ops = &its_msi_domain_ops;
info->data = its; info->data = its;
inner_domain->host_data = info; inner_domain->host_data = info;
diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
index ffb84604..188eced6 100644
--- a/include/linux/irqdomain.h --- a/include/linux/irqdomain.h
+++ b/include/linux/irqdomain.h +++ b/include/linux/irqdomain.h
@@ -183,6 +183,12 @@ enum { @@ -183,6 +183,12 @@ enum {
@ -54,7 +48,7 @@ index ffb84604..188eced6 100644
/* /*
* Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved * Flags starting from IRQ_DOMAIN_FLAG_NONCORE are reserved
* for implementation specific purposes and ignored by the * for implementation specific purposes and ignored by the
@@ -216,6 +222,7 @@ struct irq_domain *irq_domain_add_legacy(struct device_node *of_node, @@ -216,6 +222,7 @@ struct irq_domain *irq_domain_add_legacy
void *host_data); void *host_data);
extern struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec, extern struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec,
enum irq_domain_bus_token bus_token); enum irq_domain_bus_token bus_token);
@ -62,7 +56,7 @@ index ffb84604..188eced6 100644
extern void irq_set_default_host(struct irq_domain *host); extern void irq_set_default_host(struct irq_domain *host);
extern int irq_domain_alloc_descs(int virq, unsigned int nr_irqs, extern int irq_domain_alloc_descs(int virq, unsigned int nr_irqs,
irq_hw_number_t hwirq, int node, irq_hw_number_t hwirq, int node,
@@ -446,6 +453,19 @@ static inline bool irq_domain_is_ipi_single(struct irq_domain *domain) @@ -446,6 +453,19 @@ static inline bool irq_domain_is_ipi_sin
{ {
return domain->flags & IRQ_DOMAIN_FLAG_IPI_SINGLE; return domain->flags & IRQ_DOMAIN_FLAG_IPI_SINGLE;
} }
@ -82,7 +76,7 @@ index ffb84604..188eced6 100644
#else /* CONFIG_IRQ_DOMAIN_HIERARCHY */ #else /* CONFIG_IRQ_DOMAIN_HIERARCHY */
static inline void irq_domain_activate_irq(struct irq_data *data) { } static inline void irq_domain_activate_irq(struct irq_data *data) { }
static inline void irq_domain_deactivate_irq(struct irq_data *data) { } static inline void irq_domain_deactivate_irq(struct irq_data *data) { }
@@ -477,6 +497,22 @@ static inline bool irq_domain_is_ipi_single(struct irq_domain *domain) @@ -477,6 +497,22 @@ static inline bool irq_domain_is_ipi_sin
{ {
return false; return false;
} }
@ -105,15 +99,12 @@ index ffb84604..188eced6 100644
#endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */ #endif /* CONFIG_IRQ_DOMAIN_HIERARCHY */
#else /* CONFIG_IRQ_DOMAIN */ #else /* CONFIG_IRQ_DOMAIN */
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index b59e6768..31805f23 100644
--- a/kernel/irq/irqdomain.c --- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c +++ b/kernel/irq/irqdomain.c
@@ -277,6 +277,31 @@ struct irq_domain *irq_find_matching_fwspec(struct irq_fwspec *fwspec, @@ -278,6 +278,31 @@ struct irq_domain *irq_find_matching_fws
}
EXPORT_SYMBOL_GPL(irq_find_matching_fwspec); EXPORT_SYMBOL_GPL(irq_find_matching_fwspec);
+/** /**
+ * irq_domain_check_msi_remap - Check whether all MSI irq domains implement + * irq_domain_check_msi_remap - Check whether all MSI irq domains implement
+ * IRQ remapping + * IRQ remapping
+ * + *
@ -138,10 +129,11 @@ index b59e6768..31805f23 100644
+} +}
+EXPORT_SYMBOL_GPL(irq_domain_check_msi_remap); +EXPORT_SYMBOL_GPL(irq_domain_check_msi_remap);
+ +
/** +/**
* irq_set_default_host() - Set a "default" irq domain * irq_set_default_host() - Set a "default" irq domain
* @domain: default domain pointer * @domain: default domain pointer
@@ -1408,6 +1433,20 @@ static void irq_domain_check_hierarchy(struct irq_domain *domain) *
@@ -1408,6 +1433,20 @@ static void irq_domain_check_hierarchy(s
if (domain->ops->alloc) if (domain->ops->alloc)
domain->flags |= IRQ_DOMAIN_FLAG_HIERARCHY; domain->flags |= IRQ_DOMAIN_FLAG_HIERARCHY;
} }
@ -162,11 +154,9 @@ index b59e6768..31805f23 100644
#else /* CONFIG_IRQ_DOMAIN_HIERARCHY */ #else /* CONFIG_IRQ_DOMAIN_HIERARCHY */
/** /**
* irq_domain_get_irq_data - Get irq_data associated with @virq and @domain * irq_domain_get_irq_data - Get irq_data associated with @virq and @domain
diff --git a/kernel/irq/msi.c b/kernel/irq/msi.c
index 8a3e8727..2e2b2c45 100644
--- a/kernel/irq/msi.c --- a/kernel/irq/msi.c
+++ b/kernel/irq/msi.c +++ b/kernel/irq/msi.c
@@ -272,8 +272,8 @@ struct irq_domain *msi_create_irq_domain(struct fwnode_handle *fwnode, @@ -272,8 +272,8 @@ struct irq_domain *msi_create_irq_domain
if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS) if (info->flags & MSI_FLAG_USE_DEF_CHIP_OPS)
msi_domain_update_chip_ops(info); msi_domain_update_chip_ops(info);
@ -177,6 +167,3 @@ index 8a3e8727..2e2b2c45 100644
} }
int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev, int msi_domain_prepare_irqs(struct irq_domain *domain, struct device *dev,
--
2.14.1

View file

@ -17,8 +17,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/mmc/host/sdhci.h | 3 + drivers/mmc/host/sdhci.h | 3 +
5 files changed, 306 insertions(+), 46 deletions(-) 5 files changed, 306 insertions(+), 46 deletions(-)
diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig
index 5274f503..a1135a92 100644
--- a/drivers/mmc/host/Kconfig --- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig
@@ -144,6 +144,7 @@ config MMC_SDHCI_OF_ESDHC @@ -144,6 +144,7 @@ config MMC_SDHCI_OF_ESDHC
@ -29,8 +27,6 @@ index 5274f503..a1135a92 100644
help help
This selects the Freescale eSDHC controller support. This selects the Freescale eSDHC controller support.
diff --git a/drivers/mmc/host/sdhci-esdhc.h b/drivers/mmc/host/sdhci-esdhc.h
index de132e28..98898a30 100644
--- a/drivers/mmc/host/sdhci-esdhc.h --- a/drivers/mmc/host/sdhci-esdhc.h
+++ b/drivers/mmc/host/sdhci-esdhc.h +++ b/drivers/mmc/host/sdhci-esdhc.h
@@ -24,30 +24,46 @@ @@ -24,30 +24,46 @@
@ -57,10 +53,12 @@ index de132e28..98898a30 100644
-#define ESDHC_CTRL_4BITBUS (0x1 << 1) -#define ESDHC_CTRL_4BITBUS (0x1 << 1)
-#define ESDHC_CTRL_8BITBUS (0x2 << 1) -#define ESDHC_CTRL_8BITBUS (0x2 << 1)
-#define ESDHC_CTRL_BUSWIDTH_MASK (0x3 << 1) -#define ESDHC_CTRL_BUSWIDTH_MASK (0x3 << 1)
-
-/* OF-specific */ -/* OF-specific */
-#define ESDHC_DMA_SYSCTL 0x40c -#define ESDHC_DMA_SYSCTL 0x40c
-#define ESDHC_DMA_SNOOP 0x00000040 -#define ESDHC_DMA_SNOOP 0x00000040
-#define ESDHC_HOST_CONTROL_RES 0x01
+/* Present State Register */ +/* Present State Register */
+#define ESDHC_PRSSTAT 0x24 +#define ESDHC_PRSSTAT 0x24
+#define ESDHC_CLOCK_STABLE 0x00000008 +#define ESDHC_CLOCK_STABLE 0x00000008
@ -89,8 +87,7 @@ index de132e28..98898a30 100644
+/* Tuning Block Control Register */ +/* Tuning Block Control Register */
+#define ESDHC_TBCTL 0x120 +#define ESDHC_TBCTL 0x120
+#define ESDHC_TB_EN 0x00000004 +#define ESDHC_TB_EN 0x00000004
+
-#define ESDHC_HOST_CONTROL_RES 0x01
+/* Control Register for DMA transfer */ +/* Control Register for DMA transfer */
+#define ESDHC_DMA_SYSCTL 0x40c +#define ESDHC_DMA_SYSCTL 0x40c
+#define ESDHC_PERIPHERAL_CLK_SEL 0x00080000 +#define ESDHC_PERIPHERAL_CLK_SEL 0x00080000
@ -98,8 +95,6 @@ index de132e28..98898a30 100644
+#define ESDHC_DMA_SNOOP 0x00000040 +#define ESDHC_DMA_SNOOP 0x00000040
#endif /* _DRIVERS_MMC_SDHCI_ESDHC_H */ #endif /* _DRIVERS_MMC_SDHCI_ESDHC_H */
diff --git a/drivers/mmc/host/sdhci-of-esdhc.c b/drivers/mmc/host/sdhci-of-esdhc.c
index 3c27401c..4b0f375b 100644
--- a/drivers/mmc/host/sdhci-of-esdhc.c --- a/drivers/mmc/host/sdhci-of-esdhc.c
+++ b/drivers/mmc/host/sdhci-of-esdhc.c +++ b/drivers/mmc/host/sdhci-of-esdhc.c
@@ -16,8 +16,12 @@ @@ -16,8 +16,12 @@
@ -128,7 +123,7 @@ index 3c27401c..4b0f375b 100644
/** /**
* esdhc_read*_fixup - Fixup the value read from incompatible eSDHC register * esdhc_read*_fixup - Fixup the value read from incompatible eSDHC register
* to make it compatible with SD spec. * to make it compatible with SD spec.
@@ -80,6 +88,17 @@ static u32 esdhc_readl_fixup(struct sdhci_host *host, @@ -80,6 +88,17 @@ static u32 esdhc_readl_fixup(struct sdhc
return ret; return ret;
} }
@ -146,7 +141,7 @@ index 3c27401c..4b0f375b 100644
ret = value; ret = value;
return ret; return ret;
} }
@@ -87,6 +106,8 @@ static u32 esdhc_readl_fixup(struct sdhci_host *host, @@ -87,6 +106,8 @@ static u32 esdhc_readl_fixup(struct sdhc
static u16 esdhc_readw_fixup(struct sdhci_host *host, static u16 esdhc_readw_fixup(struct sdhci_host *host,
int spec_reg, u32 value) int spec_reg, u32 value)
{ {
@ -155,7 +150,7 @@ index 3c27401c..4b0f375b 100644
u16 ret; u16 ret;
int shift = (spec_reg & 0x2) * 8; int shift = (spec_reg & 0x2) * 8;
@@ -94,6 +115,12 @@ static u16 esdhc_readw_fixup(struct sdhci_host *host, @@ -94,6 +115,12 @@ static u16 esdhc_readw_fixup(struct sdhc
ret = value & 0xffff; ret = value & 0xffff;
else else
ret = (value >> shift) & 0xffff; ret = (value >> shift) & 0xffff;
@ -168,7 +163,7 @@ index 3c27401c..4b0f375b 100644
return ret; return ret;
} }
@@ -235,7 +262,11 @@ static u32 esdhc_be_readl(struct sdhci_host *host, int reg) @@ -235,7 +262,11 @@ static u32 esdhc_be_readl(struct sdhci_h
u32 ret; u32 ret;
u32 value; u32 value;
@ -181,7 +176,7 @@ index 3c27401c..4b0f375b 100644
ret = esdhc_readl_fixup(host, reg, value); ret = esdhc_readl_fixup(host, reg, value);
return ret; return ret;
@@ -246,7 +277,11 @@ static u32 esdhc_le_readl(struct sdhci_host *host, int reg) @@ -246,7 +277,11 @@ static u32 esdhc_le_readl(struct sdhci_h
u32 ret; u32 ret;
u32 value; u32 value;
@ -194,7 +189,7 @@ index 3c27401c..4b0f375b 100644
ret = esdhc_readl_fixup(host, reg, value); ret = esdhc_readl_fixup(host, reg, value);
return ret; return ret;
@@ -404,15 +439,25 @@ static int esdhc_of_enable_dma(struct sdhci_host *host) @@ -404,15 +439,25 @@ static int esdhc_of_enable_dma(struct sd
static unsigned int esdhc_of_get_max_clock(struct sdhci_host *host) static unsigned int esdhc_of_get_max_clock(struct sdhci_host *host)
{ {
struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host); struct sdhci_pltfm_host *pltfm_host = sdhci_priv(host);
@ -222,7 +217,7 @@ index 3c27401c..4b0f375b 100644
} }
static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock)
@@ -421,17 +466,34 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) @@ -421,17 +466,34 @@ static void esdhc_of_set_clock(struct sd
struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host); struct sdhci_esdhc *esdhc = sdhci_pltfm_priv(pltfm_host);
int pre_div = 1; int pre_div = 1;
int div = 1; int div = 1;
@ -258,7 +253,7 @@ index 3c27401c..4b0f375b 100644
/* Workaround to reduce the clock frequency for p1010 esdhc */ /* Workaround to reduce the clock frequency for p1010 esdhc */
if (of_find_compatible_node(NULL, NULL, "fsl,p1010-esdhc")) { if (of_find_compatible_node(NULL, NULL, "fsl,p1010-esdhc")) {
if (clock > 20000000) if (clock > 20000000)
@@ -441,8 +503,8 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) @@ -441,8 +503,8 @@ static void esdhc_of_set_clock(struct sd
} }
temp = sdhci_readl(host, ESDHC_SYSTEM_CONTROL); temp = sdhci_readl(host, ESDHC_SYSTEM_CONTROL);
@ -269,7 +264,7 @@ index 3c27401c..4b0f375b 100644
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
while (host->max_clk / pre_div / 16 > clock && pre_div < 256) while (host->max_clk / pre_div / 16 > clock && pre_div < 256)
@@ -462,7 +524,20 @@ static void esdhc_of_set_clock(struct sdhci_host *host, unsigned int clock) @@ -462,7 +524,20 @@ static void esdhc_of_set_clock(struct sd
| (div << ESDHC_DIVIDER_SHIFT) | (div << ESDHC_DIVIDER_SHIFT)
| (pre_div << ESDHC_PREDIV_SHIFT)); | (pre_div << ESDHC_PREDIV_SHIFT));
sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL); sdhci_writel(host, temp, ESDHC_SYSTEM_CONTROL);
@ -291,7 +286,7 @@ index 3c27401c..4b0f375b 100644
} }
static void esdhc_pltfm_set_bus_width(struct sdhci_host *host, int width) static void esdhc_pltfm_set_bus_width(struct sdhci_host *host, int width)
@@ -487,6 +562,33 @@ static void esdhc_pltfm_set_bus_width(struct sdhci_host *host, int width) @@ -487,6 +562,33 @@ static void esdhc_pltfm_set_bus_width(st
sdhci_writel(host, ctrl, ESDHC_PROCTL); sdhci_writel(host, ctrl, ESDHC_PROCTL);
} }
@ -325,7 +320,7 @@ index 3c27401c..4b0f375b 100644
static void esdhc_reset(struct sdhci_host *host, u8 mask) static void esdhc_reset(struct sdhci_host *host, u8 mask)
{ {
sdhci_reset(host, mask); sdhci_reset(host, mask);
@@ -495,6 +597,95 @@ static void esdhc_reset(struct sdhci_host *host, u8 mask) @@ -495,6 +597,95 @@ static void esdhc_reset(struct sdhci_hos
sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE); sdhci_writel(host, host->ier, SDHCI_SIGNAL_ENABLE);
} }
@ -421,7 +416,7 @@ index 3c27401c..4b0f375b 100644
#ifdef CONFIG_PM_SLEEP #ifdef CONFIG_PM_SLEEP
static u32 esdhc_proctl; static u32 esdhc_proctl;
static int esdhc_of_suspend(struct device *dev) static int esdhc_of_suspend(struct device *dev)
@@ -575,10 +766,19 @@ static const struct sdhci_pltfm_data sdhci_esdhc_le_pdata = { @@ -575,10 +766,19 @@ static const struct sdhci_pltfm_data sdh
.ops = &sdhci_esdhc_le_ops, .ops = &sdhci_esdhc_le_ops,
}; };
@ -441,7 +436,7 @@ index 3c27401c..4b0f375b 100644
u16 host_ver; u16 host_ver;
pltfm_host = sdhci_priv(host); pltfm_host = sdhci_priv(host);
@@ -588,6 +788,36 @@ static void esdhc_init(struct platform_device *pdev, struct sdhci_host *host) @@ -588,6 +788,36 @@ static void esdhc_init(struct platform_d
esdhc->vendor_ver = (host_ver & SDHCI_VENDOR_VER_MASK) >> esdhc->vendor_ver = (host_ver & SDHCI_VENDOR_VER_MASK) >>
SDHCI_VENDOR_VER_SHIFT; SDHCI_VENDOR_VER_SHIFT;
esdhc->spec_ver = host_ver & SDHCI_SPEC_VER_MASK; esdhc->spec_ver = host_ver & SDHCI_SPEC_VER_MASK;
@ -478,7 +473,7 @@ index 3c27401c..4b0f375b 100644
} }
static int sdhci_esdhc_probe(struct platform_device *pdev) static int sdhci_esdhc_probe(struct platform_device *pdev)
@@ -610,6 +840,11 @@ static int sdhci_esdhc_probe(struct platform_device *pdev) @@ -610,6 +840,11 @@ static int sdhci_esdhc_probe(struct plat
if (IS_ERR(host)) if (IS_ERR(host))
return PTR_ERR(host); return PTR_ERR(host);
@ -490,11 +485,9 @@ index 3c27401c..4b0f375b 100644
esdhc_init(pdev, host); esdhc_init(pdev, host);
sdhci_get_of_property(pdev); sdhci_get_of_property(pdev);
diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c
index 7d275e72..099c3bf5 100644
--- a/drivers/mmc/host/sdhci.c --- a/drivers/mmc/host/sdhci.c
+++ b/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c
@@ -1624,26 +1624,24 @@ static void sdhci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) @@ -1624,26 +1624,24 @@ static void sdhci_set_ios(struct mmc_hos
ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL); ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
@ -535,7 +528,7 @@ index 7d275e72..099c3bf5 100644
if (!host->preset_enabled) { if (!host->preset_enabled) {
sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL); sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
/* /*
@@ -1956,7 +1954,7 @@ static int sdhci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios) @@ -1956,7 +1954,7 @@ static int sdhci_prepare_hs400_tuning(st
return 0; return 0;
} }
@ -544,7 +537,7 @@ index 7d275e72..099c3bf5 100644
{ {
struct sdhci_host *host = mmc_priv(mmc); struct sdhci_host *host = mmc_priv(mmc);
u16 ctrl; u16 ctrl;
@@ -2015,6 +2013,9 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) @@ -2015,6 +2013,9 @@ static int sdhci_execute_tuning(struct m
return err; return err;
} }
@ -554,7 +547,7 @@ index 7d275e72..099c3bf5 100644
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
ctrl |= SDHCI_CTRL_EXEC_TUNING; ctrl |= SDHCI_CTRL_EXEC_TUNING;
if (host->quirks2 & SDHCI_QUIRK2_TUNING_WORK_AROUND) if (host->quirks2 & SDHCI_QUIRK2_TUNING_WORK_AROUND)
@@ -2127,9 +2128,10 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) @@ -2127,9 +2128,10 @@ static int sdhci_execute_tuning(struct m
ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2); ctrl = sdhci_readw(host, SDHCI_HOST_CONTROL2);
@ -568,7 +561,7 @@ index 7d275e72..099c3bf5 100644
} while (ctrl & SDHCI_CTRL_EXEC_TUNING); } while (ctrl & SDHCI_CTRL_EXEC_TUNING);
/* /*
@@ -2165,6 +2167,7 @@ static int sdhci_execute_tuning(struct mmc_host *mmc, u32 opcode) @@ -2165,6 +2167,7 @@ out_unlock:
spin_unlock_irqrestore(&host->lock, flags); spin_unlock_irqrestore(&host->lock, flags);
return err; return err;
} }
@ -576,7 +569,7 @@ index 7d275e72..099c3bf5 100644
static int sdhci_select_drive_strength(struct mmc_card *card, static int sdhci_select_drive_strength(struct mmc_card *card,
unsigned int max_dtr, int host_drv, unsigned int max_dtr, int host_drv,
@@ -2997,6 +3000,8 @@ struct sdhci_host *sdhci_alloc_host(struct device *dev, @@ -2997,6 +3000,8 @@ struct sdhci_host *sdhci_alloc_host(stru
host->flags = SDHCI_SIGNALING_330; host->flags = SDHCI_SIGNALING_330;
@ -585,8 +578,6 @@ index 7d275e72..099c3bf5 100644
return host; return host;
} }
diff --git a/drivers/mmc/host/sdhci.h b/drivers/mmc/host/sdhci.h
index 2570455b..088bed43 100644
--- a/drivers/mmc/host/sdhci.h --- a/drivers/mmc/host/sdhci.h
+++ b/drivers/mmc/host/sdhci.h +++ b/drivers/mmc/host/sdhci.h
@@ -524,6 +524,8 @@ struct sdhci_host { @@ -524,6 +524,8 @@ struct sdhci_host {
@ -598,7 +589,7 @@ index 2570455b..088bed43 100644
unsigned long private[0] ____cacheline_aligned; unsigned long private[0] ____cacheline_aligned;
}; };
@@ -689,6 +691,7 @@ void sdhci_set_power_noreg(struct sdhci_host *host, unsigned char mode, @@ -689,6 +691,7 @@ void sdhci_set_power_noreg(struct sdhci_
void sdhci_set_bus_width(struct sdhci_host *host, int width); void sdhci_set_bus_width(struct sdhci_host *host, int width);
void sdhci_reset(struct sdhci_host *host, u8 mask); void sdhci_reset(struct sdhci_host *host, u8 mask);
void sdhci_set_uhs_signaling(struct sdhci_host *host, unsigned timing); void sdhci_set_uhs_signaling(struct sdhci_host *host, unsigned timing);
@ -606,6 +597,3 @@ index 2570455b..088bed43 100644
#ifdef CONFIG_PM #ifdef CONFIG_PM
extern int sdhci_suspend_host(struct sdhci_host *host); extern int sdhci_suspend_host(struct sdhci_host *host);
--
2.14.1

View file

@ -12,9 +12,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
1 file changed, 665 insertions(+) 1 file changed, 665 insertions(+)
create mode 100644 drivers/rtc/rtc-pcf85263.c create mode 100644 drivers/rtc/rtc-pcf85263.c
diff --git a/drivers/rtc/rtc-pcf85263.c b/drivers/rtc/rtc-pcf85263.c
new file mode 100644
index 00000000..629c2840
--- /dev/null --- /dev/null
+++ b/drivers/rtc/rtc-pcf85263.c +++ b/drivers/rtc/rtc-pcf85263.c
@@ -0,0 +1,665 @@ @@ -0,0 +1,665 @@
@ -683,6 +680,3 @@ index 00000000..629c2840
+MODULE_DESCRIPTION("PCF85263 RTC Driver"); +MODULE_DESCRIPTION("PCF85263 RTC Driver");
+MODULE_LICENSE("GPL"); +MODULE_LICENSE("GPL");
+ +
--
2.14.1

View file

@ -15,8 +15,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/spi/spi-fsl-dspi.c | 309 ++++++++++++++++++++++++++++++++++++++++++++- drivers/spi/spi-fsl-dspi.c | 309 ++++++++++++++++++++++++++++++++++++++++++++-
2 files changed, 305 insertions(+), 5 deletions(-) 2 files changed, 305 insertions(+), 5 deletions(-)
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig
index b7995474..8e281e47 100644
--- a/drivers/spi/Kconfig --- a/drivers/spi/Kconfig
+++ b/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig
@@ -365,6 +365,7 @@ config SPI_FSL_SPI @@ -365,6 +365,7 @@ config SPI_FSL_SPI
@ -27,8 +25,6 @@ index b7995474..8e281e47 100644
depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST
help help
This enables support for the Freescale DSPI controller in master This enables support for the Freescale DSPI controller in master
diff --git a/drivers/spi/spi-fsl-dspi.c b/drivers/spi/spi-fsl-dspi.c
index a67b0ff6..15201645 100644
--- a/drivers/spi/spi-fsl-dspi.c --- a/drivers/spi/spi-fsl-dspi.c
+++ b/drivers/spi/spi-fsl-dspi.c +++ b/drivers/spi/spi-fsl-dspi.c
@@ -15,6 +15,8 @@ @@ -15,6 +15,8 @@
@ -86,7 +82,7 @@ index a67b0ff6..15201645 100644
.max_clock_factor = 2, .max_clock_factor = 2,
}; };
@@ -140,6 +151,23 @@ static const struct fsl_dspi_devtype_data ls2085a_data = { @@ -140,6 +151,23 @@ static const struct fsl_dspi_devtype_dat
.max_clock_factor = 8, .max_clock_factor = 8,
}; };
@ -122,7 +118,7 @@ index a67b0ff6..15201645 100644
static inline int is_double_byte_mode(struct fsl_dspi *dspi) static inline int is_double_byte_mode(struct fsl_dspi *dspi)
{ {
unsigned int val; unsigned int val;
@@ -177,6 +208,255 @@ static inline int is_double_byte_mode(struct fsl_dspi *dspi) @@ -177,6 +208,255 @@ static inline int is_double_byte_mode(st
return ((val & SPI_FRAME_BITS_MASK) == SPI_FRAME_BITS(8)) ? 0 : 1; return ((val & SPI_FRAME_BITS_MASK) == SPI_FRAME_BITS(8)) ? 0 : 1;
} }
@ -378,7 +374,7 @@ index a67b0ff6..15201645 100644
static void hz_to_spi_baud(char *pbr, char *br, int speed_hz, static void hz_to_spi_baud(char *pbr, char *br, int speed_hz,
unsigned long clkrate) unsigned long clkrate)
{ {
@@ -425,6 +705,12 @@ static int dspi_transfer_one_message(struct spi_master *master, @@ -425,6 +705,12 @@ static int dspi_transfer_one_message(str
regmap_write(dspi->regmap, SPI_RSER, SPI_RSER_TCFQE); regmap_write(dspi->regmap, SPI_RSER, SPI_RSER_TCFQE);
dspi_tcfq_write(dspi); dspi_tcfq_write(dspi);
break; break;
@ -391,7 +387,7 @@ index a67b0ff6..15201645 100644
default: default:
dev_err(&dspi->pdev->dev, "unsupported trans_mode %u\n", dev_err(&dspi->pdev->dev, "unsupported trans_mode %u\n",
trans_mode); trans_mode);
@@ -432,9 +718,13 @@ static int dspi_transfer_one_message(struct spi_master *master, @@ -432,9 +718,13 @@ static int dspi_transfer_one_message(str
goto out; goto out;
} }
@ -408,7 +404,7 @@ index a67b0ff6..15201645 100644
if (transfer->delay_usecs) if (transfer->delay_usecs)
udelay(transfer->delay_usecs); udelay(transfer->delay_usecs);
@@ -712,7 +1002,8 @@ static int dspi_probe(struct platform_device *pdev) @@ -712,7 +1002,8 @@ static int dspi_probe(struct platform_de
if (IS_ERR(dspi->regmap)) { if (IS_ERR(dspi->regmap)) {
dev_err(&pdev->dev, "failed to init regmap: %ld\n", dev_err(&pdev->dev, "failed to init regmap: %ld\n",
PTR_ERR(dspi->regmap)); PTR_ERR(dspi->regmap));
@ -418,7 +414,7 @@ index a67b0ff6..15201645 100644
} }
dspi_init(dspi); dspi_init(dspi);
@@ -740,6 +1031,13 @@ static int dspi_probe(struct platform_device *pdev) @@ -740,6 +1031,13 @@ static int dspi_probe(struct platform_de
if (ret) if (ret)
goto out_master_put; goto out_master_put;
@ -432,7 +428,7 @@ index a67b0ff6..15201645 100644
master->max_speed_hz = master->max_speed_hz =
clk_get_rate(dspi->clk) / dspi->devtype_data->max_clock_factor; clk_get_rate(dspi->clk) / dspi->devtype_data->max_clock_factor;
@@ -768,6 +1066,7 @@ static int dspi_remove(struct platform_device *pdev) @@ -768,6 +1066,7 @@ static int dspi_remove(struct platform_d
struct fsl_dspi *dspi = spi_master_get_devdata(master); struct fsl_dspi *dspi = spi_master_get_devdata(master);
/* Disconnect from the SPI framework */ /* Disconnect from the SPI framework */
@ -440,6 +436,3 @@ index a67b0ff6..15201645 100644
clk_disable_unprepare(dspi->clk); clk_disable_unprepare(dspi->clk);
spi_unregister_master(dspi->master); spi_unregister_master(dspi->master);
--
2.14.1

View file

@ -13,8 +13,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
drivers/tty/serial/fsl_lpuart.c | 66 ++++++++++++++++++++++++++++------------- drivers/tty/serial/fsl_lpuart.c | 66 ++++++++++++++++++++++++++++-------------
1 file changed, 46 insertions(+), 20 deletions(-) 1 file changed, 46 insertions(+), 20 deletions(-)
diff --git a/drivers/tty/serial/fsl_lpuart.c b/drivers/tty/serial/fsl_lpuart.c
index 76103f2c..61453820 100644
--- a/drivers/tty/serial/fsl_lpuart.c --- a/drivers/tty/serial/fsl_lpuart.c
+++ b/drivers/tty/serial/fsl_lpuart.c +++ b/drivers/tty/serial/fsl_lpuart.c
@@ -231,6 +231,8 @@ @@ -231,6 +231,8 @@
@ -26,7 +24,7 @@ index 76103f2c..61453820 100644
struct lpuart_port { struct lpuart_port {
struct uart_port port; struct uart_port port;
struct clk *clk; struct clk *clk;
@@ -1348,6 +1350,18 @@ lpuart_set_termios(struct uart_port *port, struct ktermios *termios, @@ -1348,6 +1350,18 @@ lpuart_set_termios(struct uart_port *por
/* ask the core to calculate the divisor */ /* ask the core to calculate the divisor */
baud = uart_get_baud_rate(port, termios, old, 50, port->uartclk / 16); baud = uart_get_baud_rate(port, termios, old, 50, port->uartclk / 16);
@ -45,7 +43,7 @@ index 76103f2c..61453820 100644
spin_lock_irqsave(&sport->port.lock, flags); spin_lock_irqsave(&sport->port.lock, flags);
sport->port.read_status_mask = 0; sport->port.read_status_mask = 0;
@@ -1397,22 +1411,11 @@ lpuart_set_termios(struct uart_port *port, struct ktermios *termios, @@ -1397,22 +1411,11 @@ lpuart_set_termios(struct uart_port *por
/* restore control register */ /* restore control register */
writeb(old_cr2, sport->port.membase + UARTCR2); writeb(old_cr2, sport->port.membase + UARTCR2);
@ -71,7 +69,7 @@ index 76103f2c..61453820 100644
} }
spin_unlock_irqrestore(&sport->port.lock, flags); spin_unlock_irqrestore(&sport->port.lock, flags);
@@ -1640,6 +1643,13 @@ lpuart_console_write(struct console *co, const char *s, unsigned int count) @@ -1640,6 +1643,13 @@ lpuart_console_write(struct console *co,
{ {
struct lpuart_port *sport = lpuart_ports[co->index]; struct lpuart_port *sport = lpuart_ports[co->index];
unsigned char old_cr2, cr2; unsigned char old_cr2, cr2;
@ -85,7 +83,7 @@ index 76103f2c..61453820 100644
/* first save CR2 and then disable interrupts */ /* first save CR2 and then disable interrupts */
cr2 = old_cr2 = readb(sport->port.membase + UARTCR2); cr2 = old_cr2 = readb(sport->port.membase + UARTCR2);
@@ -1654,6 +1664,9 @@ lpuart_console_write(struct console *co, const char *s, unsigned int count) @@ -1654,6 +1664,9 @@ lpuart_console_write(struct console *co,
barrier(); barrier();
writeb(old_cr2, sport->port.membase + UARTCR2); writeb(old_cr2, sport->port.membase + UARTCR2);
@ -95,7 +93,7 @@ index 76103f2c..61453820 100644
} }
static void static void
@@ -1661,6 +1674,13 @@ lpuart32_console_write(struct console *co, const char *s, unsigned int count) @@ -1661,6 +1674,13 @@ lpuart32_console_write(struct console *c
{ {
struct lpuart_port *sport = lpuart_ports[co->index]; struct lpuart_port *sport = lpuart_ports[co->index];
unsigned long old_cr, cr; unsigned long old_cr, cr;
@ -109,7 +107,7 @@ index 76103f2c..61453820 100644
/* first save CR2 and then disable interrupts */ /* first save CR2 and then disable interrupts */
cr = old_cr = lpuart32_read(sport->port.membase + UARTCTRL); cr = old_cr = lpuart32_read(sport->port.membase + UARTCTRL);
@@ -1675,6 +1695,9 @@ lpuart32_console_write(struct console *co, const char *s, unsigned int count) @@ -1675,6 +1695,9 @@ lpuart32_console_write(struct console *c
barrier(); barrier();
lpuart32_write(old_cr, sport->port.membase + UARTCTRL); lpuart32_write(old_cr, sport->port.membase + UARTCTRL);
@ -119,7 +117,7 @@ index 76103f2c..61453820 100644
} }
/* /*
@@ -1899,9 +1922,13 @@ static int lpuart_probe(struct platform_device *pdev) @@ -1899,9 +1922,13 @@ static int lpuart_probe(struct platform_
ret = of_alias_get_id(np, "serial"); ret = of_alias_get_id(np, "serial");
if (ret < 0) { if (ret < 0) {
@ -135,7 +133,7 @@ index 76103f2c..61453820 100644
sport->port.line = ret; sport->port.line = ret;
sport->lpuart32 = of_device_is_compatible(np, "fsl,ls1021a-lpuart"); sport->lpuart32 = of_device_is_compatible(np, "fsl,ls1021a-lpuart");
@@ -1983,6 +2010,7 @@ static int lpuart_remove(struct platform_device *pdev) @@ -1983,6 +2010,7 @@ static int lpuart_remove(struct platform
struct lpuart_port *sport = platform_get_drvdata(pdev); struct lpuart_port *sport = platform_get_drvdata(pdev);
uart_remove_one_port(&lpuart_reg, &sport->port); uart_remove_one_port(&lpuart_reg, &sport->port);
@ -143,7 +141,7 @@ index 76103f2c..61453820 100644
clk_disable_unprepare(sport->clk); clk_disable_unprepare(sport->clk);
@@ -2067,12 +2095,10 @@ static int lpuart_resume(struct device *dev) @@ -2067,12 +2095,10 @@ static int lpuart_resume(struct device *
if (sport->lpuart_dma_rx_use) { if (sport->lpuart_dma_rx_use) {
if (sport->port.irq_wake) { if (sport->port.irq_wake) {
@ -158,6 +156,3 @@ index 76103f2c..61453820 100644
} }
} }
--
2.14.1

View file

@ -34,11 +34,9 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
include/linux/usb/of.h | 2 + include/linux/usb/of.h | 2 +
17 files changed, 726 insertions(+), 73 deletions(-) 17 files changed, 726 insertions(+), 73 deletions(-)
diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
index 5ef8da6e..176dee01 100644
--- a/drivers/usb/common/common.c --- a/drivers/usb/common/common.c
+++ b/drivers/usb/common/common.c +++ b/drivers/usb/common/common.c
@@ -105,6 +105,56 @@ static const char *const usb_dr_modes[] = { @@ -105,6 +105,56 @@ static const char *const usb_dr_modes[]
[USB_DR_MODE_OTG] = "otg", [USB_DR_MODE_OTG] = "otg",
}; };
@ -95,11 +93,9 @@ index 5ef8da6e..176dee01 100644
static enum usb_dr_mode usb_get_dr_mode_from_string(const char *str) static enum usb_dr_mode usb_get_dr_mode_from_string(const char *str)
{ {
int ret; int ret;
diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index 80d4ef31..e23acf03 100644
--- a/drivers/usb/core/hub.c --- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c
@@ -4412,6 +4412,14 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1, @@ -4412,6 +4412,14 @@ hub_port_init(struct usb_hub *hub, struc
else else
speed = usb_speed_string(udev->speed); speed = usb_speed_string(udev->speed);
@ -114,11 +110,9 @@ index 80d4ef31..e23acf03 100644
if (udev->speed < USB_SPEED_SUPER) if (udev->speed < USB_SPEED_SUPER)
dev_info(&udev->dev, dev_info(&udev->dev,
"%s %s USB device number %d using %s\n", "%s %s USB device number %d using %s\n",
diff --git a/drivers/usb/dwc3/core.c b/drivers/usb/dwc3/core.c
index fea44690..e34ef90a 100644
--- a/drivers/usb/dwc3/core.c --- a/drivers/usb/dwc3/core.c
+++ b/drivers/usb/dwc3/core.c +++ b/drivers/usb/dwc3/core.c
@@ -58,6 +58,7 @@ static int dwc3_get_dr_mode(struct dwc3 *dwc) @@ -58,6 +58,7 @@ static int dwc3_get_dr_mode(struct dwc3
enum usb_dr_mode mode; enum usb_dr_mode mode;
struct device *dev = dwc->dev; struct device *dev = dwc->dev;
unsigned int hw_mode; unsigned int hw_mode;
@ -126,7 +120,7 @@ index fea44690..e34ef90a 100644
if (dwc->dr_mode == USB_DR_MODE_UNKNOWN) if (dwc->dr_mode == USB_DR_MODE_UNKNOWN)
dwc->dr_mode = USB_DR_MODE_OTG; dwc->dr_mode = USB_DR_MODE_OTG;
@@ -83,6 +84,24 @@ static int dwc3_get_dr_mode(struct dwc3 *dwc) @@ -83,6 +84,24 @@ static int dwc3_get_dr_mode(struct dwc3
mode = USB_DR_MODE_HOST; mode = USB_DR_MODE_HOST;
break; break;
default: default:
@ -151,7 +145,7 @@ index fea44690..e34ef90a 100644
if (IS_ENABLED(CONFIG_USB_DWC3_HOST)) if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
mode = USB_DR_MODE_HOST; mode = USB_DR_MODE_HOST;
else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET)) else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET))
@@ -213,8 +232,9 @@ static void dwc3_frame_length_adjustment(struct dwc3 *dwc) @@ -213,8 +232,9 @@ static void dwc3_frame_length_adjustment
reg = dwc3_readl(dwc->regs, DWC3_GFLADJ); reg = dwc3_readl(dwc->regs, DWC3_GFLADJ);
dft = reg & DWC3_GFLADJ_30MHZ_MASK; dft = reg & DWC3_GFLADJ_30MHZ_MASK;
@ -163,7 +157,7 @@ index fea44690..e34ef90a 100644
reg &= ~DWC3_GFLADJ_30MHZ_MASK; reg &= ~DWC3_GFLADJ_30MHZ_MASK;
reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj; reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj;
dwc3_writel(dwc->regs, DWC3_GFLADJ, reg); dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
@@ -579,6 +599,99 @@ static int dwc3_phy_setup(struct dwc3 *dwc) @@ -579,6 +599,99 @@ static int dwc3_phy_setup(struct dwc3 *d
return 0; return 0;
} }
@ -263,7 +257,7 @@ index fea44690..e34ef90a 100644
static void dwc3_core_exit(struct dwc3 *dwc) static void dwc3_core_exit(struct dwc3 *dwc)
{ {
dwc3_event_buffers_cleanup(dwc); dwc3_event_buffers_cleanup(dwc);
@@ -721,6 +834,8 @@ static int dwc3_core_init(struct dwc3 *dwc) @@ -721,6 +834,8 @@ static int dwc3_core_init(struct dwc3 *d
if (ret) if (ret)
goto err1; goto err1;
@ -272,7 +266,7 @@ index fea44690..e34ef90a 100644
/* Adjust Frame Length */ /* Adjust Frame Length */
dwc3_frame_length_adjustment(dwc); dwc3_frame_length_adjustment(dwc);
@@ -919,11 +1034,109 @@ static void dwc3_core_exit_mode(struct dwc3 *dwc) @@ -919,11 +1034,109 @@ static void dwc3_core_exit_mode(struct d
} }
} }
@ -382,7 +376,7 @@ index fea44690..e34ef90a 100644
struct resource *res; struct resource *res;
struct dwc3 *dwc; struct dwc3 *dwc;
u8 lpm_nyet_threshold; u8 lpm_nyet_threshold;
@@ -955,6 +1168,11 @@ static int dwc3_probe(struct platform_device *pdev) @@ -955,6 +1168,11 @@ static int dwc3_probe(struct platform_de
dwc->xhci_resources[0].flags = res->flags; dwc->xhci_resources[0].flags = res->flags;
dwc->xhci_resources[0].name = res->name; dwc->xhci_resources[0].name = res->name;
@ -394,7 +388,7 @@ index fea44690..e34ef90a 100644
res->start += DWC3_GLOBALS_REGS_START; res->start += DWC3_GLOBALS_REGS_START;
/* /*
@@ -997,6 +1215,12 @@ static int dwc3_probe(struct platform_device *pdev) @@ -997,6 +1215,12 @@ static int dwc3_probe(struct platform_de
dwc->usb3_lpm_capable = device_property_read_bool(dev, dwc->usb3_lpm_capable = device_property_read_bool(dev,
"snps,usb3_lpm_capable"); "snps,usb3_lpm_capable");
@ -407,7 +401,7 @@ index fea44690..e34ef90a 100644
dwc->disable_scramble_quirk = device_property_read_bool(dev, dwc->disable_scramble_quirk = device_property_read_bool(dev,
"snps,disable_scramble_quirk"); "snps,disable_scramble_quirk");
dwc->u2exit_lfps_quirk = device_property_read_bool(dev, dwc->u2exit_lfps_quirk = device_property_read_bool(dev,
@@ -1041,6 +1265,8 @@ static int dwc3_probe(struct platform_device *pdev) @@ -1041,6 +1265,8 @@ static int dwc3_probe(struct platform_de
dwc->hird_threshold = hird_threshold dwc->hird_threshold = hird_threshold
| (dwc->is_utmi_l1_suspend << 4); | (dwc->is_utmi_l1_suspend << 4);
@ -416,7 +410,7 @@ index fea44690..e34ef90a 100644
platform_set_drvdata(pdev, dwc); platform_set_drvdata(pdev, dwc);
dwc3_cache_hwparams(dwc); dwc3_cache_hwparams(dwc);
@@ -1064,6 +1290,11 @@ static int dwc3_probe(struct platform_device *pdev) @@ -1064,6 +1290,11 @@ static int dwc3_probe(struct platform_de
if (ret < 0) if (ret < 0)
goto err1; goto err1;
@ -428,8 +422,6 @@ index fea44690..e34ef90a 100644
pm_runtime_forbid(dev); pm_runtime_forbid(dev);
ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE); ret = dwc3_alloc_event_buffers(dwc, DWC3_EVENT_BUFFERS_SIZE);
diff --git a/drivers/usb/dwc3/core.h b/drivers/usb/dwc3/core.h
index 884c4371..9151eef4 100644
--- a/drivers/usb/dwc3/core.h --- a/drivers/usb/dwc3/core.h
+++ b/drivers/usb/dwc3/core.h +++ b/drivers/usb/dwc3/core.h
@@ -26,6 +26,7 @@ @@ -26,6 +26,7 @@
@ -547,8 +539,6 @@ index 884c4371..9151eef4 100644
}; };
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
diff --git a/drivers/usb/dwc3/host.c b/drivers/usb/dwc3/host.c
index 626d87d5..f1b98273 100644
--- a/drivers/usb/dwc3/host.c --- a/drivers/usb/dwc3/host.c
+++ b/drivers/usb/dwc3/host.c +++ b/drivers/usb/dwc3/host.c
@@ -17,6 +17,8 @@ @@ -17,6 +17,8 @@
@ -584,8 +574,6 @@ index 626d87d5..f1b98273 100644
dwc->xhci = xhci; dwc->xhci = xhci;
ret = platform_device_add_resources(xhci, dwc->xhci_resources, ret = platform_device_add_resources(xhci, dwc->xhci_resources,
diff --git a/drivers/usb/gadget/udc/fsl_udc_core.c b/drivers/usb/gadget/udc/fsl_udc_core.c
index aac0ce8a..fe49e758 100644
--- a/drivers/usb/gadget/udc/fsl_udc_core.c --- a/drivers/usb/gadget/udc/fsl_udc_core.c
+++ b/drivers/usb/gadget/udc/fsl_udc_core.c +++ b/drivers/usb/gadget/udc/fsl_udc_core.c
@@ -198,7 +198,11 @@ __acquires(ep->udc->lock) @@ -198,7 +198,11 @@ __acquires(ep->udc->lock)
@ -601,7 +589,7 @@ index aac0ce8a..fe49e758 100644
spin_lock(&ep->udc->lock); spin_lock(&ep->udc->lock);
ep->stopped = stopped; ep->stopped = stopped;
@@ -245,10 +249,10 @@ static int dr_controller_setup(struct fsl_udc *udc) @@ -245,10 +249,10 @@ static int dr_controller_setup(struct fs
if (udc->pdata->have_sysif_regs) { if (udc->pdata->have_sysif_regs) {
if (udc->pdata->controller_ver) { if (udc->pdata->controller_ver) {
/* controller version 1.6 or above */ /* controller version 1.6 or above */
@ -614,7 +602,7 @@ index aac0ce8a..fe49e758 100644
} }
} }
portctrl |= PORTSCX_PTS_ULPI; portctrl |= PORTSCX_PTS_ULPI;
@@ -257,13 +261,14 @@ static int dr_controller_setup(struct fsl_udc *udc) @@ -257,13 +261,14 @@ static int dr_controller_setup(struct fs
portctrl |= PORTSCX_PTW_16BIT; portctrl |= PORTSCX_PTW_16BIT;
/* fall through */ /* fall through */
case FSL_USB2_PHY_UTMI: case FSL_USB2_PHY_UTMI:
@ -631,7 +619,7 @@ index aac0ce8a..fe49e758 100644
mdelay(FSL_UTMI_PHY_DLY); /* Delay for UTMI mdelay(FSL_UTMI_PHY_DLY); /* Delay for UTMI
PHY CLK to become stable - 10ms*/ PHY CLK to become stable - 10ms*/
} }
@@ -329,22 +334,22 @@ static int dr_controller_setup(struct fsl_udc *udc) @@ -329,22 +334,22 @@ static int dr_controller_setup(struct fs
/* Config control enable i/o output, cpu endian register */ /* Config control enable i/o output, cpu endian register */
#ifndef CONFIG_ARCH_MXC #ifndef CONFIG_ARCH_MXC
if (udc->pdata->have_sysif_regs) { if (udc->pdata->have_sysif_regs) {
@ -659,7 +647,7 @@ index aac0ce8a..fe49e758 100644
} }
#endif #endif
@@ -1057,7 +1062,7 @@ static int fsl_ep_fifo_status(struct usb_ep *_ep) @@ -1057,7 +1062,7 @@ static int fsl_ep_fifo_status(struct usb
struct ep_queue_head *qh; struct ep_queue_head *qh;
ep = container_of(_ep, struct fsl_ep, ep); ep = container_of(_ep, struct fsl_ep, ep);
@ -668,7 +656,7 @@ index aac0ce8a..fe49e758 100644
return -ENODEV; return -ENODEV;
udc = (struct fsl_udc *)ep->udc; udc = (struct fsl_udc *)ep->udc;
@@ -1599,14 +1604,13 @@ static int process_ep_req(struct fsl_udc *udc, int pipe, @@ -1599,14 +1604,13 @@ static int process_ep_req(struct fsl_udc
struct fsl_req *curr_req) struct fsl_req *curr_req)
{ {
struct ep_td_struct *curr_td; struct ep_td_struct *curr_td;
@ -684,7 +672,7 @@ index aac0ce8a..fe49e758 100644
actual = curr_req->req.length; actual = curr_req->req.length;
for (j = 0; j < curr_req->dtd_count; j++) { for (j = 0; j < curr_req->dtd_count; j++) {
@@ -1651,11 +1655,9 @@ static int process_ep_req(struct fsl_udc *udc, int pipe, @@ -1651,11 +1655,9 @@ static int process_ep_req(struct fsl_udc
status = -EPROTO; status = -EPROTO;
break; break;
} else { } else {
@ -696,7 +684,7 @@ index aac0ce8a..fe49e758 100644
VDBG("dTD transmitted successful"); VDBG("dTD transmitted successful");
} }
@@ -1698,7 +1700,7 @@ static void dtd_complete_irq(struct fsl_udc *udc) @@ -1698,7 +1700,7 @@ static void dtd_complete_irq(struct fsl_
curr_ep = get_ep_by_pipe(udc, i); curr_ep = get_ep_by_pipe(udc, i);
/* If the ep is configured */ /* If the ep is configured */
@ -705,7 +693,7 @@ index aac0ce8a..fe49e758 100644
WARNING("Invalid EP?"); WARNING("Invalid EP?");
continue; continue;
} }
@@ -2420,10 +2422,12 @@ static int fsl_udc_probe(struct platform_device *pdev) @@ -2420,10 +2422,12 @@ static int fsl_udc_probe(struct platform
usb_sys_regs = (void *)dr_regs + USB_DR_SYS_OFFSET; usb_sys_regs = (void *)dr_regs + USB_DR_SYS_OFFSET;
#endif #endif
@ -718,7 +706,7 @@ index aac0ce8a..fe49e758 100644
/* Read Device Controller Capability Parameters register */ /* Read Device Controller Capability Parameters register */
dccparams = fsl_readl(&dr_regs->dccparams); dccparams = fsl_readl(&dr_regs->dccparams);
@@ -2463,9 +2467,11 @@ static int fsl_udc_probe(struct platform_device *pdev) @@ -2463,9 +2467,11 @@ static int fsl_udc_probe(struct platform
dr_controller_setup(udc_controller); dr_controller_setup(udc_controller);
} }
@ -730,7 +718,7 @@ index aac0ce8a..fe49e758 100644
/* Setup gadget structure */ /* Setup gadget structure */
udc_controller->gadget.ops = &fsl_gadget_ops; udc_controller->gadget.ops = &fsl_gadget_ops;
@@ -2478,6 +2484,7 @@ static int fsl_udc_probe(struct platform_device *pdev) @@ -2478,6 +2484,7 @@ static int fsl_udc_probe(struct platform
/* Setup gadget.dev and register with kernel */ /* Setup gadget.dev and register with kernel */
dev_set_name(&udc_controller->gadget.dev, "gadget"); dev_set_name(&udc_controller->gadget.dev, "gadget");
udc_controller->gadget.dev.of_node = pdev->dev.of_node; udc_controller->gadget.dev.of_node = pdev->dev.of_node;
@ -738,7 +726,7 @@ index aac0ce8a..fe49e758 100644
if (!IS_ERR_OR_NULL(udc_controller->transceiver)) if (!IS_ERR_OR_NULL(udc_controller->transceiver))
udc_controller->gadget.is_otg = 1; udc_controller->gadget.is_otg = 1;
@@ -2529,7 +2536,9 @@ static int fsl_udc_probe(struct platform_device *pdev) @@ -2529,7 +2536,9 @@ err_free_irq:
err_iounmap: err_iounmap:
if (pdata->exit) if (pdata->exit)
pdata->exit(pdev); pdata->exit(pdev);
@ -748,7 +736,7 @@ index aac0ce8a..fe49e758 100644
err_iounmap_noclk: err_iounmap_noclk:
iounmap(dr_regs); iounmap(dr_regs);
err_release_mem_region: err_release_mem_region:
@@ -2557,8 +2566,9 @@ static int fsl_udc_remove(struct platform_device *pdev) @@ -2557,8 +2566,9 @@ static int fsl_udc_remove(struct platfor
udc_controller->done = &done; udc_controller->done = &done;
usb_del_gadget_udc(&udc_controller->gadget); usb_del_gadget_udc(&udc_controller->gadget);
@ -759,7 +747,7 @@ index aac0ce8a..fe49e758 100644
/* DR has been stopped in usb_gadget_unregister_driver() */ /* DR has been stopped in usb_gadget_unregister_driver() */
remove_proc_file(); remove_proc_file();
@@ -2570,7 +2580,7 @@ static int fsl_udc_remove(struct platform_device *pdev) @@ -2570,7 +2580,7 @@ static int fsl_udc_remove(struct platfor
dma_pool_destroy(udc_controller->td_pool); dma_pool_destroy(udc_controller->td_pool);
free_irq(udc_controller->irq, udc_controller); free_irq(udc_controller->irq, udc_controller);
iounmap(dr_regs); iounmap(dr_regs);
@ -768,8 +756,6 @@ index aac0ce8a..fe49e758 100644
release_mem_region(res->start, resource_size(res)); release_mem_region(res->start, resource_size(res));
/* free udc --wait for the release() finished */ /* free udc --wait for the release() finished */
diff --git a/drivers/usb/gadget/udc/fsl_usb2_udc.h b/drivers/usb/gadget/udc/fsl_usb2_udc.h
index 84715625..f76c4ddd 100644
--- a/drivers/usb/gadget/udc/fsl_usb2_udc.h --- a/drivers/usb/gadget/udc/fsl_usb2_udc.h
+++ b/drivers/usb/gadget/udc/fsl_usb2_udc.h +++ b/drivers/usb/gadget/udc/fsl_usb2_udc.h
@@ -20,6 +20,10 @@ @@ -20,6 +20,10 @@
@ -802,8 +788,6 @@ index 84715625..f76c4ddd 100644
#endif #endif
#endif #endif
diff --git a/drivers/usb/host/Kconfig b/drivers/usb/host/Kconfig
index 0b80cee3..a57d95c3 100644
--- a/drivers/usb/host/Kconfig --- a/drivers/usb/host/Kconfig
+++ b/drivers/usb/host/Kconfig +++ b/drivers/usb/host/Kconfig
@@ -165,7 +165,7 @@ config XPS_USB_HCD_XILINX @@ -165,7 +165,7 @@ config XPS_USB_HCD_XILINX
@ -815,8 +799,6 @@ index 0b80cee3..a57d95c3 100644
select USB_EHCI_ROOT_HUB_TT select USB_EHCI_ROOT_HUB_TT
---help--- ---help---
Variation of ARC USB block used in some Freescale chips. Variation of ARC USB block used in some Freescale chips.
diff --git a/drivers/usb/host/ehci-fsl.c b/drivers/usb/host/ehci-fsl.c
index 9f5ffb62..cd16860c 100644
--- a/drivers/usb/host/ehci-fsl.c --- a/drivers/usb/host/ehci-fsl.c
+++ b/drivers/usb/host/ehci-fsl.c +++ b/drivers/usb/host/ehci-fsl.c
@@ -37,13 +37,141 @@ @@ -37,13 +37,141 @@
@ -961,7 +943,7 @@ index 9f5ffb62..cd16860c 100644
/* configure so an HC device and id are always provided */ /* configure so an HC device and id are always provided */
/* always called with process context; sleeping is OK */ /* always called with process context; sleeping is OK */
@@ -131,6 +259,12 @@ static int fsl_ehci_drv_probe(struct platform_device *pdev) @@ -131,6 +259,12 @@ static int fsl_ehci_drv_probe(struct pla
clrsetbits_be32(hcd->regs + FSL_SOC_USB_CTRL, clrsetbits_be32(hcd->regs + FSL_SOC_USB_CTRL,
CONTROL_REGISTER_W1C_MASK, 0x4); CONTROL_REGISTER_W1C_MASK, 0x4);
@ -974,7 +956,7 @@ index 9f5ffb62..cd16860c 100644
/* /*
* Enable UTMI phy and program PTS field in UTMI mode before asserting * Enable UTMI phy and program PTS field in UTMI mode before asserting
* controller reset for USB Controller version 2.5 * controller reset for USB Controller version 2.5
@@ -143,16 +277,20 @@ static int fsl_ehci_drv_probe(struct platform_device *pdev) @@ -143,16 +277,20 @@ static int fsl_ehci_drv_probe(struct pla
/* Don't need to set host mode here. It will be done by tdi_reset() */ /* Don't need to set host mode here. It will be done by tdi_reset() */
@ -997,7 +979,7 @@ index 9f5ffb62..cd16860c 100644
dev_dbg(&pdev->dev, "hcd=0x%p ehci=0x%p, phy=0x%p\n", dev_dbg(&pdev->dev, "hcd=0x%p ehci=0x%p, phy=0x%p\n",
hcd, ehci, hcd->usb_phy); hcd, ehci, hcd->usb_phy);
@@ -168,6 +306,11 @@ static int fsl_ehci_drv_probe(struct platform_device *pdev) @@ -168,6 +306,11 @@ static int fsl_ehci_drv_probe(struct pla
retval = -ENODEV; retval = -ENODEV;
goto err2; goto err2;
} }
@ -1009,7 +991,7 @@ index 9f5ffb62..cd16860c 100644
} }
#endif #endif
return retval; return retval;
@@ -181,6 +324,18 @@ static int fsl_ehci_drv_probe(struct platform_device *pdev) @@ -181,6 +324,18 @@ static int fsl_ehci_drv_probe(struct pla
return retval; return retval;
} }
@ -1028,7 +1010,7 @@ index 9f5ffb62..cd16860c 100644
static int ehci_fsl_setup_phy(struct usb_hcd *hcd, static int ehci_fsl_setup_phy(struct usb_hcd *hcd,
enum fsl_usb2_phy_modes phy_mode, enum fsl_usb2_phy_modes phy_mode,
unsigned int port_offset) unsigned int port_offset)
@@ -219,6 +374,21 @@ static int ehci_fsl_setup_phy(struct usb_hcd *hcd, @@ -219,6 +374,21 @@ static int ehci_fsl_setup_phy(struct usb
/* fall through */ /* fall through */
case FSL_USB2_PHY_UTMI: case FSL_USB2_PHY_UTMI:
case FSL_USB2_PHY_UTMI_DUAL: case FSL_USB2_PHY_UTMI_DUAL:
@ -1050,7 +1032,7 @@ index 9f5ffb62..cd16860c 100644
if (pdata->have_sysif_regs && pdata->controller_ver) { if (pdata->have_sysif_regs && pdata->controller_ver) {
/* controller version 1.6 or above */ /* controller version 1.6 or above */
clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL, clrsetbits_be32(non_ehci + FSL_SOC_USB_CTRL,
@@ -292,14 +462,9 @@ static int ehci_fsl_usb_setup(struct ehci_hcd *ehci) @@ -292,14 +462,9 @@ static int ehci_fsl_usb_setup(struct ehc
return -EINVAL; return -EINVAL;
if (pdata->operating_mode == FSL_USB2_MPH_HOST) { if (pdata->operating_mode == FSL_USB2_MPH_HOST) {
@ -1066,7 +1048,7 @@ index 9f5ffb62..cd16860c 100644
ehci->has_fsl_port_bug = 1; ehci->has_fsl_port_bug = 1;
if (pdata->port_enables & FSL_USB2_PORT0_ENABLED) if (pdata->port_enables & FSL_USB2_PORT0_ENABLED)
@@ -379,16 +544,57 @@ static int ehci_fsl_setup(struct usb_hcd *hcd) @@ -379,16 +544,57 @@ static int ehci_fsl_setup(struct usb_hcd
return retval; return retval;
} }
@ -1131,7 +1113,7 @@ index 9f5ffb62..cd16860c 100644
#ifdef CONFIG_PPC_MPC512x #ifdef CONFIG_PPC_MPC512x
static int ehci_fsl_mpc512x_drv_suspend(struct device *dev) static int ehci_fsl_mpc512x_drv_suspend(struct device *dev)
@@ -535,26 +741,43 @@ static inline int ehci_fsl_mpc512x_drv_resume(struct device *dev) @@ -535,26 +741,43 @@ static inline int ehci_fsl_mpc512x_drv_r
} }
#endif /* CONFIG_PPC_MPC512x */ #endif /* CONFIG_PPC_MPC512x */
@ -1182,7 +1164,7 @@ index 9f5ffb62..cd16860c 100644
if (!fsl_deep_sleep()) if (!fsl_deep_sleep())
return 0; return 0;
@@ -568,12 +791,34 @@ static int ehci_fsl_drv_resume(struct device *dev) @@ -568,12 +791,34 @@ static int ehci_fsl_drv_resume(struct de
struct ehci_fsl *ehci_fsl = hcd_to_ehci_fsl(hcd); struct ehci_fsl *ehci_fsl = hcd_to_ehci_fsl(hcd);
struct ehci_hcd *ehci = hcd_to_ehci(hcd); struct ehci_hcd *ehci = hcd_to_ehci(hcd);
void __iomem *non_ehci = hcd->regs; void __iomem *non_ehci = hcd->regs;
@ -1217,8 +1199,6 @@ index 9f5ffb62..cd16860c 100644
ehci_prepare_ports_for_controller_resume(ehci); ehci_prepare_ports_for_controller_resume(ehci);
if (!fsl_deep_sleep()) if (!fsl_deep_sleep())
return 0; return 0;
diff --git a/drivers/usb/host/ehci-fsl.h b/drivers/usb/host/ehci-fsl.h
index 1a8a60a5..42ea2976 100644
--- a/drivers/usb/host/ehci-fsl.h --- a/drivers/usb/host/ehci-fsl.h
+++ b/drivers/usb/host/ehci-fsl.h +++ b/drivers/usb/host/ehci-fsl.h
@@ -63,4 +63,7 @@ @@ -63,4 +63,7 @@
@ -1229,11 +1209,9 @@ index 1a8a60a5..42ea2976 100644
+/* Retry count for checking UTMI PHY CLK validity */ +/* Retry count for checking UTMI PHY CLK validity */
+#define UTMI_PHY_CLK_VALID_CHK_RETRY 5 +#define UTMI_PHY_CLK_VALID_CHK_RETRY 5
#endif /* _EHCI_FSL_H */ #endif /* _EHCI_FSL_H */
diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
index 255acca8..c8838c33 100644
--- a/drivers/usb/host/ehci-hub.c --- a/drivers/usb/host/ehci-hub.c
+++ b/drivers/usb/host/ehci-hub.c +++ b/drivers/usb/host/ehci-hub.c
@@ -305,6 +305,8 @@ static int ehci_bus_suspend (struct usb_hcd *hcd) @@ -305,6 +305,8 @@ static int ehci_bus_suspend (struct usb_
USB_PORT_STAT_HIGH_SPEED) USB_PORT_STAT_HIGH_SPEED)
fs_idle_delay = true; fs_idle_delay = true;
ehci_writel(ehci, t2, reg); ehci_writel(ehci, t2, reg);
@ -1242,11 +1220,9 @@ index 255acca8..c8838c33 100644
changed = 1; changed = 1;
} }
} }
diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
index 3b06bb77..f296d1fb 100644
--- a/drivers/usb/host/ehci.h --- a/drivers/usb/host/ehci.h
+++ b/drivers/usb/host/ehci.h +++ b/drivers/usb/host/ehci.h
@@ -180,6 +180,9 @@ struct ehci_hcd { /* one per controller */ @@ -180,6 +180,9 @@ struct ehci_hcd { /* one per controlle
unsigned periodic_count; /* periodic activity count */ unsigned periodic_count; /* periodic activity count */
unsigned uframe_periodic_max; /* max periodic time per uframe */ unsigned uframe_periodic_max; /* max periodic time per uframe */
@ -1256,7 +1232,7 @@ index 3b06bb77..f296d1fb 100644
/* list of itds & sitds completed while now_frame was still active */ /* list of itds & sitds completed while now_frame was still active */
struct list_head cached_itd_list; struct list_head cached_itd_list;
@@ -706,8 +709,10 @@ ehci_port_speed(struct ehci_hcd *ehci, unsigned int portsc) @@ -706,8 +709,10 @@ ehci_port_speed(struct ehci_hcd *ehci, u
* incoming packets get corrupted in HS mode * incoming packets get corrupted in HS mode
*/ */
#define ehci_has_fsl_hs_errata(e) ((e)->has_fsl_hs_errata) #define ehci_has_fsl_hs_errata(e) ((e)->has_fsl_hs_errata)
@ -1267,11 +1243,9 @@ index 3b06bb77..f296d1fb 100644
#endif #endif
/* /*
diff --git a/drivers/usb/host/fsl-mph-dr-of.c b/drivers/usb/host/fsl-mph-dr-of.c
index f07ccb25..1e59ea9f 100644
--- a/drivers/usb/host/fsl-mph-dr-of.c --- a/drivers/usb/host/fsl-mph-dr-of.c
+++ b/drivers/usb/host/fsl-mph-dr-of.c +++ b/drivers/usb/host/fsl-mph-dr-of.c
@@ -226,6 +226,18 @@ static int fsl_usb2_mph_dr_of_probe(struct platform_device *ofdev) @@ -226,6 +226,18 @@ static int fsl_usb2_mph_dr_of_probe(stru
of_property_read_bool(np, "fsl,usb-erratum-a007792"); of_property_read_bool(np, "fsl,usb-erratum-a007792");
pdata->has_fsl_erratum_a005275 = pdata->has_fsl_erratum_a005275 =
of_property_read_bool(np, "fsl,usb-erratum-a005275"); of_property_read_bool(np, "fsl,usb-erratum-a005275");
@ -1290,8 +1264,6 @@ index f07ccb25..1e59ea9f 100644
/* /*
* Determine whether phy_clk_valid needs to be checked * Determine whether phy_clk_valid needs to be checked
diff --git a/drivers/usb/phy/phy-fsl-usb.c b/drivers/usb/phy/phy-fsl-usb.c
index 94eb2923..836355fa 100644
--- a/drivers/usb/phy/phy-fsl-usb.c --- a/drivers/usb/phy/phy-fsl-usb.c
+++ b/drivers/usb/phy/phy-fsl-usb.c +++ b/drivers/usb/phy/phy-fsl-usb.c
@@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
@ -1309,7 +1281,7 @@ index 94eb2923..836355fa 100644
struct device *dev; struct device *dev;
struct fsl_otg *otg_dev = struct fsl_otg *otg_dev =
container_of(otg->usb_phy, struct fsl_otg, phy); container_of(otg->usb_phy, struct fsl_otg, phy);
@@ -486,6 +487,7 @@ int fsl_otg_start_host(struct otg_fsm *fsm, int on) @@ -486,6 +487,7 @@ int fsl_otg_start_host(struct otg_fsm *f
otg_reset_controller(); otg_reset_controller();
VDBG("host on......\n"); VDBG("host on......\n");
if (dev->driver->pm && dev->driver->pm->resume) { if (dev->driver->pm && dev->driver->pm->resume) {
@ -1317,7 +1289,7 @@ index 94eb2923..836355fa 100644
retval = dev->driver->pm->resume(dev); retval = dev->driver->pm->resume(dev);
if (fsm->id) { if (fsm->id) {
/* default-b */ /* default-b */
@@ -510,8 +512,11 @@ int fsl_otg_start_host(struct otg_fsm *fsm, int on) @@ -510,8 +512,11 @@ int fsl_otg_start_host(struct otg_fsm *f
else { else {
VDBG("host off......\n"); VDBG("host off......\n");
if (dev && dev->driver) { if (dev && dev->driver) {
@ -1330,7 +1302,7 @@ index 94eb2923..836355fa 100644
if (fsm->id) if (fsm->id)
/* default-b */ /* default-b */
fsl_otg_drv_vbus(fsm, 0); fsl_otg_drv_vbus(fsm, 0);
@@ -539,8 +544,17 @@ int fsl_otg_start_gadget(struct otg_fsm *fsm, int on) @@ -539,8 +544,17 @@ int fsl_otg_start_gadget(struct otg_fsm
dev = otg->gadget->dev.parent; dev = otg->gadget->dev.parent;
if (on) { if (on) {
@ -1349,7 +1321,7 @@ index 94eb2923..836355fa 100644
} else { } else {
if (dev->driver->suspend) if (dev->driver->suspend)
dev->driver->suspend(dev, otg_suspend_state); dev->driver->suspend(dev, otg_suspend_state);
@@ -672,6 +686,10 @@ static void fsl_otg_event(struct work_struct *work) @@ -672,6 +686,10 @@ static void fsl_otg_event(struct work_st
fsl_otg_start_host(fsm, 0); fsl_otg_start_host(fsm, 0);
otg_drv_vbus(fsm, 0); otg_drv_vbus(fsm, 0);
fsl_otg_start_gadget(fsm, 1); fsl_otg_start_gadget(fsm, 1);
@ -1360,7 +1332,7 @@ index 94eb2923..836355fa 100644
} }
} }
@@ -724,6 +742,7 @@ irqreturn_t fsl_otg_isr(int irq, void *dev_id) @@ -724,6 +742,7 @@ irqreturn_t fsl_otg_isr(int irq, void *d
{ {
struct otg_fsm *fsm = &((struct fsl_otg *)dev_id)->fsm; struct otg_fsm *fsm = &((struct fsl_otg *)dev_id)->fsm;
struct usb_otg *otg = ((struct fsl_otg *)dev_id)->phy.otg; struct usb_otg *otg = ((struct fsl_otg *)dev_id)->phy.otg;
@ -1368,7 +1340,7 @@ index 94eb2923..836355fa 100644
u32 otg_int_src, otg_sc; u32 otg_int_src, otg_sc;
otg_sc = fsl_readl(&usb_dr_regs->otgsc); otg_sc = fsl_readl(&usb_dr_regs->otgsc);
@@ -753,18 +772,8 @@ irqreturn_t fsl_otg_isr(int irq, void *dev_id) @@ -753,18 +772,8 @@ irqreturn_t fsl_otg_isr(int irq, void *d
otg->gadget->is_a_peripheral = !fsm->id; otg->gadget->is_a_peripheral = !fsm->id;
VDBG("ID int (ID is %d)\n", fsm->id); VDBG("ID int (ID is %d)\n", fsm->id);
@ -1389,7 +1361,7 @@ index 94eb2923..836355fa 100644
return IRQ_HANDLED; return IRQ_HANDLED;
} }
} }
@@ -923,12 +932,32 @@ int usb_otg_start(struct platform_device *pdev) @@ -923,12 +932,32 @@ int usb_otg_start(struct platform_device
temp &= ~(PORTSC_PHY_TYPE_SEL | PORTSC_PTW); temp &= ~(PORTSC_PHY_TYPE_SEL | PORTSC_PTW);
switch (pdata->phy_mode) { switch (pdata->phy_mode) {
case FSL_USB2_PHY_ULPI: case FSL_USB2_PHY_ULPI:
@ -1422,8 +1394,6 @@ index 94eb2923..836355fa 100644
temp |= PORTSC_PTS_UTMI; temp |= PORTSC_PTS_UTMI;
/* fall through */ /* fall through */
default: default:
diff --git a/drivers/usb/phy/phy-fsl-usb.h b/drivers/usb/phy/phy-fsl-usb.h
index 23149954..c4c08730 100644
--- a/drivers/usb/phy/phy-fsl-usb.h --- a/drivers/usb/phy/phy-fsl-usb.h
+++ b/drivers/usb/phy/phy-fsl-usb.h +++ b/drivers/usb/phy/phy-fsl-usb.h
@@ -199,6 +199,14 @@ @@ -199,6 +199,14 @@
@ -1441,8 +1411,6 @@ index 23149954..c4c08730 100644
/* BCSR5 */ /* BCSR5 */
#define BCSR5_INT_USB (0x02) #define BCSR5_INT_USB (0x02)
diff --git a/include/linux/usb.h b/include/linux/usb.h
index eba1f10e..c334e281 100644
--- a/include/linux/usb.h --- a/include/linux/usb.h
+++ b/include/linux/usb.h +++ b/include/linux/usb.h
@@ -362,6 +362,7 @@ struct usb_bus { @@ -362,6 +362,7 @@ struct usb_bus {
@ -1453,8 +1421,6 @@ index eba1f10e..c334e281 100644
unsigned is_b_host:1; /* true during some HNP roleswitches */ unsigned is_b_host:1; /* true during some HNP roleswitches */
unsigned b_hnp_enable:1; /* OTG: did A-Host enable HNP? */ unsigned b_hnp_enable:1; /* OTG: did A-Host enable HNP? */
unsigned no_stop_on_short:1; /* unsigned no_stop_on_short:1; /*
diff --git a/include/linux/usb/of.h b/include/linux/usb/of.h
index 5ff9032e..2a57e0d2 100644
--- a/include/linux/usb/of.h --- a/include/linux/usb/of.h
+++ b/include/linux/usb/of.h +++ b/include/linux/usb/of.h
@@ -11,6 +11,8 @@ @@ -11,6 +11,8 @@
@ -1466,6 +1432,3 @@ index 5ff9032e..2a57e0d2 100644
#if IS_ENABLED(CONFIG_OF) #if IS_ENABLED(CONFIG_OF)
enum usb_dr_mode of_usb_get_dr_mode_by_phy(struct device_node *np, int arg0); enum usb_dr_mode of_usb_get_dr_mode_by_phy(struct device_node *np, int arg0);
bool of_usb_host_tpl_support(struct device_node *np); bool of_usb_host_tpl_support(struct device_node *np);
--
2.14.1

View file

@ -27,8 +27,6 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
create mode 100644 drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c create mode 100644 drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c
create mode 100644 drivers/vfio/fsl-mc/vfio_fsl_mc_private.h create mode 100644 drivers/vfio/fsl-mc/vfio_fsl_mc_private.h
diff --git a/drivers/vfio/Kconfig b/drivers/vfio/Kconfig
index da6e2ce7..8a8a33e0 100644
--- a/drivers/vfio/Kconfig --- a/drivers/vfio/Kconfig
+++ b/drivers/vfio/Kconfig +++ b/drivers/vfio/Kconfig
@@ -48,4 +48,5 @@ menuconfig VFIO_NOIOMMU @@ -48,4 +48,5 @@ menuconfig VFIO_NOIOMMU
@ -37,18 +35,13 @@ index da6e2ce7..8a8a33e0 100644
source "drivers/vfio/platform/Kconfig" source "drivers/vfio/platform/Kconfig"
+source "drivers/vfio/fsl-mc/Kconfig" +source "drivers/vfio/fsl-mc/Kconfig"
source "virt/lib/Kconfig" source "virt/lib/Kconfig"
diff --git a/drivers/vfio/Makefile b/drivers/vfio/Makefile
index 7b8a31f6..560f0c67 100644
--- a/drivers/vfio/Makefile --- a/drivers/vfio/Makefile
+++ b/drivers/vfio/Makefile +++ b/drivers/vfio/Makefile
@@ -7,3 +7,4 @@ obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vfio_iommu_spapr_tce.o @@ -7,3 +7,4 @@ obj-$(CONFIG_VFIO_IOMMU_SPAPR_TCE) += vf
obj-$(CONFIG_VFIO_SPAPR_EEH) += vfio_spapr_eeh.o obj-$(CONFIG_VFIO_SPAPR_EEH) += vfio_spapr_eeh.o
obj-$(CONFIG_VFIO_PCI) += pci/ obj-$(CONFIG_VFIO_PCI) += pci/
obj-$(CONFIG_VFIO_PLATFORM) += platform/ obj-$(CONFIG_VFIO_PLATFORM) += platform/
+obj-$(CONFIG_VFIO_FSL_MC) += fsl-mc/ +obj-$(CONFIG_VFIO_FSL_MC) += fsl-mc/
diff --git a/drivers/vfio/fsl-mc/Kconfig b/drivers/vfio/fsl-mc/Kconfig
new file mode 100644
index 00000000..b1a527d6
--- /dev/null --- /dev/null
+++ b/drivers/vfio/fsl-mc/Kconfig +++ b/drivers/vfio/fsl-mc/Kconfig
@@ -0,0 +1,9 @@ @@ -0,0 +1,9 @@
@ -61,17 +54,11 @@ index 00000000..b1a527d6
+ fsl-mc bus devices using the VFIO framework. + fsl-mc bus devices using the VFIO framework.
+ +
+ If you don't know what to do here, say N. + If you don't know what to do here, say N.
diff --git a/drivers/vfio/fsl-mc/Makefile b/drivers/vfio/fsl-mc/Makefile
new file mode 100644
index 00000000..2aca75af
--- /dev/null --- /dev/null
+++ b/drivers/vfio/fsl-mc/Makefile +++ b/drivers/vfio/fsl-mc/Makefile
@@ -0,0 +1,2 @@ @@ -0,0 +1,2 @@
+vfio-fsl_mc-y := vfio_fsl_mc.o +vfio-fsl_mc-y := vfio_fsl_mc.o
+obj-$(CONFIG_VFIO_FSL_MC) += vfio_fsl_mc.o vfio_fsl_mc_intr.o +obj-$(CONFIG_VFIO_FSL_MC) += vfio_fsl_mc.o vfio_fsl_mc_intr.o
diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc.c b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
new file mode 100644
index 00000000..9dc32d27
--- /dev/null --- /dev/null
+++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc.c
@@ -0,0 +1,753 @@ @@ -0,0 +1,753 @@
@ -828,9 +815,6 @@ index 00000000..9dc32d27
+MODULE_LICENSE("GPL v2"); +MODULE_LICENSE("GPL v2");
+MODULE_AUTHOR(DRIVER_AUTHOR); +MODULE_AUTHOR(DRIVER_AUTHOR);
+MODULE_DESCRIPTION(DRIVER_DESC); +MODULE_DESCRIPTION(DRIVER_DESC);
diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c b/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c
new file mode 100644
index 00000000..eb244bb0
--- /dev/null --- /dev/null
+++ b/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc_intr.c
@@ -0,0 +1,199 @@ @@ -0,0 +1,199 @@
@ -1033,9 +1017,6 @@ index 00000000..eb244bb0
+ +
+ return ret; + return ret;
+} +}
diff --git a/drivers/vfio/fsl-mc/vfio_fsl_mc_private.h b/drivers/vfio/fsl-mc/vfio_fsl_mc_private.h
new file mode 100644
index 00000000..34e75754
--- /dev/null --- /dev/null
+++ b/drivers/vfio/fsl-mc/vfio_fsl_mc_private.h +++ b/drivers/vfio/fsl-mc/vfio_fsl_mc_private.h
@@ -0,0 +1,55 @@ @@ -0,0 +1,55 @@
@ -1094,8 +1075,6 @@ index 00000000..34e75754
+ unsigned int start, unsigned int count, + unsigned int start, unsigned int count,
+ void *data); + void *data);
+#endif /* VFIO_PCI_PRIVATE_H */ +#endif /* VFIO_PCI_PRIVATE_H */
diff --git a/drivers/vfio/vfio_iommu_type1.c b/drivers/vfio/vfio_iommu_type1.c
index 1d48e62f..f0a39331 100644
--- a/drivers/vfio/vfio_iommu_type1.c --- a/drivers/vfio/vfio_iommu_type1.c
+++ b/drivers/vfio/vfio_iommu_type1.c +++ b/drivers/vfio/vfio_iommu_type1.c
@@ -36,6 +36,8 @@ @@ -36,6 +36,8 @@
@ -1107,7 +1086,7 @@ index 1d48e62f..f0a39331 100644
#define DRIVER_VERSION "0.2" #define DRIVER_VERSION "0.2"
#define DRIVER_AUTHOR "Alex Williamson <alex.williamson@redhat.com>" #define DRIVER_AUTHOR "Alex Williamson <alex.williamson@redhat.com>"
@@ -720,6 +722,27 @@ static void vfio_test_domain_fgsp(struct vfio_domain *domain) @@ -720,6 +722,27 @@ static void vfio_test_domain_fgsp(struct
__free_pages(pages, order); __free_pages(pages, order);
} }
@ -1135,7 +1114,7 @@ index 1d48e62f..f0a39331 100644
static int vfio_iommu_type1_attach_group(void *iommu_data, static int vfio_iommu_type1_attach_group(void *iommu_data,
struct iommu_group *iommu_group) struct iommu_group *iommu_group)
{ {
@@ -728,6 +751,8 @@ static int vfio_iommu_type1_attach_group(void *iommu_data, @@ -728,6 +751,8 @@ static int vfio_iommu_type1_attach_group
struct vfio_domain *domain, *d; struct vfio_domain *domain, *d;
struct bus_type *bus = NULL; struct bus_type *bus = NULL;
int ret; int ret;
@ -1144,7 +1123,7 @@ index 1d48e62f..f0a39331 100644
mutex_lock(&iommu->lock); mutex_lock(&iommu->lock);
@@ -774,11 +799,15 @@ static int vfio_iommu_type1_attach_group(void *iommu_data, @@ -774,11 +799,15 @@ static int vfio_iommu_type1_attach_group
if (ret) if (ret)
goto out_domain; goto out_domain;
@ -1162,7 +1141,7 @@ index 1d48e62f..f0a39331 100644
pr_warn("%s: No interrupt remapping support. Use the module param \"allow_unsafe_interrupts\" to enable VFIO IOMMU support on this platform\n", pr_warn("%s: No interrupt remapping support. Use the module param \"allow_unsafe_interrupts\" to enable VFIO IOMMU support on this platform\n",
__func__); __func__);
ret = -EPERM; ret = -EPERM;
@@ -820,6 +849,12 @@ static int vfio_iommu_type1_attach_group(void *iommu_data, @@ -820,6 +849,12 @@ static int vfio_iommu_type1_attach_group
if (ret) if (ret)
goto out_detach; goto out_detach;
@ -1175,8 +1154,6 @@ index 1d48e62f..f0a39331 100644
list_add(&domain->next, &iommu->domain_list); list_add(&domain->next, &iommu->domain_list);
mutex_unlock(&iommu->lock); mutex_unlock(&iommu->lock);
diff --git a/include/uapi/linux/vfio.h b/include/uapi/linux/vfio.h
index 255a2113..1bbaa13d 100644
--- a/include/uapi/linux/vfio.h --- a/include/uapi/linux/vfio.h
+++ b/include/uapi/linux/vfio.h +++ b/include/uapi/linux/vfio.h
@@ -198,6 +198,7 @@ struct vfio_device_info { @@ -198,6 +198,7 @@ struct vfio_device_info {
@ -1187,6 +1164,3 @@ index 255a2113..1bbaa13d 100644
__u32 num_regions; /* Max region index + 1 */ __u32 num_regions; /* Max region index + 1 */
__u32 num_irqs; /* Max IRQ index + 1 */ __u32 num_irqs; /* Max IRQ index + 1 */
}; };
--
2.14.1