mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 12:28:41 +08:00
ARM: SoC platform updates
SoC changes, a substantial part of this is cleanup of some of the older platforms that used to have a bunch of board files. In particular: - Removal of non-DT i.MX platforms that haven't seen activity in years, it's time to remove them. - A bunch of cleanup and removal of platform data for TI/OMAP platforms, moving over to genpd for power/reset control (yay!) - Major cleanup of Samsung S3C24xx and S3C64xx platforms, moving them closer to multiplatform support (not quite there yet, but getting close). THere are a few other changes too, smaller fixlets, etc. For new platform support, the primary ones re: - New SoC: Hisilicon SD5203, ARM926EJ-S platform. - Cpufreq support for i.MX7ULP -----BEGIN PGP SIGNATURE----- iQJDBAABCgAtFiEElf+HevZ4QCAJmMQ+jBrnPN6EHHcFAl+TT4gPHG9sb2ZAbGl4 b20ubmV0AAoJEIwa5zzehBx322MP/1mI56SyOFx30AqtWBPSjHJp+DzhOObyb4vD ndYuicBIn9tJwvVRBBZkfsbIU8EENVwrN3hOpesaj9L7xiqOqKakcnyC1REYmpIs 8XBDfdZzy5PrMHIu3fF1ZDCQyO7KndGf5DfLVxJtcf1tSPQyQCuIA3FtS6d8Bxnz r491+om67ucnlFD5X0Spm3RdZH+ECmXx2iXwoS0Zi7P+X+S+ovG8wBV/X0ggeoBc Zgi4W01SiRupmSVZ6PA7FvWaLGQErQAALQOcFtMcFgjeWzc1v2QzcURELH8JW7ro 72AH9st1Kvi3hoN2HNNzUnNUdQvZ+AdH8skMIpN/e1cBYqYStAF3gm/R9h+iVHbG GMmgzXHAFErfAW2UcF8tq1CzvQ5ChcTLNXdeoa8CeQbcDfocF3EyuKSPuDH+ve0H kk4tPesTAc6XCEVwLaGnoC75sdum5mSi8h9vqhln2KCdeTY7jxzH9YGHjm71Supb kV9vqo5Q5U/c5l2nU4r5q/DZdIahKsk3HIQZ0iG7BifAzamaTh4uyLVjtM6HSwNz tdHZaxoHd/PLI5IoeggFelx6qgvK5qVRLP0evgOdTLRFLj/ZbrOf0Q7DjdTy2BjZ Lgq461QqNapOzxq43G2IDT2+P62Q1+d+YLCKBgaGQaJicyU5m9STCNo3UBb1qH1h W6UwGF5z =0+Ee -----END PGP SIGNATURE----- Merge tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc Pull ARM SoC platform updates from Olof Johansson: "SoC changes, a substantial part of this is cleanup of some of the older platforms that used to have a bunch of board files. In particular: - Remove non-DT i.MX platforms that haven't seen activity in years, it's time to remove them. - A bunch of cleanup and removal of platform data for TI/OMAP platforms, moving over to genpd for power/reset control (yay!) - Major cleanup of Samsung S3C24xx and S3C64xx platforms, moving them closer to multiplatform support (not quite there yet, but getting close). There are a few other changes too, smaller fixlets, etc. For new platform support, the primary ones are: - New SoC: Hisilicon SD5203, ARM926EJ-S platform. - Cpufreq support for i.MX7ULP" * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (121 commits) ARM: mstar: Select MStar intc ARM: stm32: Replace HTTP links with HTTPS ones ARM: debug: add UART early console support for SD5203 ARM: hisi: add support for SD5203 SoC ARM: omap3: enable off mode automatically clk: imx: imx35: Remove mx35_clocks_init() clk: imx: imx31: Remove mx31_clocks_init() clk: imx: imx27: Remove mx27_clocks_init() ARM: imx: Remove unused definitions ARM: imx35: Retrieve the IIM base address from devicetree ARM: imx3: Retrieve the AVIC base address from devicetree ARM: imx3: Retrieve the CCM base address from devicetree ARM: imx31: Retrieve the IIM base address from devicetree ARM: imx27: Retrieve the CCM base address from devicetree ARM: imx27: Retrieve the SYSCTRL base address from devicetree ARM: s3c64xx: bring back notes from removed debug-macro.S ARM: s3c24xx: fix Wunused-variable warning on !MMU ARM: samsung: fix PM debug build with DEBUG_LL but !MMU MAINTAINERS: mark linux-samsung-soc list non-moderated ARM: imx: Remove remnant board file support pieces ...
This commit is contained in:
commit
e731f3146f
@ -18,6 +18,7 @@ Required properties:
|
||||
(base address and length)
|
||||
|
||||
Optional properties:
|
||||
- #power-domain-cells: Should be 0 if the instance is a power domain provider.
|
||||
- #reset-cells: Should be 1 if the PRM instance in question supports resets.
|
||||
|
||||
Example:
|
||||
@ -25,5 +26,6 @@ Example:
|
||||
prm_dsp2: prm@1b00 {
|
||||
compatible = "ti,dra7-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x1b00 0x40>;
|
||||
#power-domain-cells = <0>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
40
MAINTAINERS
40
MAINTAINERS
@ -2199,8 +2199,8 @@ ARM/OPENMOKO NEO FREERUNNER (GTA02) MACHINE SUPPORT
|
||||
L: openmoko-kernel@lists.openmoko.org (subscribers-only)
|
||||
S: Orphan
|
||||
W: http://wiki.openmoko.org/wiki/Neo_FreeRunner
|
||||
F: arch/arm/mach-s3c24xx/gta02.h
|
||||
F: arch/arm/mach-s3c24xx/mach-gta02.c
|
||||
F: arch/arm/mach-s3c/gta02.h
|
||||
F: arch/arm/mach-s3c/mach-gta02.c
|
||||
|
||||
ARM/Orion SoC/Technologic Systems TS-78xx platform support
|
||||
M: Alexander Clouter <alex@digriz.org.uk>
|
||||
@ -2379,7 +2379,7 @@ ARM/SAMSUNG EXYNOS ARM ARCHITECTURES
|
||||
M: Kukjin Kim <kgene@kernel.org>
|
||||
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Maintained
|
||||
Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
|
||||
F: Documentation/arm/samsung/
|
||||
@ -2389,10 +2389,8 @@ F: arch/arm/boot/dts/exynos*
|
||||
F: arch/arm/boot/dts/s3c*
|
||||
F: arch/arm/boot/dts/s5p*
|
||||
F: arch/arm/mach-exynos*/
|
||||
F: arch/arm/mach-s3c24*/
|
||||
F: arch/arm/mach-s3c64xx/
|
||||
F: arch/arm/mach-s3c/
|
||||
F: arch/arm/mach-s5p*/
|
||||
F: arch/arm/plat-samsung/
|
||||
F: arch/arm64/boot/dts/exynos/
|
||||
F: drivers/*/*/*s3c24*
|
||||
F: drivers/*/*s3c24*
|
||||
@ -2403,6 +2401,9 @@ F: drivers/soc/samsung/
|
||||
F: drivers/tty/serial/samsung*
|
||||
F: include/linux/soc/samsung/
|
||||
N: exynos
|
||||
N: s3c2410
|
||||
N: s3c64xx
|
||||
N: s5pv210
|
||||
|
||||
ARM/SAMSUNG MOBILE MACHINE SUPPORT
|
||||
M: Kyungmin Park <kyungmin.park@samsung.com>
|
||||
@ -2421,7 +2422,7 @@ F: drivers/media/platform/s5p-g2d/
|
||||
|
||||
ARM/SAMSUNG S5P SERIES HDMI CEC SUBSYSTEM SUPPORT
|
||||
M: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
L: linux-media@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/media/s5p-cec.txt
|
||||
@ -3415,7 +3416,7 @@ M: bcm-kernel-feedback-list@broadcom.com
|
||||
L: linux-arm-kernel@lists.infradead.org
|
||||
S: Maintained
|
||||
F: arch/arm/boot/dts/bcm470*
|
||||
F: arch/arm/boot/dts/bcm5301x*.dtsi
|
||||
F: arch/arm/boot/dts/bcm5301*
|
||||
F: arch/arm/boot/dts/bcm953012*
|
||||
F: arch/arm/mach-bcm/bcm_5301x.c
|
||||
|
||||
@ -13447,7 +13448,7 @@ PCI DRIVER FOR SAMSUNG EXYNOS
|
||||
M: Jingoo Han <jingoohan1@gmail.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/pci/controller/dwc/pci-exynos.c
|
||||
|
||||
@ -13854,7 +13855,7 @@ M: Tomasz Figa <tomasz.figa@gmail.com>
|
||||
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||
M: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
||||
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Maintained
|
||||
Q: https://patchwork.kernel.org/project/linux-samsung-soc/list/
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/samsung.git
|
||||
@ -15415,7 +15416,7 @@ F: include/linux/mfd/samsung/
|
||||
SAMSUNG S3C24XX/S3C64XX SOC SERIES CAMIF DRIVER
|
||||
M: Sylwester Nawrocki <sylvester.nawrocki@gmail.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Maintained
|
||||
F: drivers/media/platform/s3c-camif/
|
||||
F: include/media/drv-intf/s3c_camif.h
|
||||
@ -15465,7 +15466,7 @@ SAMSUNG SOC CLOCK DRIVERS
|
||||
M: Sylwester Nawrocki <s.nawrocki@samsung.com>
|
||||
M: Tomasz Figa <tomasz.figa@gmail.com>
|
||||
M: Chanwoo Choi <cw00.choi@samsung.com>
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Supported
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/snawrocki/clk.git
|
||||
F: Documentation/devicetree/bindings/clock/exynos*.txt
|
||||
@ -15473,17 +15474,20 @@ F: Documentation/devicetree/bindings/clock/samsung,s3c*
|
||||
F: Documentation/devicetree/bindings/clock/samsung,s5p*
|
||||
F: drivers/clk/samsung/
|
||||
F: include/dt-bindings/clock/exynos*.h
|
||||
F: include/linux/clk/samsung.h
|
||||
F: include/linux/platform_data/clk-s3c2410.h
|
||||
|
||||
SAMSUNG SPI DRIVERS
|
||||
M: Kukjin Kim <kgene@kernel.org>
|
||||
M: Krzysztof Kozlowski <krzk@kernel.org>
|
||||
M: Andi Shyti <andi@etezian.org>
|
||||
L: linux-spi@vger.kernel.org
|
||||
L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
|
||||
L: linux-samsung-soc@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/spi/spi-samsung.txt
|
||||
F: drivers/spi/spi-s3c*
|
||||
F: include/linux/platform_data/spi-s3c64xx.h
|
||||
F: include/linux/spi/s3c24xx-fiq.h
|
||||
|
||||
SAMSUNG SXGBE DRIVERS
|
||||
M: Byungho An <bh74.an@samsung.com>
|
||||
@ -16001,19 +16005,17 @@ F: drivers/video/fbdev/simplefb.c
|
||||
F: include/linux/platform_data/simplefb.h
|
||||
|
||||
SIMTEC EB110ATX (Chalice CATS)
|
||||
M: Vincent Sanders <vince@simtec.co.uk>
|
||||
M: Simtec Linux Team <linux@simtec.co.uk>
|
||||
S: Supported
|
||||
W: http://www.simtec.co.uk/products/EB110ATX/
|
||||
|
||||
SIMTEC EB2410ITX (BAST)
|
||||
M: Vincent Sanders <vince@simtec.co.uk>
|
||||
M: Simtec Linux Team <linux@simtec.co.uk>
|
||||
S: Supported
|
||||
W: http://www.simtec.co.uk/products/EB2410ITX/
|
||||
F: arch/arm/mach-s3c24xx/bast-ide.c
|
||||
F: arch/arm/mach-s3c24xx/bast-irq.c
|
||||
F: arch/arm/mach-s3c24xx/mach-bast.c
|
||||
F: arch/arm/mach-s3c/bast-ide.c
|
||||
F: arch/arm/mach-s3c/bast-irq.c
|
||||
F: arch/arm/mach-s3c/mach-bast.c
|
||||
|
||||
SIOX
|
||||
M: Thorsten Scherer <t.scherer@eckelmann.de>
|
||||
@ -18952,7 +18954,7 @@ F: Documentation/devicetree/bindings/mfd/wm831x.txt
|
||||
F: Documentation/devicetree/bindings/regulator/wlf,arizona.yaml
|
||||
F: Documentation/devicetree/bindings/sound/wlf,arizona.yaml
|
||||
F: Documentation/hwmon/wm83??.rst
|
||||
F: arch/arm/mach-s3c64xx/mach-crag6410*
|
||||
F: arch/arm/mach-s3c/mach-crag6410*
|
||||
F: drivers/clk/clk-wm83*.c
|
||||
F: drivers/extcon/extcon-arizona.c
|
||||
F: drivers/gpio/gpio-*wm*.c
|
||||
|
@ -268,9 +268,7 @@ config PHYS_OFFSET
|
||||
depends on !ARM_PATCH_PHYS_VIRT
|
||||
default DRAM_BASE if !MMU
|
||||
default 0x00000000 if ARCH_EBSA110 || \
|
||||
ARCH_FOOTBRIDGE || \
|
||||
ARCH_INTEGRATOR || \
|
||||
ARCH_REALVIEW
|
||||
ARCH_FOOTBRIDGE
|
||||
default 0x10000000 if ARCH_OMAP1 || ARCH_RPC
|
||||
default 0x20000000 if ARCH_S5PV210
|
||||
default 0xc0000000 if ARCH_SA1100
|
||||
@ -506,11 +504,12 @@ config ARCH_S3C24XX
|
||||
select GPIOLIB
|
||||
select GENERIC_IRQ_MULTI_HANDLER
|
||||
select HAVE_S3C2410_I2C if I2C
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
select HAVE_S3C_RTC if RTC_CLASS
|
||||
select NEED_MACH_IO_H
|
||||
select S3C2410_WATCHDOG
|
||||
select SAMSUNG_ATAGS
|
||||
select USE_OF
|
||||
select WATCHDOG
|
||||
help
|
||||
Samsung S3C2410, S3C2412, S3C2413, S3C2416, S3C2440, S3C2442, S3C2443
|
||||
and S3C2450 SoCs based systems, such as the Simtec Electronics BAST
|
||||
@ -639,7 +638,6 @@ source "arch/arm/mach-dove/Kconfig"
|
||||
source "arch/arm/mach-ep93xx/Kconfig"
|
||||
|
||||
source "arch/arm/mach-exynos/Kconfig"
|
||||
source "arch/arm/plat-samsung/Kconfig"
|
||||
|
||||
source "arch/arm/mach-footbridge/Kconfig"
|
||||
|
||||
@ -712,9 +710,7 @@ source "arch/arm/mach-realview/Kconfig"
|
||||
|
||||
source "arch/arm/mach-rockchip/Kconfig"
|
||||
|
||||
source "arch/arm/mach-s3c24xx/Kconfig"
|
||||
|
||||
source "arch/arm/mach-s3c64xx/Kconfig"
|
||||
source "arch/arm/mach-s3c/Kconfig"
|
||||
|
||||
source "arch/arm/mach-s5pv210/Kconfig"
|
||||
|
||||
|
@ -1005,7 +1005,7 @@ choice
|
||||
via SCIFA4 on Renesas SH-Mobile AG5 (SH73A0).
|
||||
|
||||
config DEBUG_S3C_UART0
|
||||
depends on PLAT_SAMSUNG
|
||||
depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS
|
||||
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
select DEBUG_S3C24XX_UART if ARCH_S3C24XX
|
||||
select DEBUG_S3C64XX_UART if ARCH_S3C64XX
|
||||
@ -1017,7 +1017,7 @@ choice
|
||||
by the boot-loader before use.
|
||||
|
||||
config DEBUG_S3C_UART1
|
||||
depends on PLAT_SAMSUNG
|
||||
depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS
|
||||
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
select DEBUG_S3C24XX_UART if ARCH_S3C24XX
|
||||
select DEBUG_S3C64XX_UART if ARCH_S3C64XX
|
||||
@ -1029,7 +1029,7 @@ choice
|
||||
by the boot-loader before use.
|
||||
|
||||
config DEBUG_S3C_UART2
|
||||
depends on PLAT_SAMSUNG
|
||||
depends on PLAT_SAMSUNG || ARCH_S5PV210 || ARCH_EXYNOS
|
||||
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
select DEBUG_S3C24XX_UART if ARCH_S3C24XX
|
||||
select DEBUG_S3C64XX_UART if ARCH_S3C64XX
|
||||
@ -1041,7 +1041,7 @@ choice
|
||||
by the boot-loader before use.
|
||||
|
||||
config DEBUG_S3C_UART3
|
||||
depends on PLAT_SAMSUNG && (ARCH_EXYNOS || ARCH_S5PV210)
|
||||
depends on ARCH_EXYNOS || ARCH_S5PV210
|
||||
select DEBUG_EXYNOS_UART if ARCH_EXYNOS
|
||||
select DEBUG_S3C64XX_UART if ARCH_S3C64XX
|
||||
select DEBUG_S5PV210_UART if ARCH_S5PV210
|
||||
@ -1086,6 +1086,14 @@ choice
|
||||
on SA-11x0 UART ports. The kernel will check for the first
|
||||
enabled UART in a sequence 3-1-2.
|
||||
|
||||
config DEBUG_SD5203_UART
|
||||
bool "Hisilicon SD5203 Debug UART"
|
||||
depends on ARCH_SD5203
|
||||
select DEBUG_UART_8250
|
||||
help
|
||||
Say Y here if you want kernel low-level debugging support
|
||||
on SD5203 UART.
|
||||
|
||||
config DEBUG_SOCFPGA_UART0
|
||||
depends on ARCH_SOCFPGA
|
||||
bool "Use SOCFPGA UART0 for low-level debug"
|
||||
@ -1497,6 +1505,16 @@ config DEBUG_S3C64XX_UART
|
||||
config DEBUG_S5PV210_UART
|
||||
bool
|
||||
|
||||
config DEBUG_S3C_UART
|
||||
depends on DEBUG_S3C2410_UART || DEBUG_S3C24XX_UART || \
|
||||
DEBUG_S3C64XX_UART || DEBUG_S5PV210_UART || \
|
||||
DEBUG_EXYNOS_UART
|
||||
int
|
||||
default "0" if DEBUG_S3C_UART0
|
||||
default "1" if DEBUG_S3C_UART1
|
||||
default "2" if DEBUG_S3C_UART2
|
||||
default "3" if DEBUG_S3C_UART3
|
||||
|
||||
config DEBUG_OMAP2PLUS_UART
|
||||
bool
|
||||
depends on ARCH_OMAP2PLUS
|
||||
@ -1650,6 +1668,7 @@ config DEBUG_UART_PHYS
|
||||
default 0x11006000 if DEBUG_MT6589_UART0
|
||||
default 0x11009000 if DEBUG_MT8135_UART3
|
||||
default 0x16000000 if DEBUG_INTEGRATOR
|
||||
default 0x1600d000 if DEBUG_SD5203_UART
|
||||
default 0x18000300 if DEBUG_BCM_5301X
|
||||
default 0x18000400 if DEBUG_BCM_HR2
|
||||
default 0x18010000 if DEBUG_SIRFATLAS7_UART0
|
||||
@ -1852,7 +1871,7 @@ config DEBUG_UART_VIRT
|
||||
default 0xfec60000 if DEBUG_SIRFPRIMA2_UART1
|
||||
default 0xfec90000 if DEBUG_RK32_UART2
|
||||
default 0xfed0c000 if DEBUG_DAVINCI_DA8XX_UART1
|
||||
default 0xfed0d000 if DEBUG_DAVINCI_DA8XX_UART2
|
||||
default 0xfed0d000 if DEBUG_DAVINCI_DA8XX_UART2 || DEBUG_SD5203_UART
|
||||
default 0xfed60000 if DEBUG_RK29_UART0
|
||||
default 0xfed64000 if DEBUG_RK29_UART1 || DEBUG_RK3X_UART2
|
||||
default 0xfed68000 if DEBUG_RK29_UART2 || DEBUG_RK3X_UART3
|
||||
|
@ -212,8 +212,7 @@ machine-$(CONFIG_ARCH_REALTEK) += realtek
|
||||
machine-$(CONFIG_ARCH_REALVIEW) += realview
|
||||
machine-$(CONFIG_ARCH_ROCKCHIP) += rockchip
|
||||
machine-$(CONFIG_ARCH_RPC) += rpc
|
||||
machine-$(CONFIG_ARCH_S3C24XX) += s3c24xx
|
||||
machine-$(CONFIG_ARCH_S3C64XX) += s3c64xx
|
||||
machine-$(CONFIG_PLAT_SAMSUNG) += s3c
|
||||
machine-$(CONFIG_ARCH_S5PV210) += s5pv210
|
||||
machine-$(CONFIG_ARCH_SA1100) += sa1100
|
||||
machine-$(CONFIG_ARCH_RENESAS) += shmobile
|
||||
@ -235,13 +234,9 @@ machine-$(CONFIG_PLAT_SPEAR) += spear
|
||||
|
||||
# Platform directory name. This list is sorted alphanumerically
|
||||
# by CONFIG_* macro name.
|
||||
plat-$(CONFIG_ARCH_EXYNOS) += samsung
|
||||
plat-$(CONFIG_ARCH_OMAP) += omap
|
||||
plat-$(CONFIG_ARCH_S3C64XX) += samsung
|
||||
plat-$(CONFIG_ARCH_S5PV210) += samsung
|
||||
plat-$(CONFIG_PLAT_ORION) += orion
|
||||
plat-$(CONFIG_PLAT_PXA) += pxa
|
||||
plat-$(CONFIG_PLAT_S3C24XX) += samsung
|
||||
plat-$(CONFIG_PLAT_VERSATILE) += versatile
|
||||
|
||||
ifeq ($(CONFIG_ARCH_EBSA110),y)
|
||||
|
@ -425,7 +425,6 @@
|
||||
|
||||
target-module@3e000 { /* 0x44e3e000, ap 35 60.0 */
|
||||
compatible = "ti,sysc-omap4-simple", "ti,sysc";
|
||||
ti,hwmods = "rtc";
|
||||
reg = <0x3e074 0x4>,
|
||||
<0x3e078 0x4>;
|
||||
reg-names = "rev", "sysc";
|
||||
|
@ -578,6 +578,7 @@
|
||||
<SYSC_IDLE_SMART>;
|
||||
clocks = <&gfx_l3_clkctrl AM3_GFX_L3_GFX_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
power-domains = <&prm_gfx>;
|
||||
resets = <&prm_gfx 0>;
|
||||
reset-names = "rstctrl";
|
||||
#address-cells = <1>;
|
||||
@ -617,6 +618,7 @@
|
||||
prm_gfx: prm@1100 {
|
||||
compatible = "ti,am3-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x1100 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
};
|
||||
|
@ -517,6 +517,7 @@
|
||||
<SYSC_IDLE_SMART>;
|
||||
clocks = <&gfx_l3_clkctrl AM4_GFX_L3_GFX_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
power-domains = <&prm_gfx>;
|
||||
resets = <&prm_gfx 0>;
|
||||
reset-names = "rstctrl";
|
||||
#address-cells = <1>;
|
||||
@ -533,6 +534,7 @@
|
||||
prm_gfx: prm@400 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x400 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
|
@ -409,9 +409,8 @@
|
||||
ranges = <0x0 0x39000 0x1000>;
|
||||
};
|
||||
|
||||
target-module@3e000 { /* 0x44e3e000, ap 34 60.0 */
|
||||
rtc_target: target-module@3e000 { /* 0x44e3e000, ap 34 60.0 */
|
||||
compatible = "ti,sysc-omap4-simple", "ti,sysc";
|
||||
ti,hwmods = "rtc";
|
||||
reg = <0x3e074 0x4>,
|
||||
<0x3e078 0x4>;
|
||||
reg-names = "rev", "sysc";
|
||||
|
@ -833,6 +833,10 @@
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
&rtc_target {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
&tscadc {
|
||||
status = "okay";
|
||||
|
||||
|
@ -3561,7 +3561,6 @@
|
||||
|
||||
rtctarget: target-module@38000 { /* 0x48838000, ap 29 12.0 */
|
||||
compatible = "ti,sysc-omap4-simple", "ti,sysc";
|
||||
ti,hwmods = "rtcss";
|
||||
reg = <0x38074 0x4>,
|
||||
<0x38078 0x4>;
|
||||
reg-names = "rev", "sysc";
|
||||
|
@ -1,14 +1,16 @@
|
||||
&l4_abe { /* 0x40100000 */
|
||||
compatible = "ti,omap4-l4-abe", "simple-bus";
|
||||
compatible = "ti,omap4-l4-abe", "simple-pm-bus";
|
||||
reg = <0x40100000 0x400>,
|
||||
<0x40100400 0x400>;
|
||||
reg-names = "la", "ap";
|
||||
power-domains = <&prm_abe>;
|
||||
/* OMAP4_L4_ABE_CLKCTRL is read-only */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x40100000 0x100000>, /* segment 0 */
|
||||
<0x49000000 0x49000000 0x100000>;
|
||||
segment@0 { /* 0x40100000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges =
|
||||
|
@ -658,6 +658,12 @@
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
prm_abe: prm@500 {
|
||||
compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x500 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_core: prm@700 {
|
||||
compatible = "ti,omap4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x700 0x100>;
|
||||
|
@ -1,14 +1,16 @@
|
||||
&l4_abe { /* 0x40100000 */
|
||||
compatible = "ti,omap5-l4-abe", "simple-bus";
|
||||
compatible = "ti,omap5-l4-abe", "simple-pm-bus";
|
||||
reg = <0x40100000 0x400>,
|
||||
<0x40100400 0x400>;
|
||||
reg-names = "la", "ap";
|
||||
power-domains = <&prm_abe>;
|
||||
/* OMAP5_L4_ABE_CLKCTRL is read-only */
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x40100000 0x100000>, /* segment 0 */
|
||||
<0x49000000 0x49000000 0x100000>;
|
||||
segment@0 { /* 0x40100000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges =
|
||||
|
@ -676,6 +676,12 @@
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
prm_abe: prm@500 {
|
||||
compatible = "ti,omap5-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x500 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_core: prm@700 {
|
||||
compatible = "ti,omap5-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x700 0x100>;
|
||||
|
@ -20,9 +20,9 @@ CONFIG_MACH_MX27ADS=y
|
||||
CONFIG_MACH_MX27_3DS=y
|
||||
CONFIG_MACH_IMX27_VISSTRIM_M10=y
|
||||
CONFIG_MACH_PCA100=y
|
||||
CONFIG_MACH_IMX27_DT=y
|
||||
CONFIG_SOC_IMX1=y
|
||||
CONFIG_SOC_IMX25=y
|
||||
CONFIG_SOC_IMX27=y
|
||||
CONFIG_AEABI=y
|
||||
CONFIG_ZBOOT_ROM_TEXT=0x0
|
||||
CONFIG_ZBOOT_ROM_BSS=0x0
|
||||
|
@ -15,20 +15,8 @@ CONFIG_PERF_EVENTS=y
|
||||
# CONFIG_COMPAT_BRK is not set
|
||||
CONFIG_ARCH_MULTI_V6=y
|
||||
CONFIG_ARCH_MXC=y
|
||||
CONFIG_MACH_MX31LILLY=y
|
||||
CONFIG_MACH_MX31LITE=y
|
||||
CONFIG_MACH_PCM037=y
|
||||
CONFIG_MACH_PCM037_EET=y
|
||||
CONFIG_MACH_MX31_3DS=y
|
||||
CONFIG_MACH_MX31MOBOARD=y
|
||||
CONFIG_MACH_QONG=y
|
||||
CONFIG_MACH_ARMADILLO5X0=y
|
||||
CONFIG_MACH_KZM_ARM11_01=y
|
||||
CONFIG_MACH_IMX31_DT=y
|
||||
CONFIG_MACH_IMX35_DT=y
|
||||
CONFIG_MACH_PCM043=y
|
||||
CONFIG_MACH_MX35_3DS=y
|
||||
CONFIG_MACH_VPR200=y
|
||||
CONFIG_SOC_IMX31=y
|
||||
CONFIG_SOC_IMX35=y
|
||||
CONFIG_SOC_IMX50=y
|
||||
CONFIG_SOC_IMX51=y
|
||||
CONFIG_SOC_IMX53=y
|
||||
|
@ -29,8 +29,8 @@ CONFIG_MACH_MX27ADS=y
|
||||
CONFIG_MACH_MX27_3DS=y
|
||||
CONFIG_MACH_IMX27_VISSTRIM_M10=y
|
||||
CONFIG_MACH_PCA100=y
|
||||
CONFIG_MACH_IMX27_DT=y
|
||||
CONFIG_SOC_IMX25=y
|
||||
CONFIG_SOC_IMX27=y
|
||||
CONFIG_ARCH_MVEBU=y
|
||||
CONFIG_MACH_KIRKWOOD=y
|
||||
CONFIG_ARCH_ORION5X=y
|
||||
|
@ -32,6 +32,8 @@
|
||||
#define UARTA_7271 UARTA_7268
|
||||
#define UARTA_7278 REG_PHYS_ADDR_V7(0x40c000)
|
||||
#define UARTA_7216 UARTA_7278
|
||||
#define UARTA_72164 UARTA_7278
|
||||
#define UARTA_72165 UARTA_7278
|
||||
#define UARTA_7364 REG_PHYS_ADDR(0x40b000)
|
||||
#define UARTA_7366 UARTA_7364
|
||||
#define UARTA_74371 REG_PHYS_ADDR(0x406b00)
|
||||
@ -84,17 +86,19 @@ ARM_BE8( rev \rv, \rv )
|
||||
/* Chip specific detection starts here */
|
||||
20: checkuart(\rp, \rv, 0x33900000, 3390)
|
||||
21: checkuart(\rp, \rv, 0x72160000, 7216)
|
||||
22: checkuart(\rp, \rv, 0x72500000, 7250)
|
||||
23: checkuart(\rp, \rv, 0x72550000, 7255)
|
||||
24: checkuart(\rp, \rv, 0x72600000, 7260)
|
||||
25: checkuart(\rp, \rv, 0x72680000, 7268)
|
||||
26: checkuart(\rp, \rv, 0x72710000, 7271)
|
||||
27: checkuart(\rp, \rv, 0x72780000, 7278)
|
||||
28: checkuart(\rp, \rv, 0x73640000, 7364)
|
||||
29: checkuart(\rp, \rv, 0x73660000, 7366)
|
||||
30: checkuart(\rp, \rv, 0x07437100, 74371)
|
||||
31: checkuart(\rp, \rv, 0x74390000, 7439)
|
||||
32: checkuart(\rp, \rv, 0x74450000, 7445)
|
||||
22: checkuart(\rp, \rv, 0x07216400, 72164)
|
||||
23: checkuart(\rp, \rv, 0x07216500, 72165)
|
||||
24: checkuart(\rp, \rv, 0x72500000, 7250)
|
||||
25: checkuart(\rp, \rv, 0x72550000, 7255)
|
||||
26: checkuart(\rp, \rv, 0x72600000, 7260)
|
||||
27: checkuart(\rp, \rv, 0x72680000, 7268)
|
||||
28: checkuart(\rp, \rv, 0x72710000, 7271)
|
||||
29: checkuart(\rp, \rv, 0x72780000, 7278)
|
||||
30: checkuart(\rp, \rv, 0x73640000, 7364)
|
||||
31: checkuart(\rp, \rv, 0x73660000, 7366)
|
||||
32: checkuart(\rp, \rv, 0x07437100, 74371)
|
||||
33: checkuart(\rp, \rv, 0x74390000, 7439)
|
||||
34: checkuart(\rp, \rv, 0x74450000, 7445)
|
||||
|
||||
/* No valid UART found */
|
||||
90: mov \rp, #0
|
||||
|
@ -51,10 +51,11 @@ static struct at91_soc_pm soc_pm = {
|
||||
};
|
||||
|
||||
static const match_table_t pm_modes __initconst = {
|
||||
{ AT91_PM_STANDBY, "standby" },
|
||||
{ AT91_PM_ULP0, "ulp0" },
|
||||
{ AT91_PM_ULP1, "ulp1" },
|
||||
{ AT91_PM_BACKUP, "backup" },
|
||||
{ AT91_PM_STANDBY, "standby" },
|
||||
{ AT91_PM_ULP0, "ulp0" },
|
||||
{ AT91_PM_ULP0_FAST, "ulp0-fast" },
|
||||
{ AT91_PM_ULP1, "ulp1" },
|
||||
{ AT91_PM_BACKUP, "backup" },
|
||||
{ -1, NULL },
|
||||
};
|
||||
|
||||
@ -557,11 +558,6 @@ static void at91rm9200_idle(void)
|
||||
writel(AT91_PMC_PCK, soc_pm.data.pmc + AT91_PMC_SCDR);
|
||||
}
|
||||
|
||||
static void at91sam9x60_idle(void)
|
||||
{
|
||||
cpu_do_idle();
|
||||
}
|
||||
|
||||
static void at91sam9_idle(void)
|
||||
{
|
||||
writel(AT91_PMC_PCK, soc_pm.data.pmc + AT91_PMC_SCDR);
|
||||
@ -789,6 +785,51 @@ static const struct of_device_id atmel_pmc_ids[] __initconst = {
|
||||
{ /* sentinel */ },
|
||||
};
|
||||
|
||||
static void __init at91_pm_modes_validate(const int *modes, int len)
|
||||
{
|
||||
u8 i, standby = 0, suspend = 0;
|
||||
int mode;
|
||||
|
||||
for (i = 0; i < len; i++) {
|
||||
if (standby && suspend)
|
||||
break;
|
||||
|
||||
if (modes[i] == soc_pm.data.standby_mode && !standby) {
|
||||
standby = 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
if (modes[i] == soc_pm.data.suspend_mode && !suspend) {
|
||||
suspend = 1;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (!standby) {
|
||||
if (soc_pm.data.suspend_mode == AT91_PM_STANDBY)
|
||||
mode = AT91_PM_ULP0;
|
||||
else
|
||||
mode = AT91_PM_STANDBY;
|
||||
|
||||
pr_warn("AT91: PM: %s mode not supported! Using %s.\n",
|
||||
pm_modes[soc_pm.data.standby_mode].pattern,
|
||||
pm_modes[mode].pattern);
|
||||
soc_pm.data.standby_mode = mode;
|
||||
}
|
||||
|
||||
if (!suspend) {
|
||||
if (soc_pm.data.standby_mode == AT91_PM_ULP0)
|
||||
mode = AT91_PM_STANDBY;
|
||||
else
|
||||
mode = AT91_PM_ULP0;
|
||||
|
||||
pr_warn("AT91: PM: %s mode not supported! Using %s.\n",
|
||||
pm_modes[soc_pm.data.suspend_mode].pattern,
|
||||
pm_modes[mode].pattern);
|
||||
soc_pm.data.suspend_mode = mode;
|
||||
}
|
||||
}
|
||||
|
||||
static void __init at91_pm_init(void (*pm_idle)(void))
|
||||
{
|
||||
struct device_node *pmc_np;
|
||||
@ -800,6 +841,7 @@ static void __init at91_pm_init(void (*pm_idle)(void))
|
||||
|
||||
pmc_np = of_find_matching_node_and_match(NULL, atmel_pmc_ids, &of_id);
|
||||
soc_pm.data.pmc = of_iomap(pmc_np, 0);
|
||||
of_node_put(pmc_np);
|
||||
if (!soc_pm.data.pmc) {
|
||||
pr_err("AT91: PM not supported, PMC not found\n");
|
||||
return;
|
||||
@ -830,6 +872,14 @@ void __init at91rm9200_pm_init(void)
|
||||
if (!IS_ENABLED(CONFIG_SOC_AT91RM9200))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Force STANDBY and ULP0 mode to avoid calling
|
||||
* at91_pm_modes_validate() which may increase booting time.
|
||||
* Platform supports anyway only STANDBY and ULP0 modes.
|
||||
*/
|
||||
soc_pm.data.standby_mode = AT91_PM_STANDBY;
|
||||
soc_pm.data.suspend_mode = AT91_PM_ULP0;
|
||||
|
||||
at91_dt_ramc();
|
||||
|
||||
/*
|
||||
@ -842,12 +892,17 @@ void __init at91rm9200_pm_init(void)
|
||||
|
||||
void __init sam9x60_pm_init(void)
|
||||
{
|
||||
static const int modes[] __initconst = {
|
||||
AT91_PM_STANDBY, AT91_PM_ULP0, AT91_PM_ULP0_FAST, AT91_PM_ULP1,
|
||||
};
|
||||
|
||||
if (!IS_ENABLED(CONFIG_SOC_SAM9X60))
|
||||
return;
|
||||
|
||||
at91_pm_modes_validate(modes, ARRAY_SIZE(modes));
|
||||
at91_pm_modes_init();
|
||||
at91_dt_ramc();
|
||||
at91_pm_init(at91sam9x60_idle);
|
||||
at91_pm_init(NULL);
|
||||
|
||||
soc_pm.ws_ids = sam9x60_ws_ids;
|
||||
soc_pm.config_pmc_ws = at91_sam9x60_config_pmc_ws;
|
||||
@ -858,26 +913,46 @@ void __init at91sam9_pm_init(void)
|
||||
if (!IS_ENABLED(CONFIG_SOC_AT91SAM9))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Force STANDBY and ULP0 mode to avoid calling
|
||||
* at91_pm_modes_validate() which may increase booting time.
|
||||
* Platform supports anyway only STANDBY and ULP0 modes.
|
||||
*/
|
||||
soc_pm.data.standby_mode = AT91_PM_STANDBY;
|
||||
soc_pm.data.suspend_mode = AT91_PM_ULP0;
|
||||
|
||||
at91_dt_ramc();
|
||||
at91_pm_init(at91sam9_idle);
|
||||
}
|
||||
|
||||
void __init sama5_pm_init(void)
|
||||
{
|
||||
static const int modes[] __initconst = {
|
||||
AT91_PM_STANDBY, AT91_PM_ULP0, AT91_PM_ULP0_FAST,
|
||||
};
|
||||
|
||||
if (!IS_ENABLED(CONFIG_SOC_SAMA5))
|
||||
return;
|
||||
|
||||
at91_pm_modes_validate(modes, ARRAY_SIZE(modes));
|
||||
at91_dt_ramc();
|
||||
at91_pm_init(NULL);
|
||||
}
|
||||
|
||||
void __init sama5d2_pm_init(void)
|
||||
{
|
||||
static const int modes[] __initconst = {
|
||||
AT91_PM_STANDBY, AT91_PM_ULP0, AT91_PM_ULP0_FAST, AT91_PM_ULP1,
|
||||
AT91_PM_BACKUP,
|
||||
};
|
||||
|
||||
if (!IS_ENABLED(CONFIG_SOC_SAMA5D2))
|
||||
return;
|
||||
|
||||
at91_pm_modes_validate(modes, ARRAY_SIZE(modes));
|
||||
at91_pm_modes_init();
|
||||
sama5_pm_init();
|
||||
at91_dt_ramc();
|
||||
at91_pm_init(NULL);
|
||||
|
||||
soc_pm.ws_ids = sama5d2_ws_ids;
|
||||
soc_pm.config_shdwc_ws = at91_sama5d2_config_shdwc_ws;
|
||||
|
@ -19,8 +19,9 @@
|
||||
|
||||
#define AT91_PM_STANDBY 0x00
|
||||
#define AT91_PM_ULP0 0x01
|
||||
#define AT91_PM_ULP1 0x02
|
||||
#define AT91_PM_BACKUP 0x03
|
||||
#define AT91_PM_ULP0_FAST 0x02
|
||||
#define AT91_PM_ULP1 0x03
|
||||
#define AT91_PM_BACKUP 0x04
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
struct at91_pm_data {
|
||||
|
@ -164,7 +164,22 @@ ENDPROC(at91_backup_mode)
|
||||
|
||||
.macro at91_pm_ulp0_mode
|
||||
ldr pmc, .pmc_base
|
||||
ldr tmp2, .pm_mode
|
||||
ldr tmp3, .mckr_offset
|
||||
|
||||
/* Check if ULP0 fast variant has been requested. */
|
||||
cmp tmp2, #AT91_PM_ULP0_FAST
|
||||
bne 0f
|
||||
|
||||
/* Set highest prescaler for power saving */
|
||||
ldr tmp1, [pmc, tmp3]
|
||||
bic tmp1, tmp1, #AT91_PMC_PRES
|
||||
orr tmp1, tmp1, #AT91_PMC_PRES_64
|
||||
str tmp1, [pmc, tmp3]
|
||||
wait_mckrdy
|
||||
b 1f
|
||||
|
||||
0:
|
||||
/* Turn off the crystal oscillator */
|
||||
ldr tmp1, [pmc, #AT91_CKGR_MOR]
|
||||
bic tmp1, tmp1, #AT91_PMC_MOSCEN
|
||||
@ -192,7 +207,18 @@ ENDPROC(at91_backup_mode)
|
||||
/* Wait for interrupt */
|
||||
1: at91_cpu_idle
|
||||
|
||||
/* Restore RC oscillator state */
|
||||
/* Check if ULP0 fast variant has been requested. */
|
||||
cmp tmp2, #AT91_PM_ULP0_FAST
|
||||
bne 5f
|
||||
|
||||
/* Set lowest prescaler for fast resume. */
|
||||
ldr tmp1, [pmc, tmp3]
|
||||
bic tmp1, tmp1, #AT91_PMC_PRES
|
||||
str tmp1, [pmc, tmp3]
|
||||
wait_mckrdy
|
||||
b 6f
|
||||
|
||||
5: /* Restore RC oscillator state */
|
||||
ldr tmp1, .saved_osc_status
|
||||
tst tmp1, #AT91_PMC_MOSCRCS
|
||||
beq 4f
|
||||
@ -216,6 +242,7 @@ ENDPROC(at91_backup_mode)
|
||||
str tmp1, [pmc, #AT91_CKGR_MOR]
|
||||
|
||||
wait_moscrdy
|
||||
6:
|
||||
.endm
|
||||
|
||||
/**
|
||||
@ -473,23 +500,29 @@ ENDPROC(at91_backup_mode)
|
||||
ENTRY(at91_ulp_mode)
|
||||
ldr pmc, .pmc_base
|
||||
ldr tmp2, .mckr_offset
|
||||
ldr tmp3, .pm_mode
|
||||
|
||||
/* Save Master clock setting */
|
||||
ldr tmp1, [pmc, tmp2]
|
||||
str tmp1, .saved_mckr
|
||||
|
||||
/*
|
||||
* Set the Master clock source to slow clock
|
||||
* Set master clock source to:
|
||||
* - MAINCK if using ULP0 fast variant
|
||||
* - slow clock, otherwise
|
||||
*/
|
||||
bic tmp1, tmp1, #AT91_PMC_CSS
|
||||
cmp tmp3, #AT91_PM_ULP0_FAST
|
||||
bne save_mck
|
||||
orr tmp1, tmp1, #AT91_PMC_CSS_MAIN
|
||||
save_mck:
|
||||
str tmp1, [pmc, tmp2]
|
||||
|
||||
wait_mckrdy
|
||||
|
||||
at91_plla_disable
|
||||
|
||||
ldr r0, .pm_mode
|
||||
cmp r0, #AT91_PM_ULP1
|
||||
cmp tmp3, #AT91_PM_ULP1
|
||||
beq ulp1_mode
|
||||
|
||||
at91_pm_ulp0_mode
|
||||
|
@ -208,6 +208,7 @@ config ARCH_BRCMSTB
|
||||
select ARM_GIC
|
||||
select ARM_ERRATA_798181 if SMP
|
||||
select HAVE_ARM_ARCH_TIMER
|
||||
select BCM7038_L1_IRQ
|
||||
select BRCMSTB_L2_IRQ
|
||||
select BCM7120_L2_IRQ
|
||||
select ARCH_HAS_HOLES_MEMORYMODEL
|
||||
|
@ -548,8 +548,7 @@ static const struct property_entry eeprom_properties[] = {
|
||||
*/
|
||||
static struct i2c_client *dm6446evm_msp;
|
||||
|
||||
static int dm6446evm_msp_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
static int dm6446evm_msp_probe(struct i2c_client *client)
|
||||
{
|
||||
dm6446evm_msp = client;
|
||||
return 0;
|
||||
@ -569,7 +568,7 @@ static const struct i2c_device_id dm6446evm_msp_ids[] = {
|
||||
static struct i2c_driver dm6446evm_msp_driver = {
|
||||
.driver.name = "dm6446evm_msp",
|
||||
.id_table = dm6446evm_msp_ids,
|
||||
.probe = dm6446evm_msp_probe,
|
||||
.probe_new = dm6446evm_msp_probe,
|
||||
.remove = dm6446evm_msp_remove,
|
||||
};
|
||||
|
||||
|
@ -160,8 +160,7 @@ static struct platform_device davinci_aemif_device = {
|
||||
#define DM646X_EVM_ATA_PWD BIT(1)
|
||||
|
||||
/* CPLD Register 0 Client: used for I/O Control */
|
||||
static int cpld_reg0_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
static int cpld_reg0_probe(struct i2c_client *client)
|
||||
{
|
||||
if (HAS_ATA) {
|
||||
u8 data;
|
||||
@ -197,7 +196,7 @@ static const struct i2c_device_id cpld_reg_ids[] = {
|
||||
static struct i2c_driver dm6467evm_cpld_driver = {
|
||||
.driver.name = "cpld_reg0",
|
||||
.id_table = cpld_reg_ids,
|
||||
.probe = cpld_reg0_probe,
|
||||
.probe_new = cpld_reg0_probe,
|
||||
};
|
||||
|
||||
/* LEDS */
|
||||
@ -397,8 +396,7 @@ static struct snd_platform_data dm646x_evm_snd_data[] = {
|
||||
#ifdef CONFIG_I2C
|
||||
static struct i2c_client *cpld_client;
|
||||
|
||||
static int cpld_video_probe(struct i2c_client *client,
|
||||
const struct i2c_device_id *id)
|
||||
static int cpld_video_probe(struct i2c_client *client)
|
||||
{
|
||||
cpld_client = client;
|
||||
return 0;
|
||||
@ -419,7 +417,7 @@ static struct i2c_driver cpld_video_driver = {
|
||||
.driver = {
|
||||
.name = "cpld_video",
|
||||
},
|
||||
.probe = cpld_video_probe,
|
||||
.probe_new = cpld_video_probe,
|
||||
.remove = cpld_video_remove,
|
||||
.id_table = cpld_video_id,
|
||||
};
|
||||
|
@ -24,7 +24,6 @@ menuconfig ARCH_EXYNOS
|
||||
select HAVE_ARM_ARCH_TIMER if ARCH_EXYNOS5
|
||||
select HAVE_ARM_SCU if SMP
|
||||
select HAVE_S3C2410_I2C if I2C
|
||||
select HAVE_S3C2410_WATCHDOG if WATCHDOG
|
||||
select HAVE_S3C_RTC if RTC_CLASS
|
||||
select PINCTRL
|
||||
select PINCTRL_EXYNOS
|
||||
|
@ -3,10 +3,6 @@
|
||||
# Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
|
||||
# http://www.samsung.com/
|
||||
|
||||
ccflags-$(CONFIG_ARCH_MULTIPLATFORM) += -I$(srctree)/$(src)/include -I$(srctree)/arch/arm/plat-samsung/include
|
||||
|
||||
# Core
|
||||
|
||||
obj-$(CONFIG_ARCH_EXYNOS) += exynos.o exynos-smc.o firmware.o
|
||||
|
||||
obj-$(CONFIG_EXYNOS_CPU_SUSPEND) += pm.o sleep.o
|
||||
|
@ -24,12 +24,12 @@
|
||||
#define EXYNOS5800_SOC_ID 0xE5422000
|
||||
#define EXYNOS5_SOC_MASK 0xFFFFF000
|
||||
|
||||
extern unsigned long samsung_cpu_id;
|
||||
extern unsigned long exynos_cpu_id;
|
||||
|
||||
#define IS_SAMSUNG_CPU(name, id, mask) \
|
||||
static inline int is_samsung_##name(void) \
|
||||
{ \
|
||||
return ((samsung_cpu_id & mask) == (id & mask)); \
|
||||
return ((exynos_cpu_id & mask) == (id & mask)); \
|
||||
}
|
||||
|
||||
IS_SAMSUNG_CPU(exynos3250, EXYNOS3250_SOC_ID, EXYNOS3_SOC_MASK)
|
||||
@ -147,7 +147,7 @@ extern struct cpuidle_exynos_data cpuidle_coupled_exynos_data;
|
||||
|
||||
extern void exynos_set_delayed_reset_assertion(bool enable);
|
||||
|
||||
extern unsigned int samsung_rev(void);
|
||||
extern unsigned int exynos_rev(void);
|
||||
extern void exynos_core_restart(u32 core_id);
|
||||
extern int exynos_set_boot_addr(u32 core_id, unsigned long boot_addr);
|
||||
extern int exynos_get_boot_addr(u32 core_id, unsigned long *boot_addr);
|
||||
|
@ -19,11 +19,12 @@
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
#include <plat/cpu.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#define S3C_ADDR_BASE 0xF6000000
|
||||
#define S3C_ADDR(x) ((void __iomem __force *)S3C_ADDR_BASE + (x))
|
||||
#define S5P_VA_CHIPID S3C_ADDR(0x02000000)
|
||||
|
||||
static struct platform_device exynos_cpuidle = {
|
||||
.name = "exynos_cpuidle",
|
||||
#ifdef CONFIG_ARM_EXYNOS_CPUIDLE
|
||||
@ -36,6 +37,14 @@ void __iomem *sysram_base_addr __ro_after_init;
|
||||
phys_addr_t sysram_base_phys __ro_after_init;
|
||||
void __iomem *sysram_ns_base_addr __ro_after_init;
|
||||
|
||||
unsigned long exynos_cpu_id;
|
||||
static unsigned int exynos_cpu_rev;
|
||||
|
||||
unsigned int exynos_rev(void)
|
||||
{
|
||||
return exynos_cpu_rev;
|
||||
}
|
||||
|
||||
void __init exynos_sysram_init(void)
|
||||
{
|
||||
struct device_node *node;
|
||||
@ -86,7 +95,11 @@ static void __init exynos_init_io(void)
|
||||
of_scan_flat_dt(exynos_fdt_map_chipid, NULL);
|
||||
|
||||
/* detect cpu id and rev. */
|
||||
s5p_init_cpu(S5P_VA_CHIPID);
|
||||
exynos_cpu_id = readl_relaxed(S5P_VA_CHIPID);
|
||||
exynos_cpu_rev = exynos_cpu_id & 0xFF;
|
||||
|
||||
pr_info("Samsung CPU ID: 0x%08lx\n", exynos_cpu_id);
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
@ -193,8 +206,8 @@ static void __init exynos_dt_fixup(void)
|
||||
}
|
||||
|
||||
DT_MACHINE_START(EXYNOS_DT, "Samsung Exynos (Flattened Device Tree)")
|
||||
.l2c_aux_val = 0x3c400000,
|
||||
.l2c_aux_mask = 0xc20fffff,
|
||||
.l2c_aux_val = 0x38400000,
|
||||
.l2c_aux_mask = 0xc60fffff,
|
||||
.smp = smp_ops(exynos_smp_ops),
|
||||
.map_io = exynos_init_io,
|
||||
.init_early = exynos_firmware_init,
|
||||
|
@ -1,18 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
|
||||
* http://www.samsung.com/
|
||||
*
|
||||
* Exynos - Memory map definitions
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MAP_H
|
||||
#define __ASM_ARCH_MAP_H __FILE__
|
||||
|
||||
#include <plat/map-base.h>
|
||||
|
||||
#include <plat/map-s5p.h>
|
||||
|
||||
#define EXYNOS_PA_CHIPID 0x10000000
|
||||
|
||||
#endif /* __ASM_ARCH_MAP_H */
|
@ -22,8 +22,6 @@
|
||||
#include <asm/smp_scu.h>
|
||||
#include <asm/firmware.h>
|
||||
|
||||
#include <mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
|
||||
extern void exynos4_secondary_startup(void);
|
||||
@ -188,7 +186,7 @@ void exynos_scu_enable(void)
|
||||
|
||||
static void __iomem *cpu_boot_reg_base(void)
|
||||
{
|
||||
if (soc_is_exynos4210() && samsung_rev() == EXYNOS4210_REV_1_1)
|
||||
if (soc_is_exynos4210() && exynos_rev() == EXYNOS4210_REV_1_1)
|
||||
return pmu_base_addr + S5P_INFORM5;
|
||||
return sysram_base_addr;
|
||||
}
|
||||
|
@ -26,18 +26,18 @@
|
||||
|
||||
static inline void __iomem *exynos_boot_vector_addr(void)
|
||||
{
|
||||
if (samsung_rev() == EXYNOS4210_REV_1_1)
|
||||
if (exynos_rev() == EXYNOS4210_REV_1_1)
|
||||
return pmu_base_addr + S5P_INFORM7;
|
||||
else if (samsung_rev() == EXYNOS4210_REV_1_0)
|
||||
else if (exynos_rev() == EXYNOS4210_REV_1_0)
|
||||
return sysram_base_addr + 0x24;
|
||||
return pmu_base_addr + S5P_INFORM0;
|
||||
}
|
||||
|
||||
static inline void __iomem *exynos_boot_vector_flag(void)
|
||||
{
|
||||
if (samsung_rev() == EXYNOS4210_REV_1_1)
|
||||
if (exynos_rev() == EXYNOS4210_REV_1_1)
|
||||
return pmu_base_addr + S5P_INFORM6;
|
||||
else if (samsung_rev() == EXYNOS4210_REV_1_0)
|
||||
else if (exynos_rev() == EXYNOS4210_REV_1_0)
|
||||
return sysram_base_addr + 0x20;
|
||||
return pmu_base_addr + S5P_INFORM1;
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config ARCH_HISI
|
||||
bool "Hisilicon SoC Support"
|
||||
depends on ARCH_MULTI_V7
|
||||
depends on ARCH_MULTI_V7 || ARCH_MULTI_V5
|
||||
select ARM_AMBA
|
||||
select ARM_GIC
|
||||
select ARM_GIC if ARCH_MULTI_V7
|
||||
select ARM_TIMER_SP804
|
||||
select POWER_RESET
|
||||
select POWER_RESET_HISI
|
||||
@ -15,6 +15,7 @@ menu "Hisilicon platform type"
|
||||
|
||||
config ARCH_HI3xxx
|
||||
bool "Hisilicon Hi36xx family"
|
||||
depends on ARCH_MULTI_V7
|
||||
select CACHE_L2X0
|
||||
select HAVE_ARM_SCU if SMP
|
||||
select HAVE_ARM_TWD if SMP
|
||||
@ -25,6 +26,7 @@ config ARCH_HI3xxx
|
||||
|
||||
config ARCH_HIP01
|
||||
bool "Hisilicon HIP01 family"
|
||||
depends on ARCH_MULTI_V7
|
||||
select HAVE_ARM_SCU if SMP
|
||||
select HAVE_ARM_TWD if SMP
|
||||
select ARM_GLOBAL_TIMER
|
||||
@ -33,6 +35,7 @@ config ARCH_HIP01
|
||||
|
||||
config ARCH_HIP04
|
||||
bool "Hisilicon HiP04 Cortex A15 family"
|
||||
depends on ARCH_MULTI_V7
|
||||
select ARM_ERRATA_798181 if SMP
|
||||
select HAVE_ARM_ARCH_TIMER
|
||||
select MCPM if SMP
|
||||
@ -43,6 +46,7 @@ config ARCH_HIP04
|
||||
|
||||
config ARCH_HIX5HD2
|
||||
bool "Hisilicon X5HD2 family"
|
||||
depends on ARCH_MULTI_V7
|
||||
select CACHE_L2X0
|
||||
select HAVE_ARM_SCU if SMP
|
||||
select HAVE_ARM_TWD if SMP
|
||||
@ -50,6 +54,14 @@ config ARCH_HIX5HD2
|
||||
select PINCTRL_SINGLE
|
||||
help
|
||||
Support for Hisilicon HIX5HD2 SoC family
|
||||
|
||||
config ARCH_SD5203
|
||||
bool "Hisilicon SD5203 family"
|
||||
depends on ARCH_MULTI_V5
|
||||
select DW_APB_ICTL
|
||||
help
|
||||
Support for Hisilicon SD5203 SoC family
|
||||
|
||||
endmenu
|
||||
|
||||
endif
|
||||
|
@ -1,207 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright (C) 2010 Jason Wang <jason77.wang@gmail.com>
|
||||
*/
|
||||
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/irqdomain.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/smsc911x.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
#include "3ds_debugboard.h"
|
||||
#include "hardware.h"
|
||||
|
||||
/* LAN9217 ethernet base address */
|
||||
#define LAN9217_BASE_ADDR(n) (n + 0x0)
|
||||
/* External UART */
|
||||
#define UARTA_BASE_ADDR(n) (n + 0x8000)
|
||||
#define UARTB_BASE_ADDR(n) (n + 0x10000)
|
||||
|
||||
#define BOARD_IO_ADDR(n) (n + 0x20000)
|
||||
/* LED switchs */
|
||||
#define LED_SWITCH_REG 0x00
|
||||
/* buttons */
|
||||
#define SWITCH_BUTTONS_REG 0x08
|
||||
/* status, interrupt */
|
||||
#define INTR_STATUS_REG 0x10
|
||||
#define INTR_MASK_REG 0x38
|
||||
#define INTR_RESET_REG 0x20
|
||||
/* magic word for debug CPLD */
|
||||
#define MAGIC_NUMBER1_REG 0x40
|
||||
#define MAGIC_NUMBER2_REG 0x48
|
||||
/* CPLD code version */
|
||||
#define CPLD_CODE_VER_REG 0x50
|
||||
/* magic word for debug CPLD */
|
||||
#define MAGIC_NUMBER3_REG 0x58
|
||||
/* module reset register*/
|
||||
#define MODULE_RESET_REG 0x60
|
||||
/* CPU ID and Personality ID */
|
||||
#define MCU_BOARD_ID_REG 0x68
|
||||
|
||||
#define MXC_MAX_EXP_IO_LINES 16
|
||||
|
||||
/* interrupts like external uart , external ethernet etc*/
|
||||
#define EXPIO_INT_ENET 0
|
||||
#define EXPIO_INT_XUART_A 1
|
||||
#define EXPIO_INT_XUART_B 2
|
||||
#define EXPIO_INT_BUTTON_A 3
|
||||
#define EXPIO_INT_BUTTON_B 4
|
||||
|
||||
static void __iomem *brd_io;
|
||||
static struct irq_domain *domain;
|
||||
|
||||
static struct resource smsc911x_resources[] = {
|
||||
{
|
||||
.flags = IORESOURCE_MEM,
|
||||
} , {
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
static struct smsc911x_platform_config smsc911x_config = {
|
||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||
.flags = SMSC911X_USE_32BIT | SMSC911X_FORCE_INTERNAL_PHY,
|
||||
};
|
||||
|
||||
static struct platform_device smsc_lan9217_device = {
|
||||
.name = "smsc911x",
|
||||
.id = -1,
|
||||
.dev = {
|
||||
.platform_data = &smsc911x_config,
|
||||
},
|
||||
.num_resources = ARRAY_SIZE(smsc911x_resources),
|
||||
.resource = smsc911x_resources,
|
||||
};
|
||||
|
||||
static void mxc_expio_irq_handler(struct irq_desc *desc)
|
||||
{
|
||||
u32 imr_val;
|
||||
u32 int_valid;
|
||||
u32 expio_irq;
|
||||
|
||||
/* irq = gpio irq number */
|
||||
desc->irq_data.chip->irq_mask(&desc->irq_data);
|
||||
|
||||
imr_val = imx_readw(brd_io + INTR_MASK_REG);
|
||||
int_valid = imx_readw(brd_io + INTR_STATUS_REG) & ~imr_val;
|
||||
|
||||
expio_irq = 0;
|
||||
for (; int_valid != 0; int_valid >>= 1, expio_irq++) {
|
||||
if ((int_valid & 1) == 0)
|
||||
continue;
|
||||
generic_handle_irq(irq_find_mapping(domain, expio_irq));
|
||||
}
|
||||
|
||||
desc->irq_data.chip->irq_ack(&desc->irq_data);
|
||||
desc->irq_data.chip->irq_unmask(&desc->irq_data);
|
||||
}
|
||||
|
||||
/*
|
||||
* Disable an expio pin's interrupt by setting the bit in the imr.
|
||||
* Irq is an expio virtual irq number
|
||||
*/
|
||||
static void expio_mask_irq(struct irq_data *d)
|
||||
{
|
||||
u16 reg;
|
||||
u32 expio = d->hwirq;
|
||||
|
||||
reg = imx_readw(brd_io + INTR_MASK_REG);
|
||||
reg |= (1 << expio);
|
||||
imx_writew(reg, brd_io + INTR_MASK_REG);
|
||||
}
|
||||
|
||||
static void expio_ack_irq(struct irq_data *d)
|
||||
{
|
||||
u32 expio = d->hwirq;
|
||||
|
||||
imx_writew(1 << expio, brd_io + INTR_RESET_REG);
|
||||
imx_writew(0, brd_io + INTR_RESET_REG);
|
||||
expio_mask_irq(d);
|
||||
}
|
||||
|
||||
static void expio_unmask_irq(struct irq_data *d)
|
||||
{
|
||||
u16 reg;
|
||||
u32 expio = d->hwirq;
|
||||
|
||||
reg = imx_readw(brd_io + INTR_MASK_REG);
|
||||
reg &= ~(1 << expio);
|
||||
imx_writew(reg, brd_io + INTR_MASK_REG);
|
||||
}
|
||||
|
||||
static struct irq_chip expio_irq_chip = {
|
||||
.irq_ack = expio_ack_irq,
|
||||
.irq_mask = expio_mask_irq,
|
||||
.irq_unmask = expio_unmask_irq,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply dummy_supplies[] = {
|
||||
REGULATOR_SUPPLY("vdd33a", "smsc911x"),
|
||||
REGULATOR_SUPPLY("vddvario", "smsc911x"),
|
||||
};
|
||||
|
||||
int __init mxc_expio_init(u32 base, u32 intr_gpio)
|
||||
{
|
||||
u32 p_irq = gpio_to_irq(intr_gpio);
|
||||
int irq_base;
|
||||
int i;
|
||||
|
||||
brd_io = ioremap(BOARD_IO_ADDR(base), SZ_4K);
|
||||
if (brd_io == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
if ((imx_readw(brd_io + MAGIC_NUMBER1_REG) != 0xAAAA) ||
|
||||
(imx_readw(brd_io + MAGIC_NUMBER2_REG) != 0x5555) ||
|
||||
(imx_readw(brd_io + MAGIC_NUMBER3_REG) != 0xCAFE)) {
|
||||
pr_info("3-Stack Debug board not detected\n");
|
||||
iounmap(brd_io);
|
||||
brd_io = NULL;
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
pr_info("3-Stack Debug board detected, rev = 0x%04X\n",
|
||||
readw(brd_io + CPLD_CODE_VER_REG));
|
||||
|
||||
/*
|
||||
* Configure INT line as GPIO input
|
||||
*/
|
||||
gpio_request(intr_gpio, "expio_pirq");
|
||||
gpio_direction_input(intr_gpio);
|
||||
|
||||
/* disable the interrupt and clear the status */
|
||||
imx_writew(0, brd_io + INTR_MASK_REG);
|
||||
imx_writew(0xFFFF, brd_io + INTR_RESET_REG);
|
||||
imx_writew(0, brd_io + INTR_RESET_REG);
|
||||
imx_writew(0x1F, brd_io + INTR_MASK_REG);
|
||||
|
||||
irq_base = irq_alloc_descs(-1, 0, MXC_MAX_EXP_IO_LINES, numa_node_id());
|
||||
WARN_ON(irq_base < 0);
|
||||
|
||||
domain = irq_domain_add_legacy(NULL, MXC_MAX_EXP_IO_LINES, irq_base, 0,
|
||||
&irq_domain_simple_ops, NULL);
|
||||
WARN_ON(!domain);
|
||||
|
||||
for (i = irq_base; i < irq_base + MXC_MAX_EXP_IO_LINES; i++) {
|
||||
irq_set_chip_and_handler(i, &expio_irq_chip, handle_level_irq);
|
||||
irq_clear_status_flags(i, IRQ_NOREQUEST);
|
||||
}
|
||||
irq_set_irq_type(p_irq, IRQF_TRIGGER_LOW);
|
||||
irq_set_chained_handler(p_irq, mxc_expio_irq_handler);
|
||||
|
||||
/* Register Lan device on the debugboard */
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
smsc911x_resources[0].start = LAN9217_BASE_ADDR(base);
|
||||
smsc911x_resources[0].end = LAN9217_BASE_ADDR(base) + 0x100 - 1;
|
||||
smsc911x_resources[1].start = irq_find_mapping(domain, EXPIO_INT_ENET);
|
||||
smsc911x_resources[1].end = irq_find_mapping(domain, EXPIO_INT_ENET);
|
||||
platform_device_register(&smsc_lan9217_device);
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MXC_3DS_DB_H__
|
||||
#define __ASM_ARCH_MXC_3DS_DB_H__
|
||||
|
||||
extern int __init mxc_expio_init(u32 base, u32 intr_gpio);
|
||||
|
||||
#endif /* __ASM_ARCH_MXC_3DS_DB_H__ */
|
@ -47,371 +47,26 @@ config HAVE_IMX_SRC
|
||||
def_bool y if SMP
|
||||
select ARCH_HAS_RESET_CONTROLLER
|
||||
|
||||
config IMX_HAVE_IOMUX_V1
|
||||
bool
|
||||
|
||||
config ARCH_MXC_IOMUX_V3
|
||||
bool
|
||||
|
||||
config SOC_IMX21
|
||||
bool
|
||||
select CPU_ARM926T
|
||||
select IMX_HAVE_IOMUX_V1
|
||||
select MXC_AVIC
|
||||
|
||||
config SOC_IMX27
|
||||
bool
|
||||
select CPU_ARM926T
|
||||
select IMX_HAVE_IOMUX_V1
|
||||
select MXC_AVIC
|
||||
select PINCTRL_IMX27
|
||||
|
||||
config SOC_IMX31
|
||||
bool
|
||||
select CPU_V6
|
||||
select MXC_AVIC
|
||||
|
||||
config SOC_IMX35
|
||||
bool
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select MXC_AVIC
|
||||
select PINCTRL_IMX35
|
||||
|
||||
if ARCH_MULTI_V5
|
||||
|
||||
comment "MX21 platforms:"
|
||||
|
||||
config MACH_MX21ADS
|
||||
bool "MX21ADS platform"
|
||||
select IMX_HAVE_PLATFORM_IMX_FB
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select SOC_IMX21
|
||||
help
|
||||
Include support for MX21ADS platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
comment "MX27 platforms:"
|
||||
|
||||
config MACH_MX27ADS
|
||||
bool "MX27ADS platform"
|
||||
select IMX_HAVE_PLATFORM_IMX_FB
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_MXC_W1
|
||||
select SOC_IMX27
|
||||
help
|
||||
Include support for MX27ADS platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX27_3DS
|
||||
bool "MX27PDK platform"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_FB
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MX2_CAMERA
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select MXC_DEBUG_BOARD
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX27
|
||||
help
|
||||
Include support for MX27PDK platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_IMX27_VISSTRIM_M10
|
||||
bool "Vista Silicon i.MX27 Visstrim_m10"
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MX2_CAMERA
|
||||
select IMX_HAVE_PLATFORM_MX2_EMMA
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select LEDS_GPIO_REGISTER
|
||||
select SOC_IMX27
|
||||
help
|
||||
Include support for Visstrim_m10 platform and its different variants.
|
||||
This includes specific configurations for the board and its
|
||||
peripherals.
|
||||
|
||||
config MACH_PCA100
|
||||
bool "Phytec phyCARD-s (pca100)"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_FB
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_MXC_W1
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX27
|
||||
help
|
||||
Include support for phyCARD-s (aka pca100) platform. This
|
||||
includes specific configurations for the module and its peripherals.
|
||||
|
||||
config MACH_IMX27_DT
|
||||
bool "Support i.MX27 platforms from device tree"
|
||||
select SOC_IMX27
|
||||
help
|
||||
Include support for Freescale i.MX27 based platforms
|
||||
using the device tree for discovery
|
||||
|
||||
endif
|
||||
|
||||
if ARCH_MULTI_V6
|
||||
|
||||
comment "MX31 platforms:"
|
||||
comment "ARM1136 platforms"
|
||||
|
||||
config MACH_MX31ADS
|
||||
bool "Support MX31ADS platforms"
|
||||
default y
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select SOC_IMX31
|
||||
config SOC_IMX31
|
||||
bool "i.MX31 support"
|
||||
select CPU_V6
|
||||
select MXC_AVIC
|
||||
help
|
||||
Include support for MX31ADS platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
This enables support for Freescale i.MX31 processor
|
||||
|
||||
config MACH_MX31ADS_WM1133_EV1
|
||||
bool "Support Wolfson Microelectronics 1133-EV1 module"
|
||||
depends on MACH_MX31ADS
|
||||
depends on MFD_WM8350_I2C
|
||||
depends on REGULATOR_WM8350 = y
|
||||
config SOC_IMX35
|
||||
bool "i.MX35 support"
|
||||
select MXC_AVIC
|
||||
select PINCTRL_IMX35
|
||||
help
|
||||
Include support for the Wolfson Microelectronics 1133-EV1 PMU
|
||||
and audio module for the MX31ADS platform.
|
||||
|
||||
config MACH_MX31LILLY
|
||||
bool "Support MX31 LILLY-1131 platforms (INCO startec)"
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for mx31 based LILLY1131 modules. This includes
|
||||
specific configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX31LITE
|
||||
bool "Support MX31 LITEKIT (LogicPD)"
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_MXC_RTC
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for MX31 LITEKIT platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_PCM037
|
||||
bool "Support Phytec pcm037 (i.MX31) platforms"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_MXC_W1
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for Phytec pcm037 platform. This includes
|
||||
specific configurations for the board and its peripherals.
|
||||
|
||||
config MACH_PCM037_EET
|
||||
bool "Support pcm037 EET board extensions"
|
||||
depends on MACH_PCM037
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
help
|
||||
Add support for PCM037 EET baseboard extensions. If you are using the
|
||||
OLED display with EET, use "video=mx3fb:CMEL-OLED" kernel
|
||||
command-line parameter.
|
||||
|
||||
config MACH_MX31_3DS
|
||||
bool "Support MX31PDK (3DS)"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select MXC_DEBUG_BOARD
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for MX31PDK (3DS) platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX31_3DS_MXC_NAND_USE_BBT
|
||||
bool "Make the MXC NAND driver use the in flash Bad Block Table"
|
||||
depends on MACH_MX31_3DS
|
||||
depends on MTD_NAND_MXC
|
||||
help
|
||||
Enable this if you want that the MXC NAND driver uses the in flash
|
||||
Bad Block Table to know what blocks are bad instead of scanning the
|
||||
entire flash looking for bad block markers.
|
||||
|
||||
config MACH_MX31MOBOARD
|
||||
bool "Support mx31moboard platforms (EPFL Mobots group)"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_SPI_IMX
|
||||
select LEDS_GPIO_REGISTER
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for mx31moboard platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_QONG
|
||||
bool "Support Dave/DENX QongEVB-LITE platform"
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for Dave/DENX QongEVB-LITE platform. This includes
|
||||
specific configurations for the board and its peripherals.
|
||||
|
||||
config MACH_ARMADILLO5X0
|
||||
bool "Support Atmark Armadillo-500 Development Base Board"
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_MMC
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for Atmark Armadillo-500 platform. This includes
|
||||
specific configurations for the board and its peripherals.
|
||||
|
||||
config MACH_KZM_ARM11_01
|
||||
bool "Support KZM-ARM11-01(Kyoto Microcomputer)"
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for KZM-ARM11-01. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_BUG
|
||||
bool "Support Buglabs BUGBase platform"
|
||||
default y
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for BUGBase 1.3 platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_IMX31_DT
|
||||
bool "Support i.MX31 platforms from device tree"
|
||||
select SOC_IMX31
|
||||
help
|
||||
Include support for Freescale i.MX31 based platforms
|
||||
using the device tree for discovery.
|
||||
|
||||
comment "MX35 platforms:"
|
||||
|
||||
config MACH_IMX35_DT
|
||||
bool "Support i.MX35 platforms from device tree"
|
||||
select SOC_IMX35
|
||||
help
|
||||
Include support for Freescale i.MX35 based platforms
|
||||
using the device tree for discovery.
|
||||
|
||||
config MACH_PCM043
|
||||
bool "Support Phytec pcm043 (i.MX35) platforms"
|
||||
select IMX_HAVE_PLATFORM_FLEXCAN
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_SSI
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select USB_ULPI_VIEWPORT if USB_ULPI
|
||||
select SOC_IMX35
|
||||
help
|
||||
Include support for Phytec pcm043 platform. This includes
|
||||
specific configurations for the board and its peripherals.
|
||||
|
||||
config MACH_MX35_3DS
|
||||
bool "Support MX35PDK platform"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_FB
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_MXC_RTC
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select MXC_DEBUG_BOARD
|
||||
select SOC_IMX35
|
||||
help
|
||||
Include support for MX35PDK platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
|
||||
config MACH_VPR200
|
||||
bool "Support VPR200 platform"
|
||||
select IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
select IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
select IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
select IMX_HAVE_PLATFORM_IMX_I2C
|
||||
select IMX_HAVE_PLATFORM_IMX_UART
|
||||
select IMX_HAVE_PLATFORM_IPU_CORE
|
||||
select IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
select IMX_HAVE_PLATFORM_MXC_NAND
|
||||
select IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
select SOC_IMX35
|
||||
help
|
||||
Include support for VPR200 platform. This includes specific
|
||||
configurations for the board and its peripherals.
|
||||
This enables support for Freescale i.MX31 processor
|
||||
|
||||
endif
|
||||
|
||||
comment "Device tree only"
|
||||
|
||||
if ARCH_MULTI_V4T
|
||||
|
||||
config SOC_IMX1
|
||||
@ -428,12 +83,20 @@ if ARCH_MULTI_V5
|
||||
|
||||
config SOC_IMX25
|
||||
bool "i.MX25 support"
|
||||
select ARCH_MXC_IOMUX_V3
|
||||
select CPU_ARM926T
|
||||
select MXC_AVIC
|
||||
select PINCTRL_IMX25
|
||||
help
|
||||
This enables support for Freescale i.MX25 processor
|
||||
|
||||
config SOC_IMX27
|
||||
bool "i.MX27 support"
|
||||
select CPU_ARM926T
|
||||
select MXC_AVIC
|
||||
select PINCTRL_IMX27
|
||||
help
|
||||
This enables support for Freescale i.MX27 processor
|
||||
|
||||
endif
|
||||
|
||||
if ARCH_MULTI_V7
|
||||
@ -541,10 +204,10 @@ config SOC_LS1021A
|
||||
|
||||
endif
|
||||
|
||||
comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
|
||||
|
||||
if ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
|
||||
|
||||
comment "Cortex-A/Cortex-M asymmetric multiprocessing platforms"
|
||||
|
||||
config SOC_IMX7D_CA7
|
||||
bool
|
||||
select ARM_GIC
|
||||
@ -607,6 +270,4 @@ endchoice
|
||||
|
||||
endif
|
||||
|
||||
source "arch/arm/mach-imx/devices/Kconfig"
|
||||
|
||||
endif
|
||||
|
@ -1,22 +1,16 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y := cpu.o system.o irq-common.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX21) += mm-imx21.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX25) += cpu-imx25.o mach-imx25.o pm-imx25.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o
|
||||
obj-$(CONFIG_SOC_IMX27) += mm-imx27.o ehci-imx27.o
|
||||
obj-$(CONFIG_SOC_IMX27) += cpu-imx27.o pm-imx27.o mach-imx27.o
|
||||
|
||||
obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o iomux-imx31.o ehci-imx31.o
|
||||
obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o ehci-imx35.o
|
||||
obj-$(CONFIG_SOC_IMX31) += mm-imx3.o cpu-imx31.o mach-imx31.o
|
||||
obj-$(CONFIG_SOC_IMX35) += mm-imx3.o cpu-imx35.o mach-imx35.o
|
||||
|
||||
imx5-pm-$(CONFIG_PM) += pm-imx5.o
|
||||
obj-$(CONFIG_SOC_IMX5) += cpu-imx5.o $(imx5-pm-y)
|
||||
|
||||
obj-$(CONFIG_IMX_HAVE_IOMUX_V1) += iomux-v1.o
|
||||
obj-$(CONFIG_ARCH_MXC_IOMUX_V3) += iomux-v3.o
|
||||
|
||||
obj-$(CONFIG_MXC_TZIC) += tzic.o
|
||||
obj-$(CONFIG_MXC_AVIC) += avic.o
|
||||
|
||||
@ -37,37 +31,6 @@ obj-y += ssi-fiq.o
|
||||
obj-y += ssi-fiq-ksym.o
|
||||
endif
|
||||
|
||||
# i.MX21 based machines
|
||||
obj-$(CONFIG_MACH_MX21ADS) += mach-mx21ads.o
|
||||
|
||||
# i.MX27 based machines
|
||||
obj-$(CONFIG_MACH_MX27ADS) += mach-mx27ads.o
|
||||
obj-$(CONFIG_MACH_MX27_3DS) += mach-mx27_3ds.o
|
||||
obj-$(CONFIG_MACH_IMX27_VISSTRIM_M10) += mach-imx27_visstrim_m10.o
|
||||
obj-$(CONFIG_MACH_PCA100) += mach-pca100.o
|
||||
obj-$(CONFIG_MACH_IMX27_DT) += imx27-dt.o
|
||||
|
||||
# i.MX31 based machines
|
||||
obj-$(CONFIG_MACH_MX31ADS) += mach-mx31ads.o
|
||||
obj-$(CONFIG_MACH_MX31LILLY) += mach-mx31lilly.o mx31lilly-db.o
|
||||
obj-$(CONFIG_MACH_MX31LITE) += mach-mx31lite.o mx31lite-db.o
|
||||
obj-$(CONFIG_MACH_PCM037) += mach-pcm037.o
|
||||
obj-$(CONFIG_MACH_PCM037_EET) += mach-pcm037_eet.o
|
||||
obj-$(CONFIG_MACH_MX31_3DS) += mach-mx31_3ds.o
|
||||
obj-$(CONFIG_MACH_MX31MOBOARD) += mach-mx31moboard.o mx31moboard-devboard.o \
|
||||
mx31moboard-marxbot.o mx31moboard-smartbot.o
|
||||
obj-$(CONFIG_MACH_QONG) += mach-qong.o
|
||||
obj-$(CONFIG_MACH_ARMADILLO5X0) += mach-armadillo5x0.o
|
||||
obj-$(CONFIG_MACH_KZM_ARM11_01) += mach-kzm_arm11_01.o
|
||||
obj-$(CONFIG_MACH_BUG) += mach-bug.o
|
||||
obj-$(CONFIG_MACH_IMX31_DT) += imx31-dt.o
|
||||
|
||||
# i.MX35 based machines
|
||||
obj-$(CONFIG_MACH_PCM043) += mach-pcm043.o
|
||||
obj-$(CONFIG_MACH_MX35_3DS) += mach-mx35_3ds.o
|
||||
obj-$(CONFIG_MACH_VPR200) += mach-vpr200.o
|
||||
obj-$(CONFIG_MACH_IMX35_DT) += imx35-dt.o
|
||||
|
||||
obj-$(CONFIG_HAVE_IMX_ANATOP) += anatop.o
|
||||
obj-$(CONFIG_HAVE_IMX_GPC) += gpc.o
|
||||
obj-$(CONFIG_HAVE_IMX_MMDC) += mmdc.o
|
||||
@ -105,5 +68,3 @@ obj-$(CONFIG_SOC_IMX53) += mach-imx53.o
|
||||
obj-$(CONFIG_SOC_VF610) += mach-vf610.o
|
||||
|
||||
obj-$(CONFIG_SOC_LS1021A) += mach-ls1021a.o
|
||||
|
||||
obj-y += devices/
|
||||
|
@ -1,28 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2009 Daniel Mack <daniel@caiaq.de>
|
||||
*
|
||||
* Based on code for mobots boards,
|
||||
* Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MXC_BOARD_MX31LILLY_H__
|
||||
#define __ASM_ARCH_MXC_BOARD_MX31LILLY_H__
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
enum mx31lilly_boards {
|
||||
MX31LILLY_NOBOARD = 0,
|
||||
MX31LILLY_DB = 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* This CPU module needs a baseboard to work. After basic initializing
|
||||
* its own devices, it calls the baseboard's init function.
|
||||
*/
|
||||
|
||||
extern void mx31lilly_db_init(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_ARCH_MXC_BOARD_MX31LILLY_H__ */
|
@ -1,29 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright 2007 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright (C) 2009 Daniel Mack <daniel@caiaq.de>
|
||||
*
|
||||
* Based on code for mobots boards,
|
||||
* Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MXC_BOARD_MX31LITE_H__
|
||||
#define __ASM_ARCH_MXC_BOARD_MX31LITE_H__
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
enum mx31lite_boards {
|
||||
MX31LITE_NOBOARD = 0,
|
||||
MX31LITE_DB = 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* This CPU module needs a baseboard to work. After basic initializing
|
||||
* its own devices, it calls the baseboard's init function.
|
||||
*/
|
||||
|
||||
extern void mx31lite_db_init(void);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_ARCH_MXC_BOARD_MX31LITE_H__ */
|
@ -1,30 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2009 Valentin Longchamp, EPFL Mobots group
|
||||
*/
|
||||
|
||||
#ifndef __ASM_ARCH_MXC_BOARD_MX31MOBOARD_H__
|
||||
#define __ASM_ARCH_MXC_BOARD_MX31MOBOARD_H__
|
||||
|
||||
#ifndef __ASSEMBLY__
|
||||
|
||||
enum mx31moboard_boards {
|
||||
MX31NOBOARD = 0,
|
||||
MX31DEVBOARD = 1,
|
||||
MX31MARXBOT = 2,
|
||||
MX31SMARTBOT = 3,
|
||||
MX31EYEBOT = 4,
|
||||
};
|
||||
|
||||
/*
|
||||
* This CPU module needs a baseboard to work. After basic initializing
|
||||
* its own devices, it calls the baseboard's init function.
|
||||
*/
|
||||
|
||||
extern void mx31moboard_devboard_init(void);
|
||||
extern void mx31moboard_marxbot_init(void);
|
||||
extern void mx31moboard_smartbot_init(int board);
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_ARCH_MXC_BOARD_MX31MOBOARD_H__ */
|
@ -17,29 +17,14 @@ struct device_node;
|
||||
enum mxc_cpu_pwr_mode;
|
||||
struct of_device_id;
|
||||
|
||||
void mx21_map_io(void);
|
||||
void mx27_map_io(void);
|
||||
void mx31_map_io(void);
|
||||
void mx35_map_io(void);
|
||||
void imx21_init_early(void);
|
||||
void imx27_init_early(void);
|
||||
void imx31_init_early(void);
|
||||
void imx35_init_early(void);
|
||||
void mxc_init_irq(void __iomem *);
|
||||
void mx21_init_irq(void);
|
||||
void mx27_init_irq(void);
|
||||
void mx31_init_irq(void);
|
||||
void mx35_init_irq(void);
|
||||
void imx21_soc_init(void);
|
||||
void imx27_soc_init(void);
|
||||
void imx31_soc_init(void);
|
||||
void imx35_soc_init(void);
|
||||
int mx21_clocks_init(unsigned long lref, unsigned long fref);
|
||||
int mx27_clocks_init(unsigned long fref);
|
||||
int mx31_clocks_init(unsigned long fref);
|
||||
int mx35_clocks_init(void);
|
||||
struct platform_device *mxc_register_gpio(char *name, int id,
|
||||
resource_size_t iobase, resource_size_t iosize, int irq, int irq_high);
|
||||
void mxc_set_cpu_type(unsigned int type);
|
||||
void mxc_restart(enum reboot_mode, const char *);
|
||||
void mxc_arch_reset_init(void __iomem *);
|
||||
|
@ -9,6 +9,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/io.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/module.h>
|
||||
|
||||
#include "hardware.h"
|
||||
@ -17,16 +18,23 @@ static int mx27_cpu_rev = -1;
|
||||
static int mx27_cpu_partnumber;
|
||||
|
||||
#define SYS_CHIP_ID 0x00 /* The offset of CHIP ID register */
|
||||
#define SYSCTRL_OFFSET 0x800 /* Offset from CCM base address */
|
||||
|
||||
static int mx27_read_cpu_rev(void)
|
||||
{
|
||||
void __iomem *ccm_base;
|
||||
struct device_node *np;
|
||||
u32 val;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx27-ccm");
|
||||
ccm_base = of_iomap(np, 0);
|
||||
BUG_ON(!ccm_base);
|
||||
/*
|
||||
* now we have access to the IO registers. As we need
|
||||
* the silicon revision very early we read it here to
|
||||
* avoid any further hooks
|
||||
*/
|
||||
val = imx_readl(MX27_IO_ADDRESS(MX27_SYSCTRL_BASE_ADDR + SYS_CHIP_ID));
|
||||
val = imx_readl(ccm_base + SYSCTRL_OFFSET + SYS_CHIP_ID);
|
||||
|
||||
mx27_cpu_partnumber = (int)((val >> 12) & 0xFFFF);
|
||||
|
||||
|
@ -6,6 +6,7 @@
|
||||
*/
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "common.h"
|
||||
@ -32,10 +33,16 @@ static struct {
|
||||
|
||||
static int mx31_read_cpu_rev(void)
|
||||
{
|
||||
void __iomem *iim_base;
|
||||
struct device_node *np;
|
||||
u32 i, srev;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx31-iim");
|
||||
iim_base = of_iomap(np, 0);
|
||||
BUG_ON(!iim_base);
|
||||
|
||||
/* read SREV register from IIM module */
|
||||
srev = imx_readl(MX31_IO_ADDRESS(MX31_IIM_BASE_ADDR + MXC_IIMSREV));
|
||||
srev = imx_readl(iim_base + MXC_IIMSREV);
|
||||
srev &= 0xff;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
|
||||
|
@ -5,6 +5,7 @@
|
||||
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
|
||||
*/
|
||||
#include <linux/module.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include "hardware.h"
|
||||
@ -14,9 +15,15 @@ static int mx35_cpu_rev = -1;
|
||||
|
||||
static int mx35_read_cpu_rev(void)
|
||||
{
|
||||
void __iomem *iim_base;
|
||||
struct device_node *np;
|
||||
u32 rev;
|
||||
|
||||
rev = imx_readl(MX35_IO_ADDRESS(MX35_IIM_BASE_ADDR + MXC_IIMSREV));
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,imx35-iim");
|
||||
iim_base = of_iomap(np, 0);
|
||||
BUG_ON(!iim_base);
|
||||
|
||||
rev = imx_readl(iim_base + MXC_IIMSREV);
|
||||
switch (rev) {
|
||||
case 0x00:
|
||||
return IMX_CHIP_REVISION_1_0;
|
||||
|
@ -1,56 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "devices/devices-common.h"
|
||||
|
||||
extern const struct imx_imx21_hcd_data imx21_imx21_hcd_data;
|
||||
#define imx21_add_imx21_hcd(pdata) \
|
||||
imx_add_imx21_hcd(&imx21_imx21_hcd_data, pdata)
|
||||
|
||||
extern const struct imx_imx2_wdt_data imx21_imx2_wdt_data;
|
||||
#define imx21_add_imx2_wdt() \
|
||||
imx_add_imx2_wdt(&imx21_imx2_wdt_data)
|
||||
|
||||
extern const struct imx_imx_fb_data imx21_imx_fb_data;
|
||||
#define imx21_add_imx_fb(pdata) \
|
||||
imx_add_imx_fb(&imx21_imx_fb_data, pdata)
|
||||
|
||||
extern const struct imx_imx_i2c_data imx21_imx_i2c_data;
|
||||
#define imx21_add_imx_i2c(pdata) \
|
||||
imx_add_imx_i2c(&imx21_imx_i2c_data, pdata)
|
||||
|
||||
extern const struct imx_imx_keypad_data imx21_imx_keypad_data;
|
||||
#define imx21_add_imx_keypad(pdata) \
|
||||
imx_add_imx_keypad(&imx21_imx_keypad_data, pdata)
|
||||
|
||||
extern const struct imx_imx_ssi_data imx21_imx_ssi_data[];
|
||||
#define imx21_add_imx_ssi(id, pdata) \
|
||||
imx_add_imx_ssi(&imx21_imx_ssi_data[id], pdata)
|
||||
|
||||
extern const struct imx_imx_uart_1irq_data imx21_imx_uart_data[];
|
||||
#define imx21_add_imx_uart(id, pdata) \
|
||||
imx_add_imx_uart_1irq(&imx21_imx_uart_data[id], pdata)
|
||||
#define imx21_add_imx_uart0(pdata) imx21_add_imx_uart(0, pdata)
|
||||
#define imx21_add_imx_uart1(pdata) imx21_add_imx_uart(1, pdata)
|
||||
#define imx21_add_imx_uart2(pdata) imx21_add_imx_uart(2, pdata)
|
||||
#define imx21_add_imx_uart3(pdata) imx21_add_imx_uart(3, pdata)
|
||||
|
||||
extern const struct imx_mxc_mmc_data imx21_mxc_mmc_data[];
|
||||
#define imx21_add_mxc_mmc(id, pdata) \
|
||||
imx_add_mxc_mmc(&imx21_mxc_mmc_data[id], pdata)
|
||||
|
||||
extern const struct imx_mxc_nand_data imx21_mxc_nand_data;
|
||||
#define imx21_add_mxc_nand(pdata) \
|
||||
imx_add_mxc_nand(&imx21_mxc_nand_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_w1_data imx21_mxc_w1_data;
|
||||
#define imx21_add_mxc_w1() \
|
||||
imx_add_mxc_w1(&imx21_mxc_w1_data)
|
||||
|
||||
extern const struct imx_spi_imx_data imx21_cspi_data[];
|
||||
#define imx21_add_cspi(id, pdata) \
|
||||
imx_add_spi_imx(&imx21_cspi_data[id], pdata)
|
||||
#define imx21_add_spi_imx0(pdata) imx21_add_cspi(0, pdata)
|
||||
#define imx21_add_spi_imx1(pdata) imx21_add_cspi(1, pdata)
|
@ -1,86 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "devices/devices-common.h"
|
||||
|
||||
extern const struct imx_fec_data imx27_fec_data;
|
||||
#define imx27_add_fec(pdata) \
|
||||
imx_add_fec(&imx27_fec_data, pdata)
|
||||
|
||||
extern const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data;
|
||||
#define imx27_add_fsl_usb2_udc(pdata) \
|
||||
imx_add_fsl_usb2_udc(&imx27_fsl_usb2_udc_data, pdata)
|
||||
|
||||
extern const struct imx_imx27_coda_data imx27_coda_data;
|
||||
#define imx27_add_coda() \
|
||||
imx_add_imx27_coda(&imx27_coda_data)
|
||||
|
||||
extern const struct imx_imx2_wdt_data imx27_imx2_wdt_data;
|
||||
#define imx27_add_imx2_wdt() \
|
||||
imx_add_imx2_wdt(&imx27_imx2_wdt_data)
|
||||
|
||||
extern const struct imx_imx_fb_data imx27_imx_fb_data;
|
||||
#define imx27_add_imx_fb(pdata) \
|
||||
imx_add_imx_fb(&imx27_imx_fb_data, pdata)
|
||||
|
||||
extern const struct imx_imx_i2c_data imx27_imx_i2c_data[];
|
||||
#define imx27_add_imx_i2c(id, pdata) \
|
||||
imx_add_imx_i2c(&imx27_imx_i2c_data[id], pdata)
|
||||
|
||||
extern const struct imx_imx_keypad_data imx27_imx_keypad_data;
|
||||
#define imx27_add_imx_keypad(pdata) \
|
||||
imx_add_imx_keypad(&imx27_imx_keypad_data, pdata)
|
||||
|
||||
extern const struct imx_imx_ssi_data imx27_imx_ssi_data[];
|
||||
#define imx27_add_imx_ssi(id, pdata) \
|
||||
imx_add_imx_ssi(&imx27_imx_ssi_data[id], pdata)
|
||||
|
||||
extern const struct imx_imx_uart_1irq_data imx27_imx_uart_data[];
|
||||
#define imx27_add_imx_uart(id, pdata) \
|
||||
imx_add_imx_uart_1irq(&imx27_imx_uart_data[id], pdata)
|
||||
#define imx27_add_imx_uart0(pdata) imx27_add_imx_uart(0, pdata)
|
||||
#define imx27_add_imx_uart1(pdata) imx27_add_imx_uart(1, pdata)
|
||||
#define imx27_add_imx_uart2(pdata) imx27_add_imx_uart(2, pdata)
|
||||
#define imx27_add_imx_uart3(pdata) imx27_add_imx_uart(3, pdata)
|
||||
#define imx27_add_imx_uart4(pdata) imx27_add_imx_uart(4, pdata)
|
||||
#define imx27_add_imx_uart5(pdata) imx27_add_imx_uart(5, pdata)
|
||||
|
||||
extern const struct imx_mx2_camera_data imx27_mx2_camera_data;
|
||||
#define imx27_add_mx2_camera(pdata) \
|
||||
imx_add_mx2_camera(&imx27_mx2_camera_data, pdata)
|
||||
|
||||
extern const struct imx_mx2_emma_data imx27_mx2_emmaprp_data;
|
||||
#define imx27_add_mx2_emmaprp() \
|
||||
imx_add_mx2_emmaprp(&imx27_mx2_emmaprp_data)
|
||||
|
||||
extern const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data;
|
||||
#define imx27_add_mxc_ehci_otg(pdata) \
|
||||
imx_add_mxc_ehci(&imx27_mxc_ehci_otg_data, pdata)
|
||||
extern const struct imx_mxc_ehci_data imx27_mxc_ehci_hs_data[];
|
||||
#define imx27_add_mxc_ehci_hs(id, pdata) \
|
||||
imx_add_mxc_ehci(&imx27_mxc_ehci_hs_data[id - 1], pdata)
|
||||
|
||||
extern const struct imx_mxc_mmc_data imx27_mxc_mmc_data[];
|
||||
#define imx27_add_mxc_mmc(id, pdata) \
|
||||
imx_add_mxc_mmc(&imx27_mxc_mmc_data[id], pdata)
|
||||
|
||||
extern const struct imx_mxc_nand_data imx27_mxc_nand_data;
|
||||
#define imx27_add_mxc_nand(pdata) \
|
||||
imx_add_mxc_nand(&imx27_mxc_nand_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_w1_data imx27_mxc_w1_data;
|
||||
#define imx27_add_mxc_w1() \
|
||||
imx_add_mxc_w1(&imx27_mxc_w1_data)
|
||||
|
||||
extern const struct imx_spi_imx_data imx27_cspi_data[];
|
||||
#define imx27_add_cspi(id, gtable) \
|
||||
imx_add_spi_imx(&imx27_cspi_data[id], gtable)
|
||||
#define imx27_add_spi_imx0(gtable) imx27_add_cspi(0, gtable)
|
||||
#define imx27_add_spi_imx1(gtable) imx27_add_cspi(1, gtable)
|
||||
#define imx27_add_spi_imx2(gtable) imx27_add_cspi(2, gtable)
|
||||
|
||||
extern const struct imx_pata_imx_data imx27_pata_imx_data;
|
||||
#define imx27_add_pata_imx() \
|
||||
imx_add_pata_imx(&imx27_pata_imx_data)
|
@ -1,80 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "devices/devices-common.h"
|
||||
|
||||
extern const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data;
|
||||
#define imx31_add_fsl_usb2_udc(pdata) \
|
||||
imx_add_fsl_usb2_udc(&imx31_fsl_usb2_udc_data, pdata)
|
||||
|
||||
extern const struct imx_imx2_wdt_data imx31_imx2_wdt_data;
|
||||
#define imx31_add_imx2_wdt() \
|
||||
imx_add_imx2_wdt(&imx31_imx2_wdt_data)
|
||||
|
||||
extern const struct imx_imx_i2c_data imx31_imx_i2c_data[];
|
||||
#define imx31_add_imx_i2c(id, pdata) \
|
||||
imx_add_imx_i2c(&imx31_imx_i2c_data[id], pdata)
|
||||
#define imx31_add_imx_i2c0(pdata) imx31_add_imx_i2c(0, pdata)
|
||||
#define imx31_add_imx_i2c1(pdata) imx31_add_imx_i2c(1, pdata)
|
||||
#define imx31_add_imx_i2c2(pdata) imx31_add_imx_i2c(2, pdata)
|
||||
|
||||
extern const struct imx_imx_keypad_data imx31_imx_keypad_data;
|
||||
#define imx31_add_imx_keypad(pdata) \
|
||||
imx_add_imx_keypad(&imx31_imx_keypad_data, pdata)
|
||||
|
||||
extern const struct imx_imx_ssi_data imx31_imx_ssi_data[];
|
||||
#define imx31_add_imx_ssi(id, pdata) \
|
||||
imx_add_imx_ssi(&imx31_imx_ssi_data[id], pdata)
|
||||
|
||||
extern const struct imx_imx_uart_1irq_data imx31_imx_uart_data[];
|
||||
#define imx31_add_imx_uart(id, pdata) \
|
||||
imx_add_imx_uart_1irq(&imx31_imx_uart_data[id], pdata)
|
||||
#define imx31_add_imx_uart0(pdata) imx31_add_imx_uart(0, pdata)
|
||||
#define imx31_add_imx_uart1(pdata) imx31_add_imx_uart(1, pdata)
|
||||
#define imx31_add_imx_uart2(pdata) imx31_add_imx_uart(2, pdata)
|
||||
#define imx31_add_imx_uart3(pdata) imx31_add_imx_uart(3, pdata)
|
||||
#define imx31_add_imx_uart4(pdata) imx31_add_imx_uart(4, pdata)
|
||||
|
||||
extern const struct imx_ipu_core_data imx31_ipu_core_data;
|
||||
#define imx31_add_ipu_core() \
|
||||
imx_add_ipu_core(&imx31_ipu_core_data)
|
||||
#define imx31_alloc_mx3_camera(pdata) \
|
||||
imx_alloc_mx3_camera(&imx31_ipu_core_data, pdata)
|
||||
#define imx31_add_mx3_sdc_fb(pdata) \
|
||||
imx_add_mx3_sdc_fb(&imx31_ipu_core_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_ehci_data imx31_mxc_ehci_otg_data;
|
||||
#define imx31_add_mxc_ehci_otg(pdata) \
|
||||
imx_add_mxc_ehci(&imx31_mxc_ehci_otg_data, pdata)
|
||||
extern const struct imx_mxc_ehci_data imx31_mxc_ehci_hs_data[];
|
||||
#define imx31_add_mxc_ehci_hs(id, pdata) \
|
||||
imx_add_mxc_ehci(&imx31_mxc_ehci_hs_data[id - 1], pdata)
|
||||
|
||||
extern const struct imx_mxc_mmc_data imx31_mxc_mmc_data[];
|
||||
#define imx31_add_mxc_mmc(id, pdata) \
|
||||
imx_add_mxc_mmc(&imx31_mxc_mmc_data[id], pdata)
|
||||
|
||||
extern const struct imx_mxc_nand_data imx31_mxc_nand_data;
|
||||
#define imx31_add_mxc_nand(pdata) \
|
||||
imx_add_mxc_nand(&imx31_mxc_nand_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_rtc_data imx31_mxc_rtc_data;
|
||||
#define imx31_add_mxc_rtc() \
|
||||
imx_add_mxc_rtc(&imx31_mxc_rtc_data)
|
||||
|
||||
extern const struct imx_mxc_w1_data imx31_mxc_w1_data;
|
||||
#define imx31_add_mxc_w1() \
|
||||
imx_add_mxc_w1(&imx31_mxc_w1_data)
|
||||
|
||||
extern const struct imx_spi_imx_data imx31_cspi_data[];
|
||||
#define imx31_add_cspi(id, gtable) \
|
||||
imx_add_spi_imx(&imx31_cspi_data[id], gtable)
|
||||
#define imx31_add_spi_imx0(gtable) imx31_add_cspi(0, gtable)
|
||||
#define imx31_add_spi_imx1(gtable) imx31_add_cspi(1, gtable)
|
||||
#define imx31_add_spi_imx2(gtable) imx31_add_cspi(2, gtable)
|
||||
|
||||
extern const struct imx_pata_imx_data imx31_pata_imx_data;
|
||||
#define imx31_add_pata_imx() \
|
||||
imx_add_pata_imx(&imx31_pata_imx_data)
|
@ -1,87 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "devices/devices-common.h"
|
||||
|
||||
extern const struct imx_fec_data imx35_fec_data;
|
||||
#define imx35_add_fec(pdata) \
|
||||
imx_add_fec(&imx35_fec_data, pdata)
|
||||
|
||||
extern const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data;
|
||||
#define imx35_add_fsl_usb2_udc(pdata) \
|
||||
imx_add_fsl_usb2_udc(&imx35_fsl_usb2_udc_data, pdata)
|
||||
|
||||
extern const struct imx_flexcan_data imx35_flexcan_data[];
|
||||
#define imx35_add_flexcan(id) \
|
||||
imx_add_flexcan(&imx35_flexcan_data[id])
|
||||
#define imx35_add_flexcan0() imx35_add_flexcan(0)
|
||||
#define imx35_add_flexcan1() imx35_add_flexcan(1)
|
||||
|
||||
extern const struct imx_imx2_wdt_data imx35_imx2_wdt_data;
|
||||
#define imx35_add_imx2_wdt() \
|
||||
imx_add_imx2_wdt(&imx35_imx2_wdt_data)
|
||||
|
||||
extern const struct imx_imx_i2c_data imx35_imx_i2c_data[];
|
||||
#define imx35_add_imx_i2c(id, pdata) \
|
||||
imx_add_imx_i2c(&imx35_imx_i2c_data[id], pdata)
|
||||
#define imx35_add_imx_i2c0(pdata) imx35_add_imx_i2c(0, pdata)
|
||||
#define imx35_add_imx_i2c1(pdata) imx35_add_imx_i2c(1, pdata)
|
||||
#define imx35_add_imx_i2c2(pdata) imx35_add_imx_i2c(2, pdata)
|
||||
|
||||
extern const struct imx_imx_keypad_data imx35_imx_keypad_data;
|
||||
#define imx35_add_imx_keypad(pdata) \
|
||||
imx_add_imx_keypad(&imx35_imx_keypad_data, pdata)
|
||||
|
||||
extern const struct imx_imx_ssi_data imx35_imx_ssi_data[];
|
||||
#define imx35_add_imx_ssi(id, pdata) \
|
||||
imx_add_imx_ssi(&imx35_imx_ssi_data[id], pdata)
|
||||
|
||||
extern const struct imx_imx_uart_1irq_data imx35_imx_uart_data[];
|
||||
#define imx35_add_imx_uart(id, pdata) \
|
||||
imx_add_imx_uart_1irq(&imx35_imx_uart_data[id], pdata)
|
||||
#define imx35_add_imx_uart0(pdata) imx35_add_imx_uart(0, pdata)
|
||||
#define imx35_add_imx_uart1(pdata) imx35_add_imx_uart(1, pdata)
|
||||
#define imx35_add_imx_uart2(pdata) imx35_add_imx_uart(2, pdata)
|
||||
|
||||
extern const struct imx_ipu_core_data imx35_ipu_core_data;
|
||||
#define imx35_add_ipu_core() \
|
||||
imx_add_ipu_core(&imx35_ipu_core_data)
|
||||
#define imx35_alloc_mx3_camera(pdata) \
|
||||
imx_alloc_mx3_camera(&imx35_ipu_core_data, pdata)
|
||||
#define imx35_add_mx3_sdc_fb(pdata) \
|
||||
imx_add_mx3_sdc_fb(&imx35_ipu_core_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_ehci_data imx35_mxc_ehci_otg_data;
|
||||
#define imx35_add_mxc_ehci_otg(pdata) \
|
||||
imx_add_mxc_ehci(&imx35_mxc_ehci_otg_data, pdata)
|
||||
extern const struct imx_mxc_ehci_data imx35_mxc_ehci_hs_data;
|
||||
#define imx35_add_mxc_ehci_hs(pdata) \
|
||||
imx_add_mxc_ehci(&imx35_mxc_ehci_hs_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_nand_data imx35_mxc_nand_data;
|
||||
#define imx35_add_mxc_nand(pdata) \
|
||||
imx_add_mxc_nand(&imx35_mxc_nand_data, pdata)
|
||||
|
||||
extern const struct imx_mxc_rtc_data imx35_mxc_rtc_data;
|
||||
#define imx35_add_mxc_rtc() \
|
||||
imx_add_mxc_rtc(&imx35_mxc_rtc_data)
|
||||
|
||||
extern const struct imx_mxc_w1_data imx35_mxc_w1_data;
|
||||
#define imx35_add_mxc_w1() \
|
||||
imx_add_mxc_w1(&imx35_mxc_w1_data)
|
||||
|
||||
extern const struct imx_sdhci_esdhc_imx_data imx35_sdhci_esdhc_imx_data[];
|
||||
#define imx35_add_sdhci_esdhc_imx(id, pdata) \
|
||||
imx_add_sdhci_esdhc_imx(&imx35_sdhci_esdhc_imx_data[id], pdata)
|
||||
|
||||
extern const struct imx_spi_imx_data imx35_cspi_data[];
|
||||
#define imx35_add_cspi(id, pdata) \
|
||||
imx_add_spi_imx(&imx35_cspi_data[id], pdata)
|
||||
#define imx35_add_spi_imx0(pdata) imx35_add_cspi(0, pdata)
|
||||
#define imx35_add_spi_imx1(pdata) imx35_add_cspi(1, pdata)
|
||||
|
||||
extern const struct imx_pata_imx_data imx35_pata_imx_data;
|
||||
#define imx35_add_pata_imx() \
|
||||
imx_add_pata_imx(&imx35_pata_imx_data)
|
@ -1,71 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0-only
|
||||
config IMX_HAVE_PLATFORM_FEC
|
||||
bool
|
||||
default y if SOC_IMX25 || SOC_IMX27 || SOC_IMX35
|
||||
|
||||
config IMX_HAVE_PLATFORM_FLEXCAN
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_FSL_USB2_UDC
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_GPIO_KEYS
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX21_HCD
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX27_CODA
|
||||
bool
|
||||
default y if SOC_IMX27
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX2_WDT
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX_FB
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX_I2C
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX_KEYPAD
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_PATA_IMX
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX_SSI
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IMX_UART
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_IPU_CORE
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MX2_CAMERA
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MX2_EMMA
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MXC_EHCI
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MXC_MMC
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MXC_NAND
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MXC_RTC
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_MXC_W1
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX
|
||||
bool
|
||||
|
||||
config IMX_HAVE_PLATFORM_SPI_IMX
|
||||
bool
|
@ -1,28 +0,0 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
obj-y := devices.o
|
||||
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_FEC) += platform-fec.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_FLEXCAN) += platform-flexcan.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_FSL_USB2_UDC) += platform-fsl-usb2-udc.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_GPIO_KEYS) += platform-gpio_keys.o
|
||||
obj-y += platform-gpio-mxc.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX21_HCD) += platform-imx21-hcd.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX27_CODA) += platform-imx27-coda.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX2_WDT) += platform-imx2-wdt.o
|
||||
obj-y += platform-imx-dma.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_FB) += platform-imx-fb.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_I2C) += platform-imx-i2c.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_KEYPAD) += platform-imx-keypad.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_PATA_IMX) += platform-pata_imx.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_SSI) += platform-imx-ssi.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IMX_UART) += platform-imx-uart.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_IPU_CORE) += platform-ipu-core.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_CAMERA) += platform-mx2-camera.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_EHCI) += platform-mxc-ehci.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_MMC) += platform-mxc-mmc.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_NAND) += platform-mxc_nand.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_RTC) += platform-mxc_rtc.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MXC_W1) += platform-mxc_w1.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_SDHCI_ESDHC_IMX) += platform-sdhci-esdhc-imx.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_SPI_IMX) += platform-spi_imx.o
|
||||
obj-$(CONFIG_IMX_HAVE_PLATFORM_MX2_EMMA) += platform-mx2-emma.o
|
@ -1,293 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-only */
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/gpio/machine.h>
|
||||
#include <linux/platform_data/dma-imx-sdma.h>
|
||||
|
||||
extern struct device mxc_aips_bus;
|
||||
extern struct device mxc_ahb_bus;
|
||||
|
||||
static inline struct platform_device *imx_add_platform_device_dmamask(
|
||||
const char *name, int id,
|
||||
const struct resource *res, unsigned int num_resources,
|
||||
const void *data, size_t size_data, u64 dmamask)
|
||||
{
|
||||
struct platform_device_info pdevinfo = {
|
||||
.name = name,
|
||||
.id = id,
|
||||
.res = res,
|
||||
.num_res = num_resources,
|
||||
.data = data,
|
||||
.size_data = size_data,
|
||||
.dma_mask = dmamask,
|
||||
};
|
||||
return platform_device_register_full(&pdevinfo);
|
||||
}
|
||||
|
||||
static inline struct platform_device *imx_add_platform_device(
|
||||
const char *name, int id,
|
||||
const struct resource *res, unsigned int num_resources,
|
||||
const void *data, size_t size_data)
|
||||
{
|
||||
return imx_add_platform_device_dmamask(
|
||||
name, id, res, num_resources, data, size_data, 0);
|
||||
}
|
||||
|
||||
#include <linux/fec.h>
|
||||
struct imx_fec_data {
|
||||
const char *devid;
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_fec(
|
||||
const struct imx_fec_data *data,
|
||||
const struct fec_platform_data *pdata);
|
||||
|
||||
struct imx_flexcan_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_flexcan(
|
||||
const struct imx_flexcan_data *data);
|
||||
|
||||
#include <linux/fsl_devices.h>
|
||||
struct imx_fsl_usb2_udc_data {
|
||||
const char *devid;
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_fsl_usb2_udc(
|
||||
const struct imx_fsl_usb2_udc_data *data,
|
||||
const struct fsl_usb2_platform_data *pdata);
|
||||
|
||||
#include <linux/gpio_keys.h>
|
||||
struct platform_device *__init imx_add_gpio_keys(
|
||||
const struct gpio_keys_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/usb-mx2.h>
|
||||
struct imx_imx21_hcd_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx21_hcd(
|
||||
const struct imx_imx21_hcd_data *data,
|
||||
const struct mx21_usbh_platform_data *pdata);
|
||||
|
||||
struct imx_imx27_coda_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx27_coda(
|
||||
const struct imx_imx27_coda_data *data);
|
||||
|
||||
struct imx_imx2_wdt_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx2_wdt(
|
||||
const struct imx_imx2_wdt_data *data);
|
||||
|
||||
struct imx_imxdi_rtc_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imxdi_rtc(
|
||||
const struct imx_imxdi_rtc_data *data);
|
||||
|
||||
#include <linux/platform_data/video-imxfb.h>
|
||||
struct imx_imx_fb_data {
|
||||
const char *devid;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx_fb(
|
||||
const struct imx_imx_fb_data *data,
|
||||
const struct imx_fb_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/i2c-imx.h>
|
||||
struct imx_imx_i2c_data {
|
||||
const char *devid;
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx_i2c(
|
||||
const struct imx_imx_i2c_data *data,
|
||||
const struct imxi2c_platform_data *pdata);
|
||||
|
||||
#include <linux/input/matrix_keypad.h>
|
||||
struct imx_imx_keypad_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx_keypad(
|
||||
const struct imx_imx_keypad_data *data,
|
||||
const struct matrix_keymap_data *pdata);
|
||||
|
||||
#include <linux/platform_data/asoc-imx-ssi.h>
|
||||
struct imx_imx_ssi_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
resource_size_t dmatx0;
|
||||
resource_size_t dmarx0;
|
||||
resource_size_t dmatx1;
|
||||
resource_size_t dmarx1;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx_ssi(
|
||||
const struct imx_imx_ssi_data *data,
|
||||
const struct imx_ssi_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/serial-imx.h>
|
||||
struct imx_imx_uart_1irq_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_imx_uart_1irq(
|
||||
const struct imx_imx_uart_1irq_data *data,
|
||||
const struct imxuart_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/video-mx3fb.h>
|
||||
#include <linux/platform_data/media/camera-mx3.h>
|
||||
struct imx_ipu_core_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t synirq;
|
||||
resource_size_t errirq;
|
||||
};
|
||||
struct platform_device *__init imx_add_ipu_core(
|
||||
const struct imx_ipu_core_data *data);
|
||||
struct platform_device *__init imx_alloc_mx3_camera(
|
||||
const struct imx_ipu_core_data *data,
|
||||
const struct mx3_camera_pdata *pdata);
|
||||
struct platform_device *__init imx_add_mx3_sdc_fb(
|
||||
const struct imx_ipu_core_data *data,
|
||||
struct mx3fb_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/media/camera-mx2.h>
|
||||
struct imx_mx2_camera_data {
|
||||
const char *devid;
|
||||
resource_size_t iobasecsi;
|
||||
resource_size_t iosizecsi;
|
||||
resource_size_t irqcsi;
|
||||
resource_size_t iobaseemmaprp;
|
||||
resource_size_t iosizeemmaprp;
|
||||
resource_size_t irqemmaprp;
|
||||
};
|
||||
struct platform_device *__init imx_add_mx2_camera(
|
||||
const struct imx_mx2_camera_data *data,
|
||||
const struct mx2_camera_platform_data *pdata);
|
||||
|
||||
|
||||
struct imx_mx2_emma_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_mx2_emmaprp(
|
||||
const struct imx_mx2_emma_data *data);
|
||||
|
||||
#include <linux/platform_data/usb-ehci-mxc.h>
|
||||
struct imx_mxc_ehci_data {
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_mxc_ehci(
|
||||
const struct imx_mxc_ehci_data *data,
|
||||
const struct mxc_usbh_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/mmc-mxcmmc.h>
|
||||
struct imx_mxc_mmc_data {
|
||||
const char *devid;
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
resource_size_t dmareq;
|
||||
};
|
||||
struct platform_device *__init imx_add_mxc_mmc(
|
||||
const struct imx_mxc_mmc_data *data,
|
||||
const struct imxmmc_platform_data *pdata);
|
||||
|
||||
#include <linux/platform_data/mtd-mxc_nand.h>
|
||||
struct imx_mxc_nand_data {
|
||||
const char *devid;
|
||||
/*
|
||||
* id is traditionally 0, but -1 is more appropriate. We use -1 for new
|
||||
* machines but don't change existing devices as the nand device usually
|
||||
* appears in the kernel command line to pass its partitioning.
|
||||
*/
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t axibase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_mxc_nand(
|
||||
const struct imx_mxc_nand_data *data,
|
||||
const struct mxc_nand_platform_data *pdata);
|
||||
|
||||
struct imx_pata_imx_data {
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_pata_imx(
|
||||
const struct imx_pata_imx_data *data);
|
||||
|
||||
/* mxc_rtc */
|
||||
struct imx_mxc_rtc_data {
|
||||
const char *devid;
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_mxc_rtc(
|
||||
const struct imx_mxc_rtc_data *data);
|
||||
|
||||
/* mxc_w1 */
|
||||
struct imx_mxc_w1_data {
|
||||
resource_size_t iobase;
|
||||
};
|
||||
struct platform_device *__init imx_add_mxc_w1(
|
||||
const struct imx_mxc_w1_data *data);
|
||||
|
||||
#include <linux/platform_data/mmc-esdhc-imx.h>
|
||||
struct imx_sdhci_esdhc_imx_data {
|
||||
const char *devid;
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_sdhci_esdhc_imx(
|
||||
const struct imx_sdhci_esdhc_imx_data *data,
|
||||
const struct esdhc_platform_data *pdata);
|
||||
|
||||
struct imx_spi_imx_data {
|
||||
const char *devid;
|
||||
int id;
|
||||
resource_size_t iobase;
|
||||
resource_size_t iosize;
|
||||
int irq;
|
||||
};
|
||||
struct platform_device *__init imx_add_spi_imx(
|
||||
const struct imx_spi_imx_data *data, struct gpiod_lookup_table *gtable);
|
||||
|
||||
struct platform_device *imx_add_imx_dma(char *name, resource_size_t iobase,
|
||||
int irq);
|
||||
struct platform_device *imx_add_imx_sdma(char *name,
|
||||
resource_size_t iobase, int irq, struct sdma_platform_data *pdata);
|
@ -1,35 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2008 Sascha Hauer, kernel@pengutronix.de
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/err.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include "../common.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
struct device mxc_aips_bus = {
|
||||
.init_name = "mxc_aips",
|
||||
};
|
||||
|
||||
struct device mxc_ahb_bus = {
|
||||
.init_name = "mxc_ahb",
|
||||
};
|
||||
|
||||
int __init mxc_device_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = device_register(&mxc_aips_bus);
|
||||
if (ret < 0)
|
||||
goto done;
|
||||
|
||||
ret = device_register(&mxc_ahb_bus);
|
||||
|
||||
done:
|
||||
return ret;
|
||||
}
|
@ -1,49 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_fec_data_entry_single(soc, _devid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobase = soc ## _FEC_BASE_ADDR, \
|
||||
.irq = soc ## _INT_FEC, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_fec_data imx27_fec_data __initconst =
|
||||
imx_fec_data_entry_single(MX27, "imx27-fec");
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
/* i.mx35 has the i.mx27 type fec */
|
||||
const struct imx_fec_data imx35_fec_data __initconst =
|
||||
imx_fec_data_entry_single(MX35, "imx27-fec");
|
||||
#endif
|
||||
|
||||
struct platform_device *__init imx_add_fec(
|
||||
const struct imx_fec_data *data,
|
||||
const struct fec_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_4K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_add_platform_device_dmamask(data->devid, 0,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix, Marc Kleine-Budde <kernel@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_flexcan_data_entry_single(soc, _id, _hwid, _size) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _CAN ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_CAN ## _hwid, \
|
||||
}
|
||||
|
||||
#define imx_flexcan_data_entry(soc, _id, _hwid, _size) \
|
||||
[_id] = imx_flexcan_data_entry_single(soc, _id, _hwid, _size)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_flexcan_data imx35_flexcan_data[] __initconst = {
|
||||
#define imx35_flexcan_data_entry(_id, _hwid) \
|
||||
imx_flexcan_data_entry(MX35, _id, _hwid, SZ_16K)
|
||||
imx35_flexcan_data_entry(0, 1),
|
||||
imx35_flexcan_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_flexcan(
|
||||
const struct imx_flexcan_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_add_platform_device("flexcan", data->id,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_fsl_usb2_udc_data_entry_single(soc, _devid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobase = soc ## _USB_OTG_BASE_ADDR, \
|
||||
.irq = soc ## _INT_USB_OTG, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_fsl_usb2_udc_data imx27_fsl_usb2_udc_data __initconst =
|
||||
imx_fsl_usb2_udc_data_entry_single(MX27, "imx-udc-mx27");
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_fsl_usb2_udc_data imx31_fsl_usb2_udc_data __initconst =
|
||||
imx_fsl_usb2_udc_data_entry_single(MX31, "imx-udc-mx27");
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_fsl_usb2_udc_data imx35_fsl_usb2_udc_data __initconst =
|
||||
imx_fsl_usb2_udc_data_entry_single(MX35, "imx-udc-mx27");
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_fsl_usb2_udc(
|
||||
const struct imx_fsl_usb2_udc_data *data,
|
||||
const struct fsl_usb2_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_512 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask(data->devid, -1,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
@ -1,31 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright 2011 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright 2011 Linaro Limited
|
||||
*/
|
||||
#include "devices-common.h"
|
||||
#include "../common.h"
|
||||
|
||||
struct platform_device *__init mxc_register_gpio(char *name, int id,
|
||||
resource_size_t iobase, resource_size_t iosize, int irq, int irq_high)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = iobase,
|
||||
.end = iobase + iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = irq,
|
||||
.end = irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = irq_high,
|
||||
.end = irq_high,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
unsigned int nres;
|
||||
|
||||
nres = irq_high ? ARRAY_SIZE(res) : ARRAY_SIZE(res) - 1;
|
||||
return platform_device_register_resndata(&mxc_aips_bus, name, id, res, nres, NULL, 0);
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (C) 2010 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
*/
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
struct platform_device *__init imx_add_gpio_keys(
|
||||
const struct gpio_keys_platform_data *pdata)
|
||||
{
|
||||
return imx_add_platform_device("gpio-keys", -1, NULL,
|
||||
0, pdata, sizeof(*pdata));
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "devices-common.h"
|
||||
|
||||
struct platform_device __init __maybe_unused *imx_add_imx_dma(char *name,
|
||||
resource_size_t iobase, int irq)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = iobase,
|
||||
.end = iobase + SZ_4K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = irq,
|
||||
.end = irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return platform_device_register_resndata(&mxc_ahb_bus,
|
||||
name, -1, res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
||||
|
||||
struct platform_device __init __maybe_unused *imx_add_imx_sdma(char *name,
|
||||
resource_size_t iobase, int irq, struct sdma_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = iobase,
|
||||
.end = iobase + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = irq,
|
||||
.end = irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return platform_device_register_resndata(&mxc_ahb_bus, name,
|
||||
-1, res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx_fb_data_entry_single(soc, _devid, _size) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobase = soc ## _LCDC_BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_LCDC, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx_fb_data imx21_imx_fb_data __initconst =
|
||||
imx_imx_fb_data_entry_single(MX21, "imx21-fb", SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx_fb_data imx27_imx_fb_data __initconst =
|
||||
imx_imx_fb_data_entry_single(MX27, "imx21-fb", SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
struct platform_device *__init imx_add_imx_fb(
|
||||
const struct imx_imx_fb_data *data,
|
||||
const struct imx_fb_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask(data->devid, 0,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _I2C ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_I2C ## _hwid, \
|
||||
}
|
||||
|
||||
#define imx_imx_i2c_data_entry(soc, _devid, _id, _hwid, _size) \
|
||||
[_id] = imx_imx_i2c_data_entry_single(soc, _devid, _id, _hwid, _size)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx_i2c_data imx21_imx_i2c_data __initconst =
|
||||
imx_imx_i2c_data_entry_single(MX21, "imx21-i2c", 0, , SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx_i2c_data imx27_imx_i2c_data[] __initconst = {
|
||||
#define imx27_imx_i2c_data_entry(_id, _hwid) \
|
||||
imx_imx_i2c_data_entry(MX27, "imx21-i2c", _id, _hwid, SZ_4K)
|
||||
imx27_imx_i2c_data_entry(0, 1),
|
||||
imx27_imx_i2c_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_imx_i2c_data imx31_imx_i2c_data[] __initconst = {
|
||||
#define imx31_imx_i2c_data_entry(_id, _hwid) \
|
||||
imx_imx_i2c_data_entry(MX31, "imx21-i2c", _id, _hwid, SZ_4K)
|
||||
imx31_imx_i2c_data_entry(0, 1),
|
||||
imx31_imx_i2c_data_entry(1, 2),
|
||||
imx31_imx_i2c_data_entry(2, 3),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_imx_i2c_data imx35_imx_i2c_data[] __initconst = {
|
||||
#define imx35_imx_i2c_data_entry(_id, _hwid) \
|
||||
imx_imx_i2c_data_entry(MX35, "imx21-i2c", _id, _hwid, SZ_4K)
|
||||
imx35_imx_i2c_data_entry(0, 1),
|
||||
imx35_imx_i2c_data_entry(1, 2),
|
||||
imx35_imx_i2c_data_entry(2, 3),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_imx_i2c(
|
||||
const struct imx_imx_i2c_data *data,
|
||||
const struct imxi2c_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_add_platform_device(data->devid, data->id,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata));
|
||||
}
|
@ -1,54 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx_keypad_data_entry_single(soc, _size) \
|
||||
{ \
|
||||
.iobase = soc ## _KPP_BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_KPP, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx_keypad_data imx21_imx_keypad_data __initconst =
|
||||
imx_imx_keypad_data_entry_single(MX21, SZ_16);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx_keypad_data imx27_imx_keypad_data __initconst =
|
||||
imx_imx_keypad_data_entry_single(MX27, SZ_16);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_imx_keypad_data imx31_imx_keypad_data __initconst =
|
||||
imx_imx_keypad_data_entry_single(MX31, SZ_16);
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_imx_keypad_data imx35_imx_keypad_data __initconst =
|
||||
imx_imx_keypad_data_entry_single(MX35, SZ_16);
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_imx_keypad(
|
||||
const struct imx_imx_keypad_data *data,
|
||||
const struct matrix_keymap_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_add_platform_device("imx-keypad", -1,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
||||
}
|
@ -1,86 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx_ssi_data_entry(soc, _id, _hwid, _size) \
|
||||
[_id] = { \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _SSI ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_SSI ## _hwid, \
|
||||
.dmatx0 = soc ## _DMA_REQ_SSI ## _hwid ## _TX0, \
|
||||
.dmarx0 = soc ## _DMA_REQ_SSI ## _hwid ## _RX0, \
|
||||
.dmatx1 = soc ## _DMA_REQ_SSI ## _hwid ## _TX1, \
|
||||
.dmarx1 = soc ## _DMA_REQ_SSI ## _hwid ## _RX1, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx_ssi_data imx21_imx_ssi_data[] __initconst = {
|
||||
#define imx21_imx_ssi_data_entry(_id, _hwid) \
|
||||
imx_imx_ssi_data_entry(MX21, _id, _hwid, SZ_4K)
|
||||
imx21_imx_ssi_data_entry(0, 1),
|
||||
imx21_imx_ssi_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx_ssi_data imx27_imx_ssi_data[] __initconst = {
|
||||
#define imx27_imx_ssi_data_entry(_id, _hwid) \
|
||||
imx_imx_ssi_data_entry(MX27, _id, _hwid, SZ_4K)
|
||||
imx27_imx_ssi_data_entry(0, 1),
|
||||
imx27_imx_ssi_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_imx_ssi_data imx31_imx_ssi_data[] __initconst = {
|
||||
#define imx31_imx_ssi_data_entry(_id, _hwid) \
|
||||
imx_imx_ssi_data_entry(MX31, _id, _hwid, SZ_4K)
|
||||
imx31_imx_ssi_data_entry(0, 1),
|
||||
imx31_imx_ssi_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_imx_ssi_data imx35_imx_ssi_data[] __initconst = {
|
||||
#define imx35_imx_ssi_data_entry(_id, _hwid) \
|
||||
imx_imx_ssi_data_entry(MX35, _id, _hwid, SZ_4K)
|
||||
imx35_imx_ssi_data_entry(0, 1),
|
||||
imx35_imx_ssi_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_imx_ssi(
|
||||
const struct imx_imx_ssi_data *data,
|
||||
const struct imx_ssi_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
#define DMARES(_name) { \
|
||||
.name = #_name, \
|
||||
.start = data->dma ## _name, \
|
||||
.end = data->dma ## _name, \
|
||||
.flags = IORESOURCE_DMA, \
|
||||
}
|
||||
DMARES(tx0),
|
||||
DMARES(rx0),
|
||||
DMARES(tx1),
|
||||
DMARES(rx1),
|
||||
};
|
||||
|
||||
return imx_add_platform_device("imx-ssi", data->id,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata));
|
||||
}
|
@ -1,92 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx_uart_3irq_data_entry(soc, _id, _hwid, _size) \
|
||||
[_id] = { \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _UART ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irqrx = soc ## _INT_UART ## _hwid ## RX, \
|
||||
.irqtx = soc ## _INT_UART ## _hwid ## TX, \
|
||||
.irqrts = soc ## _INT_UART ## _hwid ## RTS, \
|
||||
}
|
||||
|
||||
#define imx_imx_uart_1irq_data_entry(soc, _id, _hwid, _size) \
|
||||
[_id] = { \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _UART ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_UART ## _hwid, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx_uart_1irq_data imx21_imx_uart_data[] __initconst = {
|
||||
#define imx21_imx_uart_data_entry(_id, _hwid) \
|
||||
imx_imx_uart_1irq_data_entry(MX21, _id, _hwid, SZ_4K)
|
||||
imx21_imx_uart_data_entry(0, 1),
|
||||
imx21_imx_uart_data_entry(1, 2),
|
||||
imx21_imx_uart_data_entry(2, 3),
|
||||
imx21_imx_uart_data_entry(3, 4),
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx_uart_1irq_data imx27_imx_uart_data[] __initconst = {
|
||||
#define imx27_imx_uart_data_entry(_id, _hwid) \
|
||||
imx_imx_uart_1irq_data_entry(MX27, _id, _hwid, SZ_4K)
|
||||
imx27_imx_uart_data_entry(0, 1),
|
||||
imx27_imx_uart_data_entry(1, 2),
|
||||
imx27_imx_uart_data_entry(2, 3),
|
||||
imx27_imx_uart_data_entry(3, 4),
|
||||
imx27_imx_uart_data_entry(4, 5),
|
||||
imx27_imx_uart_data_entry(5, 6),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_imx_uart_1irq_data imx31_imx_uart_data[] __initconst = {
|
||||
#define imx31_imx_uart_data_entry(_id, _hwid) \
|
||||
imx_imx_uart_1irq_data_entry(MX31, _id, _hwid, SZ_4K)
|
||||
imx31_imx_uart_data_entry(0, 1),
|
||||
imx31_imx_uart_data_entry(1, 2),
|
||||
imx31_imx_uart_data_entry(2, 3),
|
||||
imx31_imx_uart_data_entry(3, 4),
|
||||
imx31_imx_uart_data_entry(4, 5),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_imx_uart_1irq_data imx35_imx_uart_data[] __initconst = {
|
||||
#define imx35_imx_uart_data_entry(_id, _hwid) \
|
||||
imx_imx_uart_1irq_data_entry(MX35, _id, _hwid, SZ_16K)
|
||||
imx35_imx_uart_data_entry(0, 1),
|
||||
imx35_imx_uart_data_entry(1, 2),
|
||||
imx35_imx_uart_data_entry(2, 3),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_imx_uart_1irq(
|
||||
const struct imx_imx_uart_1irq_data *data,
|
||||
const struct imxuart_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
/* i.mx21 type uart runs on all i.mx except i.mx1 */
|
||||
return imx_add_platform_device("imx21-uart", data->id,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata));
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx2_wdt_data_entry_single(soc, _id, _hwid, _size) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _WDOG ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
}
|
||||
#define imx_imx2_wdt_data_entry(soc, _id, _hwid, _size) \
|
||||
[_id] = imx_imx2_wdt_data_entry_single(soc, _id, _hwid, _size)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx2_wdt_data imx21_imx2_wdt_data __initconst =
|
||||
imx_imx2_wdt_data_entry_single(MX21, 0, , SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx2_wdt_data imx27_imx2_wdt_data __initconst =
|
||||
imx_imx2_wdt_data_entry_single(MX27, 0, , SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_imx2_wdt_data imx31_imx2_wdt_data __initconst =
|
||||
imx_imx2_wdt_data_entry_single(MX31, 0, , SZ_16K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_imx2_wdt_data imx35_imx2_wdt_data __initconst =
|
||||
imx_imx2_wdt_data_entry_single(MX35, 0, , SZ_16K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_imx2_wdt(
|
||||
const struct imx_imx2_wdt_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device("imx2-wdt", data->id,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
@ -1,38 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_imx21_hcd_data_entry_single(soc) \
|
||||
{ \
|
||||
.iobase = soc ## _USBOTG_BASE_ADDR, \
|
||||
.irq = soc ## _INT_USBHOST, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_imx21_hcd_data imx21_imx21_hcd_data __initconst =
|
||||
imx_imx21_hcd_data_entry_single(MX21);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
struct platform_device *__init imx_add_imx21_hcd(
|
||||
const struct imx_imx21_hcd_data *data,
|
||||
const struct mx21_usbh_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_8K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask("imx21-hcd", 0,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2012 Vista Silicon
|
||||
* Javier Martin <javier.martin@vista-silicon.com>
|
||||
*/
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_imx27_coda_data imx27_coda_data __initconst = {
|
||||
.iobase = MX27_VPU_BASE_ADDR,
|
||||
.iosize = SZ_512,
|
||||
.irq = MX27_INT_VPU,
|
||||
};
|
||||
#endif
|
||||
|
||||
struct platform_device *__init imx_add_imx27_coda(
|
||||
const struct imx_imx27_coda_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask("coda-imx27", 0, res, 2, NULL,
|
||||
0, DMA_BIT_MASK(32));
|
||||
}
|
@ -1,127 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2011 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_ipu_core_entry_single(soc) \
|
||||
{ \
|
||||
.iobase = soc ## _IPU_CTRL_BASE_ADDR, \
|
||||
.synirq = soc ## _INT_IPU_SYN, \
|
||||
.errirq = soc ## _INT_IPU_ERR, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_ipu_core_data imx31_ipu_core_data __initconst =
|
||||
imx_ipu_core_entry_single(MX31);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_ipu_core_data imx35_ipu_core_data __initconst =
|
||||
imx_ipu_core_entry_single(MX35);
|
||||
#endif
|
||||
|
||||
static struct platform_device *imx_ipu_coredev __initdata;
|
||||
|
||||
struct platform_device *__init imx_add_ipu_core(
|
||||
const struct imx_ipu_core_data *data)
|
||||
{
|
||||
/* The resource order is important! */
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + 0x5f,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->iobase + 0x88,
|
||||
.end = data->iobase + 0xb3,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->synirq,
|
||||
.end = data->synirq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->errirq,
|
||||
.end = data->errirq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_ipu_coredev = imx_add_platform_device("ipu-core", -1,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
||||
|
||||
struct platform_device *__init imx_alloc_mx3_camera(
|
||||
const struct imx_ipu_core_data *data,
|
||||
const struct mx3_camera_pdata *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase + 0x60,
|
||||
.end = data->iobase + 0x87,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
int ret = -ENOMEM;
|
||||
struct platform_device *pdev;
|
||||
|
||||
if (IS_ERR_OR_NULL(imx_ipu_coredev))
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
pdev = platform_device_alloc("mx3-camera", 0);
|
||||
if (!pdev)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
pdev->dev.dma_mask = kmalloc(sizeof(*pdev->dev.dma_mask), GFP_KERNEL);
|
||||
if (!pdev->dev.dma_mask)
|
||||
goto err;
|
||||
|
||||
*pdev->dev.dma_mask = DMA_BIT_MASK(32);
|
||||
pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
|
||||
ret = platform_device_add_resources(pdev, res, ARRAY_SIZE(res));
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
if (pdata) {
|
||||
struct mx3_camera_pdata *copied_pdata;
|
||||
|
||||
ret = platform_device_add_data(pdev, pdata, sizeof(*pdata));
|
||||
if (ret) {
|
||||
err:
|
||||
kfree(pdev->dev.dma_mask);
|
||||
platform_device_put(pdev);
|
||||
return ERR_PTR(-ENODEV);
|
||||
}
|
||||
copied_pdata = dev_get_platdata(&pdev->dev);
|
||||
copied_pdata->dma_dev = &imx_ipu_coredev->dev;
|
||||
}
|
||||
|
||||
return pdev;
|
||||
}
|
||||
|
||||
struct platform_device *__init imx_add_mx3_sdc_fb(
|
||||
const struct imx_ipu_core_data *data,
|
||||
struct mx3fb_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase + 0xb4,
|
||||
.end = data->iobase + 0x1bf,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
if (IS_ERR_OR_NULL(imx_ipu_coredev))
|
||||
return ERR_PTR(-ENODEV);
|
||||
|
||||
pdata->dma_dev = &imx_ipu_coredev->dev;
|
||||
|
||||
return imx_add_platform_device_dmamask("mx3_sdc_fb", -1,
|
||||
res, ARRAY_SIZE(res), pdata, sizeof(*pdata),
|
||||
DMA_BIT_MASK(32));
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mx2_camera_data_entry_single(soc, _devid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobasecsi = soc ## _CSI_BASE_ADDR, \
|
||||
.iosizecsi = SZ_4K, \
|
||||
.irqcsi = soc ## _INT_CSI, \
|
||||
}
|
||||
#define imx_mx2_camera_data_entry_single_emma(soc, _devid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobasecsi = soc ## _CSI_BASE_ADDR, \
|
||||
.iosizecsi = SZ_32, \
|
||||
.irqcsi = soc ## _INT_CSI, \
|
||||
.iobaseemmaprp = soc ## _EMMAPRP_BASE_ADDR, \
|
||||
.iosizeemmaprp = SZ_32, \
|
||||
.irqemmaprp = soc ## _INT_EMMAPRP, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_mx2_camera_data imx27_mx2_camera_data __initconst =
|
||||
imx_mx2_camera_data_entry_single_emma(MX27, "imx27-camera");
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
struct platform_device *__init imx_add_mx2_camera(
|
||||
const struct imx_mx2_camera_data *data,
|
||||
const struct mx2_camera_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobasecsi,
|
||||
.end = data->iobasecsi + data->iosizecsi - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irqcsi,
|
||||
.end = data->irqcsi,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->iobaseemmaprp,
|
||||
.end = data->iobaseemmaprp + data->iosizeemmaprp - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irqemmaprp,
|
||||
.end = data->irqemmaprp,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask(data->devid, 0,
|
||||
res, data->iobaseemmaprp ? 4 : 2,
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mx2_emmaprp_data_entry_single(soc) \
|
||||
{ \
|
||||
.iobase = soc ## _EMMAPRP_BASE_ADDR, \
|
||||
.iosize = SZ_256, \
|
||||
.irq = soc ## _INT_EMMAPRP, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_mx2_emma_data imx27_mx2_emmaprp_data __initconst =
|
||||
imx_mx2_emmaprp_data_entry_single(MX27);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
struct platform_device *__init imx_add_mx2_emmaprp(
|
||||
const struct imx_mx2_emma_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask("m2m-emmaprp", 0,
|
||||
res, 2, NULL, 0, DMA_BIT_MASK(32));
|
||||
}
|
@ -1,61 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mxc_ehci_data_entry_single(soc, _id, hs) \
|
||||
{ \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _USB_ ## hs ## _BASE_ADDR, \
|
||||
.irq = soc ## _INT_USB_ ## hs, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_mxc_ehci_data imx27_mxc_ehci_otg_data __initconst =
|
||||
imx_mxc_ehci_data_entry_single(MX27, 0, OTG);
|
||||
const struct imx_mxc_ehci_data imx27_mxc_ehci_hs_data[] __initconst = {
|
||||
imx_mxc_ehci_data_entry_single(MX27, 1, HS1),
|
||||
imx_mxc_ehci_data_entry_single(MX27, 2, HS2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_mxc_ehci_data imx31_mxc_ehci_otg_data __initconst =
|
||||
imx_mxc_ehci_data_entry_single(MX31, 0, OTG);
|
||||
const struct imx_mxc_ehci_data imx31_mxc_ehci_hs_data[] __initconst = {
|
||||
imx_mxc_ehci_data_entry_single(MX31, 1, HS1),
|
||||
imx_mxc_ehci_data_entry_single(MX31, 2, HS2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_mxc_ehci_data imx35_mxc_ehci_otg_data __initconst =
|
||||
imx_mxc_ehci_data_entry_single(MX35, 0, OTG);
|
||||
const struct imx_mxc_ehci_data imx35_mxc_ehci_hs_data __initconst =
|
||||
imx_mxc_ehci_data_entry_single(MX35, 1, HS);
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_mxc_ehci(
|
||||
const struct imx_mxc_ehci_data *data,
|
||||
const struct mxc_usbh_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_512 - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask("mxc-ehci", data->id,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/dma-mapping.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mxc_mmc_data_entry_single(soc, _devid, _id, _hwid, _size) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _SDHC ## _hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_SDHC ## _hwid, \
|
||||
.dmareq = soc ## _DMA_REQ_SDHC ## _hwid, \
|
||||
}
|
||||
#define imx_mxc_mmc_data_entry(soc, _devid, _id, _hwid, _size) \
|
||||
[_id] = imx_mxc_mmc_data_entry_single(soc, _devid, _id, _hwid, _size)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_mxc_mmc_data imx21_mxc_mmc_data[] __initconst = {
|
||||
#define imx21_mxc_mmc_data_entry(_id, _hwid) \
|
||||
imx_mxc_mmc_data_entry(MX21, "imx21-mmc", _id, _hwid, SZ_4K)
|
||||
imx21_mxc_mmc_data_entry(0, 1),
|
||||
imx21_mxc_mmc_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_mxc_mmc_data imx27_mxc_mmc_data[] __initconst = {
|
||||
#define imx27_mxc_mmc_data_entry(_id, _hwid) \
|
||||
imx_mxc_mmc_data_entry(MX27, "imx21-mmc", _id, _hwid, SZ_4K)
|
||||
imx27_mxc_mmc_data_entry(0, 1),
|
||||
imx27_mxc_mmc_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_mxc_mmc_data imx31_mxc_mmc_data[] __initconst = {
|
||||
#define imx31_mxc_mmc_data_entry(_id, _hwid) \
|
||||
imx_mxc_mmc_data_entry(MX31, "imx31-mmc", _id, _hwid, SZ_16K)
|
||||
imx31_mxc_mmc_data_entry(0, 1),
|
||||
imx31_mxc_mmc_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
struct platform_device *__init imx_add_mxc_mmc(
|
||||
const struct imx_mxc_mmc_data *data,
|
||||
const struct imxmmc_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->dmareq,
|
||||
.end = data->dmareq,
|
||||
.flags = IORESOURCE_DMA,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device_dmamask(data->devid, data->id,
|
||||
res, ARRAY_SIZE(res),
|
||||
pdata, sizeof(*pdata), DMA_BIT_MASK(32));
|
||||
}
|
@ -1,72 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/sizes.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mxc_nand_data_entry_single(soc, _devid, _size) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobase = soc ## _NFC_BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_NFC \
|
||||
}
|
||||
|
||||
#define imx_mxc_nandv3_data_entry_single(soc, _devid, _size) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.id = -1, \
|
||||
.iobase = soc ## _NFC_BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.axibase = soc ## _NFC_AXI_BASE_ADDR, \
|
||||
.irq = soc ## _INT_NFC \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_mxc_nand_data imx21_mxc_nand_data __initconst =
|
||||
imx_mxc_nand_data_entry_single(MX21, "imx21-nand", SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_mxc_nand_data imx27_mxc_nand_data __initconst =
|
||||
imx_mxc_nand_data_entry_single(MX27, "imx27-nand", SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_mxc_nand_data imx31_mxc_nand_data __initconst =
|
||||
imx_mxc_nand_data_entry_single(MX31, "imx27-nand", SZ_4K);
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_mxc_nand_data imx35_mxc_nand_data __initconst =
|
||||
imx_mxc_nand_data_entry_single(MX35, "imx25-nand", SZ_8K);
|
||||
#endif
|
||||
|
||||
struct platform_device *__init imx_add_mxc_nand(
|
||||
const struct imx_mxc_nand_data *data,
|
||||
const struct mxc_nand_platform_data *pdata)
|
||||
{
|
||||
/* AXI has to come first, that's how the mxc_nand driver expect it */
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
}, {
|
||||
.start = data->axibase,
|
||||
.end = data->axibase + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device(data->devid, data->id,
|
||||
res, ARRAY_SIZE(res) - !data->axibase,
|
||||
pdata, sizeof(*pdata));
|
||||
}
|
@ -1,43 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010-2011 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mxc_rtc_data_entry_single(soc, _devid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.iobase = soc ## _RTC_BASE_ADDR, \
|
||||
.irq = soc ## _INT_RTC, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_mxc_rtc_data imx31_mxc_rtc_data __initconst =
|
||||
imx_mxc_rtc_data_entry_single(MX31, "imx21-rtc");
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_mxc_rtc_data imx35_mxc_rtc_data __initconst =
|
||||
imx_mxc_rtc_data_entry_single(MX35, "imx21-rtc");
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_mxc_rtc(
|
||||
const struct imx_mxc_rtc_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_add_platform_device(data->devid, -1,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
@ -1,47 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_mxc_w1_data_entry_single(soc) \
|
||||
{ \
|
||||
.iobase = soc ## _OWIRE_BASE_ADDR, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_mxc_w1_data imx21_mxc_w1_data __initconst =
|
||||
imx_mxc_w1_data_entry_single(MX21);
|
||||
#endif /* ifdef CONFIG_SOC_IMX21 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_mxc_w1_data imx27_mxc_w1_data __initconst =
|
||||
imx_mxc_w1_data_entry_single(MX27);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_mxc_w1_data imx31_mxc_w1_data __initconst =
|
||||
imx_mxc_w1_data_entry_single(MX31);
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_mxc_w1_data imx35_mxc_w1_data __initconst =
|
||||
imx_mxc_w1_data_entry_single(MX35);
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_mxc_w1(
|
||||
const struct imx_mxc_w1_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_4K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
};
|
||||
|
||||
return imx_add_platform_device("mxc_w1", 0,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
@ -1,45 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_pata_imx_data_entry_single(soc, _size) \
|
||||
{ \
|
||||
.iobase = soc ## _ATA_BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_ATA, \
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_pata_imx_data imx27_pata_imx_data __initconst =
|
||||
imx_pata_imx_data_entry_single(MX27, SZ_4K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_pata_imx_data imx31_pata_imx_data __initconst =
|
||||
imx_pata_imx_data_entry_single(MX31, SZ_16K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_pata_imx_data imx35_pata_imx_data __initconst =
|
||||
imx_pata_imx_data_entry_single(MX35, SZ_16K);
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_pata_imx(
|
||||
const struct imx_pata_imx_data *data)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
},
|
||||
{
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
return imx_add_platform_device("pata_imx", -1,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
||||
|
@ -1,64 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2010 Pengutronix, Wolfram Sang <kernel@pengutronix.de>
|
||||
*/
|
||||
|
||||
#include <linux/platform_data/mmc-esdhc-imx.h>
|
||||
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_sdhci_esdhc_imx_data_entry_single(soc, _devid, _id, hwid) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _ESDHC ## hwid ## _BASE_ADDR, \
|
||||
.irq = soc ## _INT_ESDHC ## hwid, \
|
||||
}
|
||||
|
||||
#define imx_sdhci_esdhc_imx_data_entry(soc, devid, id, hwid) \
|
||||
[id] = imx_sdhci_esdhc_imx_data_entry_single(soc, devid, id, hwid)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_sdhci_esdhc_imx_data
|
||||
imx35_sdhci_esdhc_imx_data[] __initconst = {
|
||||
#define imx35_sdhci_esdhc_imx_data_entry(_id, _hwid) \
|
||||
imx_sdhci_esdhc_imx_data_entry(MX35, "sdhci-esdhc-imx35", _id, _hwid)
|
||||
imx35_sdhci_esdhc_imx_data_entry(0, 1),
|
||||
imx35_sdhci_esdhc_imx_data_entry(1, 2),
|
||||
imx35_sdhci_esdhc_imx_data_entry(2, 3),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
static const struct esdhc_platform_data default_esdhc_pdata __initconst = {
|
||||
.wp_type = ESDHC_WP_NONE,
|
||||
.cd_type = ESDHC_CD_NONE,
|
||||
};
|
||||
|
||||
struct platform_device *__init imx_add_sdhci_esdhc_imx(
|
||||
const struct imx_sdhci_esdhc_imx_data *data,
|
||||
const struct esdhc_platform_data *pdata)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + SZ_16K - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* If machine does not provide pdata, use the default one
|
||||
* which means no WP/CD support
|
||||
*/
|
||||
if (!pdata)
|
||||
pdata = &default_esdhc_pdata;
|
||||
|
||||
return imx_add_platform_device_dmamask(data->devid, data->id, res,
|
||||
ARRAY_SIZE(res), pdata, sizeof(*pdata),
|
||||
DMA_BIT_MASK(32));
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-only
|
||||
/*
|
||||
* Copyright (C) 2009-2010 Pengutronix
|
||||
* Uwe Kleine-Koenig <u.kleine-koenig@pengutronix.de>
|
||||
*/
|
||||
#include <linux/gpio/machine.h>
|
||||
#include "../hardware.h"
|
||||
#include "devices-common.h"
|
||||
|
||||
#define imx_spi_imx_data_entry_single(soc, type, _devid, _id, hwid, _size) \
|
||||
{ \
|
||||
.devid = _devid, \
|
||||
.id = _id, \
|
||||
.iobase = soc ## _ ## type ## hwid ## _BASE_ADDR, \
|
||||
.iosize = _size, \
|
||||
.irq = soc ## _INT_ ## type ## hwid, \
|
||||
}
|
||||
|
||||
#define imx_spi_imx_data_entry(soc, type, devid, id, hwid, size) \
|
||||
[id] = imx_spi_imx_data_entry_single(soc, type, devid, id, hwid, size)
|
||||
|
||||
#ifdef CONFIG_SOC_IMX21
|
||||
const struct imx_spi_imx_data imx21_cspi_data[] __initconst = {
|
||||
#define imx21_cspi_data_entry(_id, _hwid) \
|
||||
imx_spi_imx_data_entry(MX21, CSPI, "imx21-cspi", _id, _hwid, SZ_4K)
|
||||
imx21_cspi_data_entry(0, 1),
|
||||
imx21_cspi_data_entry(1, 2),
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SOC_IMX27
|
||||
const struct imx_spi_imx_data imx27_cspi_data[] __initconst = {
|
||||
#define imx27_cspi_data_entry(_id, _hwid) \
|
||||
imx_spi_imx_data_entry(MX27, CSPI, "imx27-cspi", _id, _hwid, SZ_4K)
|
||||
imx27_cspi_data_entry(0, 1),
|
||||
imx27_cspi_data_entry(1, 2),
|
||||
imx27_cspi_data_entry(2, 3),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX27 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX31
|
||||
const struct imx_spi_imx_data imx31_cspi_data[] __initconst = {
|
||||
#define imx31_cspi_data_entry(_id, _hwid) \
|
||||
imx_spi_imx_data_entry(MX31, CSPI, "imx31-cspi", _id, _hwid, SZ_4K)
|
||||
imx31_cspi_data_entry(0, 1),
|
||||
imx31_cspi_data_entry(1, 2),
|
||||
imx31_cspi_data_entry(2, 3),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX31 */
|
||||
|
||||
#ifdef CONFIG_SOC_IMX35
|
||||
const struct imx_spi_imx_data imx35_cspi_data[] __initconst = {
|
||||
#define imx35_cspi_data_entry(_id, _hwid) \
|
||||
imx_spi_imx_data_entry(MX35, CSPI, "imx35-cspi", _id, _hwid, SZ_4K)
|
||||
imx35_cspi_data_entry(0, 1),
|
||||
imx35_cspi_data_entry(1, 2),
|
||||
};
|
||||
#endif /* ifdef CONFIG_SOC_IMX35 */
|
||||
|
||||
struct platform_device *__init imx_add_spi_imx(
|
||||
const struct imx_spi_imx_data *data, struct gpiod_lookup_table *gtable)
|
||||
{
|
||||
struct resource res[] = {
|
||||
{
|
||||
.start = data->iobase,
|
||||
.end = data->iobase + data->iosize - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
.start = data->irq,
|
||||
.end = data->irq,
|
||||
.flags = IORESOURCE_IRQ,
|
||||
},
|
||||
};
|
||||
if (gtable)
|
||||
gpiod_add_lookup_table(gtable);
|
||||
return imx_add_platform_device(data->devid, data->id,
|
||||
res, ARRAY_SIZE(res), NULL, 0);
|
||||
}
|
@ -1,74 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
|
||||
* Copyright (C) 2010 Freescale Semiconductor, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_data/usb-ehci-mxc.h>
|
||||
|
||||
#include "ehci.h"
|
||||
#include "hardware.h"
|
||||
|
||||
#define USBCTRL_OTGBASE_OFFSET 0x600
|
||||
|
||||
#define MX27_OTG_SIC_SHIFT 29
|
||||
#define MX27_OTG_SIC_MASK (0x3 << MX27_OTG_SIC_SHIFT)
|
||||
#define MX27_OTG_PM_BIT (1 << 24)
|
||||
|
||||
#define MX27_H2_SIC_SHIFT 21
|
||||
#define MX27_H2_SIC_MASK (0x3 << MX27_H2_SIC_SHIFT)
|
||||
#define MX27_H2_PM_BIT (1 << 16)
|
||||
#define MX27_H2_DT_BIT (1 << 5)
|
||||
|
||||
#define MX27_H1_SIC_SHIFT 13
|
||||
#define MX27_H1_SIC_MASK (0x3 << MX27_H1_SIC_SHIFT)
|
||||
#define MX27_H1_PM_BIT (1 << 8)
|
||||
#define MX27_H1_DT_BIT (1 << 4)
|
||||
|
||||
int mx27_initialize_usb_hw(int port, unsigned int flags)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
v = readl(MX27_IO_ADDRESS(MX27_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET));
|
||||
|
||||
switch (port) {
|
||||
case 0: /* OTG port */
|
||||
v &= ~(MX27_OTG_SIC_MASK | MX27_OTG_PM_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX27_OTG_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX27_OTG_PM_BIT;
|
||||
break;
|
||||
case 1: /* H1 port */
|
||||
v &= ~(MX27_H1_SIC_MASK | MX27_H1_PM_BIT | MX27_H1_DT_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX27_H1_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX27_H1_PM_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_TTL_ENABLED))
|
||||
v |= MX27_H1_DT_BIT;
|
||||
|
||||
break;
|
||||
case 2: /* H2 port */
|
||||
v &= ~(MX27_H2_SIC_MASK | MX27_H2_PM_BIT | MX27_H2_DT_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX27_H2_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX27_H2_PM_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_TTL_ENABLED))
|
||||
v |= MX27_H2_DT_BIT;
|
||||
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
writel(v, MX27_IO_ADDRESS(MX27_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,74 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
|
||||
* Copyright (C) 2010 Freescale Semiconductor, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_data/usb-ehci-mxc.h>
|
||||
|
||||
#include "ehci.h"
|
||||
#include "hardware.h"
|
||||
|
||||
#define USBCTRL_OTGBASE_OFFSET 0x600
|
||||
|
||||
#define MX31_OTG_SIC_SHIFT 29
|
||||
#define MX31_OTG_SIC_MASK (0x3 << MX31_OTG_SIC_SHIFT)
|
||||
#define MX31_OTG_PM_BIT (1 << 24)
|
||||
|
||||
#define MX31_H2_SIC_SHIFT 21
|
||||
#define MX31_H2_SIC_MASK (0x3 << MX31_H2_SIC_SHIFT)
|
||||
#define MX31_H2_PM_BIT (1 << 16)
|
||||
#define MX31_H2_DT_BIT (1 << 5)
|
||||
|
||||
#define MX31_H1_SIC_SHIFT 13
|
||||
#define MX31_H1_SIC_MASK (0x3 << MX31_H1_SIC_SHIFT)
|
||||
#define MX31_H1_PM_BIT (1 << 8)
|
||||
#define MX31_H1_DT_BIT (1 << 4)
|
||||
|
||||
int mx31_initialize_usb_hw(int port, unsigned int flags)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
v = readl(MX31_IO_ADDRESS(MX31_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET));
|
||||
|
||||
switch (port) {
|
||||
case 0: /* OTG port */
|
||||
v &= ~(MX31_OTG_SIC_MASK | MX31_OTG_PM_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX31_OTG_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX31_OTG_PM_BIT;
|
||||
|
||||
break;
|
||||
case 1: /* H1 port */
|
||||
v &= ~(MX31_H1_SIC_MASK | MX31_H1_PM_BIT | MX31_H1_DT_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX31_H1_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX31_H1_PM_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_TTL_ENABLED))
|
||||
v |= MX31_H1_DT_BIT;
|
||||
|
||||
break;
|
||||
case 2: /* H2 port */
|
||||
v &= ~(MX31_H2_SIC_MASK | MX31_H2_PM_BIT | MX31_H2_DT_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX31_H2_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX31_H2_PM_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_TTL_ENABLED))
|
||||
v |= MX31_H2_DT_BIT;
|
||||
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
writel(v, MX31_IO_ADDRESS(MX31_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET));
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,89 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
|
||||
* Copyright (C) 2010 Freescale Semiconductor, Inc.
|
||||
*/
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/platform_data/usb-ehci-mxc.h>
|
||||
|
||||
#include "ehci.h"
|
||||
#include "hardware.h"
|
||||
|
||||
#define USBCTRL_OTGBASE_OFFSET 0x600
|
||||
|
||||
#define MX35_OTG_SIC_SHIFT 29
|
||||
#define MX35_OTG_SIC_MASK (0x3 << MX35_OTG_SIC_SHIFT)
|
||||
#define MX35_OTG_PM_BIT (1 << 24)
|
||||
#define MX35_OTG_PP_BIT (1 << 11)
|
||||
#define MX35_OTG_OCPOL_BIT (1 << 3)
|
||||
|
||||
#define MX35_H1_SIC_SHIFT 21
|
||||
#define MX35_H1_SIC_MASK (0x3 << MX35_H1_SIC_SHIFT)
|
||||
#define MX35_H1_PP_BIT (1 << 18)
|
||||
#define MX35_H1_PM_BIT (1 << 16)
|
||||
#define MX35_H1_IPPUE_UP_BIT (1 << 7)
|
||||
#define MX35_H1_IPPUE_DOWN_BIT (1 << 6)
|
||||
#define MX35_H1_TLL_BIT (1 << 5)
|
||||
#define MX35_H1_USBTE_BIT (1 << 4)
|
||||
#define MX35_H1_OCPOL_BIT (1 << 2)
|
||||
|
||||
int mx35_initialize_usb_hw(int port, unsigned int flags)
|
||||
{
|
||||
unsigned int v;
|
||||
|
||||
v = readl(MX35_IO_ADDRESS(MX35_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET));
|
||||
|
||||
switch (port) {
|
||||
case 0: /* OTG port */
|
||||
v &= ~(MX35_OTG_SIC_MASK | MX35_OTG_PM_BIT | MX35_OTG_PP_BIT |
|
||||
MX35_OTG_OCPOL_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX35_OTG_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX35_OTG_PM_BIT;
|
||||
|
||||
if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
|
||||
v |= MX35_OTG_PP_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_OC_PIN_ACTIVE_LOW))
|
||||
v |= MX35_OTG_OCPOL_BIT;
|
||||
|
||||
break;
|
||||
case 1: /* H1 port */
|
||||
v &= ~(MX35_H1_SIC_MASK | MX35_H1_PM_BIT | MX35_H1_PP_BIT |
|
||||
MX35_H1_OCPOL_BIT | MX35_H1_TLL_BIT | MX35_H1_USBTE_BIT |
|
||||
MX35_H1_IPPUE_DOWN_BIT | MX35_H1_IPPUE_UP_BIT);
|
||||
v |= (flags & MXC_EHCI_INTERFACE_MASK) << MX35_H1_SIC_SHIFT;
|
||||
|
||||
if (!(flags & MXC_EHCI_POWER_PINS_ENABLED))
|
||||
v |= MX35_H1_PM_BIT;
|
||||
|
||||
if (flags & MXC_EHCI_PWR_PIN_ACTIVE_HIGH)
|
||||
v |= MX35_H1_PP_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_OC_PIN_ACTIVE_LOW))
|
||||
v |= MX35_H1_OCPOL_BIT;
|
||||
|
||||
if (!(flags & MXC_EHCI_TTL_ENABLED))
|
||||
v |= MX35_H1_TLL_BIT;
|
||||
|
||||
if (flags & MXC_EHCI_INTERNAL_PHY)
|
||||
v |= MX35_H1_USBTE_BIT;
|
||||
|
||||
if (flags & MXC_EHCI_IPPUE_DOWN)
|
||||
v |= MX35_H1_IPPUE_DOWN_BIT;
|
||||
|
||||
if (flags & MXC_EHCI_IPPUE_UP)
|
||||
v |= MX35_H1_IPPUE_UP_BIT;
|
||||
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
writel(v, MX35_IO_ADDRESS(MX35_USB_BASE_ADDR + USBCTRL_OTGBASE_OFFSET));
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,44 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
#ifndef __MACH_IMX_EHCI_H
|
||||
#define __MACH_IMX_EHCI_H
|
||||
|
||||
/* values for portsc field */
|
||||
#define MXC_EHCI_PHY_LOW_POWER_SUSPEND (1 << 23)
|
||||
#define MXC_EHCI_FORCE_FS (1 << 24)
|
||||
#define MXC_EHCI_UTMI_8BIT (0 << 28)
|
||||
#define MXC_EHCI_UTMI_16BIT (1 << 28)
|
||||
#define MXC_EHCI_SERIAL (1 << 29)
|
||||
#define MXC_EHCI_MODE_UTMI (0 << 30)
|
||||
#define MXC_EHCI_MODE_PHILIPS (1 << 30)
|
||||
#define MXC_EHCI_MODE_ULPI (2 << 30)
|
||||
#define MXC_EHCI_MODE_SERIAL (3 << 30)
|
||||
|
||||
/* values for flags field */
|
||||
#define MXC_EHCI_INTERFACE_DIFF_UNI (0 << 0)
|
||||
#define MXC_EHCI_INTERFACE_DIFF_BI (1 << 0)
|
||||
#define MXC_EHCI_INTERFACE_SINGLE_UNI (2 << 0)
|
||||
#define MXC_EHCI_INTERFACE_SINGLE_BI (3 << 0)
|
||||
#define MXC_EHCI_INTERFACE_MASK (0xf)
|
||||
|
||||
#define MXC_EHCI_POWER_PINS_ENABLED (1 << 5)
|
||||
#define MXC_EHCI_PWR_PIN_ACTIVE_HIGH (1 << 6)
|
||||
#define MXC_EHCI_OC_PIN_ACTIVE_LOW (1 << 7)
|
||||
#define MXC_EHCI_TTL_ENABLED (1 << 8)
|
||||
|
||||
#define MXC_EHCI_INTERNAL_PHY (1 << 9)
|
||||
#define MXC_EHCI_IPPUE_DOWN (1 << 10)
|
||||
#define MXC_EHCI_IPPUE_UP (1 << 11)
|
||||
#define MXC_EHCI_WAKEUP_ENABLED (1 << 12)
|
||||
#define MXC_EHCI_ITC_NO_THRESHOLD (1 << 13)
|
||||
|
||||
#define MXC_USBCTRL_OFFSET 0
|
||||
#define MXC_USB_PHY_CTR_FUNC_OFFSET 0x8
|
||||
#define MXC_USB_PHY_CTR_FUNC2_OFFSET 0xc
|
||||
#define MXC_USBH2CTRL_OFFSET 0x14
|
||||
|
||||
int mx25_initialize_usb_hw(int port, unsigned int flags);
|
||||
int mx31_initialize_usb_hw(int port, unsigned int flags);
|
||||
int mx35_initialize_usb_hw(int port, unsigned int flags);
|
||||
int mx27_initialize_usb_hw(int port, unsigned int flags);
|
||||
|
||||
#endif /* __MACH_IMX_EHCI_H */
|
@ -97,7 +97,6 @@
|
||||
#include "mx31.h"
|
||||
#include "mx35.h"
|
||||
#include "mx2x.h"
|
||||
#include "mx21.h"
|
||||
#include "mx27.h"
|
||||
|
||||
#define imx_map_entry(soc, name, _type) { \
|
||||
|
@ -1,26 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2012 Sascha Hauer, Pengutronix
|
||||
*/
|
||||
|
||||
#include <linux/irq.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "mx27.h"
|
||||
|
||||
static const char * const imx27_dt_board_compat[] __initconst = {
|
||||
"fsl,imx27",
|
||||
NULL
|
||||
};
|
||||
|
||||
DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
|
||||
.map_io = mx27_map_io,
|
||||
.init_early = imx27_init_early,
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_late = imx27_pm_init,
|
||||
.dt_compat = imx27_dt_board_compat,
|
||||
MACHINE_END
|
@ -1,161 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2004-2006 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
||||
* Copyright (C) 2009 by Valentin Longchamp <valentin.longchamp@epfl.ch>
|
||||
*/
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/spinlock.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/kernel.h>
|
||||
|
||||
#include "hardware.h"
|
||||
#include "iomux-mx3.h"
|
||||
|
||||
/*
|
||||
* IOMUX register (base) addresses
|
||||
*/
|
||||
#define IOMUX_BASE MX31_IO_ADDRESS(MX31_IOMUXC_BASE_ADDR)
|
||||
#define IOMUXINT_OBS1 (IOMUX_BASE + 0x000)
|
||||
#define IOMUXINT_OBS2 (IOMUX_BASE + 0x004)
|
||||
#define IOMUXGPR (IOMUX_BASE + 0x008)
|
||||
#define IOMUXSW_MUX_CTL (IOMUX_BASE + 0x00C)
|
||||
#define IOMUXSW_PAD_CTL (IOMUX_BASE + 0x154)
|
||||
|
||||
static DEFINE_SPINLOCK(gpio_mux_lock);
|
||||
|
||||
#define IOMUX_REG_MASK (IOMUX_PADNUM_MASK & ~0x3)
|
||||
|
||||
static DECLARE_BITMAP(mxc_pin_alloc_map, NB_PORTS * 32);
|
||||
/*
|
||||
* set the mode for a IOMUX pin.
|
||||
*/
|
||||
void mxc_iomux_mode(unsigned int pin_mode)
|
||||
{
|
||||
u32 field;
|
||||
u32 l;
|
||||
u32 mode;
|
||||
void __iomem *reg;
|
||||
|
||||
reg = IOMUXSW_MUX_CTL + (pin_mode & IOMUX_REG_MASK);
|
||||
field = pin_mode & 0x3;
|
||||
mode = (pin_mode & IOMUX_MODE_MASK) >> IOMUX_MODE_SHIFT;
|
||||
|
||||
spin_lock(&gpio_mux_lock);
|
||||
|
||||
l = imx_readl(reg);
|
||||
l &= ~(0xff << (field * 8));
|
||||
l |= mode << (field * 8);
|
||||
imx_writel(l, reg);
|
||||
|
||||
spin_unlock(&gpio_mux_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* This function configures the pad value for a IOMUX pin.
|
||||
*/
|
||||
void mxc_iomux_set_pad(enum iomux_pins pin, u32 config)
|
||||
{
|
||||
u32 field, l;
|
||||
void __iomem *reg;
|
||||
|
||||
pin &= IOMUX_PADNUM_MASK;
|
||||
reg = IOMUXSW_PAD_CTL + (pin + 2) / 3 * 4;
|
||||
field = (pin + 2) % 3;
|
||||
|
||||
pr_debug("%s: reg offset = 0x%x, field = %d\n",
|
||||
__func__, (pin + 2) / 3, field);
|
||||
|
||||
spin_lock(&gpio_mux_lock);
|
||||
|
||||
l = imx_readl(reg);
|
||||
l &= ~(0x1ff << (field * 10));
|
||||
l |= config << (field * 10);
|
||||
imx_writel(l, reg);
|
||||
|
||||
spin_unlock(&gpio_mux_lock);
|
||||
}
|
||||
|
||||
/*
|
||||
* allocs a single pin:
|
||||
* - reserves the pin so that it is not claimed by another driver
|
||||
* - setups the iomux according to the configuration
|
||||
*/
|
||||
int mxc_iomux_alloc_pin(unsigned int pin, const char *label)
|
||||
{
|
||||
unsigned pad = pin & IOMUX_PADNUM_MASK;
|
||||
|
||||
if (pad >= (PIN_MAX + 1)) {
|
||||
printk(KERN_ERR "mxc_iomux: Attempt to request nonexistent pin %u for \"%s\"\n",
|
||||
pad, label ? label : "?");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (test_and_set_bit(pad, mxc_pin_alloc_map)) {
|
||||
printk(KERN_ERR "mxc_iomux: pin %u already used. Allocation for \"%s\" failed\n",
|
||||
pad, label ? label : "?");
|
||||
return -EBUSY;
|
||||
}
|
||||
mxc_iomux_mode(pin);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mxc_iomux_setup_multiple_pins(const unsigned int *pin_list, unsigned count,
|
||||
const char *label)
|
||||
{
|
||||
const unsigned int *p = pin_list;
|
||||
int i;
|
||||
int ret = -EINVAL;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
ret = mxc_iomux_alloc_pin(*p, label);
|
||||
if (ret)
|
||||
goto setup_error;
|
||||
p++;
|
||||
}
|
||||
return 0;
|
||||
|
||||
setup_error:
|
||||
mxc_iomux_release_multiple_pins(pin_list, i);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void mxc_iomux_release_pin(unsigned int pin)
|
||||
{
|
||||
unsigned pad = pin & IOMUX_PADNUM_MASK;
|
||||
|
||||
if (pad < (PIN_MAX + 1))
|
||||
clear_bit(pad, mxc_pin_alloc_map);
|
||||
}
|
||||
|
||||
void mxc_iomux_release_multiple_pins(const unsigned int *pin_list, int count)
|
||||
{
|
||||
const unsigned int *p = pin_list;
|
||||
int i;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
mxc_iomux_release_pin(*p);
|
||||
p++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* This function enables/disables the general purpose function for a particular
|
||||
* signal.
|
||||
*/
|
||||
void mxc_iomux_set_gpr(enum iomux_gp_func gp, bool en)
|
||||
{
|
||||
u32 l;
|
||||
|
||||
spin_lock(&gpio_mux_lock);
|
||||
l = imx_readl(IOMUXGPR);
|
||||
if (en)
|
||||
l |= gp;
|
||||
else
|
||||
l &= ~gp;
|
||||
|
||||
imx_writel(l, IOMUXGPR);
|
||||
spin_unlock(&gpio_mux_lock);
|
||||
}
|
@ -1,109 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2009 by Holger Schurig <hs4233@mail.mn-solutions.de>
|
||||
*/
|
||||
#ifndef __MACH_IOMUX_MX21_H__
|
||||
#define __MACH_IOMUX_MX21_H__
|
||||
|
||||
#include "iomux-mx2x.h"
|
||||
#include "iomux-v1.h"
|
||||
|
||||
/* Primary GPIO pin functions */
|
||||
|
||||
#define PB22_PF_USBH1_BYP (GPIO_PORTB | GPIO_PF | 22)
|
||||
#define PB25_PF_USBH1_ON (GPIO_PORTB | GPIO_PF | 25)
|
||||
#define PC5_PF_USBOTG_SDA (GPIO_PORTC | GPIO_PF | 5)
|
||||
#define PC6_PF_USBOTG_SCL (GPIO_PORTC | GPIO_PF | 6)
|
||||
#define PC7_PF_USBOTG_ON (GPIO_PORTC | GPIO_PF | 7)
|
||||
#define PC8_PF_USBOTG_FS (GPIO_PORTC | GPIO_PF | 8)
|
||||
#define PC9_PF_USBOTG_OE (GPIO_PORTC | GPIO_PF | 9)
|
||||
#define PC10_PF_USBOTG_TXDM (GPIO_PORTC | GPIO_PF | 10)
|
||||
#define PC11_PF_USBOTG_TXDP (GPIO_PORTC | GPIO_PF | 11)
|
||||
#define PC12_PF_USBOTG_RXDM (GPIO_PORTC | GPIO_PF | 12)
|
||||
#define PC13_PF_USBOTG_RXDP (GPIO_PORTC | GPIO_PF | 13)
|
||||
#define PC16_PF_SAP_FS (GPIO_PORTC | GPIO_PF | 16)
|
||||
#define PC17_PF_SAP_RXD (GPIO_PORTC | GPIO_PF | 17)
|
||||
#define PC18_PF_SAP_TXD (GPIO_PORTC | GPIO_PF | 18)
|
||||
#define PC19_PF_SAP_CLK (GPIO_PORTC | GPIO_PF | 19)
|
||||
#define PE0_PF_TEST_WB2 (GPIO_PORTE | GPIO_PF | 0)
|
||||
#define PE1_PF_TEST_WB1 (GPIO_PORTE | GPIO_PF | 1)
|
||||
#define PE2_PF_TEST_WB0 (GPIO_PORTE | GPIO_PF | 2)
|
||||
#define PF1_PF_NFCE (GPIO_PORTF | GPIO_PF | 1)
|
||||
#define PF3_PF_NFCLE (GPIO_PORTF | GPIO_PF | 3)
|
||||
#define PF7_PF_NFIO0 (GPIO_PORTF | GPIO_PF | 7)
|
||||
#define PF8_PF_NFIO1 (GPIO_PORTF | GPIO_PF | 8)
|
||||
#define PF9_PF_NFIO2 (GPIO_PORTF | GPIO_PF | 9)
|
||||
#define PF10_PF_NFIO3 (GPIO_PORTF | GPIO_PF | 10)
|
||||
#define PF11_PF_NFIO4 (GPIO_PORTF | GPIO_PF | 11)
|
||||
#define PF12_PF_NFIO5 (GPIO_PORTF | GPIO_PF | 12)
|
||||
#define PF13_PF_NFIO6 (GPIO_PORTF | GPIO_PF | 13)
|
||||
#define PF14_PF_NFIO7 (GPIO_PORTF | GPIO_PF | 14)
|
||||
#define PF16_PF_RES (GPIO_PORTF | GPIO_PF | 16)
|
||||
|
||||
/* Alternate GPIO pin functions */
|
||||
|
||||
#define PA5_AF_BMI_CLK_CS (GPIO_PORTA | GPIO_AF | 5)
|
||||
#define PA6_AF_BMI_D0 (GPIO_PORTA | GPIO_AF | 6)
|
||||
#define PA7_AF_BMI_D1 (GPIO_PORTA | GPIO_AF | 7)
|
||||
#define PA8_AF_BMI_D2 (GPIO_PORTA | GPIO_AF | 8)
|
||||
#define PA9_AF_BMI_D3 (GPIO_PORTA | GPIO_AF | 9)
|
||||
#define PA10_AF_BMI_D4 (GPIO_PORTA | GPIO_AF | 10)
|
||||
#define PA11_AF_BMI_D5 (GPIO_PORTA | GPIO_AF | 11)
|
||||
#define PA12_AF_BMI_D6 (GPIO_PORTA | GPIO_AF | 12)
|
||||
#define PA13_AF_BMI_D7 (GPIO_PORTA | GPIO_AF | 13)
|
||||
#define PA14_AF_BMI_D8 (GPIO_PORTA | GPIO_AF | 14)
|
||||
#define PA15_AF_BMI_D9 (GPIO_PORTA | GPIO_AF | 15)
|
||||
#define PA16_AF_BMI_D10 (GPIO_PORTA | GPIO_AF | 16)
|
||||
#define PA17_AF_BMI_D11 (GPIO_PORTA | GPIO_AF | 17)
|
||||
#define PA18_AF_BMI_D12 (GPIO_PORTA | GPIO_AF | 18)
|
||||
#define PA19_AF_BMI_D13 (GPIO_PORTA | GPIO_AF | 19)
|
||||
#define PA20_AF_BMI_D14 (GPIO_PORTA | GPIO_AF | 20)
|
||||
#define PA21_AF_BMI_D15 (GPIO_PORTA | GPIO_AF | 21)
|
||||
#define PA22_AF_BMI_READ_REQ (GPIO_PORTA | GPIO_AF | 22)
|
||||
#define PA23_AF_BMI_WRITE (GPIO_PORTA | GPIO_AF | 23)
|
||||
#define PA29_AF_BMI_RX_FULL (GPIO_PORTA | GPIO_AF | 29)
|
||||
#define PA30_AF_BMI_READ (GPIO_PORTA | GPIO_AF | 30)
|
||||
|
||||
/* AIN GPIO pin functions */
|
||||
|
||||
#define PC14_AIN_SYS_CLK (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 14)
|
||||
#define PD21_AIN_USBH2_FS (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 21)
|
||||
#define PD22_AIN_USBH2_OE (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 22)
|
||||
#define PD23_AIN_USBH2_TXDM (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 23)
|
||||
#define PD24_AIN_USBH2_TXDP (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 24)
|
||||
#define PE8_AIN_IR_TXD (GPIO_PORTE | GPIO_AIN | GPIO_OUT | 8)
|
||||
#define PF0_AIN_PC_RST (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 0)
|
||||
#define PF1_AIN_PC_CE1 (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 1)
|
||||
#define PF2_AIN_PC_CE2 (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 2)
|
||||
#define PF3_AIN_PC_POE (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 3)
|
||||
#define PF4_AIN_PC_OE (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 4)
|
||||
#define PF5_AIN_PC_RW (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 5)
|
||||
|
||||
/* BIN GPIO pin functions */
|
||||
|
||||
#define PC14_BIN_SYS_CLK (GPIO_PORTC | GPIO_BIN | GPIO_OUT | 14)
|
||||
#define PD27_BIN_EXT_DMA_GRANT (GPIO_PORTD | GPIO_BIN | GPIO_OUT | 27)
|
||||
|
||||
/* CIN GPIO pin functions */
|
||||
|
||||
#define PB26_CIN_USBH1_RXDAT (GPIO_PORTB | GPIO_CIN | GPIO_OUT | 26)
|
||||
|
||||
/* AOUT GPIO pin functions */
|
||||
|
||||
#define PA29_AOUT_BMI_WAIT (GPIO_PORTA | GPIO_AOUT | GPIO_IN | 29)
|
||||
#define PD19_AOUT_USBH2_RXDM (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 19)
|
||||
#define PD20_AOUT_USBH2_RXDP (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 20)
|
||||
#define PD25_AOUT_EXT_DMAREQ (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 25)
|
||||
#define PD26_AOUT_USBOTG_RXDAT (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 26)
|
||||
#define PE9_AOUT_IR_RXD (GPIO_PORTE | GPIO_AOUT | GPIO_IN | 9)
|
||||
#define PF6_AOUT_PC_BVD2 (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 6)
|
||||
#define PF7_AOUT_PC_BVD1 (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 7)
|
||||
#define PF8_AOUT_PC_VS2 (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 8)
|
||||
#define PF9_AOUT_PC_VS1 (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 9)
|
||||
#define PF10_AOUT_PC_WP (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 10)
|
||||
#define PF11_AOUT_PC_READY (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 11)
|
||||
#define PF12_AOUT_PC_WAIT (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 12)
|
||||
#define PF13_AOUT_PC_CD2 (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 13)
|
||||
#define PF14_AOUT_PC_CD1 (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 14)
|
||||
|
||||
#endif /* ifndef __MACH_IOMUX_MX21_H__ */
|
@ -1,192 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
||||
* Copyright (C) 2009 by Holger Schurig <hs4233@mail.mn-solutions.de>
|
||||
*/
|
||||
#ifndef __MACH_IOMUX_MX27_H__
|
||||
#define __MACH_IOMUX_MX27_H__
|
||||
|
||||
#include "iomux-mx2x.h"
|
||||
#include "iomux-v1.h"
|
||||
|
||||
/* Primary GPIO pin functions */
|
||||
|
||||
#define PA0_PF_USBH2_CLK (GPIO_PORTA | GPIO_PF | 0)
|
||||
#define PA1_PF_USBH2_DIR (GPIO_PORTA | GPIO_PF | 1)
|
||||
#define PA2_PF_USBH2_DATA7 (GPIO_PORTA | GPIO_PF | 2)
|
||||
#define PA3_PF_USBH2_NXT (GPIO_PORTA | GPIO_PF | 3)
|
||||
#define PA4_PF_USBH2_STP (GPIO_PORTA | GPIO_PF | 4)
|
||||
#define PB22_PF_USBH1_SUSP (GPIO_PORTB | GPIO_PF | 22)
|
||||
#define PB25_PF_USBH1_RCV (GPIO_PORTB | GPIO_PF | 25)
|
||||
#define PC5_PF_I2C2_SDA (GPIO_PORTC | GPIO_PF | GPIO_IN | 5)
|
||||
#define PC6_PF_I2C2_SCL (GPIO_PORTC | GPIO_PF | GPIO_IN | 6)
|
||||
#define PC7_PF_USBOTG_DATA5 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 7)
|
||||
#define PC8_PF_USBOTG_DATA6 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 8)
|
||||
#define PC9_PF_USBOTG_DATA0 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 9)
|
||||
#define PC10_PF_USBOTG_DATA2 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 10)
|
||||
#define PC11_PF_USBOTG_DATA1 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 11)
|
||||
#define PC12_PF_USBOTG_DATA4 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 12)
|
||||
#define PC13_PF_USBOTG_DATA3 (GPIO_PORTC | GPIO_PF | GPIO_OUT | 13)
|
||||
#define PC16_PF_SSI4_FS (GPIO_PORTC | GPIO_PF | GPIO_IN | 16)
|
||||
#define PC17_PF_SSI4_RXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 17)
|
||||
#define PC18_PF_SSI4_TXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 18)
|
||||
#define PC19_PF_SSI4_CLK (GPIO_PORTC | GPIO_PF | GPIO_IN | 19)
|
||||
#define PD0_PF_SD3_CMD (GPIO_PORTD | GPIO_PF | 0)
|
||||
#define PD1_PF_SD3_CLK (GPIO_PORTD | GPIO_PF | 1)
|
||||
#define PD2_PF_ATA_DATA0 (GPIO_PORTD | GPIO_PF | 2)
|
||||
#define PD3_PF_ATA_DATA1 (GPIO_PORTD | GPIO_PF | 3)
|
||||
#define PD4_PF_ATA_DATA2 (GPIO_PORTD | GPIO_PF | 4)
|
||||
#define PD5_PF_ATA_DATA3 (GPIO_PORTD | GPIO_PF | 5)
|
||||
#define PD6_PF_ATA_DATA4 (GPIO_PORTD | GPIO_PF | 6)
|
||||
#define PD7_PF_ATA_DATA5 (GPIO_PORTD | GPIO_PF | 7)
|
||||
#define PD8_PF_ATA_DATA6 (GPIO_PORTD | GPIO_PF | 8)
|
||||
#define PD9_PF_ATA_DATA7 (GPIO_PORTD | GPIO_PF | 9)
|
||||
#define PD10_PF_ATA_DATA8 (GPIO_PORTD | GPIO_PF | 10)
|
||||
#define PD11_PF_ATA_DATA9 (GPIO_PORTD | GPIO_PF | 11)
|
||||
#define PD12_PF_ATA_DATA10 (GPIO_PORTD | GPIO_PF | 12)
|
||||
#define PD13_PF_ATA_DATA11 (GPIO_PORTD | GPIO_PF | 13)
|
||||
#define PD14_PF_ATA_DATA12 (GPIO_PORTD | GPIO_PF | 14)
|
||||
#define PD15_PF_ATA_DATA13 (GPIO_PORTD | GPIO_PF | 15)
|
||||
#define PD16_PF_ATA_DATA14 (GPIO_PORTD | GPIO_PF | 16)
|
||||
#define PE0_PF_USBOTG_NXT (GPIO_PORTE | GPIO_PF | GPIO_OUT | 0)
|
||||
#define PE1_PF_USBOTG_STP (GPIO_PORTE | GPIO_PF | GPIO_OUT | 1)
|
||||
#define PE2_PF_USBOTG_DIR (GPIO_PORTE | GPIO_PF | GPIO_OUT | 2)
|
||||
#define PE24_PF_USBOTG_CLK (GPIO_PORTE | GPIO_PF | GPIO_OUT | 24)
|
||||
#define PE25_PF_USBOTG_DATA7 (GPIO_PORTE | GPIO_PF | GPIO_OUT | 25)
|
||||
#define PF1_PF_NFCLE (GPIO_PORTF | GPIO_PF | 1)
|
||||
#define PF3_PF_NFCE (GPIO_PORTF | GPIO_PF | 3)
|
||||
#define PF7_PF_PC_POE (GPIO_PORTF | GPIO_PF | 7)
|
||||
#define PF8_PF_PC_RW (GPIO_PORTF | GPIO_PF | 8)
|
||||
#define PF9_PF_PC_IOIS16 (GPIO_PORTF | GPIO_PF | 9)
|
||||
#define PF10_PF_PC_RST (GPIO_PORTF | GPIO_PF | 10)
|
||||
#define PF11_PF_PC_BVD2 (GPIO_PORTF | GPIO_PF | 11)
|
||||
#define PF12_PF_PC_BVD1 (GPIO_PORTF | GPIO_PF | 12)
|
||||
#define PF13_PF_PC_VS2 (GPIO_PORTF | GPIO_PF | 13)
|
||||
#define PF14_PF_PC_VS1 (GPIO_PORTF | GPIO_PF | 14)
|
||||
#define PF16_PF_PC_PWRON (GPIO_PORTF | GPIO_PF | 16)
|
||||
#define PF17_PF_PC_READY (GPIO_PORTF | GPIO_PF | 17)
|
||||
#define PF18_PF_PC_WAIT (GPIO_PORTF | GPIO_PF | 18)
|
||||
#define PF19_PF_PC_CD2 (GPIO_PORTF | GPIO_PF | 19)
|
||||
#define PF20_PF_PC_CD1 (GPIO_PORTF | GPIO_PF | 20)
|
||||
#define PF23_PF_ATA_DATA15 (GPIO_PORTF | GPIO_PF | 23)
|
||||
|
||||
/* Alternate GPIO pin functions */
|
||||
|
||||
#define PB4_AF_MSHC_DATA0 (GPIO_PORTB | GPIO_AF | GPIO_OUT | 4)
|
||||
#define PB5_AF_MSHC_DATA1 (GPIO_PORTB | GPIO_AF | GPIO_OUT | 5)
|
||||
#define PB6_AF_MSHC_DATA2 (GPIO_PORTB | GPIO_AF | GPIO_OUT | 6)
|
||||
#define PB7_AF_MSHC_DATA4 (GPIO_PORTB | GPIO_AF | GPIO_OUT | 7)
|
||||
#define PB8_AF_MSHC_BS (GPIO_PORTB | GPIO_AF | GPIO_OUT | 8)
|
||||
#define PB9_AF_MSHC_SCLK (GPIO_PORTB | GPIO_AF | GPIO_OUT | 9)
|
||||
#define PB10_AF_UART6_TXD (GPIO_PORTB | GPIO_AF | GPIO_OUT | 10)
|
||||
#define PB11_AF_UART6_RXD (GPIO_PORTB | GPIO_AF | GPIO_IN | 11)
|
||||
#define PB12_AF_UART6_CTS (GPIO_PORTB | GPIO_AF | GPIO_OUT | 12)
|
||||
#define PB13_AF_UART6_RTS (GPIO_PORTB | GPIO_AF | GPIO_IN | 13)
|
||||
#define PB18_AF_UART5_TXD (GPIO_PORTB | GPIO_AF | GPIO_OUT | 18)
|
||||
#define PB19_AF_UART5_RXD (GPIO_PORTB | GPIO_AF | GPIO_IN | 19)
|
||||
#define PB20_AF_UART5_CTS (GPIO_PORTB | GPIO_AF | GPIO_OUT | 20)
|
||||
#define PB21_AF_UART5_RTS (GPIO_PORTB | GPIO_AF | GPIO_IN | 21)
|
||||
#define PC8_AF_FEC_MDIO (GPIO_PORTC | GPIO_AF | GPIO_IN | 8)
|
||||
#define PC24_AF_GPT5_TOUT (GPIO_PORTC | GPIO_AF | 24)
|
||||
#define PC25_AF_GPT5_TIN (GPIO_PORTC | GPIO_AF | 25)
|
||||
#define PC26_AF_GPT4_TOUT (GPIO_PORTC | GPIO_AF | 26)
|
||||
#define PC27_AF_GPT4_TIN (GPIO_PORTC | GPIO_AF | 27)
|
||||
#define PD1_AF_ETMTRACE_PKT15 (GPIO_PORTD | GPIO_AF | 1)
|
||||
#define PD6_AF_ETMTRACE_PKT14 (GPIO_PORTD | GPIO_AF | 6)
|
||||
#define PD7_AF_ETMTRACE_PKT13 (GPIO_PORTD | GPIO_AF | 7)
|
||||
#define PD9_AF_ETMTRACE_PKT12 (GPIO_PORTD | GPIO_AF | 9)
|
||||
#define PD2_AF_SD3_D0 (GPIO_PORTD | GPIO_AF | 2)
|
||||
#define PD3_AF_SD3_D1 (GPIO_PORTD | GPIO_AF | 3)
|
||||
#define PD4_AF_SD3_D2 (GPIO_PORTD | GPIO_AF | 4)
|
||||
#define PD5_AF_SD3_D3 (GPIO_PORTD | GPIO_AF | 5)
|
||||
#define PD8_AF_FEC_MDIO (GPIO_PORTD | GPIO_AF | GPIO_IN | 8)
|
||||
#define PD10_AF_ETMTRACE_PKT11 (GPIO_PORTD | GPIO_AF | 10)
|
||||
#define PD11_AF_ETMTRACE_PKT10 (GPIO_PORTD | GPIO_AF | 11)
|
||||
#define PD12_AF_ETMTRACE_PKT9 (GPIO_PORTD | GPIO_AF | 12)
|
||||
#define PD13_AF_ETMTRACE_PKT8 (GPIO_PORTD | GPIO_AF | 13)
|
||||
#define PD14_AF_ETMTRACE_PKT7 (GPIO_PORTD | GPIO_AF | 14)
|
||||
#define PD15_AF_ETMTRACE_PKT6 (GPIO_PORTD | GPIO_AF | 15)
|
||||
#define PD16_AF_ETMTRACE_PKT5 (GPIO_PORTD | GPIO_AF | 16)
|
||||
#define PF1_AF_ETMTRACE_PKT0 (GPIO_PORTF | GPIO_AF | 1)
|
||||
#define PF3_AF_ETMTRACE_PKT2 (GPIO_PORTF | GPIO_AF | 3)
|
||||
#define PF5_AF_ETMPIPESTAT11 (GPIO_PORTF | GPIO_AF | 5)
|
||||
#define PF7_AF_ATA_BUFFER_EN (GPIO_PORTF | GPIO_AF | 7)
|
||||
#define PF8_AF_ATA_IORDY (GPIO_PORTF | GPIO_AF | 8)
|
||||
#define PF9_AF_ATA_INTRQ (GPIO_PORTF | GPIO_AF | 9)
|
||||
#define PF10_AF_ATA_RESET (GPIO_PORTF | GPIO_AF | 10)
|
||||
#define PF11_AF_ATA_DMACK (GPIO_PORTF | GPIO_AF | 11)
|
||||
#define PF12_AF_ATA_DMAREQ (GPIO_PORTF | GPIO_AF | 12)
|
||||
#define PF13_AF_ATA_DA0 (GPIO_PORTF | GPIO_AF | 13)
|
||||
#define PF14_AF_ATA_DA1 (GPIO_PORTF | GPIO_AF | 14)
|
||||
#define PF15_AF_ETMTRACE_SYNC (GPIO_PORTF | GPIO_AF | 15)
|
||||
#define PF16_AF_ATA_DA2 (GPIO_PORTF | GPIO_AF | 16)
|
||||
#define PF17_AF_ATA_CS0 (GPIO_PORTF | GPIO_AF | 17)
|
||||
#define PF18_AF_ATA_CS1 (GPIO_PORTF | GPIO_AF | 18)
|
||||
#define PF19_AF_ATA_DIOW (GPIO_PORTF | GPIO_AF | 19)
|
||||
#define PF20_AF_ATA_DIOR (GPIO_PORTF | GPIO_AF | 20)
|
||||
#define PF22_AF_ETMTRACE_CLK (GPIO_PORTF | GPIO_AF | 22)
|
||||
#define PF23_AF_ETMTRACE_PKT4 (GPIO_PORTF | GPIO_AF | 23)
|
||||
|
||||
/* AIN GPIO pin functions */
|
||||
|
||||
#define PC14_AIN_SSI1_MCLK (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 14)
|
||||
#define PC15_AIN_GPT6_TOUT (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 15)
|
||||
#define PD0_AIN_FEC_TXD0 (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 0)
|
||||
#define PD1_AIN_FEC_TXD1 (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 1)
|
||||
#define PD2_AIN_FEC_TXD2 (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 2)
|
||||
#define PD3_AIN_FEC_TXD3 (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 3)
|
||||
#define PD9_AIN_FEC_MDC (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 9)
|
||||
#define PD16_AIN_FEC_TX_ER (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 16)
|
||||
#define PD27_AIN_EXT_DMA_GRANT (GPIO_PORTD | GPIO_AIN | GPIO_OUT | 27)
|
||||
#define PF23_AIN_FEC_TX_EN (GPIO_PORTF | GPIO_AIN | GPIO_OUT | 23)
|
||||
|
||||
/* BIN GPIO pin functions */
|
||||
|
||||
#define PC14_BIN_SSI2_MCLK (GPIO_PORTC | GPIO_BIN | GPIO_OUT | 14)
|
||||
|
||||
/* CIN GPIO pin functions */
|
||||
|
||||
#define PD2_CIN_SLCDC1_DAT0 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 2)
|
||||
#define PD3_CIN_SLCDC1_DAT1 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 3)
|
||||
#define PD4_CIN_SLCDC1_DAT2 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 4)
|
||||
#define PD5_CIN_SLCDC1_DAT3 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 5)
|
||||
#define PD6_CIN_SLCDC1_DAT4 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 6)
|
||||
#define PD7_CIN_SLCDC1_DAT5 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 7)
|
||||
#define PD8_CIN_SLCDC1_DAT6 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 8)
|
||||
#define PD9_CIN_SLCDC1_DAT7 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 9)
|
||||
#define PD10_CIN_SLCDC1_DAT8 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 10)
|
||||
#define PD11_CIN_SLCDC1_DAT9 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 11)
|
||||
#define PD12_CIN_SLCDC1_DAT10 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 12)
|
||||
#define PD13_CIN_SLCDC1_DAT11 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 13)
|
||||
#define PD14_CIN_SLCDC1_DAT12 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 14)
|
||||
#define PD15_CIN_SLCDC1_DAT13 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 15)
|
||||
#define PD16_CIN_SLCDC1_DAT14 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 16)
|
||||
#define PD23_CIN_SLCDC1_DAT15 (GPIO_PORTD | GPIO_CIN | GPIO_OUT | 23)
|
||||
#define PF27_CIN_EXT_DMA_GRANT (GPIO_PORTF | GPIO_CIN | GPIO_OUT | 27)
|
||||
/* LCDC_TESTx on PBxx omitted, because it's not clear what they do */
|
||||
|
||||
/* AOUT GPIO pin functions */
|
||||
|
||||
#define PC14_AOUT_GPT6_TIN (GPIO_PORTC | GPIO_AOUT | GPIO_IN | 14)
|
||||
#define PD4_AOUT_FEC_RX_ER (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 4)
|
||||
#define PD5_AOUT_FEC_RXD1 (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 5)
|
||||
#define PD6_AOUT_FEC_RXD2 (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 6)
|
||||
#define PD7_AOUT_FEC_RXD3 (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 7)
|
||||
#define PD10_AOUT_FEC_CRS (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 10)
|
||||
#define PD11_AOUT_FEC_TX_CLK (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 11)
|
||||
#define PD12_AOUT_FEC_RXD0 (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 12)
|
||||
#define PD13_AOUT_FEC_RX_DV (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 13)
|
||||
#define PD14_AOUT_FEC_RX_CLK (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 14)
|
||||
#define PD15_AOUT_FEC_COL (GPIO_PORTD | GPIO_AOUT | GPIO_IN | 15)
|
||||
|
||||
/* BOUT GPIO pin functions */
|
||||
|
||||
#define PC17_BOUT_PC_IOIS16 (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 17)
|
||||
#define PC18_BOUT_PC_BVD2 (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 18)
|
||||
#define PC19_BOUT_PC_BVD1 (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 19)
|
||||
#define PC28_BOUT_PC_BVD2 (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 28)
|
||||
#define PC29_BOUT_PC_VS1 (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 29)
|
||||
#define PC30_BOUT_PC_READY (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 30)
|
||||
#define PC31_BOUT_PC_WAIT (GPIO_PORTC | GPIO_BOUT | GPIO_IN | 31)
|
||||
|
||||
#endif /* __MACH_IOMUX_MX27_H__ */
|
@ -1,217 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
||||
* Copyright (C) 2009 by Holger Schurig <hs4233@mail.mn-solutions.de>
|
||||
*/
|
||||
#ifndef __MACH_IOMUX_MX2x_H__
|
||||
#define __MACH_IOMUX_MX2x_H__
|
||||
|
||||
/* Primary GPIO pin functions */
|
||||
|
||||
#define PA5_PF_LSCLK (GPIO_PORTA | GPIO_PF | GPIO_OUT | 5)
|
||||
#define PA6_PF_LD0 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 6)
|
||||
#define PA7_PF_LD1 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 7)
|
||||
#define PA8_PF_LD2 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 8)
|
||||
#define PA9_PF_LD3 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 9)
|
||||
#define PA10_PF_LD4 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 10)
|
||||
#define PA11_PF_LD5 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 11)
|
||||
#define PA12_PF_LD6 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 12)
|
||||
#define PA13_PF_LD7 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 13)
|
||||
#define PA14_PF_LD8 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 14)
|
||||
#define PA15_PF_LD9 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 15)
|
||||
#define PA16_PF_LD10 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 16)
|
||||
#define PA17_PF_LD11 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 17)
|
||||
#define PA18_PF_LD12 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 18)
|
||||
#define PA19_PF_LD13 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 19)
|
||||
#define PA20_PF_LD14 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 20)
|
||||
#define PA21_PF_LD15 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 21)
|
||||
#define PA22_PF_LD16 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 22)
|
||||
#define PA23_PF_LD17 (GPIO_PORTA | GPIO_PF | GPIO_OUT | 23)
|
||||
#define PA24_PF_REV (GPIO_PORTA | GPIO_PF | GPIO_OUT | 24)
|
||||
#define PA25_PF_CLS (GPIO_PORTA | GPIO_PF | GPIO_OUT | 25)
|
||||
#define PA26_PF_PS (GPIO_PORTA | GPIO_PF | GPIO_OUT | 26)
|
||||
#define PA27_PF_SPL_SPR (GPIO_PORTA | GPIO_PF | GPIO_OUT | 27)
|
||||
#define PA28_PF_HSYNC (GPIO_PORTA | GPIO_PF | GPIO_OUT | 28)
|
||||
#define PA29_PF_VSYNC (GPIO_PORTA | GPIO_PF | GPIO_OUT | 29)
|
||||
#define PA30_PF_CONTRAST (GPIO_PORTA | GPIO_PF | GPIO_OUT | 30)
|
||||
#define PA31_PF_OE_ACD (GPIO_PORTA | GPIO_PF | GPIO_OUT | 31)
|
||||
#define PB4_PF_SD2_D0 (GPIO_PORTB | GPIO_PF | 4)
|
||||
#define PB5_PF_SD2_D1 (GPIO_PORTB | GPIO_PF | 5)
|
||||
#define PB6_PF_SD2_D2 (GPIO_PORTB | GPIO_PF | 6)
|
||||
#define PB7_PF_SD2_D3 (GPIO_PORTB | GPIO_PF | 7)
|
||||
#define PB8_PF_SD2_CMD (GPIO_PORTB | GPIO_PF | 8)
|
||||
#define PB9_PF_SD2_CLK (GPIO_PORTB | GPIO_PF | 9)
|
||||
#define PB10_PF_CSI_D0 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 10)
|
||||
#define PB11_PF_CSI_D1 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 11)
|
||||
#define PB12_PF_CSI_D2 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 12)
|
||||
#define PB13_PF_CSI_D3 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 13)
|
||||
#define PB14_PF_CSI_D4 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 14)
|
||||
#define PB15_PF_CSI_MCLK (GPIO_PORTB | GPIO_PF | GPIO_OUT | 15)
|
||||
#define PB16_PF_CSI_PIXCLK (GPIO_PORTB | GPIO_PF | GPIO_OUT | 16)
|
||||
#define PB17_PF_CSI_D5 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 17)
|
||||
#define PB18_PF_CSI_D6 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 18)
|
||||
#define PB19_PF_CSI_D7 (GPIO_PORTB | GPIO_PF | GPIO_OUT | 19)
|
||||
#define PB20_PF_CSI_VSYNC (GPIO_PORTB | GPIO_PF | GPIO_OUT | 20)
|
||||
#define PB21_PF_CSI_HSYNC (GPIO_PORTB | GPIO_PF | GPIO_OUT | 21)
|
||||
#define PB23_PF_USB_PWR (GPIO_PORTB | GPIO_PF | 23)
|
||||
#define PB24_PF_USB_OC (GPIO_PORTB | GPIO_PF | 24)
|
||||
#define PB26_PF_USBH1_FS (GPIO_PORTB | GPIO_PF | 26)
|
||||
#define PB27_PF_USBH1_OE (GPIO_PORTB | GPIO_PF | 27)
|
||||
#define PB28_PF_USBH1_TXDM (GPIO_PORTB | GPIO_PF | 28)
|
||||
#define PB29_PF_USBH1_TXDP (GPIO_PORTB | GPIO_PF | 29)
|
||||
#define PB30_PF_USBH1_RXDM (GPIO_PORTB | GPIO_PF | 30)
|
||||
#define PB31_PF_USBH1_RXDP (GPIO_PORTB | GPIO_PF | 31)
|
||||
#define PC14_PF_TOUT (GPIO_PORTC | GPIO_PF | 14)
|
||||
#define PC15_PF_TIN (GPIO_PORTC | GPIO_PF | 15)
|
||||
#define PC20_PF_SSI1_FS (GPIO_PORTC | GPIO_PF | GPIO_IN | 20)
|
||||
#define PC21_PF_SSI1_RXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 21)
|
||||
#define PC22_PF_SSI1_TXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 22)
|
||||
#define PC23_PF_SSI1_CLK (GPIO_PORTC | GPIO_PF | GPIO_IN | 23)
|
||||
#define PC24_PF_SSI2_FS (GPIO_PORTC | GPIO_PF | GPIO_IN | 24)
|
||||
#define PC25_PF_SSI2_RXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 25)
|
||||
#define PC26_PF_SSI2_TXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 26)
|
||||
#define PC27_PF_SSI2_CLK (GPIO_PORTC | GPIO_PF | GPIO_IN | 27)
|
||||
#define PC28_PF_SSI3_FS (GPIO_PORTC | GPIO_PF | GPIO_IN | 28)
|
||||
#define PC29_PF_SSI3_RXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 29)
|
||||
#define PC30_PF_SSI3_TXD (GPIO_PORTC | GPIO_PF | GPIO_IN | 30)
|
||||
#define PC31_PF_SSI3_CLK (GPIO_PORTC | GPIO_PF | GPIO_IN | 31)
|
||||
#define PD17_PF_I2C_DATA (GPIO_PORTD | GPIO_PF | GPIO_OUT | 17)
|
||||
#define PD18_PF_I2C_CLK (GPIO_PORTD | GPIO_PF | GPIO_OUT | 18)
|
||||
#define PD19_PF_CSPI2_SS2 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 19)
|
||||
#define PD20_PF_CSPI2_SS1 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 20)
|
||||
#define PD21_PF_CSPI2_SS0 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 21)
|
||||
#define PD22_PF_CSPI2_SCLK (GPIO_PORTD | GPIO_PF | GPIO_OUT | 22)
|
||||
#define PD23_PF_CSPI2_MISO (GPIO_PORTD | GPIO_PF | GPIO_IN | 23)
|
||||
#define PD24_PF_CSPI2_MOSI (GPIO_PORTD | GPIO_PF | GPIO_OUT | 24)
|
||||
#define PD25_PF_CSPI1_RDY (GPIO_PORTD | GPIO_PF | GPIO_OUT | 25)
|
||||
#define PD26_PF_CSPI1_SS2 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 26)
|
||||
#define PD27_PF_CSPI1_SS1 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 27)
|
||||
#define PD28_PF_CSPI1_SS0 (GPIO_PORTD | GPIO_PF | GPIO_OUT | 28)
|
||||
#define PD29_PF_CSPI1_SCLK (GPIO_PORTD | GPIO_PF | GPIO_OUT | 29)
|
||||
#define PD30_PF_CSPI1_MISO (GPIO_PORTD | GPIO_PF | GPIO_IN | 30)
|
||||
#define PD31_PF_CSPI1_MOSI (GPIO_PORTD | GPIO_PF | GPIO_OUT | 31)
|
||||
#define PE3_PF_UART2_CTS (GPIO_PORTE | GPIO_PF | GPIO_OUT | 3)
|
||||
#define PE4_PF_UART2_RTS (GPIO_PORTE | GPIO_PF | GPIO_IN | 4)
|
||||
#define PE5_PF_PWMO (GPIO_PORTE | GPIO_PF | 5)
|
||||
#define PE6_PF_UART2_TXD (GPIO_PORTE | GPIO_PF | GPIO_OUT | 6)
|
||||
#define PE7_PF_UART2_RXD (GPIO_PORTE | GPIO_PF | GPIO_IN | 7)
|
||||
#define PE8_PF_UART3_TXD (GPIO_PORTE | GPIO_PF | GPIO_OUT | 8)
|
||||
#define PE9_PF_UART3_RXD (GPIO_PORTE | GPIO_PF | GPIO_IN | 9)
|
||||
#define PE10_PF_UART3_CTS (GPIO_PORTE | GPIO_PF | GPIO_OUT | 10)
|
||||
#define PE11_PF_UART3_RTS (GPIO_PORTE | GPIO_PF | GPIO_IN | 11)
|
||||
#define PE12_PF_UART1_TXD (GPIO_PORTE | GPIO_PF | GPIO_OUT | 12)
|
||||
#define PE13_PF_UART1_RXD (GPIO_PORTE | GPIO_PF | GPIO_IN | 13)
|
||||
#define PE14_PF_UART1_CTS (GPIO_PORTE | GPIO_PF | GPIO_OUT | 14)
|
||||
#define PE15_PF_UART1_RTS (GPIO_PORTE | GPIO_PF | GPIO_IN | 15)
|
||||
#define PE16_PF_RTCK (GPIO_PORTE | GPIO_PF | GPIO_OUT | 16)
|
||||
#define PE17_PF_RESET_OUT (GPIO_PORTE | GPIO_PF | 17)
|
||||
#define PE18_PF_SD1_D0 (GPIO_PORTE | GPIO_PF | 18)
|
||||
#define PE19_PF_SD1_D1 (GPIO_PORTE | GPIO_PF | 19)
|
||||
#define PE20_PF_SD1_D2 (GPIO_PORTE | GPIO_PF | 20)
|
||||
#define PE21_PF_SD1_D3 (GPIO_PORTE | GPIO_PF | 21)
|
||||
#define PE22_PF_SD1_CMD (GPIO_PORTE | GPIO_PF | 22)
|
||||
#define PE23_PF_SD1_CLK (GPIO_PORTE | GPIO_PF | 23)
|
||||
#define PF0_PF_NRFB (GPIO_PORTF | GPIO_PF | 0)
|
||||
#define PF2_PF_NFWP (GPIO_PORTF | GPIO_PF | 2)
|
||||
#define PF4_PF_NFALE (GPIO_PORTF | GPIO_PF | 4)
|
||||
#define PF5_PF_NFRE (GPIO_PORTF | GPIO_PF | 5)
|
||||
#define PF6_PF_NFWE (GPIO_PORTF | GPIO_PF | 6)
|
||||
#define PF15_PF_CLKO (GPIO_PORTF | GPIO_PF | 15)
|
||||
#define PF21_PF_CS4 (GPIO_PORTF | GPIO_PF | 21)
|
||||
#define PF22_PF_CS5 (GPIO_PORTF | GPIO_PF | 22)
|
||||
|
||||
/* Alternate GPIO pin functions */
|
||||
|
||||
#define PB26_AF_UART4_RTS (GPIO_PORTB | GPIO_AF | GPIO_IN | 26)
|
||||
#define PB28_AF_UART4_TXD (GPIO_PORTB | GPIO_AF | GPIO_OUT | 28)
|
||||
#define PB29_AF_UART4_CTS (GPIO_PORTB | GPIO_AF | GPIO_OUT | 29)
|
||||
#define PB31_AF_UART4_RXD (GPIO_PORTB | GPIO_AF | GPIO_IN | 31)
|
||||
#define PC28_AF_SLCDC2_D0 (GPIO_PORTC | GPIO_AF | 28)
|
||||
#define PC29_AF_SLCDC2_RS (GPIO_PORTC | GPIO_AF | 29)
|
||||
#define PC30_AF_SLCDC2_CS (GPIO_PORTC | GPIO_AF | 30)
|
||||
#define PC31_AF_SLCDC2_CLK (GPIO_PORTC | GPIO_AF | 31)
|
||||
#define PD19_AF_USBH2_DATA4 (GPIO_PORTD | GPIO_AF | 19)
|
||||
#define PD20_AF_USBH2_DATA3 (GPIO_PORTD | GPIO_AF | 20)
|
||||
#define PD21_AF_USBH2_DATA6 (GPIO_PORTD | GPIO_AF | 21)
|
||||
#define PD22_AF_USBH2_DATA0 (GPIO_PORTD | GPIO_AF | 22)
|
||||
#define PD23_AF_USBH2_DATA2 (GPIO_PORTD | GPIO_AF | 23)
|
||||
#define PD24_AF_USBH2_DATA1 (GPIO_PORTD | GPIO_AF | 24)
|
||||
#define PD26_AF_USBH2_DATA5 (GPIO_PORTD | GPIO_AF | 26)
|
||||
#define PE0_AF_KP_COL6 (GPIO_PORTE | GPIO_AF | 0)
|
||||
#define PE1_AF_KP_ROW6 (GPIO_PORTE | GPIO_AF | 1)
|
||||
#define PE2_AF_KP_ROW7 (GPIO_PORTE | GPIO_AF | 2)
|
||||
#define PE3_AF_KP_COL7 (GPIO_PORTE | GPIO_AF | 3)
|
||||
#define PE4_AF_KP_ROW7 (GPIO_PORTE | GPIO_AF | 4)
|
||||
#define PE6_AF_KP_COL6 (GPIO_PORTE | GPIO_AF | 6)
|
||||
#define PE7_AF_KP_ROW6 (GPIO_PORTE | GPIO_AF | 7)
|
||||
#define PE16_AF_OWIRE (GPIO_PORTE | GPIO_AF | 16)
|
||||
#define PE18_AF_CSPI3_MISO (GPIO_PORTE | GPIO_AF | GPIO_IN | 18)
|
||||
#define PE21_AF_CSPI3_SS (GPIO_PORTE | GPIO_AF | GPIO_OUT | 21)
|
||||
#define PE22_AF_CSPI3_MOSI (GPIO_PORTE | GPIO_AF | GPIO_OUT | 22)
|
||||
#define PE23_AF_CSPI3_SCLK (GPIO_PORTE | GPIO_AF | GPIO_OUT | 23)
|
||||
|
||||
/* AIN GPIO pin functions */
|
||||
|
||||
#define PA6_AIN_SLCDC1_DAT0 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 6)
|
||||
#define PA7_AIN_SLCDC1_DAT1 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 7)
|
||||
#define PA8_AIN_SLCDC1_DAT2 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 8)
|
||||
#define PA0_AIN_SLCDC1_DAT3 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 0)
|
||||
#define PA11_AIN_SLCDC1_DAT5 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 11)
|
||||
#define PA13_AIN_SLCDC1_DAT7 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 13)
|
||||
#define PA15_AIN_SLCDC1_DAT9 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 15)
|
||||
#define PA17_AIN_SLCDC1_DAT11 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 17)
|
||||
#define PA19_AIN_SLCDC1_DAT13 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 19)
|
||||
#define PA21_AIN_SLCDC1_DAT15 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 21)
|
||||
#define PA22_AIN_EXT_DMAGRANT (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 22)
|
||||
#define PA24_AIN_SLCDC1_D0 (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 24)
|
||||
#define PA25_AIN_SLCDC1_RS (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 25)
|
||||
#define PA26_AIN_SLCDC1_CS (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 26)
|
||||
#define PA27_AIN_SLCDC1_CLK (GPIO_PORTA | GPIO_AIN | GPIO_OUT | 27)
|
||||
#define PB6_AIN_SLCDC1_D0 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 6)
|
||||
#define PB7_AIN_SLCDC1_RS (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 7)
|
||||
#define PB8_AIN_SLCDC1_CS (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 8)
|
||||
#define PB9_AIN_SLCDC1_CLK (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 9)
|
||||
#define PB25_AIN_SLCDC1_DAT0 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 25)
|
||||
#define PB26_AIN_SLCDC1_DAT1 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 26)
|
||||
#define PB27_AIN_SLCDC1_DAT2 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 27)
|
||||
#define PB28_AIN_SLCDC1_DAT3 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 28)
|
||||
#define PB29_AIN_SLCDC1_DAT4 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 29)
|
||||
#define PB30_AIN_SLCDC1_DAT5 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 30)
|
||||
#define PB31_AIN_SLCDC1_DAT6 (GPIO_PORTB | GPIO_AIN | GPIO_OUT | 31)
|
||||
#define PC5_AIN_SLCDC1_DAT7 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 5)
|
||||
#define PC6_AIN_SLCDC1_DAT8 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 6)
|
||||
#define PC7_AIN_SLCDC1_DAT9 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 7)
|
||||
#define PC8_AIN_SLCDC1_DAT10 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 8)
|
||||
#define PC9_AIN_SLCDC1_DAT11 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 9)
|
||||
#define PC10_AIN_SLCDC1_DAT12 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 10)
|
||||
#define PC11_AIN_SLCDC1_DAT13 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 11)
|
||||
#define PC12_AIN_SLCDC1_DAT14 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 12)
|
||||
#define PC13_AIN_SLCDC1_DAT15 (GPIO_PORTC | GPIO_AIN | GPIO_OUT | 13)
|
||||
#define PE5_AIN_PC_SPKOUT (GPIO_PORTE | GPIO_AIN | GPIO_OUT | 5)
|
||||
|
||||
/* BIN GPIO pin functions */
|
||||
|
||||
#define PE5_BIN_TOUT2 (GPIO_PORTE | GPIO_BIN | GPIO_OUT | 5)
|
||||
|
||||
/* CIN GPIO pin functions */
|
||||
|
||||
#define PA14_CIN_SLCDC1_DAT0 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 14)
|
||||
#define PA15_CIN_SLCDC1_DAT1 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 15)
|
||||
#define PA16_CIN_SLCDC1_DAT2 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 16)
|
||||
#define PA17_CIN_SLCDC1_DAT3 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 17)
|
||||
#define PA18_CIN_SLCDC1_DAT4 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 18)
|
||||
#define PA19_CIN_SLCDC1_DAT5 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 19)
|
||||
#define PA20_CIN_SLCDC1_DAT6 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 20)
|
||||
#define PA21_CIN_SLCDC1_DAT7 (GPIO_PORTA | GPIO_CIN | GPIO_OUT | 21)
|
||||
#define PB30_CIN_UART4_CTS (GPIO_PORTB | GPIO_CIN | GPIO_OUT | 30)
|
||||
#define PE5_CIN_TOUT3 (GPIO_PORTE | GPIO_CIN | GPIO_OUT | 5)
|
||||
|
||||
/* AOUT GPIO pin functions */
|
||||
|
||||
#define PB29_AOUT_UART4_RXD (GPIO_PORTB | GPIO_AOUT | GPIO_IN | 29)
|
||||
#define PB31_AOUT_UART4_RTS (GPIO_PORTB | GPIO_AOUT | GPIO_IN | 31)
|
||||
#define PC8_AOUT_USBOTG_TXR_INT (GPIO_PORTC | GPIO_AOUT | GPIO_IN | 8)
|
||||
#define PC15_AOUT_WKGD (GPIO_PORTC | GPIO_AOUT | GPIO_IN | 15)
|
||||
#define PF21_AOUT_DTACK (GPIO_PORTF | GPIO_AOUT | GPIO_IN | 21)
|
||||
|
||||
#endif /* ifndef __MACH_IOMUX_MX2x_H__ */
|
@ -1,706 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright 2004-2006 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
||||
*/
|
||||
#ifndef __MACH_IOMUX_MX3_H__
|
||||
#define __MACH_IOMUX_MX3_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
/*
|
||||
* various IOMUX output functions
|
||||
*/
|
||||
|
||||
#define IOMUX_OCONFIG_GPIO (0 << 4) /* used as GPIO */
|
||||
#define IOMUX_OCONFIG_FUNC (1 << 4) /* used as function */
|
||||
#define IOMUX_OCONFIG_ALT1 (2 << 4) /* used as alternate function 1 */
|
||||
#define IOMUX_OCONFIG_ALT2 (3 << 4) /* used as alternate function 2 */
|
||||
#define IOMUX_OCONFIG_ALT3 (4 << 4) /* used as alternate function 3 */
|
||||
#define IOMUX_OCONFIG_ALT4 (5 << 4) /* used as alternate function 4 */
|
||||
#define IOMUX_OCONFIG_ALT5 (6 << 4) /* used as alternate function 5 */
|
||||
#define IOMUX_OCONFIG_ALT6 (7 << 4) /* used as alternate function 6 */
|
||||
#define IOMUX_ICONFIG_NONE 0 /* not configured for input */
|
||||
#define IOMUX_ICONFIG_GPIO 1 /* used as GPIO */
|
||||
#define IOMUX_ICONFIG_FUNC 2 /* used as function */
|
||||
#define IOMUX_ICONFIG_ALT1 4 /* used as alternate function 1 */
|
||||
#define IOMUX_ICONFIG_ALT2 8 /* used as alternate function 2 */
|
||||
|
||||
#define IOMUX_CONFIG_GPIO (IOMUX_OCONFIG_GPIO | IOMUX_ICONFIG_GPIO)
|
||||
#define IOMUX_CONFIG_FUNC (IOMUX_OCONFIG_FUNC | IOMUX_ICONFIG_FUNC)
|
||||
#define IOMUX_CONFIG_ALT1 (IOMUX_OCONFIG_ALT1 | IOMUX_ICONFIG_ALT1)
|
||||
#define IOMUX_CONFIG_ALT2 (IOMUX_OCONFIG_ALT2 | IOMUX_ICONFIG_ALT2)
|
||||
|
||||
/*
|
||||
* various IOMUX pad functions
|
||||
*/
|
||||
enum iomux_pad_config {
|
||||
PAD_CTL_NOLOOPBACK = 0x0 << 9,
|
||||
PAD_CTL_LOOPBACK = 0x1 << 9,
|
||||
PAD_CTL_PKE_NONE = 0x0 << 8,
|
||||
PAD_CTL_PKE_ENABLE = 0x1 << 8,
|
||||
PAD_CTL_PUE_KEEPER = 0x0 << 7,
|
||||
PAD_CTL_PUE_PUD = 0x1 << 7,
|
||||
PAD_CTL_100K_PD = 0x0 << 5,
|
||||
PAD_CTL_100K_PU = 0x1 << 5,
|
||||
PAD_CTL_47K_PU = 0x2 << 5,
|
||||
PAD_CTL_22K_PU = 0x3 << 5,
|
||||
PAD_CTL_HYS_CMOS = 0x0 << 4,
|
||||
PAD_CTL_HYS_SCHMITZ = 0x1 << 4,
|
||||
PAD_CTL_ODE_CMOS = 0x0 << 3,
|
||||
PAD_CTL_ODE_OpenDrain = 0x1 << 3,
|
||||
PAD_CTL_DRV_NORMAL = 0x0 << 1,
|
||||
PAD_CTL_DRV_HIGH = 0x1 << 1,
|
||||
PAD_CTL_DRV_MAX = 0x2 << 1,
|
||||
PAD_CTL_SRE_SLOW = 0x0 << 0,
|
||||
PAD_CTL_SRE_FAST = 0x1 << 0
|
||||
};
|
||||
|
||||
/*
|
||||
* various IOMUX general purpose functions
|
||||
*/
|
||||
enum iomux_gp_func {
|
||||
MUX_PGP_FIRI = 1 << 0,
|
||||
MUX_DDR_MODE = 1 << 1,
|
||||
MUX_PGP_CSPI_BB = 1 << 2,
|
||||
MUX_PGP_ATA_1 = 1 << 3,
|
||||
MUX_PGP_ATA_2 = 1 << 4,
|
||||
MUX_PGP_ATA_3 = 1 << 5,
|
||||
MUX_PGP_ATA_4 = 1 << 6,
|
||||
MUX_PGP_ATA_5 = 1 << 7,
|
||||
MUX_PGP_ATA_6 = 1 << 8,
|
||||
MUX_PGP_ATA_7 = 1 << 9,
|
||||
MUX_PGP_ATA_8 = 1 << 10,
|
||||
MUX_PGP_UH2 = 1 << 11,
|
||||
MUX_SDCTL_CSD0_SEL = 1 << 12,
|
||||
MUX_SDCTL_CSD1_SEL = 1 << 13,
|
||||
MUX_CSPI1_UART3 = 1 << 14,
|
||||
MUX_EXTDMAREQ2_MBX_SEL = 1 << 15,
|
||||
MUX_TAMPER_DETECT_EN = 1 << 16,
|
||||
MUX_PGP_USB_4WIRE = 1 << 17,
|
||||
MUX_PGP_USB_COMMON = 1 << 18,
|
||||
MUX_SDHC_MEMSTICK1 = 1 << 19,
|
||||
MUX_SDHC_MEMSTICK2 = 1 << 20,
|
||||
MUX_PGP_SPLL_BYP = 1 << 21,
|
||||
MUX_PGP_UPLL_BYP = 1 << 22,
|
||||
MUX_PGP_MSHC1_CLK_SEL = 1 << 23,
|
||||
MUX_PGP_MSHC2_CLK_SEL = 1 << 24,
|
||||
MUX_CSPI3_UART5_SEL = 1 << 25,
|
||||
MUX_PGP_ATA_9 = 1 << 26,
|
||||
MUX_PGP_USB_SUSPEND = 1 << 27,
|
||||
MUX_PGP_USB_OTG_LOOPBACK = 1 << 28,
|
||||
MUX_PGP_USB_HS1_LOOPBACK = 1 << 29,
|
||||
MUX_PGP_USB_HS2_LOOPBACK = 1 << 30,
|
||||
MUX_CLKO_DDR_MODE = 1 << 31,
|
||||
};
|
||||
|
||||
/*
|
||||
* setups a single pin:
|
||||
* - reserves the pin so that it is not claimed by another driver
|
||||
* - setups the iomux according to the configuration
|
||||
* - if the pin is configured as a GPIO, we claim it through kernel gpiolib
|
||||
*/
|
||||
int mxc_iomux_alloc_pin(unsigned int pin, const char *label);
|
||||
/*
|
||||
* setups multiple pins
|
||||
* convenient way to call the above function with tables
|
||||
*/
|
||||
int mxc_iomux_setup_multiple_pins(const unsigned int *pin_list, unsigned count,
|
||||
const char *label);
|
||||
|
||||
/*
|
||||
* releases a single pin:
|
||||
* - make it available for a future use by another driver
|
||||
* - frees the GPIO if the pin was configured as GPIO
|
||||
* - DOES NOT reconfigure the IOMUX in its reset state
|
||||
*/
|
||||
void mxc_iomux_release_pin(unsigned int pin);
|
||||
/*
|
||||
* releases multiple pins
|
||||
* convenvient way to call the above function with tables
|
||||
*/
|
||||
void mxc_iomux_release_multiple_pins(const unsigned int *pin_list, int count);
|
||||
|
||||
/*
|
||||
* This function enables/disables the general purpose function for a particular
|
||||
* signal.
|
||||
*/
|
||||
void mxc_iomux_set_gpr(enum iomux_gp_func, bool en);
|
||||
|
||||
/*
|
||||
* This function only configures the iomux hardware.
|
||||
* It is called by the setup functions and should not be called directly anymore.
|
||||
* It is here visible for backward compatibility
|
||||
*/
|
||||
void mxc_iomux_mode(unsigned int pin_mode);
|
||||
|
||||
#define IOMUX_PADNUM_MASK 0x1ff
|
||||
#define IOMUX_GPIONUM_SHIFT 9
|
||||
#define IOMUX_GPIONUM_MASK (0xff << IOMUX_GPIONUM_SHIFT)
|
||||
#define IOMUX_MODE_SHIFT 17
|
||||
#define IOMUX_MODE_MASK (0xff << IOMUX_MODE_SHIFT)
|
||||
|
||||
#define IOMUX_PIN(gpionum, padnum) \
|
||||
(((gpionum << IOMUX_GPIONUM_SHIFT) & IOMUX_GPIONUM_MASK) | \
|
||||
(padnum & IOMUX_PADNUM_MASK))
|
||||
|
||||
#define IOMUX_MODE(pin, mode) (pin | mode << IOMUX_MODE_SHIFT)
|
||||
|
||||
#define IOMUX_TO_GPIO(iomux_pin) \
|
||||
((iomux_pin & IOMUX_GPIONUM_MASK) >> IOMUX_GPIONUM_SHIFT)
|
||||
|
||||
/*
|
||||
* This enumeration is constructed based on the Section
|
||||
* "sw_pad_ctl & sw_mux_ctl details" of the MX31 IC Spec. Each enumerated
|
||||
* value is constructed based on the rules described above.
|
||||
*/
|
||||
|
||||
enum iomux_pins {
|
||||
MX31_PIN_TTM_PAD = IOMUX_PIN(0xff, 0),
|
||||
MX31_PIN_CSPI3_SPI_RDY = IOMUX_PIN(0xff, 1),
|
||||
MX31_PIN_CSPI3_SCLK = IOMUX_PIN(0xff, 2),
|
||||
MX31_PIN_CSPI3_MISO = IOMUX_PIN(0xff, 3),
|
||||
MX31_PIN_CSPI3_MOSI = IOMUX_PIN(0xff, 4),
|
||||
MX31_PIN_CLKSS = IOMUX_PIN(0xff, 5),
|
||||
MX31_PIN_CE_CONTROL = IOMUX_PIN(0xff, 6),
|
||||
MX31_PIN_ATA_RESET_B = IOMUX_PIN(95, 7),
|
||||
MX31_PIN_ATA_DMACK = IOMUX_PIN(94, 8),
|
||||
MX31_PIN_ATA_DIOW = IOMUX_PIN(93, 9),
|
||||
MX31_PIN_ATA_DIOR = IOMUX_PIN(92, 10),
|
||||
MX31_PIN_ATA_CS1 = IOMUX_PIN(91, 11),
|
||||
MX31_PIN_ATA_CS0 = IOMUX_PIN(90, 12),
|
||||
MX31_PIN_SD1_DATA3 = IOMUX_PIN(63, 13),
|
||||
MX31_PIN_SD1_DATA2 = IOMUX_PIN(62, 14),
|
||||
MX31_PIN_SD1_DATA1 = IOMUX_PIN(61, 15),
|
||||
MX31_PIN_SD1_DATA0 = IOMUX_PIN(60, 16),
|
||||
MX31_PIN_SD1_CLK = IOMUX_PIN(59, 17),
|
||||
MX31_PIN_SD1_CMD = IOMUX_PIN(58, 18),
|
||||
MX31_PIN_D3_SPL = IOMUX_PIN(0xff, 19),
|
||||
MX31_PIN_D3_CLS = IOMUX_PIN(0xff, 20),
|
||||
MX31_PIN_D3_REV = IOMUX_PIN(0xff, 21),
|
||||
MX31_PIN_CONTRAST = IOMUX_PIN(0xff, 22),
|
||||
MX31_PIN_VSYNC3 = IOMUX_PIN(0xff, 23),
|
||||
MX31_PIN_READ = IOMUX_PIN(0xff, 24),
|
||||
MX31_PIN_WRITE = IOMUX_PIN(0xff, 25),
|
||||
MX31_PIN_PAR_RS = IOMUX_PIN(0xff, 26),
|
||||
MX31_PIN_SER_RS = IOMUX_PIN(89, 27),
|
||||
MX31_PIN_LCS1 = IOMUX_PIN(88, 28),
|
||||
MX31_PIN_LCS0 = IOMUX_PIN(87, 29),
|
||||
MX31_PIN_SD_D_CLK = IOMUX_PIN(86, 30),
|
||||
MX31_PIN_SD_D_IO = IOMUX_PIN(85, 31),
|
||||
MX31_PIN_SD_D_I = IOMUX_PIN(84, 32),
|
||||
MX31_PIN_DRDY0 = IOMUX_PIN(0xff, 33),
|
||||
MX31_PIN_FPSHIFT = IOMUX_PIN(0xff, 34),
|
||||
MX31_PIN_HSYNC = IOMUX_PIN(0xff, 35),
|
||||
MX31_PIN_VSYNC0 = IOMUX_PIN(0xff, 36),
|
||||
MX31_PIN_LD17 = IOMUX_PIN(0xff, 37),
|
||||
MX31_PIN_LD16 = IOMUX_PIN(0xff, 38),
|
||||
MX31_PIN_LD15 = IOMUX_PIN(0xff, 39),
|
||||
MX31_PIN_LD14 = IOMUX_PIN(0xff, 40),
|
||||
MX31_PIN_LD13 = IOMUX_PIN(0xff, 41),
|
||||
MX31_PIN_LD12 = IOMUX_PIN(0xff, 42),
|
||||
MX31_PIN_LD11 = IOMUX_PIN(0xff, 43),
|
||||
MX31_PIN_LD10 = IOMUX_PIN(0xff, 44),
|
||||
MX31_PIN_LD9 = IOMUX_PIN(0xff, 45),
|
||||
MX31_PIN_LD8 = IOMUX_PIN(0xff, 46),
|
||||
MX31_PIN_LD7 = IOMUX_PIN(0xff, 47),
|
||||
MX31_PIN_LD6 = IOMUX_PIN(0xff, 48),
|
||||
MX31_PIN_LD5 = IOMUX_PIN(0xff, 49),
|
||||
MX31_PIN_LD4 = IOMUX_PIN(0xff, 50),
|
||||
MX31_PIN_LD3 = IOMUX_PIN(0xff, 51),
|
||||
MX31_PIN_LD2 = IOMUX_PIN(0xff, 52),
|
||||
MX31_PIN_LD1 = IOMUX_PIN(0xff, 53),
|
||||
MX31_PIN_LD0 = IOMUX_PIN(0xff, 54),
|
||||
MX31_PIN_USBH2_DATA1 = IOMUX_PIN(0xff, 55),
|
||||
MX31_PIN_USBH2_DATA0 = IOMUX_PIN(0xff, 56),
|
||||
MX31_PIN_USBH2_NXT = IOMUX_PIN(0xff, 57),
|
||||
MX31_PIN_USBH2_STP = IOMUX_PIN(0xff, 58),
|
||||
MX31_PIN_USBH2_DIR = IOMUX_PIN(0xff, 59),
|
||||
MX31_PIN_USBH2_CLK = IOMUX_PIN(0xff, 60),
|
||||
MX31_PIN_USBOTG_DATA7 = IOMUX_PIN(0xff, 61),
|
||||
MX31_PIN_USBOTG_DATA6 = IOMUX_PIN(0xff, 62),
|
||||
MX31_PIN_USBOTG_DATA5 = IOMUX_PIN(0xff, 63),
|
||||
MX31_PIN_USBOTG_DATA4 = IOMUX_PIN(0xff, 64),
|
||||
MX31_PIN_USBOTG_DATA3 = IOMUX_PIN(0xff, 65),
|
||||
MX31_PIN_USBOTG_DATA2 = IOMUX_PIN(0xff, 66),
|
||||
MX31_PIN_USBOTG_DATA1 = IOMUX_PIN(0xff, 67),
|
||||
MX31_PIN_USBOTG_DATA0 = IOMUX_PIN(0xff, 68),
|
||||
MX31_PIN_USBOTG_NXT = IOMUX_PIN(0xff, 69),
|
||||
MX31_PIN_USBOTG_STP = IOMUX_PIN(0xff, 70),
|
||||
MX31_PIN_USBOTG_DIR = IOMUX_PIN(0xff, 71),
|
||||
MX31_PIN_USBOTG_CLK = IOMUX_PIN(0xff, 72),
|
||||
MX31_PIN_USB_BYP = IOMUX_PIN(31, 73),
|
||||
MX31_PIN_USB_OC = IOMUX_PIN(30, 74),
|
||||
MX31_PIN_USB_PWR = IOMUX_PIN(29, 75),
|
||||
MX31_PIN_SJC_MOD = IOMUX_PIN(0xff, 76),
|
||||
MX31_PIN_DE_B = IOMUX_PIN(0xff, 77),
|
||||
MX31_PIN_TRSTB = IOMUX_PIN(0xff, 78),
|
||||
MX31_PIN_TDO = IOMUX_PIN(0xff, 79),
|
||||
MX31_PIN_TDI = IOMUX_PIN(0xff, 80),
|
||||
MX31_PIN_TMS = IOMUX_PIN(0xff, 81),
|
||||
MX31_PIN_TCK = IOMUX_PIN(0xff, 82),
|
||||
MX31_PIN_RTCK = IOMUX_PIN(0xff, 83),
|
||||
MX31_PIN_KEY_COL7 = IOMUX_PIN(57, 84),
|
||||
MX31_PIN_KEY_COL6 = IOMUX_PIN(56, 85),
|
||||
MX31_PIN_KEY_COL5 = IOMUX_PIN(55, 86),
|
||||
MX31_PIN_KEY_COL4 = IOMUX_PIN(54, 87),
|
||||
MX31_PIN_KEY_COL3 = IOMUX_PIN(0xff, 88),
|
||||
MX31_PIN_KEY_COL2 = IOMUX_PIN(0xff, 89),
|
||||
MX31_PIN_KEY_COL1 = IOMUX_PIN(0xff, 90),
|
||||
MX31_PIN_KEY_COL0 = IOMUX_PIN(0xff, 91),
|
||||
MX31_PIN_KEY_ROW7 = IOMUX_PIN(53, 92),
|
||||
MX31_PIN_KEY_ROW6 = IOMUX_PIN(52, 93),
|
||||
MX31_PIN_KEY_ROW5 = IOMUX_PIN(51, 94),
|
||||
MX31_PIN_KEY_ROW4 = IOMUX_PIN(50, 95),
|
||||
MX31_PIN_KEY_ROW3 = IOMUX_PIN(0xff, 96),
|
||||
MX31_PIN_KEY_ROW2 = IOMUX_PIN(0xff, 97),
|
||||
MX31_PIN_KEY_ROW1 = IOMUX_PIN(0xff, 98),
|
||||
MX31_PIN_KEY_ROW0 = IOMUX_PIN(0xff, 99),
|
||||
MX31_PIN_BATT_LINE = IOMUX_PIN(49, 100),
|
||||
MX31_PIN_CTS2 = IOMUX_PIN(0xff, 101),
|
||||
MX31_PIN_RTS2 = IOMUX_PIN(0xff, 102),
|
||||
MX31_PIN_TXD2 = IOMUX_PIN(28, 103),
|
||||
MX31_PIN_RXD2 = IOMUX_PIN(27, 104),
|
||||
MX31_PIN_DTR_DCE2 = IOMUX_PIN(48, 105),
|
||||
MX31_PIN_DCD_DTE1 = IOMUX_PIN(47, 106),
|
||||
MX31_PIN_RI_DTE1 = IOMUX_PIN(46, 107),
|
||||
MX31_PIN_DSR_DTE1 = IOMUX_PIN(45, 108),
|
||||
MX31_PIN_DTR_DTE1 = IOMUX_PIN(44, 109),
|
||||
MX31_PIN_DCD_DCE1 = IOMUX_PIN(43, 110),
|
||||
MX31_PIN_RI_DCE1 = IOMUX_PIN(42, 111),
|
||||
MX31_PIN_DSR_DCE1 = IOMUX_PIN(41, 112),
|
||||
MX31_PIN_DTR_DCE1 = IOMUX_PIN(40, 113),
|
||||
MX31_PIN_CTS1 = IOMUX_PIN(39, 114),
|
||||
MX31_PIN_RTS1 = IOMUX_PIN(38, 115),
|
||||
MX31_PIN_TXD1 = IOMUX_PIN(37, 116),
|
||||
MX31_PIN_RXD1 = IOMUX_PIN(36, 117),
|
||||
MX31_PIN_CSPI2_SPI_RDY = IOMUX_PIN(0xff, 118),
|
||||
MX31_PIN_CSPI2_SCLK = IOMUX_PIN(0xff, 119),
|
||||
MX31_PIN_CSPI2_SS2 = IOMUX_PIN(0xff, 120),
|
||||
MX31_PIN_CSPI2_SS1 = IOMUX_PIN(0xff, 121),
|
||||
MX31_PIN_CSPI2_SS0 = IOMUX_PIN(0xff, 122),
|
||||
MX31_PIN_CSPI2_MISO = IOMUX_PIN(0xff, 123),
|
||||
MX31_PIN_CSPI2_MOSI = IOMUX_PIN(0xff, 124),
|
||||
MX31_PIN_CSPI1_SPI_RDY = IOMUX_PIN(0xff, 125),
|
||||
MX31_PIN_CSPI1_SCLK = IOMUX_PIN(0xff, 126),
|
||||
MX31_PIN_CSPI1_SS2 = IOMUX_PIN(0xff, 127),
|
||||
MX31_PIN_CSPI1_SS1 = IOMUX_PIN(0xff, 128),
|
||||
MX31_PIN_CSPI1_SS0 = IOMUX_PIN(0xff, 129),
|
||||
MX31_PIN_CSPI1_MISO = IOMUX_PIN(0xff, 130),
|
||||
MX31_PIN_CSPI1_MOSI = IOMUX_PIN(0xff, 131),
|
||||
MX31_PIN_SFS6 = IOMUX_PIN(26, 132),
|
||||
MX31_PIN_SCK6 = IOMUX_PIN(25, 133),
|
||||
MX31_PIN_SRXD6 = IOMUX_PIN(24, 134),
|
||||
MX31_PIN_STXD6 = IOMUX_PIN(23, 135),
|
||||
MX31_PIN_SFS5 = IOMUX_PIN(0xff, 136),
|
||||
MX31_PIN_SCK5 = IOMUX_PIN(0xff, 137),
|
||||
MX31_PIN_SRXD5 = IOMUX_PIN(22, 138),
|
||||
MX31_PIN_STXD5 = IOMUX_PIN(21, 139),
|
||||
MX31_PIN_SFS4 = IOMUX_PIN(0xff, 140),
|
||||
MX31_PIN_SCK4 = IOMUX_PIN(0xff, 141),
|
||||
MX31_PIN_SRXD4 = IOMUX_PIN(20, 142),
|
||||
MX31_PIN_STXD4 = IOMUX_PIN(19, 143),
|
||||
MX31_PIN_SFS3 = IOMUX_PIN(0xff, 144),
|
||||
MX31_PIN_SCK3 = IOMUX_PIN(0xff, 145),
|
||||
MX31_PIN_SRXD3 = IOMUX_PIN(18, 146),
|
||||
MX31_PIN_STXD3 = IOMUX_PIN(17, 147),
|
||||
MX31_PIN_I2C_DAT = IOMUX_PIN(0xff, 148),
|
||||
MX31_PIN_I2C_CLK = IOMUX_PIN(0xff, 149),
|
||||
MX31_PIN_CSI_PIXCLK = IOMUX_PIN(83, 150),
|
||||
MX31_PIN_CSI_HSYNC = IOMUX_PIN(82, 151),
|
||||
MX31_PIN_CSI_VSYNC = IOMUX_PIN(81, 152),
|
||||
MX31_PIN_CSI_MCLK = IOMUX_PIN(80, 153),
|
||||
MX31_PIN_CSI_D15 = IOMUX_PIN(79, 154),
|
||||
MX31_PIN_CSI_D14 = IOMUX_PIN(78, 155),
|
||||
MX31_PIN_CSI_D13 = IOMUX_PIN(77, 156),
|
||||
MX31_PIN_CSI_D12 = IOMUX_PIN(76, 157),
|
||||
MX31_PIN_CSI_D11 = IOMUX_PIN(75, 158),
|
||||
MX31_PIN_CSI_D10 = IOMUX_PIN(74, 159),
|
||||
MX31_PIN_CSI_D9 = IOMUX_PIN(73, 160),
|
||||
MX31_PIN_CSI_D8 = IOMUX_PIN(72, 161),
|
||||
MX31_PIN_CSI_D7 = IOMUX_PIN(71, 162),
|
||||
MX31_PIN_CSI_D6 = IOMUX_PIN(70, 163),
|
||||
MX31_PIN_CSI_D5 = IOMUX_PIN(69, 164),
|
||||
MX31_PIN_CSI_D4 = IOMUX_PIN(68, 165),
|
||||
MX31_PIN_M_GRANT = IOMUX_PIN(0xff, 166),
|
||||
MX31_PIN_M_REQUEST = IOMUX_PIN(0xff, 167),
|
||||
MX31_PIN_PC_POE = IOMUX_PIN(0xff, 168),
|
||||
MX31_PIN_PC_RW_B = IOMUX_PIN(0xff, 169),
|
||||
MX31_PIN_IOIS16 = IOMUX_PIN(0xff, 170),
|
||||
MX31_PIN_PC_RST = IOMUX_PIN(0xff, 171),
|
||||
MX31_PIN_PC_BVD2 = IOMUX_PIN(0xff, 172),
|
||||
MX31_PIN_PC_BVD1 = IOMUX_PIN(0xff, 173),
|
||||
MX31_PIN_PC_VS2 = IOMUX_PIN(0xff, 174),
|
||||
MX31_PIN_PC_VS1 = IOMUX_PIN(0xff, 175),
|
||||
MX31_PIN_PC_PWRON = IOMUX_PIN(0xff, 176),
|
||||
MX31_PIN_PC_READY = IOMUX_PIN(0xff, 177),
|
||||
MX31_PIN_PC_WAIT_B = IOMUX_PIN(0xff, 178),
|
||||
MX31_PIN_PC_CD2_B = IOMUX_PIN(0xff, 179),
|
||||
MX31_PIN_PC_CD1_B = IOMUX_PIN(0xff, 180),
|
||||
MX31_PIN_D0 = IOMUX_PIN(0xff, 181),
|
||||
MX31_PIN_D1 = IOMUX_PIN(0xff, 182),
|
||||
MX31_PIN_D2 = IOMUX_PIN(0xff, 183),
|
||||
MX31_PIN_D3 = IOMUX_PIN(0xff, 184),
|
||||
MX31_PIN_D4 = IOMUX_PIN(0xff, 185),
|
||||
MX31_PIN_D5 = IOMUX_PIN(0xff, 186),
|
||||
MX31_PIN_D6 = IOMUX_PIN(0xff, 187),
|
||||
MX31_PIN_D7 = IOMUX_PIN(0xff, 188),
|
||||
MX31_PIN_D8 = IOMUX_PIN(0xff, 189),
|
||||
MX31_PIN_D9 = IOMUX_PIN(0xff, 190),
|
||||
MX31_PIN_D10 = IOMUX_PIN(0xff, 191),
|
||||
MX31_PIN_D11 = IOMUX_PIN(0xff, 192),
|
||||
MX31_PIN_D12 = IOMUX_PIN(0xff, 193),
|
||||
MX31_PIN_D13 = IOMUX_PIN(0xff, 194),
|
||||
MX31_PIN_D14 = IOMUX_PIN(0xff, 195),
|
||||
MX31_PIN_D15 = IOMUX_PIN(0xff, 196),
|
||||
MX31_PIN_NFRB = IOMUX_PIN(16, 197),
|
||||
MX31_PIN_NFCE_B = IOMUX_PIN(15, 198),
|
||||
MX31_PIN_NFWP_B = IOMUX_PIN(14, 199),
|
||||
MX31_PIN_NFCLE = IOMUX_PIN(13, 200),
|
||||
MX31_PIN_NFALE = IOMUX_PIN(12, 201),
|
||||
MX31_PIN_NFRE_B = IOMUX_PIN(11, 202),
|
||||
MX31_PIN_NFWE_B = IOMUX_PIN(10, 203),
|
||||
MX31_PIN_SDQS3 = IOMUX_PIN(0xff, 204),
|
||||
MX31_PIN_SDQS2 = IOMUX_PIN(0xff, 205),
|
||||
MX31_PIN_SDQS1 = IOMUX_PIN(0xff, 206),
|
||||
MX31_PIN_SDQS0 = IOMUX_PIN(0xff, 207),
|
||||
MX31_PIN_SDCLK_B = IOMUX_PIN(0xff, 208),
|
||||
MX31_PIN_SDCLK = IOMUX_PIN(0xff, 209),
|
||||
MX31_PIN_SDCKE1 = IOMUX_PIN(0xff, 210),
|
||||
MX31_PIN_SDCKE0 = IOMUX_PIN(0xff, 211),
|
||||
MX31_PIN_SDWE = IOMUX_PIN(0xff, 212),
|
||||
MX31_PIN_CAS = IOMUX_PIN(0xff, 213),
|
||||
MX31_PIN_RAS = IOMUX_PIN(0xff, 214),
|
||||
MX31_PIN_RW = IOMUX_PIN(0xff, 215),
|
||||
MX31_PIN_BCLK = IOMUX_PIN(0xff, 216),
|
||||
MX31_PIN_LBA = IOMUX_PIN(0xff, 217),
|
||||
MX31_PIN_ECB = IOMUX_PIN(0xff, 218),
|
||||
MX31_PIN_CS5 = IOMUX_PIN(0xff, 219),
|
||||
MX31_PIN_CS4 = IOMUX_PIN(0xff, 220),
|
||||
MX31_PIN_CS3 = IOMUX_PIN(0xff, 221),
|
||||
MX31_PIN_CS2 = IOMUX_PIN(0xff, 222),
|
||||
MX31_PIN_CS1 = IOMUX_PIN(0xff, 223),
|
||||
MX31_PIN_CS0 = IOMUX_PIN(0xff, 224),
|
||||
MX31_PIN_OE = IOMUX_PIN(0xff, 225),
|
||||
MX31_PIN_EB1 = IOMUX_PIN(0xff, 226),
|
||||
MX31_PIN_EB0 = IOMUX_PIN(0xff, 227),
|
||||
MX31_PIN_DQM3 = IOMUX_PIN(0xff, 228),
|
||||
MX31_PIN_DQM2 = IOMUX_PIN(0xff, 229),
|
||||
MX31_PIN_DQM1 = IOMUX_PIN(0xff, 230),
|
||||
MX31_PIN_DQM0 = IOMUX_PIN(0xff, 231),
|
||||
MX31_PIN_SD31 = IOMUX_PIN(0xff, 232),
|
||||
MX31_PIN_SD30 = IOMUX_PIN(0xff, 233),
|
||||
MX31_PIN_SD29 = IOMUX_PIN(0xff, 234),
|
||||
MX31_PIN_SD28 = IOMUX_PIN(0xff, 235),
|
||||
MX31_PIN_SD27 = IOMUX_PIN(0xff, 236),
|
||||
MX31_PIN_SD26 = IOMUX_PIN(0xff, 237),
|
||||
MX31_PIN_SD25 = IOMUX_PIN(0xff, 238),
|
||||
MX31_PIN_SD24 = IOMUX_PIN(0xff, 239),
|
||||
MX31_PIN_SD23 = IOMUX_PIN(0xff, 240),
|
||||
MX31_PIN_SD22 = IOMUX_PIN(0xff, 241),
|
||||
MX31_PIN_SD21 = IOMUX_PIN(0xff, 242),
|
||||
MX31_PIN_SD20 = IOMUX_PIN(0xff, 243),
|
||||
MX31_PIN_SD19 = IOMUX_PIN(0xff, 244),
|
||||
MX31_PIN_SD18 = IOMUX_PIN(0xff, 245),
|
||||
MX31_PIN_SD17 = IOMUX_PIN(0xff, 246),
|
||||
MX31_PIN_SD16 = IOMUX_PIN(0xff, 247),
|
||||
MX31_PIN_SD15 = IOMUX_PIN(0xff, 248),
|
||||
MX31_PIN_SD14 = IOMUX_PIN(0xff, 249),
|
||||
MX31_PIN_SD13 = IOMUX_PIN(0xff, 250),
|
||||
MX31_PIN_SD12 = IOMUX_PIN(0xff, 251),
|
||||
MX31_PIN_SD11 = IOMUX_PIN(0xff, 252),
|
||||
MX31_PIN_SD10 = IOMUX_PIN(0xff, 253),
|
||||
MX31_PIN_SD9 = IOMUX_PIN(0xff, 254),
|
||||
MX31_PIN_SD8 = IOMUX_PIN(0xff, 255),
|
||||
MX31_PIN_SD7 = IOMUX_PIN(0xff, 256),
|
||||
MX31_PIN_SD6 = IOMUX_PIN(0xff, 257),
|
||||
MX31_PIN_SD5 = IOMUX_PIN(0xff, 258),
|
||||
MX31_PIN_SD4 = IOMUX_PIN(0xff, 259),
|
||||
MX31_PIN_SD3 = IOMUX_PIN(0xff, 260),
|
||||
MX31_PIN_SD2 = IOMUX_PIN(0xff, 261),
|
||||
MX31_PIN_SD1 = IOMUX_PIN(0xff, 262),
|
||||
MX31_PIN_SD0 = IOMUX_PIN(0xff, 263),
|
||||
MX31_PIN_SDBA0 = IOMUX_PIN(0xff, 264),
|
||||
MX31_PIN_SDBA1 = IOMUX_PIN(0xff, 265),
|
||||
MX31_PIN_A25 = IOMUX_PIN(0xff, 266),
|
||||
MX31_PIN_A24 = IOMUX_PIN(0xff, 267),
|
||||
MX31_PIN_A23 = IOMUX_PIN(0xff, 268),
|
||||
MX31_PIN_A22 = IOMUX_PIN(0xff, 269),
|
||||
MX31_PIN_A21 = IOMUX_PIN(0xff, 270),
|
||||
MX31_PIN_A20 = IOMUX_PIN(0xff, 271),
|
||||
MX31_PIN_A19 = IOMUX_PIN(0xff, 272),
|
||||
MX31_PIN_A18 = IOMUX_PIN(0xff, 273),
|
||||
MX31_PIN_A17 = IOMUX_PIN(0xff, 274),
|
||||
MX31_PIN_A16 = IOMUX_PIN(0xff, 275),
|
||||
MX31_PIN_A14 = IOMUX_PIN(0xff, 276),
|
||||
MX31_PIN_A15 = IOMUX_PIN(0xff, 277),
|
||||
MX31_PIN_A13 = IOMUX_PIN(0xff, 278),
|
||||
MX31_PIN_A12 = IOMUX_PIN(0xff, 279),
|
||||
MX31_PIN_A11 = IOMUX_PIN(0xff, 280),
|
||||
MX31_PIN_MA10 = IOMUX_PIN(0xff, 281),
|
||||
MX31_PIN_A10 = IOMUX_PIN(0xff, 282),
|
||||
MX31_PIN_A9 = IOMUX_PIN(0xff, 283),
|
||||
MX31_PIN_A8 = IOMUX_PIN(0xff, 284),
|
||||
MX31_PIN_A7 = IOMUX_PIN(0xff, 285),
|
||||
MX31_PIN_A6 = IOMUX_PIN(0xff, 286),
|
||||
MX31_PIN_A5 = IOMUX_PIN(0xff, 287),
|
||||
MX31_PIN_A4 = IOMUX_PIN(0xff, 288),
|
||||
MX31_PIN_A3 = IOMUX_PIN(0xff, 289),
|
||||
MX31_PIN_A2 = IOMUX_PIN(0xff, 290),
|
||||
MX31_PIN_A1 = IOMUX_PIN(0xff, 291),
|
||||
MX31_PIN_A0 = IOMUX_PIN(0xff, 292),
|
||||
MX31_PIN_VPG1 = IOMUX_PIN(0xff, 293),
|
||||
MX31_PIN_VPG0 = IOMUX_PIN(0xff, 294),
|
||||
MX31_PIN_DVFS1 = IOMUX_PIN(0xff, 295),
|
||||
MX31_PIN_DVFS0 = IOMUX_PIN(0xff, 296),
|
||||
MX31_PIN_VSTBY = IOMUX_PIN(0xff, 297),
|
||||
MX31_PIN_POWER_FAIL = IOMUX_PIN(0xff, 298),
|
||||
MX31_PIN_CKIL = IOMUX_PIN(0xff, 299),
|
||||
MX31_PIN_BOOT_MODE4 = IOMUX_PIN(0xff, 300),
|
||||
MX31_PIN_BOOT_MODE3 = IOMUX_PIN(0xff, 301),
|
||||
MX31_PIN_BOOT_MODE2 = IOMUX_PIN(0xff, 302),
|
||||
MX31_PIN_BOOT_MODE1 = IOMUX_PIN(0xff, 303),
|
||||
MX31_PIN_BOOT_MODE0 = IOMUX_PIN(0xff, 304),
|
||||
MX31_PIN_CLKO = IOMUX_PIN(0xff, 305),
|
||||
MX31_PIN_POR_B = IOMUX_PIN(0xff, 306),
|
||||
MX31_PIN_RESET_IN_B = IOMUX_PIN(0xff, 307),
|
||||
MX31_PIN_CKIH = IOMUX_PIN(0xff, 308),
|
||||
MX31_PIN_SIMPD0 = IOMUX_PIN(35, 309),
|
||||
MX31_PIN_SRX0 = IOMUX_PIN(34, 310),
|
||||
MX31_PIN_STX0 = IOMUX_PIN(33, 311),
|
||||
MX31_PIN_SVEN0 = IOMUX_PIN(32, 312),
|
||||
MX31_PIN_SRST0 = IOMUX_PIN(67, 313),
|
||||
MX31_PIN_SCLK0 = IOMUX_PIN(66, 314),
|
||||
MX31_PIN_GPIO3_1 = IOMUX_PIN(65, 315),
|
||||
MX31_PIN_GPIO3_0 = IOMUX_PIN(64, 316),
|
||||
MX31_PIN_GPIO1_6 = IOMUX_PIN( 6, 317),
|
||||
MX31_PIN_GPIO1_5 = IOMUX_PIN( 5, 318),
|
||||
MX31_PIN_GPIO1_4 = IOMUX_PIN( 4, 319),
|
||||
MX31_PIN_GPIO1_3 = IOMUX_PIN( 3, 320),
|
||||
MX31_PIN_GPIO1_2 = IOMUX_PIN( 2, 321),
|
||||
MX31_PIN_GPIO1_1 = IOMUX_PIN( 1, 322),
|
||||
MX31_PIN_GPIO1_0 = IOMUX_PIN( 0, 323),
|
||||
MX31_PIN_PWMO = IOMUX_PIN( 9, 324),
|
||||
MX31_PIN_WATCHDOG_RST = IOMUX_PIN(0xff, 325),
|
||||
MX31_PIN_COMPARE = IOMUX_PIN( 8, 326),
|
||||
MX31_PIN_CAPTURE = IOMUX_PIN( 7, 327),
|
||||
};
|
||||
|
||||
#define PIN_MAX 327
|
||||
#define NB_PORTS 12 /* NB_PINS/32, we chose 32 pins per "PORT" */
|
||||
|
||||
/*
|
||||
* Convenience values for use with mxc_iomux_mode()
|
||||
*
|
||||
* Format here is MX31_PIN_(pin name)__(function)
|
||||
*/
|
||||
#define MX31_PIN_CSPI3_MOSI__RXD3 IOMUX_MODE(MX31_PIN_CSPI3_MOSI, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI3_MISO__TXD3 IOMUX_MODE(MX31_PIN_CSPI3_MISO, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI3_SCLK__RTS3 IOMUX_MODE(MX31_PIN_CSPI3_SCLK, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI3_SPI_RDY__CTS3 IOMUX_MODE(MX31_PIN_CSPI3_SPI_RDY, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CTS1__CTS1 IOMUX_MODE(MX31_PIN_CTS1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_RTS1__RTS1 IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_RTS1__SFS IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_TXD1__TXD1 IOMUX_MODE(MX31_PIN_TXD1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_TXD1__SCK IOMUX_MODE(MX31_PIN_TXD1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_RXD1__RXD1 IOMUX_MODE(MX31_PIN_RXD1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_RXD1__STXDA IOMUX_MODE(MX31_PIN_RXD1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_DCD_DCE1__DCD_DCE1 IOMUX_MODE(MX31_PIN_DCD_DCE1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_RI_DCE1__RI_DCE1 IOMUX_MODE(MX31_PIN_RI_DCE1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_DSR_DCE1__DSR_DCE1 IOMUX_MODE(MX31_PIN_DSR_DCE1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_DTR_DCE1__DTR_DCE1 IOMUX_MODE(MX31_PIN_DTR_DCE1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_DTR_DCE1__SRXDA IOMUX_MODE(MX31_PIN_DTR_DCE1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_CTS2__CTS2 IOMUX_MODE(MX31_PIN_CTS2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_RTS2__RTS2 IOMUX_MODE(MX31_PIN_RTS2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_TXD2__TXD2 IOMUX_MODE(MX31_PIN_TXD2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_RXD2__RXD2 IOMUX_MODE(MX31_PIN_RXD2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_DCD_DTE1__DCD_DTE2 IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_RI_DTE1__RI_DTE2 IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_DSR_DTE1__DSR_DTE2 IOMUX_MODE(MX31_PIN_DSR_DTE1, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_DTR_DTE1__DTR_DTE2 IOMUX_MODE(MX31_PIN_DTR_DTE1, IOMUX_OCONFIG_ALT3 | IOMUX_ICONFIG_NONE)
|
||||
#define MX31_PIN_PC_RST__CTS5 IOMUX_MODE(MX31_PIN_PC_RST, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_PC_VS2__RTS5 IOMUX_MODE(MX31_PIN_PC_VS2, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_PC_BVD2__TXD5 IOMUX_MODE(MX31_PIN_PC_BVD2, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_PC_BVD1__RXD5 IOMUX_MODE(MX31_PIN_PC_BVD1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_CSPI1_MOSI__MOSI IOMUX_MODE(MX31_PIN_CSPI1_MOSI, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_MISO__MISO IOMUX_MODE(MX31_PIN_CSPI1_MISO, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_SCLK__SCLK IOMUX_MODE(MX31_PIN_CSPI1_SCLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_SPI_RDY__SPI_RDY IOMUX_MODE(MX31_PIN_CSPI1_SPI_RDY, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_SS0__SS0 IOMUX_MODE(MX31_PIN_CSPI1_SS0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_SS1__SS1 IOMUX_MODE(MX31_PIN_CSPI1_SS1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_SS2__SS2 IOMUX_MODE(MX31_PIN_CSPI1_SS2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_MOSI__MOSI IOMUX_MODE(MX31_PIN_CSPI2_MOSI, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_MOSI__SCL IOMUX_MODE(MX31_PIN_CSPI2_MOSI, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI2_MISO__MISO IOMUX_MODE(MX31_PIN_CSPI2_MISO, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_MISO__SDA IOMUX_MODE(MX31_PIN_CSPI2_MISO, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI2_SCLK__SCLK IOMUX_MODE(MX31_PIN_CSPI2_SCLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_SPI_RDY__SPI_RDY IOMUX_MODE(MX31_PIN_CSPI2_SPI_RDY, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_SS0__SS0 IOMUX_MODE(MX31_PIN_CSPI2_SS0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_SS1__SS1 IOMUX_MODE(MX31_PIN_CSPI2_SS1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI2_SS2__SS2 IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI3_MOSI__MOSI IOMUX_MODE(MX31_PIN_CSPI3_MOSI, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI3_MISO__MISO IOMUX_MODE(MX31_PIN_CSPI3_MISO, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI3_SCLK__SCLK IOMUX_MODE(MX31_PIN_CSPI3_SCLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI3_SPI_RDY__SPI_RDY IOMUX_MODE(MX31_PIN_CSPI3_SPI_RDY, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_BATT_LINE__OWIRE IOMUX_MODE(MX31_PIN_BATT_LINE, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CS4__CS4 IOMUX_MODE(MX31_PIN_CS4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SD1_DATA3__SD1_DATA3 IOMUX_MODE(MX31_PIN_SD1_DATA3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SD1_DATA2__SD1_DATA2 IOMUX_MODE(MX31_PIN_SD1_DATA2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SD1_DATA1__SD1_DATA1 IOMUX_MODE(MX31_PIN_SD1_DATA1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SD1_DATA0__SD1_DATA0 IOMUX_MODE(MX31_PIN_SD1_DATA0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SD1_CLK__SD1_CLK IOMUX_MODE(MX31_PIN_SD1_CLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SD1_CMD__SD1_CMD IOMUX_MODE(MX31_PIN_SD1_CMD, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_ATA_CS0__GPIO3_26 IOMUX_MODE(MX31_PIN_ATA_CS0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_ATA_CS1__GPIO3_27 IOMUX_MODE(MX31_PIN_ATA_CS1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_PC_PWRON__SD2_DATA3 IOMUX_MODE(MX31_PIN_PC_PWRON, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_PC_VS1__SD2_DATA2 IOMUX_MODE(MX31_PIN_PC_VS1, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_PC_READY__SD2_DATA1 IOMUX_MODE(MX31_PIN_PC_READY, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_PC_WAIT_B__SD2_DATA0 IOMUX_MODE(MX31_PIN_PC_WAIT_B, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_PC_CD2_B__SD2_CLK IOMUX_MODE(MX31_PIN_PC_CD2_B, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_PC_CD1_B__SD2_CMD IOMUX_MODE(MX31_PIN_PC_CD1_B, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_ATA_DIOR__GPIO3_28 IOMUX_MODE(MX31_PIN_ATA_DIOR, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_ATA_DIOW__GPIO3_29 IOMUX_MODE(MX31_PIN_ATA_DIOW, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_LD0__LD0 IOMUX_MODE(MX31_PIN_LD0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD1__LD1 IOMUX_MODE(MX31_PIN_LD1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD2__LD2 IOMUX_MODE(MX31_PIN_LD2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD3__LD3 IOMUX_MODE(MX31_PIN_LD3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD4__LD4 IOMUX_MODE(MX31_PIN_LD4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD5__LD5 IOMUX_MODE(MX31_PIN_LD5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD6__LD6 IOMUX_MODE(MX31_PIN_LD6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD7__LD7 IOMUX_MODE(MX31_PIN_LD7, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD8__LD8 IOMUX_MODE(MX31_PIN_LD8, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD9__LD9 IOMUX_MODE(MX31_PIN_LD9, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD10__LD10 IOMUX_MODE(MX31_PIN_LD10, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD11__LD11 IOMUX_MODE(MX31_PIN_LD11, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD12__LD12 IOMUX_MODE(MX31_PIN_LD12, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD13__LD13 IOMUX_MODE(MX31_PIN_LD13, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD14__LD14 IOMUX_MODE(MX31_PIN_LD14, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD15__LD15 IOMUX_MODE(MX31_PIN_LD15, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD16__LD16 IOMUX_MODE(MX31_PIN_LD16, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_LD17__LD17 IOMUX_MODE(MX31_PIN_LD17, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_VSYNC3__VSYNC3 IOMUX_MODE(MX31_PIN_VSYNC3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_HSYNC__HSYNC IOMUX_MODE(MX31_PIN_HSYNC, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_FPSHIFT__FPSHIFT IOMUX_MODE(MX31_PIN_FPSHIFT, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_DRDY0__DRDY0 IOMUX_MODE(MX31_PIN_DRDY0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_D3_REV__D3_REV IOMUX_MODE(MX31_PIN_D3_REV, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CONTRAST__CONTRAST IOMUX_MODE(MX31_PIN_CONTRAST, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_D3_SPL__D3_SPL IOMUX_MODE(MX31_PIN_D3_SPL, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_D3_CLS__D3_CLS IOMUX_MODE(MX31_PIN_D3_CLS, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_GPIO1_1__GPIO IOMUX_MODE(MX31_PIN_GPIO1_1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_DCD_DTE1__I2C2_SDA IOMUX_MODE(MX31_PIN_DCD_DTE1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_RI_DTE1__I2C2_SCL IOMUX_MODE(MX31_PIN_RI_DTE1, IOMUX_CONFIG_ALT2)
|
||||
#define MX31_PIN_CSPI2_SS2__I2C3_SDA IOMUX_MODE(MX31_PIN_CSPI2_SS2, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI2_SCLK__I2C3_SCL IOMUX_MODE(MX31_PIN_CSPI2_SCLK, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSI_D4__CSI_D4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D5__CSI_D5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D6__CSI_D6 IOMUX_MODE(MX31_PIN_CSI_D6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D7__CSI_D7 IOMUX_MODE(MX31_PIN_CSI_D7, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D8__CSI_D8 IOMUX_MODE(MX31_PIN_CSI_D8, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D9__CSI_D9 IOMUX_MODE(MX31_PIN_CSI_D9, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D10__CSI_D10 IOMUX_MODE(MX31_PIN_CSI_D10, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D11__CSI_D11 IOMUX_MODE(MX31_PIN_CSI_D11, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D12__CSI_D12 IOMUX_MODE(MX31_PIN_CSI_D12, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D13__CSI_D13 IOMUX_MODE(MX31_PIN_CSI_D13, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D14__CSI_D14 IOMUX_MODE(MX31_PIN_CSI_D14, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_D15__CSI_D15 IOMUX_MODE(MX31_PIN_CSI_D15, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_HSYNC__CSI_HSYNC IOMUX_MODE(MX31_PIN_CSI_HSYNC, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_MCLK__CSI_MCLK IOMUX_MODE(MX31_PIN_CSI_MCLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_PIXCLK__CSI_PIXCLK IOMUX_MODE(MX31_PIN_CSI_PIXCLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSI_VSYNC__CSI_VSYNC IOMUX_MODE(MX31_PIN_CSI_VSYNC, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_GPIO3_0__GPIO3_0 IOMUX_MODE(MX31_PIN_GPIO3_0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_GPIO3_1__GPIO3_1 IOMUX_MODE(MX31_PIN_GPIO3_1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_TXD2__GPIO1_28 IOMUX_MODE(MX31_PIN_TXD2, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_CSI_D4__GPIO3_4 IOMUX_MODE(MX31_PIN_CSI_D4, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_CSI_D5__GPIO3_5 IOMUX_MODE(MX31_PIN_CSI_D5, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_USBOTG_DATA0__USBOTG_DATA0 IOMUX_MODE(MX31_PIN_USBOTG_DATA0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA1__USBOTG_DATA1 IOMUX_MODE(MX31_PIN_USBOTG_DATA1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA2__USBOTG_DATA2 IOMUX_MODE(MX31_PIN_USBOTG_DATA2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA3__USBOTG_DATA3 IOMUX_MODE(MX31_PIN_USBOTG_DATA3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA4__USBOTG_DATA4 IOMUX_MODE(MX31_PIN_USBOTG_DATA4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA5__USBOTG_DATA5 IOMUX_MODE(MX31_PIN_USBOTG_DATA5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA6__USBOTG_DATA6 IOMUX_MODE(MX31_PIN_USBOTG_DATA6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DATA7__USBOTG_DATA7 IOMUX_MODE(MX31_PIN_USBOTG_DATA7, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_CLK__USBOTG_CLK IOMUX_MODE(MX31_PIN_USBOTG_CLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_DIR__USBOTG_DIR IOMUX_MODE(MX31_PIN_USBOTG_DIR, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_NXT__USBOTG_NXT IOMUX_MODE(MX31_PIN_USBOTG_NXT, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBOTG_STP__USBOTG_STP IOMUX_MODE(MX31_PIN_USBOTG_STP, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_CSPI1_MOSI__USBH1_RXDM IOMUX_MODE(MX31_PIN_CSPI1_MOSI, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI1_MISO__USBH1_RXDP IOMUX_MODE(MX31_PIN_CSPI1_MISO, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI1_SS0__USBH1_TXDM IOMUX_MODE(MX31_PIN_CSPI1_SS0, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI1_SS1__USBH1_TXDP IOMUX_MODE(MX31_PIN_CSPI1_SS1, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI1_SS2__USBH1_RCV IOMUX_MODE(MX31_PIN_CSPI1_SS2, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI1_SCLK__USBH1_OEB IOMUX_MODE(MX31_PIN_CSPI1_SCLK, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_CSPI1_SPI_RDY__USBH1_FS IOMUX_MODE(MX31_PIN_CSPI1_SPI_RDY, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_SFS6__USBH1_SUSPEND IOMUX_MODE(MX31_PIN_SFS6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_NFRE_B__GPIO1_11 IOMUX_MODE(MX31_PIN_NFRE_B, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_NFALE__GPIO1_12 IOMUX_MODE(MX31_PIN_NFALE, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_USBH2_DATA0__USBH2_DATA0 IOMUX_MODE(MX31_PIN_USBH2_DATA0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBH2_DATA1__USBH2_DATA1 IOMUX_MODE(MX31_PIN_USBH2_DATA1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_STXD3__USBH2_DATA2 IOMUX_MODE(MX31_PIN_STXD3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SRXD3__USBH2_DATA3 IOMUX_MODE(MX31_PIN_SRXD3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SCK3__USBH2_DATA4 IOMUX_MODE(MX31_PIN_SCK3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SFS3__USBH2_DATA5 IOMUX_MODE(MX31_PIN_SFS3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_STXD6__USBH2_DATA6 IOMUX_MODE(MX31_PIN_STXD6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SRXD6__USBH2_DATA7 IOMUX_MODE(MX31_PIN_SRXD6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBH2_CLK__USBH2_CLK IOMUX_MODE(MX31_PIN_USBH2_CLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBH2_DIR__USBH2_DIR IOMUX_MODE(MX31_PIN_USBH2_DIR, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBH2_NXT__USBH2_NXT IOMUX_MODE(MX31_PIN_USBH2_NXT, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_USBH2_STP__USBH2_STP IOMUX_MODE(MX31_PIN_USBH2_STP, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SCK6__GPIO1_25 IOMUX_MODE(MX31_PIN_SCK6, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_USB_OC__GPIO1_30 IOMUX_MODE(MX31_PIN_USB_OC, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_I2C_DAT__I2C1_SDA IOMUX_MODE(MX31_PIN_I2C_DAT, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_I2C_CLK__I2C1_SCL IOMUX_MODE(MX31_PIN_I2C_CLK, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_GPIO1_0__GPIO1_0 IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_SVEN0__GPIO2_0 IOMUX_MODE(MX31_PIN_SVEN0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_STX0__GPIO2_1 IOMUX_MODE(MX31_PIN_STX0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_SRX0__GPIO2_2 IOMUX_MODE(MX31_PIN_SRX0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_SIMPD0__GPIO2_3 IOMUX_MODE(MX31_PIN_SIMPD0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_DTR_DCE1__GPIO2_8 IOMUX_MODE(MX31_PIN_DTR_DCE1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_DSR_DCE1__GPIO2_9 IOMUX_MODE(MX31_PIN_DSR_DCE1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_RI_DCE1__GPIO2_10 IOMUX_MODE(MX31_PIN_RI_DCE1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_DCD_DCE1__GPIO2_11 IOMUX_MODE(MX31_PIN_DCD_DCE1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_STXD5__GPIO1_21 IOMUX_MODE(MX31_PIN_STXD5, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_SRXD5__GPIO1_22 IOMUX_MODE(MX31_PIN_SRXD5, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_GPIO1_3__GPIO1_3 IOMUX_MODE(MX31_PIN_GPIO1_3, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_CSPI2_SS1__CSPI3_SS1 IOMUX_MODE(MX31_PIN_CSPI2_SS1, IOMUX_CONFIG_ALT1)
|
||||
#define MX31_PIN_RTS1__GPIO2_6 IOMUX_MODE(MX31_PIN_RTS1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_CTS1__GPIO2_7 IOMUX_MODE(MX31_PIN_CTS1, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_LCS0__GPIO3_23 IOMUX_MODE(MX31_PIN_LCS0, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_STXD4__STXD4 IOMUX_MODE(MX31_PIN_STXD4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SRXD4__SRXD4 IOMUX_MODE(MX31_PIN_SRXD4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SCK4__SCK4 IOMUX_MODE(MX31_PIN_SCK4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SFS4__SFS4 IOMUX_MODE(MX31_PIN_SFS4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_STXD5__STXD5 IOMUX_MODE(MX31_PIN_STXD5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SRXD5__SRXD5 IOMUX_MODE(MX31_PIN_SRXD5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SCK5__SCK5 IOMUX_MODE(MX31_PIN_SCK5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_SFS5__SFS5 IOMUX_MODE(MX31_PIN_SFS5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW0_KEY_ROW0 IOMUX_MODE(MX31_PIN_KEY_ROW0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW1_KEY_ROW1 IOMUX_MODE(MX31_PIN_KEY_ROW1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW2_KEY_ROW2 IOMUX_MODE(MX31_PIN_KEY_ROW2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW3_KEY_ROW3 IOMUX_MODE(MX31_PIN_KEY_ROW3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW4_KEY_ROW4 IOMUX_MODE(MX31_PIN_KEY_ROW4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW4_GPIO IOMUX_MODE(MX31_PIN_KEY_ROW4, IOMUX_CONFIG_GPIO)
|
||||
#define MX31_PIN_KEY_ROW5_KEY_ROW5 IOMUX_MODE(MX31_PIN_KEY_ROW5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW6_KEY_ROW6 IOMUX_MODE(MX31_PIN_KEY_ROW6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_ROW7_KEY_ROW7 IOMUX_MODE(MX31_PIN_KEY_ROW7, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL0_KEY_COL0 IOMUX_MODE(MX31_PIN_KEY_COL0, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL1_KEY_COL1 IOMUX_MODE(MX31_PIN_KEY_COL1, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL2_KEY_COL2 IOMUX_MODE(MX31_PIN_KEY_COL2, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL3_KEY_COL3 IOMUX_MODE(MX31_PIN_KEY_COL3, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL4_KEY_COL4 IOMUX_MODE(MX31_PIN_KEY_COL4, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL5_KEY_COL5 IOMUX_MODE(MX31_PIN_KEY_COL5, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL6_KEY_COL6 IOMUX_MODE(MX31_PIN_KEY_COL6, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_KEY_COL7_KEY_COL7 IOMUX_MODE(MX31_PIN_KEY_COL7, IOMUX_CONFIG_FUNC)
|
||||
#define MX31_PIN_WATCHDOG_RST__WATCHDOG_RST IOMUX_MODE(MX31_PIN_WATCHDOG_RST, IOMUX_CONFIG_FUNC)
|
||||
|
||||
|
||||
/*
|
||||
* XXX: The SS0, SS1, SS2, SS3 lines of spi3 are multiplexed with cspi2_ss0,
|
||||
* cspi2_ss1, cspi1_ss0 cspi1_ss1
|
||||
*/
|
||||
|
||||
/*
|
||||
* This function configures the pad value for a IOMUX pin.
|
||||
*/
|
||||
void mxc_iomux_set_pad(enum iomux_pins, u32);
|
||||
|
||||
#endif /* ifndef __MACH_IOMUX_MX3_H__ */
|
File diff suppressed because it is too large
Load Diff
@ -1,174 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* arch/arm/plat-mxc/iomux-v1.c
|
||||
*
|
||||
* Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
|
||||
* Copyright (C) 2009 Uwe Kleine-Koenig, Pengutronix
|
||||
*
|
||||
* Common code for i.MX1, i.MX21 and i.MX27
|
||||
*/
|
||||
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "hardware.h"
|
||||
#include "iomux-v1.h"
|
||||
|
||||
static void __iomem *imx_iomuxv1_baseaddr;
|
||||
static unsigned imx_iomuxv1_numports;
|
||||
|
||||
static inline unsigned long imx_iomuxv1_readl(unsigned offset)
|
||||
{
|
||||
return imx_readl(imx_iomuxv1_baseaddr + offset);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_writel(unsigned long val, unsigned offset)
|
||||
{
|
||||
imx_writel(val, imx_iomuxv1_baseaddr + offset);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_rmwl(unsigned offset,
|
||||
unsigned long mask, unsigned long value)
|
||||
{
|
||||
unsigned long reg = imx_iomuxv1_readl(offset);
|
||||
|
||||
reg &= ~mask;
|
||||
reg |= value;
|
||||
|
||||
imx_iomuxv1_writel(reg, offset);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_puen(
|
||||
unsigned int port, unsigned int pin, int on)
|
||||
{
|
||||
unsigned long mask = 1 << pin;
|
||||
|
||||
imx_iomuxv1_rmwl(MXC_PUEN(port), mask, on ? mask : 0);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_ddir(
|
||||
unsigned int port, unsigned int pin, int out)
|
||||
{
|
||||
unsigned long mask = 1 << pin;
|
||||
|
||||
imx_iomuxv1_rmwl(MXC_DDIR(port), mask, out ? mask : 0);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_gpr(
|
||||
unsigned int port, unsigned int pin, int af)
|
||||
{
|
||||
unsigned long mask = 1 << pin;
|
||||
|
||||
imx_iomuxv1_rmwl(MXC_GPR(port), mask, af ? mask : 0);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_gius(
|
||||
unsigned int port, unsigned int pin, int inuse)
|
||||
{
|
||||
unsigned long mask = 1 << pin;
|
||||
|
||||
imx_iomuxv1_rmwl(MXC_GIUS(port), mask, inuse ? mask : 0);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_ocr(
|
||||
unsigned int port, unsigned int pin, unsigned int ocr)
|
||||
{
|
||||
unsigned long shift = (pin & 0xf) << 1;
|
||||
unsigned long mask = 3 << shift;
|
||||
unsigned long value = ocr << shift;
|
||||
unsigned long offset = pin < 16 ? MXC_OCR1(port) : MXC_OCR2(port);
|
||||
|
||||
imx_iomuxv1_rmwl(offset, mask, value);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_iconfa(
|
||||
unsigned int port, unsigned int pin, unsigned int aout)
|
||||
{
|
||||
unsigned long shift = (pin & 0xf) << 1;
|
||||
unsigned long mask = 3 << shift;
|
||||
unsigned long value = aout << shift;
|
||||
unsigned long offset = pin < 16 ? MXC_ICONFA1(port) : MXC_ICONFA2(port);
|
||||
|
||||
imx_iomuxv1_rmwl(offset, mask, value);
|
||||
}
|
||||
|
||||
static inline void imx_iomuxv1_set_iconfb(
|
||||
unsigned int port, unsigned int pin, unsigned int bout)
|
||||
{
|
||||
unsigned long shift = (pin & 0xf) << 1;
|
||||
unsigned long mask = 3 << shift;
|
||||
unsigned long value = bout << shift;
|
||||
unsigned long offset = pin < 16 ? MXC_ICONFB1(port) : MXC_ICONFB2(port);
|
||||
|
||||
imx_iomuxv1_rmwl(offset, mask, value);
|
||||
}
|
||||
|
||||
int mxc_gpio_mode(int gpio_mode)
|
||||
{
|
||||
unsigned int pin = gpio_mode & GPIO_PIN_MASK;
|
||||
unsigned int port = (gpio_mode & GPIO_PORT_MASK) >> GPIO_PORT_SHIFT;
|
||||
unsigned int ocr = (gpio_mode & GPIO_OCR_MASK) >> GPIO_OCR_SHIFT;
|
||||
unsigned int aout = (gpio_mode >> GPIO_AOUT_SHIFT) & 3;
|
||||
unsigned int bout = (gpio_mode >> GPIO_BOUT_SHIFT) & 3;
|
||||
|
||||
if (port >= imx_iomuxv1_numports)
|
||||
return -EINVAL;
|
||||
|
||||
/* Pullup enable */
|
||||
imx_iomuxv1_set_puen(port, pin, gpio_mode & GPIO_PUEN);
|
||||
|
||||
/* Data direction */
|
||||
imx_iomuxv1_set_ddir(port, pin, gpio_mode & GPIO_OUT);
|
||||
|
||||
/* Primary / alternate function */
|
||||
imx_iomuxv1_set_gpr(port, pin, gpio_mode & GPIO_AF);
|
||||
|
||||
/* use as gpio? */
|
||||
imx_iomuxv1_set_gius(port, pin, !(gpio_mode & (GPIO_PF | GPIO_AF)));
|
||||
|
||||
imx_iomuxv1_set_ocr(port, pin, ocr);
|
||||
|
||||
imx_iomuxv1_set_iconfa(port, pin, aout);
|
||||
|
||||
imx_iomuxv1_set_iconfb(port, pin, bout);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int imx_iomuxv1_setup_multiple(const int *list, unsigned count)
|
||||
{
|
||||
size_t i;
|
||||
int ret = 0;
|
||||
|
||||
for (i = 0; i < count; ++i) {
|
||||
ret = mxc_gpio_mode(list[i]);
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
|
||||
const char *label)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = imx_iomuxv1_setup_multiple(pin_list, count);
|
||||
return ret;
|
||||
}
|
||||
|
||||
int __init imx_iomuxv1_init(void __iomem *base, int numports)
|
||||
{
|
||||
imx_iomuxv1_baseaddr = base;
|
||||
imx_iomuxv1_numports = numports;
|
||||
|
||||
return 0;
|
||||
}
|
@ -1,81 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
||||
* Copyright (C) 2009 by Holger Schurig <hs4233@mail.mn-solutions.de>
|
||||
*/
|
||||
#ifndef __MACH_IOMUX_V1_H__
|
||||
#define __MACH_IOMUX_V1_H__
|
||||
|
||||
/*
|
||||
* GPIO Module and I/O Multiplexer
|
||||
* x = 0..3 for reg_A, reg_B, reg_C, reg_D
|
||||
*/
|
||||
#define MXC_DDIR(x) (0x00 + ((x) << 8))
|
||||
#define MXC_OCR1(x) (0x04 + ((x) << 8))
|
||||
#define MXC_OCR2(x) (0x08 + ((x) << 8))
|
||||
#define MXC_ICONFA1(x) (0x0c + ((x) << 8))
|
||||
#define MXC_ICONFA2(x) (0x10 + ((x) << 8))
|
||||
#define MXC_ICONFB1(x) (0x14 + ((x) << 8))
|
||||
#define MXC_ICONFB2(x) (0x18 + ((x) << 8))
|
||||
#define MXC_DR(x) (0x1c + ((x) << 8))
|
||||
#define MXC_GIUS(x) (0x20 + ((x) << 8))
|
||||
#define MXC_SSR(x) (0x24 + ((x) << 8))
|
||||
#define MXC_ICR1(x) (0x28 + ((x) << 8))
|
||||
#define MXC_ICR2(x) (0x2c + ((x) << 8))
|
||||
#define MXC_IMR(x) (0x30 + ((x) << 8))
|
||||
#define MXC_ISR(x) (0x34 + ((x) << 8))
|
||||
#define MXC_GPR(x) (0x38 + ((x) << 8))
|
||||
#define MXC_SWR(x) (0x3c + ((x) << 8))
|
||||
#define MXC_PUEN(x) (0x40 + ((x) << 8))
|
||||
|
||||
#define MX1_NUM_GPIO_PORT 4
|
||||
#define MX21_NUM_GPIO_PORT 6
|
||||
#define MX27_NUM_GPIO_PORT 6
|
||||
|
||||
#define GPIO_PIN_MASK 0x1f
|
||||
|
||||
#define GPIO_PORT_SHIFT 5
|
||||
#define GPIO_PORT_MASK (0x7 << GPIO_PORT_SHIFT)
|
||||
|
||||
#define GPIO_PORTA (0 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTB (1 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTC (2 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTD (3 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTE (4 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTF (5 << GPIO_PORT_SHIFT)
|
||||
|
||||
#define GPIO_OUT (1 << 8)
|
||||
#define GPIO_IN (0 << 8)
|
||||
#define GPIO_PUEN (1 << 9)
|
||||
|
||||
#define GPIO_PF (1 << 10)
|
||||
#define GPIO_AF (1 << 11)
|
||||
|
||||
#define GPIO_OCR_SHIFT 12
|
||||
#define GPIO_OCR_MASK (3 << GPIO_OCR_SHIFT)
|
||||
#define GPIO_AIN (0 << GPIO_OCR_SHIFT)
|
||||
#define GPIO_BIN (1 << GPIO_OCR_SHIFT)
|
||||
#define GPIO_CIN (2 << GPIO_OCR_SHIFT)
|
||||
#define GPIO_GPIO (3 << GPIO_OCR_SHIFT)
|
||||
|
||||
#define GPIO_AOUT_SHIFT 14
|
||||
#define GPIO_AOUT_MASK (3 << GPIO_AOUT_SHIFT)
|
||||
#define GPIO_AOUT (0 << GPIO_AOUT_SHIFT)
|
||||
#define GPIO_AOUT_ISR (1 << GPIO_AOUT_SHIFT)
|
||||
#define GPIO_AOUT_0 (2 << GPIO_AOUT_SHIFT)
|
||||
#define GPIO_AOUT_1 (3 << GPIO_AOUT_SHIFT)
|
||||
|
||||
#define GPIO_BOUT_SHIFT 16
|
||||
#define GPIO_BOUT_MASK (3 << GPIO_BOUT_SHIFT)
|
||||
#define GPIO_BOUT (0 << GPIO_BOUT_SHIFT)
|
||||
#define GPIO_BOUT_ISR (1 << GPIO_BOUT_SHIFT)
|
||||
#define GPIO_BOUT_0 (2 << GPIO_BOUT_SHIFT)
|
||||
#define GPIO_BOUT_1 (3 << GPIO_BOUT_SHIFT)
|
||||
|
||||
extern int mxc_gpio_mode(int gpio_mode);
|
||||
extern int mxc_gpio_setup_multiple_pins(const int *pin_list, unsigned count,
|
||||
const char *label);
|
||||
|
||||
extern int imx_iomuxv1_init(void __iomem *base, int numports);
|
||||
|
||||
#endif /* __MACH_IOMUX_V1_H__ */
|
@ -1,65 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2004-2006 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
|
||||
* Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
|
||||
* <armlinux@phytec.de>
|
||||
*/
|
||||
#include <linux/errno.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/string.h>
|
||||
#include <linux/gpio.h>
|
||||
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "hardware.h"
|
||||
#include "iomux-v3.h"
|
||||
|
||||
static void __iomem *base;
|
||||
|
||||
/*
|
||||
* configures a single pad in the iomuxer
|
||||
*/
|
||||
int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
|
||||
{
|
||||
u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT;
|
||||
u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT;
|
||||
u32 sel_input_ofs = (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT;
|
||||
u32 sel_input = (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT;
|
||||
u32 pad_ctrl_ofs = (pad & MUX_PAD_CTRL_OFS_MASK) >> MUX_PAD_CTRL_OFS_SHIFT;
|
||||
u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
|
||||
|
||||
if (mux_ctrl_ofs)
|
||||
imx_writel(mux_mode, base + mux_ctrl_ofs);
|
||||
|
||||
if (sel_input_ofs)
|
||||
imx_writel(sel_input, base + sel_input_ofs);
|
||||
|
||||
if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
|
||||
imx_writel(pad_ctrl, base + pad_ctrl_ofs);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int mxc_iomux_v3_setup_multiple_pads(const iomux_v3_cfg_t *pad_list,
|
||||
unsigned count)
|
||||
{
|
||||
const iomux_v3_cfg_t *p = pad_list;
|
||||
int i;
|
||||
int ret;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
ret = mxc_iomux_v3_setup_pad(*p);
|
||||
if (ret)
|
||||
return ret;
|
||||
p++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void mxc_iomux_v3_init(void __iomem *iomux_v3_base)
|
||||
{
|
||||
base = iomux_v3_base;
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
|
||||
* <armlinux@phytec.de>
|
||||
*/
|
||||
|
||||
#ifndef __MACH_IOMUX_V3_H__
|
||||
#define __MACH_IOMUX_V3_H__
|
||||
|
||||
/*
|
||||
* build IOMUX_PAD structure
|
||||
*
|
||||
* This iomux scheme is based around pads, which are the physical balls
|
||||
* on the processor.
|
||||
*
|
||||
* - Each pad has a pad control register (IOMUXC_SW_PAD_CTRL_x) which controls
|
||||
* things like driving strength and pullup/pulldown.
|
||||
* - Each pad can have but not necessarily does have an output routing register
|
||||
* (IOMUXC_SW_MUX_CTL_PAD_x).
|
||||
* - Each pad can have but not necessarily does have an input routing register
|
||||
* (IOMUXC_x_SELECT_INPUT)
|
||||
*
|
||||
* The three register sets do not have a fixed offset to each other,
|
||||
* hence we order this table by pad control registers (which all pads
|
||||
* have) and put the optional i/o routing registers into additional
|
||||
* fields.
|
||||
*
|
||||
* The naming convention for the pad modes is MX35_PAD_<padname>__<padmode>
|
||||
* If <padname> or <padmode> refers to a GPIO, it is named
|
||||
* GPIO_<unit>_<num>
|
||||
*
|
||||
* IOMUX/PAD Bit field definitions
|
||||
*
|
||||
* MUX_CTRL_OFS: 0..11 (12)
|
||||
* PAD_CTRL_OFS: 12..23 (12)
|
||||
* SEL_INPUT_OFS: 24..35 (12)
|
||||
* MUX_MODE + SION: 36..40 (5)
|
||||
* PAD_CTRL + NO_PAD_CTRL: 41..57 (17)
|
||||
* SEL_INP: 58..61 (4)
|
||||
* reserved: 63 (1)
|
||||
*/
|
||||
|
||||
typedef u64 iomux_v3_cfg_t;
|
||||
|
||||
#define MUX_CTRL_OFS_SHIFT 0
|
||||
#define MUX_CTRL_OFS_MASK ((iomux_v3_cfg_t)0xfff << MUX_CTRL_OFS_SHIFT)
|
||||
#define MUX_PAD_CTRL_OFS_SHIFT 12
|
||||
#define MUX_PAD_CTRL_OFS_MASK ((iomux_v3_cfg_t)0xfff << MUX_PAD_CTRL_OFS_SHIFT)
|
||||
#define MUX_SEL_INPUT_OFS_SHIFT 24
|
||||
#define MUX_SEL_INPUT_OFS_MASK ((iomux_v3_cfg_t)0xfff << MUX_SEL_INPUT_OFS_SHIFT)
|
||||
|
||||
#define MUX_MODE_SHIFT 36
|
||||
#define MUX_MODE_MASK ((iomux_v3_cfg_t)0x1f << MUX_MODE_SHIFT)
|
||||
#define MUX_PAD_CTRL_SHIFT 41
|
||||
#define MUX_PAD_CTRL_MASK ((iomux_v3_cfg_t)0x1ffff << MUX_PAD_CTRL_SHIFT)
|
||||
#define MUX_SEL_INPUT_SHIFT 58
|
||||
#define MUX_SEL_INPUT_MASK ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT)
|
||||
|
||||
#define MUX_PAD_CTRL(x) ((iomux_v3_cfg_t)(x) << MUX_PAD_CTRL_SHIFT)
|
||||
|
||||
#define IOMUX_PAD(_pad_ctrl_ofs, _mux_ctrl_ofs, _mux_mode, _sel_input_ofs, \
|
||||
_sel_input, _pad_ctrl) \
|
||||
(((iomux_v3_cfg_t)(_mux_ctrl_ofs) << MUX_CTRL_OFS_SHIFT) | \
|
||||
((iomux_v3_cfg_t)(_mux_mode) << MUX_MODE_SHIFT) | \
|
||||
((iomux_v3_cfg_t)(_pad_ctrl_ofs) << MUX_PAD_CTRL_OFS_SHIFT) | \
|
||||
((iomux_v3_cfg_t)(_pad_ctrl) << MUX_PAD_CTRL_SHIFT) | \
|
||||
((iomux_v3_cfg_t)(_sel_input_ofs) << MUX_SEL_INPUT_OFS_SHIFT) | \
|
||||
((iomux_v3_cfg_t)(_sel_input) << MUX_SEL_INPUT_SHIFT))
|
||||
|
||||
#define NEW_PAD_CTRL(cfg, pad) (((cfg) & ~MUX_PAD_CTRL_MASK) | MUX_PAD_CTRL(pad))
|
||||
/*
|
||||
* Use to set PAD control
|
||||
*/
|
||||
|
||||
#define NO_PAD_CTRL (1 << 16)
|
||||
#define PAD_CTL_DVS (1 << 13)
|
||||
#define PAD_CTL_HYS (1 << 8)
|
||||
|
||||
#define PAD_CTL_PKE (1 << 7)
|
||||
#define PAD_CTL_PUE (1 << 6 | PAD_CTL_PKE)
|
||||
#define PAD_CTL_PUS_100K_DOWN (0 << 4 | PAD_CTL_PUE)
|
||||
#define PAD_CTL_PUS_47K_UP (1 << 4 | PAD_CTL_PUE)
|
||||
#define PAD_CTL_PUS_100K_UP (2 << 4 | PAD_CTL_PUE)
|
||||
#define PAD_CTL_PUS_22K_UP (3 << 4 | PAD_CTL_PUE)
|
||||
|
||||
#define PAD_CTL_ODE (1 << 3)
|
||||
|
||||
#define PAD_CTL_DSE_LOW (0 << 1)
|
||||
#define PAD_CTL_DSE_MED (1 << 1)
|
||||
#define PAD_CTL_DSE_HIGH (2 << 1)
|
||||
#define PAD_CTL_DSE_MAX (3 << 1)
|
||||
|
||||
#define PAD_CTL_SRE_FAST (1 << 0)
|
||||
#define PAD_CTL_SRE_SLOW (0 << 0)
|
||||
|
||||
#define IOMUX_CONFIG_SION (0x1 << 4)
|
||||
|
||||
#define MX51_NUM_GPIO_PORT 4
|
||||
|
||||
#define GPIO_PIN_MASK 0x1f
|
||||
|
||||
#define GPIO_PORT_SHIFT 5
|
||||
#define GPIO_PORT_MASK (0x7 << GPIO_PORT_SHIFT)
|
||||
|
||||
#define GPIO_PORTA (0 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTB (1 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTC (2 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTD (3 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTE (4 << GPIO_PORT_SHIFT)
|
||||
#define GPIO_PORTF (5 << GPIO_PORT_SHIFT)
|
||||
|
||||
/*
|
||||
* setups a single pad in the iomuxer
|
||||
*/
|
||||
int mxc_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
|
||||
|
||||
/*
|
||||
* setups multiple pads
|
||||
* convenient way to call the above function with tables
|
||||
*/
|
||||
int mxc_iomux_v3_setup_multiple_pads(const iomux_v3_cfg_t *pad_list,
|
||||
unsigned count);
|
||||
|
||||
/*
|
||||
* Initialise the iomux controller
|
||||
*/
|
||||
void mxc_iomux_v3_init(void __iomem *iomux_v3_base);
|
||||
|
||||
#endif /* __MACH_IOMUX_V3_H__*/
|
||||
|
@ -1,562 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* armadillo5x0.c
|
||||
*
|
||||
* Copyright 2009 Alberto Panizzo <maramaopercheseimorto@gmail.com>
|
||||
* updates in http://alberdroid.blogspot.com/
|
||||
*
|
||||
* Based on Atmark Techno, Inc. armadillo 500 BSP 2008
|
||||
* Based on mx31ads.c and pcm037.c Great Work!
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/clk.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/smsc911x.h>
|
||||
#include <linux/interrupt.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/usb/otg.h>
|
||||
#include <linux/usb/ulpi.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/regulator/machine.h>
|
||||
#include <linux/regulator/fixed.h>
|
||||
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/memory.h>
|
||||
#include <asm/mach/map.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "devices-imx31.h"
|
||||
#include "crmregs-imx3.h"
|
||||
#include "ehci.h"
|
||||
#include "hardware.h"
|
||||
#include "iomux-mx3.h"
|
||||
#include "ulpi.h"
|
||||
|
||||
static int armadillo5x0_pins[] = {
|
||||
/* UART1 */
|
||||
MX31_PIN_CTS1__CTS1,
|
||||
MX31_PIN_RTS1__RTS1,
|
||||
MX31_PIN_TXD1__TXD1,
|
||||
MX31_PIN_RXD1__RXD1,
|
||||
/* UART2 */
|
||||
MX31_PIN_CTS2__CTS2,
|
||||
MX31_PIN_RTS2__RTS2,
|
||||
MX31_PIN_TXD2__TXD2,
|
||||
MX31_PIN_RXD2__RXD2,
|
||||
/* LAN9118_IRQ */
|
||||
IOMUX_MODE(MX31_PIN_GPIO1_0, IOMUX_CONFIG_GPIO),
|
||||
/* SDHC1 */
|
||||
MX31_PIN_SD1_DATA3__SD1_DATA3,
|
||||
MX31_PIN_SD1_DATA2__SD1_DATA2,
|
||||
MX31_PIN_SD1_DATA1__SD1_DATA1,
|
||||
MX31_PIN_SD1_DATA0__SD1_DATA0,
|
||||
MX31_PIN_SD1_CLK__SD1_CLK,
|
||||
MX31_PIN_SD1_CMD__SD1_CMD,
|
||||
/* Framebuffer */
|
||||
MX31_PIN_LD0__LD0,
|
||||
MX31_PIN_LD1__LD1,
|
||||
MX31_PIN_LD2__LD2,
|
||||
MX31_PIN_LD3__LD3,
|
||||
MX31_PIN_LD4__LD4,
|
||||
MX31_PIN_LD5__LD5,
|
||||
MX31_PIN_LD6__LD6,
|
||||
MX31_PIN_LD7__LD7,
|
||||
MX31_PIN_LD8__LD8,
|
||||
MX31_PIN_LD9__LD9,
|
||||
MX31_PIN_LD10__LD10,
|
||||
MX31_PIN_LD11__LD11,
|
||||
MX31_PIN_LD12__LD12,
|
||||
MX31_PIN_LD13__LD13,
|
||||
MX31_PIN_LD14__LD14,
|
||||
MX31_PIN_LD15__LD15,
|
||||
MX31_PIN_LD16__LD16,
|
||||
MX31_PIN_LD17__LD17,
|
||||
MX31_PIN_VSYNC3__VSYNC3,
|
||||
MX31_PIN_HSYNC__HSYNC,
|
||||
MX31_PIN_FPSHIFT__FPSHIFT,
|
||||
MX31_PIN_DRDY0__DRDY0,
|
||||
IOMUX_MODE(MX31_PIN_LCS1, IOMUX_CONFIG_GPIO), /*ADV7125_PSAVE*/
|
||||
/* I2C2 */
|
||||
MX31_PIN_CSPI2_MOSI__SCL,
|
||||
MX31_PIN_CSPI2_MISO__SDA,
|
||||
/* OTG */
|
||||
MX31_PIN_USBOTG_DATA0__USBOTG_DATA0,
|
||||
MX31_PIN_USBOTG_DATA1__USBOTG_DATA1,
|
||||
MX31_PIN_USBOTG_DATA2__USBOTG_DATA2,
|
||||
MX31_PIN_USBOTG_DATA3__USBOTG_DATA3,
|
||||
MX31_PIN_USBOTG_DATA4__USBOTG_DATA4,
|
||||
MX31_PIN_USBOTG_DATA5__USBOTG_DATA5,
|
||||
MX31_PIN_USBOTG_DATA6__USBOTG_DATA6,
|
||||
MX31_PIN_USBOTG_DATA7__USBOTG_DATA7,
|
||||
MX31_PIN_USBOTG_CLK__USBOTG_CLK,
|
||||
MX31_PIN_USBOTG_DIR__USBOTG_DIR,
|
||||
MX31_PIN_USBOTG_NXT__USBOTG_NXT,
|
||||
MX31_PIN_USBOTG_STP__USBOTG_STP,
|
||||
/* USB host 2 */
|
||||
IOMUX_MODE(MX31_PIN_USBH2_CLK, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_USBH2_DIR, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_USBH2_NXT, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_USBH2_STP, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_USBH2_DATA0, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_USBH2_DATA1, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_STXD3, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_SRXD3, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_SCK3, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_SFS3, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_STXD6, IOMUX_CONFIG_FUNC),
|
||||
IOMUX_MODE(MX31_PIN_SRXD6, IOMUX_CONFIG_FUNC),
|
||||
};
|
||||
|
||||
/* USB */
|
||||
|
||||
#define OTG_RESET IOMUX_TO_GPIO(MX31_PIN_STXD4)
|
||||
#define USBH2_RESET IOMUX_TO_GPIO(MX31_PIN_SCK6)
|
||||
#define USBH2_CS IOMUX_TO_GPIO(MX31_PIN_GPIO1_3)
|
||||
|
||||
#define USB_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
|
||||
PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
|
||||
|
||||
static int usbotg_init(struct platform_device *pdev)
|
||||
{
|
||||
int err;
|
||||
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA0, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA1, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA2, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA3, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA4, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA5, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA6, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DATA7, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_CLK, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_DIR, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_NXT, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBOTG_STP, USB_PAD_CFG);
|
||||
|
||||
/* Chip already enabled by hardware */
|
||||
/* OTG phy reset*/
|
||||
err = gpio_request(OTG_RESET, "USB-OTG-RESET");
|
||||
if (err) {
|
||||
pr_err("Failed to request the usb otg reset gpio\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
err = gpio_direction_output(OTG_RESET, 1/*HIGH*/);
|
||||
if (err) {
|
||||
pr_err("Failed to reset the usb otg phy\n");
|
||||
goto otg_free_reset;
|
||||
}
|
||||
|
||||
gpio_set_value(OTG_RESET, 0/*LOW*/);
|
||||
mdelay(5);
|
||||
gpio_set_value(OTG_RESET, 1/*HIGH*/);
|
||||
mdelay(10);
|
||||
|
||||
return mx31_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED |
|
||||
MXC_EHCI_INTERFACE_DIFF_UNI);
|
||||
|
||||
otg_free_reset:
|
||||
gpio_free(OTG_RESET);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int usbh2_init(struct platform_device *pdev)
|
||||
{
|
||||
int err;
|
||||
|
||||
mxc_iomux_set_pad(MX31_PIN_USBH2_CLK, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBH2_DIR, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBH2_NXT, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBH2_STP, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBH2_DATA0, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_USBH2_DATA1, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_SRXD6, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_STXD6, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_SFS3, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_SCK3, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_SRXD3, USB_PAD_CFG);
|
||||
mxc_iomux_set_pad(MX31_PIN_STXD3, USB_PAD_CFG);
|
||||
|
||||
mxc_iomux_set_gpr(MUX_PGP_UH2, true);
|
||||
|
||||
|
||||
/* Enable the chip */
|
||||
err = gpio_request(USBH2_CS, "USB-H2-CS");
|
||||
if (err) {
|
||||
pr_err("Failed to request the usb host 2 CS gpio\n");
|
||||
return err;
|
||||
}
|
||||
|
||||
err = gpio_direction_output(USBH2_CS, 0/*Enabled*/);
|
||||
if (err) {
|
||||
pr_err("Failed to drive the usb host 2 CS gpio\n");
|
||||
goto h2_free_cs;
|
||||
}
|
||||
|
||||
/* H2 phy reset*/
|
||||
err = gpio_request(USBH2_RESET, "USB-H2-RESET");
|
||||
if (err) {
|
||||
pr_err("Failed to request the usb host 2 reset gpio\n");
|
||||
goto h2_free_cs;
|
||||
}
|
||||
|
||||
err = gpio_direction_output(USBH2_RESET, 1/*HIGH*/);
|
||||
if (err) {
|
||||
pr_err("Failed to reset the usb host 2 phy\n");
|
||||
goto h2_free_reset;
|
||||
}
|
||||
|
||||
gpio_set_value(USBH2_RESET, 0/*LOW*/);
|
||||
mdelay(5);
|
||||
gpio_set_value(USBH2_RESET, 1/*HIGH*/);
|
||||
mdelay(10);
|
||||
|
||||
return mx31_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED |
|
||||
MXC_EHCI_INTERFACE_DIFF_UNI);
|
||||
|
||||
h2_free_reset:
|
||||
gpio_free(USBH2_RESET);
|
||||
h2_free_cs:
|
||||
gpio_free(USBH2_CS);
|
||||
return err;
|
||||
}
|
||||
|
||||
static struct mxc_usbh_platform_data usbotg_pdata __initdata = {
|
||||
.init = usbotg_init,
|
||||
.portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
|
||||
};
|
||||
|
||||
static struct mxc_usbh_platform_data usbh2_pdata __initdata = {
|
||||
.init = usbh2_init,
|
||||
.portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
|
||||
};
|
||||
|
||||
/* RTC over I2C*/
|
||||
#define ARMADILLO5X0_RTC_GPIO IOMUX_TO_GPIO(MX31_PIN_SRXD4)
|
||||
|
||||
static struct i2c_board_info armadillo5x0_i2c_rtc = {
|
||||
I2C_BOARD_INFO("s35390a", 0x30),
|
||||
};
|
||||
|
||||
/* GPIO BUTTONS */
|
||||
static struct gpio_keys_button armadillo5x0_buttons[] = {
|
||||
{
|
||||
.code = KEY_ENTER, /*28*/
|
||||
.gpio = IOMUX_TO_GPIO(MX31_PIN_SCLK0),
|
||||
.active_low = 1,
|
||||
.desc = "menu",
|
||||
.wakeup = 1,
|
||||
}, {
|
||||
.code = KEY_BACK, /*158*/
|
||||
.gpio = IOMUX_TO_GPIO(MX31_PIN_SRST0),
|
||||
.active_low = 1,
|
||||
.desc = "back",
|
||||
.wakeup = 1,
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gpio_keys_platform_data
|
||||
armadillo5x0_button_data __initconst = {
|
||||
.buttons = armadillo5x0_buttons,
|
||||
.nbuttons = ARRAY_SIZE(armadillo5x0_buttons),
|
||||
};
|
||||
|
||||
/*
|
||||
* NAND Flash
|
||||
*/
|
||||
static const struct mxc_nand_platform_data
|
||||
armadillo5x0_nand_board_info __initconst = {
|
||||
.width = 1,
|
||||
.hw_ecc = 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* MTD NOR Flash
|
||||
*/
|
||||
static struct mtd_partition armadillo5x0_nor_flash_partitions[] = {
|
||||
{
|
||||
.name = "nor.bootloader",
|
||||
.offset = 0x00000000,
|
||||
.size = 4*32*1024,
|
||||
}, {
|
||||
.name = "nor.kernel",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 16*128*1024,
|
||||
}, {
|
||||
.name = "nor.userland",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 110*128*1024,
|
||||
}, {
|
||||
.name = "nor.config",
|
||||
.offset = MTDPART_OFS_APPEND,
|
||||
.size = 1*128*1024,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct physmap_flash_data
|
||||
armadillo5x0_nor_flash_pdata __initconst = {
|
||||
.width = 2,
|
||||
.parts = armadillo5x0_nor_flash_partitions,
|
||||
.nr_parts = ARRAY_SIZE(armadillo5x0_nor_flash_partitions),
|
||||
};
|
||||
|
||||
static const struct resource armadillo5x0_nor_flash_resource __initconst = {
|
||||
.flags = IORESOURCE_MEM,
|
||||
.start = MX31_CS0_BASE_ADDR,
|
||||
.end = MX31_CS0_BASE_ADDR + SZ_64M - 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* FB support
|
||||
*/
|
||||
static const struct fb_videomode fb_modedb[] = {
|
||||
{ /* 640x480 @ 60 Hz */
|
||||
.name = "CRT-VGA",
|
||||
.refresh = 60,
|
||||
.xres = 640,
|
||||
.yres = 480,
|
||||
.pixclock = 39721,
|
||||
.left_margin = 35,
|
||||
.right_margin = 115,
|
||||
.upper_margin = 43,
|
||||
.lower_margin = 1,
|
||||
.hsync_len = 10,
|
||||
.vsync_len = 1,
|
||||
.sync = FB_SYNC_OE_ACT_HIGH,
|
||||
.vmode = FB_VMODE_NONINTERLACED,
|
||||
.flag = 0,
|
||||
}, {/* 800x600 @ 56 Hz */
|
||||
.name = "CRT-SVGA",
|
||||
.refresh = 56,
|
||||
.xres = 800,
|
||||
.yres = 600,
|
||||
.pixclock = 30000,
|
||||
.left_margin = 30,
|
||||
.right_margin = 108,
|
||||
.upper_margin = 13,
|
||||
.lower_margin = 10,
|
||||
.hsync_len = 10,
|
||||
.vsync_len = 1,
|
||||
.sync = FB_SYNC_OE_ACT_HIGH | FB_SYNC_HOR_HIGH_ACT |
|
||||
FB_SYNC_VERT_HIGH_ACT,
|
||||
.vmode = FB_VMODE_NONINTERLACED,
|
||||
.flag = 0,
|
||||
},
|
||||
};
|
||||
|
||||
static struct mx3fb_platform_data mx3fb_pdata __initdata = {
|
||||
.name = "CRT-VGA",
|
||||
.mode = fb_modedb,
|
||||
.num_modes = ARRAY_SIZE(fb_modedb),
|
||||
};
|
||||
|
||||
/*
|
||||
* SDHC 1
|
||||
* MMC support
|
||||
*/
|
||||
static int armadillo5x0_sdhc1_get_ro(struct device *dev)
|
||||
{
|
||||
return gpio_get_value(IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B));
|
||||
}
|
||||
|
||||
static int armadillo5x0_sdhc1_init(struct device *dev,
|
||||
irq_handler_t detect_irq, void *data)
|
||||
{
|
||||
int ret;
|
||||
int gpio_det, gpio_wp;
|
||||
|
||||
gpio_det = IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK);
|
||||
gpio_wp = IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B);
|
||||
|
||||
ret = gpio_request(gpio_det, "sdhc-card-detect");
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
gpio_direction_input(gpio_det);
|
||||
|
||||
ret = gpio_request(gpio_wp, "sdhc-write-protect");
|
||||
if (ret)
|
||||
goto err_gpio_free;
|
||||
|
||||
gpio_direction_input(gpio_wp);
|
||||
|
||||
/* When supported the trigger type have to be BOTH */
|
||||
ret = request_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK)),
|
||||
detect_irq, IRQF_TRIGGER_FALLING,
|
||||
"sdhc-detect", data);
|
||||
|
||||
if (ret)
|
||||
goto err_gpio_free_2;
|
||||
|
||||
return 0;
|
||||
|
||||
err_gpio_free_2:
|
||||
gpio_free(gpio_wp);
|
||||
|
||||
err_gpio_free:
|
||||
gpio_free(gpio_det);
|
||||
|
||||
return ret;
|
||||
|
||||
}
|
||||
|
||||
static void armadillo5x0_sdhc1_exit(struct device *dev, void *data)
|
||||
{
|
||||
free_irq(gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK)), data);
|
||||
gpio_free(IOMUX_TO_GPIO(MX31_PIN_ATA_DMACK));
|
||||
gpio_free(IOMUX_TO_GPIO(MX31_PIN_ATA_RESET_B));
|
||||
}
|
||||
|
||||
static const struct imxmmc_platform_data sdhc_pdata __initconst = {
|
||||
.get_ro = armadillo5x0_sdhc1_get_ro,
|
||||
.init = armadillo5x0_sdhc1_init,
|
||||
.exit = armadillo5x0_sdhc1_exit,
|
||||
};
|
||||
|
||||
/*
|
||||
* SMSC 9118
|
||||
* Network support
|
||||
*/
|
||||
static struct resource armadillo5x0_smc911x_resources[] = {
|
||||
{
|
||||
.start = MX31_CS3_BASE_ADDR,
|
||||
.end = MX31_CS3_BASE_ADDR + SZ_32M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
}, {
|
||||
/* irq number is run-time assigned */
|
||||
.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
|
||||
},
|
||||
};
|
||||
|
||||
static struct smsc911x_platform_config smsc911x_info = {
|
||||
.flags = SMSC911X_USE_16BIT,
|
||||
.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
|
||||
.irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
|
||||
};
|
||||
|
||||
static struct platform_device armadillo5x0_smc911x_device = {
|
||||
.name = "smsc911x",
|
||||
.id = -1,
|
||||
.num_resources = ARRAY_SIZE(armadillo5x0_smc911x_resources),
|
||||
.resource = armadillo5x0_smc911x_resources,
|
||||
.dev = {
|
||||
.platform_data = &smsc911x_info,
|
||||
},
|
||||
};
|
||||
|
||||
/* UART device data */
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
static struct platform_device *devices[] __initdata = {
|
||||
&armadillo5x0_smc911x_device,
|
||||
};
|
||||
|
||||
static struct regulator_consumer_supply dummy_supplies[] = {
|
||||
REGULATOR_SUPPLY("vdd33a", "smsc911x"),
|
||||
REGULATOR_SUPPLY("vddvario", "smsc911x"),
|
||||
};
|
||||
|
||||
/*
|
||||
* Perform board specific initializations
|
||||
*/
|
||||
static void __init armadillo5x0_init(void)
|
||||
{
|
||||
imx31_soc_init();
|
||||
|
||||
mxc_iomux_setup_multiple_pins(armadillo5x0_pins,
|
||||
ARRAY_SIZE(armadillo5x0_pins), "armadillo5x0");
|
||||
|
||||
regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
|
||||
|
||||
imx31_add_imx_i2c1(NULL);
|
||||
|
||||
/* Register UART */
|
||||
imx31_add_imx_uart0(&uart_pdata);
|
||||
imx31_add_imx_uart1(&uart_pdata);
|
||||
|
||||
/* Register FB */
|
||||
imx31_add_ipu_core();
|
||||
imx31_add_mx3_sdc_fb(&mx3fb_pdata);
|
||||
|
||||
/* Register NOR Flash */
|
||||
platform_device_register_resndata(NULL, "physmap-flash", -1,
|
||||
&armadillo5x0_nor_flash_resource, 1,
|
||||
&armadillo5x0_nor_flash_pdata,
|
||||
sizeof(armadillo5x0_nor_flash_pdata));
|
||||
|
||||
/* Register NAND Flash */
|
||||
imx31_add_mxc_nand(&armadillo5x0_nand_board_info);
|
||||
|
||||
/* set NAND page size to 2k if not configured via boot mode pins */
|
||||
imx_writel(imx_readl(mx3_ccm_base + MXC_CCM_RCSR) | (1 << 30),
|
||||
mx3_ccm_base + MXC_CCM_RCSR);
|
||||
}
|
||||
|
||||
static void __init armadillo5x0_late(void)
|
||||
{
|
||||
armadillo5x0_smc911x_resources[1].start =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
armadillo5x0_smc911x_resources[1].end =
|
||||
gpio_to_irq(IOMUX_TO_GPIO(MX31_PIN_GPIO1_0));
|
||||
platform_add_devices(devices, ARRAY_SIZE(devices));
|
||||
|
||||
imx_add_gpio_keys(&armadillo5x0_button_data);
|
||||
|
||||
/* SMSC9118 IRQ pin */
|
||||
gpio_direction_input(MX31_PIN_GPIO1_0);
|
||||
|
||||
/* Register SDHC */
|
||||
imx31_add_mxc_mmc(0, &sdhc_pdata);
|
||||
|
||||
/* RTC */
|
||||
/* Get RTC IRQ and register the chip */
|
||||
if (!gpio_request(ARMADILLO5X0_RTC_GPIO, "rtc")) {
|
||||
if (!gpio_direction_input(ARMADILLO5X0_RTC_GPIO))
|
||||
armadillo5x0_i2c_rtc.irq =
|
||||
gpio_to_irq(ARMADILLO5X0_RTC_GPIO);
|
||||
else
|
||||
gpio_free(ARMADILLO5X0_RTC_GPIO);
|
||||
}
|
||||
|
||||
if (armadillo5x0_i2c_rtc.irq == 0)
|
||||
pr_warn("armadillo5x0_init: failed to get RTC IRQ\n");
|
||||
i2c_register_board_info(1, &armadillo5x0_i2c_rtc, 1);
|
||||
|
||||
/* USB */
|
||||
usbotg_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (usbotg_pdata.otg)
|
||||
imx31_add_mxc_ehci_otg(&usbotg_pdata);
|
||||
usbh2_pdata.otg = imx_otg_ulpi_create(ULPI_OTG_DRVVBUS |
|
||||
ULPI_OTG_DRVVBUS_EXT);
|
||||
if (usbh2_pdata.otg)
|
||||
imx31_add_mxc_ehci_hs(2, &usbh2_pdata);
|
||||
}
|
||||
|
||||
static void __init armadillo5x0_timer_init(void)
|
||||
{
|
||||
mx31_clocks_init(26000000);
|
||||
}
|
||||
|
||||
MACHINE_START(ARMADILLO5X0, "Armadillo-500")
|
||||
/* Maintainer: Alberto Panizzo */
|
||||
.atag_offset = 0x100,
|
||||
.map_io = mx31_map_io,
|
||||
.init_early = imx31_init_early,
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = armadillo5x0_timer_init,
|
||||
.init_machine = armadillo5x0_init,
|
||||
.init_late = armadillo5x0_late,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
@ -1,54 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright (C) 2000 Deep Blue Solutions Ltd
|
||||
* Copyright (C) 2002 Shane Nay (shane@minirl.com)
|
||||
* Copyright 2005-2007 Freescale Semiconductor, Inc. All Rights Reserved.
|
||||
* Copyright 2011 Denis 'GNUtoo' Carikli <GNUtoo@no-log.org>
|
||||
*/
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach-types.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "devices-imx31.h"
|
||||
#include "hardware.h"
|
||||
#include "iomux-mx3.h"
|
||||
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
static const unsigned int bug_pins[] __initconst = {
|
||||
MX31_PIN_PC_RST__CTS5,
|
||||
MX31_PIN_PC_VS2__RTS5,
|
||||
MX31_PIN_PC_BVD2__TXD5,
|
||||
MX31_PIN_PC_BVD1__RXD5,
|
||||
};
|
||||
|
||||
static void __init bug_board_init(void)
|
||||
{
|
||||
imx31_soc_init();
|
||||
|
||||
mxc_iomux_setup_multiple_pins(bug_pins,
|
||||
ARRAY_SIZE(bug_pins), "uart-4");
|
||||
imx31_add_imx_uart4(&uart_pdata);
|
||||
}
|
||||
|
||||
static void __init bug_timer_init(void)
|
||||
{
|
||||
mx31_clocks_init(26000000);
|
||||
}
|
||||
|
||||
MACHINE_START(BUG, "BugLabs BUGBase")
|
||||
.map_io = mx31_map_io,
|
||||
.init_early = imx31_init_early,
|
||||
.init_irq = mx31_init_irq,
|
||||
.init_time = bug_timer_init,
|
||||
.init_machine = bug_board_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
81
arch/arm/mach-imx/mach-imx27.c
Normal file
81
arch/arm/mach-imx/mach-imx27.c
Normal file
@ -0,0 +1,81 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* Copyright 2012 Sascha Hauer, Pengutronix
|
||||
*/
|
||||
|
||||
#include <linux/init.h>
|
||||
#include <linux/irq.h>
|
||||
#include <linux/of_address.h>
|
||||
#include <linux/of_irq.h>
|
||||
#include <linux/of_platform.h>
|
||||
#include <linux/mm.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/map.h>
|
||||
#include <asm/mach/time.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "hardware.h"
|
||||
#include "mx27.h"
|
||||
|
||||
/* MX27 memory map definition */
|
||||
static struct map_desc imx27_io_desc[] __initdata = {
|
||||
/*
|
||||
* this fixed mapping covers:
|
||||
* - AIPI1
|
||||
* - AIPI2
|
||||
* - AITC
|
||||
* - ROM Patch
|
||||
* - and some reserved space
|
||||
*/
|
||||
imx_map_entry(MX27, AIPI, MT_DEVICE),
|
||||
/*
|
||||
* this fixed mapping covers:
|
||||
* - CSI
|
||||
* - ATA
|
||||
*/
|
||||
imx_map_entry(MX27, SAHB1, MT_DEVICE),
|
||||
/*
|
||||
* this fixed mapping covers:
|
||||
* - EMI
|
||||
*/
|
||||
imx_map_entry(MX27, X_MEMC, MT_DEVICE),
|
||||
};
|
||||
|
||||
/*
|
||||
* Initialize the memory map. It is called during the
|
||||
* system startup to create static physical to virtual
|
||||
* memory map for the IO modules.
|
||||
*/
|
||||
static void __init mx27_map_io(void)
|
||||
{
|
||||
iotable_init(imx27_io_desc, ARRAY_SIZE(imx27_io_desc));
|
||||
}
|
||||
|
||||
static void __init imx27_init_early(void)
|
||||
{
|
||||
mxc_set_cpu_type(MXC_CPU_MX27);
|
||||
}
|
||||
|
||||
static void __init mx27_init_irq(void)
|
||||
{
|
||||
void __iomem *avic_base;
|
||||
struct device_node *np;
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,avic");
|
||||
avic_base = of_iomap(np, 0);
|
||||
BUG_ON(!avic_base);
|
||||
mxc_init_irq(avic_base);
|
||||
}
|
||||
|
||||
static const char * const imx27_dt_board_compat[] __initconst = {
|
||||
"fsl,imx27",
|
||||
NULL
|
||||
};
|
||||
|
||||
DT_MACHINE_START(IMX27_DT, "Freescale i.MX27 (Device Tree Support)")
|
||||
.map_io = mx27_map_io,
|
||||
.init_early = imx27_init_early,
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_late = imx27_pm_init,
|
||||
.dt_compat = imx27_dt_board_compat,
|
||||
MACHINE_END
|
@ -1,562 +0,0 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
/*
|
||||
* mach-imx27_visstrim_m10.c
|
||||
*
|
||||
* Copyright 2010 Javier Martin <javier.martin@vista-silicon.com>
|
||||
*
|
||||
* Based on mach-pcm038.c, mach-pca100.c, mach-mx27ads.c and others.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/mtd/physmap.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/platform_data/pca953x.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/gpio.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/dma-map-ops.h>
|
||||
#include <linux/leds.h>
|
||||
#include <linux/platform_data/asoc-mx27vis.h>
|
||||
#include <sound/tlv320aic32x4.h>
|
||||
#include <asm/mach-types.h>
|
||||
#include <asm/mach/arch.h>
|
||||
#include <asm/mach/time.h>
|
||||
#include <asm/system_info.h>
|
||||
#include <asm/memblock.h>
|
||||
|
||||
#include "common.h"
|
||||
#include "devices-imx27.h"
|
||||
#include "ehci.h"
|
||||
#include "hardware.h"
|
||||
#include "iomux-mx27.h"
|
||||
|
||||
#define TVP5150_RSTN (GPIO_PORTC + 18)
|
||||
#define TVP5150_PWDN (GPIO_PORTC + 19)
|
||||
#define OTG_PHY_CS_GPIO (GPIO_PORTF + 17)
|
||||
#define SDHC1_IRQ_GPIO IMX_GPIO_NR(2, 25)
|
||||
|
||||
#define VERSION_MASK 0x7
|
||||
#define MOTHERBOARD_SHIFT 4
|
||||
#define EXPBOARD_SHIFT 0
|
||||
|
||||
#define MOTHERBOARD_BIT2 (GPIO_PORTD + 31)
|
||||
#define MOTHERBOARD_BIT1 (GPIO_PORTD + 30)
|
||||
#define MOTHERBOARD_BIT0 (GPIO_PORTD + 29)
|
||||
|
||||
#define EXPBOARD_BIT2 (GPIO_PORTD + 25)
|
||||
#define EXPBOARD_BIT1 (GPIO_PORTD + 27)
|
||||
#define EXPBOARD_BIT0 (GPIO_PORTD + 28)
|
||||
|
||||
#define AMP_GAIN_0 (GPIO_PORTF + 9)
|
||||
#define AMP_GAIN_1 (GPIO_PORTF + 8)
|
||||
#define AMP_MUTE_SDL (GPIO_PORTE + 5)
|
||||
#define AMP_MUTE_SDR (GPIO_PORTF + 7)
|
||||
|
||||
static const int visstrim_m10_pins[] __initconst = {
|
||||
/* UART1 (console) */
|
||||
PE12_PF_UART1_TXD,
|
||||
PE13_PF_UART1_RXD,
|
||||
PE14_PF_UART1_CTS,
|
||||
PE15_PF_UART1_RTS,
|
||||
/* FEC */
|
||||
PD0_AIN_FEC_TXD0,
|
||||
PD1_AIN_FEC_TXD1,
|
||||
PD2_AIN_FEC_TXD2,
|
||||
PD3_AIN_FEC_TXD3,
|
||||
PD4_AOUT_FEC_RX_ER,
|
||||
PD5_AOUT_FEC_RXD1,
|
||||
PD6_AOUT_FEC_RXD2,
|
||||
PD7_AOUT_FEC_RXD3,
|
||||
PD8_AF_FEC_MDIO,
|
||||
PD9_AIN_FEC_MDC,
|
||||
PD10_AOUT_FEC_CRS,
|
||||
PD11_AOUT_FEC_TX_CLK,
|
||||
PD12_AOUT_FEC_RXD0,
|
||||
PD13_AOUT_FEC_RX_DV,
|
||||
PD14_AOUT_FEC_RX_CLK,
|
||||
PD15_AOUT_FEC_COL,
|
||||
PD16_AIN_FEC_TX_ER,
|
||||
PF23_AIN_FEC_TX_EN,
|
||||
/* SSI1 */
|
||||
PC20_PF_SSI1_FS,
|
||||
PC21_PF_SSI1_RXD,
|
||||
PC22_PF_SSI1_TXD,
|
||||
PC23_PF_SSI1_CLK,
|
||||
/* SDHC1 */
|
||||
PE18_PF_SD1_D0,
|
||||
PE19_PF_SD1_D1,
|
||||
PE20_PF_SD1_D2,
|
||||
PE21_PF_SD1_D3,
|
||||
PE22_PF_SD1_CMD,
|
||||
PE23_PF_SD1_CLK,
|
||||
/* Both I2Cs */
|
||||
PD17_PF_I2C_DATA,
|
||||
PD18_PF_I2C_CLK,
|
||||
PC5_PF_I2C2_SDA,
|
||||
PC6_PF_I2C2_SCL,
|
||||
/* USB OTG */
|
||||
OTG_PHY_CS_GPIO | GPIO_GPIO | GPIO_OUT,
|
||||
PC9_PF_USBOTG_DATA0,
|
||||
PC11_PF_USBOTG_DATA1,
|
||||
PC10_PF_USBOTG_DATA2,
|
||||
PC13_PF_USBOTG_DATA3,
|
||||
PC12_PF_USBOTG_DATA4,
|
||||
PC7_PF_USBOTG_DATA5,
|
||||
PC8_PF_USBOTG_DATA6,
|
||||
PE25_PF_USBOTG_DATA7,
|
||||
PE24_PF_USBOTG_CLK,
|
||||
PE2_PF_USBOTG_DIR,
|
||||
PE0_PF_USBOTG_NXT,
|
||||
PE1_PF_USBOTG_STP,
|
||||
PB23_PF_USB_PWR,
|
||||
PB24_PF_USB_OC,
|
||||
/* CSI */
|
||||
TVP5150_RSTN | GPIO_GPIO | GPIO_OUT,
|
||||
TVP5150_PWDN | GPIO_GPIO | GPIO_OUT,
|
||||
PB10_PF_CSI_D0,
|
||||
PB11_PF_CSI_D1,
|
||||
PB12_PF_CSI_D2,
|
||||
PB13_PF_CSI_D3,
|
||||
PB14_PF_CSI_D4,
|
||||
PB15_PF_CSI_MCLK,
|
||||
PB16_PF_CSI_PIXCLK,
|
||||
PB17_PF_CSI_D5,
|
||||
PB18_PF_CSI_D6,
|
||||
PB19_PF_CSI_D7,
|
||||
PB20_PF_CSI_VSYNC,
|
||||
PB21_PF_CSI_HSYNC,
|
||||
/* mother board version */
|
||||
MOTHERBOARD_BIT2 | GPIO_GPIO | GPIO_IN | GPIO_PUEN,
|
||||
MOTHERBOARD_BIT1 | GPIO_GPIO | GPIO_IN | GPIO_PUEN,
|
||||
MOTHERBOARD_BIT0 | GPIO_GPIO | GPIO_IN | GPIO_PUEN,
|
||||
/* expansion board version */
|
||||
EXPBOARD_BIT2 | GPIO_GPIO | GPIO_IN | GPIO_PUEN,
|
||||
EXPBOARD_BIT1 | GPIO_GPIO | GPIO_IN | GPIO_PUEN,
|
||||
EXPBOARD_BIT0 | GPIO_GPIO | GPIO_IN | GPIO_PUEN,
|
||||
/* Audio AMP control */
|
||||
AMP_GAIN_0 | GPIO_GPIO | GPIO_OUT,
|
||||
AMP_GAIN_1 | GPIO_GPIO | GPIO_OUT,
|
||||
AMP_MUTE_SDL | GPIO_GPIO | GPIO_OUT,
|
||||
AMP_MUTE_SDR | GPIO_GPIO | GPIO_OUT,
|
||||
};
|
||||
|
||||
static struct gpio visstrim_m10_version_gpios[] = {
|
||||
{ EXPBOARD_BIT0, GPIOF_IN, "exp-version-0" },
|
||||
{ EXPBOARD_BIT1, GPIOF_IN, "exp-version-1" },
|
||||
{ EXPBOARD_BIT2, GPIOF_IN, "exp-version-2" },
|
||||
{ MOTHERBOARD_BIT0, GPIOF_IN, "mother-version-0" },
|
||||
{ MOTHERBOARD_BIT1, GPIOF_IN, "mother-version-1" },
|
||||
{ MOTHERBOARD_BIT2, GPIOF_IN, "mother-version-2" },
|
||||
};
|
||||
|
||||
static const struct gpio visstrim_m10_gpios[] __initconst = {
|
||||
{
|
||||
.gpio = TVP5150_RSTN,
|
||||
.flags = GPIOF_DIR_OUT | GPIOF_INIT_HIGH,
|
||||
.label = "tvp5150_rstn",
|
||||
},
|
||||
{
|
||||
.gpio = TVP5150_PWDN,
|
||||
.flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW,
|
||||
.label = "tvp5150_pwdn",
|
||||
},
|
||||
{
|
||||
.gpio = OTG_PHY_CS_GPIO,
|
||||
.flags = GPIOF_DIR_OUT | GPIOF_INIT_LOW,
|
||||
.label = "usbotg_cs",
|
||||
},
|
||||
{
|
||||
.gpio = AMP_GAIN_0,
|
||||
.flags = GPIOF_DIR_OUT,
|
||||
.label = "amp-gain-0",
|
||||
},
|
||||
{
|
||||
.gpio = AMP_GAIN_1,
|
||||
.flags = GPIOF_DIR_OUT,
|
||||
.label = "amp-gain-1",
|
||||
},
|
||||
{
|
||||
.gpio = AMP_MUTE_SDL,
|
||||
.flags = GPIOF_DIR_OUT,
|
||||
.label = "amp-mute-sdl",
|
||||
},
|
||||
{
|
||||
.gpio = AMP_MUTE_SDR,
|
||||
.flags = GPIOF_DIR_OUT,
|
||||
.label = "amp-mute-sdr",
|
||||
},
|
||||
};
|
||||
|
||||
/* Camera */
|
||||
static struct mx2_camera_platform_data visstrim_camera = {
|
||||
.flags = MX2_CAMERA_CCIR | MX2_CAMERA_CCIR_INTERLACE |
|
||||
MX2_CAMERA_PCLK_SAMPLE_RISING,
|
||||
.clk = 100000,
|
||||
};
|
||||
|
||||
static phys_addr_t mx2_camera_base __initdata;
|
||||
#define MX2_CAMERA_BUF_SIZE SZ_8M
|
||||
|
||||
static void __init visstrim_analog_camera_init(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
|
||||
gpio_set_value(TVP5150_PWDN, 1);
|
||||
ndelay(1);
|
||||
gpio_set_value(TVP5150_RSTN, 0);
|
||||
ndelay(500);
|
||||
gpio_set_value(TVP5150_RSTN, 1);
|
||||
ndelay(200000);
|
||||
|
||||
pdev = imx27_add_mx2_camera(&visstrim_camera);
|
||||
if (IS_ERR(pdev))
|
||||
return;
|
||||
|
||||
dma_declare_coherent_memory(&pdev->dev, mx2_camera_base,
|
||||
mx2_camera_base, MX2_CAMERA_BUF_SIZE);
|
||||
}
|
||||
|
||||
static void __init visstrim_reserve(void)
|
||||
{
|
||||
/* reserve 4 MiB for mx2-camera */
|
||||
mx2_camera_base = arm_memblock_steal(3 * MX2_CAMERA_BUF_SIZE,
|
||||
MX2_CAMERA_BUF_SIZE);
|
||||
}
|
||||
|
||||
/* GPIOs used as events for applications */
|
||||
static struct gpio_keys_button visstrim_gpio_keys[] = {
|
||||
{
|
||||
.type = EV_KEY,
|
||||
.code = KEY_RESTART,
|
||||
.gpio = (GPIO_PORTC + 15),
|
||||
.desc = "Default config",
|
||||
.active_low = 0,
|
||||
.wakeup = 1,
|
||||
},
|
||||
{
|
||||
.type = EV_KEY,
|
||||
.code = KEY_RECORD,
|
||||
.gpio = (GPIO_PORTF + 14),
|
||||
.desc = "Record",
|
||||
.active_low = 0,
|
||||
.wakeup = 1,
|
||||
},
|
||||
{
|
||||
.type = EV_KEY,
|
||||
.code = KEY_STOP,
|
||||
.gpio = (GPIO_PORTF + 13),
|
||||
.desc = "Stop",
|
||||
.active_low = 0,
|
||||
.wakeup = 1,
|
||||
}
|
||||
};
|
||||
|
||||
static const struct gpio_keys_platform_data
|
||||
visstrim_gpio_keys_platform_data __initconst = {
|
||||
.buttons = visstrim_gpio_keys,
|
||||
.nbuttons = ARRAY_SIZE(visstrim_gpio_keys),
|
||||
};
|
||||
|
||||
/* led */
|
||||
static const struct gpio_led visstrim_m10_leds[] __initconst = {
|
||||
{
|
||||
.name = "visstrim:ld0",
|
||||
.default_trigger = "nand-disk",
|
||||
.gpio = (GPIO_PORTC + 29),
|
||||
},
|
||||
{
|
||||
.name = "visstrim:ld1",
|
||||
.default_trigger = "nand-disk",
|
||||
.gpio = (GPIO_PORTC + 24),
|
||||
},
|
||||
{
|
||||
.name = "visstrim:ld2",
|
||||
.default_trigger = "nand-disk",
|
||||
.gpio = (GPIO_PORTC + 28),
|
||||
},
|
||||
{
|
||||
.name = "visstrim:ld3",
|
||||
.default_trigger = "nand-disk",
|
||||
.gpio = (GPIO_PORTC + 25),
|
||||
},
|
||||
};
|
||||
|
||||
static const struct gpio_led_platform_data visstrim_m10_led_data __initconst = {
|
||||
.leds = visstrim_m10_leds,
|
||||
.num_leds = ARRAY_SIZE(visstrim_m10_leds),
|
||||
};
|
||||
|
||||
/* Visstrim_SM10 has a microSD slot connected to sdhc1 */
|
||||
static int visstrim_m10_sdhc1_init(struct device *dev,
|
||||
irq_handler_t detect_irq, void *data)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = request_irq(gpio_to_irq(SDHC1_IRQ_GPIO), detect_irq,
|
||||
IRQF_TRIGGER_FALLING, "mmc-detect", data);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void visstrim_m10_sdhc1_exit(struct device *dev, void *data)
|
||||
{
|
||||
free_irq(gpio_to_irq(SDHC1_IRQ_GPIO), data);
|
||||
}
|
||||
|
||||
static const struct imxmmc_platform_data visstrim_m10_sdhc_pdata __initconst = {
|
||||
.init = visstrim_m10_sdhc1_init,
|
||||
.exit = visstrim_m10_sdhc1_exit,
|
||||
};
|
||||
|
||||
/* Visstrim_SM10 NOR flash */
|
||||
static struct physmap_flash_data visstrim_m10_flash_data = {
|
||||
.width = 2,
|
||||
};
|
||||
|
||||
static struct resource visstrim_m10_flash_resource = {
|
||||
.start = 0xc0000000,
|
||||
.end = 0xc0000000 + SZ_64M - 1,
|
||||
.flags = IORESOURCE_MEM,
|
||||
};
|
||||
|
||||
static struct platform_device visstrim_m10_nor_mtd_device = {
|
||||
.name = "physmap-flash",
|
||||
.id = 0,
|
||||
.dev = {
|
||||
.platform_data = &visstrim_m10_flash_data,
|
||||
},
|
||||
.num_resources = 1,
|
||||
.resource = &visstrim_m10_flash_resource,
|
||||
};
|
||||
|
||||
static struct platform_device *platform_devices[] __initdata = {
|
||||
&visstrim_m10_nor_mtd_device,
|
||||
};
|
||||
|
||||
/* Visstrim_M10 uses UART0 as console */
|
||||
static const struct imxuart_platform_data uart_pdata __initconst = {
|
||||
.flags = IMXUART_HAVE_RTSCTS,
|
||||
};
|
||||
|
||||
/* I2C */
|
||||
static const struct imxi2c_platform_data visstrim_m10_i2c_data __initconst = {
|
||||
.bitrate = 100000,
|
||||
};
|
||||
|
||||
static struct pca953x_platform_data visstrim_m10_pca9555_pdata = {
|
||||
.gpio_base = 240, /* After MX27 internal GPIOs */
|
||||
.invert = 0,
|
||||
};
|
||||
|
||||
static struct aic32x4_pdata visstrim_m10_aic32x4_pdata = {
|
||||
.power_cfg = AIC32X4_PWR_MICBIAS_2075_LDOIN |
|
||||
AIC32X4_PWR_AVDD_DVDD_WEAK_DISABLE |
|
||||
AIC32X4_PWR_AIC32X4_LDO_ENABLE |
|
||||
AIC32X4_PWR_CMMODE_LDOIN_RANGE_18_36 |
|
||||
AIC32X4_PWR_CMMODE_HP_LDOIN_POWERED,
|
||||
.micpga_routing = AIC32X4_MICPGA_ROUTE_LMIC_IN2R_10K |
|
||||
AIC32X4_MICPGA_ROUTE_RMIC_IN1L_10K,
|
||||
.swapdacs = false,
|
||||
};
|
||||
|
||||
static struct i2c_board_info visstrim_m10_i2c_devices[] = {
|
||||
{
|
||||
I2C_BOARD_INFO("pca9555", 0x20),
|
||||
.platform_data = &visstrim_m10_pca9555_pdata,
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("tlv320aic32x4", 0x18),
|
||||
.platform_data = &visstrim_m10_aic32x4_pdata,
|
||||
},
|
||||
{
|
||||
I2C_BOARD_INFO("m41t00", 0x68),
|
||||
}
|
||||
};
|
||||
|
||||
/* USB OTG */
|
||||
static int otg_phy_init(struct platform_device *pdev)
|
||||
{
|
||||
return mx27_initialize_usb_hw(pdev->id, MXC_EHCI_POWER_PINS_ENABLED);
|
||||
}
|
||||
|
||||
static const struct mxc_usbh_platform_data
|
||||
visstrim_m10_usbotg_pdata __initconst = {
|
||||
.init = otg_phy_init,
|
||||
.portsc = MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT,
|
||||
};
|
||||
|
||||
/* SSI */
|
||||
static const struct imx_ssi_platform_data visstrim_m10_ssi_pdata __initconst = {
|
||||
.flags = IMX_SSI_DMA | IMX_SSI_SYN,
|
||||
};
|
||||
|
||||
/* coda */
|
||||
|
||||
static void __init visstrim_coda_init(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
|
||||
pdev = imx27_add_coda();
|
||||
dma_declare_coherent_memory(&pdev->dev,
|
||||
mx2_camera_base + MX2_CAMERA_BUF_SIZE,
|
||||
mx2_camera_base + MX2_CAMERA_BUF_SIZE,
|
||||
MX2_CAMERA_BUF_SIZE);
|
||||
}
|
||||
|
||||
/* DMA deinterlace */
|
||||
static struct platform_device visstrim_deinterlace = {
|
||||
.name = "m2m-deinterlace",
|
||||
.id = 0,
|
||||
};
|
||||
|
||||
static void __init visstrim_deinterlace_init(void)
|
||||
{
|
||||
int ret = -ENOMEM;
|
||||
struct platform_device *pdev = &visstrim_deinterlace;
|
||||
|
||||
ret = platform_device_register(pdev);
|
||||
|
||||
dma_declare_coherent_memory(&pdev->dev,
|
||||
mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE,
|
||||
mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE,
|
||||
MX2_CAMERA_BUF_SIZE);
|
||||
}
|
||||
|
||||
/* Emma-PrP for format conversion */
|
||||
static void __init visstrim_emmaprp_init(void)
|
||||
{
|
||||
struct platform_device *pdev;
|
||||
int ret;
|
||||
|
||||
pdev = imx27_add_mx2_emmaprp();
|
||||
if (IS_ERR(pdev))
|
||||
return;
|
||||
|
||||
/*
|
||||
* Use the same memory area as the analog camera since both
|
||||
* devices are, by nature, exclusive.
|
||||
*/
|
||||
ret = dma_declare_coherent_memory(&pdev->dev,
|
||||
mx2_camera_base, mx2_camera_base,
|
||||
MX2_CAMERA_BUF_SIZE);
|
||||
if (ret)
|
||||
pr_err("Failed to declare memory for emmaprp\n");
|
||||
}
|
||||
|
||||
/* Audio */
|
||||
static const struct snd_mx27vis_platform_data snd_mx27vis_pdata __initconst = {
|
||||
.amp_gain0_gpio = AMP_GAIN_0,
|
||||
.amp_gain1_gpio = AMP_GAIN_1,
|
||||
.amp_mutel_gpio = AMP_MUTE_SDL,
|
||||
.amp_muter_gpio = AMP_MUTE_SDR,
|
||||
};
|
||||
|
||||
static void __init visstrim_m10_revision(void)
|
||||
{
|
||||
int exp_version = 0;
|
||||
int mo_version = 0;
|
||||
int ret;
|
||||
|
||||
ret = gpio_request_array(visstrim_m10_version_gpios,
|
||||
ARRAY_SIZE(visstrim_m10_version_gpios));
|
||||
if (ret) {
|
||||
pr_err("Failed to request version gpios");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Get expansion board version (negative logic) */
|
||||
exp_version |= !gpio_get_value(EXPBOARD_BIT2) << 2;
|
||||
exp_version |= !gpio_get_value(EXPBOARD_BIT1) << 1;
|
||||
exp_version |= !gpio_get_value(EXPBOARD_BIT0);
|
||||
|
||||
/* Get mother board version (negative logic) */
|
||||
mo_version |= !gpio_get_value(MOTHERBOARD_BIT2) << 2;
|
||||
mo_version |= !gpio_get_value(MOTHERBOARD_BIT1) << 1;
|
||||
mo_version |= !gpio_get_value(MOTHERBOARD_BIT0);
|
||||
|
||||
system_rev = 0x27000;
|
||||
system_rev |= (mo_version << MOTHERBOARD_SHIFT);
|
||||
system_rev |= (exp_version << EXPBOARD_SHIFT);
|
||||
}
|
||||
|
||||
static void __init visstrim_m10_board_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
imx27_soc_init();
|
||||
visstrim_m10_revision();
|
||||
|
||||
ret = mxc_gpio_setup_multiple_pins(visstrim_m10_pins,
|
||||
ARRAY_SIZE(visstrim_m10_pins), "VISSTRIM_M10");
|
||||
if (ret)
|
||||
pr_err("Failed to setup pins (%d)\n", ret);
|
||||
|
||||
imx27_add_imx_ssi(0, &visstrim_m10_ssi_pdata);
|
||||
imx27_add_imx_uart0(&uart_pdata);
|
||||
|
||||
imx27_add_imx_i2c(0, &visstrim_m10_i2c_data);
|
||||
imx27_add_imx_i2c(1, &visstrim_m10_i2c_data);
|
||||
i2c_register_board_info(0, visstrim_m10_i2c_devices,
|
||||
ARRAY_SIZE(visstrim_m10_i2c_devices));
|
||||
|
||||
imx27_add_mxc_mmc(0, &visstrim_m10_sdhc_pdata);
|
||||
imx27_add_mxc_ehci_otg(&visstrim_m10_usbotg_pdata);
|
||||
imx27_add_fec(NULL);
|
||||
|
||||
platform_add_devices(platform_devices, ARRAY_SIZE(platform_devices));
|
||||
}
|
||||
|
||||
static void __init visstrim_m10_late_init(void)
|
||||
{
|
||||
int mo_version, ret;
|
||||
|
||||
ret = gpio_request_array(visstrim_m10_gpios,
|
||||
ARRAY_SIZE(visstrim_m10_gpios));
|
||||
if (ret)
|
||||
pr_err("Failed to request gpios (%d)\n", ret);
|
||||
|
||||
imx_add_gpio_keys(&visstrim_gpio_keys_platform_data);
|
||||
|
||||
imx_add_platform_device("mx27vis", 0, NULL, 0, &snd_mx27vis_pdata,
|
||||
sizeof(snd_mx27vis_pdata));
|
||||
|
||||
gpio_led_register_device(0, &visstrim_m10_led_data);
|
||||
|
||||
/* Use mother board version to decide what video devices we shall use */
|
||||
mo_version = (system_rev >> MOTHERBOARD_SHIFT) & VERSION_MASK;
|
||||
if (mo_version & 0x1) {
|
||||
visstrim_emmaprp_init();
|
||||
|
||||
/*
|
||||
* Despite not being used, tvp5150 must be
|
||||
* powered on to avoid I2C problems. To minimize
|
||||
* power consupmtion keep reset enabled.
|
||||
*/
|
||||
gpio_set_value(TVP5150_PWDN, 1);
|
||||
ndelay(1);
|
||||
gpio_set_value(TVP5150_RSTN, 0);
|
||||
} else {
|
||||
visstrim_deinterlace_init();
|
||||
visstrim_analog_camera_init();
|
||||
}
|
||||
|
||||
visstrim_coda_init();
|
||||
}
|
||||
|
||||
static void __init visstrim_m10_timer_init(void)
|
||||
{
|
||||
mx27_clocks_init((unsigned long)25000000);
|
||||
}
|
||||
|
||||
MACHINE_START(IMX27_VISSTRIM_M10, "Vista Silicon Visstrim_M10")
|
||||
.atag_offset = 0x100,
|
||||
.reserve = visstrim_reserve,
|
||||
.map_io = mx27_map_io,
|
||||
.init_early = imx27_init_early,
|
||||
.init_irq = mx27_init_irq,
|
||||
.init_time = visstrim_m10_timer_init,
|
||||
.init_machine = visstrim_m10_board_init,
|
||||
.init_late = visstrim_m10_late_init,
|
||||
.restart = mxc_restart,
|
||||
MACHINE_END
|
@ -67,6 +67,9 @@ static const char *const imx7ulp_dt_compat[] __initconst = {
|
||||
|
||||
static void __init imx7ulp_init_late(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_ARM_IMX_CPUFREQ_DT))
|
||||
platform_device_register_simple("imx-cpufreq-dt", -1, NULL, 0);
|
||||
|
||||
imx7ulp_cpuidle_init();
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user