]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
Merge branch 'sirf/dt' into next/dt
authorOlof Johansson <olof@lixom.net>
Tue, 29 Oct 2013 19:41:43 +0000 (12:41 -0700)
committerOlof Johansson <olof@lixom.net>
Tue, 29 Oct 2013 19:41:43 +0000 (12:41 -0700)
From Barry Song:
Some missed dt nodes for sirf dts for 3.13. Among them:
 - add missed chhifbg node in prima2 and atlas6 dts
 - add missed cell, cs and dma channel for SPI nodes
 - add missed graphics2d iobg in atlas6 dts
 - add missed address-cells and size-cells for prima2 I2C
 - add missed memcontrol-monitor node in prima2 and atlas6 dts

* sirf/dt:
  ARM: dts: sirf: add missed address-cells and size-cells for prima2 I2C
  ARM: dts: sirf: add missed cell, cs and dma channel for SPI nodes
  ARM: dts: sirf: add missed graphics2d iobg in atlas6 dts
  ARM: dts: sirf: add missed chhifbg node in prima2 and atlas6 dts
  ARM: dts: sirf: add missed memcontrol-monitor node in prima2 and atlas6 dts

Signed-off-by: Olof Johansson <olof@lixom.net>
436 files changed:
Documentation/devicetree/bindings/arm/omap/omap.txt
Documentation/devicetree/bindings/arm/vic.txt
Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt [new file with mode: 0644]
Documentation/devicetree/bindings/crypto/omap-aes.txt [new file with mode: 0644]
Documentation/devicetree/bindings/crypto/omap-sham.txt [new file with mode: 0644]
Documentation/devicetree/bindings/mmc/ti-omap-hsmmc.txt
Documentation/devicetree/bindings/pinctrl/fsl,mxs-pinctrl.txt
Documentation/devicetree/bindings/pinctrl/pinctrl-single.txt
Documentation/devicetree/bindings/usb/ux500-usb.txt
Documentation/devicetree/bindings/video/exynos_hdmi.txt
Documentation/devicetree/bindings/video/exynos_mixer.txt
Documentation/sound/alsa/HD-Audio-Models.txt
MAINTAINERS
Makefile
arch/arc/kernel/ptrace.c
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/boot/Makefile
arch/arm/boot/dts/Makefile
arch/arm/boot/dts/am335x-base0033.dts [new file with mode: 0644]
arch/arm/boot/dts/am335x-bone-common.dtsi
arch/arm/boot/dts/am335x-bone.dts
arch/arm/boot/dts/am335x-boneblack.dts
arch/arm/boot/dts/am335x-evm.dts
arch/arm/boot/dts/am335x-evmsk.dts
arch/arm/boot/dts/am335x-igep0033.dtsi [new file with mode: 0644]
arch/arm/boot/dts/am335x-nano.dts [new file with mode: 0644]
arch/arm/boot/dts/am33xx.dtsi
arch/arm/boot/dts/am4372.dtsi
arch/arm/boot/dts/am43x-epos-evm.dts
arch/arm/boot/dts/armada-370-xp.dtsi
arch/arm/boot/dts/armada-370.dtsi
arch/arm/boot/dts/armada-xp-matrix.dts [new file with mode: 0644]
arch/arm/boot/dts/armada-xp-mv78230.dtsi
arch/arm/boot/dts/armada-xp-mv78260.dtsi
arch/arm/boot/dts/armada-xp-mv78460.dtsi
arch/arm/boot/dts/armada-xp.dtsi
arch/arm/boot/dts/at91sam9g20ek_common.dtsi
arch/arm/boot/dts/at91sam9n12.dtsi
arch/arm/boot/dts/at91sam9n12ek.dts
arch/arm/boot/dts/dove-cm-a510.dts
arch/arm/boot/dts/dove-cubox.dts
arch/arm/boot/dts/dove-d2plug.dts
arch/arm/boot/dts/dove-d3plug.dts [new file with mode: 0644]
arch/arm/boot/dts/dove-dove-db.dts
arch/arm/boot/dts/dove.dtsi
arch/arm/boot/dts/dra7-evm.dts [new file with mode: 0644]
arch/arm/boot/dts/dra7.dtsi [new file with mode: 0644]
arch/arm/boot/dts/exynos4.dtsi
arch/arm/boot/dts/exynos4210-origen.dts
arch/arm/boot/dts/exynos4412-origen.dts
arch/arm/boot/dts/exynos5250-arndale.dts
arch/arm/boot/dts/exynos5250-smdk5250.dts
arch/arm/boot/dts/exynos5250.dtsi
arch/arm/boot/dts/exynos5420-smdk5420.dts
arch/arm/boot/dts/exynos5420.dtsi
arch/arm/boot/dts/imx23-evk.dts
arch/arm/boot/dts/imx23-olinuxino.dts
arch/arm/boot/dts/imx23-pinfunc.h [new file with mode: 0644]
arch/arm/boot/dts/imx23-stmp378x_devb.dts
arch/arm/boot/dts/imx23.dtsi
arch/arm/boot/dts/imx27-apf27dev.dts
arch/arm/boot/dts/imx27.dtsi
arch/arm/boot/dts/imx28-apf28.dts
arch/arm/boot/dts/imx28-apf28dev.dts
arch/arm/boot/dts/imx28-apx4devkit.dts
arch/arm/boot/dts/imx28-cfa10036.dts
arch/arm/boot/dts/imx28-cfa10037.dts
arch/arm/boot/dts/imx28-cfa10049.dts
arch/arm/boot/dts/imx28-cfa10055.dts
arch/arm/boot/dts/imx28-cfa10056.dts
arch/arm/boot/dts/imx28-cfa10057.dts
arch/arm/boot/dts/imx28-cfa10058.dts
arch/arm/boot/dts/imx28-evk.dts
arch/arm/boot/dts/imx28-m28cu3.dts [new file with mode: 0644]
arch/arm/boot/dts/imx28-m28evk.dts
arch/arm/boot/dts/imx28-pinfunc.h [new file with mode: 0644]
arch/arm/boot/dts/imx28-sps1.dts
arch/arm/boot/dts/imx28-tx28.dts
arch/arm/boot/dts/imx28.dtsi
arch/arm/boot/dts/imx51-apf51dev.dts
arch/arm/boot/dts/imx51-babbage.dts
arch/arm/boot/dts/imx51.dtsi
arch/arm/boot/dts/imx53-qsb.dts
arch/arm/boot/dts/imx6q-pinfunc.h
arch/arm/boot/dts/imx6q-sabrelite.dts
arch/arm/boot/dts/imx6q-udoo.dts [new file with mode: 0644]
arch/arm/boot/dts/imx6qdl-sabreauto.dtsi
arch/arm/boot/dts/imx6qdl-sabresd.dtsi
arch/arm/boot/dts/imx6qdl-wandboard.dtsi
arch/arm/boot/dts/imx6qdl.dtsi
arch/arm/boot/dts/imx6sl-evk.dts
arch/arm/boot/dts/imx6sl.dtsi
arch/arm/boot/dts/kirkwood-db-88f6281.dts
arch/arm/boot/dts/kirkwood-db-88f6282.dts
arch/arm/boot/dts/kirkwood-db.dtsi
arch/arm/boot/dts/kirkwood-dnskw.dtsi
arch/arm/boot/dts/kirkwood-dockstar.dts
arch/arm/boot/dts/kirkwood-goflexnet.dts
arch/arm/boot/dts/kirkwood-guruplug-server-plus.dts
arch/arm/boot/dts/kirkwood-ib62x0.dts
arch/arm/boot/dts/kirkwood-iconnect.dts
arch/arm/boot/dts/kirkwood-iomega_ix2_200.dts
arch/arm/boot/dts/kirkwood-km_kirkwood.dts
arch/arm/boot/dts/kirkwood-mplcec4.dts
arch/arm/boot/dts/kirkwood-netgear_readynas_duo_v2.dts
arch/arm/boot/dts/kirkwood-nsa310-common.dtsi
arch/arm/boot/dts/kirkwood-nsa310.dts
arch/arm/boot/dts/kirkwood-openblocks_a6.dts
arch/arm/boot/dts/kirkwood-sheevaplug-common.dtsi
arch/arm/boot/dts/kirkwood-topkick.dts
arch/arm/boot/dts/kirkwood-ts219-6282.dts
arch/arm/boot/dts/kirkwood.dtsi
arch/arm/boot/dts/mxs-pinfunc.h [new file with mode: 0644]
arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap-zoom-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap2420-h4.dts
arch/arm/boot/dts/omap3-beagle-xm.dts
arch/arm/boot/dts/omap3-beagle.dts
arch/arm/boot/dts/omap3-devkit8000.dts
arch/arm/boot/dts/omap3-evm-37xx.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-evm-common.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap3-evm.dts
arch/arm/boot/dts/omap3-gta04.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-igep.dtsi
arch/arm/boot/dts/omap3-igep0020.dts
arch/arm/boot/dts/omap3-igep0030.dts
arch/arm/boot/dts/omap3-n9.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-n900.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-n950-n9.dtsi [new file with mode: 0644]
arch/arm/boot/dts/omap3-n950.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3-zoom3.dts [new file with mode: 0644]
arch/arm/boot/dts/omap3.dtsi
arch/arm/boot/dts/omap3430-sdp.dts
arch/arm/boot/dts/omap36xx.dtsi
arch/arm/boot/dts/omap4-panda-common.dtsi
arch/arm/boot/dts/omap4-panda-es.dts
arch/arm/boot/dts/omap4-sdp.dts
arch/arm/boot/dts/omap4.dtsi
arch/arm/boot/dts/omap5-uevm.dts
arch/arm/boot/dts/omap5.dtsi
arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
arch/arm/boot/dts/r8a73a4-ape6evm.dts
arch/arm/boot/dts/r8a73a4.dtsi
arch/arm/boot/dts/r8a7740-armadillo800eva-reference.dts
arch/arm/boot/dts/r8a7740.dtsi
arch/arm/boot/dts/r8a7778-bockw-reference.dts
arch/arm/boot/dts/r8a7778.dtsi
arch/arm/boot/dts/r8a7779-marzen-reference.dts
arch/arm/boot/dts/r8a7779.dtsi
arch/arm/boot/dts/r8a7790.dtsi
arch/arm/boot/dts/r8a7791.dtsi [new file with mode: 0644]
arch/arm/boot/dts/s3c6400.dtsi [new file with mode: 0644]
arch/arm/boot/dts/s3c6410-mini6410.dts [new file with mode: 0644]
arch/arm/boot/dts/s3c6410-smdk6410.dts [new file with mode: 0644]
arch/arm/boot/dts/s3c6410.dtsi [new file with mode: 0644]
arch/arm/boot/dts/s3c64xx-pinctrl.dtsi [new file with mode: 0644]
arch/arm/boot/dts/s3c64xx.dtsi [new file with mode: 0644]
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
arch/arm/boot/dts/sh73a0.dtsi
arch/arm/boot/dts/socfpga.dtsi
arch/arm/boot/dts/socfpga_arria5.dtsi [new file with mode: 0644]
arch/arm/boot/dts/socfpga_arria5_socdk.dts [new file with mode: 0644]
arch/arm/boot/dts/socfpga_cyclone5.dts [deleted file]
arch/arm/boot/dts/socfpga_cyclone5.dtsi [new file with mode: 0644]
arch/arm/boot/dts/socfpga_cyclone5_socdk.dts [new file with mode: 0644]
arch/arm/boot/dts/socfpga_cyclone5_sockit.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-dbx5x0.dtsi
arch/arm/boot/dts/ste-href-stuib.dtsi [new file with mode: 0644]
arch/arm/boot/dts/ste-href-tvk1281618.dtsi [new file with mode: 0644]
arch/arm/boot/dts/ste-href.dtsi
arch/arm/boot/dts/ste-hrefprev60-stuib.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-hrefprev60-tvk.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-hrefprev60.dts [deleted file]
arch/arm/boot/dts/ste-hrefprev60.dtsi [new file with mode: 0644]
arch/arm/boot/dts/ste-hrefv60plus-stuib.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-hrefv60plus-tvk.dts [new file with mode: 0644]
arch/arm/boot/dts/ste-hrefv60plus.dts [deleted file]
arch/arm/boot/dts/ste-hrefv60plus.dtsi [new file with mode: 0644]
arch/arm/boot/dts/ste-snowball.dts
arch/arm/boot/dts/ste-stuib.dtsi [deleted file]
arch/arm/boot/dts/sun4i-a10.dtsi
arch/arm/boot/dts/sun5i-a10s.dtsi
arch/arm/boot/dts/sun5i-a13.dtsi
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun7i-a20-cubieboard2.dts
arch/arm/boot/dts/sun7i-a20-cubietruck.dts [new file with mode: 0644]
arch/arm/boot/dts/sun7i-a20-olinuxino-micro.dts
arch/arm/boot/dts/sun7i-a20.dtsi
arch/arm/boot/dts/tegra114-dalmore.dts
arch/arm/boot/dts/tegra124-venice2.dts [new file with mode: 0644]
arch/arm/boot/dts/tegra124.dtsi [new file with mode: 0644]
arch/arm/boot/dts/tegra30-cardhu.dtsi
arch/arm/boot/dts/tegra30.dtsi
arch/arm/boot/dts/twl4030.dtsi
arch/arm/boot/dts/twl6030_omap4.dtsi [new file with mode: 0644]
arch/arm/boot/dts/vf610-cosmic.dts [new file with mode: 0644]
arch/arm/boot/dts/vf610-twr.dts
arch/arm/boot/dts/vf610.dtsi
arch/arm/boot/install.sh
arch/arm/configs/omap2plus_defconfig
arch/arm/configs/u8500_defconfig
arch/arm/include/asm/jump_label.h
arch/arm/mach-at91/at91sam9n12.c
arch/arm/mach-kirkwood/board-dt.c
arch/arm/mach-mxs/mach-mxs.c
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/board-3630sdp.c [deleted file]
arch/arm/mach-omap2/board-generic.c
arch/arm/mach-omap2/board-igep0020.c [deleted file]
arch/arm/mach-omap2/board-ldp.c
arch/arm/mach-omap2/board-omap3evm.c [deleted file]
arch/arm/mach-omap2/board-rm680.c [deleted file]
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-omap2/board-zoom-debugboard.c [deleted file]
arch/arm/mach-omap2/board-zoom-display.c [deleted file]
arch/arm/mach-omap2/board-zoom-peripherals.c [deleted file]
arch/arm/mach-omap2/board-zoom.c [deleted file]
arch/arm/mach-omap2/board-zoom.h [deleted file]
arch/arm/mach-omap2/common.h
arch/arm/mach-omap2/devices.c
arch/arm/mach-omap2/dss-common.c
arch/arm/mach-omap2/dss-common.h
arch/arm/mach-omap2/gpmc-onenand.c
arch/arm/mach-omap2/gpmc.c
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/mux.c
arch/arm/mach-omap2/mux.h
arch/arm/mach-omap2/opp.c
arch/arm/mach-omap2/pdata-quirks.c [new file with mode: 0644]
arch/arm/mach-omap2/pm.c
arch/arm/mach-omap2/prm3xxx.h
arch/arm/mach-omap2/prm44xx_54xx.h
arch/arm/mach-omap2/prm_common.c
arch/arm/mach-omap2/timer.c
arch/arm/mach-s3c64xx/Kconfig
arch/arm/mach-s3c64xx/Makefile
arch/arm/mach-s3c64xx/clock.c [deleted file]
arch/arm/mach-s3c64xx/common.c
arch/arm/mach-s3c64xx/common.h
arch/arm/mach-s3c64xx/dma.c
arch/arm/mach-s3c64xx/include/mach/regs-clock.h
arch/arm/mach-s3c64xx/irq-pm.c
arch/arm/mach-s3c64xx/mach-anw6410.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-s3c64xx/mach-hmt.c
arch/arm/mach-s3c64xx/mach-mini6410.c
arch/arm/mach-s3c64xx/mach-ncp.c
arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c [new file with mode: 0644]
arch/arm/mach-s3c64xx/mach-smartq.c
arch/arm/mach-s3c64xx/mach-smdk6400.c
arch/arm/mach-s3c64xx/mach-smdk6410.c
arch/arm/mach-s3c64xx/pm.c
arch/arm/mach-s3c64xx/s3c6400.c
arch/arm/mach-s3c64xx/s3c6410.c
arch/arm/mach-shmobile/Kconfig
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/clock-r8a7778.c
arch/arm/mach-shmobile/clock-r8a7779.c
arch/arm/mach-shmobile/clock-r8a7790.c
arch/arm/mach-shmobile/clock-r8a7791.c [new file with mode: 0644]
arch/arm/mach-shmobile/include/mach/r8a7778.h
arch/arm/mach-shmobile/include/mach/r8a7791.h [new file with mode: 0644]
arch/arm/mach-shmobile/setup-r8a7778.c
arch/arm/mach-shmobile/setup-r8a7791.c [new file with mode: 0644]
arch/arm/mach-ux500/Makefile
arch/arm/mach-ux500/board-mop500-audio.c
arch/arm/mach-ux500/board-mop500-sdi.c
arch/arm/mach-ux500/board-mop500-stuib.c [deleted file]
arch/arm/mach-ux500/board-mop500-u8500uib.c [deleted file]
arch/arm/mach-ux500/board-mop500-uib.c [deleted file]
arch/arm/mach-ux500/board-mop500.c
arch/arm/mach-ux500/board-mop500.h
arch/arm/mach-ux500/cpu-db8500.c
arch/arm/mach-ux500/cpu.c
arch/arm/mach-ux500/devices-common.c [deleted file]
arch/arm/mach-ux500/devices-common.h [deleted file]
arch/arm/mach-ux500/devices-db8500.c
arch/arm/mach-ux500/devices-db8500.h
arch/arm/mach-ux500/devices.h
arch/arm/mach-ux500/setup.h
arch/arm/mach-ux500/timer.c
arch/arm/mach-ux500/usb.c [deleted file]
arch/arm/plat-samsung/include/plat/cpu.h
arch/arm/plat-samsung/init.c
arch/mips/include/asm/jump_label.h
arch/mips/kernel/octeon_switch.S
arch/mips/kernel/r2300_switch.S
arch/mips/kernel/r4k_switch.S
arch/parisc/include/asm/traps.h
arch/parisc/kernel/cache.c
arch/parisc/kernel/smp.c
arch/parisc/kernel/traps.c
arch/parisc/lib/memcpy.c
arch/parisc/mm/fault.c
arch/powerpc/include/asm/jump_label.h
arch/powerpc/kernel/irq.c
arch/powerpc/kvm/book3s_hv_rmhandlers.S
arch/powerpc/kvm/e500_mmu_host.c
arch/s390/include/asm/jump_label.h
arch/s390/kernel/crash_dump.c
arch/s390/kernel/entry.S
arch/s390/kernel/entry64.S
arch/s390/kernel/kprobes.c
arch/sparc/include/asm/jump_label.h
arch/tile/include/asm/atomic.h
arch/tile/include/asm/atomic_32.h
arch/tile/include/asm/cmpxchg.h
arch/tile/include/asm/percpu.h
arch/tile/kernel/hardwall.c
arch/tile/kernel/intvec_32.S
arch/tile/kernel/intvec_64.S
arch/tile/kernel/stack.c
arch/tile/lib/atomic_32.c
arch/x86/Kconfig
arch/x86/include/asm/cpufeature.h
arch/x86/include/asm/jump_label.h
arch/x86/include/asm/mutex_64.h
arch/x86/kernel/cpu/perf_event.c
arch/x86/kernel/reboot.c
arch/x86/kvm/vmx.c
drivers/char/random.c
drivers/clk/samsung/Makefile
drivers/clk/ux500/Makefile
drivers/clk/ux500/u8500_of_clk.c [new file with mode: 0644]
drivers/clk/ux500/u8540_clk.c
drivers/dma/edma.c
drivers/dma/sh/rcar-hpbdma.c
drivers/gpio/gpio-samsung.c
drivers/gpu/drm/drm_edid.c
drivers/gpu/drm/drm_fb_helper.c
drivers/gpu/drm/gma500/gtt.c
drivers/gpu/drm/i915/i915_dma.c
drivers/gpu/drm/i915/i915_reg.h
drivers/gpu/drm/i915/intel_display.c
drivers/gpu/drm/i915/intel_dp.c
drivers/gpu/drm/i915/intel_drv.h
drivers/gpu/drm/i915/intel_pm.c
drivers/gpu/drm/nouveau/core/subdev/mc/base.c
drivers/gpu/drm/radeon/btc_dpm.c
drivers/gpu/drm/radeon/cik.c
drivers/gpu/drm/radeon/evergreen.c
drivers/gpu/drm/radeon/evergreen_hdmi.c
drivers/gpu/drm/radeon/evergreend.h
drivers/gpu/drm/radeon/r600_hdmi.c
drivers/gpu/drm/radeon/r600d.h
drivers/gpu/drm/radeon/radeon_pm.c
drivers/gpu/drm/radeon/radeon_test.c
drivers/gpu/drm/radeon/radeon_uvd.c
drivers/gpu/drm/radeon/si.c
drivers/gpu/drm/radeon/si_dpm.c
drivers/gpu/drm/radeon/sid.h
drivers/gpu/drm/radeon/trinity_dpm.c
drivers/hid/Kconfig
drivers/hid/hid-core.c
drivers/hid/hid-holtek-mouse.c
drivers/hid/hid-ids.h
drivers/hid/hid-roccat-kone.c
drivers/hid/hid-roccat-koneplus.c
drivers/hid/hid-roccat-kovaplus.c
drivers/hid/hid-roccat-pyra.c
drivers/hid/hid-wiimote-modules.c
drivers/hid/hid-wiimote.h
drivers/hid/hidraw.c
drivers/hid/uhid.c
drivers/hwmon/applesmc.c
drivers/i2c/busses/i2c-designware-platdrv.c
drivers/i2c/busses/i2c-imx.c
drivers/i2c/busses/i2c-mxs.c
drivers/i2c/busses/i2c-omap.c
drivers/i2c/busses/i2c-stu300.c
drivers/i2c/i2c-core.c
drivers/i2c/muxes/i2c-arb-gpio-challenge.c
drivers/i2c/muxes/i2c-mux-gpio.c
drivers/i2c/muxes/i2c-mux-pinctrl.c
drivers/iommu/Kconfig
drivers/irqchip/irq-vic.c
drivers/md/bcache/request.c
drivers/mfd/db8500-prcmu.c
drivers/mfd/dbx500-prcmu-regs.h
drivers/mtd/devices/m25p80.c
drivers/mtd/nand/nand_base.c
drivers/pinctrl/pinctrl-single.c
drivers/s390/char/sclp_cmd.c
drivers/s390/char/tty3270.c
drivers/spi/spi-atmel.c
drivers/spi/spi-clps711x.c
drivers/spi/spi-fsl-dspi.c
drivers/spi/spi-mpc512x-psc.c
drivers/spi/spi-pxa2xx.c
drivers/spi/spi-s3c64xx.c
drivers/spi/spi-sh-hspi.c
drivers/usb/host/ohci-s3c2410.c
drivers/usb/musb/ux500.c
drivers/watchdog/hpwdt.c
drivers/watchdog/kempld_wdt.c
drivers/watchdog/sunxi_wdt.c
drivers/watchdog/ts72xx_wdt.c
fs/btrfs/disk-io.c
fs/btrfs/disk-io.h
fs/btrfs/extent_io.c
fs/btrfs/inode.c
fs/btrfs/relocation.c
fs/btrfs/root-tree.c
fs/ext4/inode.c
fs/ext4/xattr.c
fs/statfs.c
include/dt-bindings/mfd/dbx500-prcmu.h [new file with mode: 0644]
include/dt-bindings/pinctrl/am43xx.h [new file with mode: 0644]
include/dt-bindings/pinctrl/dra.h [new file with mode: 0644]
include/dt-bindings/pinctrl/omap.h
include/linux/compiler-gcc4.h
include/linux/mfd/dbx500-prcmu.h
include/linux/miscdevice.h
include/linux/perf_event.h
include/linux/platform_data/clk-ux500.h
include/linux/platform_data/pinctrl-single.h [new file with mode: 0644]
include/linux/random.h
include/linux/timex.h
include/linux/vgaarb.h
init/main.c
kernel/events/core.c
lib/kobject.c
sound/pci/hda/patch_hdmi.c
sound/pci/hda/patch_realtek.c
sound/usb/usx2y/usbusx2yaudio.c
sound/usb/usx2y/usx2yhwdeppcm.c
tools/perf/Makefile
tools/perf/builtin-stat.c
tools/perf/config/feature-tests.mak
tools/perf/util/dwarf-aux.c
tools/perf/util/dwarf-aux.h
tools/perf/util/header.c
tools/perf/util/probe-finder.c
tools/perf/util/session.c

index 91b7049affa1ea5f5e0da13b52db79212c94ca52..808c1543b0f87f374c5d93517d8389a3b3479be9 100644 (file)
@@ -21,7 +21,8 @@ Required properties:
 Optional properties:
 - ti,no_idle_on_suspend: When present, it prevents the PM to idle the module
   during suspend.
-
+- ti,no-reset-on-init: When present, the module should not be reset at init
+- ti,no-idle-on-init: When present, the module should not be idled at init
 
 Example:
 
index 266716b2343723525278d34db2f1c4c05ae2826b..dd527216c5fbddfce790fe9bf4a2342f56e025f1 100644 (file)
@@ -18,6 +18,15 @@ Required properties:
 Optional properties:
 
 - interrupts : Interrupt source for parent controllers if the VIC is nested.
+- valid-mask : A one cell big bit mask of valid interrupt sources. Each bit
+  represents single interrupt source, starting from source 0 at LSb and ending
+  at source 31 at MSb. A bit that is set means that the source is wired and
+  clear means otherwise. If unspecified, defaults to all valid.
+- valid-wakeup-mask : A one cell big bit mask of interrupt sources that can be
+  configured as wake up source for the system. Order of bits is the same as for
+  valid-mask property. A set bit means that this interrupt source can be
+  configured as a wake up source for the system. If unspecied, defaults to all
+  interrupt sources configurable as wake up sources.
 
 Example:
 
@@ -26,4 +35,7 @@ Example:
                interrupt-controller;
                #interrupt-cells = <1>;
                reg = <0x60000 0x1000>;
+
+               valid-mask = <0xffffff7f>;
+               valid-wakeup-mask = <0x0000ff7f>;
        };
diff --git a/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt b/Documentation/devicetree/bindings/clock/mvebu-corediv-clock.txt
new file mode 100644 (file)
index 0000000..c62391f
--- /dev/null
@@ -0,0 +1,19 @@
+* Core Divider Clock bindings for Marvell MVEBU SoCs
+
+The following is a list of provided IDs and clock names on Armada 370/XP:
+ 0 = nand (NAND clock)
+
+Required properties:
+- compatible : must be "marvell,armada-370-corediv-clock"
+- reg : must be the register address of Core Divider control register
+- #clock-cells : from common clock binding; shall be set to 1
+- clocks : must be set to the parent's phandle
+
+Example:
+
+corediv_clk: corediv-clocks@18740 {
+       compatible = "marvell,armada-370-corediv-clock";
+       reg = <0x18740 0xc>;
+       #clock-cells = <1>;
+       clocks = <&pll>;
+};
diff --git a/Documentation/devicetree/bindings/crypto/omap-aes.txt b/Documentation/devicetree/bindings/crypto/omap-aes.txt
new file mode 100644 (file)
index 0000000..fd97176
--- /dev/null
@@ -0,0 +1,31 @@
+OMAP SoC AES crypto Module
+
+Required properties:
+
+- compatible : Should contain entries for this and backward compatible
+  AES versions:
+  - "ti,omap2-aes" for OMAP2.
+  - "ti,omap3-aes" for OMAP3.
+  - "ti,omap4-aes" for OMAP4 and AM33XX.
+  Note that the OMAP2 and 3 versions are compatible (OMAP3 supports
+  more algorithms) but they are incompatible with OMAP4.
+- ti,hwmods: Name of the hwmod associated with the AES module
+- reg : Offset and length of the register set for the module
+- interrupts : the interrupt-specifier for the AES module.
+
+Optional properties:
+- dmas: DMA specifiers for tx and rx dma. See the DMA client binding,
+       Documentation/devicetree/bindings/dma/dma.txt
+- dma-names: DMA request names should include "tx" and "rx" if present.
+
+Example:
+       /* AM335x */
+       aes: aes@53500000 {
+               compatible = "ti,omap4-aes";
+               ti,hwmods = "aes";
+               reg = <0x53500000 0xa0>;
+               interrupts = <102>;
+               dmas = <&edma 6>,
+                      <&edma 5>;
+               dma-names = "tx", "rx";
+       };
diff --git a/Documentation/devicetree/bindings/crypto/omap-sham.txt b/Documentation/devicetree/bindings/crypto/omap-sham.txt
new file mode 100644 (file)
index 0000000..f839acd
--- /dev/null
@@ -0,0 +1,28 @@
+OMAP SoC SHA crypto Module
+
+Required properties:
+
+- compatible : Should contain entries for this and backward compatible
+  SHAM versions:
+  - "ti,omap2-sham" for OMAP2 & OMAP3.
+  - "ti,omap4-sham" for OMAP4 and AM33XX.
+  Note that these two versions are incompatible.
+- ti,hwmods: Name of the hwmod associated with the SHAM module
+- reg : Offset and length of the register set for the module
+- interrupts : the interrupt-specifier for the SHAM module.
+
+Optional properties:
+- dmas: DMA specifiers for the rx dma. See the DMA client binding,
+       Documentation/devicetree/bindings/dma/dma.txt
+- dma-names: DMA request name. Should be "rx" if a dma is present.
+
+Example:
+       /* AM335x */
+       sham: sham@53100000 {
+               compatible = "ti,omap4-sham";
+               ti,hwmods = "sham";
+               reg = <0x53100000 0x200>;
+               interrupts = <109>;
+               dmas = <&edma 36>;
+               dma-names = "rx";
+       };
index ed271fc255b23c5d3595f1a1725687cb74d077be..8c8908ab84bab3a570b422a93f15a7f8367adaa8 100644 (file)
@@ -20,8 +20,29 @@ ti,dual-volt: boolean, supports dual voltage cards
 ti,non-removable: non-removable slot (like eMMC)
 ti,needs-special-reset: Requires a special softreset sequence
 ti,needs-special-hs-handling: HSMMC IP needs special setting for handling High Speed
+dmas: List of DMA specifiers with the controller specific format
+as described in the generic DMA client binding. A tx and rx
+specifier is required.
+dma-names: List of DMA request names. These strings correspond
+1:1 with the DMA specifiers listed in dmas. The string naming is
+to be "rx" and "tx" for RX and TX DMA requests, respectively.
+
+Examples:
+
+[hwmod populated DMA resources]
+
+       mmc1: mmc@0x4809c000 {
+               compatible = "ti,omap4-hsmmc";
+               reg = <0x4809c000 0x400>;
+               ti,hwmods = "mmc1";
+               ti,dual-volt;
+               bus-width = <4>;
+               vmmc-supply = <&vmmc>; /* phandle to regulator node */
+               ti,non-removable;
+       };
+
+[generic DMA request binding]
 
-Example:
        mmc1: mmc@0x4809c000 {
                compatible = "ti,omap4-hsmmc";
                reg = <0x4809c000 0x400>;
@@ -30,4 +51,7 @@ Example:
                bus-width = <4>;
                vmmc-supply = <&vmmc>; /* phandle to regulator node */
                ti,non-removable;
+               dmas = <&edma 24
+                       &edma 25>;
+               dma-names = "tx", "rx";
        };
index 3077370c89af75c22b60fd59f83ea1dc841eea37..1e70a8aff2600ec72eba7e5f707da425aa19fc4e 100644 (file)
@@ -59,16 +59,16 @@ Required subnode-properties:
 
 Optional subnode-properties:
 - fsl,drive-strength: Integer.
-    0: mA
-    1: mA
-    2: 12 mA
-    3: 16 mA
+    0: MXS_DRIVE_4mA
+    1: MXS_DRIVE_8mA
+    2: MXS_DRIVE_12mA
+    3: MXS_DRIVE_16mA
 - fsl,voltage: Integer.
-    0: 1.8 V
-    1: 3.3 V
+    0: MXS_VOLTAGE_LOW  - 1.8 V
+    1: MXS_VOLTAGE_HIGH - 3.3 V
 - fsl,pull-up: Integer.
-    0: Disable the internal pull-up
-    1: Enable the internal pull-up
+    0: MXS_PULL_DISABLE - Disable the internal pull-up
+    1: MXS_PULL_ENABLE  - Enable the internal pull-up
 
 Note that when enabling the pull-up, the internal pad keeper gets disabled.
 Also, some pins doesn't have a pull up, in that case, setting the fsl,pull-up
@@ -85,23 +85,32 @@ pinctrl@80018000 {
        mmc0_8bit_pins_a: mmc0-8bit@0 {
                reg = <0>;
                fsl,pinmux-ids = <
-                       0x2000 0x2010 0x2020 0x2030
-                       0x2040 0x2050 0x2060 0x2070
-                       0x2080 0x2090 0x20a0>;
-               fsl,drive-strength = <1>;
-               fsl,voltage = <1>;
-               fsl,pull-up = <1>;
+                       MX28_PAD_SSP0_DATA0__SSP0_D0
+                       MX28_PAD_SSP0_DATA1__SSP0_D1
+                       MX28_PAD_SSP0_DATA2__SSP0_D2
+                       MX28_PAD_SSP0_DATA3__SSP0_D3
+                       MX28_PAD_SSP0_DATA4__SSP0_D4
+                       MX28_PAD_SSP0_DATA5__SSP0_D5
+                       MX28_PAD_SSP0_DATA6__SSP0_D6
+                       MX28_PAD_SSP0_DATA7__SSP0_D7
+                       MX28_PAD_SSP0_CMD__SSP0_CMD
+                       MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
+                       MX28_PAD_SSP0_SCK__SSP0_SCK
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_ENABLE>;
        };
 
        mmc_cd_cfg: mmc-cd-cfg {
-               fsl,pinmux-ids = <0x2090>;
-               fsl,pull-up = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
        };
 
        mmc_sck_cfg: mmc-sck-cfg {
-               fsl,pinmux-ids = <0x20a0>;
-               fsl,drive-strength = <2>;
-               fsl,pull-up = <0>;
+               fsl,pinmux-ids = <MX28_PAD_SSP0_SCK__SSP0_SCK>;
+               fsl,drive-strength = <MXS_DRIVE_12mA>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
        };
 };
 
@@ -112,811 +121,7 @@ adjusting the configuration for pins card-detection and clock from what group
 node mmc0-8bit defines.  Only the configuration properties to be adjusted need
 to be listed in the config nodes.
 
-Valid values for i.MX28 pinmux-id:
-
-pinmux                                         id
-------                                         --
-MX28_PAD_GPMI_D00__GPMI_D0                     0x0000
-MX28_PAD_GPMI_D01__GPMI_D1                     0x0010
-MX28_PAD_GPMI_D02__GPMI_D2                     0x0020
-MX28_PAD_GPMI_D03__GPMI_D3                     0x0030
-MX28_PAD_GPMI_D04__GPMI_D4                     0x0040
-MX28_PAD_GPMI_D05__GPMI_D5                     0x0050
-MX28_PAD_GPMI_D06__GPMI_D6                     0x0060
-MX28_PAD_GPMI_D07__GPMI_D7                     0x0070
-MX28_PAD_GPMI_CE0N__GPMI_CE0N                  0x0100
-MX28_PAD_GPMI_CE1N__GPMI_CE1N                  0x0110
-MX28_PAD_GPMI_CE2N__GPMI_CE2N                  0x0120
-MX28_PAD_GPMI_CE3N__GPMI_CE3N                  0x0130
-MX28_PAD_GPMI_RDY0__GPMI_READY0                        0x0140
-MX28_PAD_GPMI_RDY1__GPMI_READY1                        0x0150
-MX28_PAD_GPMI_RDY2__GPMI_READY2                        0x0160
-MX28_PAD_GPMI_RDY3__GPMI_READY3                        0x0170
-MX28_PAD_GPMI_RDN__GPMI_RDN                    0x0180
-MX28_PAD_GPMI_WRN__GPMI_WRN                    0x0190
-MX28_PAD_GPMI_ALE__GPMI_ALE                    0x01a0
-MX28_PAD_GPMI_CLE__GPMI_CLE                    0x01b0
-MX28_PAD_GPMI_RESETN__GPMI_RESETN              0x01c0
-MX28_PAD_LCD_D00__LCD_D0                       0x1000
-MX28_PAD_LCD_D01__LCD_D1                       0x1010
-MX28_PAD_LCD_D02__LCD_D2                       0x1020
-MX28_PAD_LCD_D03__LCD_D3                       0x1030
-MX28_PAD_LCD_D04__LCD_D4                       0x1040
-MX28_PAD_LCD_D05__LCD_D5                       0x1050
-MX28_PAD_LCD_D06__LCD_D6                       0x1060
-MX28_PAD_LCD_D07__LCD_D7                       0x1070
-MX28_PAD_LCD_D08__LCD_D8                       0x1080
-MX28_PAD_LCD_D09__LCD_D9                       0x1090
-MX28_PAD_LCD_D10__LCD_D10                      0x10a0
-MX28_PAD_LCD_D11__LCD_D11                      0x10b0
-MX28_PAD_LCD_D12__LCD_D12                      0x10c0
-MX28_PAD_LCD_D13__LCD_D13                      0x10d0
-MX28_PAD_LCD_D14__LCD_D14                      0x10e0
-MX28_PAD_LCD_D15__LCD_D15                      0x10f0
-MX28_PAD_LCD_D16__LCD_D16                      0x1100
-MX28_PAD_LCD_D17__LCD_D17                      0x1110
-MX28_PAD_LCD_D18__LCD_D18                      0x1120
-MX28_PAD_LCD_D19__LCD_D19                      0x1130
-MX28_PAD_LCD_D20__LCD_D20                      0x1140
-MX28_PAD_LCD_D21__LCD_D21                      0x1150
-MX28_PAD_LCD_D22__LCD_D22                      0x1160
-MX28_PAD_LCD_D23__LCD_D23                      0x1170
-MX28_PAD_LCD_RD_E__LCD_RD_E                    0x1180
-MX28_PAD_LCD_WR_RWN__LCD_WR_RWN                        0x1190
-MX28_PAD_LCD_RS__LCD_RS                                0x11a0
-MX28_PAD_LCD_CS__LCD_CS                                0x11b0
-MX28_PAD_LCD_VSYNC__LCD_VSYNC                  0x11c0
-MX28_PAD_LCD_HSYNC__LCD_HSYNC                  0x11d0
-MX28_PAD_LCD_DOTCLK__LCD_DOTCLK                        0x11e0
-MX28_PAD_LCD_ENABLE__LCD_ENABLE                        0x11f0
-MX28_PAD_SSP0_DATA0__SSP0_D0                   0x2000
-MX28_PAD_SSP0_DATA1__SSP0_D1                   0x2010
-MX28_PAD_SSP0_DATA2__SSP0_D2                   0x2020
-MX28_PAD_SSP0_DATA3__SSP0_D3                   0x2030
-MX28_PAD_SSP0_DATA4__SSP0_D4                   0x2040
-MX28_PAD_SSP0_DATA5__SSP0_D5                   0x2050
-MX28_PAD_SSP0_DATA6__SSP0_D6                   0x2060
-MX28_PAD_SSP0_DATA7__SSP0_D7                   0x2070
-MX28_PAD_SSP0_CMD__SSP0_CMD                    0x2080
-MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT         0x2090
-MX28_PAD_SSP0_SCK__SSP0_SCK                    0x20a0
-MX28_PAD_SSP1_SCK__SSP1_SCK                    0x20c0
-MX28_PAD_SSP1_CMD__SSP1_CMD                    0x20d0
-MX28_PAD_SSP1_DATA0__SSP1_D0                   0x20e0
-MX28_PAD_SSP1_DATA3__SSP1_D3                   0x20f0
-MX28_PAD_SSP2_SCK__SSP2_SCK                    0x2100
-MX28_PAD_SSP2_MOSI__SSP2_CMD                   0x2110
-MX28_PAD_SSP2_MISO__SSP2_D0                    0x2120
-MX28_PAD_SSP2_SS0__SSP2_D3                     0x2130
-MX28_PAD_SSP2_SS1__SSP2_D4                     0x2140
-MX28_PAD_SSP2_SS2__SSP2_D5                     0x2150
-MX28_PAD_SSP3_SCK__SSP3_SCK                    0x2180
-MX28_PAD_SSP3_MOSI__SSP3_CMD                   0x2190
-MX28_PAD_SSP3_MISO__SSP3_D0                    0x21a0
-MX28_PAD_SSP3_SS0__SSP3_D3                     0x21b0
-MX28_PAD_AUART0_RX__AUART0_RX                  0x3000
-MX28_PAD_AUART0_TX__AUART0_TX                  0x3010
-MX28_PAD_AUART0_CTS__AUART0_CTS                        0x3020
-MX28_PAD_AUART0_RTS__AUART0_RTS                        0x3030
-MX28_PAD_AUART1_RX__AUART1_RX                  0x3040
-MX28_PAD_AUART1_TX__AUART1_TX                  0x3050
-MX28_PAD_AUART1_CTS__AUART1_CTS                        0x3060
-MX28_PAD_AUART1_RTS__AUART1_RTS                        0x3070
-MX28_PAD_AUART2_RX__AUART2_RX                  0x3080
-MX28_PAD_AUART2_TX__AUART2_TX                  0x3090
-MX28_PAD_AUART2_CTS__AUART2_CTS                        0x30a0
-MX28_PAD_AUART2_RTS__AUART2_RTS                        0x30b0
-MX28_PAD_AUART3_RX__AUART3_RX                  0x30c0
-MX28_PAD_AUART3_TX__AUART3_TX                  0x30d0
-MX28_PAD_AUART3_CTS__AUART3_CTS                        0x30e0
-MX28_PAD_AUART3_RTS__AUART3_RTS                        0x30f0
-MX28_PAD_PWM0__PWM_0                           0x3100
-MX28_PAD_PWM1__PWM_1                           0x3110
-MX28_PAD_PWM2__PWM_2                           0x3120
-MX28_PAD_SAIF0_MCLK__SAIF0_MCLK                        0x3140
-MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK              0x3150
-MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK            0x3160
-MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0            0x3170
-MX28_PAD_I2C0_SCL__I2C0_SCL                    0x3180
-MX28_PAD_I2C0_SDA__I2C0_SDA                    0x3190
-MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0            0x31a0
-MX28_PAD_SPDIF__SPDIF_TX                       0x31b0
-MX28_PAD_PWM3__PWM_3                           0x31c0
-MX28_PAD_PWM4__PWM_4                           0x31d0
-MX28_PAD_LCD_RESET__LCD_RESET                  0x31e0
-MX28_PAD_ENET0_MDC__ENET0_MDC                  0x4000
-MX28_PAD_ENET0_MDIO__ENET0_MDIO                        0x4010
-MX28_PAD_ENET0_RX_EN__ENET0_RX_EN              0x4020
-MX28_PAD_ENET0_RXD0__ENET0_RXD0                        0x4030
-MX28_PAD_ENET0_RXD1__ENET0_RXD1                        0x4040
-MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK            0x4050
-MX28_PAD_ENET0_TX_EN__ENET0_TX_EN              0x4060
-MX28_PAD_ENET0_TXD0__ENET0_TXD0                        0x4070
-MX28_PAD_ENET0_TXD1__ENET0_TXD1                        0x4080
-MX28_PAD_ENET0_RXD2__ENET0_RXD2                        0x4090
-MX28_PAD_ENET0_RXD3__ENET0_RXD3                        0x40a0
-MX28_PAD_ENET0_TXD2__ENET0_TXD2                        0x40b0
-MX28_PAD_ENET0_TXD3__ENET0_TXD3                        0x40c0
-MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK            0x40d0
-MX28_PAD_ENET0_COL__ENET0_COL                  0x40e0
-MX28_PAD_ENET0_CRS__ENET0_CRS                  0x40f0
-MX28_PAD_ENET_CLK__CLKCTRL_ENET                        0x4100
-MX28_PAD_JTAG_RTCK__JTAG_RTCK                  0x4140
-MX28_PAD_EMI_D00__EMI_DATA0                    0x5000
-MX28_PAD_EMI_D01__EMI_DATA1                    0x5010
-MX28_PAD_EMI_D02__EMI_DATA2                    0x5020
-MX28_PAD_EMI_D03__EMI_DATA3                    0x5030
-MX28_PAD_EMI_D04__EMI_DATA4                    0x5040
-MX28_PAD_EMI_D05__EMI_DATA5                    0x5050
-MX28_PAD_EMI_D06__EMI_DATA6                    0x5060
-MX28_PAD_EMI_D07__EMI_DATA7                    0x5070
-MX28_PAD_EMI_D08__EMI_DATA8                    0x5080
-MX28_PAD_EMI_D09__EMI_DATA9                    0x5090
-MX28_PAD_EMI_D10__EMI_DATA10                   0x50a0
-MX28_PAD_EMI_D11__EMI_DATA11                   0x50b0
-MX28_PAD_EMI_D12__EMI_DATA12                   0x50c0
-MX28_PAD_EMI_D13__EMI_DATA13                   0x50d0
-MX28_PAD_EMI_D14__EMI_DATA14                   0x50e0
-MX28_PAD_EMI_D15__EMI_DATA15                   0x50f0
-MX28_PAD_EMI_ODT0__EMI_ODT0                    0x5100
-MX28_PAD_EMI_DQM0__EMI_DQM0                    0x5110
-MX28_PAD_EMI_ODT1__EMI_ODT1                    0x5120
-MX28_PAD_EMI_DQM1__EMI_DQM1                    0x5130
-MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK        0x5140
-MX28_PAD_EMI_CLK__EMI_CLK                      0x5150
-MX28_PAD_EMI_DQS0__EMI_DQS0                    0x5160
-MX28_PAD_EMI_DQS1__EMI_DQS1                    0x5170
-MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN            0x51a0
-MX28_PAD_EMI_A00__EMI_ADDR0                    0x6000
-MX28_PAD_EMI_A01__EMI_ADDR1                    0x6010
-MX28_PAD_EMI_A02__EMI_ADDR2                    0x6020
-MX28_PAD_EMI_A03__EMI_ADDR3                    0x6030
-MX28_PAD_EMI_A04__EMI_ADDR4                    0x6040
-MX28_PAD_EMI_A05__EMI_ADDR5                    0x6050
-MX28_PAD_EMI_A06__EMI_ADDR6                    0x6060
-MX28_PAD_EMI_A07__EMI_ADDR7                    0x6070
-MX28_PAD_EMI_A08__EMI_ADDR8                    0x6080
-MX28_PAD_EMI_A09__EMI_ADDR9                    0x6090
-MX28_PAD_EMI_A10__EMI_ADDR10                   0x60a0
-MX28_PAD_EMI_A11__EMI_ADDR11                   0x60b0
-MX28_PAD_EMI_A12__EMI_ADDR12                   0x60c0
-MX28_PAD_EMI_A13__EMI_ADDR13                   0x60d0
-MX28_PAD_EMI_A14__EMI_ADDR14                   0x60e0
-MX28_PAD_EMI_BA0__EMI_BA0                      0x6100
-MX28_PAD_EMI_BA1__EMI_BA1                      0x6110
-MX28_PAD_EMI_BA2__EMI_BA2                      0x6120
-MX28_PAD_EMI_CASN__EMI_CASN                    0x6130
-MX28_PAD_EMI_RASN__EMI_RASN                    0x6140
-MX28_PAD_EMI_WEN__EMI_WEN                      0x6150
-MX28_PAD_EMI_CE0N__EMI_CE0N                    0x6160
-MX28_PAD_EMI_CE1N__EMI_CE1N                    0x6170
-MX28_PAD_EMI_CKE__EMI_CKE                      0x6180
-MX28_PAD_GPMI_D00__SSP1_D0                     0x0001
-MX28_PAD_GPMI_D01__SSP1_D1                     0x0011
-MX28_PAD_GPMI_D02__SSP1_D2                     0x0021
-MX28_PAD_GPMI_D03__SSP1_D3                     0x0031
-MX28_PAD_GPMI_D04__SSP1_D4                     0x0041
-MX28_PAD_GPMI_D05__SSP1_D5                     0x0051
-MX28_PAD_GPMI_D06__SSP1_D6                     0x0061
-MX28_PAD_GPMI_D07__SSP1_D7                     0x0071
-MX28_PAD_GPMI_CE0N__SSP3_D0                    0x0101
-MX28_PAD_GPMI_CE1N__SSP3_D3                    0x0111
-MX28_PAD_GPMI_CE2N__CAN1_TX                    0x0121
-MX28_PAD_GPMI_CE3N__CAN1_RX                    0x0131
-MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT           0x0141
-MX28_PAD_GPMI_RDY1__SSP1_CMD                   0x0151
-MX28_PAD_GPMI_RDY2__CAN0_TX                    0x0161
-MX28_PAD_GPMI_RDY3__CAN0_RX                    0x0171
-MX28_PAD_GPMI_RDN__SSP3_SCK                    0x0181
-MX28_PAD_GPMI_WRN__SSP1_SCK                    0x0191
-MX28_PAD_GPMI_ALE__SSP3_D1                     0x01a1
-MX28_PAD_GPMI_CLE__SSP3_D2                     0x01b1
-MX28_PAD_GPMI_RESETN__SSP3_CMD                 0x01c1
-MX28_PAD_LCD_D03__ETM_DA8                      0x1031
-MX28_PAD_LCD_D04__ETM_DA9                      0x1041
-MX28_PAD_LCD_D08__ETM_DA3                      0x1081
-MX28_PAD_LCD_D09__ETM_DA4                      0x1091
-MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT                0x1141
-MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN         0x1151
-MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT                0x1161
-MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN         0x1171
-MX28_PAD_LCD_RD_E__LCD_VSYNC                   0x1181
-MX28_PAD_LCD_WR_RWN__LCD_HSYNC                 0x1191
-MX28_PAD_LCD_RS__LCD_DOTCLK                    0x11a1
-MX28_PAD_LCD_CS__LCD_ENABLE                    0x11b1
-MX28_PAD_LCD_VSYNC__SAIF1_SDATA0               0x11c1
-MX28_PAD_LCD_HSYNC__SAIF1_SDATA1               0x11d1
-MX28_PAD_LCD_DOTCLK__SAIF1_MCLK                        0x11e1
-MX28_PAD_SSP0_DATA4__SSP2_D0                   0x2041
-MX28_PAD_SSP0_DATA5__SSP2_D3                   0x2051
-MX28_PAD_SSP0_DATA6__SSP2_CMD                  0x2061
-MX28_PAD_SSP0_DATA7__SSP2_SCK                  0x2071
-MX28_PAD_SSP1_SCK__SSP2_D1                     0x20c1
-MX28_PAD_SSP1_CMD__SSP2_D2                     0x20d1
-MX28_PAD_SSP1_DATA0__SSP2_D6                   0x20e1
-MX28_PAD_SSP1_DATA3__SSP2_D7                   0x20f1
-MX28_PAD_SSP2_SCK__AUART2_RX                   0x2101
-MX28_PAD_SSP2_MOSI__AUART2_TX                  0x2111
-MX28_PAD_SSP2_MISO__AUART3_RX                  0x2121
-MX28_PAD_SSP2_SS0__AUART3_TX                   0x2131
-MX28_PAD_SSP2_SS1__SSP2_D1                     0x2141
-MX28_PAD_SSP2_SS2__SSP2_D2                     0x2151
-MX28_PAD_SSP3_SCK__AUART4_TX                   0x2181
-MX28_PAD_SSP3_MOSI__AUART4_RX                  0x2191
-MX28_PAD_SSP3_MISO__AUART4_RTS                 0x21a1
-MX28_PAD_SSP3_SS0__AUART4_CTS                  0x21b1
-MX28_PAD_AUART0_RX__I2C0_SCL                   0x3001
-MX28_PAD_AUART0_TX__I2C0_SDA                   0x3011
-MX28_PAD_AUART0_CTS__AUART4_RX                 0x3021
-MX28_PAD_AUART0_RTS__AUART4_TX                 0x3031
-MX28_PAD_AUART1_RX__SSP2_CARD_DETECT           0x3041
-MX28_PAD_AUART1_TX__SSP3_CARD_DETECT           0x3051
-MX28_PAD_AUART1_CTS__USB0_OVERCURRENT          0x3061
-MX28_PAD_AUART1_RTS__USB0_ID                   0x3071
-MX28_PAD_AUART2_RX__SSP3_D1                    0x3081
-MX28_PAD_AUART2_TX__SSP3_D2                    0x3091
-MX28_PAD_AUART2_CTS__I2C1_SCL                  0x30a1
-MX28_PAD_AUART2_RTS__I2C1_SDA                  0x30b1
-MX28_PAD_AUART3_RX__CAN0_TX                    0x30c1
-MX28_PAD_AUART3_TX__CAN0_RX                    0x30d1
-MX28_PAD_AUART3_CTS__CAN1_TX                   0x30e1
-MX28_PAD_AUART3_RTS__CAN1_RX                   0x30f1
-MX28_PAD_PWM0__I2C1_SCL                                0x3101
-MX28_PAD_PWM1__I2C1_SDA                                0x3111
-MX28_PAD_PWM2__USB0_ID                         0x3121
-MX28_PAD_SAIF0_MCLK__PWM_3                     0x3141
-MX28_PAD_SAIF0_LRCLK__PWM_4                    0x3151
-MX28_PAD_SAIF0_BITCLK__PWM_5                   0x3161
-MX28_PAD_SAIF0_SDATA0__PWM_6                   0x3171
-MX28_PAD_I2C0_SCL__TIMROT_ROTARYA              0x3181
-MX28_PAD_I2C0_SDA__TIMROT_ROTARYB              0x3191
-MX28_PAD_SAIF1_SDATA0__PWM_7                   0x31a1
-MX28_PAD_LCD_RESET__LCD_VSYNC                  0x31e1
-MX28_PAD_ENET0_MDC__GPMI_CE4N                  0x4001
-MX28_PAD_ENET0_MDIO__GPMI_CE5N                 0x4011
-MX28_PAD_ENET0_RX_EN__GPMI_CE6N                        0x4021
-MX28_PAD_ENET0_RXD0__GPMI_CE7N                 0x4031
-MX28_PAD_ENET0_RXD1__GPMI_READY4               0x4041
-MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER           0x4051
-MX28_PAD_ENET0_TX_EN__GPMI_READY5              0x4061
-MX28_PAD_ENET0_TXD0__GPMI_READY6               0x4071
-MX28_PAD_ENET0_TXD1__GPMI_READY7               0x4081
-MX28_PAD_ENET0_RXD2__ENET1_RXD0                        0x4091
-MX28_PAD_ENET0_RXD3__ENET1_RXD1                        0x40a1
-MX28_PAD_ENET0_TXD2__ENET1_TXD0                        0x40b1
-MX28_PAD_ENET0_TXD3__ENET1_TXD1                        0x40c1
-MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER             0x40d1
-MX28_PAD_ENET0_COL__ENET1_TX_EN                        0x40e1
-MX28_PAD_ENET0_CRS__ENET1_RX_EN                        0x40f1
-MX28_PAD_GPMI_CE2N__ENET0_RX_ER                        0x0122
-MX28_PAD_GPMI_CE3N__SAIF1_MCLK                 0x0132
-MX28_PAD_GPMI_RDY0__USB0_ID                    0x0142
-MX28_PAD_GPMI_RDY2__ENET0_TX_ER                        0x0162
-MX28_PAD_GPMI_RDY3__HSADC_TRIGGER              0x0172
-MX28_PAD_GPMI_ALE__SSP3_D4                     0x01a2
-MX28_PAD_GPMI_CLE__SSP3_D5                     0x01b2
-MX28_PAD_LCD_D00__ETM_DA0                      0x1002
-MX28_PAD_LCD_D01__ETM_DA1                      0x1012
-MX28_PAD_LCD_D02__ETM_DA2                      0x1022
-MX28_PAD_LCD_D03__ETM_DA3                      0x1032
-MX28_PAD_LCD_D04__ETM_DA4                      0x1042
-MX28_PAD_LCD_D05__ETM_DA5                      0x1052
-MX28_PAD_LCD_D06__ETM_DA6                      0x1062
-MX28_PAD_LCD_D07__ETM_DA7                      0x1072
-MX28_PAD_LCD_D08__ETM_DA8                      0x1082
-MX28_PAD_LCD_D09__ETM_DA9                      0x1092
-MX28_PAD_LCD_D10__ETM_DA10                     0x10a2
-MX28_PAD_LCD_D11__ETM_DA11                     0x10b2
-MX28_PAD_LCD_D12__ETM_DA12                     0x10c2
-MX28_PAD_LCD_D13__ETM_DA13                     0x10d2
-MX28_PAD_LCD_D14__ETM_DA14                     0x10e2
-MX28_PAD_LCD_D15__ETM_DA15                     0x10f2
-MX28_PAD_LCD_D16__ETM_DA7                      0x1102
-MX28_PAD_LCD_D17__ETM_DA6                      0x1112
-MX28_PAD_LCD_D18__ETM_DA5                      0x1122
-MX28_PAD_LCD_D19__ETM_DA4                      0x1132
-MX28_PAD_LCD_D20__ETM_DA3                      0x1142
-MX28_PAD_LCD_D21__ETM_DA2                      0x1152
-MX28_PAD_LCD_D22__ETM_DA1                      0x1162
-MX28_PAD_LCD_D23__ETM_DA0                      0x1172
-MX28_PAD_LCD_RD_E__ETM_TCTL                    0x1182
-MX28_PAD_LCD_WR_RWN__ETM_TCLK                  0x1192
-MX28_PAD_LCD_HSYNC__ETM_TCTL                   0x11d2
-MX28_PAD_LCD_DOTCLK__ETM_TCLK                  0x11e2
-MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT       0x20c2
-MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN                0x20d2
-MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT     0x20e2
-MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN      0x20f2
-MX28_PAD_SSP2_SCK__SAIF0_SDATA1                        0x2102
-MX28_PAD_SSP2_MOSI__SAIF0_SDATA2               0x2112
-MX28_PAD_SSP2_MISO__SAIF1_SDATA1               0x2122
-MX28_PAD_SSP2_SS0__SAIF1_SDATA2                        0x2132
-MX28_PAD_SSP2_SS1__USB1_OVERCURRENT            0x2142
-MX28_PAD_SSP2_SS2__USB0_OVERCURRENT            0x2152
-MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT       0x2182
-MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN       0x2192
-MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT      0x21a2
-MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN                0x21b2
-MX28_PAD_AUART0_RX__DUART_CTS                  0x3002
-MX28_PAD_AUART0_TX__DUART_RTS                  0x3012
-MX28_PAD_AUART0_CTS__DUART_RX                  0x3022
-MX28_PAD_AUART0_RTS__DUART_TX                  0x3032
-MX28_PAD_AUART1_RX__PWM_0                      0x3042
-MX28_PAD_AUART1_TX__PWM_1                      0x3052
-MX28_PAD_AUART1_CTS__TIMROT_ROTARYA            0x3062
-MX28_PAD_AUART1_RTS__TIMROT_ROTARYB            0x3072
-MX28_PAD_AUART2_RX__SSP3_D4                    0x3082
-MX28_PAD_AUART2_TX__SSP3_D5                    0x3092
-MX28_PAD_AUART2_CTS__SAIF1_BITCLK              0x30a2
-MX28_PAD_AUART2_RTS__SAIF1_LRCLK               0x30b2
-MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT      0x30c2
-MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN       0x30d2
-MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT     0x30e2
-MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN      0x30f2
-MX28_PAD_PWM0__DUART_RX                                0x3102
-MX28_PAD_PWM1__DUART_TX                                0x3112
-MX28_PAD_PWM2__USB1_OVERCURRENT                        0x3122
-MX28_PAD_SAIF0_MCLK__AUART4_CTS                        0x3142
-MX28_PAD_SAIF0_LRCLK__AUART4_RTS               0x3152
-MX28_PAD_SAIF0_BITCLK__AUART4_RX               0x3162
-MX28_PAD_SAIF0_SDATA0__AUART4_TX               0x3172
-MX28_PAD_I2C0_SCL__DUART_RX                    0x3182
-MX28_PAD_I2C0_SDA__DUART_TX                    0x3192
-MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1            0x31a2
-MX28_PAD_SPDIF__ENET1_RX_ER                    0x31b2
-MX28_PAD_ENET0_MDC__SAIF0_SDATA1               0x4002
-MX28_PAD_ENET0_MDIO__SAIF0_SDATA2              0x4012
-MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1             0x4022
-MX28_PAD_ENET0_RXD0__SAIF1_SDATA2              0x4032
-MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT   0x4052
-MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT     0x4092
-MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN      0x40a2
-MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT     0x40b2
-MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN      0x40c2
-MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN    0x40d2
-MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT      0x40e2
-MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN       0x40f2
-MX28_PAD_GPMI_D00__GPIO_0_0                    0x0003
-MX28_PAD_GPMI_D01__GPIO_0_1                    0x0013
-MX28_PAD_GPMI_D02__GPIO_0_2                    0x0023
-MX28_PAD_GPMI_D03__GPIO_0_3                    0x0033
-MX28_PAD_GPMI_D04__GPIO_0_4                    0x0043
-MX28_PAD_GPMI_D05__GPIO_0_5                    0x0053
-MX28_PAD_GPMI_D06__GPIO_0_6                    0x0063
-MX28_PAD_GPMI_D07__GPIO_0_7                    0x0073
-MX28_PAD_GPMI_CE0N__GPIO_0_16                  0x0103
-MX28_PAD_GPMI_CE1N__GPIO_0_17                  0x0113
-MX28_PAD_GPMI_CE2N__GPIO_0_18                  0x0123
-MX28_PAD_GPMI_CE3N__GPIO_0_19                  0x0133
-MX28_PAD_GPMI_RDY0__GPIO_0_20                  0x0143
-MX28_PAD_GPMI_RDY1__GPIO_0_21                  0x0153
-MX28_PAD_GPMI_RDY2__GPIO_0_22                  0x0163
-MX28_PAD_GPMI_RDY3__GPIO_0_23                  0x0173
-MX28_PAD_GPMI_RDN__GPIO_0_24                   0x0183
-MX28_PAD_GPMI_WRN__GPIO_0_25                   0x0193
-MX28_PAD_GPMI_ALE__GPIO_0_26                   0x01a3
-MX28_PAD_GPMI_CLE__GPIO_0_27                   0x01b3
-MX28_PAD_GPMI_RESETN__GPIO_0_28                        0x01c3
-MX28_PAD_LCD_D00__GPIO_1_0                     0x1003
-MX28_PAD_LCD_D01__GPIO_1_1                     0x1013
-MX28_PAD_LCD_D02__GPIO_1_2                     0x1023
-MX28_PAD_LCD_D03__GPIO_1_3                     0x1033
-MX28_PAD_LCD_D04__GPIO_1_4                     0x1043
-MX28_PAD_LCD_D05__GPIO_1_5                     0x1053
-MX28_PAD_LCD_D06__GPIO_1_6                     0x1063
-MX28_PAD_LCD_D07__GPIO_1_7                     0x1073
-MX28_PAD_LCD_D08__GPIO_1_8                     0x1083
-MX28_PAD_LCD_D09__GPIO_1_9                     0x1093
-MX28_PAD_LCD_D10__GPIO_1_10                    0x10a3
-MX28_PAD_LCD_D11__GPIO_1_11                    0x10b3
-MX28_PAD_LCD_D12__GPIO_1_12                    0x10c3
-MX28_PAD_LCD_D13__GPIO_1_13                    0x10d3
-MX28_PAD_LCD_D14__GPIO_1_14                    0x10e3
-MX28_PAD_LCD_D15__GPIO_1_15                    0x10f3
-MX28_PAD_LCD_D16__GPIO_1_16                    0x1103
-MX28_PAD_LCD_D17__GPIO_1_17                    0x1113
-MX28_PAD_LCD_D18__GPIO_1_18                    0x1123
-MX28_PAD_LCD_D19__GPIO_1_19                    0x1133
-MX28_PAD_LCD_D20__GPIO_1_20                    0x1143
-MX28_PAD_LCD_D21__GPIO_1_21                    0x1153
-MX28_PAD_LCD_D22__GPIO_1_22                    0x1163
-MX28_PAD_LCD_D23__GPIO_1_23                    0x1173
-MX28_PAD_LCD_RD_E__GPIO_1_24                   0x1183
-MX28_PAD_LCD_WR_RWN__GPIO_1_25                 0x1193
-MX28_PAD_LCD_RS__GPIO_1_26                     0x11a3
-MX28_PAD_LCD_CS__GPIO_1_27                     0x11b3
-MX28_PAD_LCD_VSYNC__GPIO_1_28                  0x11c3
-MX28_PAD_LCD_HSYNC__GPIO_1_29                  0x11d3
-MX28_PAD_LCD_DOTCLK__GPIO_1_30                 0x11e3
-MX28_PAD_LCD_ENABLE__GPIO_1_31                 0x11f3
-MX28_PAD_SSP0_DATA0__GPIO_2_0                  0x2003
-MX28_PAD_SSP0_DATA1__GPIO_2_1                  0x2013
-MX28_PAD_SSP0_DATA2__GPIO_2_2                  0x2023
-MX28_PAD_SSP0_DATA3__GPIO_2_3                  0x2033
-MX28_PAD_SSP0_DATA4__GPIO_2_4                  0x2043
-MX28_PAD_SSP0_DATA5__GPIO_2_5                  0x2053
-MX28_PAD_SSP0_DATA6__GPIO_2_6                  0x2063
-MX28_PAD_SSP0_DATA7__GPIO_2_7                  0x2073
-MX28_PAD_SSP0_CMD__GPIO_2_8                    0x2083
-MX28_PAD_SSP0_DETECT__GPIO_2_9                 0x2093
-MX28_PAD_SSP0_SCK__GPIO_2_10                   0x20a3
-MX28_PAD_SSP1_SCK__GPIO_2_12                   0x20c3
-MX28_PAD_SSP1_CMD__GPIO_2_13                   0x20d3
-MX28_PAD_SSP1_DATA0__GPIO_2_14                 0x20e3
-MX28_PAD_SSP1_DATA3__GPIO_2_15                 0x20f3
-MX28_PAD_SSP2_SCK__GPIO_2_16                   0x2103
-MX28_PAD_SSP2_MOSI__GPIO_2_17                  0x2113
-MX28_PAD_SSP2_MISO__GPIO_2_18                  0x2123
-MX28_PAD_SSP2_SS0__GPIO_2_19                   0x2133
-MX28_PAD_SSP2_SS1__GPIO_2_20                   0x2143
-MX28_PAD_SSP2_SS2__GPIO_2_21                   0x2153
-MX28_PAD_SSP3_SCK__GPIO_2_24                   0x2183
-MX28_PAD_SSP3_MOSI__GPIO_2_25                  0x2193
-MX28_PAD_SSP3_MISO__GPIO_2_26                  0x21a3
-MX28_PAD_SSP3_SS0__GPIO_2_27                   0x21b3
-MX28_PAD_AUART0_RX__GPIO_3_0                   0x3003
-MX28_PAD_AUART0_TX__GPIO_3_1                   0x3013
-MX28_PAD_AUART0_CTS__GPIO_3_2                  0x3023
-MX28_PAD_AUART0_RTS__GPIO_3_3                  0x3033
-MX28_PAD_AUART1_RX__GPIO_3_4                   0x3043
-MX28_PAD_AUART1_TX__GPIO_3_5                   0x3053
-MX28_PAD_AUART1_CTS__GPIO_3_6                  0x3063
-MX28_PAD_AUART1_RTS__GPIO_3_7                  0x3073
-MX28_PAD_AUART2_RX__GPIO_3_8                   0x3083
-MX28_PAD_AUART2_TX__GPIO_3_9                   0x3093
-MX28_PAD_AUART2_CTS__GPIO_3_10                 0x30a3
-MX28_PAD_AUART2_RTS__GPIO_3_11                 0x30b3
-MX28_PAD_AUART3_RX__GPIO_3_12                  0x30c3
-MX28_PAD_AUART3_TX__GPIO_3_13                  0x30d3
-MX28_PAD_AUART3_CTS__GPIO_3_14                 0x30e3
-MX28_PAD_AUART3_RTS__GPIO_3_15                 0x30f3
-MX28_PAD_PWM0__GPIO_3_16                       0x3103
-MX28_PAD_PWM1__GPIO_3_17                       0x3113
-MX28_PAD_PWM2__GPIO_3_18                       0x3123
-MX28_PAD_SAIF0_MCLK__GPIO_3_20                 0x3143
-MX28_PAD_SAIF0_LRCLK__GPIO_3_21                        0x3153
-MX28_PAD_SAIF0_BITCLK__GPIO_3_22               0x3163
-MX28_PAD_SAIF0_SDATA0__GPIO_3_23               0x3173
-MX28_PAD_I2C0_SCL__GPIO_3_24                   0x3183
-MX28_PAD_I2C0_SDA__GPIO_3_25                   0x3193
-MX28_PAD_SAIF1_SDATA0__GPIO_3_26               0x31a3
-MX28_PAD_SPDIF__GPIO_3_27                      0x31b3
-MX28_PAD_PWM3__GPIO_3_28                       0x31c3
-MX28_PAD_PWM4__GPIO_3_29                       0x31d3
-MX28_PAD_LCD_RESET__GPIO_3_30                  0x31e3
-MX28_PAD_ENET0_MDC__GPIO_4_0                   0x4003
-MX28_PAD_ENET0_MDIO__GPIO_4_1                  0x4013
-MX28_PAD_ENET0_RX_EN__GPIO_4_2                 0x4023
-MX28_PAD_ENET0_RXD0__GPIO_4_3                  0x4033
-MX28_PAD_ENET0_RXD1__GPIO_4_4                  0x4043
-MX28_PAD_ENET0_TX_CLK__GPIO_4_5                        0x4053
-MX28_PAD_ENET0_TX_EN__GPIO_4_6                 0x4063
-MX28_PAD_ENET0_TXD0__GPIO_4_7                  0x4073
-MX28_PAD_ENET0_TXD1__GPIO_4_8                  0x4083
-MX28_PAD_ENET0_RXD2__GPIO_4_9                  0x4093
-MX28_PAD_ENET0_RXD3__GPIO_4_10                 0x40a3
-MX28_PAD_ENET0_TXD2__GPIO_4_11                 0x40b3
-MX28_PAD_ENET0_TXD3__GPIO_4_12                 0x40c3
-MX28_PAD_ENET0_RX_CLK__GPIO_4_13               0x40d3
-MX28_PAD_ENET0_COL__GPIO_4_14                  0x40e3
-MX28_PAD_ENET0_CRS__GPIO_4_15                  0x40f3
-MX28_PAD_ENET_CLK__GPIO_4_16                   0x4103
-MX28_PAD_JTAG_RTCK__GPIO_4_20                  0x4143
-
-Valid values for i.MX23 pinmux-id:
-
-pinmux                                         id
-------                                         --
-MX23_PAD_GPMI_D00__GPMI_D00                    0x0000
-MX23_PAD_GPMI_D01__GPMI_D01                    0x0010
-MX23_PAD_GPMI_D02__GPMI_D02                    0x0020
-MX23_PAD_GPMI_D03__GPMI_D03                    0x0030
-MX23_PAD_GPMI_D04__GPMI_D04                    0x0040
-MX23_PAD_GPMI_D05__GPMI_D05                    0x0050
-MX23_PAD_GPMI_D06__GPMI_D06                    0x0060
-MX23_PAD_GPMI_D07__GPMI_D07                    0x0070
-MX23_PAD_GPMI_D08__GPMI_D08                    0x0080
-MX23_PAD_GPMI_D09__GPMI_D09                    0x0090
-MX23_PAD_GPMI_D10__GPMI_D10                    0x00a0
-MX23_PAD_GPMI_D11__GPMI_D11                    0x00b0
-MX23_PAD_GPMI_D12__GPMI_D12                    0x00c0
-MX23_PAD_GPMI_D13__GPMI_D13                    0x00d0
-MX23_PAD_GPMI_D14__GPMI_D14                    0x00e0
-MX23_PAD_GPMI_D15__GPMI_D15                    0x00f0
-MX23_PAD_GPMI_CLE__GPMI_CLE                    0x0100
-MX23_PAD_GPMI_ALE__GPMI_ALE                    0x0110
-MX23_PAD_GPMI_CE2N__GPMI_CE2N                  0x0120
-MX23_PAD_GPMI_RDY0__GPMI_RDY0                  0x0130
-MX23_PAD_GPMI_RDY1__GPMI_RDY1                  0x0140
-MX23_PAD_GPMI_RDY2__GPMI_RDY2                  0x0150
-MX23_PAD_GPMI_RDY3__GPMI_RDY3                  0x0160
-MX23_PAD_GPMI_WPN__GPMI_WPN                    0x0170
-MX23_PAD_GPMI_WRN__GPMI_WRN                    0x0180
-MX23_PAD_GPMI_RDN__GPMI_RDN                    0x0190
-MX23_PAD_AUART1_CTS__AUART1_CTS                        0x01a0
-MX23_PAD_AUART1_RTS__AUART1_RTS                        0x01b0
-MX23_PAD_AUART1_RX__AUART1_RX                  0x01c0
-MX23_PAD_AUART1_TX__AUART1_TX                  0x01d0
-MX23_PAD_I2C_SCL__I2C_SCL                      0x01e0
-MX23_PAD_I2C_SDA__I2C_SDA                      0x01f0
-MX23_PAD_LCD_D00__LCD_D00                      0x1000
-MX23_PAD_LCD_D01__LCD_D01                      0x1010
-MX23_PAD_LCD_D02__LCD_D02                      0x1020
-MX23_PAD_LCD_D03__LCD_D03                      0x1030
-MX23_PAD_LCD_D04__LCD_D04                      0x1040
-MX23_PAD_LCD_D05__LCD_D05                      0x1050
-MX23_PAD_LCD_D06__LCD_D06                      0x1060
-MX23_PAD_LCD_D07__LCD_D07                      0x1070
-MX23_PAD_LCD_D08__LCD_D08                      0x1080
-MX23_PAD_LCD_D09__LCD_D09                      0x1090
-MX23_PAD_LCD_D10__LCD_D10                      0x10a0
-MX23_PAD_LCD_D11__LCD_D11                      0x10b0
-MX23_PAD_LCD_D12__LCD_D12                      0x10c0
-MX23_PAD_LCD_D13__LCD_D13                      0x10d0
-MX23_PAD_LCD_D14__LCD_D14                      0x10e0
-MX23_PAD_LCD_D15__LCD_D15                      0x10f0
-MX23_PAD_LCD_D16__LCD_D16                      0x1100
-MX23_PAD_LCD_D17__LCD_D17                      0x1110
-MX23_PAD_LCD_RESET__LCD_RESET                  0x1120
-MX23_PAD_LCD_RS__LCD_RS                                0x1130
-MX23_PAD_LCD_WR__LCD_WR                                0x1140
-MX23_PAD_LCD_CS__LCD_CS                                0x1150
-MX23_PAD_LCD_DOTCK__LCD_DOTCK                  0x1160
-MX23_PAD_LCD_ENABLE__LCD_ENABLE                        0x1170
-MX23_PAD_LCD_HSYNC__LCD_HSYNC                  0x1180
-MX23_PAD_LCD_VSYNC__LCD_VSYNC                  0x1190
-MX23_PAD_PWM0__PWM0                            0x11a0
-MX23_PAD_PWM1__PWM1                            0x11b0
-MX23_PAD_PWM2__PWM2                            0x11c0
-MX23_PAD_PWM3__PWM3                            0x11d0
-MX23_PAD_PWM4__PWM4                            0x11e0
-MX23_PAD_SSP1_CMD__SSP1_CMD                    0x2000
-MX23_PAD_SSP1_DETECT__SSP1_DETECT              0x2010
-MX23_PAD_SSP1_DATA0__SSP1_DATA0                        0x2020
-MX23_PAD_SSP1_DATA1__SSP1_DATA1                        0x2030
-MX23_PAD_SSP1_DATA2__SSP1_DATA2                        0x2040
-MX23_PAD_SSP1_DATA3__SSP1_DATA3                        0x2050
-MX23_PAD_SSP1_SCK__SSP1_SCK                    0x2060
-MX23_PAD_ROTARYA__ROTARYA                      0x2070
-MX23_PAD_ROTARYB__ROTARYB                      0x2080
-MX23_PAD_EMI_A00__EMI_A00                      0x2090
-MX23_PAD_EMI_A01__EMI_A01                      0x20a0
-MX23_PAD_EMI_A02__EMI_A02                      0x20b0
-MX23_PAD_EMI_A03__EMI_A03                      0x20c0
-MX23_PAD_EMI_A04__EMI_A04                      0x20d0
-MX23_PAD_EMI_A05__EMI_A05                      0x20e0
-MX23_PAD_EMI_A06__EMI_A06                      0x20f0
-MX23_PAD_EMI_A07__EMI_A07                      0x2100
-MX23_PAD_EMI_A08__EMI_A08                      0x2110
-MX23_PAD_EMI_A09__EMI_A09                      0x2120
-MX23_PAD_EMI_A10__EMI_A10                      0x2130
-MX23_PAD_EMI_A11__EMI_A11                      0x2140
-MX23_PAD_EMI_A12__EMI_A12                      0x2150
-MX23_PAD_EMI_BA0__EMI_BA0                      0x2160
-MX23_PAD_EMI_BA1__EMI_BA1                      0x2170
-MX23_PAD_EMI_CASN__EMI_CASN                    0x2180
-MX23_PAD_EMI_CE0N__EMI_CE0N                    0x2190
-MX23_PAD_EMI_CE1N__EMI_CE1N                    0x21a0
-MX23_PAD_GPMI_CE1N__GPMI_CE1N                  0x21b0
-MX23_PAD_GPMI_CE0N__GPMI_CE0N                  0x21c0
-MX23_PAD_EMI_CKE__EMI_CKE                      0x21d0
-MX23_PAD_EMI_RASN__EMI_RASN                    0x21e0
-MX23_PAD_EMI_WEN__EMI_WEN                      0x21f0
-MX23_PAD_EMI_D00__EMI_D00                      0x3000
-MX23_PAD_EMI_D01__EMI_D01                      0x3010
-MX23_PAD_EMI_D02__EMI_D02                      0x3020
-MX23_PAD_EMI_D03__EMI_D03                      0x3030
-MX23_PAD_EMI_D04__EMI_D04                      0x3040
-MX23_PAD_EMI_D05__EMI_D05                      0x3050
-MX23_PAD_EMI_D06__EMI_D06                      0x3060
-MX23_PAD_EMI_D07__EMI_D07                      0x3070
-MX23_PAD_EMI_D08__EMI_D08                      0x3080
-MX23_PAD_EMI_D09__EMI_D09                      0x3090
-MX23_PAD_EMI_D10__EMI_D10                      0x30a0
-MX23_PAD_EMI_D11__EMI_D11                      0x30b0
-MX23_PAD_EMI_D12__EMI_D12                      0x30c0
-MX23_PAD_EMI_D13__EMI_D13                      0x30d0
-MX23_PAD_EMI_D14__EMI_D14                      0x30e0
-MX23_PAD_EMI_D15__EMI_D15                      0x30f0
-MX23_PAD_EMI_DQM0__EMI_DQM0                    0x3100
-MX23_PAD_EMI_DQM1__EMI_DQM1                    0x3110
-MX23_PAD_EMI_DQS0__EMI_DQS0                    0x3120
-MX23_PAD_EMI_DQS1__EMI_DQS1                    0x3130
-MX23_PAD_EMI_CLK__EMI_CLK                      0x3140
-MX23_PAD_EMI_CLKN__EMI_CLKN                    0x3150
-MX23_PAD_GPMI_D00__LCD_D8                      0x0001
-MX23_PAD_GPMI_D01__LCD_D9                      0x0011
-MX23_PAD_GPMI_D02__LCD_D10                     0x0021
-MX23_PAD_GPMI_D03__LCD_D11                     0x0031
-MX23_PAD_GPMI_D04__LCD_D12                     0x0041
-MX23_PAD_GPMI_D05__LCD_D13                     0x0051
-MX23_PAD_GPMI_D06__LCD_D14                     0x0061
-MX23_PAD_GPMI_D07__LCD_D15                     0x0071
-MX23_PAD_GPMI_D08__LCD_D18                     0x0081
-MX23_PAD_GPMI_D09__LCD_D19                     0x0091
-MX23_PAD_GPMI_D10__LCD_D20                     0x00a1
-MX23_PAD_GPMI_D11__LCD_D21                     0x00b1
-MX23_PAD_GPMI_D12__LCD_D22                     0x00c1
-MX23_PAD_GPMI_D13__LCD_D23                     0x00d1
-MX23_PAD_GPMI_D14__AUART2_RX                   0x00e1
-MX23_PAD_GPMI_D15__AUART2_TX                   0x00f1
-MX23_PAD_GPMI_CLE__LCD_D16                     0x0101
-MX23_PAD_GPMI_ALE__LCD_D17                     0x0111
-MX23_PAD_GPMI_CE2N__ATA_A2                     0x0121
-MX23_PAD_AUART1_RTS__IR_CLK                    0x01b1
-MX23_PAD_AUART1_RX__IR_RX                      0x01c1
-MX23_PAD_AUART1_TX__IR_TX                      0x01d1
-MX23_PAD_I2C_SCL__GPMI_RDY2                    0x01e1
-MX23_PAD_I2C_SDA__GPMI_CE2N                    0x01f1
-MX23_PAD_LCD_D00__ETM_DA8                      0x1001
-MX23_PAD_LCD_D01__ETM_DA9                      0x1011
-MX23_PAD_LCD_D02__ETM_DA10                     0x1021
-MX23_PAD_LCD_D03__ETM_DA11                     0x1031
-MX23_PAD_LCD_D04__ETM_DA12                     0x1041
-MX23_PAD_LCD_D05__ETM_DA13                     0x1051
-MX23_PAD_LCD_D06__ETM_DA14                     0x1061
-MX23_PAD_LCD_D07__ETM_DA15                     0x1071
-MX23_PAD_LCD_D08__ETM_DA0                      0x1081
-MX23_PAD_LCD_D09__ETM_DA1                      0x1091
-MX23_PAD_LCD_D10__ETM_DA2                      0x10a1
-MX23_PAD_LCD_D11__ETM_DA3                      0x10b1
-MX23_PAD_LCD_D12__ETM_DA4                      0x10c1
-MX23_PAD_LCD_D13__ETM_DA5                      0x10d1
-MX23_PAD_LCD_D14__ETM_DA6                      0x10e1
-MX23_PAD_LCD_D15__ETM_DA7                      0x10f1
-MX23_PAD_LCD_RESET__ETM_TCTL                   0x1121
-MX23_PAD_LCD_RS__ETM_TCLK                      0x1131
-MX23_PAD_LCD_DOTCK__GPMI_RDY3                  0x1161
-MX23_PAD_LCD_ENABLE__I2C_SCL                   0x1171
-MX23_PAD_LCD_HSYNC__I2C_SDA                    0x1181
-MX23_PAD_LCD_VSYNC__LCD_BUSY                   0x1191
-MX23_PAD_PWM0__ROTARYA                         0x11a1
-MX23_PAD_PWM1__ROTARYB                         0x11b1
-MX23_PAD_PWM2__GPMI_RDY3                       0x11c1
-MX23_PAD_PWM3__ETM_TCTL                                0x11d1
-MX23_PAD_PWM4__ETM_TCLK                                0x11e1
-MX23_PAD_SSP1_DETECT__GPMI_CE3N                        0x2011
-MX23_PAD_SSP1_DATA1__I2C_SCL                   0x2031
-MX23_PAD_SSP1_DATA2__I2C_SDA                   0x2041
-MX23_PAD_ROTARYA__AUART2_RTS                   0x2071
-MX23_PAD_ROTARYB__AUART2_CTS                   0x2081
-MX23_PAD_GPMI_D00__SSP2_DATA0                  0x0002
-MX23_PAD_GPMI_D01__SSP2_DATA1                  0x0012
-MX23_PAD_GPMI_D02__SSP2_DATA2                  0x0022
-MX23_PAD_GPMI_D03__SSP2_DATA3                  0x0032
-MX23_PAD_GPMI_D04__SSP2_DATA4                  0x0042
-MX23_PAD_GPMI_D05__SSP2_DATA5                  0x0052
-MX23_PAD_GPMI_D06__SSP2_DATA6                  0x0062
-MX23_PAD_GPMI_D07__SSP2_DATA7                  0x0072
-MX23_PAD_GPMI_D08__SSP1_DATA4                  0x0082
-MX23_PAD_GPMI_D09__SSP1_DATA5                  0x0092
-MX23_PAD_GPMI_D10__SSP1_DATA6                  0x00a2
-MX23_PAD_GPMI_D11__SSP1_DATA7                  0x00b2
-MX23_PAD_GPMI_D15__GPMI_CE3N                   0x00f2
-MX23_PAD_GPMI_RDY0__SSP2_DETECT                        0x0132
-MX23_PAD_GPMI_RDY1__SSP2_CMD                   0x0142
-MX23_PAD_GPMI_WRN__SSP2_SCK                    0x0182
-MX23_PAD_AUART1_CTS__SSP1_DATA4                        0x01a2
-MX23_PAD_AUART1_RTS__SSP1_DATA5                        0x01b2
-MX23_PAD_AUART1_RX__SSP1_DATA6                 0x01c2
-MX23_PAD_AUART1_TX__SSP1_DATA7                 0x01d2
-MX23_PAD_I2C_SCL__AUART1_TX                    0x01e2
-MX23_PAD_I2C_SDA__AUART1_RX                    0x01f2
-MX23_PAD_LCD_D08__SAIF2_SDATA0                 0x1082
-MX23_PAD_LCD_D09__SAIF1_SDATA0                 0x1092
-MX23_PAD_LCD_D10__SAIF_MCLK_BITCLK             0x10a2
-MX23_PAD_LCD_D11__SAIF_LRCLK                   0x10b2
-MX23_PAD_LCD_D12__SAIF2_SDATA1                 0x10c2
-MX23_PAD_LCD_D13__SAIF2_SDATA2                 0x10d2
-MX23_PAD_LCD_D14__SAIF1_SDATA2                 0x10e2
-MX23_PAD_LCD_D15__SAIF1_SDATA1                 0x10f2
-MX23_PAD_LCD_D16__SAIF_ALT_BITCLK              0x1102
-MX23_PAD_LCD_RESET__GPMI_CE3N                  0x1122
-MX23_PAD_PWM0__DUART_RX                                0x11a2
-MX23_PAD_PWM1__DUART_TX                                0x11b2
-MX23_PAD_PWM3__AUART1_CTS                      0x11d2
-MX23_PAD_PWM4__AUART1_RTS                      0x11e2
-MX23_PAD_SSP1_CMD__JTAG_TDO                    0x2002
-MX23_PAD_SSP1_DETECT__USB_OTG_ID               0x2012
-MX23_PAD_SSP1_DATA0__JTAG_TDI                  0x2022
-MX23_PAD_SSP1_DATA1__JTAG_TCLK                 0x2032
-MX23_PAD_SSP1_DATA2__JTAG_RTCK                 0x2042
-MX23_PAD_SSP1_DATA3__JTAG_TMS                  0x2052
-MX23_PAD_SSP1_SCK__JTAG_TRST                   0x2062
-MX23_PAD_ROTARYA__SPDIF                                0x2072
-MX23_PAD_ROTARYB__GPMI_CE3N                    0x2082
-MX23_PAD_GPMI_D00__GPIO_0_0                    0x0003
-MX23_PAD_GPMI_D01__GPIO_0_1                    0x0013
-MX23_PAD_GPMI_D02__GPIO_0_2                    0x0023
-MX23_PAD_GPMI_D03__GPIO_0_3                    0x0033
-MX23_PAD_GPMI_D04__GPIO_0_4                    0x0043
-MX23_PAD_GPMI_D05__GPIO_0_5                    0x0053
-MX23_PAD_GPMI_D06__GPIO_0_6                    0x0063
-MX23_PAD_GPMI_D07__GPIO_0_7                    0x0073
-MX23_PAD_GPMI_D08__GPIO_0_8                    0x0083
-MX23_PAD_GPMI_D09__GPIO_0_9                    0x0093
-MX23_PAD_GPMI_D10__GPIO_0_10                   0x00a3
-MX23_PAD_GPMI_D11__GPIO_0_11                   0x00b3
-MX23_PAD_GPMI_D12__GPIO_0_12                   0x00c3
-MX23_PAD_GPMI_D13__GPIO_0_13                   0x00d3
-MX23_PAD_GPMI_D14__GPIO_0_14                   0x00e3
-MX23_PAD_GPMI_D15__GPIO_0_15                   0x00f3
-MX23_PAD_GPMI_CLE__GPIO_0_16                   0x0103
-MX23_PAD_GPMI_ALE__GPIO_0_17                   0x0113
-MX23_PAD_GPMI_CE2N__GPIO_0_18                  0x0123
-MX23_PAD_GPMI_RDY0__GPIO_0_19                  0x0133
-MX23_PAD_GPMI_RDY1__GPIO_0_20                  0x0143
-MX23_PAD_GPMI_RDY2__GPIO_0_21                  0x0153
-MX23_PAD_GPMI_RDY3__GPIO_0_22                  0x0163
-MX23_PAD_GPMI_WPN__GPIO_0_23                   0x0173
-MX23_PAD_GPMI_WRN__GPIO_0_24                   0x0183
-MX23_PAD_GPMI_RDN__GPIO_0_25                   0x0193
-MX23_PAD_AUART1_CTS__GPIO_0_26                 0x01a3
-MX23_PAD_AUART1_RTS__GPIO_0_27                 0x01b3
-MX23_PAD_AUART1_RX__GPIO_0_28                  0x01c3
-MX23_PAD_AUART1_TX__GPIO_0_29                  0x01d3
-MX23_PAD_I2C_SCL__GPIO_0_30                    0x01e3
-MX23_PAD_I2C_SDA__GPIO_0_31                    0x01f3
-MX23_PAD_LCD_D00__GPIO_1_0                     0x1003
-MX23_PAD_LCD_D01__GPIO_1_1                     0x1013
-MX23_PAD_LCD_D02__GPIO_1_2                     0x1023
-MX23_PAD_LCD_D03__GPIO_1_3                     0x1033
-MX23_PAD_LCD_D04__GPIO_1_4                     0x1043
-MX23_PAD_LCD_D05__GPIO_1_5                     0x1053
-MX23_PAD_LCD_D06__GPIO_1_6                     0x1063
-MX23_PAD_LCD_D07__GPIO_1_7                     0x1073
-MX23_PAD_LCD_D08__GPIO_1_8                     0x1083
-MX23_PAD_LCD_D09__GPIO_1_9                     0x1093
-MX23_PAD_LCD_D10__GPIO_1_10                    0x10a3
-MX23_PAD_LCD_D11__GPIO_1_11                    0x10b3
-MX23_PAD_LCD_D12__GPIO_1_12                    0x10c3
-MX23_PAD_LCD_D13__GPIO_1_13                    0x10d3
-MX23_PAD_LCD_D14__GPIO_1_14                    0x10e3
-MX23_PAD_LCD_D15__GPIO_1_15                    0x10f3
-MX23_PAD_LCD_D16__GPIO_1_16                    0x1103
-MX23_PAD_LCD_D17__GPIO_1_17                    0x1113
-MX23_PAD_LCD_RESET__GPIO_1_18                  0x1123
-MX23_PAD_LCD_RS__GPIO_1_19                     0x1133
-MX23_PAD_LCD_WR__GPIO_1_20                     0x1143
-MX23_PAD_LCD_CS__GPIO_1_21                     0x1153
-MX23_PAD_LCD_DOTCK__GPIO_1_22                  0x1163
-MX23_PAD_LCD_ENABLE__GPIO_1_23                 0x1173
-MX23_PAD_LCD_HSYNC__GPIO_1_24                  0x1183
-MX23_PAD_LCD_VSYNC__GPIO_1_25                  0x1193
-MX23_PAD_PWM0__GPIO_1_26                       0x11a3
-MX23_PAD_PWM1__GPIO_1_27                       0x11b3
-MX23_PAD_PWM2__GPIO_1_28                       0x11c3
-MX23_PAD_PWM3__GPIO_1_29                       0x11d3
-MX23_PAD_PWM4__GPIO_1_30                       0x11e3
-MX23_PAD_SSP1_CMD__GPIO_2_0                    0x2003
-MX23_PAD_SSP1_DETECT__GPIO_2_1                 0x2013
-MX23_PAD_SSP1_DATA0__GPIO_2_2                  0x2023
-MX23_PAD_SSP1_DATA1__GPIO_2_3                  0x2033
-MX23_PAD_SSP1_DATA2__GPIO_2_4                  0x2043
-MX23_PAD_SSP1_DATA3__GPIO_2_5                  0x2053
-MX23_PAD_SSP1_SCK__GPIO_2_6                    0x2063
-MX23_PAD_ROTARYA__GPIO_2_7                     0x2073
-MX23_PAD_ROTARYB__GPIO_2_8                     0x2083
-MX23_PAD_EMI_A00__GPIO_2_9                     0x2093
-MX23_PAD_EMI_A01__GPIO_2_10                    0x20a3
-MX23_PAD_EMI_A02__GPIO_2_11                    0x20b3
-MX23_PAD_EMI_A03__GPIO_2_12                    0x20c3
-MX23_PAD_EMI_A04__GPIO_2_13                    0x20d3
-MX23_PAD_EMI_A05__GPIO_2_14                    0x20e3
-MX23_PAD_EMI_A06__GPIO_2_15                    0x20f3
-MX23_PAD_EMI_A07__GPIO_2_16                    0x2103
-MX23_PAD_EMI_A08__GPIO_2_17                    0x2113
-MX23_PAD_EMI_A09__GPIO_2_18                    0x2123
-MX23_PAD_EMI_A10__GPIO_2_19                    0x2133
-MX23_PAD_EMI_A11__GPIO_2_20                    0x2143
-MX23_PAD_EMI_A12__GPIO_2_21                    0x2153
-MX23_PAD_EMI_BA0__GPIO_2_22                    0x2163
-MX23_PAD_EMI_BA1__GPIO_2_23                    0x2173
-MX23_PAD_EMI_CASN__GPIO_2_24                   0x2183
-MX23_PAD_EMI_CE0N__GPIO_2_25                   0x2193
-MX23_PAD_EMI_CE1N__GPIO_2_26                   0x21a3
-MX23_PAD_GPMI_CE1N__GPIO_2_27                  0x21b3
-MX23_PAD_GPMI_CE0N__GPIO_2_28                  0x21c3
-MX23_PAD_EMI_CKE__GPIO_2_29                    0x21d3
-MX23_PAD_EMI_RASN__GPIO_2_30                   0x21e3
-MX23_PAD_EMI_WEN__GPIO_2_31                    0x21f3
+Valid values for i.MX28/i.MX23 pinmux-id are defined in
+arch/arm/boot/dts/imx28-pinfunc.h and arch/arm/boot/dts/imx23-pinfunc.h.
+The definitions for the padconfig properties can be found in
+arch/arm/boot/dts/mxs-pinfunc.h.
index 5a02e30dd262dfabfca818339c4da04dc2eae9d2..7069a0b84e3a43d46f0a3e698975ad208ab45e17 100644 (file)
@@ -72,6 +72,13 @@ Optional properties:
                /* pin base, nr pins & gpio function */
                pinctrl-single,gpio-range = <&range 0 3 0 &range 3 9 1>;
 
+- interrupt-controller : standard interrupt controller binding if using
+  interrupts for wake-up events for example. In this case pinctrl-single
+  is set up as a chained interrupt controller and the wake-up interrupts
+  can be requested by the drivers using request_irq().
+
+- #interrupt-cells : standard interrupt binding if using interrupts
+
 This driver assumes that there is only one register for each pin (unless the
 pinctrl-single,bit-per-mux is set), and uses the common pinctrl bindings as
 specified in the pinctrl-bindings.txt document in this directory.
@@ -121,6 +128,8 @@ pmx_core: pinmux@4a100040 {
        reg = <0x4a100040 0x0196>;
        #address-cells = <1>;
        #size-cells = <0>;
+       #interrupt-cells = <1>;
+       interrupt-controller;
        pinctrl-single,register-width = <16>;
        pinctrl-single,function-mask = <0xffff>;
 };
@@ -131,6 +140,8 @@ pmx_wkup: pinmux@4a31e040 {
        reg = <0x4a31e040 0x0038>;
        #address-cells = <1>;
        #size-cells = <0>;
+       #interrupt-cells = <1>;
+       interrupt-controller;
        pinctrl-single,register-width = <16>;
        pinctrl-single,function-mask = <0xffff>;
 };
index 330d6ec154016caf4bccd0a5bde0d36847412fcb..439a41c79afacd680a6c8309935ab37573cd6326 100644 (file)
@@ -15,7 +15,7 @@ Optional properties:
 Example:
 
 usb_per5@a03e0000 {
-       compatible = "stericsson,db8500-musb", "mentor,musb";
+       compatible = "stericsson,db8500-musb";
        reg = <0xa03e0000 0x10000>;
        interrupts = <0 23 0x4>;
        interrupt-names = "mc";
index 323983be3c30d1684ec155736f0e9e179922fccc..50decf8e1b90a573b11dc864c7b30612a5d5c5a0 100644 (file)
@@ -12,7 +12,19 @@ Required properties:
        a) phandle of the gpio controller node.
        b) pin number within the gpio controller.
        c) optional flags and pull up/down.
-
+- clocks: list of clock IDs from SoC clock driver.
+       a) hdmi: Gate of HDMI IP bus clock.
+       b) sclk_hdmi: Gate of HDMI special clock.
+       c) sclk_pixel: Pixel special clock, one of the two possible inputs of
+               HDMI clock mux.
+       d) sclk_hdmiphy: HDMI PHY clock output, one of two possible inputs of
+               HDMI clock mux.
+       e) mout_hdmi: It is required by the driver to switch between the 2
+               parents i.e. sclk_pixel and sclk_hdmiphy. If hdmiphy is stable
+               after configuration, parent is set to sclk_hdmiphy else
+               sclk_pixel.
+- clock-names: aliases as per driver requirements for above clock IDs:
+       "hdmi", "sclk_hdmi", "sclk_pixel", "sclk_hdmiphy" and "mout_hdmi".
 Example:
 
        hdmi {
index 3334b0a8e343ee078825100c796c6c8b77dcebcc..7bfde9c9d658d780e82452d52d3fa5cfa3e36919 100644 (file)
@@ -10,6 +10,10 @@ Required properties:
 - reg: physical base address of the mixer and length of memory mapped
        region.
 - interrupts: interrupt number to the cpu.
+- clocks: list of clock IDs from SoC clock driver.
+       a) mixer: Gate of Mixer IP bus clock.
+       b) sclk_hdmi: HDMI Special clock, one of the two possible inputs of
+               mixer mux.
 
 Example:
 
index f911e3656209f6c1bdc49a156f322b64dfd3a824..85c362d8ea349350947a8363d36dbe7e622ea536 100644 (file)
@@ -28,6 +28,7 @@ ALC269/270/275/276/28x/29x
   alc269-dmic          Enable ALC269(VA) digital mic workaround
   alc271-dmic          Enable ALC271X digital mic workaround
   inv-dmic             Inverted internal mic workaround
+  headset-mic          Indicates a combined headset (headphone+mic) jack
   lenovo-dock          Enables docking station I/O for some Lenovos
   dell-headset-multi   Headset jack, which can also be used as mic-in
   dell-headset-dock    Headset jack (without mic-in), and also dock I/O
index 8a0cbf3cf2c8c01c5be662eef372eff4060daffc..cb1f2e022aa14bbc4f176230fa46b522f3b28a5a 100644 (file)
@@ -929,7 +929,7 @@ M:  Javier Martinez Canillas <javier@dowhile0.org>
 L:     linux-omap@vger.kernel.org
 L:     linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 S:     Maintained
-F:     arch/arm/mach-omap2/board-igep0020.c
+F:     arch/arm/boot/dts/omap3-igep*
 
 ARM/INCOME PXA270 SUPPORT
 M:     Marek Vasut <marek.vasut@gmail.com>
@@ -6088,6 +6088,12 @@ L:       linux-omap@vger.kernel.org
 S:     Maintained
 F:     drivers/gpio/gpio-omap.c
 
+OMAP/NEWFLOW NANOBONE MACHINE SUPPORT
+M:     Mark Jackson <mpfj@newflow.co.uk>
+L:     linux-omap@vger.kernel.org
+S:     Maintained
+F:     arch/arm/boot/dts/am335x-nano.dts
+
 OMFS FILESYSTEM
 M:     Bob Copeland <me@bobcopeland.com>
 L:     linux-karma-devel@lists.sourceforge.net
index 9de9aba21bf9cf9d2a7c467e816417c02b217ecc..deec08b7612b4c0d903ca6c9323eddaac6e4ea08 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 3
 PATCHLEVEL = 12
 SUBLEVEL = 0
-EXTRAVERSION = -rc4
+EXTRAVERSION = -rc5
 NAME = One Giant Leap for Frogkind
 
 # *DOCUMENTATION*
index 333238564b67f1239afde4ab4d584f16d8a48572..5d76706139dd36a246eb545f36fe42c1bf44ee9d 100644 (file)
@@ -102,7 +102,7 @@ static int genregs_set(struct task_struct *target,
        REG_IGNORE_ONE(pad2);
        REG_IN_CHUNK(callee, efa, cregs);       /* callee_regs[r25..r13] */
        REG_IGNORE_ONE(efa);                    /* efa update invalid */
-       REG_IN_ONE(stop_pc, &ptregs->ret);      /* stop_pc: PC update */
+       REG_IGNORE_ONE(stop_pc);                        /* PC updated via @ret */
 
        return ret;
 }
index 1ad6fb6c094db415ec76a72a28356e75bdfd7d17..5ef81367a8e8897cc762be861baddd7b64f08b27 100644 (file)
@@ -727,6 +727,7 @@ config ARCH_S3C64XX
        select ARM_VIC
        select CLKDEV_LOOKUP
        select CLKSRC_SAMSUNG_PWM
+       select COMMON_CLK
        select CPU_V6
        select GENERIC_CLOCKEVENTS
        select GPIO_SAMSUNG
@@ -740,7 +741,6 @@ config ARCH_S3C64XX
        select S3C_DEV_NAND
        select S3C_GPIO_TRACK
        select SAMSUNG_ATAGS
-       select SAMSUNG_CLKSRC
        select SAMSUNG_GPIOLIB_4BIT
        select SAMSUNG_WDT_RESET
        select USB_ARCH_HAS_OHCI
index a37a50f575a27af2c95abca5c473d6a60233d8b9..db50b626be9871f7426ee394a9b189d8d504c8a3 100644 (file)
@@ -296,10 +296,15 @@ archprepare:
 # Convert bzImage to zImage
 bzImage: zImage
 
-zImage Image xipImage bootpImage uImage: vmlinux
+BOOT_TARGETS   = zImage Image xipImage bootpImage uImage
+INSTALL_TARGETS        = zinstall uinstall install
+
+PHONY += bzImage $(BOOT_TARGETS) $(INSTALL_TARGETS)
+
+$(BOOT_TARGETS): vmlinux
        $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $(boot)/$@
 
-zinstall uinstall install: vmlinux
+$(INSTALL_TARGETS):
        $(Q)$(MAKE) $(build)=$(boot) MACHINE=$(MACHINE) $@
 
 %.dtb: | scripts
index 84aa2caf07ed203fb810220258401a1b51f7cab3..ec2f8065f955c5c31a69888bf261c58ea56ffb6d 100644 (file)
@@ -95,24 +95,24 @@ initrd:
        @test "$(INITRD)" != "" || \
        (echo You must specify INITRD; exit -1)
 
-install: $(obj)/Image
-       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+install:
+       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
        $(obj)/Image System.map "$(INSTALL_PATH)"
 
-zinstall: $(obj)/zImage
-       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+zinstall:
+       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
        $(obj)/zImage System.map "$(INSTALL_PATH)"
 
-uinstall: $(obj)/uImage
-       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+uinstall:
+       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
        $(obj)/uImage System.map "$(INSTALL_PATH)"
 
 zi:
-       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
        $(obj)/zImage System.map "$(INSTALL_PATH)"
 
 i:
-       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh $(KERNELRELEASE) \
+       $(CONFIG_SHELL) $(srctree)/$(src)/install.sh "$(KERNELRELEASE)" \
        $(obj)/Image System.map "$(INSTALL_PATH)"
 
 subdir-            := bootp compressed dts
index 802720e3e8fd5c72004c14cce0bc572a0355356a..b590bcebaa68ae5dd7d99315f0251a197090ac8e 100644 (file)
@@ -51,6 +51,7 @@ dtb-$(CONFIG_ARCH_DAVINCI) += da850-enbw-cmc.dtb \
 dtb-$(CONFIG_ARCH_DOVE) += dove-cm-a510.dtb \
        dove-cubox.dtb \
        dove-d2plug.dtb \
+       dove-d3plug.dtb \
        dove-dove-db.dtb
 dtb-$(CONFIG_ARCH_EXYNOS) += exynos4210-origen.dtb \
        exynos4210-smdkv310.dtb \
@@ -112,6 +113,7 @@ dtb-$(CONFIG_ARCH_MVEBU) += armada-370-db.dtb \
        armada-xp-axpwifiap.dtb \
        armada-xp-db.dtb \
        armada-xp-gp.dtb \
+       armada-xp-matrix.dtb \
        armada-xp-openblocks-ax3-4.dtb
 dtb-$(CONFIG_ARCH_MXC) += \
        imx25-karo-tx25.dtb \
@@ -142,8 +144,10 @@ dtb-$(CONFIG_ARCH_MXC) += \
        imx6q-sabrelite.dtb \
        imx6q-sabresd.dtb \
        imx6q-sbc6x.dtb \
+       imx6q-udoo.dtb \
        imx6q-wandboard.dtb \
        imx6sl-evk.dtb \
+       vf610-cosmic.dtb \
        vf610-twr.dtb
 dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
        imx23-olinuxino.dtb \
@@ -159,6 +163,7 @@ dtb-$(CONFIG_ARCH_MXS) += imx23-evk.dtb \
        imx28-cfa10057.dtb \
        imx28-cfa10058.dtb \
        imx28-evk.dtb \
+       imx28-m28cu3.dtb \
        imx28-m28evk.dtb \
        imx28-sps1.dtb \
        imx28-tx28.dtb
@@ -172,9 +177,15 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
        omap3-devkit8000.dtb \
        omap3-beagle-xm.dtb \
        omap3-evm.dtb \
+       omap3-evm-37xx.dtb \
+       omap3-n900.dtb \
+       omap3-n9.dtb \
+       omap3-n950.dtb \
        omap3-tobi.dtb \
+       omap3-gta04.dtb \
        omap3-igep0020.dtb \
        omap3-igep0030.dtb \
+       omap3-zoom3.dtb \
        omap4-panda.dtb \
        omap4-panda-a4.dtb \
        omap4-panda-es.dtb \
@@ -186,17 +197,24 @@ dtb-$(CONFIG_ARCH_OMAP2PLUS) += omap2420-h4.dtb \
        am335x-evmsk.dtb \
        am335x-bone.dtb \
        am335x-boneblack.dtb \
+       am335x-nano.dtb \
+       am335x-base0033.dtb \
        am3517-evm.dtb \
        am3517_mt_ventoux.dtb \
-       am43x-epos-evm.dtb
+       am43x-epos-evm.dtb \
+       dra7-evm.dtb
 dtb-$(CONFIG_ARCH_ORION5X) += orion5x-lacie-ethernet-disk-mini-v2.dtb
 dtb-$(CONFIG_ARCH_PRIMA2) += prima2-evb.dtb
 dtb-$(CONFIG_ARCH_U8500) += ste-snowball.dtb \
-       ste-hrefprev60.dtb \
-       ste-hrefv60plus.dtb \
+       ste-hrefprev60-stuib.dtb \
+       ste-hrefprev60-tvk.dtb \
+       ste-hrefv60plus-stuib.dtb \
+       ste-hrefv60plus-tvk.dtb \
        ste-ccu8540.dtb \
        ste-ccu9540.dtb
 dtb-$(CONFIG_ARCH_S3C24XX) += s3c2416-smdk2416.dtb
+dtb-$(CONFIG_ARCH_S3C64XX) += s3c6410-mini6410.dtb \
+       s3c6410-smdk6410.dtb
 dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
        emev2-kzm9d-reference.dtb \
        r8a7740-armadillo800eva.dtb \
@@ -213,7 +231,9 @@ dtb-$(CONFIG_ARCH_SHMOBILE) += emev2-kzm9d.dtb \
        r8a73a4-ape6evm-reference.dtb \
        sh7372-mackerel.dtb
 dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d-reference.dtb
-dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_cyclone5.dtb \
+dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_arria5_socdk.dtb \
+       socfpga_cyclone5_socdk.dtb \
+       socfpga_cyclone5_sockit.dtb \
        socfpga_vt.dtb
 dtb-$(CONFIG_ARCH_SPEAR13XX) += spear1310-evb.dtb \
        spear1340-evb.dtb
@@ -235,6 +255,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += \
        sun5i-a13-olinuxino.dtb \
        sun6i-a31-colombus.dtb \
        sun7i-a20-cubieboard2.dtb \
+       sun7i-a20-cubietruck.dtb \
        sun7i-a20-olinuxino-micro.dtb
 dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
        tegra20-iris-512.dtb \
@@ -249,7 +270,8 @@ dtb-$(CONFIG_ARCH_TEGRA) += tegra20-harmony.dtb \
        tegra30-beaver.dtb \
        tegra30-cardhu-a02.dtb \
        tegra30-cardhu-a04.dtb \
-       tegra114-dalmore.dtb
+       tegra114-dalmore.dtb \
+       tegra124-venice2.dtb
 dtb-$(CONFIG_ARCH_VERSATILE) += versatile-ab.dtb \
        versatile-pb.dtb
 dtb-$(CONFIG_ARCH_U300) += ste-u300.dtb
diff --git a/arch/arm/boot/dts/am335x-base0033.dts b/arch/arm/boot/dts/am335x-base0033.dts
new file mode 100644 (file)
index 0000000..b4f95c2
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * am335x-base0033.dts - Device Tree file for IGEP AQUILA EXPANSION
+ *
+ * Copyright (C) 2013 ISEE 2007 SL - http://www.isee.biz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "am335x-igep0033.dtsi"
+
+/ {
+       model = "IGEP COM AM335x on AQUILA Expansion";
+       compatible = "isee,am335x-base0033", "isee,am335x-igep0033", "ti,am33xx";
+};
index 2f66deda9f5c171b4394046e14dba7b4814588df..e3f27ec317182b887961c0a58ca49f66407935d8 100644 (file)
                reg = <0x80000000 0x10000000>; /* 256 MB */
        };
 
-       am33xx_pinmux: pinmux@44e10800 {
+       leds {
                pinctrl-names = "default";
-               pinctrl-0 = <&clkout2_pin>;
-
-               user_leds_s0: user_leds_s0 {
-                       pinctrl-single,pins = <
-                               0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a5.gpio1_21 */
-                               0x58 (PIN_OUTPUT_PULLUP | MUX_MODE7)    /* gpmc_a6.gpio1_22 */
-                               0x5c (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a7.gpio1_23 */
-                               0x60 (PIN_OUTPUT_PULLUP | MUX_MODE7)    /* gpmc_a8.gpio1_24 */
-                       >;
-               };
+               pinctrl-0 = <&user_leds_s0>;
 
-               i2c0_pins: pinmux_i2c0_pins {
-                       pinctrl-single,pins = <
-                               0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
-                               0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
-                       >;
-               };
+               compatible = "gpio-leds";
 
-               uart0_pins: pinmux_uart0_pins {
-                       pinctrl-single,pins = <
-                               0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
-                               0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
-                       >;
+               led@2 {
+                       label = "beaglebone:green:heartbeat";
+                       gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "off";
                };
 
-               clkout2_pin: pinmux_clkout2_pin {
-                       pinctrl-single,pins = <
-                               0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
-                       >;
+               led@3 {
+                       label = "beaglebone:green:mmc0";
+                       gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "mmc0";
+                       default-state = "off";
                };
 
-               cpsw_default: cpsw_default {
-                       pinctrl-single,pins = <
-                               /* Slave 1 */
-                               0x110 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxerr.mii1_rxerr */
-                               0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txen.mii1_txen */
-                               0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxdv.mii1_rxdv */
-                               0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd3.mii1_txd3 */
-                               0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd2.mii1_txd2 */
-                               0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd1.mii1_txd1 */
-                               0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd0.mii1_txd0 */
-                               0x12c (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_txclk.mii1_txclk */
-                               0x130 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxclk.mii1_rxclk */
-                               0x134 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd3.mii1_rxd3 */
-                               0x138 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd2.mii1_rxd2 */
-                               0x13c (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd1.mii1_rxd1 */
-                               0x140 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd0.mii1_rxd0 */
-                       >;
+               led@4 {
+                       label = "beaglebone:green:usr2";
+                       gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "cpu0";
+                       default-state = "off";
                };
 
-               cpsw_sleep: cpsw_sleep {
-                       pinctrl-single,pins = <
-                               /* Slave 1 reset value */
-                               0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                       >;
+               led@5 {
+                       label = "beaglebone:green:usr3";
+                       gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "mmc1";
+                       default-state = "off";
                };
+       };
 
-               davinci_mdio_default: davinci_mdio_default {
-                       pinctrl-single,pins = <
-                               /* MDIO */
-                               0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
-                               0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
-                       >;
-               };
+       vmmcsd_fixed: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vmmcsd_fixed";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
 
-               davinci_mdio_sleep: davinci_mdio_sleep {
-                       pinctrl-single,pins = <
-                               /* MDIO reset value */
-                               0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                       >;
-               };
+&am33xx_pinmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&clkout2_pin>;
+
+       user_leds_s0: user_leds_s0 {
+               pinctrl-single,pins = <
+                       0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a5.gpio1_21 */
+                       0x58 (PIN_OUTPUT_PULLUP | MUX_MODE7)    /* gpmc_a6.gpio1_22 */
+                       0x5c (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a7.gpio1_23 */
+                       0x60 (PIN_OUTPUT_PULLUP | MUX_MODE7)    /* gpmc_a8.gpio1_24 */
+               >;
        };
 
-       ocp {
-               uart0: serial@44e09000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&uart0_pins>;
+       i2c0_pins: pinmux_i2c0_pins {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
+                       0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
+               >;
+       };
 
-                       status = "okay";
-               };
+       uart0_pins: pinmux_uart0_pins {
+               pinctrl-single,pins = <
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
+                       0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
+               >;
+       };
 
-               musb: usb@47400000 {
-                       status = "okay";
+       clkout2_pin: pinmux_clkout2_pin {
+               pinctrl-single,pins = <
+                       0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
+               >;
+       };
 
-                       control@44e10000 {
-                               status = "okay";
-                       };
+       cpsw_default: cpsw_default {
+               pinctrl-single,pins = <
+                       /* Slave 1 */
+                       0x110 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxerr.mii1_rxerr */
+                       0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txen.mii1_txen */
+                       0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxdv.mii1_rxdv */
+                       0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd3.mii1_txd3 */
+                       0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd2.mii1_txd2 */
+                       0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd1.mii1_txd1 */
+                       0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* mii1_txd0.mii1_txd0 */
+                       0x12c (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_txclk.mii1_txclk */
+                       0x130 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxclk.mii1_rxclk */
+                       0x134 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd3.mii1_rxd3 */
+                       0x138 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd2.mii1_rxd2 */
+                       0x13c (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd1.mii1_rxd1 */
+                       0x140 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mii1_rxd0.mii1_rxd0 */
+               >;
+       };
 
-                       usb-phy@47401300 {
-                               status = "okay";
-                       };
+       cpsw_sleep: cpsw_sleep {
+               pinctrl-single,pins = <
+                       /* Slave 1 reset value */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
 
-                       usb-phy@47401b00 {
-                               status = "okay";
-                       };
+       davinci_mdio_default: davinci_mdio_default {
+               pinctrl-single,pins = <
+                       /* MDIO */
+                       0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
+                       0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
+               >;
+       };
 
-                       usb@47401000 {
-                               status = "okay";
-                       };
+       davinci_mdio_sleep: davinci_mdio_sleep {
+               pinctrl-single,pins = <
+                       /* MDIO reset value */
+                       0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
 
-                       usb@47401800 {
-                               status = "okay";
-                               dr_mode = "host";
-                       };
+       mmc1_pins: pinmux_mmc1_pins {
+               pinctrl-single,pins = <
+                       0x160 (PIN_INPUT | MUX_MODE7) /* GPIO0_6 */
+               >;
+       };
 
-                       dma-controller@07402000  {
-                               status = "okay";
-                       };
-               };
+       emmc_pins: pinmux_emmc_pins {
+               pinctrl-single,pins = <
+                       0x80 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn1.mmc1_clk */
+                       0x84 (PIN_INPUT_PULLUP | MUX_MODE2) /* gpmc_csn2.mmc1_cmd */
+                       0x00 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad0.mmc1_dat0 */
+                       0x04 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad1.mmc1_dat1 */
+                       0x08 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad2.mmc1_dat2 */
+                       0x0c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad3.mmc1_dat3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad4.mmc1_dat4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad5.mmc1_dat5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad6.mmc1_dat6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE1) /* gpmc_ad7.mmc1_dat7 */
+               >;
+       };
+};
 
-               i2c0: i2c@44e0b000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&i2c0_pins>;
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
 
-                       status = "okay";
-                       clock-frequency = <400000>;
+       status = "okay";
+};
 
-                       tps: tps@24 {
-                               reg = <0x24>;
-                       };
+&usb {
+       status = "okay";
 
-               };
+       control@44e10000 {
+               status = "okay";
        };
 
-       leds {
-               pinctrl-names = "default";
-               pinctrl-0 = <&user_leds_s0>;
+       usb-phy@47401300 {
+               status = "okay";
+       };
 
-               compatible = "gpio-leds";
+       usb-phy@47401b00 {
+               status = "okay";
+       };
 
-               led@2 {
-                       label = "beaglebone:green:heartbeat";
-                       gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "heartbeat";
-                       default-state = "off";
-               };
+       usb@47401000 {
+               status = "okay";
+       };
 
-               led@3 {
-                       label = "beaglebone:green:mmc0";
-                       gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
-                       linux,default-trigger = "mmc0";
-                       default-state = "off";
-               };
+       usb@47401800 {
+               status = "okay";
+               dr_mode = "host";
+       };
 
-               led@4 {
-                       label = "beaglebone:green:usr2";
-                       gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
-                       default-state = "off";
-               };
+       dma-controller@07402000  {
+               status = "okay";
+       };
+};
 
-               led@5 {
-                       label = "beaglebone:green:usr3";
-                       gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
-                       default-state = "off";
-               };
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tps: tps@24 {
+               reg = <0x24>;
        };
+
 };
 
 /include/ "tps65217.dtsi"
        pinctrl-0 = <&davinci_mdio_default>;
        pinctrl-1 = <&davinci_mdio_sleep>;
 };
+
+&mmc1 {
+       status = "okay";
+       bus-width = <0x4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
+       cd-inverted;
+};
index 7993c489982c86ab2cf03a85b152f9b7db99ad3f..94ee427a6db17663bfbd28912df2a62d17ce6085 100644 (file)
@@ -9,3 +9,21 @@
 
 #include "am33xx.dtsi"
 #include "am335x-bone-common.dtsi"
+
+&ldo3_reg {
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-always-on;
+};
+
+&mmc1 {
+       vmmc-supply = <&ldo3_reg>;
+};
+
+&sham {
+       status = "okay";
+};
+
+&aes {
+       status = "okay";
+};
index 197cadf72d2cd92ed03351e3c2ac590c2401bd50..6b71ad95a5cfd085a12dd390b794a7d37290a468 100644 (file)
        regulator-max-microvolt = <1800000>;
        regulator-always-on;
 };
+
+&mmc1 {
+       vmmc-supply = <&vmmcsd_fixed>;
+};
+
+&mmc2 {
+       vmmc-supply = <&vmmcsd_fixed>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_pins>;
+       bus-width = <8>;
+       status = "okay";
+       ti,vcc-aux-disable-is-sleep;
+};
+
+&am33xx_pinmux {
+       nxp_hdmi_bonelt_pins: nxp_hdmi_bonelt_pins {
+               pinctrl-single,pins = <
+                       0x1b0 0x03      /* xdma_event_intr0, OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT */
+                       0xa0 0x08       /* lcd_data0.lcd_data0, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xa4 0x08       /* lcd_data1.lcd_data1, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xa8 0x08       /* lcd_data2.lcd_data2, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xac 0x08       /* lcd_data3.lcd_data3, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xb0 0x08       /* lcd_data4.lcd_data4, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xb4 0x08       /* lcd_data5.lcd_data5, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xb8 0x08       /* lcd_data6.lcd_data6, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xbc 0x08       /* lcd_data7.lcd_data7, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xc0 0x08       /* lcd_data8.lcd_data8, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xc4 0x08       /* lcd_data9.lcd_data9, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xc8 0x08       /* lcd_data10.lcd_data10, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xcc 0x08       /* lcd_data11.lcd_data11, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xd0 0x08       /* lcd_data12.lcd_data12, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xd4 0x08       /* lcd_data13.lcd_data13, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xd8 0x08       /* lcd_data14.lcd_data14, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xdc 0x08       /* lcd_data15.lcd_data15, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT | AM33XX_PULL_DISA */
+                       0xe0 0x00       /* lcd_vsync.lcd_vsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
+                       0xe4 0x00       /* lcd_hsync.lcd_hsync, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
+                       0xe8 0x00       /* lcd_pclk.lcd_pclk, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
+                       0xec 0x00       /* lcd_ac_bias_en.lcd_ac_bias_en, OMAP_MUX_MODE0 | AM33XX_PIN_OUTPUT */
+               >;
+       };
+       nxp_hdmi_bonelt_off_pins: nxp_hdmi_bonelt_off_pins {
+               pinctrl-single,pins = <
+                       0x1b0 0x03      /* xdma_event_intr0, OMAP_MUX_MODE3 | AM33XX_PIN_OUTPUT */
+               >;
+       };
+};
+
+&lcdc {
+       status = "okay";
+};
+
+/ {
+       hdmi {
+               compatible = "ti,tilcdc,slave";
+               i2c = <&i2c0>;
+               pinctrl-names = "default", "off";
+               pinctrl-0 = <&nxp_hdmi_bonelt_pins>;
+               pinctrl-1 = <&nxp_hdmi_bonelt_off_pins>;
+               status = "okay";
+       };
+};
index e8ec8756e4985f2b616a2aa8da28682dbd043246..987429436171f0dd2ac8bb1bd0b64e548fc1e722 100644 (file)
                reg = <0x80000000 0x10000000>; /* 256 MB */
        };
 
-       am33xx_pinmux: pinmux@44e10800 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&matrix_keypad_s0 &volume_keys_s0 &clkout2_pin>;
-
-               matrix_keypad_s0: matrix_keypad_s0 {
-                       pinctrl-single,pins = <
-                               0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a5.gpio1_21 */
-                               0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a6.gpio1_22 */
-                               0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_a9.gpio1_25 */
-                               0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_a10.gpio1_26 */
-                               0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_a11.gpio1_27 */
-                       >;
-               };
-
-               volume_keys_s0: volume_keys_s0 {
-                       pinctrl-single,pins = <
-                               0x150 (PIN_INPUT_PULLDOWN | MUX_MODE7)  /* spi0_sclk.gpio0_2 */
-                               0x154 (PIN_INPUT_PULLDOWN | MUX_MODE7)  /* spi0_d0.gpio0_3 */
-                       >;
-               };
-
-               i2c0_pins: pinmux_i2c0_pins {
-                       pinctrl-single,pins = <
-                               0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
-                               0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
-                       >;
-               };
-
-               i2c1_pins: pinmux_i2c1_pins {
-                       pinctrl-single,pins = <
-                               0x158 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d1.i2c1_sda */
-                               0x15c (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_cs0.i2c1_scl */
-                       >;
-               };
-
-               uart0_pins: pinmux_uart0_pins {
-                       pinctrl-single,pins = <
-                               0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
-                               0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
-                       >;
-               };
-
-               clkout2_pin: pinmux_clkout2_pin {
-                       pinctrl-single,pins = <
-                               0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
-                       >;
-               };
-
-               nandflash_pins_s0: nandflash_pins_s0 {
-                       pinctrl-single,pins = <
-                               0x0 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad0.gpmc_ad0 */
-                               0x4 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad1.gpmc_ad1 */
-                               0x8 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad2.gpmc_ad2 */
-                               0xc (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad3.gpmc_ad3 */
-                               0x10 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad4.gpmc_ad4 */
-                               0x14 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad5.gpmc_ad5 */
-                               0x18 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad6.gpmc_ad6 */
-                               0x1c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad7.gpmc_ad7 */
-                               0x70 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_wait0.gpmc_wait0 */
-                               0x74 (PIN_INPUT_PULLUP | MUX_MODE7)     /* gpmc_wpn.gpio0_30 */
-                               0x7c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn0.gpmc_csn0  */
-                               0x90 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_advn_ale.gpmc_advn_ale */
-                               0x94 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_oen_ren.gpmc_oen_ren */
-                               0x98 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_wen.gpmc_wen */
-                               0x9c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_be0n_cle.gpmc_be0n_cle */
-                       >;
-               };
-
-               ecap0_pins: backlight_pins {
-                       pinctrl-single,pins = <
-                               0x164 0x0       /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out MODE0 */
-                       >;
-               };
-
-               cpsw_default: cpsw_default {
-                       pinctrl-single,pins = <
-                               /* Slave 1 */
-                               0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
-                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxdv.rgmii1_rctl */
-                               0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
-                               0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
-                               0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
-                               0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
-                               0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
-                               0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxclk.rgmii1_rclk */
-                               0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd3.rgmii1_rd3 */
-                               0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd2.rgmii1_rd2 */
-                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd1.rgmii1_rd1 */
-                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd0.rgmii1_rd0 */
-                       >;
-               };
-
-               cpsw_sleep: cpsw_sleep {
-                       pinctrl-single,pins = <
-                               /* Slave 1 reset value */
-                               0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                       >;
-               };
-
-               davinci_mdio_default: davinci_mdio_default {
-                       pinctrl-single,pins = <
-                               /* MDIO */
-                               0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
-                               0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
-                       >;
-               };
-
-               davinci_mdio_sleep: davinci_mdio_sleep {
-                       pinctrl-single,pins = <
-                               /* MDIO reset value */
-                               0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                       >;
-               };
-       };
-
-       ocp {
-               uart0: serial@44e09000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&uart0_pins>;
-
-                       status = "okay";
-               };
-
-               i2c0: i2c@44e0b000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&i2c0_pins>;
-
-                       status = "okay";
-                       clock-frequency = <400000>;
-
-                       tps: tps@2d {
-                               reg = <0x2d>;
-                       };
-               };
-
-               musb: usb@47400000 {
-                       status = "okay";
-
-                       control@44e10000 {
-                               status = "okay";
-                       };
-
-                       usb-phy@47401300 {
-                               status = "okay";
-                       };
-
-                       usb-phy@47401b00 {
-                               status = "okay";
-                       };
-
-                       usb@47401000 {
-                               status = "okay";
-                       };
-
-                       usb@47401800 {
-                               status = "okay";
-                               dr_mode = "host";
-                       };
-
-                       dma-controller@07402000  {
-                               status = "okay";
-                       };
-               };
-
-               i2c1: i2c@4802a000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&i2c1_pins>;
-
-                       status = "okay";
-                       clock-frequency = <100000>;
-
-                       lis331dlh: lis331dlh@18 {
-                               compatible = "st,lis331dlh", "st,lis3lv02d";
-                               reg = <0x18>;
-                               Vdd-supply = <&lis3_reg>;
-                               Vdd_IO-supply = <&lis3_reg>;
-
-                               st,click-single-x;
-                               st,click-single-y;
-                               st,click-single-z;
-                               st,click-thresh-x = <10>;
-                               st,click-thresh-y = <10>;
-                               st,click-thresh-z = <10>;
-                               st,irq1-click;
-                               st,irq2-click;
-                               st,wakeup-x-lo;
-                               st,wakeup-x-hi;
-                               st,wakeup-y-lo;
-                               st,wakeup-y-hi;
-                               st,wakeup-z-lo;
-                               st,wakeup-z-hi;
-                               st,min-limit-x = <120>;
-                               st,min-limit-y = <120>;
-                               st,min-limit-z = <140>;
-                               st,max-limit-x = <550>;
-                               st,max-limit-y = <550>;
-                               st,max-limit-z = <750>;
-                       };
-
-                       tsl2550: tsl2550@39 {
-                               compatible = "taos,tsl2550";
-                               reg = <0x39>;
-                       };
-
-                       tmp275: tmp275@48 {
-                               compatible = "ti,tmp275";
-                               reg = <0x48>;
-                       };
-               };
-
-               elm: elm@48080000 {
-                       status = "okay";
-               };
-
-               epwmss0: epwmss@48300000 {
-                       status = "okay";
-
-                       ecap0: ecap@48300100 {
-                               status = "okay";
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&ecap0_pins>;
-                       };
-               };
-
-               gpmc: gpmc@50000000 {
-                       status = "okay";
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&nandflash_pins_s0>;
-                       ranges = <0 0 0x08000000 0x10000000>;   /* CS0: NAND */
-                       nand@0,0 {
-                               reg = <0 0 0>; /* CS0, offset 0 */
-                               nand-bus-width = <8>;
-                               ti,nand-ecc-opt = "bch8";
-                               gpmc,device-nand = "true";
-                               gpmc,device-width = <1>;
-                               gpmc,sync-clk-ps = <0>;
-                               gpmc,cs-on-ns = <0>;
-                               gpmc,cs-rd-off-ns = <44>;
-                               gpmc,cs-wr-off-ns = <44>;
-                               gpmc,adv-on-ns = <6>;
-                               gpmc,adv-rd-off-ns = <34>;
-                               gpmc,adv-wr-off-ns = <44>;
-                               gpmc,we-on-ns = <0>;
-                               gpmc,we-off-ns = <40>;
-                               gpmc,oe-on-ns = <0>;
-                               gpmc,oe-off-ns = <54>;
-                               gpmc,access-ns = <64>;
-                               gpmc,rd-cycle-ns = <82>;
-                               gpmc,wr-cycle-ns = <82>;
-                               gpmc,wait-on-read = "true";
-                               gpmc,wait-on-write = "true";
-                               gpmc,bus-turnaround-ns = <0>;
-                               gpmc,cycle2cycle-delay-ns = <0>;
-                               gpmc,clk-activation-ns = <0>;
-                               gpmc,wait-monitoring-ns = <0>;
-                               gpmc,wr-access-ns = <40>;
-                               gpmc,wr-data-mux-bus-ns = <0>;
-
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-                               elm_id = <&elm>;
-
-                               /* MTD partition table */
-                               partition@0 {
-                                       label = "SPL1";
-                                       reg = <0x00000000 0x000020000>;
-                               };
-
-                               partition@1 {
-                                       label = "SPL2";
-                                       reg = <0x00020000 0x00020000>;
-                               };
-
-                               partition@2 {
-                                       label = "SPL3";
-                                       reg = <0x00040000 0x00020000>;
-                               };
-
-                               partition@3 {
-                                       label = "SPL4";
-                                       reg = <0x00060000 0x00020000>;
-                               };
-
-                               partition@4 {
-                                       label = "U-boot";
-                                       reg = <0x00080000 0x001e0000>;
-                               };
-
-                               partition@5 {
-                                       label = "environment";
-                                       reg = <0x00260000 0x00020000>;
-                               };
-
-                               partition@6 {
-                                       label = "Kernel";
-                                       reg = <0x00280000 0x00500000>;
-                               };
-
-                               partition@7 {
-                                       label = "File-System";
-                                       reg = <0x00780000 0x0F880000>;
-                               };
-                       };
-               };
-       };
-
        vbat: fixedregulator@0 {
                compatible = "regulator-fixed";
                regulator-name = "vbat";
                brightness-levels = <0 51 53 56 62 75 101 152 255>;
                default-brightness-level = <8>;
        };
+
+       panel {
+               compatible = "ti,tilcdc,panel";
+               status = "okay";
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_pins_s0>;
+               panel-info {
+                       ac-bias           = <255>;
+                       ac-bias-intrpt    = <0>;
+                       dma-burst-sz      = <16>;
+                       bpp               = <32>;
+                       fdd               = <0x80>;
+                       sync-edge         = <0>;
+                       sync-ctrl         = <1>;
+                       raster-order      = <0>;
+                       fifo-th           = <0>;
+               };
+
+               display-timings {
+                       800x480p62 {
+                               clock-frequency = <30000000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hfront-porch = <39>;
+                               hback-porch = <39>;
+                               hsync-len = <47>;
+                               vback-porch = <29>;
+                               vfront-porch = <13>;
+                               vsync-len = <2>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                       };
+               };
+       };
+
+       sound {
+               compatible = "ti,da830-evm-audio";
+               ti,model = "AM335x-EVM";
+               ti,audio-codec = <&tlv320aic3106>;
+               ti,mcasp-controller = <&mcasp1>;
+               ti,codec-clock-rate = <12000000>;
+               ti,audio-routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT",
+                       "LINE1L",               "Line In",
+                       "LINE1R",               "Line In";
+       };
+};
+
+&am33xx_pinmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&matrix_keypad_s0 &volume_keys_s0 &clkout2_pin>;
+
+       matrix_keypad_s0: matrix_keypad_s0 {
+               pinctrl-single,pins = <
+                       0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a5.gpio1_21 */
+                       0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a6.gpio1_22 */
+                       0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_a9.gpio1_25 */
+                       0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_a10.gpio1_26 */
+                       0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_a11.gpio1_27 */
+               >;
+       };
+
+       volume_keys_s0: volume_keys_s0 {
+               pinctrl-single,pins = <
+                       0x150 (PIN_INPUT_PULLDOWN | MUX_MODE7)  /* spi0_sclk.gpio0_2 */
+                       0x154 (PIN_INPUT_PULLDOWN | MUX_MODE7)  /* spi0_d0.gpio0_3 */
+               >;
+       };
+
+       i2c0_pins: pinmux_i2c0_pins {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
+                       0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
+               >;
+       };
+
+       i2c1_pins: pinmux_i2c1_pins {
+               pinctrl-single,pins = <
+                       0x158 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d1.i2c1_sda */
+                       0x15c (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_cs0.i2c1_scl */
+               >;
+       };
+
+       uart0_pins: pinmux_uart0_pins {
+               pinctrl-single,pins = <
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
+                       0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
+               >;
+       };
+
+       clkout2_pin: pinmux_clkout2_pin {
+               pinctrl-single,pins = <
+                       0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* xdma_event_intr1.clkout2 */
+               >;
+       };
+
+       nandflash_pins_s0: nandflash_pins_s0 {
+               pinctrl-single,pins = <
+                       0x0 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad0.gpmc_ad0 */
+                       0x4 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad1.gpmc_ad1 */
+                       0x8 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad2.gpmc_ad2 */
+                       0xc (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad3.gpmc_ad3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad4.gpmc_ad4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad5.gpmc_ad5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad6.gpmc_ad6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad7.gpmc_ad7 */
+                       0x70 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_wait0.gpmc_wait0 */
+                       0x74 (PIN_INPUT_PULLUP | MUX_MODE7)     /* gpmc_wpn.gpio0_30 */
+                       0x7c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn0.gpmc_csn0  */
+                       0x90 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_advn_ale.gpmc_advn_ale */
+                       0x94 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_oen_ren.gpmc_oen_ren */
+                       0x98 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_wen.gpmc_wen */
+                       0x9c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_be0n_cle.gpmc_be0n_cle */
+               >;
+       };
+
+       ecap0_pins: backlight_pins {
+               pinctrl-single,pins = <
+                       0x164 0x0       /* eCAP0_in_PWM0_out.eCAP0_in_PWM0_out MODE0 */
+               >;
+       };
+
+       cpsw_default: cpsw_default {
+               pinctrl-single,pins = <
+                       /* Slave 1 */
+                       0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
+                       0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxdv.rgmii1_rctl */
+                       0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
+                       0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
+                       0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
+                       0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
+                       0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
+                       0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxclk.rgmii1_rclk */
+                       0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd3.rgmii1_rd3 */
+                       0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd2.rgmii1_rd2 */
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd1.rgmii1_rd1 */
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd0.rgmii1_rd0 */
+               >;
+       };
+
+       cpsw_sleep: cpsw_sleep {
+               pinctrl-single,pins = <
+                       /* Slave 1 reset value */
+                       0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       davinci_mdio_default: davinci_mdio_default {
+               pinctrl-single,pins = <
+                       /* MDIO */
+                       0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
+                       0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
+               >;
+       };
+
+       davinci_mdio_sleep: davinci_mdio_sleep {
+               pinctrl-single,pins = <
+                       /* MDIO reset value */
+                       0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       lcd_pins_s0: lcd_pins_s0 {
+               pinctrl-single,pins = <
+                       0x20 0x01       /* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
+                       0x24 0x01       /* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
+                       0x28 0x01       /* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
+                       0x2c 0x01       /* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
+                       0x30 0x01       /* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
+                       0x34 0x01       /* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
+                       0x38 0x01       /* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
+                       0x3c 0x01       /* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
+                       0xa0 0x00       /* lcd_data0.lcd_data0, OUTPUT | MODE0 */
+                       0xa4 0x00       /* lcd_data1.lcd_data1, OUTPUT | MODE0 */
+                       0xa8 0x00       /* lcd_data2.lcd_data2, OUTPUT | MODE0 */
+                       0xac 0x00       /* lcd_data3.lcd_data3, OUTPUT | MODE0 */
+                       0xb0 0x00       /* lcd_data4.lcd_data4, OUTPUT | MODE0 */
+                       0xb4 0x00       /* lcd_data5.lcd_data5, OUTPUT | MODE0 */
+                       0xb8 0x00       /* lcd_data6.lcd_data6, OUTPUT | MODE0 */
+                       0xbc 0x00       /* lcd_data7.lcd_data7, OUTPUT | MODE0 */
+                       0xc0 0x00       /* lcd_data8.lcd_data8, OUTPUT | MODE0 */
+                       0xc4 0x00       /* lcd_data9.lcd_data9, OUTPUT | MODE0 */
+                       0xc8 0x00       /* lcd_data10.lcd_data10, OUTPUT | MODE0 */
+                       0xcc 0x00       /* lcd_data11.lcd_data11, OUTPUT | MODE0 */
+                       0xd0 0x00       /* lcd_data12.lcd_data12, OUTPUT | MODE0 */
+                       0xd4 0x00       /* lcd_data13.lcd_data13, OUTPUT | MODE0 */
+                       0xd8 0x00       /* lcd_data14.lcd_data14, OUTPUT | MODE0 */
+                       0xdc 0x00       /* lcd_data15.lcd_data15, OUTPUT | MODE0 */
+                       0xe0 0x00       /* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+                       0xe4 0x00       /* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
+                       0xe8 0x00       /* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
+                       0xec 0x00       /* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
+               >;
+       };
+
+       am335x_evm_audio_pins: am335x_evm_audio_pins {
+               pinctrl-single,pins = <
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rx_dv.mcasp1_aclkx */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_txd3.mcasp1_fsx */
+                       0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
+               >;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tps: tps@2d {
+               reg = <0x2d>;
+       };
+};
+
+&usb {
+       status = "okay";
+
+       control@44e10000 {
+               status = "okay";
+       };
+
+       usb-phy@47401300 {
+               status = "okay";
+       };
+
+       usb-phy@47401b00 {
+               status = "okay";
+       };
+
+       usb@47401000 {
+               status = "okay";
+       };
+
+       usb@47401800 {
+               status = "okay";
+               dr_mode = "host";
+       };
+
+       dma-controller@07402000  {
+               status = "okay";
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+
+       status = "okay";
+       clock-frequency = <100000>;
+
+       lis331dlh: lis331dlh@18 {
+               compatible = "st,lis331dlh", "st,lis3lv02d";
+               reg = <0x18>;
+               Vdd-supply = <&lis3_reg>;
+               Vdd_IO-supply = <&lis3_reg>;
+
+               st,click-single-x;
+               st,click-single-y;
+               st,click-single-z;
+               st,click-thresh-x = <10>;
+               st,click-thresh-y = <10>;
+               st,click-thresh-z = <10>;
+               st,irq1-click;
+               st,irq2-click;
+               st,wakeup-x-lo;
+               st,wakeup-x-hi;
+               st,wakeup-y-lo;
+               st,wakeup-y-hi;
+               st,wakeup-z-lo;
+               st,wakeup-z-hi;
+               st,min-limit-x = <120>;
+               st,min-limit-y = <120>;
+               st,min-limit-z = <140>;
+               st,max-limit-x = <550>;
+               st,max-limit-y = <550>;
+               st,max-limit-z = <750>;
+       };
+
+       tsl2550: tsl2550@39 {
+               compatible = "taos,tsl2550";
+               reg = <0x39>;
+       };
+
+       tmp275: tmp275@48 {
+               compatible = "ti,tmp275";
+               reg = <0x48>;
+       };
+
+       tlv320aic3106: tlv320aic3106@1b {
+               compatible = "ti,tlv320aic3106";
+               reg = <0x1b>;
+               status = "okay";
+
+               /* Regulators */
+               AVDD-supply = <&vaux2_reg>;
+               IOVDD-supply = <&vaux2_reg>;
+               DRVDD-supply = <&vaux2_reg>;
+               DVDD-supply = <&vbat>;
+       };
+};
+
+&lcdc {
+       status = "okay";
+};
+
+&elm {
+       status = "okay";
+};
+
+&epwmss0 {
+       status = "okay";
+
+       ecap0: ecap@48300100 {
+               status = "okay";
+               pinctrl-names = "default";
+               pinctrl-0 = <&ecap0_pins>;
+       };
+};
+
+&gpmc {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&nandflash_pins_s0>;
+       ranges = <0 0 0x08000000 0x10000000>;   /* CS0: NAND */
+       nand@0,0 {
+               reg = <0 0 0>; /* CS0, offset 0 */
+               nand-bus-width = <8>;
+               ti,nand-ecc-opt = "bch8";
+               gpmc,device-nand = "true";
+               gpmc,device-width = <1>;
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <44>;
+               gpmc,cs-wr-off-ns = <44>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <34>;
+               gpmc,adv-wr-off-ns = <44>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <40>;
+               gpmc,oe-on-ns = <0>;
+               gpmc,oe-off-ns = <54>;
+               gpmc,access-ns = <64>;
+               gpmc,rd-cycle-ns = <82>;
+               gpmc,wr-cycle-ns = <82>;
+               gpmc,wait-on-read = "true";
+               gpmc,wait-on-write = "true";
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <0>;
+               gpmc,clk-activation-ns = <0>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,wr-access-ns = <40>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+               elm_id = <&elm>;
+
+               /* MTD partition table */
+               partition@0 {
+                       label = "SPL1";
+                       reg = <0x00000000 0x000020000>;
+               };
+
+               partition@1 {
+                       label = "SPL2";
+                       reg = <0x00020000 0x00020000>;
+               };
+
+               partition@2 {
+                       label = "SPL3";
+                       reg = <0x00040000 0x00020000>;
+               };
+
+               partition@3 {
+                       label = "SPL4";
+                       reg = <0x00060000 0x00020000>;
+               };
+
+               partition@4 {
+                       label = "U-boot";
+                       reg = <0x00080000 0x001e0000>;
+               };
+
+               partition@5 {
+                       label = "environment";
+                       reg = <0x00260000 0x00020000>;
+               };
+
+               partition@6 {
+                       label = "Kernel";
+                       reg = <0x00280000 0x00500000>;
+               };
+
+               partition@7 {
+                       label = "File-System";
+                       reg = <0x00780000 0x0F880000>;
+               };
+       };
 };
 
 #include "tps65910.dtsi"
 
+&mcasp1 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&am335x_evm_audio_pins>;
+
+               status = "okay";
+
+               op-mode = <0>;          /* MCASP_IIS_MODE */
+               tdm-slots = <2>;
+               /* 4 serializers */
+               serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+                       0 0 1 2
+               >;
+               tx-num-evt = <1>;
+               rx-num-evt = <1>;
+};
+
 &tps {
        vcc1-supply = <&vbat>;
        vcc2-supply = <&vbat>;
                };
 
                vmmc_reg: regulator@12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3300000>;
                        regulator-always-on;
                };
        };
                ti,adc-channels = <4 5 6 7>;
        };
 };
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&vmmc_reg>;
+       bus-width = <4>;
+};
+
+&sham {
+       status = "okay";
+};
+
+&aes {
+       status = "okay";
+};
index 4f339fa91c5772b7eaaa4c9a306a1d6808387765..03febf85fd2f055373259c19e01c5ad9d8148e65 100644 (file)
                reg = <0x80000000 0x10000000>; /* 256 MB */
        };
 
-       am33xx_pinmux: pinmux@44e10800 {
-               pinctrl-names = "default";
-               pinctrl-0 = <&gpio_keys_s0 &clkout2_pin>;
-
-               user_leds_s0: user_leds_s0 {
-                       pinctrl-single,pins = <
-                               0x10 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad4.gpio1_4 */
-                               0x14 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad5.gpio1_5 */
-                               0x18 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad6.gpio1_6 */
-                               0x1c (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad7.gpio1_7 */
-                       >;
-               };
-
-               gpio_keys_s0: gpio_keys_s0 {
-                       pinctrl-single,pins = <
-                               0x94 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_oen_ren.gpio2_3 */
-                               0x90 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_advn_ale.gpio2_2 */
-                               0x70 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_wait0.gpio0_30 */
-                               0x9c (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_ben0_cle.gpio2_5 */
-                       >;
-               };
-
-               i2c0_pins: pinmux_i2c0_pins {
-                       pinctrl-single,pins = <
-                               0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
-                               0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
-                       >;
-               };
-
-               uart0_pins: pinmux_uart0_pins {
-                       pinctrl-single,pins = <
-                               0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
-                               0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)         /* uart0_txd.uart0_txd */
-                       >;
-               };
-
-               clkout2_pin: pinmux_clkout2_pin {
-                       pinctrl-single,pins = <
-                               0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)         /* xdma_event_intr1.clkout2 */
-                       >;
-               };
-
-               ecap2_pins: backlight_pins {
-                       pinctrl-single,pins = <
-                               0x19c 0x4       /* mcasp0_ahclkr.ecap2_in_pwm2_out MODE4 */
-                       >;
-               };
-
-               cpsw_default: cpsw_default {
-                       pinctrl-single,pins = <
-                               /* Slave 1 */
-                               0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
-                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxdv.rgmii1_rctl */
-                               0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
-                               0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
-                               0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
-                               0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
-                               0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
-                               0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxclk.rgmii1_rclk */
-                               0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd3.rgmii1_rd3 */
-                               0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd2.rgmii1_rd2 */
-                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd1.rgmii1_rd1 */
-                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd0.rgmii1_rd0 */
-
-                               /* Slave 2 */
-                               0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a0.rgmii2_tctl */
-                               0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a1.rgmii2_rctl */
-                               0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a2.rgmii2_td3 */
-                               0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a3.rgmii2_td2 */
-                               0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a4.rgmii2_td1 */
-                               0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a5.rgmii2_td0 */
-                               0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a6.rgmii2_tclk */
-                               0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a7.rgmii2_rclk */
-                               0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a8.rgmii2_rd3 */
-                               0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a9.rgmii2_rd2 */
-                               0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a10.rgmii2_rd1 */
-                               0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a11.rgmii2_rd0 */
-                       >;
-               };
-
-               cpsw_sleep: cpsw_sleep {
-                       pinctrl-single,pins = <
-                               /* Slave 1 reset value */
-                               0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-
-                               /* Slave 2 reset value*/
-                               0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                       >;
-               };
-
-               davinci_mdio_default: davinci_mdio_default {
-                       pinctrl-single,pins = <
-                               /* MDIO */
-                               0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
-                               0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
-                       >;
-               };
-
-               davinci_mdio_sleep: davinci_mdio_sleep {
-                       pinctrl-single,pins = <
-                               /* MDIO reset value */
-                               0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                               0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
-                       >;
-               };
-       };
-
-       ocp {
-               uart0: serial@44e09000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&uart0_pins>;
-
-                       status = "okay";
-               };
-
-               i2c0: i2c@44e0b000 {
-                       pinctrl-names = "default";
-                       pinctrl-0 = <&i2c0_pins>;
-
-                       status = "okay";
-                       clock-frequency = <400000>;
-
-                       tps: tps@2d {
-                               reg = <0x2d>;
-                       };
-
-                       lis331dlh: lis331dlh@18 {
-                               compatible = "st,lis331dlh", "st,lis3lv02d";
-                               reg = <0x18>;
-                               Vdd-supply = <&lis3_reg>;
-                               Vdd_IO-supply = <&lis3_reg>;
-
-                               st,click-single-x;
-                               st,click-single-y;
-                               st,click-single-z;
-                               st,click-thresh-x = <10>;
-                               st,click-thresh-y = <10>;
-                               st,click-thresh-z = <10>;
-                               st,irq1-click;
-                               st,irq2-click;
-                               st,wakeup-x-lo;
-                               st,wakeup-x-hi;
-                               st,wakeup-y-lo;
-                               st,wakeup-y-hi;
-                               st,wakeup-z-lo;
-                               st,wakeup-z-hi;
-                               st,min-limit-x = <120>;
-                               st,min-limit-y = <120>;
-                               st,min-limit-z = <140>;
-                               st,max-limit-x = <550>;
-                               st,max-limit-y = <550>;
-                               st,max-limit-z = <750>;
-                       };
-               };
-
-               musb: usb@47400000 {
-                       status = "okay";
-
-                       control@44e10000 {
-                               status = "okay";
-                       };
-
-                       usb-phy@47401300 {
-                               status = "okay";
-                       };
-
-                       usb@47401000 {
-                               status = "okay";
-                       };
-               };
-
-               epwmss2: epwmss@48304000 {
-                       status = "okay";
-
-                       ecap2: ecap@48304100 {
-                               status = "okay";
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&ecap2_pins>;
-                       };
-               };
-       };
-
        vbat: fixedregulator@0 {
                compatible = "regulator-fixed";
                regulator-name = "vbat";
                brightness-levels = <0 58 61 66 75 90 125 170 255>;
                default-brightness-level = <8>;
        };
+
+       sound {
+               compatible = "ti,da830-evm-audio";
+               ti,model = "AM335x-EVMSK";
+               ti,audio-codec = <&tlv320aic3106>;
+               ti,mcasp-controller = <&mcasp1>;
+               ti,codec-clock-rate = <24576000>;
+               ti,audio-routing =
+                       "Headphone Jack",       "HPLOUT",
+                       "Headphone Jack",       "HPROUT";
+       };
+};
+
+&am33xx_pinmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpio_keys_s0 &clkout2_pin>;
+
+       user_leds_s0: user_leds_s0 {
+               pinctrl-single,pins = <
+                       0x10 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad4.gpio1_4 */
+                       0x14 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad5.gpio1_5 */
+                       0x18 (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad6.gpio1_6 */
+                       0x1c (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_ad7.gpio1_7 */
+               >;
+       };
+
+       gpio_keys_s0: gpio_keys_s0 {
+               pinctrl-single,pins = <
+                       0x94 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_oen_ren.gpio2_3 */
+                       0x90 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_advn_ale.gpio2_2 */
+                       0x70 (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_wait0.gpio0_30 */
+                       0x9c (PIN_INPUT_PULLDOWN | MUX_MODE7)   /* gpmc_ben0_cle.gpio2_5 */
+               >;
+       };
+
+       i2c0_pins: pinmux_i2c0_pins {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
+                       0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
+               >;
+       };
+
+       uart0_pins: pinmux_uart0_pins {
+               pinctrl-single,pins = <
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
+                       0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0)         /* uart0_txd.uart0_txd */
+               >;
+       };
+
+       clkout2_pin: pinmux_clkout2_pin {
+               pinctrl-single,pins = <
+                       0x1b4 (PIN_OUTPUT_PULLDOWN | MUX_MODE3)         /* xdma_event_intr1.clkout2 */
+               >;
+       };
+
+       ecap2_pins: backlight_pins {
+               pinctrl-single,pins = <
+                       0x19c 0x4       /* mcasp0_ahclkr.ecap2_in_pwm2_out MODE4 */
+               >;
+       };
+
+       cpsw_default: cpsw_default {
+               pinctrl-single,pins = <
+                       /* Slave 1 */
+                       0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txen.rgmii1_tctl */
+                       0x118 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxdv.rgmii1_rctl */
+                       0x11c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd3.rgmii1_td3 */
+                       0x120 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd2.rgmii1_td2 */
+                       0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd1.rgmii1_td1 */
+                       0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txd0.rgmii1_td0 */
+                       0x12c (PIN_OUTPUT_PULLDOWN | MUX_MODE2) /* mii1_txclk.rgmii1_tclk */
+                       0x130 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxclk.rgmii1_rclk */
+                       0x134 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd3.rgmii1_rd3 */
+                       0x138 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd2.rgmii1_rd2 */
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd1.rgmii1_rd1 */
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE2)  /* mii1_rxd0.rgmii1_rd0 */
+
+                       /* Slave 2 */
+                       0x40 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a0.rgmii2_tctl */
+                       0x44 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a1.rgmii2_rctl */
+                       0x48 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a2.rgmii2_td3 */
+                       0x4c (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a3.rgmii2_td2 */
+                       0x50 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a4.rgmii2_td1 */
+                       0x54 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a5.rgmii2_td0 */
+                       0x58 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_a6.rgmii2_tclk */
+                       0x5c (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a7.rgmii2_rclk */
+                       0x60 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a8.rgmii2_rd3 */
+                       0x64 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a9.rgmii2_rd2 */
+                       0x68 (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a10.rgmii2_rd1 */
+                       0x6c (PIN_INPUT_PULLDOWN | MUX_MODE2)   /* gpmc_a11.rgmii2_rd0 */
+               >;
+       };
+
+       cpsw_sleep: cpsw_sleep {
+               pinctrl-single,pins = <
+                       /* Slave 1 reset value */
+                       0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x11c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x120 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x12c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x130 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x134 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x138 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+
+                       /* Slave 2 reset value*/
+                       0x40 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x44 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x48 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x4c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x50 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x54 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x58 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x5c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x60 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x64 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x68 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x6c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       davinci_mdio_default: davinci_mdio_default {
+               pinctrl-single,pins = <
+                       /* MDIO */
+                       0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
+                       0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
+               >;
+       };
+
+       davinci_mdio_sleep: davinci_mdio_sleep {
+               pinctrl-single,pins = <
+                       /* MDIO reset value */
+                       0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+               >;
+       };
+
+       mcasp1_pins: mcasp1_pins {
+               pinctrl-single,pins = <
+                       0x10c (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_crs.mcasp1_aclkx */
+                       0x110 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* mii1_rxerr.mcasp1_fsx */
+                       0x108 (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* mii1_col.mcasp1_axr2 */
+                       0x144 (PIN_INPUT_PULLDOWN | MUX_MODE4) /* rmii1_ref_clk.mcasp1_axr3 */
+               >;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tps: tps@2d {
+               reg = <0x2d>;
+       };
+
+       lis331dlh: lis331dlh@18 {
+               compatible = "st,lis331dlh", "st,lis3lv02d";
+               reg = <0x18>;
+               Vdd-supply = <&lis3_reg>;
+               Vdd_IO-supply = <&lis3_reg>;
+
+               st,click-single-x;
+               st,click-single-y;
+               st,click-single-z;
+               st,click-thresh-x = <10>;
+               st,click-thresh-y = <10>;
+               st,click-thresh-z = <10>;
+               st,irq1-click;
+               st,irq2-click;
+               st,wakeup-x-lo;
+               st,wakeup-x-hi;
+               st,wakeup-y-lo;
+               st,wakeup-y-hi;
+               st,wakeup-z-lo;
+               st,wakeup-z-hi;
+               st,min-limit-x = <120>;
+               st,min-limit-y = <120>;
+               st,min-limit-z = <140>;
+               st,max-limit-x = <550>;
+               st,max-limit-y = <550>;
+               st,max-limit-z = <750>;
+       };
+
+       tlv320aic3106: tlv320aic3106@1b {
+               compatible = "ti,tlv320aic3106";
+               reg = <0x1b>;
+               status = "okay";
+
+               /* Regulators */
+               AVDD-supply = <&vaux2_reg>;
+               IOVDD-supply = <&vaux2_reg>;
+               DRVDD-supply = <&vaux2_reg>;
+               DVDD-supply = <&vbat>;
+       };
+};
+
+&usb {
+       status = "okay";
+
+       control@44e10000 {
+               status = "okay";
+       };
+
+       usb-phy@47401300 {
+               status = "okay";
+       };
+
+       usb@47401000 {
+               status = "okay";
+       };
+};
+
+&epwmss2 {
+       status = "okay";
+
+       ecap2: ecap@48304100 {
+               status = "okay";
+               pinctrl-names = "default";
+               pinctrl-0 = <&ecap2_pins>;
+       };
 };
 
 #include "tps65910.dtsi"
                };
 
                vmmc_reg: regulator@12 {
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <3300000>;
                        regulator-always-on;
                };
        };
        phy_id = <&davinci_mdio>, <1>;
        phy-mode = "rgmii-txid";
 };
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&vmmc_reg>;
+       bus-width = <4>;
+};
+
+&sham {
+       status = "okay";
+};
+
+&aes {
+       status = "okay";
+};
+
+&gpio0 {
+       ti,no-reset-on-init;
+};
+
+&mcasp1 {
+               pinctrl-names = "default";
+               pinctrl-0 = <&mcasp1_pins>;
+
+               status = "okay";
+
+               op-mode = <0>;          /* MCASP_IIS_MODE */
+               tdm-slots = <2>;
+               /* 4 serializers */
+               serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
+                       0 0 1 2
+               >;
+               tx-num-evt = <1>;
+               rx-num-evt = <1>;
+};
diff --git a/arch/arm/boot/dts/am335x-igep0033.dtsi b/arch/arm/boot/dts/am335x-igep0033.dtsi
new file mode 100644 (file)
index 0000000..6196244
--- /dev/null
@@ -0,0 +1,278 @@
+/*
+ * am335x-igep0033.dtsi - Device Tree file for IGEP COM AQUILA AM335x
+ *
+ * Copyright (C) 2013 ISEE 2007 SL - http://www.isee.biz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "am33xx.dtsi"
+
+/ {
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vdd1_reg>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>; /* 256 MB */
+       };
+
+       leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&leds_pins>;
+
+               compatible = "gpio-leds";
+
+               led@0 {
+                       label = "com:green:user";
+                       gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       vbat: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vbat";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-boot-on;
+       };
+
+       vmmc: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vmmc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&am33xx_pinmux {
+       i2c0_pins: pinmux_i2c0_pins {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
+                       0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
+               >;
+       };
+
+       nandflash_pins: pinmux_nandflash_pins {
+               pinctrl-single,pins = <
+                       0x0 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad0.gpmc_ad0 */
+                       0x4 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad1.gpmc_ad1 */
+                       0x8 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad2.gpmc_ad2 */
+                       0xc (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad3.gpmc_ad3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad4.gpmc_ad4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad5.gpmc_ad5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad6.gpmc_ad6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad7.gpmc_ad7 */
+                       0x70 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_wait0.gpmc_wait0 */
+                       0x74 (PIN_INPUT_PULLUP | MUX_MODE7)     /* gpmc_wpn.gpio0_30 */
+                       0x7c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn0.gpmc_csn0 */
+                       0x90 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_advn_ale.gpmc_advn_ale */
+                       0x94 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_oen_ren.gpmc_oen_ren */
+                       0x98 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_wen.gpmc_wen */
+                       0x9c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_be0n_cle.gpmc_be0n_cle */
+               >;
+       };
+
+       uart0_pins: pinmux_uart0_pins {
+               pinctrl-single,pins = <
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
+                       0x174 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart0_txd.uart0_txd */
+               >;
+       };
+
+       leds_pins: pinmux_leds_pins {
+               pinctrl-single,pins = <
+                       0x5c (PIN_OUTPUT_PULLDOWN | MUX_MODE7)  /* gpmc_a7.gpio1_23 */
+               >;
+       };
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <0>;
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+};
+
+&elm {
+       status = "okay";
+};
+
+&gpmc {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&nandflash_pins>;
+
+       ranges = <0 0 0x08000000 0x10000000>;   /* CS0: NAND */
+
+       nand@0,0 {
+               reg = <0 0 0>; /* CS0, offset 0 */
+               nand-bus-width = <8>;
+               ti,nand-ecc-opt = "bch8";
+               gpmc,device-nand = "true";
+               gpmc,device-width = <1>;
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <44>;
+               gpmc,cs-wr-off-ns = <44>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <34>;
+               gpmc,adv-wr-off-ns = <44>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <40>;
+               gpmc,oe-on-ns = <0>;
+               gpmc,oe-off-ns = <54>;
+               gpmc,access-ns = <64>;
+               gpmc,rd-cycle-ns = <82>;
+               gpmc,wr-cycle-ns = <82>;
+               gpmc,wait-on-read = "true";
+               gpmc,wait-on-write = "true";
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <0>;
+               gpmc,clk-activation-ns = <0>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,wr-access-ns = <40>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+               elm_id = <&elm>;
+
+               /* MTD partition table */
+               partition@0 {
+                       label = "SPL";
+                       reg = <0x00000000 0x000080000>;
+               };
+
+               partition@1 {
+                       label = "U-boot";
+                       reg = <0x00080000 0x001e0000>;
+               };
+
+               partition@2 {
+                       label = "U-Boot Env";
+                       reg = <0x00260000 0x00020000>;
+               };
+
+               partition@3 {
+                       label = "Kernel";
+                       reg = <0x00280000 0x00500000>;
+               };
+
+               partition@4 {
+                       label = "File System";
+                       reg = <0x00780000 0x007880000>;
+               };
+       };
+};
+
+&i2c0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       clock-frequency = <400000>;
+
+       tps: tps@2d {
+               reg = <0x2d>;
+       };
+};
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&vmmc>;
+       bus-width = <4>;
+};
+
+&uart0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+};
+
+#include "tps65910.dtsi"
+
+&tps {
+       vcc1-supply = <&vbat>;
+       vcc2-supply = <&vbat>;
+       vcc3-supply = <&vbat>;
+       vcc4-supply = <&vbat>;
+       vcc5-supply = <&vbat>;
+       vcc6-supply = <&vbat>;
+       vcc7-supply = <&vbat>;
+       vccio-supply = <&vbat>;
+
+       regulators {
+               vrtc_reg: regulator@0 {
+                       regulator-always-on;
+               };
+
+               vio_reg: regulator@1 {
+                       regulator-always-on;
+               };
+
+               vdd1_reg: regulator@2 {
+                       /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
+                       regulator-name = "vdd_mpu";
+                       regulator-min-microvolt = <912500>;
+                       regulator-max-microvolt = <1312500>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               vdd2_reg: regulator@3 {
+                       /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
+                       regulator-name = "vdd_core";
+                       regulator-min-microvolt = <912500>;
+                       regulator-max-microvolt = <1150000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               vdd3_reg: regulator@4 {
+                       regulator-always-on;
+               };
+
+               vdig1_reg: regulator@5 {
+                       regulator-always-on;
+               };
+
+               vdig2_reg: regulator@6 {
+                       regulator-always-on;
+               };
+
+               vpll_reg: regulator@7 {
+                       regulator-always-on;
+               };
+
+               vdac_reg: regulator@8 {
+                       regulator-always-on;
+               };
+
+               vaux1_reg: regulator@9 {
+                       regulator-always-on;
+               };
+
+               vaux2_reg: regulator@10 {
+                       regulator-always-on;
+               };
+
+               vaux33_reg: regulator@11 {
+                       regulator-always-on;
+               };
+
+               vmmc_reg: regulator@12 {
+                       regulator-always-on;
+               };
+       };
+};
+
diff --git a/arch/arm/boot/dts/am335x-nano.dts b/arch/arm/boot/dts/am335x-nano.dts
new file mode 100644 (file)
index 0000000..9907b49
--- /dev/null
@@ -0,0 +1,431 @@
+/*
+ * Copyright (C) 2013 Newflow Ltd - http://www.newflow.co.uk/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+
+/ {
+       model = "Newflow AM335x NanoBone";
+       compatible = "ti,am33xx";
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&dcdc2_reg>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>; /* 256 MB */
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               led@0 {
+                       label = "nanobone:green:usr1";
+                       gpios = <&gpio1 5 0>;
+                       default-state = "off";
+               };
+       };
+};
+
+&am33xx_pinmux {
+       pinctrl-names = "default";
+       pinctrl-0 = <&misc_pins>;
+
+       misc_pins: misc_pins {
+               pinctrl-single,pins = <
+                       0x15c (PIN_OUTPUT | MUX_MODE7)  /* spi0_cs0.gpio0_5 */
+               >;
+       };
+
+       gpmc_pins: gpmc_pins {
+               pinctrl-single,pins = <
+                       0x0 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad0.gpmc_ad0 */
+                       0x4 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad1.gpmc_ad1 */
+                       0x8 (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad2.gpmc_ad2 */
+                       0xc (PIN_INPUT_PULLUP | MUX_MODE0)      /* gpmc_ad3.gpmc_ad3 */
+                       0x10 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad4.gpmc_ad4 */
+                       0x14 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad5.gpmc_ad5 */
+                       0x18 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad6.gpmc_ad6 */
+                       0x1c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad7.gpmc_ad7 */
+                       0x20 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad8.gpmc_ad8 */
+                       0x24 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad9.gpmc_ad9 */
+                       0x28 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad10.gpmc_ad10 */
+                       0x2c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad11.gpmc_ad11 */
+                       0x30 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad12.gpmc_ad12 */
+                       0x34 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad13.gpmc_ad13 */
+                       0x38 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad14.gpmc_ad14 */
+                       0x3c (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_ad15.gpmc_ad15 */
+
+                       0x70 (PIN_INPUT_PULLUP | MUX_MODE0)     /* gpmc_wait0.gpmc_wait0 */
+                       0x7c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn0.gpmc_csn0 */
+                       0x80 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn1.gpmc_csn1 */
+                       0x84 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn2.gpmc_csn2 */
+                       0x88 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_csn3.gpmc_csn3 */
+
+                       0x90 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_advn_ale.gpmc_advn_ale */
+                       0x94 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_oen_ren.gpmc_oen_ren */
+                       0x98 (PIN_OUTPUT | MUX_MODE0)           /* gpmc_wen.gpmc_wen */
+                       0x9c (PIN_OUTPUT | MUX_MODE0)           /* gpmc_ben0_cle.gpmc_ben0_cle */
+
+                       0xa4 (PIN_OUTPUT | MUX_MODE1)           /* lcd_data1.gpmc_a1 */
+                       0xa8 (PIN_OUTPUT | MUX_MODE1)           /* lcd_data2.gpmc_a2 */
+                       0xac (PIN_OUTPUT | MUX_MODE1)           /* lcd_data3.gpmc_a3 */
+                       0xb0 (PIN_OUTPUT | MUX_MODE1)           /* lcd_data4.gpmc_a4 */
+                       0xb4 (PIN_OUTPUT | MUX_MODE1)           /* lcd_data5.gpmc_a5 */
+                       0xb8 (PIN_OUTPUT | MUX_MODE1)           /* lcd_data6.gpmc_a6 */
+                       0xbc (PIN_OUTPUT | MUX_MODE1)           /* lcd_data7.gpmc_a7 */
+
+                       0xe0 (PIN_OUTPUT | MUX_MODE1)           /* lcd_vsync.gpmc_a8 */
+                       0xe4 (PIN_OUTPUT | MUX_MODE1)           /* lcd_hsync.gpmc_a9 */
+                       0xe8 (PIN_OUTPUT | MUX_MODE1)           /* lcd_pclk.gpmc_a10 */
+               >;
+       };
+
+       i2c0_pins: i2c0_pins {
+               pinctrl-single,pins = <
+                       0x188 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* i2c0_sda.i2c0_sda */
+                       0x18c (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* i2c0_scl.i2c0_scl */
+               >;
+       };
+
+       uart0_pins: uart0_pins {
+               pinctrl-single,pins = <
+                       0x170 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart0_rxd.uart0_rxd */
+                       0x174 (PIN_OUTPUT | MUX_MODE0)          /* uart0_txd.uart0_txd */
+               >;
+       };
+
+       uart1_pins: uart1_pins {
+               pinctrl-single,pins = <
+                       0x178 (PIN_OUTPUT | MUX_MODE7)          /* uart1_ctsn.uart1_ctsn */
+                       0x17c (PIN_OUTPUT | MUX_MODE7)          /* uart1_rtsn.uart1_rtsn */
+                       0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
+                       0x184 (PIN_OUTPUT | MUX_MODE0)          /* uart1_txd.uart1_txd */
+               >;
+       };
+
+       uart2_pins: uart2_pins {
+               pinctrl-single,pins = <
+                       0xc0 (PIN_INPUT_PULLUP | MUX_MODE7)     /* lcd_data8.gpio2[14] */
+                       0xc4 (PIN_OUTPUT | MUX_MODE7)           /* lcd_data9.gpio2[15] */
+                       0x150 (PIN_INPUT | MUX_MODE1)           /* spi0_sclk.uart2_rxd */
+                       0x154 (PIN_OUTPUT | MUX_MODE1)          /* spi0_d0.uart2_txd */
+               >;
+       };
+
+       uart3_pins: uart3_pins {
+               pinctrl-single,pins = <
+                       0xc8 (PIN_INPUT_PULLUP | MUX_MODE6)     /* lcd_data10.uart3_ctsn */
+                       0xcc (PIN_OUTPUT | MUX_MODE6)           /* lcd_data11.uart3_rtsn */
+                       0x160 (PIN_INPUT | MUX_MODE1)           /* spi0_cs1.uart3_rxd */
+                       0x164 (PIN_OUTPUT | MUX_MODE1)          /* ecap0_in_pwm0_out.uart3_txd */
+               >;
+       };
+
+       uart4_pins: uart4_pins {
+               pinctrl-single,pins = <
+                       0xd0 (PIN_INPUT_PULLUP | MUX_MODE6)     /* lcd_data12.uart4_ctsn */
+                       0xd4 (PIN_OUTPUT | MUX_MODE6)           /* lcd_data13.uart4_rtsn */
+                       0x168 (PIN_INPUT | MUX_MODE1)           /* uart0_ctsn.uart4_rxd */
+                       0x16c (PIN_OUTPUT | MUX_MODE1)          /* uart0_rtsn.uart4_txd */
+               >;
+       };
+
+       uart5_pins: uart5_pins {
+               pinctrl-single,pins = <
+                       0xd8 (PIN_INPUT | MUX_MODE4)            /* lcd_data14.uart5_rxd */
+                       0x144 (PIN_OUTPUT | MUX_MODE3)          /* rmiii1_refclk.uart5_txd */
+               >;
+       };
+
+       mmc1_pins: mmc1_pins {
+               pinctrl-single,pins = <
+                       0xf0 (PIN_INPUT_PULLUP | MUX_MODE0)     /* mmc0_dat0.mmc0_dat0 */
+                       0xf4 (PIN_INPUT_PULLUP | MUX_MODE0)     /* mmc0_dat1.mmc0_dat1 */
+                       0xf8 (PIN_INPUT_PULLUP | MUX_MODE0)     /* mmc0_dat2.mmc0_dat2 */
+                       0xfc (PIN_INPUT_PULLUP | MUX_MODE0)     /* mmc0_dat3.mmc0_dat3 */
+                       0x100 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_clk.mmc0_clk */
+                       0x104 (PIN_INPUT_PULLUP | MUX_MODE0)    /* mmc0_cmd.mmc0_cmd */
+                       0x1e8 (PIN_INPUT_PULLUP | MUX_MODE7)    /* emu1.gpio3[8] */
+                       0x1a0 (PIN_INPUT_PULLUP | MUX_MODE7)    /* mcasp0_aclkr.gpio3[18] */
+               >;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+       status = "okay";
+       rts-gpio = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+       rs485-rts-active-high;
+       rs485-rx-during-tx;
+       rs485-rts-delay = <1 1>;
+       linux,rs485-enabled-at-boot-time;
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+       status = "okay";
+       rts-gpio = <&gpio2 15 GPIO_ACTIVE_HIGH>;
+       rs485-rts-active-high;
+       rs485-rts-delay = <1 1>;
+       linux,rs485-enabled-at-boot-time;
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins>;
+       status = "okay";
+};
+
+&uart5 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart5_pins>;
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+       pinctrl-names = "default";
+       clock-frequency = <400000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       gpio@20 {
+               compatible = "mcp,mcp23017";
+               reg = <0x20>;
+       };
+
+       tps: tps@24 {
+               reg = <0x24>;
+       };
+
+       eeprom@53 {
+               compatible = "mcp,24c02";
+               reg = <0x53>;
+               pagesize = <8>;
+       };
+
+       rtc@68 {
+               compatible = "dallas,ds1307";
+               reg = <0x68>;
+       };
+};
+
+&elm {
+       status = "okay";
+};
+
+&gpmc {
+       compatible = "ti,am3352-gpmc";
+       ti,hwmods = "gpmc";
+       status = "okay";
+       gpmc,num-waitpins = <2>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&gpmc_pins>;
+
+       #address-cells = <2>;
+       #size-cells = <1>;
+       ranges = <0 0 0x08000000 0x08000000>;   /* CS0: NOR 128M */
+
+       nor@0,0 {
+               reg = <0 0x00000000 0x08000000>;
+               compatible = "cfi-flash";
+               linux,mtd-name = "spansion,s29gl010p11t";
+               bank-width = <2>;
+
+               gpmc,mux-add-data = <2>;
+
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <160>;
+               gpmc,cs-wr-off-ns = <160>;
+               gpmc,adv-on-ns = <10>;
+               gpmc,adv-rd-off-ns = <30>;
+               gpmc,adv-wr-off-ns = <30>;
+               gpmc,oe-on-ns = <40>;
+               gpmc,oe-off-ns = <160>;
+               gpmc,we-on-ns = <40>;
+               gpmc,we-off-ns = <160>;
+               gpmc,rd-cycle-ns = <160>;
+               gpmc,wr-cycle-ns = <160>;
+               gpmc,access-ns = <150>;
+               gpmc,page-burst-access-ns = <10>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-delay-ns = <20>;
+               gpmc,wr-data-mux-bus-ns = <70>;
+               gpmc,wr-access-ns = <80>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               /*
+               MTD partition table
+               ===================
+               +------------+-->0x00000000-> U-Boot start
+               |            |
+               |            |-->0x000BFFFF-> U-Boot end
+               |            |-->0x000C0000-> ENV1 start
+               |            |
+               |            |-->0x000DFFFF-> ENV1 end
+               |            |-->0x000E0000-> ENV2 start
+               |            |
+               |            |-->0x000FFFFF-> ENV2 end
+               |            |-->0x00100000-> Kernel start
+               |            |
+               |            |-->0x004FFFFF-> Kernel end
+               |            |-->0x00500000-> File system start
+               |            |
+               |            |-->0x014FFFFF-> File system end
+               |            |-->0x01500000-> User data start
+               |            |
+               |            |-->0x03FFFFFF-> User data end
+               |            |-->0x04000000-> Data storage start
+               |            |
+               +------------+-->0x08000000-> NOR end (Free end)
+               */
+               partition@0 {
+                       label = "boot";
+                       reg = <0x00000000 0x000c0000>; /* 768KB */
+               };
+
+               partition@1 {
+                       label = "env1";
+                       reg = <0x000c0000 0x00020000>; /* 128KB */
+               };
+
+               partition@2 {
+                       label = "env2";
+                       reg = <0x000e0000 0x00020000>; /* 128KB */
+               };
+
+               partition@3 {
+                       label = "kernel";
+                       reg = <0x00100000 0x00400000>; /* 4MB */
+               };
+
+               partition@4 {
+                       label = "rootfs";
+                       reg = <0x00500000 0x01000000>; /* 16MB */
+               };
+
+               partition@5 {
+                       label = "user";
+                       reg = <0x01500000 0x02b00000>; /* 43MB */
+               };
+
+               partition@6 {
+                       label = "data";
+                       reg = <0x04000000 0x04000000>; /* 64MB */
+               };
+       };
+};
+
+&mac {
+       dual_emac = <1>;
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <0>;
+       dual_emac_res_vlan = <1>;
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+       dual_emac_res_vlan = <2>;
+};
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&ldo4_reg>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       bus-width = <4>;
+       cd-gpios = <&gpio3 8 0>;
+       wp-gpios = <&gpio3 18 0>;
+};
+
+#include "tps65217.dtsi"
+
+&tps {
+       regulators {
+               dcdc1_reg: regulator@0 {
+                       /* +1.5V voltage with Â±4% tolerance */
+                       regulator-min-microvolt = <1450000>;
+                       regulator-max-microvolt = <1550000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               dcdc2_reg: regulator@1 {
+                       /* VDD_MPU voltage limits 0.95V - 1.1V with Â±4% tolerance */
+                       regulator-name = "vdd_mpu";
+                       regulator-min-microvolt = <915000>;
+                       regulator-max-microvolt = <1140000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               dcdc3_reg: regulator@2 {
+                       /* VDD_CORE voltage limits 0.95V - 1.1V with Â±4% tolerance */
+                       regulator-name = "vdd_core";
+                       regulator-min-microvolt = <915000>;
+                       regulator-max-microvolt = <1140000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               ldo1_reg: regulator@3 {
+                       /* +1.8V voltage with Â±4% tolerance */
+                       regulator-min-microvolt = <1750000>;
+                       regulator-max-microvolt = <1870000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               ldo2_reg: regulator@4 {
+                       /* +3.3V voltage with Â±4% tolerance */
+                       regulator-min-microvolt = <3175000>;
+                       regulator-max-microvolt = <3430000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               ldo3_reg: regulator@5 {
+                       /* +1.8V voltage with Â±4% tolerance */
+                       regulator-min-microvolt = <1750000>;
+                       regulator-max-microvolt = <1870000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               ldo4_reg: regulator@6 {
+                       /* +3.3V voltage with Â±4% tolerance */
+                       regulator-min-microvolt = <3175000>;
+                       regulator-max-microvolt = <3430000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+       };
+};
index f9c5da9c7fe1ce7d56557fb4582a0d9a53bbcfde..0ca13ad92fa6906222861d83b0ce901667da8245 100644 (file)
@@ -18,6 +18,9 @@
        interrupt-parent = <&intc>;
 
        aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
                serial0 = &uart0;
                serial1 = &uart1;
                serial2 = &uart2;
@@ -30,6 +33,8 @@
                usb1 = &usb1;
                phy0 = &usb0_phy;
                phy1 = &usb1_phy;
+               ethernet0 = &cpsw_emac0;
+               ethernet1 = &cpsw_emac1;
        };
 
        cpus {
                };
        };
 
+       pmu {
+               compatible = "arm,cortex-a8-pmu";
+               interrupts = <3>;
+       };
+
        /*
         * The soc node represents the soc top level view. It is uses for IPs
         * that are not memory mapped in the MPU view or for the MPU itself.
                        reg = <0x48200000 0x1000>;
                };
 
+               edma: edma@49000000 {
+                       compatible = "ti,edma3";
+                       ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
+                       reg =   <0x49000000 0x10000>,
+                               <0x44e10f90 0x10>;
+                       interrupts = <12 13 14>;
+                       #dma-cells = <1>;
+                       dma-channels = <64>;
+                       ti,edma-regions = <4>;
+                       ti,edma-slots = <256>;
+               };
+
                gpio0: gpio@44e07000 {
                        compatible = "ti,omap4-gpio";
                        ti,hwmods = "gpio1";
                        gpio-controller;
                        #gpio-cells = <2>;
                        interrupt-controller;
-                       #interrupt-cells = <1>;
+                       #interrupt-cells = <2>;
                        reg = <0x44e07000 0x1000>;
                        interrupts = <96>;
                };
                        gpio-controller;
                        #gpio-cells = <2>;
                        interrupt-controller;
-                       #interrupt-cells = <1>;
+                       #interrupt-cells = <2>;
                        reg = <0x4804c000 0x1000>;
                        interrupts = <98>;
                };
                        gpio-controller;
                        #gpio-cells = <2>;
                        interrupt-controller;
-                       #interrupt-cells = <1>;
+                       #interrupt-cells = <2>;
                        reg = <0x481ac000 0x1000>;
                        interrupts = <32>;
                };
                        gpio-controller;
                        #gpio-cells = <2>;
                        interrupt-controller;
-                       #interrupt-cells = <1>;
+                       #interrupt-cells = <2>;
                        reg = <0x481ae000 0x1000>;
                        interrupts = <62>;
                };
                        status = "disabled";
                };
 
+               mmc1: mmc@48060000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc1";
+                       ti,dual-volt;
+                       ti,needs-special-reset;
+                       ti,needs-special-hs-handling;
+                       dmas = <&edma 24
+                               &edma 25>;
+                       dma-names = "tx", "rx";
+                       interrupts = <64>;
+                       interrupt-parent = <&intc>;
+                       reg = <0x48060000 0x1000>;
+                       status = "disabled";
+               };
+
+               mmc2: mmc@481d8000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc2";
+                       ti,needs-special-reset;
+                       dmas = <&edma 2
+                               &edma 3>;
+                       dma-names = "tx", "rx";
+                       interrupts = <28>;
+                       interrupt-parent = <&intc>;
+                       reg = <0x481d8000 0x1000>;
+                       status = "disabled";
+               };
+
+               mmc3: mmc@47810000 {
+                       compatible = "ti,omap4-hsmmc";
+                       ti,hwmods = "mmc3";
+                       ti,needs-special-reset;
+                       interrupts = <29>;
+                       interrupt-parent = <&intc>;
+                       reg = <0x47810000 0x1000>;
+                       status = "disabled";
+               };
+
                wdt2: wdt@44e35000 {
                        compatible = "ti,omap3-wdt";
                        ti,hwmods = "wd_timer2";
                        interrupts = <65>;
                        ti,spi-num-cs = <2>;
                        ti,hwmods = "spi0";
+                       dmas = <&edma 16
+                               &edma 17
+                               &edma 18
+                               &edma 19>;
+                       dma-names = "tx0", "rx0", "tx1", "rx1";
                        status = "disabled";
                };
 
                        interrupts = <125>;
                        ti,spi-num-cs = <2>;
                        ti,hwmods = "spi1";
+                       dmas = <&edma 42
+                               &edma 43
+                               &edma 44
+                               &edma 45>;
+                       dma-names = "tx0", "rx0", "tx1", "rx1";
                        status = "disabled";
                };
 
                        ti,hwmods = "usb_otg_hs";
                        status = "disabled";
 
-                       ctrl_mod: control@44e10000 {
+                       usb_ctrl_mod: control@44e10000 {
                                compatible = "ti,am335x-usb-ctrl-module";
                                reg = <0x44e10620 0x10
                                        0x44e10648 0x4>;
                                reg = <0x47401300 0x100>;
                                reg-names = "phy";
                                status = "disabled";
-                               ti,ctrl_mod = <&ctrl_mod>;
+                               ti,ctrl_mod = <&usb_ctrl_mod>;
                        };
 
                        usb0: usb@47401000 {
                                reg = <0x47401b00 0x100>;
                                reg-names = "phy";
                                status = "disabled";
-                               ti,ctrl_mod = <&ctrl_mod>;
+                               ti,ctrl_mod = <&usb_ctrl_mod>;
                        };
 
                        usb1: usb@47401800 {
                        reg = <0x44d00000 0x4000        /* M3 UMEM */
                               0x44d80000 0x2000>;      /* M3 DMEM */
                        ti,hwmods = "wkup_m3";
+                       ti,no-reset-on-init;
                };
 
                elm: elm@48080000 {
                        status = "disabled";
                };
 
+               lcdc: lcdc@4830e000 {
+                       compatible = "ti,am33xx-tilcdc";
+                       reg = <0x4830e000 0x1000>;
+                       interrupt-parent = <&intc>;
+                       interrupts = <36>;
+                       ti,hwmods = "lcdc";
+                       status = "disabled";
+               };
+
                tscadc: tscadc@44e0d000 {
                        compatible = "ti,am3359-tscadc";
                        reg = <0x44e0d000 0x1000>;
                gpmc: gpmc@50000000 {
                        compatible = "ti,am3352-gpmc";
                        ti,hwmods = "gpmc";
+                       ti,no-idle-on-init;
                        reg = <0x50000000 0x2000>;
                        interrupts = <100>;
                        gpmc,num-cs = <7>;
                        #size-cells = <1>;
                        status = "disabled";
                };
+
+               sham: sham@53100000 {
+                       compatible = "ti,omap4-sham";
+                       ti,hwmods = "sham";
+                       reg = <0x53100000 0x200>;
+                       interrupts = <109>;
+                       dmas = <&edma 36>;
+                       dma-names = "rx";
+               };
+
+               aes: aes@53500000 {
+                       compatible = "ti,omap4-aes";
+                       ti,hwmods = "aes";
+                       reg = <0x53500000 0xa0>;
+                       interrupts = <103>;
+                       dmas = <&edma 6>,
+                              <&edma 5>;
+                       dma-names = "tx", "rx";
+               };
+
+               mcasp0: mcasp@48038000 {
+                       compatible = "ti,am33xx-mcasp-audio";
+                       ti,hwmods = "mcasp0";
+                       reg = <0x48038000 0x2000>,
+                             <0x46000000 0x400000>;
+                       reg-names = "mpu", "dat";
+                       interrupts = <80>, <81>;
+                       interrupts-names = "tx", "rx";
+                       status = "disabled";
+                       dmas = <&edma 8>,
+                               <&edma 9>;
+                       dma-names = "tx", "rx";
+               };
+
+               mcasp1: mcasp@4803C000 {
+                       compatible = "ti,am33xx-mcasp-audio";
+                       ti,hwmods = "mcasp1";
+                       reg = <0x4803C000 0x2000>,
+                             <0x46400000 0x400000>;
+                       reg-names = "mpu", "dat";
+                       interrupts = <82>, <83>;
+                       interrupts-names = "tx", "rx";
+                       status = "disabled";
+                       dmas = <&edma 10>,
+                               <&edma 11>;
+                       dma-names = "tx", "rx";
+               };
        };
 };
index ddc1df77ac5261b5f5a6f4bcc84f69eb2c30dc0c..974d103ab3b1e673fe255e28e5c13d8544ad2565 100644 (file)
 
 
        aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
                serial0 = &uart0;
+               ethernet0 = &cpsw_emac0;
+               ethernet1 = &cpsw_emac1;
        };
 
        cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
                cpu@0 {
                        compatible = "arm,cortex-a9";
+                       device_type = "cpu";
+                       reg = <0>;
                };
        };
 
                      <0x48240100 0x0100>;
        };
 
+       l2-cache-controller@48242000 {
+               compatible = "arm,pl310-cache";
+               reg = <0x48242000 0x1000>;
+               cache-unified;
+               cache-level = <2>;
+       };
+
+       am43xx_pinmux: pinmux@44e10800 {
+               compatible = "pinctrl-single";
+               reg = <0x44e10800 0x31c>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               pinctrl-single,register-width = <32>;
+               pinctrl-single,function-mask = <0xffffffff>;
+       };
+
        ocp {
                compatible = "simple-bus";
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
+               ti,hwmods = "l3_main";
+
+               edma: edma@49000000 {
+                       compatible = "ti,edma3";
+                       ti,hwmods = "tpcc", "tptc0", "tptc1", "tptc2";
+                       reg =   <0x49000000 0x10000>,
+                               <0x44e10f90 0x10>;
+                       interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                                       <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       dma-channels = <64>;
+                       ti,edma-regions = <4>;
+                       ti,edma-slots = <256>;
+               };
 
                uart0: serial@44e09000 {
                        compatible = "ti,am4372-uart","ti,omap2-uart";
                        reg = <0x44e09000 0x2000>;
                        interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart1";
+               };
+
+               uart1: serial@48022000 {
+                       compatible = "ti,am4372-uart","ti,omap2-uart";
+                       reg = <0x48022000 0x2000>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart2";
+                       status = "disabled";
+               };
+
+               uart2: serial@48024000 {
+                       compatible = "ti,am4372-uart","ti,omap2-uart";
+                       reg = <0x48024000 0x2000>;
+                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart3";
+                       status = "disabled";
+               };
+
+               uart3: serial@481a6000 {
+                       compatible = "ti,am4372-uart","ti,omap2-uart";
+                       reg = <0x481a6000 0x2000>;
+                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart4";
+                       status = "disabled";
+               };
+
+               uart4: serial@481a8000 {
+                       compatible = "ti,am4372-uart","ti,omap2-uart";
+                       reg = <0x481a8000 0x2000>;
+                       interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart5";
+                       status = "disabled";
+               };
+
+               uart5: serial@481aa000 {
+                       compatible = "ti,am4372-uart","ti,omap2-uart";
+                       reg = <0x481aa000 0x2000>;
+                       interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart6";
+                       status = "disabled";
+               };
+
+               mailbox: mailbox@480C8000 {
+                       compatible = "ti,omap4-mailbox";
+                       reg = <0x480C8000 0x200>;
+                       interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "mailbox";
+                       ti,mbox-num-users = <4>;
+                       ti,mbox-num-fifos = <8>;
+                       ti,mbox-names = "wkup_m3";
+                       ti,mbox-data = <0 0 0 0>;
+                       status = "disabled";
                };
 
                timer1: timer@44e31000 {
                        reg = <0x44e31000 0x400>;
                        interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
                        ti,timer-alwon;
+                       ti,hwmods = "timer1";
                };
 
                timer2: timer@48040000  {
                        compatible = "ti,am4372-timer","ti,am335x-timer";
                        reg = <0x48040000  0x400>;
                        interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer2";
+               };
+
+               timer3: timer@48042000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x48042000 0x400>;
+                       interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer3";
+                       status = "disabled";
+               };
+
+               timer4: timer@48044000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x48044000 0x400>;
+                       interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,timer-pwm;
+                       ti,hwmods = "timer4";
+                       status = "disabled";
+               };
+
+               timer5: timer@48046000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x48046000 0x400>;
+                       interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,timer-pwm;
+                       ti,hwmods = "timer5";
+                       status = "disabled";
+               };
+
+               timer6: timer@48048000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x48048000 0x400>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,timer-pwm;
+                       ti,hwmods = "timer6";
+                       status = "disabled";
+               };
+
+               timer7: timer@4804a000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x4804a000 0x400>;
+                       interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,timer-pwm;
+                       ti,hwmods = "timer7";
+                       status = "disabled";
+               };
+
+               timer8: timer@481c1000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x481c1000 0x400>;
+                       interrupts = <GIC_SPI 131 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer8";
+                       status = "disabled";
+               };
+
+               timer9: timer@4833d000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x4833d000 0x400>;
+                       interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer9";
+                       status = "disabled";
+               };
+
+               timer10: timer@4833f000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x4833f000 0x400>;
+                       interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer10";
+                       status = "disabled";
+               };
+
+               timer11: timer@48341000 {
+                       compatible = "ti,am4372-timer","ti,am335x-timer";
+                       reg = <0x48341000 0x400>;
+                       interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer11";
+                       status = "disabled";
                };
 
                counter32k: counter@44e86000 {
                        compatible = "ti,am4372-counter32k","ti,omap-counter32k";
                        reg = <0x44e86000 0x40>;
+                       ti,hwmods = "counter_32k";
+               };
+
+               rtc@44e3e000 {
+                       compatible = "ti,am4372-rtc","ti,da830-rtc";
+                       reg = <0x44e3e000 0x1000>;
+                       interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "rtc";
+                       status = "disabled";
+               };
+
+               wdt@44e35000 {
+                       compatible = "ti,am4372-wdt","ti,omap3-wdt";
+                       reg = <0x44e35000 0x1000>;
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "wd_timer2";
+               };
+
+               gpio0: gpio@44e07000 {
+                       compatible = "ti,am4372-gpio","ti,omap4-gpio";
+                       reg = <0x44e07000 0x1000>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       ti,hwmods = "gpio1";
+                       status = "disabled";
+               };
+
+               gpio1: gpio@4804c000 {
+                       compatible = "ti,am4372-gpio","ti,omap4-gpio";
+                       reg = <0x4804c000 0x1000>;
+                       interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       ti,hwmods = "gpio2";
+                       status = "disabled";
+               };
+
+               gpio2: gpio@481ac000 {
+                       compatible = "ti,am4372-gpio","ti,omap4-gpio";
+                       reg = <0x481ac000 0x1000>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       ti,hwmods = "gpio3";
+                       status = "disabled";
+               };
+
+               gpio3: gpio@481ae000 {
+                       compatible = "ti,am4372-gpio","ti,omap4-gpio";
+                       reg = <0x481ae000 0x1000>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       ti,hwmods = "gpio4";
+                       status = "disabled";
+               };
+
+               gpio4: gpio@48320000 {
+                       compatible = "ti,am4372-gpio","ti,omap4-gpio";
+                       reg = <0x48320000 0x1000>;
+                       interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       ti,hwmods = "gpio5";
+                       status = "disabled";
+               };
+
+               gpio5: gpio@48322000 {
+                       compatible = "ti,am4372-gpio","ti,omap4-gpio";
+                       reg = <0x48322000 0x1000>;
+                       interrupts = <GIC_SPI 148 IRQ_TYPE_LEVEL_HIGH>;
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+                       ti,hwmods = "gpio6";
+                       status = "disabled";
+               };
+
+               i2c0: i2c@44e0b000 {
+                       compatible = "ti,am4372-i2c","ti,omap4-i2c";
+                       reg = <0x44e0b000 0x1000>;
+                       interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "i2c1";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@4802a000 {
+                       compatible = "ti,am4372-i2c","ti,omap4-i2c";
+                       reg = <0x4802a000 0x1000>;
+                       interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "i2c2";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@4819c000 {
+                       compatible = "ti,am4372-i2c","ti,omap4-i2c";
+                       reg = <0x4819c000 0x1000>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "i2c3";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi0: spi@48030000 {
+                       compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+                       reg = <0x48030000 0x400>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "spi0";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               mmc1: mmc@48060000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x48060000 0x1000>;
+                       ti,hwmods = "mmc1";
+                       ti,dual-volt;
+                       ti,needs-special-reset;
+                       dmas = <&edma 24
+                               &edma 25>;
+                       dma-names = "tx", "rx";
+                       interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               mmc2: mmc@481d8000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x481d8000 0x1000>;
+                       ti,hwmods = "mmc2";
+                       ti,needs-special-reset;
+                       dmas = <&edma 2
+                               &edma 3>;
+                       dma-names = "tx", "rx";
+                       interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               mmc3: mmc@47810000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x47810000 0x1000>;
+                       ti,hwmods = "mmc3";
+                       ti,needs-special-reset;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       status = "disabled";
+               };
+
+               spi1: spi@481a0000 {
+                       compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+                       reg = <0x481a0000 0x400>;
+                       interrupts = <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "spi1";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi2: spi@481a2000 {
+                       compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+                       reg = <0x481a2000 0x400>;
+                       interrupts = <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "spi2";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi3: spi@481a4000 {
+                       compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+                       reg = <0x481a4000 0x400>;
+                       interrupts = <GIC_SPI 136 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "spi3";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               spi4: spi@48345000 {
+                       compatible = "ti,am4372-mcspi","ti,omap4-mcspi";
+                       reg = <0x48345000 0x400>;
+                       interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "spi4";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+               };
+
+               mac: ethernet@4a100000 {
+                       compatible = "ti,am4372-cpsw","ti,cpsw";
+                       reg = <0x4a100000 0x800
+                              0x4a101200 0x100>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH
+                                     GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ti,hwmods = "cpgmac0";
+                       status = "disabled";
+                       cpdma_channels = <8>;
+                       ale_entries = <1024>;
+                       bd_ram_size = <0x2000>;
+                       no_bd_ram = <0>;
+                       rx_descs = <64>;
+                       mac_control = <0x20>;
+                       slaves = <2>;
+                       active_slave = <0>;
+                       cpts_clock_mult = <0x80000000>;
+                       cpts_clock_shift = <29>;
+                       ranges;
+
+                       davinci_mdio: mdio@4a101000 {
+                               compatible = "ti,am4372-mdio","ti,davinci_mdio";
+                               reg = <0x4a101000 0x100>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               ti,hwmods = "davinci_mdio";
+                               bus_freq = <1000000>;
+                               status = "disabled";
+                       };
+
+                       cpsw_emac0: slave@4a100200 {
+                               /* Filled in by U-Boot */
+                               mac-address = [ 00 00 00 00 00 00 ];
+                       };
+
+                       cpsw_emac1: slave@4a100300 {
+                               /* Filled in by U-Boot */
+                               mac-address = [ 00 00 00 00 00 00 ];
+                       };
+               };
+
+               epwmss0: epwmss@48300000 {
+                       compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+                       reg = <0x48300000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       ti,hwmods = "epwmss0";
+                       status = "disabled";
+
+                       ecap0: ecap@48300100 {
+                               compatible = "ti,am4372-ecap","ti,am33xx-ecap";
+                               reg = <0x48300100 0x80>;
+                               ti,hwmods = "ecap0";
+                               status = "disabled";
+                       };
+
+                       ehrpwm0: ehrpwm@48300200 {
+                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               reg = <0x48300200 0x80>;
+                               ti,hwmods = "ehrpwm0";
+                               status = "disabled";
+                       };
+               };
+
+               epwmss1: epwmss@48302000 {
+                       compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+                       reg = <0x48302000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       ti,hwmods = "epwmss1";
+                       status = "disabled";
+
+                       ecap1: ecap@48302100 {
+                               compatible = "ti,am4372-ecap","ti,am33xx-ecap";
+                               reg = <0x48302100 0x80>;
+                               ti,hwmods = "ecap1";
+                               status = "disabled";
+                       };
+
+                       ehrpwm1: ehrpwm@48302200 {
+                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               reg = <0x48302200 0x80>;
+                               ti,hwmods = "ehrpwm1";
+                               status = "disabled";
+                       };
+               };
+
+               epwmss2: epwmss@48304000 {
+                       compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+                       reg = <0x48304000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       ti,hwmods = "epwmss2";
+                       status = "disabled";
+
+                       ecap2: ecap@48304100 {
+                               compatible = "ti,am4372-ecap","ti,am33xx-ecap";
+                               reg = <0x48304100 0x80>;
+                               ti,hwmods = "ecap2";
+                               status = "disabled";
+                       };
+
+                       ehrpwm2: ehrpwm@48304200 {
+                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               reg = <0x48304200 0x80>;
+                               ti,hwmods = "ehrpwm2";
+                               status = "disabled";
+                       };
+               };
+
+               epwmss3: epwmss@48306000 {
+                       compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+                       reg = <0x48306000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       ti,hwmods = "epwmss3";
+                       status = "disabled";
+
+                       ehrpwm3: ehrpwm@48306200 {
+                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               reg = <0x48306200 0x80>;
+                               ti,hwmods = "ehrpwm3";
+                               status = "disabled";
+                       };
+               };
+
+               epwmss4: epwmss@48308000 {
+                       compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+                       reg = <0x48308000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       ti,hwmods = "epwmss4";
+                       status = "disabled";
+
+                       ehrpwm4: ehrpwm@48308200 {
+                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               reg = <0x48308200 0x80>;
+                               ti,hwmods = "ehrpwm4";
+                               status = "disabled";
+                       };
+               };
+
+               epwmss5: epwmss@4830a000 {
+                       compatible = "ti,am4372-pwmss","ti,am33xx-pwmss";
+                       reg = <0x4830a000 0x10>;
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       ranges;
+                       ti,hwmods = "epwmss5";
+                       status = "disabled";
+
+                       ehrpwm5: ehrpwm@4830a200 {
+                               compatible = "ti,am4372-ehrpwm","ti,am33xx-ehrpwm";
+                               reg = <0x4830a200 0x80>;
+                               ti,hwmods = "ehrpwm5";
+                               status = "disabled";
+                       };
+               };
+
+               sham: sham@53100000 {
+                       compatible = "ti,omap5-sham";
+                       ti,hwmods = "sham";
+                       reg = <0x53100000 0x300>;
+                       dmas = <&edma 36>;
+                       dma-names = "rx";
+                       interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>;
+               };
+
+               aes: aes@53501000 {
+                       compatible = "ti,omap4-aes";
+                       ti,hwmods = "aes";
+                       reg = <0x53501000 0xa0>;
+                       interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&edma 6
+                               &edma 5>;
+                       dma-names = "tx", "rx";
+               };
+
+               des: des@53701000 {
+                       compatible = "ti,omap4-des";
+                       ti,hwmods = "des";
+                       reg = <0x53701000 0xa0>;
+                       interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&edma 34
+                               &edma 33>;
+                       dma-names = "tx", "rx";
+               };
+
+               mcasp0: mcasp@48038000 {
+                       compatible = "ti,am33xx-mcasp-audio";
+                       ti,hwmods = "mcasp0";
+                       reg = <0x48038000 0x2000>,
+                             <0x46000000 0x400000>;
+                       reg-names = "mpu", "dat";
+                       interrupts = <80>, <81>;
+                       interrupts-names = "tx", "rx";
+                       status = "disabled";
+                       dmas = <&edma 8>,
+                              <&edma 9>;
+                       dma-names = "tx", "rx";
+               };
+
+               mcasp1: mcasp@4803C000 {
+                       compatible = "ti,am33xx-mcasp-audio";
+                       ti,hwmods = "mcasp1";
+                       reg = <0x4803C000 0x2000>,
+                             <0x46400000 0x400000>;
+                       reg-names = "mpu", "dat";
+                       interrupts = <82>, <83>;
+                       interrupts-names = "tx", "rx";
+                       status = "disabled";
+                       dmas = <&edma 10>,
+                              <&edma 11>;
+                       dma-names = "tx", "rx";
                };
        };
 };
index 74174d48f476718f091f4211b723cbda57c19b3e..fbf9c4c7a94fe7f998346140d32540b6ebf3507f 100644 (file)
 /dts-v1/;
 
 #include "am4372.dtsi"
+#include <dt-bindings/pinctrl/am43xx.h>
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "TI AM43x EPOS EVM";
        compatible = "ti,am43x-epos-evm","ti,am4372","ti,am43";
+
+       vmmcsd_fixed: fixedregulator-sd {
+               compatible = "regulator-fixed";
+               regulator-name = "vmmcsd_fixed";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+       };
+
+       am43xx_pinmux: pinmux@44e10800 {
+               cpsw_default: cpsw_default {
+                       pinctrl-single,pins = <
+                               /* Slave 1 */
+                               0x10c (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_crs.rmii1_crs */
+                               0x110 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxerr.rmii1_rxerr */
+                               0x114 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txen.rmii1_txen */
+                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxdv.rmii1_rxdv */
+                               0x124 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd1.rmii1_txd1 */
+                               0x128 (PIN_OUTPUT_PULLDOWN | MUX_MODE1) /* mii1_txd0.rmii1_txd0 */
+                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxd1.rmii1_rxd1 */
+                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE1)  /* mii1_rxd0.rmii1_rxd0 */
+                               0x144 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* rmii1_refclk.rmii1_refclk */
+                       >;
+               };
+
+               cpsw_sleep: cpsw_sleep {
+                       pinctrl-single,pins = <
+                               /* Slave 1 reset value */
+                               0x10c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x110 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x114 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x118 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x124 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x128 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x13c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x140 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x144 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       >;
+               };
+
+               davinci_mdio_default: davinci_mdio_default {
+                       pinctrl-single,pins = <
+                               /* MDIO */
+                               0x148 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* mdio_data.mdio_data */
+                               0x14c (PIN_OUTPUT_PULLUP | MUX_MODE0)                   /* mdio_clk.mdio_clk */
+                       >;
+               };
+
+               davinci_mdio_sleep: davinci_mdio_sleep {
+                       pinctrl-single,pins = <
+                               /* MDIO reset value */
+                               0x148 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                               0x14c (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                       >;
+               };
+
+               i2c0_pins: pinmux_i2c0_pins {
+                       pinctrl-single,pins = <
+                               0x188 (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* i2c0_sda.i2c0_sda */
+                               0x18c (PIN_INPUT_PULLUP | SLEWCTRL_FAST | MUX_MODE0)    /* i2c0_scl.i2c0_scl */
+                       >;
+               };
+       };
+
+       matrix_keypad: matrix_keypad@0 {
+                       compatible = "gpio-matrix-keypad";
+                       debounce-delay-ms = <5>;
+                       col-scan-delay-us = <2>;
+
+                       row-gpios = <&gpio0 12 GPIO_ACTIVE_HIGH         /* Bank0, pin12 */
+                                    &gpio0 13 GPIO_ACTIVE_HIGH         /* Bank0, pin13 */
+                                    &gpio0 14 GPIO_ACTIVE_HIGH         /* Bank0, pin14 */
+                                    &gpio0 15 GPIO_ACTIVE_HIGH>;       /* Bank0, pin15 */
+
+                       col-gpios = <&gpio3 9 GPIO_ACTIVE_HIGH          /* Bank3, pin9 */
+                                    &gpio3 10 GPIO_ACTIVE_HIGH         /* Bank3, pin10 */
+                                    &gpio2 18 GPIO_ACTIVE_HIGH         /* Bank2, pin18 */
+                                    &gpio2 19 GPIO_ACTIVE_HIGH>;       /* Bank2, pin19 */
+
+                       linux,keymap = <0x00000201      /* P1 */
+                               0x01000204      /* P4 */
+                               0x02000207      /* P7 */
+                               0x0300020a      /* NUMERIC_STAR */
+                               0x00010202      /* P2 */
+                               0x01010205      /* P5 */
+                               0x02010208      /* P8 */
+                               0x03010200      /* P0 */
+                               0x00020203      /* P3 */
+                               0x01020206      /* P6 */
+                               0x02020209      /* P9 */
+                               0x0302020b      /* NUMERIC_POUND */
+                               0x00030067      /* UP */
+                               0x0103006a      /* RIGHT */
+                               0x0203006c      /* DOWN */
+                               0x03030069>;    /* LEFT */
+               };
+};
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&vmmcsd_fixed>;
+       bus-width = <4>;
+};
+
+&mac {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&cpsw_default>;
+       pinctrl-1 = <&cpsw_sleep>;
+       status = "okay";
+};
+
+&davinci_mdio {
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <&davinci_mdio_default>;
+       pinctrl-1 = <&davinci_mdio_sleep>;
+       status = "okay";
+};
+
+&cpsw_emac0 {
+       phy_id = <&davinci_mdio>, <16>;
+       phy-mode = "rmii";
+};
+
+&cpsw_emac1 {
+       phy_id = <&davinci_mdio>, <1>;
+       phy-mode = "rmii";
+};
+
+&i2c0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       at24@50 {
+               compatible = "at24,24c256";
+               pagesize = <64>;
+               reg = <0x50>;
+       };
+
+       pixcir_ts@5c {
+               compatible = "pixcir,pixcir_ts";
+               reg = <0x5c>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <17 0>;
+
+               attb-gpio = <&gpio1 17 GPIO_ACTIVE_HIGH>;
+
+               x-size = <1024>;
+               y-size = <768>;
+       };
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&gpio3 {
+       status = "okay";
 };
index 1de2dae0fdae6f6353169dc423d75e07d4f65f6f..00d6a798c705b9b04408a8d28af70cd7b7cc6868 100644 (file)
                                #interrupt-cells = <1>;
                                #size-cells = <1>;
                                interrupt-controller;
+                               msi-controller;
                        };
 
                        coherency-fabric@20200 {
                                status = "disabled";
                        };
 
+                       coredivclk: corediv-clock@18740 {
+                               compatible = "marvell,armada-370-corediv-clock";
+                               reg = <0x18740 0xc>;
+                               #clock-cells = <1>;
+                               clocks = <&mainpll>;
+                               clock-output-names = "nand";
+                       };
+
                        timer@20300 {
                                reg = <0x20300 0x30>, <0x21040 0x30>;
                                interrupts = <37>, <38>, <39>, <40>, <5>, <6>;
 
                        i2c0: i2c@11000 {
                                compatible = "marvell,mv64xxx-i2c";
-                               reg = <0x11000 0x20>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                interrupts = <31>;
 
                        i2c1: i2c@11100 {
                                compatible = "marvell,mv64xxx-i2c";
-                               reg = <0x11100 0x20>;
                                #address-cells = <1>;
                                #size-cells = <0>;
                                interrupts = <32>;
 
                };
        };
+
+       clocks {
+               /* 2 GHz fixed main PLL */
+               mainpll: mainpll {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <2000000000>;
+               };
+       };
  };
index e134d7a90c9ab9a5d24bfb500ed9206875f8f033..7a4b82e71aaf399eec2dc461656826e2fdad738a 100644 (file)
@@ -44,6 +44,7 @@
                        #address-cells = <3>;
                        #size-cells = <2>;
 
+                       msi-parent = <&mpic>;
                        bus-range = <0x00 0xff>;
 
                        ranges =
                                };
                        };
 
+                       i2c0: i2c@11000 {
+                               reg = <0x11000 0x20>;
+                       };
+
+                       i2c1: i2c@11100 {
+                               reg = <0x11100 0x20>;
+                       };
+
                        usb@50000 {
                                clocks = <&coreclk 0>;
                        };
diff --git a/arch/arm/boot/dts/armada-xp-matrix.dts b/arch/arm/boot/dts/armada-xp-matrix.dts
new file mode 100644 (file)
index 0000000..e47c49e
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Device Tree file for Marvell Armada XP Matrix board
+ *
+ * Copyright (C) 2013 Marvell
+ *
+ * Lior Amsalem <alior@marvell.com>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2.  This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+#include "armada-xp-mv78460.dtsi"
+
+/ {
+       model = "Marvell Armada XP Matrix Board";
+       compatible = "marvell,axp-matrix", "marvell,armadaxp-mv78460", "marvell,armadaxp", "marvell,armada-370-xp";
+
+       chosen {
+               bootargs = "console=ttyS0,115200 earlyprintk";
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0 0x00000000 0 0x80000000>; /* 2 GB */
+       };
+
+       soc {
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0 0xf1000000 0x100000
+                         MBUS_ID(0x01, 0x1d) 0 0 0xfff00000 0x100000>;
+
+               internal-regs {
+                       serial@12000 {
+                               clock-frequency = <250000000>;
+                               status = "okay";
+                       };
+                       serial@12100 {
+                               clock-frequency = <250000000>;
+                               status = "okay";
+                       };
+                       serial@12200 {
+                               clock-frequency = <250000000>;
+                               status = "okay";
+                       };
+                       serial@12300 {
+                               clock-frequency = <250000000>;
+                               status = "okay";
+                       };
+
+                       sata@a0000 {
+                               nr-ports = <2>;
+                               status = "okay";
+                       };
+
+                       ethernet@30000 {
+                               status = "okay";
+                               phy-mode = "sgmii";
+                       };
+
+                       pcie-controller {
+                               status = "okay";
+
+                               pcie@1,0 {
+                                       /* Port 0, Lane 0 */
+                                       status = "okay";
+                               };
+                       };
+
+                       usb@50000 {
+                               status = "okay";
+                       };
+               };
+       };
+};
index 0358a33cba489d40c97fda0a1bd7cb5769ade9b8..3f5e6121c730a21ae2079acff268da2be20518ef 100644 (file)
@@ -57,6 +57,7 @@
                        #address-cells = <3>;
                        #size-cells = <2>;
 
+                       msi-parent = <&mpic>;
                        bus-range = <0x00 0xff>;
 
                        ranges =
index 0e82c5062243f2d20f608bbc36d80faf37645abd..3e9fd1353f895d6778972e95518850268ef6eb4e 100644 (file)
@@ -58,6 +58,7 @@
                        #address-cells = <3>;
                        #size-cells = <2>;
 
+                       msi-parent = <&mpic>;
                        bus-range = <0x00 0xff>;
 
                        ranges =
index e82c1b80af171e3915b6e09f95bfb9078d0b0201..31ba6d8fbadf8803f28aca6312c8205c79c23aee 100644 (file)
@@ -74,6 +74,7 @@
                        #address-cells = <3>;
                        #size-cells = <2>;
 
+                       msi-parent = <&mpic>;
                        bus-range = <0x00 0xff>;
 
                        ranges =
index 3058522f5aad2929092f7f7bcc2dd78a9c62c22a..281c6447e87272c0df44f89da6489876b8c9ade8 100644 (file)
                                };
                        };
 
+                       i2c0: i2c@11000 {
+                               compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
+                               reg = <0x11000 0x100>;
+                       };
+
+                       i2c1: i2c@11100 {
+                               compatible = "marvell,mv78230-i2c", "marvell,mv64xxx-i2c";
+                               reg = <0x11100 0x100>;
+                       };
+
                        usb@50000 {
                                clocks = <&gateclk 18>;
                        };
index 137354689ad0a6dfdd08d07b348cd8cf08705e42..cb2c010e08e21fd5bd5b871aa3d3e496ffc0005e 100644 (file)
@@ -96,7 +96,6 @@
                        };
 
                        spi0: spi@fffc8000 {
-                               status = "okay";
                                cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
                                mtd_dataflash@0 {
                                        compatible = "atmel,at45", "atmel,dataflash";
index 9fb7ffd32af26cd9ab7d959f7e1641b2937e050a..6224f9fe2f2b7205f32a3205ff78d0b31036ad09 100644 (file)
                                compatible = "atmel,at91sam9g45-ssc";
                                reg = <0xf0010000 0x4000>;
                                interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
+                               dmas = <&dma 0 AT91_DMA_CFG_PER_ID(21)>,
+                                      <&dma 0 AT91_DMA_CFG_PER_ID(22)>;
+                               dma-names = "tx", "rx";
                                pinctrl-names = "default";
                                pinctrl-0 = <&pinctrl_ssc0_tx &pinctrl_ssc0_rx>;
                                status = "disabled";
index 27a9352b9d7a02e047303a2fb72bb47a5ec9f0c8..e9487f6f01660409ee193649d3c1d56c98376cb5 100644 (file)
                                status = "okay";
                        };
 
+                       ssc0: ssc@f0010000 {
+                               status = "okay";
+                       };
+
                        i2c0: i2c@f8010000 {
                                status = "okay";
 
+                               wm8904: codec@1a {
+                                       compatible = "wm8904";
+                                       reg = <0x1a>;
+                               };
+
                                qt1070: keyboard@1b {
                                        compatible = "qt1070";
                                        reg = <0x1b>;
                                                        <AT91_PIOA 2 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
                                        };
                                };
+
+                               sound {
+                                       pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
+                                               atmel,pins =
+                                                       <AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
+                                       };
+                               };
                        };
 
                        spi0: spi@f0000000 {
                        gpio-key,wakeup;
                };
        };
+
+       sound {
+               compatible = "atmel,asoc-wm8904";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;
+
+               atmel,model = "wm8904 @ AT91SAM9N12";
+               atmel,audio-routing =
+                       "Headphone Jack", "HPOUTL",
+                       "Headphone Jack", "HPOUTR",
+                       "IN2L", "Line In Jack",
+                       "IN2R", "Line In Jack",
+                       "Mic", "MICBIAS",
+                       "IN1L", "Mic";
+
+               atmel,ssc-controller = <&ssc0>;
+               atmel,audio-codec = <&wm8904>;
+       };
 };
index 61a8062e56de00f741ce83582257dcb9e1f7b630..50c0d69044979fef24292cfe4c8ef7c57b8b2760 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ "dove.dtsi"
+#include "dove.dtsi"
 
 / {
        model = "Compulab CM-A510";
index 022646ef4b3842278f636ed23b6f8c030a1db623..8349a248eceaf242f8a079e6c565af109ee69708 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ "dove.dtsi"
+#include "dove.dtsi"
 
 / {
        model = "SolidRun CuBox";
                        silabs,pll-master;
                };
 
-               clkout1 {
-                       reg = <1>;
-                       silabs,drive-strength = <8>;
-                       silabs,multisynth-source = <1>;
-                       silabs,clock-source = <0>;
-                       silabs,pll-master;
-               };
-
                clkout2 {
                        reg = <2>;
+                       silabs,drive-strength = <8>;
                        silabs,multisynth-source = <1>;
                        silabs,clock-source = <0>;
+                       silabs,pll-master;
                };
        };
 };
                reg = <0>;
        };
 };
+
+&audio1 {
+       status = "okay";
+       clocks = <&gate_clk 13>, <&si5351 2>;
+       clock-names = "internal", "extclk";
+       pinctrl-0 = <&pmx_audio1_i2s1_spdifo &pmx_audio1_extclk>;
+       pinctrl-names = "default";
+};
index e2222ce94f2f2494380d137f70267f942f231646..c11d3636c8e5635004aa5ae73ceb3ab450882dd2 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ "dove.dtsi"
+#include "dove.dtsi"
 
 / {
        model = "Globalscale D2Plug";
diff --git a/arch/arm/boot/dts/dove-d3plug.dts b/arch/arm/boot/dts/dove-d3plug.dts
new file mode 100644 (file)
index 0000000..f5f59bb
--- /dev/null
@@ -0,0 +1,103 @@
+/dts-v1/;
+
+#include "dove.dtsi"
+
+/ {
+       model = "Globalscale D3Plug";
+       compatible = "globalscale,d3plug", "marvell,dove";
+
+       memory {
+               device_type = "memory";
+               reg = <0x00000000 0x40000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8 earlyprintk root=/dev/mmcblk0p2 rw rootwait";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-0 = <&pmx_gpio_0 &pmx_gpio_1 &pmx_gpio_2>;
+               pinctrl-names = "default";
+
+               wlan-act {
+                       label = "wlan-act";
+                       gpios = <&gpio0 0 1>;
+               };
+
+               wlan-ap {
+                       label = "wlan-ap";
+                       gpios = <&gpio0 1 1>;
+               };
+
+               status {
+                       label = "status";
+                       gpios = <&gpio0 2 1>;
+               };
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               usb_power: regulator@1 {
+                       compatible = "regulator-fixed";
+                       reg = <1>;
+                       regulator-name = "USB Power";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
+                       gpio = <&gpio0 8 0>;
+                       pinctrl-0 = <&pmx_gpio_8>;
+                       pinctrl-names = "default";
+               };
+       };
+};
+
+&uart0 { status = "okay"; };
+&sata0 { status = "okay"; };
+&i2c0 { status = "okay"; };
+
+/* Samsung M8G2F eMMC */
+&sdio0 {
+       status = "okay";
+       non-removable;
+       bus-width = <4>;
+};
+
+/* Marvell SD8787 WLAN/BT */
+&sdio1 {
+       status = "okay";
+       non-removable;
+};
+
+&spi0 {
+       status = "okay";
+
+       /* spi0.0: 2M Flash Macronix MX25L1605D */
+       spi-flash@0 {
+               compatible = "st,m25l1605d";
+               spi-max-frequency = <86000000>;
+               reg = <0>;
+       };
+};
+
+&pcie {
+       status = "okay";
+       /* Fresco Logic USB3.0 xHCI controller */
+       pcie-port@0 {
+               status = "okay";
+               reset-gpios = <&gpio0 26 1>;
+               reset-delay-us = <20000>;
+               pinctrl-0 = <&pmx_camera_gpio>;
+               pinctrl-names = "default";
+       };
+       /* Mini-PCIe slot */
+       pcie-port@1 {
+               status = "okay";
+               reset-gpios = <&gpio0 25 1>;
+       };
+};
index e5a920beab450546a3231941d11c756495b1c516..bb725dca3a1000f7f8de5a9e9cd79bc2d9be38df 100644 (file)
@@ -1,6 +1,6 @@
 /dts-v1/;
 
-/include/ "dove.dtsi"
+#include "dove.dtsi"
 
 / {
        model = "Marvell DB-MV88AP510-BP Development Board";
index cc279166646fc4cb33751c8de2f1e19de2dd7440..113a8bc7bee73649a33cc3e212336536f47399b3 100644 (file)
@@ -1,8 +1,11 @@
 /include/ "skeleton.dtsi"
 
+#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
+
 / {
        compatible = "marvell,dove";
        model = "Marvell Armada 88AP510 SoC";
+       interrupt-parent = <&intc>;
 
        aliases {
                gpio0 = &gpio0;
                marvell,tauros2-cache-features = <0>;
        };
 
-       soc@f1000000 {
-               compatible = "simple-bus";
-               #address-cells = <1>;
+       mbus {
+               compatible = "marvell,dove-mbus", "marvell,mbus", "simple-bus";
+               #address-cells = <2>;
                #size-cells = <1>;
-               interrupt-parent = <&intc>;
-
-               ranges = <0xc8000000 0xc8000000 0x0100000   /* CESA SRAM   1M */
-                         0xe0000000 0xe0000000 0x8000000   /* PCIe0 Mem 128M */
-                         0xe8000000 0xe8000000 0x8000000   /* PCIe1 Mem 128M */
-                         0xf0000000 0xf0000000 0x0100000   /* ScratchPad  1M */
-                         0x00000000 0xf1000000 0x1000000   /* SB/NB regs 16M */
-                         0xf2000000 0xf2000000 0x0100000   /* PCIe0 I/O   1M */
-                         0xf2100000 0xf2100000 0x0100000   /* PCIe0 I/O   1M */
-                         0xf8000000 0xf8000000 0x8000000>; /* BootROM   128M */
-
-               timer: timer@20300 {
-                       compatible = "marvell,orion-timer";
-                       reg = <0x20300 0x20>;
-                       interrupt-parent = <&bridge_intc>;
-                       interrupts = <1>, <2>;
-                       clocks = <&core_clk 0>;
-               };
-
-               intc: main-interrupt-ctrl@20200 {
-                       compatible = "marvell,orion-intc";
-                       interrupt-controller;
-                       #interrupt-cells = <1>;
-                       reg = <0x20200 0x10>, <0x20210 0x10>;
-               };
-
-               bridge_intc: bridge-interrupt-ctrl@20110 {
-                       compatible = "marvell,orion-bridge-intc";
-                       interrupt-controller;
-                       #interrupt-cells = <1>;
-                       reg = <0x20110 0x8>;
-                       interrupts = <0>;
-                       marvell,#interrupts = <5>;
-               };
-
-               core_clk: core-clocks@d0214 {
-                       compatible = "marvell,dove-core-clock";
-                       reg = <0xd0214 0x4>;
-                       #clock-cells = <1>;
-               };
-
-               gate_clk: clock-gating-ctrl@d0038 {
-                       compatible = "marvell,dove-gating-clock";
-                       reg = <0xd0038 0x4>;
-                       clocks = <&core_clk 0>;
-                       #clock-cells = <1>;
-               };
-
-               thermal: thermal-diode@d001c {
-                       compatible = "marvell,dove-thermal";
-                       reg = <0xd001c 0x0c>, <0xd005c 0x08>;
-               };
-
-               uart0: serial@12000 {
-                       compatible = "ns16550a";
-                       reg = <0x12000 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <7>;
-                       clocks = <&core_clk 0>;
-                       status = "disabled";
-               };
-
-               uart1: serial@12100 {
-                       compatible = "ns16550a";
-                       reg = <0x12100 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <8>;
-                       clocks = <&core_clk 0>;
-                       pinctrl-0 = <&pmx_uart1>;
-                       pinctrl-names = "default";
-                       status = "disabled";
-               };
-
-               uart2: serial@12200 {
-                       compatible = "ns16550a";
-                       reg = <0x12000 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <9>;
-                       clocks = <&core_clk 0>;
+               controller = <&mbusc>;
+               pcie-mem-aperture = <0xe0000000 0x10000000>; /* 256M MEM space */
+               pcie-io-aperture  = <0xf2000000 0x00200000>; /*   2M I/O space */
+
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x0100000   /* MBUS regs  1M */
+                         MBUS_ID(0xf0, 0x02) 0 0xf1800000 0x1000000   /* AXI  regs 16M */
+                         MBUS_ID(0x01, 0xfd) 0 0xf8000000 0x8000000   /* BootROM  128M */
+                         MBUS_ID(0x03, 0x01) 0 0xc8000000 0x0100000   /* CESA SRAM  1M */
+                         MBUS_ID(0x0d, 0x00) 0 0xf0000000 0x0100000>; /* PMU  SRAM  1M */
+
+               pcie: pcie-controller {
+                       compatible = "marvell,dove-pcie";
                        status = "disabled";
-               };
-
-               uart3: serial@12300 {
-                       compatible = "ns16550a";
-                       reg = <0x12100 0x100>;
-                       reg-shift = <2>;
-                       interrupts = <10>;
-                       clocks = <&core_clk 0>;
-                       status = "disabled";
-               };
-
-               gpio0: gpio-ctrl@d0400 {
-                       compatible = "marvell,orion-gpio";
-                       #gpio-cells = <2>;
-                       gpio-controller;
-                       reg = <0xd0400 0x20>;
-                       ngpios = <32>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       interrupts = <12>, <13>, <14>, <60>;
-               };
-
-               gpio1: gpio-ctrl@d0420 {
-                       compatible = "marvell,orion-gpio";
-                       #gpio-cells = <2>;
-                       gpio-controller;
-                       reg = <0xd0420 0x20>;
-                       ngpios = <32>;
-                       interrupt-controller;
-                       #interrupt-cells = <2>;
-                       interrupts = <61>;
-               };
-
-               gpio2: gpio-ctrl@e8400 {
-                       compatible = "marvell,orion-gpio";
-                       #gpio-cells = <2>;
-                       gpio-controller;
-                       reg = <0xe8400 0x0c>;
-                       ngpios = <8>;
-               };
-
-               pinctrl: pin-ctrl@d0200 {
-                       compatible = "marvell,dove-pinctrl";
-                       reg = <0xd0200 0x10>;
-                       clocks = <&gate_clk 22>;
-
-                       pmx_gpio_0: pmx-gpio-0 {
-                               marvell,pins = "mpp0";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_1: pmx-gpio-1 {
-                               marvell,pins = "mpp1";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_2: pmx-gpio-2 {
-                               marvell,pins = "mpp2";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_3: pmx-gpio-3 {
-                               marvell,pins = "mpp3";
-                               marvell,function = "gpio";
+                       device_type = "pci";
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+
+                       msi-parent = <&intc>;
+                       bus-range = <0x00 0xff>;
+
+                       ranges = <0x82000000 0x0 0x40000 MBUS_ID(0xf0, 0x01) 0x40000 0 0x2000
+                                 0x82000000 0x0 0x80000 MBUS_ID(0xf0, 0x01) 0x80000 0 0x2000
+                                 0x82000000 0x1 0x0 MBUS_ID(0x04, 0xe8) 0 1 0   /* Port 0.0 Mem */
+                                 0x81000000 0x1 0x0 MBUS_ID(0x04, 0xe0) 0 1 0   /* Port 0.0 I/O */
+                                 0x82000000 0x2 0x0 MBUS_ID(0x08, 0xe8) 0 1 0   /* Port 1.0 Mem */
+                                 0x81000000 0x2 0x0 MBUS_ID(0x08, 0xe0) 0 1 0>; /* Port 1.0 I/O */
+
+                       pcie-port@0 {
+                               device_type = "pci";
+                               status = "disabled";
+                               assigned-addresses = <0x82000800 0 0x40000 0 0x2000>;
+                               reg = <0x0800 0 0 0 0>;
+                               clocks = <&gate_clk 4>;
+                               marvell,pcie-port = <0>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges = <0x82000000 0 0 0x82000000 0x1 0 1 0
+                                         0x81000000 0 0 0x81000000 0x1 0 1 0>;
+
+                               #interrupt-cells = <1>;
+                               interrupt-map-mask = <0 0 0 0>;
+                               interrupt-map = <0 0 0 0 &intc 16>;
+                       };
+
+                       pcie-port@1 {
+                               device_type = "pci";
+                               status = "disabled";
+                               assigned-addresses = <0x82002800 0 0x80000 0 0x2000>;
+                               reg = <0x1000 0 0 0 0>;
+                               clocks = <&gate_clk 5>;
+                               marvell,pcie-port = <1>;
+
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges = <0x82000000 0 0 0x82000000 0x2 0 1 0
+                                         0x81000000 0 0 0x81000000 0x2 0 1 0>;
+
+                               #interrupt-cells = <1>;
+                               interrupt-map-mask = <0 0 0 0>;
+                               interrupt-map = <0 0 0 0 &intc 18>;
                        };
-
-                       pmx_gpio_4: pmx-gpio-4 {
-                               marvell,pins = "mpp4";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_5: pmx-gpio-5 {
-                               marvell,pins = "mpp5";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_6: pmx-gpio-6 {
-                               marvell,pins = "mpp6";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_7: pmx-gpio-7 {
-                               marvell,pins = "mpp7";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_8: pmx-gpio-8 {
-                               marvell,pins = "mpp8";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_9: pmx-gpio-9 {
-                               marvell,pins = "mpp9";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_10: pmx-gpio-10 {
-                               marvell,pins = "mpp10";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_11: pmx-gpio-11 {
-                               marvell,pins = "mpp11";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_12: pmx-gpio-12 {
-                               marvell,pins = "mpp12";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_13: pmx-gpio-13 {
-                               marvell,pins = "mpp13";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_14: pmx-gpio-14 {
-                               marvell,pins = "mpp14";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_15: pmx-gpio-15 {
-                               marvell,pins = "mpp15";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_16: pmx-gpio-16 {
-                               marvell,pins = "mpp16";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_17: pmx-gpio-17 {
-                               marvell,pins = "mpp17";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_18: pmx-gpio-18 {
-                               marvell,pins = "mpp18";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_19: pmx-gpio-19 {
-                               marvell,pins = "mpp19";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_20: pmx-gpio-20 {
-                               marvell,pins = "mpp20";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_gpio_21: pmx-gpio-21 {
-                               marvell,pins = "mpp21";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_camera: pmx-camera {
-                               marvell,pins = "mpp_camera";
-                               marvell,function = "camera";
-                       };
-
-                       pmx_camera_gpio: pmx-camera-gpio {
-                               marvell,pins = "mpp_camera";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_sdio0: pmx-sdio0 {
-                               marvell,pins = "mpp_sdio0";
-                               marvell,function = "sdio0";
-                       };
-
-                       pmx_sdio0_gpio: pmx-sdio0-gpio {
-                               marvell,pins = "mpp_sdio0";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_sdio1: pmx-sdio1 {
-                               marvell,pins = "mpp_sdio1";
-                               marvell,function = "sdio1";
-                       };
-
-                       pmx_sdio1_gpio: pmx-sdio1-gpio {
-                               marvell,pins = "mpp_sdio1";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_audio1_gpio: pmx-audio1-gpio {
-                               marvell,pins = "mpp_audio1";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_spi0: pmx-spi0 {
-                               marvell,pins = "mpp_spi0";
-                               marvell,function = "spi0";
-                       };
-
-                       pmx_spi0_gpio: pmx-spi0-gpio {
-                               marvell,pins = "mpp_spi0";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_uart1: pmx-uart1 {
-                               marvell,pins = "mpp_uart1";
-                               marvell,function = "uart1";
-                       };
-
-                       pmx_uart1_gpio: pmx-uart1-gpio {
-                               marvell,pins = "mpp_uart1";
-                               marvell,function = "gpio";
-                       };
-
-                       pmx_nand: pmx-nand {
-                               marvell,pins = "mpp_nand";
-                               marvell,function = "nand";
-                       };
-
-                       pmx_nand_gpo: pmx-nand-gpo {
-                               marvell,pins = "mpp_nand";
-                               marvell,function = "gpo";
-                       };
-               };
-
-               spi0: spi-ctrl@10600 {
-                       compatible = "marvell,orion-spi";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       cell-index = <0>;
-                       interrupts = <6>;
-                       reg = <0x10600 0x28>;
-                       clocks = <&core_clk 0>;
-                       pinctrl-0 = <&pmx_spi0>;
-                       pinctrl-names = "default";
-                       status = "disabled";
-               };
-
-               spi1: spi-ctrl@14600 {
-                       compatible = "marvell,orion-spi";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       cell-index = <1>;
-                       interrupts = <5>;
-                       reg = <0x14600 0x28>;
-                       clocks = <&core_clk 0>;
-                       status = "disabled";
-               };
-
-               i2c0: i2c-ctrl@11000 {
-                       compatible = "marvell,mv64xxx-i2c";
-                       reg = <0x11000 0x20>;
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       interrupts = <11>;
-                       clock-frequency = <400000>;
-                       timeout-ms = <1000>;
-                       clocks = <&core_clk 0>;
-                       status = "disabled";
                };
 
-               ehci0: usb-host@50000 {
-                       compatible = "marvell,orion-ehci";
-                       reg = <0x50000 0x1000>;
-                       interrupts = <24>;
-                       clocks = <&gate_clk 0>;
-                       status = "okay";
-               };
-
-               ehci1: usb-host@51000 {
-                       compatible = "marvell,orion-ehci";
-                       reg = <0x51000 0x1000>;
-                       interrupts = <25>;
-                       clocks = <&gate_clk 1>;
-                       status = "okay";
-               };
-
-               sdio0: sdio-host@92000 {
-                       compatible = "marvell,dove-sdhci";
-                       reg = <0x92000 0x100>;
-                       interrupts = <35>, <37>;
-                       clocks = <&gate_clk 8>;
-                       pinctrl-0 = <&pmx_sdio0>;
-                       pinctrl-names = "default";
-                       status = "disabled";
-               };
-
-               sdio1: sdio-host@90000 {
-                       compatible = "marvell,dove-sdhci";
-                       reg = <0x90000 0x100>;
-                       interrupts = <36>, <38>;
-                       clocks = <&gate_clk 9>;
-                       pinctrl-0 = <&pmx_sdio1>;
-                       pinctrl-names = "default";
-                       status = "disabled";
-               };
-
-               sata0: sata-host@a0000 {
-                       compatible = "marvell,orion-sata";
-                       reg = <0xa0000 0x2400>;
-                       interrupts = <62>;
-                       clocks = <&gate_clk 3>;
-                       nr-ports = <1>;
-                       status = "disabled";
-               };
-
-               rtc: real-time-clock@d8500 {
-                       compatible = "marvell,orion-rtc";
-                       reg = <0xd8500 0x20>;
-               };
-
-               crypto: crypto-engine@30000 {
-                       compatible = "marvell,orion-crypto";
-                       reg = <0x30000 0x10000>,
-                             <0xc8000000 0x800>;
-                       reg-names = "regs", "sram";
-                       interrupts = <31>;
-                       clocks = <&gate_clk 15>;
-                       status = "okay";
-               };
-
-               xor0: dma-engine@60800 {
-                       compatible = "marvell,orion-xor";
-                       reg = <0x60800 0x100
-                              0x60a00 0x100>;
-                       clocks = <&gate_clk 23>;
-                       status = "okay";
-
-                       channel0 {
-                               interrupts = <39>;
-                               dmacap,memcpy;
-                               dmacap,xor;
-                       };
-
-                       channel1 {
-                               interrupts = <40>;
-                               dmacap,memset;
-                               dmacap,memcpy;
-                               dmacap,xor;
-                       };
-               };
-
-               xor1: dma-engine@60900 {
-                       compatible = "marvell,orion-xor";
-                       reg = <0x60900 0x100
-                              0x60b00 0x100>;
-                       clocks = <&gate_clk 24>;
-                       status = "okay";
-
-                       channel0 {
-                               interrupts = <42>;
-                               dmacap,memcpy;
-                               dmacap,xor;
-                       };
-
-                       channel1 {
-                               interrupts = <43>;
-                               dmacap,memset;
-                               dmacap,memcpy;
-                               dmacap,xor;
-                       };
-               };
-
-               mdio: mdio-bus@72004 {
-                       compatible = "marvell,orion-mdio";
+               internal-regs {
+                       compatible = "simple-bus";
                        #address-cells = <1>;
-                       #size-cells = <0>;
-                       reg = <0x72004 0x84>;
-                       interrupts = <30>;
-                       clocks = <&gate_clk 2>;
-                       status = "disabled";
-
-                       ethphy: ethernet-phy {
-                               device-type = "ethernet-phy";
-                               /* set phy address in board file */
-                       };
-               };
-
-               eth: ethernet-controller@72000 {
-                       compatible = "marvell,orion-eth";
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-                       reg = <0x72000 0x4000>;
-                       clocks = <&gate_clk 2>;
-                       marvell,tx-checksum-limit = <1600>;
-                       status = "disabled";
-
-                       ethernet-port@0 {
-                               device_type = "network";
-                               compatible = "marvell,orion-eth-port";
-                               reg = <0>;
-                               interrupts = <29>;
-                               /* overwrite MAC address in bootloader */
-                               local-mac-address = [00 00 00 00 00 00];
-                               phy-handle = <&ethphy>;
+                       #size-cells = <1>;
+                       ranges = <0x00000000 MBUS_ID(0xf0, 0x01) 0 0x0100000   /* MBUS regs  1M */
+                                 0x00800000 MBUS_ID(0xf0, 0x02) 0 0x1000000   /* AXI  regs 16M */
+                                 0xffffe000 MBUS_ID(0x03, 0x01) 0 0x0000800   /* CESA SRAM  2k */
+                                 0xfffff000 MBUS_ID(0x0d, 0x00) 0 0x0000800>; /* PMU  SRAM  2k */
+
+                       mbusc: mbus-ctrl@20000 {
+                               compatible = "marvell,mbus-controller";
+                               reg = <0x20000 0x80>, <0x800100 0x8>;
+                       };
+
+                       timer: timer@20300 {
+                               compatible = "marvell,orion-timer";
+                               reg = <0x20300 0x20>;
+                               interrupt-parent = <&bridge_intc>;
+                               interrupts = <1>, <2>;
+                               clocks = <&core_clk 0>;
+                       };
+
+                       intc: main-interrupt-ctrl@20200 {
+                               compatible = "marvell,orion-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x20200 0x10>, <0x20210 0x10>;
+                       };
+
+                       bridge_intc: bridge-interrupt-ctrl@20110 {
+                               compatible = "marvell,orion-bridge-intc";
+                               interrupt-controller;
+                               #interrupt-cells = <1>;
+                               reg = <0x20110 0x8>;
+                               interrupts = <0>;
+                               marvell,#interrupts = <5>;
+                       };
+
+                       core_clk: core-clocks@d0214 {
+                               compatible = "marvell,dove-core-clock";
+                               reg = <0xd0214 0x4>;
+                               #clock-cells = <1>;
+                       };
+
+                       gate_clk: clock-gating-ctrl@d0038 {
+                               compatible = "marvell,dove-gating-clock";
+                               reg = <0xd0038 0x4>;
+                               clocks = <&core_clk 0>;
+                               #clock-cells = <1>;
+                       };
+
+                       thermal: thermal-diode@d001c {
+                               compatible = "marvell,dove-thermal";
+                               reg = <0xd001c 0x0c>, <0xd005c 0x08>;
+                       };
+
+                       uart0: serial@12000 {
+                               compatible = "ns16550a";
+                               reg = <0x12000 0x100>;
+                               reg-shift = <2>;
+                               interrupts = <7>;
+                               clocks = <&core_clk 0>;
+                               status = "disabled";
+                       };
+
+                       uart1: serial@12100 {
+                               compatible = "ns16550a";
+                               reg = <0x12100 0x100>;
+                               reg-shift = <2>;
+                               interrupts = <8>;
+                               clocks = <&core_clk 0>;
+                               pinctrl-0 = <&pmx_uart1>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       uart2: serial@12200 {
+                               compatible = "ns16550a";
+                               reg = <0x12000 0x100>;
+                               reg-shift = <2>;
+                               interrupts = <9>;
+                               clocks = <&core_clk 0>;
+                               status = "disabled";
+                       };
+
+                       uart3: serial@12300 {
+                               compatible = "ns16550a";
+                               reg = <0x12100 0x100>;
+                               reg-shift = <2>;
+                               interrupts = <10>;
+                               clocks = <&core_clk 0>;
+                               status = "disabled";
+                       };
+
+                       gpio0: gpio-ctrl@d0400 {
+                               compatible = "marvell,orion-gpio";
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               reg = <0xd0400 0x20>;
+                               ngpios = <32>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupts = <12>, <13>, <14>, <60>;
+                       };
+
+                       gpio1: gpio-ctrl@d0420 {
+                               compatible = "marvell,orion-gpio";
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               reg = <0xd0420 0x20>;
+                               ngpios = <32>;
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+                               interrupts = <61>;
+                       };
+
+                       gpio2: gpio-ctrl@e8400 {
+                               compatible = "marvell,orion-gpio";
+                               #gpio-cells = <2>;
+                               gpio-controller;
+                               reg = <0xe8400 0x0c>;
+                               ngpios = <8>;
+                       };
+
+                       pinctrl: pin-ctrl@d0200 {
+                               compatible = "marvell,dove-pinctrl";
+                               reg = <0xd0200 0x10>;
+                               clocks = <&gate_clk 22>;
+
+                               pmx_gpio_0: pmx-gpio-0 {
+                                       marvell,pins = "mpp0";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_1: pmx-gpio-1 {
+                                       marvell,pins = "mpp1";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_2: pmx-gpio-2 {
+                                       marvell,pins = "mpp2";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_3: pmx-gpio-3 {
+                                       marvell,pins = "mpp3";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_4: pmx-gpio-4 {
+                                       marvell,pins = "mpp4";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_5: pmx-gpio-5 {
+                                       marvell,pins = "mpp5";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_6: pmx-gpio-6 {
+                                       marvell,pins = "mpp6";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_7: pmx-gpio-7 {
+                                       marvell,pins = "mpp7";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_8: pmx-gpio-8 {
+                                       marvell,pins = "mpp8";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_9: pmx-gpio-9 {
+                                       marvell,pins = "mpp9";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_10: pmx-gpio-10 {
+                                       marvell,pins = "mpp10";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_11: pmx-gpio-11 {
+                                       marvell,pins = "mpp11";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_12: pmx-gpio-12 {
+                                       marvell,pins = "mpp12";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_13: pmx-gpio-13 {
+                                       marvell,pins = "mpp13";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_audio1_extclk: pmx-audio1-extclk {
+                                       marvell,pins = "mpp13";
+                                       marvell,function = "audio1";
+                               };
+
+                               pmx_gpio_14: pmx-gpio-14 {
+                                       marvell,pins = "mpp14";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_15: pmx-gpio-15 {
+                                       marvell,pins = "mpp15";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_16: pmx-gpio-16 {
+                                       marvell,pins = "mpp16";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_17: pmx-gpio-17 {
+                                       marvell,pins = "mpp17";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_18: pmx-gpio-18 {
+                                       marvell,pins = "mpp18";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_19: pmx-gpio-19 {
+                                       marvell,pins = "mpp19";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_20: pmx-gpio-20 {
+                                       marvell,pins = "mpp20";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_gpio_21: pmx-gpio-21 {
+                                       marvell,pins = "mpp21";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_camera: pmx-camera {
+                                       marvell,pins = "mpp_camera";
+                                       marvell,function = "camera";
+                               };
+
+                               pmx_camera_gpio: pmx-camera-gpio {
+                                       marvell,pins = "mpp_camera";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_sdio0: pmx-sdio0 {
+                                       marvell,pins = "mpp_sdio0";
+                                       marvell,function = "sdio0";
+                               };
+
+                               pmx_sdio0_gpio: pmx-sdio0-gpio {
+                                       marvell,pins = "mpp_sdio0";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_sdio1: pmx-sdio1 {
+                                       marvell,pins = "mpp_sdio1";
+                                       marvell,function = "sdio1";
+                               };
+
+                               pmx_sdio1_gpio: pmx-sdio1-gpio {
+                                       marvell,pins = "mpp_sdio1";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_audio1_gpio: pmx-audio1-gpio {
+                                       marvell,pins = "mpp_audio1";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_audio1_i2s1_spdifo: pmx-audio1-i2s1-spdifo {
+                                       marvell,pins = "mpp_audio1";
+                                       marvell,function = "i2s1/spdifo";
+                               };
+
+                               pmx_spi0: pmx-spi0 {
+                                       marvell,pins = "mpp_spi0";
+                                       marvell,function = "spi0";
+                               };
+
+                               pmx_spi0_gpio: pmx-spi0-gpio {
+                                       marvell,pins = "mpp_spi0";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_uart1: pmx-uart1 {
+                                       marvell,pins = "mpp_uart1";
+                                       marvell,function = "uart1";
+                               };
+
+                               pmx_uart1_gpio: pmx-uart1-gpio {
+                                       marvell,pins = "mpp_uart1";
+                                       marvell,function = "gpio";
+                               };
+
+                               pmx_nand: pmx-nand {
+                                       marvell,pins = "mpp_nand";
+                                       marvell,function = "nand";
+                               };
+
+                               pmx_nand_gpo: pmx-nand-gpo {
+                                       marvell,pins = "mpp_nand";
+                                       marvell,function = "gpo";
+                               };
+                       };
+
+                       spi0: spi-ctrl@10600 {
+                               compatible = "marvell,orion-spi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               cell-index = <0>;
+                               interrupts = <6>;
+                               reg = <0x10600 0x28>;
+                               clocks = <&core_clk 0>;
+                               pinctrl-0 = <&pmx_spi0>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       spi1: spi-ctrl@14600 {
+                               compatible = "marvell,orion-spi";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               cell-index = <1>;
+                               interrupts = <5>;
+                               reg = <0x14600 0x28>;
+                               clocks = <&core_clk 0>;
+                               status = "disabled";
+                       };
+
+                       i2c0: i2c-ctrl@11000 {
+                               compatible = "marvell,mv64xxx-i2c";
+                               reg = <0x11000 0x20>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               interrupts = <11>;
+                               clock-frequency = <400000>;
+                               timeout-ms = <1000>;
+                               clocks = <&core_clk 0>;
+                               status = "disabled";
+                       };
+
+                       ehci0: usb-host@50000 {
+                               compatible = "marvell,orion-ehci";
+                               reg = <0x50000 0x1000>;
+                               interrupts = <24>;
+                               clocks = <&gate_clk 0>;
+                               status = "okay";
+                       };
+
+                       ehci1: usb-host@51000 {
+                               compatible = "marvell,orion-ehci";
+                               reg = <0x51000 0x1000>;
+                               interrupts = <25>;
+                               clocks = <&gate_clk 1>;
+                               status = "okay";
+                       };
+
+                       sdio0: sdio-host@92000 {
+                               compatible = "marvell,dove-sdhci";
+                               reg = <0x92000 0x100>;
+                               interrupts = <35>, <37>;
+                               clocks = <&gate_clk 8>;
+                               pinctrl-0 = <&pmx_sdio0>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       sdio1: sdio-host@90000 {
+                               compatible = "marvell,dove-sdhci";
+                               reg = <0x90000 0x100>;
+                               interrupts = <36>, <38>;
+                               clocks = <&gate_clk 9>;
+                               pinctrl-0 = <&pmx_sdio1>;
+                               pinctrl-names = "default";
+                               status = "disabled";
+                       };
+
+                       sata0: sata-host@a0000 {
+                               compatible = "marvell,orion-sata";
+                               reg = <0xa0000 0x2400>;
+                               interrupts = <62>;
+                               clocks = <&gate_clk 3>;
+                               nr-ports = <1>;
+                               status = "disabled";
+                       };
+
+                       rtc: real-time-clock@d8500 {
+                               compatible = "marvell,orion-rtc";
+                               reg = <0xd8500 0x20>;
+                       };
+
+                       crypto: crypto-engine@30000 {
+                               compatible = "marvell,orion-crypto";
+                               reg = <0x30000 0x10000>,
+                                     <0xffffe000 0x800>;
+                               reg-names = "regs", "sram";
+                               interrupts = <31>;
+                               clocks = <&gate_clk 15>;
+                               status = "okay";
+                       };
+
+                       xor0: dma-engine@60800 {
+                               compatible = "marvell,orion-xor";
+                               reg = <0x60800 0x100
+                                      0x60a00 0x100>;
+                               clocks = <&gate_clk 23>;
+                               status = "okay";
+
+                               channel0 {
+                                       interrupts = <39>;
+                                       dmacap,memcpy;
+                                       dmacap,xor;
+                               };
+
+                               channel1 {
+                                       interrupts = <40>;
+                                       dmacap,memcpy;
+                                       dmacap,xor;
+                               };
+                       };
+
+                       xor1: dma-engine@60900 {
+                               compatible = "marvell,orion-xor";
+                               reg = <0x60900 0x100
+                                      0x60b00 0x100>;
+                               clocks = <&gate_clk 24>;
+                               status = "okay";
+
+                               channel0 {
+                                       interrupts = <42>;
+                                       dmacap,memcpy;
+                                       dmacap,xor;
+                               };
+
+                               channel1 {
+                                       interrupts = <43>;
+                                       dmacap,memcpy;
+                                       dmacap,xor;
+                               };
+                       };
+
+                       mdio: mdio-bus@72004 {
+                               compatible = "marvell,orion-mdio";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x72004 0x84>;
+                               interrupts = <30>;
+                               clocks = <&gate_clk 2>;
+                               status = "disabled";
+
+                               ethphy: ethernet-phy {
+                                       device-type = "ethernet-phy";
+                                       /* set phy address in board file */
+                               };
+                       };
+
+                       eth: ethernet-ctrl@72000 {
+                               compatible = "marvell,orion-eth";
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               reg = <0x72000 0x4000>;
+                               clocks = <&gate_clk 2>;
+                               marvell,tx-checksum-limit = <1600>;
+                               status = "disabled";
+
+                               ethernet-port@0 {
+                                       device_type = "network";
+                                       compatible = "marvell,orion-eth-port";
+                                       reg = <0>;
+                                       interrupts = <29>;
+                                       /* overwrite MAC address in bootloader */
+                                       local-mac-address = [00 00 00 00 00 00];
+                                       phy-handle = <&ethphy>;
+                               };
+                       };
+
+                       audio0: audio-controller@b0000 {
+                               compatible = "marvell,dove-audio";
+                               reg = <0xb0000 0x2210>;
+                               interrupts = <19>, <20>;
+                               clocks = <&gate_clk 12>;
+                               clock-names = "internal";
+                               status = "disabled";
+                       };
+
+                       audio1: audio-controller@b4000 {
+                               compatible = "marvell,dove-audio";
+                               reg = <0xb4000 0x2210>;
+                               interrupts = <21>, <22>;
+                               clocks = <&gate_clk 13>;
+                               clock-names = "internal";
+                               status = "disabled";
                        };
                };
        };
diff --git a/arch/arm/boot/dts/dra7-evm.dts b/arch/arm/boot/dts/dra7-evm.dts
new file mode 100644 (file)
index 0000000..5babba0
--- /dev/null
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "dra7.dtsi"
+
+/ {
+       model = "TI DRA7";
+       compatible = "ti,dra7-evm", "ti,dra752", "ti,dra7";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x60000000>; /* 1536 MB */
+       };
+
+       mmc2_3v3: fixedregulator-mmc2 {
+               compatible = "regulator-fixed";
+               regulator-name = "mmc2_3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&dra7_pmx_core {
+       i2c1_pins: pinmux_i2c1_pins {
+               pinctrl-single,pins = <
+                       0x400 (PIN_INPUT | MUX_MODE0) /* i2c1_sda */
+                       0x404 (PIN_INPUT | MUX_MODE0) /* i2c1_scl */
+               >;
+       };
+
+       i2c2_pins: pinmux_i2c2_pins {
+               pinctrl-single,pins = <
+                       0x408 (PIN_INPUT | MUX_MODE0) /* i2c2_sda */
+                       0x40c (PIN_INPUT | MUX_MODE0) /* i2c2_scl */
+               >;
+       };
+
+       i2c3_pins: pinmux_i2c3_pins {
+               pinctrl-single,pins = <
+                       0x410 (PIN_INPUT | MUX_MODE0) /* i2c3_sda */
+                       0x414 (PIN_INPUT | MUX_MODE0) /* i2c3_scl */
+               >;
+       };
+
+       mcspi1_pins: pinmux_mcspi1_pins {
+               pinctrl-single,pins = <
+                       0x3a4 (PIN_INPUT | MUX_MODE0) /* spi2_clk */
+                       0x3a8 (PIN_INPUT | MUX_MODE0) /* spi2_d1 */
+                       0x3ac (PIN_INPUT | MUX_MODE0) /* spi2_d0 */
+                       0x3b0 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs0 */
+                       0x3b4 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs1 */
+                       0x3b8 (PIN_INPUT_SLEW | MUX_MODE6) /* spi2_cs2 */
+                       0x3bc (PIN_INPUT_SLEW | MUX_MODE6) /* spi2_cs3 */
+               >;
+       };
+
+       mcspi2_pins: pinmux_mcspi2_pins {
+               pinctrl-single,pins = <
+                       0x3c0 (PIN_INPUT | MUX_MODE0) /* spi2_sclk */
+                       0x3c4 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_d1 */
+                       0x3c8 (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_d1 */
+                       0x3cc (PIN_INPUT_SLEW | MUX_MODE0) /* spi2_cs0 */
+               >;
+       };
+
+       uart1_pins: pinmux_uart1_pins {
+               pinctrl-single,pins = <
+                       0x3e0 (PIN_INPUT_SLEW | MUX_MODE0) /* uart1_rxd */
+                       0x3e4 (PIN_INPUT_SLEW | MUX_MODE0) /* uart1_txd */
+                       0x3e8 (PIN_INPUT | MUX_MODE3) /* uart1_ctsn */
+                       0x3ec (PIN_INPUT | MUX_MODE3) /* uart1_rtsn */
+               >;
+       };
+
+       uart2_pins: pinmux_uart2_pins {
+               pinctrl-single,pins = <
+                       0x3f0 (PIN_INPUT | MUX_MODE0) /* uart2_rxd */
+                       0x3f4 (PIN_INPUT | MUX_MODE0) /* uart2_txd */
+                       0x3f8 (PIN_INPUT | MUX_MODE0) /* uart2_ctsn */
+                       0x3fc (PIN_INPUT | MUX_MODE0) /* uart2_rtsn */
+               >;
+       };
+
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+                       0x248 (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_rxd */
+                       0x24c (PIN_INPUT_SLEW | MUX_MODE0) /* uart3_txd */
+               >;
+       };
+};
+
+&i2c1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+       clock-frequency = <400000>;
+
+       tps659038: tps659038@58 {
+               compatible = "ti,tps659038";
+               reg = <0x58>;
+
+               tps659038_pmic {
+                       compatible = "ti,tps659038-pmic";
+
+                       regulators {
+                               smps123_reg: smps123 {
+                                       /* VDD_MPU */
+                                       regulator-name = "smps123";
+                                       regulator-min-microvolt = < 850000>;
+                                       regulator-max-microvolt = <1250000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               smps45_reg: smps45 {
+                                       /* VDD_DSPEVE */
+                                       regulator-name = "smps45";
+                                       regulator-min-microvolt = < 850000>;
+                                       regulator-max-microvolt = <1150000>;
+                                       regulator-boot-on;
+                               };
+
+                               smps6_reg: smps6 {
+                                       /* VDD_GPU - over VDD_SMPS6 */
+                                       regulator-name = "smps6";
+                                       regulator-min-microvolt = <850000>;
+                                       regulator-max-microvolt = <12500000>;
+                                       regulator-boot-on;
+                               };
+
+                               smps7_reg: smps7 {
+                                       /* CORE_VDD */
+                                       regulator-name = "smps7";
+                                       regulator-min-microvolt = <850000>;
+                                       regulator-max-microvolt = <1030000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               smps8_reg: smps8 {
+                                       /* VDD_IVAHD */
+                                       regulator-name = "smps8";
+                                       regulator-min-microvolt = < 850000>;
+                                       regulator-max-microvolt = <1250000>;
+                                       regulator-boot-on;
+                               };
+
+                               smps9_reg: smps9 {
+                                       /* VDDS1V8 */
+                                       regulator-name = "smps9";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               ldo1_reg: ldo1 {
+                                       /* LDO1_OUT --> SDIO  */
+                                       regulator-name = "ldo1";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo2_reg: ldo2 {
+                                       /* VDD_RTCIO */
+                                       /* LDO2 -> VDDSHV5, LDO2 also goes to CAN_PHY_3V3 */
+                                       regulator-name = "ldo2";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo3_reg: ldo3 {
+                                       /* VDDA_1V8_PHY */
+                                       regulator-name = "ldo3";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldo9_reg: ldo9 {
+                                       /* VDD_RTC */
+                                       regulator-name = "ldo9";
+                                       regulator-min-microvolt = <1050000>;
+                                       regulator-max-microvolt = <1050000>;
+                                       regulator-boot-on;
+                               };
+
+                               ldoln_reg: ldoln {
+                                       /* VDDA_1V8_PLL */
+                                       regulator-name = "ldoln";
+                                       regulator-min-microvolt = <1800000>;
+                                       regulator-max-microvolt = <1800000>;
+                                       regulator-always-on;
+                                       regulator-boot-on;
+                               };
+
+                               ldousb_reg: ldousb {
+                                       /* VDDA_3V_USB: VDDA_USBHS33 */
+                                       regulator-name = "ldousb";
+                                       regulator-min-microvolt = <3300000>;
+                                       regulator-max-microvolt = <3300000>;
+                                       regulator-boot-on;
+                               };
+                       };
+               };
+       };
+};
+
+&i2c2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c3_pins>;
+       clock-frequency = <3400000>;
+};
+
+&mcspi1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcspi1_pins>;
+};
+
+&mcspi2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mcspi2_pins>;
+};
+
+&uart1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+};
+
+&uart2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+};
+
+&uart3 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&ldo1_reg>;
+       bus-width = <4>;
+};
+
+&mmc2 {
+       status = "okay";
+       vmmc-supply = <&mmc2_3v3>;
+       bus-width = <8>;
+};
+
+&cpu0 {
+       cpu0-supply = <&smps123_reg>;
+};
diff --git a/arch/arm/boot/dts/dra7.dtsi b/arch/arm/boot/dts/dra7.dtsi
new file mode 100644 (file)
index 0000000..d0df4c4
--- /dev/null
@@ -0,0 +1,586 @@
+/*
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ * Based on "omap4.dtsi"
+ */
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/pinctrl/dra.h>
+
+#include "skeleton.dtsi"
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       compatible = "ti,dra7xx";
+       interrupt-parent = <&gic>;
+
+       aliases {
+               i2c0 = &i2c1;
+               i2c1 = &i2c2;
+               i2c2 = &i2c3;
+               i2c3 = &i2c4;
+               i2c4 = &i2c5;
+               serial0 = &uart1;
+               serial1 = &uart2;
+               serial2 = &uart3;
+               serial3 = &uart4;
+               serial4 = &uart5;
+               serial5 = &uart6;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <0>;
+
+                       operating-points = <
+                               /* kHz    uV */
+                               1000000 1060000
+                               1176000 1160000
+                               >;
+               };
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <1>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+
+       gic: interrupt-controller@48211000 {
+               compatible = "arm,cortex-a15-gic";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               reg = <0x48211000 0x1000>,
+                     <0x48212000 0x1000>,
+                     <0x48214000 0x2000>,
+                     <0x48216000 0x2000>;
+               interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       /*
+        * The soc node represents the soc top level view. It is uses for IPs
+        * that are not memory mapped in the MPU view or for the MPU itself.
+        */
+       soc {
+               compatible = "ti,omap-infra";
+               mpu {
+                       compatible = "ti,omap5-mpu";
+                       ti,hwmods = "mpu";
+               };
+       };
+
+       /*
+        * XXX: Use a flat representation of the SOC interconnect.
+        * The real OMAP interconnect network is quite complex.
+        * Since that will not bring real advantage to represent that in DT for
+        * the moment, just use a fake OCP bus entry to represent the whole bus
+        * hierarchy.
+        */
+       ocp {
+               compatible = "ti,omap4-l3-noc", "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+               ti,hwmods = "l3_main_1", "l3_main_2";
+               reg = <0x44000000 0x2000>,
+                     <0x44800000 0x3000>;
+               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+
+               counter32k: counter@4ae04000 {
+                       compatible = "ti,omap-counter32k";
+                       reg = <0x4ae04000 0x40>;
+                       ti,hwmods = "counter_32k";
+               };
+
+               dra7_pmx_core: pinmux@4a003400 {
+                       compatible = "pinctrl-single";
+                       reg = <0x4a003400 0x0464>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       pinctrl-single,register-width = <32>;
+                       pinctrl-single,function-mask = <0x3fffffff>;
+               };
+
+               sdma: dma-controller@4a056000 {
+                       compatible = "ti,omap4430-sdma";
+                       reg = <0x4a056000 0x1000>;
+                       interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       #dma-channels = <32>;
+                       #dma-requests = <127>;
+               };
+
+               gpio1: gpio@4ae10000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x4ae10000 0x200>;
+                       interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio1";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio2: gpio@48055000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x48055000 0x200>;
+                       interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio2";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio3: gpio@48057000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x48057000 0x200>;
+                       interrupts = <GIC_SPI 31 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio3";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio4: gpio@48059000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x48059000 0x200>;
+                       interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio4";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio5: gpio@4805b000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x4805b000 0x200>;
+                       interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio5";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio6: gpio@4805d000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x4805d000 0x200>;
+                       interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio6";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio7: gpio@48051000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x48051000 0x200>;
+                       interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio7";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               gpio8: gpio@48053000 {
+                       compatible = "ti,omap4-gpio";
+                       reg = <0x48053000 0x200>;
+                       interrupts = <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "gpio8";
+                       gpio-controller;
+                       #gpio-cells = <2>;
+                       interrupt-controller;
+                       #interrupt-cells = <1>;
+               };
+
+               uart1: serial@4806a000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x4806a000 0x100>;
+                       interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart1";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart2: serial@4806c000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x4806c000 0x100>;
+                       interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart2";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart3: serial@48020000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x48020000 0x100>;
+                       interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart3";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart4: serial@4806e000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x4806e000 0x100>;
+                       interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart4";
+                       clock-frequency = <48000000>;
+                        status = "disabled";
+               };
+
+               uart5: serial@48066000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x48066000 0x100>;
+                       interrupts = <GIC_SPI 105 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart5";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart6: serial@48068000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x48068000 0x100>;
+                       interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "uart6";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart7: serial@48420000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x48420000 0x100>;
+                       ti,hwmods = "uart7";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart8: serial@48422000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x48422000 0x100>;
+                       ti,hwmods = "uart8";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart9: serial@48424000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x48424000 0x100>;
+                       ti,hwmods = "uart9";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               uart10: serial@4ae2b000 {
+                       compatible = "ti,omap4-uart";
+                       reg = <0x4ae2b000 0x100>;
+                       ti,hwmods = "uart10";
+                       clock-frequency = <48000000>;
+                       status = "disabled";
+               };
+
+               timer1: timer@4ae18000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x4ae18000 0x80>;
+                       interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer1";
+                       ti,timer-alwon;
+               };
+
+               timer2: timer@48032000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48032000 0x80>;
+                       interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer2";
+               };
+
+               timer3: timer@48034000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48034000 0x80>;
+                       interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer3";
+               };
+
+               timer4: timer@48036000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48036000 0x80>;
+                       interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer4";
+               };
+
+               timer5: timer@48820000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48820000 0x80>;
+                       interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer5";
+                       ti,timer-dsp;
+               };
+
+               timer6: timer@48822000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48822000 0x80>;
+                       interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer6";
+                       ti,timer-dsp;
+                       ti,timer-pwm;
+               };
+
+               timer7: timer@48824000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48824000 0x80>;
+                       interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer7";
+                       ti,timer-dsp;
+               };
+
+               timer8: timer@48826000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48826000 0x80>;
+                       interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer8";
+                       ti,timer-dsp;
+                       ti,timer-pwm;
+               };
+
+               timer9: timer@4803e000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x4803e000 0x80>;
+                       interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer9";
+               };
+
+               timer10: timer@48086000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48086000 0x80>;
+                       interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer10";
+               };
+
+               timer11: timer@48088000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48088000 0x80>;
+                       interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "timer11";
+                       ti,timer-pwm;
+               };
+
+               timer13: timer@48828000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x48828000 0x80>;
+                       ti,hwmods = "timer13";
+                       status = "disabled";
+               };
+
+               timer14: timer@4882a000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x4882a000 0x80>;
+                       ti,hwmods = "timer14";
+                       status = "disabled";
+               };
+
+               timer15: timer@4882c000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x4882c000 0x80>;
+                       ti,hwmods = "timer15";
+                       status = "disabled";
+               };
+
+               timer16: timer@4882e000 {
+                       compatible = "ti,omap5430-timer";
+                       reg = <0x4882e000 0x80>;
+                       ti,hwmods = "timer16";
+                       status = "disabled";
+               };
+
+               wdt2: wdt@4ae14000 {
+                       compatible = "ti,omap4-wdt";
+                       reg = <0x4ae14000 0x80>;
+                       interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "wd_timer2";
+               };
+
+               i2c1: i2c@48070000 {
+                       compatible = "ti,omap4-i2c";
+                       reg = <0x48070000 0x100>;
+                       interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "i2c1";
+                       status = "disabled";
+               };
+
+               i2c2: i2c@48072000 {
+                       compatible = "ti,omap4-i2c";
+                       reg = <0x48072000 0x100>;
+                       interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "i2c2";
+                       status = "disabled";
+               };
+
+               i2c3: i2c@48060000 {
+                       compatible = "ti,omap4-i2c";
+                       reg = <0x48060000 0x100>;
+                       interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "i2c3";
+                       status = "disabled";
+               };
+
+               i2c4: i2c@4807a000 {
+                       compatible = "ti,omap4-i2c";
+                       reg = <0x4807a000 0x100>;
+                       interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "i2c4";
+                       status = "disabled";
+               };
+
+               i2c5: i2c@4807c000 {
+                       compatible = "ti,omap4-i2c";
+                       reg = <0x4807c000 0x100>;
+                       interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "i2c5";
+                       status = "disabled";
+               };
+
+               mmc1: mmc@4809c000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x4809c000 0x400>;
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "mmc1";
+                       ti,dual-volt;
+                       ti,needs-special-reset;
+                       dmas = <&sdma 61>, <&sdma 62>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               mmc2: mmc@480b4000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x480b4000 0x400>;
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "mmc2";
+                       ti,needs-special-reset;
+                       dmas = <&sdma 47>, <&sdma 48>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               mmc3: mmc@480ad000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x480ad000 0x400>;
+                       interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "mmc3";
+                       ti,needs-special-reset;
+                       dmas = <&sdma 77>, <&sdma 78>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               mmc4: mmc@480d1000 {
+                       compatible = "ti,omap4-hsmmc";
+                       reg = <0x480d1000 0x400>;
+                       interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
+                       ti,hwmods = "mmc4";
+                       ti,needs-special-reset;
+                       dmas = <&sdma 57>, <&sdma 58>;
+                       dma-names = "tx", "rx";
+                       status = "disabled";
+               };
+
+               mcspi1: spi@48098000 {
+                       compatible = "ti,omap4-mcspi";
+                       reg = <0x48098000 0x200>;
+                       interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi1";
+                       ti,spi-num-cs = <4>;
+                       dmas = <&sdma 35>,
+                              <&sdma 36>,
+                              <&sdma 37>,
+                              <&sdma 38>,
+                              <&sdma 39>,
+                              <&sdma 40>,
+                              <&sdma 41>,
+                              <&sdma 42>;
+                       dma-names = "tx0", "rx0", "tx1", "rx1",
+                                   "tx2", "rx2", "tx3", "rx3";
+                       status = "disabled";
+               };
+
+               mcspi2: spi@4809a000 {
+                       compatible = "ti,omap4-mcspi";
+                       reg = <0x4809a000 0x200>;
+                       interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi2";
+                       ti,spi-num-cs = <2>;
+                       dmas = <&sdma 43>,
+                              <&sdma 44>,
+                              <&sdma 45>,
+                              <&sdma 46>;
+                       dma-names = "tx0", "rx0", "tx1", "rx1";
+                       status = "disabled";
+               };
+
+               mcspi3: spi@480b8000 {
+                       compatible = "ti,omap4-mcspi";
+                       reg = <0x480b8000 0x200>;
+                       interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi3";
+                       ti,spi-num-cs = <2>;
+                       dmas = <&sdma 15>, <&sdma 16>;
+                       dma-names = "tx0", "rx0";
+                       status = "disabled";
+               };
+
+               mcspi4: spi@480ba000 {
+                       compatible = "ti,omap4-mcspi";
+                       reg = <0x480ba000 0x200>;
+                       interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       ti,hwmods = "mcspi4";
+                       ti,spi-num-cs = <1>;
+                       dmas = <&sdma 70>, <&sdma 71>;
+                       dma-names = "tx0", "rx0";
+                       status = "disabled";
+               };
+       };
+};
index caadc025734210362effb5fe01b5d0d500235e6d..a73eeb5f258fba0b88e55640f6e0df220b7b1cbb 100644 (file)
                reg = <0x10000000 0x100>;
        };
 
+       mipi_phy: video-phy@10020710 {
+               compatible = "samsung,s5pv210-mipi-video-phy";
+               reg = <0x10020710 8>;
+               #phy-cells = <1>;
+       };
+
        pd_mfc: mfc-power-domain@10023C40 {
                compatible = "samsung,exynos4210-pd";
                reg = <0x10023C40 0x20>;
                        clock-names = "csis", "sclk_csis";
                        bus-width = <4>;
                        samsung,power-domain = <&pd_cam>;
+                       phys = <&mipi_phy 0>;
+                       phy-names = "csis";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        clock-names = "csis", "sclk_csis";
                        bus-width = <2>;
                        samsung,power-domain = <&pd_cam>;
+                       phys = <&mipi_phy 2>;
+                       phy-names = "csis";
                        status = "disabled";
                        #address-cells = <1>;
                        #size-cells = <0>;
index 382d8c7e290602058fd9f2609ba2d1646461da7c..d3340db030002bff384664d147b34f97ca410f02 100644 (file)
                bootargs ="root=/dev/ram0 rw ramdisk=8192 initrd=0x41000000,8M console=ttySAC2,115200 init=/linuxrc";
        };
 
-       mmc_reg: voltage-regulator {
-               compatible = "regulator-fixed";
-               regulator-name = "VMEM_VDD_2.8V";
-               regulator-min-microvolt = <2800000>;
-               regulator-max-microvolt = <2800000>;
-               gpio = <&gpx1 1 0>;
-               enable-active-high;
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mmc_reg: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "VMEM_VDD_2.8V";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       gpio = <&gpx1 1 0>;
+                       enable-active-high;
+               };
        };
 
        tmu@100C0000 {
index 8768b03702e5a14c3ebf742677a03e0b76082a42..d65984c440f6786b245275a09497670271714e90 100644 (file)
                reg = <0x0203F000 0x1000>;
        };
 
-       mmc_reg: voltage-regulator {
-               compatible = "regulator-fixed";
-               regulator-name = "VMEM_VDD_2.8V";
-               regulator-min-microvolt = <2800000>;
-               regulator-max-microvolt = <2800000>;
-               gpio = <&gpx1 1 0>;
-               enable-active-high;
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               mmc_reg: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "VMEM_VDD_2.8V";
+                       regulator-min-microvolt = <2800000>;
+                       regulator-max-microvolt = <2800000>;
+                       gpio = <&gpx1 1 0>;
+                       enable-active-high;
+               };
        };
 
        pinctrl@11000000 {
index cee55fa33731195c7230aee40480aef77361b694..684527087aa4cc2bdc8da3c3f801a1626f3d9439 100644 (file)
        };
 
        i2c@12C80000 {
-               status = "disabled";
+               samsung,i2c-sda-delay = <100>;
+               samsung,i2c-max-bus-freq = <66000>;
+               samsung,i2c-slave-addr = <0x50>;
+
+               hdmiddc@50 {
+                       compatible = "samsung,exynos4210-hdmiddc";
+                       reg = <0x50>;
+               };
        };
 
        i2c@12C90000 {
                status = "disabled";
        };
 
+       i2c@12CE0000 {
+               samsung,i2c-sda-delay = <100>;
+               samsung,i2c-max-bus-freq = <66000>;
+               samsung,i2c-slave-addr = <0x38>;
+
+               hdmiphy@38 {
+                       compatible = "samsung,exynos4212-hdmiphy";
+                       reg = <0x38>;
+               };
+       };
+
        i2c@121D0000 {
                status = "disabled";
        };
                status = "disabled";
        };
 
+       i2s0: i2s@03830000 {
+               status = "okay";
+       };
+
        spi_0: spi@12d20000 {
                status = "disabled";
        };
                #address-cells = <1>;
                #size-cells = <0>;
 
-               main_dc_reg: fixedregulator@1 {
+               main_dc_reg: regulator@0 {
                        compatible = "regulator-fixed";
+                       reg = <0>;
                        regulator-name = "MAIN_DC";
                };
 
-               mmc_reg: voltage-regulator {
+               mmc_reg: regulator@1 {
                        compatible = "regulator-fixed";
+                       reg = <1>;
                        regulator-name = "VDD_33ON_2.8V";
                        regulator-min-microvolt = <2800000>;
                        regulator-max-microvolt = <2800000>;
                        enable-active-high;
                };
 
-               reg_hdmi_en: fixedregulator@0 {
+               reg_hdmi_en: regulator@2 {
                        compatible = "regulator-fixed";
+                       reg = <2>;
                        regulator-name = "hdmi-en";
                };
        };
index 2538b329f2cea5367f1517c37673cc77d3e13d3d..f86d56760a45a0f42692f5636376c899f81edbc3 100644 (file)
                status = "okay";
        };
 
-       i2s1: i2s@12D60000 {
-               status = "disabled";
-       };
-
-       i2s2: i2s@12D70000 {
-               status = "disabled";
-       };
-
        sound {
                compatible = "samsung,smdk-wm8994";
 
index 7d7cc777ff7b76099e8de5098a4a3a044a208ca9..9db5047812f3d6c05a36643abbea0e1fb33e8195 100644 (file)
                             <1 14 0xf08>,
                             <1 11 0xf08>,
                             <1 10 0xf08>;
+               /* Unfortunately we need this since some versions of U-Boot
+                * on Exynos don't set the CNTFRQ register, so we need the
+                * value from DT.
+                */
+               clock-frequency = <24000000>;
        };
 
        mct@101C0000 {
 
        i2s0: i2s@03830000 {
                compatible = "samsung,s5pv210-i2s";
+               status = "disabled";
                reg = <0x03830000 0x100>;
                dmas = <&pdma0 10
                        &pdma0 9
 
        i2s1: i2s@12D60000 {
                compatible = "samsung,s3c6410-i2s";
+               status = "disabled";
                reg = <0x12D60000 0x100>;
                dmas = <&pdma1 12
                        &pdma1 11>;
 
        i2s2: i2s@12D70000 {
                compatible = "samsung,s3c6410-i2s";
+               status = "disabled";
                reg = <0x12D70000 0x100>;
                dmas = <&pdma0 12
                        &pdma0 11>;
                compatible = "samsung,exynos4212-hdmi";
                reg = <0x14530000 0x70000>;
                interrupts = <0 95 0>;
-               clocks = <&clock 333>, <&clock 136>, <&clock 137>,
-                               <&clock 333>, <&clock 333>;
+               clocks = <&clock 344>, <&clock 136>, <&clock 137>,
+                               <&clock 159>, <&clock 1024>;
                clock-names = "hdmi", "sclk_hdmi", "sclk_pixel",
-                               "sclk_hdmiphy", "hdmiphy";
+                               "sclk_hdmiphy", "mout_hdmi";
        };
 
        mixer {
                compatible = "samsung,exynos5250-mixer";
                reg = <0x14450000 0x10000>;
                interrupts = <0 94 0>;
+               clocks = <&clock 343>, <&clock 136>;
+               clock-names = "mixer", "sclk_hdmi";
        };
 
        dp_phy: video-phy@10040720 {
index bafba25ba7c29f44adba081b8bea245aa3d4b11a..79524c74c60354344bd9026b67614ce414ffbe31 100644 (file)
                };
        };
 
+       pinctrl@13400000 {
+               hdmi_hpd_irq: hdmi-hpd-irq {
+                       samsung,pins = "gpx3-7";
+                       samsung,pin-function = <0>;
+                       samsung,pin-pud = <1>;
+                       samsung,pin-drv = <0>;
+               };
+       };
+
+       hdmi@14530000 {
+               status = "okay";
+               hpd-gpio = <&gpx3 7 0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&hdmi_hpd_irq>;
+       };
+
+       i2c_2: i2c@12C80000 {
+               samsung,i2c-sda-delay = <100>;
+               samsung,i2c-max-bus-freq = <66000>;
+               status = "okay";
+
+               hdmiddc@50 {
+                       compatible = "samsung,exynos4210-hdmiddc";
+                       reg = <0x50>;
+               };
+       };
 };
index d537cd704e190b89faec41f3d7509d2e2cb50059..09aa06cb3d3af77be582328167c25f8735a09fb2 100644 (file)
                pinctrl2 = &pinctrl_2;
                pinctrl3 = &pinctrl_3;
                pinctrl4 = &pinctrl_4;
+               i2c0 = &i2c_0;
+               i2c1 = &i2c_1;
+               i2c2 = &i2c_2;
+               i2c3 = &i2c_3;
        };
 
        cpus {
                io-channel-ranges;
                status = "disabled";
        };
+
+       i2c_0: i2c@12C60000 {
+               compatible = "samsung,s3c2440-i2c";
+               reg = <0x12C60000 0x100>;
+               interrupts = <0 56 0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&clock 261>;
+               clock-names = "i2c";
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c0_bus>;
+               status = "disabled";
+       };
+
+       i2c_1: i2c@12C70000 {
+               compatible = "samsung,s3c2440-i2c";
+               reg = <0x12C70000 0x100>;
+               interrupts = <0 57 0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&clock 262>;
+               clock-names = "i2c";
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c1_bus>;
+               status = "disabled";
+       };
+
+       i2c_2: i2c@12C80000 {
+               compatible = "samsung,s3c2440-i2c";
+               reg = <0x12C80000 0x100>;
+               interrupts = <0 58 0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&clock 263>;
+               clock-names = "i2c";
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c2_bus>;
+               status = "disabled";
+       };
+
+       i2c_3: i2c@12C90000 {
+               compatible = "samsung,s3c2440-i2c";
+               reg = <0x12C90000 0x100>;
+               interrupts = <0 59 0>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clocks = <&clock 264>;
+               clock-names = "i2c";
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c3_bus>;
+               status = "disabled";
+       };
+
+       hdmi@14530000 {
+               compatible = "samsung,exynos4212-hdmi";
+               reg = <0x14530000 0x70000>;
+               interrupts = <0 95 0>;
+               clocks = <&clock 413>, <&clock 143>, <&clock 768>,
+                       <&clock 158>, <&clock 640>;
+               clock-names = "hdmi", "sclk_hdmi", "sclk_pixel",
+                       "sclk_hdmiphy", "mout_hdmi";
+               status = "disabled";
+       };
+
+       mixer@14450000 {
+               compatible = "samsung,exynos5420-mixer";
+               reg = <0x14450000 0x10000>;
+               interrupts = <0 94 0>;
+               clocks = <&clock 431>, <&clock 143>;
+               clock-names = "mixer", "sclk_hdmi";
+       };
 };
index 185c7c01102ad755541e420faa77ee708fdab498..1f026adefd451e594628d1855acf949f9cd7d7cf 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx23.dtsi"
+#include "imx23.dtsi"
 
 / {
        model = "Freescale i.MX23 Evaluation Kit";
                                hog_pins_a: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1123 /* MX23_PAD_LCD_RESET__GPIO_1_18 */
-                                               0x11d3 /* MX23_PAD_PWM3__GPIO_1_29 */
-                                               0x11e3 /* MX23_PAD_PWM4__GPIO_1_30 */
-                                               0x2010 /* MX23_PAD_SSP1_DETECT__SSP1_DETECT */
+                                               MX23_PAD_LCD_RESET__GPIO_1_18
+                                               MX23_PAD_PWM3__GPIO_1_29
+                                               MX23_PAD_PWM4__GPIO_1_30
+                                               MX23_PAD_SSP1_DETECT__SSP1_DETECT
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
index fc766ae12e24526fcbb5e0e79508acd3a0721f51..526bfdbd87f9f84f08747c6c045c059a657d2cbc 100644 (file)
@@ -12,7 +12,7 @@
  */
 
 /dts-v1/;
-/include/ "imx23.dtsi"
+#include "imx23.dtsi"
 
 / {
        model = "i.MX23 Olinuxino Low Cost Board";
                                hog_pins_a: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0113 /* MX23_PAD_GPMI_ALE__GPIO_0_17 */
+                                               MX23_PAD_GPMI_ALE__GPIO_0_17
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                led_pin_gpio2_1: led_gpio2_1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2013 /* MX23_PAD_SSP1_DETECT__GPIO_2_1 */
+                                               MX23_PAD_SSP1_DETECT__GPIO_2_1
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
diff --git a/arch/arm/boot/dts/imx23-pinfunc.h b/arch/arm/boot/dts/imx23-pinfunc.h
new file mode 100644 (file)
index 0000000..5c0f32c
--- /dev/null
@@ -0,0 +1,333 @@
+/*
+ * Header providing constants for i.MX23 pinctrl bindings.
+ *
+ * Copyright (C) 2013 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __DT_BINDINGS_MX23_PINCTRL_H__
+#define __DT_BINDINGS_MX23_PINCTRL_H__
+
+#include "mxs-pinfunc.h"
+
+#define MX23_PAD_GPMI_D00__GPMI_D00                    0x0000
+#define MX23_PAD_GPMI_D01__GPMI_D01                    0x0010
+#define MX23_PAD_GPMI_D02__GPMI_D02                    0x0020
+#define MX23_PAD_GPMI_D03__GPMI_D03                    0x0030
+#define MX23_PAD_GPMI_D04__GPMI_D04                    0x0040
+#define MX23_PAD_GPMI_D05__GPMI_D05                    0x0050
+#define MX23_PAD_GPMI_D06__GPMI_D06                    0x0060
+#define MX23_PAD_GPMI_D07__GPMI_D07                    0x0070
+#define MX23_PAD_GPMI_D08__GPMI_D08                    0x0080
+#define MX23_PAD_GPMI_D09__GPMI_D09                    0x0090
+#define MX23_PAD_GPMI_D10__GPMI_D10                    0x00a0
+#define MX23_PAD_GPMI_D11__GPMI_D11                    0x00b0
+#define MX23_PAD_GPMI_D12__GPMI_D12                    0x00c0
+#define MX23_PAD_GPMI_D13__GPMI_D13                    0x00d0
+#define MX23_PAD_GPMI_D14__GPMI_D14                    0x00e0
+#define MX23_PAD_GPMI_D15__GPMI_D15                    0x00f0
+#define MX23_PAD_GPMI_CLE__GPMI_CLE                    0x0100
+#define MX23_PAD_GPMI_ALE__GPMI_ALE                    0x0110
+#define MX23_PAD_GPMI_CE2N__GPMI_CE2N                  0x0120
+#define MX23_PAD_GPMI_RDY0__GPMI_RDY0                  0x0130
+#define MX23_PAD_GPMI_RDY1__GPMI_RDY1                  0x0140
+#define MX23_PAD_GPMI_RDY2__GPMI_RDY2                  0x0150
+#define MX23_PAD_GPMI_RDY3__GPMI_RDY3                  0x0160
+#define MX23_PAD_GPMI_WPN__GPMI_WPN                    0x0170
+#define MX23_PAD_GPMI_WRN__GPMI_WRN                    0x0180
+#define MX23_PAD_GPMI_RDN__GPMI_RDN                    0x0190
+#define MX23_PAD_AUART1_CTS__AUART1_CTS                        0x01a0
+#define MX23_PAD_AUART1_RTS__AUART1_RTS                        0x01b0
+#define MX23_PAD_AUART1_RX__AUART1_RX                  0x01c0
+#define MX23_PAD_AUART1_TX__AUART1_TX                  0x01d0
+#define MX23_PAD_I2C_SCL__I2C_SCL                      0x01e0
+#define MX23_PAD_I2C_SDA__I2C_SDA                      0x01f0
+#define MX23_PAD_LCD_D00__LCD_D00                      0x1000
+#define MX23_PAD_LCD_D01__LCD_D01                      0x1010
+#define MX23_PAD_LCD_D02__LCD_D02                      0x1020
+#define MX23_PAD_LCD_D03__LCD_D03                      0x1030
+#define MX23_PAD_LCD_D04__LCD_D04                      0x1040
+#define MX23_PAD_LCD_D05__LCD_D05                      0x1050
+#define MX23_PAD_LCD_D06__LCD_D06                      0x1060
+#define MX23_PAD_LCD_D07__LCD_D07                      0x1070
+#define MX23_PAD_LCD_D08__LCD_D08                      0x1080
+#define MX23_PAD_LCD_D09__LCD_D09                      0x1090
+#define MX23_PAD_LCD_D10__LCD_D10                      0x10a0
+#define MX23_PAD_LCD_D11__LCD_D11                      0x10b0
+#define MX23_PAD_LCD_D12__LCD_D12                      0x10c0
+#define MX23_PAD_LCD_D13__LCD_D13                      0x10d0
+#define MX23_PAD_LCD_D14__LCD_D14                      0x10e0
+#define MX23_PAD_LCD_D15__LCD_D15                      0x10f0
+#define MX23_PAD_LCD_D16__LCD_D16                      0x1100
+#define MX23_PAD_LCD_D17__LCD_D17                      0x1110
+#define MX23_PAD_LCD_RESET__LCD_RESET                  0x1120
+#define MX23_PAD_LCD_RS__LCD_RS                                0x1130
+#define MX23_PAD_LCD_WR__LCD_WR                                0x1140
+#define MX23_PAD_LCD_CS__LCD_CS                                0x1150
+#define MX23_PAD_LCD_DOTCK__LCD_DOTCK                  0x1160
+#define MX23_PAD_LCD_ENABLE__LCD_ENABLE                        0x1170
+#define MX23_PAD_LCD_HSYNC__LCD_HSYNC                  0x1180
+#define MX23_PAD_LCD_VSYNC__LCD_VSYNC                  0x1190
+#define MX23_PAD_PWM0__PWM0                            0x11a0
+#define MX23_PAD_PWM1__PWM1                            0x11b0
+#define MX23_PAD_PWM2__PWM2                            0x11c0
+#define MX23_PAD_PWM3__PWM3                            0x11d0
+#define MX23_PAD_PWM4__PWM4                            0x11e0
+#define MX23_PAD_SSP1_CMD__SSP1_CMD                    0x2000
+#define MX23_PAD_SSP1_DETECT__SSP1_DETECT              0x2010
+#define MX23_PAD_SSP1_DATA0__SSP1_DATA0                        0x2020
+#define MX23_PAD_SSP1_DATA1__SSP1_DATA1                        0x2030
+#define MX23_PAD_SSP1_DATA2__SSP1_DATA2                        0x2040
+#define MX23_PAD_SSP1_DATA3__SSP1_DATA3                        0x2050
+#define MX23_PAD_SSP1_SCK__SSP1_SCK                    0x2060
+#define MX23_PAD_ROTARYA__ROTARYA                      0x2070
+#define MX23_PAD_ROTARYB__ROTARYB                      0x2080
+#define MX23_PAD_EMI_A00__EMI_A00                      0x2090
+#define MX23_PAD_EMI_A01__EMI_A01                      0x20a0
+#define MX23_PAD_EMI_A02__EMI_A02                      0x20b0
+#define MX23_PAD_EMI_A03__EMI_A03                      0x20c0
+#define MX23_PAD_EMI_A04__EMI_A04                      0x20d0
+#define MX23_PAD_EMI_A05__EMI_A05                      0x20e0
+#define MX23_PAD_EMI_A06__EMI_A06                      0x20f0
+#define MX23_PAD_EMI_A07__EMI_A07                      0x2100
+#define MX23_PAD_EMI_A08__EMI_A08                      0x2110
+#define MX23_PAD_EMI_A09__EMI_A09                      0x2120
+#define MX23_PAD_EMI_A10__EMI_A10                      0x2130
+#define MX23_PAD_EMI_A11__EMI_A11                      0x2140
+#define MX23_PAD_EMI_A12__EMI_A12                      0x2150
+#define MX23_PAD_EMI_BA0__EMI_BA0                      0x2160
+#define MX23_PAD_EMI_BA1__EMI_BA1                      0x2170
+#define MX23_PAD_EMI_CASN__EMI_CASN                    0x2180
+#define MX23_PAD_EMI_CE0N__EMI_CE0N                    0x2190
+#define MX23_PAD_EMI_CE1N__EMI_CE1N                    0x21a0
+#define MX23_PAD_GPMI_CE1N__GPMI_CE1N                  0x21b0
+#define MX23_PAD_GPMI_CE0N__GPMI_CE0N                  0x21c0
+#define MX23_PAD_EMI_CKE__EMI_CKE                      0x21d0
+#define MX23_PAD_EMI_RASN__EMI_RASN                    0x21e0
+#define MX23_PAD_EMI_WEN__EMI_WEN                      0x21f0
+#define MX23_PAD_EMI_D00__EMI_D00                      0x3000
+#define MX23_PAD_EMI_D01__EMI_D01                      0x3010
+#define MX23_PAD_EMI_D02__EMI_D02                      0x3020
+#define MX23_PAD_EMI_D03__EMI_D03                      0x3030
+#define MX23_PAD_EMI_D04__EMI_D04                      0x3040
+#define MX23_PAD_EMI_D05__EMI_D05                      0x3050
+#define MX23_PAD_EMI_D06__EMI_D06                      0x3060
+#define MX23_PAD_EMI_D07__EMI_D07                      0x3070
+#define MX23_PAD_EMI_D08__EMI_D08                      0x3080
+#define MX23_PAD_EMI_D09__EMI_D09                      0x3090
+#define MX23_PAD_EMI_D10__EMI_D10                      0x30a0
+#define MX23_PAD_EMI_D11__EMI_D11                      0x30b0
+#define MX23_PAD_EMI_D12__EMI_D12                      0x30c0
+#define MX23_PAD_EMI_D13__EMI_D13                      0x30d0
+#define MX23_PAD_EMI_D14__EMI_D14                      0x30e0
+#define MX23_PAD_EMI_D15__EMI_D15                      0x30f0
+#define MX23_PAD_EMI_DQM0__EMI_DQM0                    0x3100
+#define MX23_PAD_EMI_DQM1__EMI_DQM1                    0x3110
+#define MX23_PAD_EMI_DQS0__EMI_DQS0                    0x3120
+#define MX23_PAD_EMI_DQS1__EMI_DQS1                    0x3130
+#define MX23_PAD_EMI_CLK__EMI_CLK                      0x3140
+#define MX23_PAD_EMI_CLKN__EMI_CLKN                    0x3150
+#define MX23_PAD_GPMI_D00__LCD_D8                      0x0001
+#define MX23_PAD_GPMI_D01__LCD_D9                      0x0011
+#define MX23_PAD_GPMI_D02__LCD_D10                     0x0021
+#define MX23_PAD_GPMI_D03__LCD_D11                     0x0031
+#define MX23_PAD_GPMI_D04__LCD_D12                     0x0041
+#define MX23_PAD_GPMI_D05__LCD_D13                     0x0051
+#define MX23_PAD_GPMI_D06__LCD_D14                     0x0061
+#define MX23_PAD_GPMI_D07__LCD_D15                     0x0071
+#define MX23_PAD_GPMI_D08__LCD_D18                     0x0081
+#define MX23_PAD_GPMI_D09__LCD_D19                     0x0091
+#define MX23_PAD_GPMI_D10__LCD_D20                     0x00a1
+#define MX23_PAD_GPMI_D11__LCD_D21                     0x00b1
+#define MX23_PAD_GPMI_D12__LCD_D22                     0x00c1
+#define MX23_PAD_GPMI_D13__LCD_D23                     0x00d1
+#define MX23_PAD_GPMI_D14__AUART2_RX                   0x00e1
+#define MX23_PAD_GPMI_D15__AUART2_TX                   0x00f1
+#define MX23_PAD_GPMI_CLE__LCD_D16                     0x0101
+#define MX23_PAD_GPMI_ALE__LCD_D17                     0x0111
+#define MX23_PAD_GPMI_CE2N__ATA_A2                     0x0121
+#define MX23_PAD_AUART1_RTS__IR_CLK                    0x01b1
+#define MX23_PAD_AUART1_RX__IR_RX                      0x01c1
+#define MX23_PAD_AUART1_TX__IR_TX                      0x01d1
+#define MX23_PAD_I2C_SCL__GPMI_RDY2                    0x01e1
+#define MX23_PAD_I2C_SDA__GPMI_CE2N                    0x01f1
+#define MX23_PAD_LCD_D00__ETM_DA8                      0x1001
+#define MX23_PAD_LCD_D01__ETM_DA9                      0x1011
+#define MX23_PAD_LCD_D02__ETM_DA10                     0x1021
+#define MX23_PAD_LCD_D03__ETM_DA11                     0x1031
+#define MX23_PAD_LCD_D04__ETM_DA12                     0x1041
+#define MX23_PAD_LCD_D05__ETM_DA13                     0x1051
+#define MX23_PAD_LCD_D06__ETM_DA14                     0x1061
+#define MX23_PAD_LCD_D07__ETM_DA15                     0x1071
+#define MX23_PAD_LCD_D08__ETM_DA0                      0x1081
+#define MX23_PAD_LCD_D09__ETM_DA1                      0x1091
+#define MX23_PAD_LCD_D10__ETM_DA2                      0x10a1
+#define MX23_PAD_LCD_D11__ETM_DA3                      0x10b1
+#define MX23_PAD_LCD_D12__ETM_DA4                      0x10c1
+#define MX23_PAD_LCD_D13__ETM_DA5                      0x10d1
+#define MX23_PAD_LCD_D14__ETM_DA6                      0x10e1
+#define MX23_PAD_LCD_D15__ETM_DA7                      0x10f1
+#define MX23_PAD_LCD_RESET__ETM_TCTL                   0x1121
+#define MX23_PAD_LCD_RS__ETM_TCLK                      0x1131
+#define MX23_PAD_LCD_DOTCK__GPMI_RDY3                  0x1161
+#define MX23_PAD_LCD_ENABLE__I2C_SCL                   0x1171
+#define MX23_PAD_LCD_HSYNC__I2C_SDA                    0x1181
+#define MX23_PAD_LCD_VSYNC__LCD_BUSY                   0x1191
+#define MX23_PAD_PWM0__ROTARYA                         0x11a1
+#define MX23_PAD_PWM1__ROTARYB                         0x11b1
+#define MX23_PAD_PWM2__GPMI_RDY3                       0x11c1
+#define MX23_PAD_PWM3__ETM_TCTL                                0x11d1
+#define MX23_PAD_PWM4__ETM_TCLK                                0x11e1
+#define MX23_PAD_SSP1_DETECT__GPMI_CE3N                        0x2011
+#define MX23_PAD_SSP1_DATA1__I2C_SCL                   0x2031
+#define MX23_PAD_SSP1_DATA2__I2C_SDA                   0x2041
+#define MX23_PAD_ROTARYA__AUART2_RTS                   0x2071
+#define MX23_PAD_ROTARYB__AUART2_CTS                   0x2081
+#define MX23_PAD_GPMI_D00__SSP2_DATA0                  0x0002
+#define MX23_PAD_GPMI_D01__SSP2_DATA1                  0x0012
+#define MX23_PAD_GPMI_D02__SSP2_DATA2                  0x0022
+#define MX23_PAD_GPMI_D03__SSP2_DATA3                  0x0032
+#define MX23_PAD_GPMI_D04__SSP2_DATA4                  0x0042
+#define MX23_PAD_GPMI_D05__SSP2_DATA5                  0x0052
+#define MX23_PAD_GPMI_D06__SSP2_DATA6                  0x0062
+#define MX23_PAD_GPMI_D07__SSP2_DATA7                  0x0072
+#define MX23_PAD_GPMI_D08__SSP1_DATA4                  0x0082
+#define MX23_PAD_GPMI_D09__SSP1_DATA5                  0x0092
+#define MX23_PAD_GPMI_D10__SSP1_DATA6                  0x00a2
+#define MX23_PAD_GPMI_D11__SSP1_DATA7                  0x00b2
+#define MX23_PAD_GPMI_D15__GPMI_CE3N                   0x00f2
+#define MX23_PAD_GPMI_RDY0__SSP2_DETECT                        0x0132
+#define MX23_PAD_GPMI_RDY1__SSP2_CMD                   0x0142
+#define MX23_PAD_GPMI_WRN__SSP2_SCK                    0x0182
+#define MX23_PAD_AUART1_CTS__SSP1_DATA4                        0x01a2
+#define MX23_PAD_AUART1_RTS__SSP1_DATA5                        0x01b2
+#define MX23_PAD_AUART1_RX__SSP1_DATA6                 0x01c2
+#define MX23_PAD_AUART1_TX__SSP1_DATA7                 0x01d2
+#define MX23_PAD_I2C_SCL__AUART1_TX                    0x01e2
+#define MX23_PAD_I2C_SDA__AUART1_RX                    0x01f2
+#define MX23_PAD_LCD_D08__SAIF2_SDATA0                 0x1082
+#define MX23_PAD_LCD_D09__SAIF1_SDATA0                 0x1092
+#define MX23_PAD_LCD_D10__SAIF_MCLK_BITCLK             0x10a2
+#define MX23_PAD_LCD_D11__SAIF_LRCLK                   0x10b2
+#define MX23_PAD_LCD_D12__SAIF2_SDATA1                 0x10c2
+#define MX23_PAD_LCD_D13__SAIF2_SDATA2                 0x10d2
+#define MX23_PAD_LCD_D14__SAIF1_SDATA2                 0x10e2
+#define MX23_PAD_LCD_D15__SAIF1_SDATA1                 0x10f2
+#define MX23_PAD_LCD_D16__SAIF_ALT_BITCLK              0x1102
+#define MX23_PAD_LCD_RESET__GPMI_CE3N                  0x1122
+#define MX23_PAD_PWM0__DUART_RX                                0x11a2
+#define MX23_PAD_PWM1__DUART_TX                                0x11b2
+#define MX23_PAD_PWM3__AUART1_CTS                      0x11d2
+#define MX23_PAD_PWM4__AUART1_RTS                      0x11e2
+#define MX23_PAD_SSP1_CMD__JTAG_TDO                    0x2002
+#define MX23_PAD_SSP1_DETECT__USB_OTG_ID               0x2012
+#define MX23_PAD_SSP1_DATA0__JTAG_TDI                  0x2022
+#define MX23_PAD_SSP1_DATA1__JTAG_TCLK                 0x2032
+#define MX23_PAD_SSP1_DATA2__JTAG_RTCK                 0x2042
+#define MX23_PAD_SSP1_DATA3__JTAG_TMS                  0x2052
+#define MX23_PAD_SSP1_SCK__JTAG_TRST                   0x2062
+#define MX23_PAD_ROTARYA__SPDIF                                0x2072
+#define MX23_PAD_ROTARYB__GPMI_CE3N                    0x2082
+#define MX23_PAD_GPMI_D00__GPIO_0_0                    0x0003
+#define MX23_PAD_GPMI_D01__GPIO_0_1                    0x0013
+#define MX23_PAD_GPMI_D02__GPIO_0_2                    0x0023
+#define MX23_PAD_GPMI_D03__GPIO_0_3                    0x0033
+#define MX23_PAD_GPMI_D04__GPIO_0_4                    0x0043
+#define MX23_PAD_GPMI_D05__GPIO_0_5                    0x0053
+#define MX23_PAD_GPMI_D06__GPIO_0_6                    0x0063
+#define MX23_PAD_GPMI_D07__GPIO_0_7                    0x0073
+#define MX23_PAD_GPMI_D08__GPIO_0_8                    0x0083
+#define MX23_PAD_GPMI_D09__GPIO_0_9                    0x0093
+#define MX23_PAD_GPMI_D10__GPIO_0_10                   0x00a3
+#define MX23_PAD_GPMI_D11__GPIO_0_11                   0x00b3
+#define MX23_PAD_GPMI_D12__GPIO_0_12                   0x00c3
+#define MX23_PAD_GPMI_D13__GPIO_0_13                   0x00d3
+#define MX23_PAD_GPMI_D14__GPIO_0_14                   0x00e3
+#define MX23_PAD_GPMI_D15__GPIO_0_15                   0x00f3
+#define MX23_PAD_GPMI_CLE__GPIO_0_16                   0x0103
+#define MX23_PAD_GPMI_ALE__GPIO_0_17                   0x0113
+#define MX23_PAD_GPMI_CE2N__GPIO_0_18                  0x0123
+#define MX23_PAD_GPMI_RDY0__GPIO_0_19                  0x0133
+#define MX23_PAD_GPMI_RDY1__GPIO_0_20                  0x0143
+#define MX23_PAD_GPMI_RDY2__GPIO_0_21                  0x0153
+#define MX23_PAD_GPMI_RDY3__GPIO_0_22                  0x0163
+#define MX23_PAD_GPMI_WPN__GPIO_0_23                   0x0173
+#define MX23_PAD_GPMI_WRN__GPIO_0_24                   0x0183
+#define MX23_PAD_GPMI_RDN__GPIO_0_25                   0x0193
+#define MX23_PAD_AUART1_CTS__GPIO_0_26                 0x01a3
+#define MX23_PAD_AUART1_RTS__GPIO_0_27                 0x01b3
+#define MX23_PAD_AUART1_RX__GPIO_0_28                  0x01c3
+#define MX23_PAD_AUART1_TX__GPIO_0_29                  0x01d3
+#define MX23_PAD_I2C_SCL__GPIO_0_30                    0x01e3
+#define MX23_PAD_I2C_SDA__GPIO_0_31                    0x01f3
+#define MX23_PAD_LCD_D00__GPIO_1_0                     0x1003
+#define MX23_PAD_LCD_D01__GPIO_1_1                     0x1013
+#define MX23_PAD_LCD_D02__GPIO_1_2                     0x1023
+#define MX23_PAD_LCD_D03__GPIO_1_3                     0x1033
+#define MX23_PAD_LCD_D04__GPIO_1_4                     0x1043
+#define MX23_PAD_LCD_D05__GPIO_1_5                     0x1053
+#define MX23_PAD_LCD_D06__GPIO_1_6                     0x1063
+#define MX23_PAD_LCD_D07__GPIO_1_7                     0x1073
+#define MX23_PAD_LCD_D08__GPIO_1_8                     0x1083
+#define MX23_PAD_LCD_D09__GPIO_1_9                     0x1093
+#define MX23_PAD_LCD_D10__GPIO_1_10                    0x10a3
+#define MX23_PAD_LCD_D11__GPIO_1_11                    0x10b3
+#define MX23_PAD_LCD_D12__GPIO_1_12                    0x10c3
+#define MX23_PAD_LCD_D13__GPIO_1_13                    0x10d3
+#define MX23_PAD_LCD_D14__GPIO_1_14                    0x10e3
+#define MX23_PAD_LCD_D15__GPIO_1_15                    0x10f3
+#define MX23_PAD_LCD_D16__GPIO_1_16                    0x1103
+#define MX23_PAD_LCD_D17__GPIO_1_17                    0x1113
+#define MX23_PAD_LCD_RESET__GPIO_1_18                  0x1123
+#define MX23_PAD_LCD_RS__GPIO_1_19                     0x1133
+#define MX23_PAD_LCD_WR__GPIO_1_20                     0x1143
+#define MX23_PAD_LCD_CS__GPIO_1_21                     0x1153
+#define MX23_PAD_LCD_DOTCK__GPIO_1_22                  0x1163
+#define MX23_PAD_LCD_ENABLE__GPIO_1_23                 0x1173
+#define MX23_PAD_LCD_HSYNC__GPIO_1_24                  0x1183
+#define MX23_PAD_LCD_VSYNC__GPIO_1_25                  0x1193
+#define MX23_PAD_PWM0__GPIO_1_26                       0x11a3
+#define MX23_PAD_PWM1__GPIO_1_27                       0x11b3
+#define MX23_PAD_PWM2__GPIO_1_28                       0x11c3
+#define MX23_PAD_PWM3__GPIO_1_29                       0x11d3
+#define MX23_PAD_PWM4__GPIO_1_30                       0x11e3
+#define MX23_PAD_SSP1_CMD__GPIO_2_0                    0x2003
+#define MX23_PAD_SSP1_DETECT__GPIO_2_1                 0x2013
+#define MX23_PAD_SSP1_DATA0__GPIO_2_2                  0x2023
+#define MX23_PAD_SSP1_DATA1__GPIO_2_3                  0x2033
+#define MX23_PAD_SSP1_DATA2__GPIO_2_4                  0x2043
+#define MX23_PAD_SSP1_DATA3__GPIO_2_5                  0x2053
+#define MX23_PAD_SSP1_SCK__GPIO_2_6                    0x2063
+#define MX23_PAD_ROTARYA__GPIO_2_7                     0x2073
+#define MX23_PAD_ROTARYB__GPIO_2_8                     0x2083
+#define MX23_PAD_EMI_A00__GPIO_2_9                     0x2093
+#define MX23_PAD_EMI_A01__GPIO_2_10                    0x20a3
+#define MX23_PAD_EMI_A02__GPIO_2_11                    0x20b3
+#define MX23_PAD_EMI_A03__GPIO_2_12                    0x20c3
+#define MX23_PAD_EMI_A04__GPIO_2_13                    0x20d3
+#define MX23_PAD_EMI_A05__GPIO_2_14                    0x20e3
+#define MX23_PAD_EMI_A06__GPIO_2_15                    0x20f3
+#define MX23_PAD_EMI_A07__GPIO_2_16                    0x2103
+#define MX23_PAD_EMI_A08__GPIO_2_17                    0x2113
+#define MX23_PAD_EMI_A09__GPIO_2_18                    0x2123
+#define MX23_PAD_EMI_A10__GPIO_2_19                    0x2133
+#define MX23_PAD_EMI_A11__GPIO_2_20                    0x2143
+#define MX23_PAD_EMI_A12__GPIO_2_21                    0x2153
+#define MX23_PAD_EMI_BA0__GPIO_2_22                    0x2163
+#define MX23_PAD_EMI_BA1__GPIO_2_23                    0x2173
+#define MX23_PAD_EMI_CASN__GPIO_2_24                   0x2183
+#define MX23_PAD_EMI_CE0N__GPIO_2_25                   0x2193
+#define MX23_PAD_EMI_CE1N__GPIO_2_26                   0x21a3
+#define MX23_PAD_GPMI_CE1N__GPIO_2_27                  0x21b3
+#define MX23_PAD_GPMI_CE0N__GPIO_2_28                  0x21c3
+#define MX23_PAD_EMI_CKE__GPIO_2_29                    0x21d3
+#define MX23_PAD_EMI_RASN__GPIO_2_30                   0x21e3
+#define MX23_PAD_EMI_WEN__GPIO_2_31                    0x21f3
+
+#endif /* __DT_BINDINGS_MX23_PINCTRL_H__ */
index 85c3864b6a56a92de2a85d52ddb35bcc1ce15c4f..cb64e2b191ea1ae48098c1c79ced4afe6f57b521 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx23.dtsi"
+#include "imx23.dtsi"
 
 / {
        model = "Freescale STMP378x Development Board";
                                hog_pins_a: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x11d3 /* MX23_PAD_PWM3__GPIO_1_29 */
-                                               0x11e3 /* MX23_PAD_PWM4__GPIO_1_30 */
+                                               MX23_PAD_PWM3__GPIO_1_29
+                                               MX23_PAD_PWM4__GPIO_1_30
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
                };
index 28b5ce289662b8c74955ecb38e023a6b773cb7b0..87faa6e8b6e7024dceb01c86f2c00aa10a882180 100644 (file)
@@ -9,7 +9,8 @@
  * http://www.gnu.org/copyleft/gpl.html
  */
 
-/include/ "skeleton.dtsi"
+#include "skeleton.dtsi"
+#include "imx23-pinfunc.h"
 
 / {
        interrupt-parent = <&icoll>;
                                duart_pins_a: duart@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x11a2 /* MX23_PAD_PWM0__DUART_RX */
-                                               0x11b2 /* MX23_PAD_PWM1__DUART_TX */
+                                               MX23_PAD_PWM0__DUART_RX
+                                               MX23_PAD_PWM1__DUART_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart0_pins_a: auart0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x01c0 /* MX23_PAD_AUART1_RX__AUART1_RX */
-                                               0x01d0 /* MX23_PAD_AUART1_TX__AUART1_TX */
-                                               0x01a0 /* MX23_PAD_AUART1_CTS__AUART1_CTS */
-                                               0x01b0 /* MX23_PAD_AUART1_RTS__AUART1_RTS */
+                                               MX23_PAD_AUART1_RX__AUART1_RX
+                                               MX23_PAD_AUART1_TX__AUART1_TX
+                                               MX23_PAD_AUART1_CTS__AUART1_CTS
+                                               MX23_PAD_AUART1_RTS__AUART1_RTS
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart0_2pins_a: auart0-2pins@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x01e2 /* MX23_PAD_I2C_SCL__AUART1_TX */
-                                               0x01f2 /* MX23_PAD_I2C_SDA__AUART1_RX */
+                                               MX23_PAD_I2C_SCL__AUART1_TX
+                                               MX23_PAD_I2C_SDA__AUART1_RX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                gpmi_pins_a: gpmi-nand@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0000 /* MX23_PAD_GPMI_D00__GPMI_D00 */
-                                               0x0010 /* MX23_PAD_GPMI_D01__GPMI_D01 */
-                                               0x0020 /* MX23_PAD_GPMI_D02__GPMI_D02 */
-                                               0x0030 /* MX23_PAD_GPMI_D03__GPMI_D03 */
-                                               0x0040 /* MX23_PAD_GPMI_D04__GPMI_D04 */
-                                               0x0050 /* MX23_PAD_GPMI_D05__GPMI_D05 */
-                                               0x0060 /* MX23_PAD_GPMI_D06__GPMI_D06 */
-                                               0x0070 /* MX23_PAD_GPMI_D07__GPMI_D07 */
-                                               0x0100 /* MX23_PAD_GPMI_CLE__GPMI_CLE */
-                                               0x0110 /* MX23_PAD_GPMI_ALE__GPMI_ALE */
-                                               0x0130 /* MX23_PAD_GPMI_RDY0__GPMI_RDY0 */
-                                               0x0140 /* MX23_PAD_GPMI_RDY1__GPMI_RDY1 */
-                                               0x0170 /* MX23_PAD_GPMI_WPN__GPMI_WPN */
-                                               0x0180 /* MX23_PAD_GPMI_WRN__GPMI_WRN */
-                                               0x0190 /* MX23_PAD_GPMI_RDN__GPMI_RDN */
-                                               0x21b0 /* MX23_PAD_GPMI_CE1N__GPMI_CE1N */
-                                               0x21c0 /* MX23_PAD_GPMI_CE0N__GPMI_CE0N */
+                                               MX23_PAD_GPMI_D00__GPMI_D00
+                                               MX23_PAD_GPMI_D01__GPMI_D01
+                                               MX23_PAD_GPMI_D02__GPMI_D02
+                                               MX23_PAD_GPMI_D03__GPMI_D03
+                                               MX23_PAD_GPMI_D04__GPMI_D04
+                                               MX23_PAD_GPMI_D05__GPMI_D05
+                                               MX23_PAD_GPMI_D06__GPMI_D06
+                                               MX23_PAD_GPMI_D07__GPMI_D07
+                                               MX23_PAD_GPMI_CLE__GPMI_CLE
+                                               MX23_PAD_GPMI_ALE__GPMI_ALE
+                                               MX23_PAD_GPMI_RDY0__GPMI_RDY0
+                                               MX23_PAD_GPMI_RDY1__GPMI_RDY1
+                                               MX23_PAD_GPMI_WPN__GPMI_WPN
+                                               MX23_PAD_GPMI_WRN__GPMI_WRN
+                                               MX23_PAD_GPMI_RDN__GPMI_RDN
+                                               MX23_PAD_GPMI_CE1N__GPMI_CE1N
+                                               MX23_PAD_GPMI_CE0N__GPMI_CE0N
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                gpmi_pins_fixup: gpmi-pins-fixup {
                                        fsl,pinmux-ids = <
-                                               0x0170 /* MX23_PAD_GPMI_WPN__GPMI_WPN */
-                                               0x0180 /* MX23_PAD_GPMI_WRN__GPMI_WRN */
-                                               0x0190 /* MX23_PAD_GPMI_RDN__GPMI_RDN */
+                                               MX23_PAD_GPMI_WPN__GPMI_WPN
+                                               MX23_PAD_GPMI_WRN__GPMI_WRN
+                                               MX23_PAD_GPMI_RDN__GPMI_RDN
                                        >;
-                                       fsl,drive-strength = <2>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
                                };
 
                                mmc0_4bit_pins_a: mmc0-4bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2020 /* MX23_PAD_SSP1_DATA0__SSP1_DATA0 */
-                                               0x2030 /* MX23_PAD_SSP1_DATA1__SSP1_DATA1 */
-                                               0x2040 /* MX23_PAD_SSP1_DATA2__SSP1_DATA2 */
-                                               0x2050 /* MX23_PAD_SSP1_DATA3__SSP1_DATA3 */
-                                               0x2000 /* MX23_PAD_SSP1_CMD__SSP1_CMD */
-                                               0x2060 /* MX23_PAD_SSP1_SCK__SSP1_SCK */
+                                               MX23_PAD_SSP1_DATA0__SSP1_DATA0
+                                               MX23_PAD_SSP1_DATA1__SSP1_DATA1
+                                               MX23_PAD_SSP1_DATA2__SSP1_DATA2
+                                               MX23_PAD_SSP1_DATA3__SSP1_DATA3
+                                               MX23_PAD_SSP1_CMD__SSP1_CMD
+                                               MX23_PAD_SSP1_SCK__SSP1_SCK
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mmc0_8bit_pins_a: mmc0-8bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2020 /* MX23_PAD_SSP1_DATA0__SSP1_DATA0 */
-                                               0x2030 /* MX23_PAD_SSP1_DATA1__SSP1_DATA1 */
-                                               0x2040 /* MX23_PAD_SSP1_DATA2__SSP1_DATA2 */
-                                               0x2050 /* MX23_PAD_SSP1_DATA3__SSP1_DATA3 */
-                                               0x0082 /* MX23_PAD_GPMI_D08__SSP1_DATA4 */
-                                               0x0092 /* MX23_PAD_GPMI_D09__SSP1_DATA5 */
-                                               0x00a2 /* MX23_PAD_GPMI_D10__SSP1_DATA6 */
-                                               0x00b2 /* MX23_PAD_GPMI_D11__SSP1_DATA7 */
-                                               0x2000 /* MX23_PAD_SSP1_CMD__SSP1_CMD */
-                                               0x2010 /* MX23_PAD_SSP1_DETECT__SSP1_DETECT */
-                                               0x2060 /* MX23_PAD_SSP1_SCK__SSP1_SCK */
+                                               MX23_PAD_SSP1_DATA0__SSP1_DATA0
+                                               MX23_PAD_SSP1_DATA1__SSP1_DATA1
+                                               MX23_PAD_SSP1_DATA2__SSP1_DATA2
+                                               MX23_PAD_SSP1_DATA3__SSP1_DATA3
+                                               MX23_PAD_GPMI_D08__SSP1_DATA4
+                                               MX23_PAD_GPMI_D09__SSP1_DATA5
+                                               MX23_PAD_GPMI_D10__SSP1_DATA6
+                                               MX23_PAD_GPMI_D11__SSP1_DATA7
+                                               MX23_PAD_SSP1_CMD__SSP1_CMD
+                                               MX23_PAD_SSP1_DETECT__SSP1_DETECT
+                                               MX23_PAD_SSP1_SCK__SSP1_SCK
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mmc0_pins_fixup: mmc0-pins-fixup {
                                        fsl,pinmux-ids = <
-                                               0x2010 /* MX23_PAD_SSP1_DETECT__SSP1_DETECT */
-                                               0x2060 /* MX23_PAD_SSP1_SCK__SSP1_SCK */
+                                               MX23_PAD_SSP1_DETECT__SSP1_DETECT
+                                               MX23_PAD_SSP1_SCK__SSP1_SCK
                                        >;
-                                       fsl,pull-up = <0>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                pwm2_pins_a: pwm2@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x11c0 /* MX23_PAD_PWM2__PWM2 */
+                                               MX23_PAD_PWM2__PWM2
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_24bit_pins_a: lcdif-24bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1000 /* MX23_PAD_LCD_D00__LCD_D0 */
-                                               0x1010 /* MX23_PAD_LCD_D01__LCD_D1 */
-                                               0x1020 /* MX23_PAD_LCD_D02__LCD_D2 */
-                                               0x1030 /* MX23_PAD_LCD_D03__LCD_D3 */
-                                               0x1040 /* MX23_PAD_LCD_D04__LCD_D4 */
-                                               0x1050 /* MX23_PAD_LCD_D05__LCD_D5 */
-                                               0x1060 /* MX23_PAD_LCD_D06__LCD_D6 */
-                                               0x1070 /* MX23_PAD_LCD_D07__LCD_D7 */
-                                               0x1080 /* MX23_PAD_LCD_D08__LCD_D8 */
-                                               0x1090 /* MX23_PAD_LCD_D09__LCD_D9 */
-                                               0x10a0 /* MX23_PAD_LCD_D10__LCD_D10 */
-                                               0x10b0 /* MX23_PAD_LCD_D11__LCD_D11 */
-                                               0x10c0 /* MX23_PAD_LCD_D12__LCD_D12 */
-                                               0x10d0 /* MX23_PAD_LCD_D13__LCD_D13 */
-                                               0x10e0 /* MX23_PAD_LCD_D14__LCD_D14 */
-                                               0x10f0 /* MX23_PAD_LCD_D15__LCD_D15 */
-                                               0x1100 /* MX23_PAD_LCD_D16__LCD_D16 */
-                                               0x1110 /* MX23_PAD_LCD_D17__LCD_D17 */
-                                               0x0081 /* MX23_PAD_GPMI_D08__LCD_D18 */
-                                               0x0091 /* MX23_PAD_GPMI_D09__LCD_D19 */
-                                               0x00a1 /* MX23_PAD_GPMI_D10__LCD_D20 */
-                                               0x00b1 /* MX23_PAD_GPMI_D11__LCD_D21 */
-                                               0x00c1 /* MX23_PAD_GPMI_D12__LCD_D22 */
-                                               0x00d1 /* MX23_PAD_GPMI_D13__LCD_D23 */
-                                               0x1160 /* MX23_PAD_LCD_DOTCK__LCD_DOTCK */
-                                               0x1170 /* MX23_PAD_LCD_ENABLE__LCD_ENABLE */
-                                               0x1180 /* MX23_PAD_LCD_HSYNC__LCD_HSYNC */
-                                               0x1190 /* MX23_PAD_LCD_VSYNC__LCD_VSYNC */
+                                               MX23_PAD_LCD_D00__LCD_D00
+                                               MX23_PAD_LCD_D01__LCD_D01
+                                               MX23_PAD_LCD_D02__LCD_D02
+                                               MX23_PAD_LCD_D03__LCD_D03
+                                               MX23_PAD_LCD_D04__LCD_D04
+                                               MX23_PAD_LCD_D05__LCD_D05
+                                               MX23_PAD_LCD_D06__LCD_D06
+                                               MX23_PAD_LCD_D07__LCD_D07
+                                               MX23_PAD_LCD_D08__LCD_D08
+                                               MX23_PAD_LCD_D09__LCD_D09
+                                               MX23_PAD_LCD_D10__LCD_D10
+                                               MX23_PAD_LCD_D11__LCD_D11
+                                               MX23_PAD_LCD_D12__LCD_D12
+                                               MX23_PAD_LCD_D13__LCD_D13
+                                               MX23_PAD_LCD_D14__LCD_D14
+                                               MX23_PAD_LCD_D15__LCD_D15
+                                               MX23_PAD_LCD_D16__LCD_D16
+                                               MX23_PAD_LCD_D17__LCD_D17
+                                               MX23_PAD_GPMI_D08__LCD_D18
+                                               MX23_PAD_GPMI_D09__LCD_D19
+                                               MX23_PAD_GPMI_D10__LCD_D20
+                                               MX23_PAD_GPMI_D11__LCD_D21
+                                               MX23_PAD_GPMI_D12__LCD_D22
+                                               MX23_PAD_GPMI_D13__LCD_D23
+                                               MX23_PAD_LCD_DOTCK__LCD_DOTCK
+                                               MX23_PAD_LCD_ENABLE__LCD_ENABLE
+                                               MX23_PAD_LCD_HSYNC__LCD_HSYNC
+                                               MX23_PAD_LCD_VSYNC__LCD_VSYNC
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                spi2_pins_a: spi2@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0182 /* MX23_PAD_GPMI_WRN__SSP2_SCK */
-                                               0x0142 /* MX23_PAD_GPMI_RDY1__SSP2_CMD */
-                                               0x0002 /* MX23_PAD_GPMI_D00__SSP2_DATA0 */
-                                               0x0032 /* MX23_PAD_GPMI_D03__SSP2_DATA3 */
+                                               MX23_PAD_GPMI_WRN__SSP2_SCK
+                                               MX23_PAD_GPMI_RDY1__SSP2_CMD
+                                               MX23_PAD_GPMI_D00__SSP2_DATA0
+                                               MX23_PAD_GPMI_D03__SSP2_DATA3
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
                        };
 
index 2a377ca1881a9a40004a951a1a8310a02d434727..47c8c26012e4d24661124f15ff8396f428136797 100644 (file)
        model = "Armadeus Systems APF27Dev docking/development board";
        compatible = "armadeus,imx27-apf27dev", "armadeus,imx27-apf27", "fsl,imx27";
 
+       display: display {
+               model = "Chimei-LW700AT9003";
+               native-mode = <&timing0>;
+               bits-per-pixel = <16>;  /* non-standard but required */
+               fsl,pcr = <0xfae80083>; /* non-standard but required */
+               display-timings {
+                       timing0: 640x480 {
+                               clock-frequency = <33000033>;
+                               hactive = <800>;
+                               vactive = <640>;
+                               hback-porch = <96>;
+                               hfront-porch = <96>;
+                               vback-porch = <20>;
+                               vfront-porch = <21>;
+                               hsync-len = <64>;
+                               vsync-len = <4>;
+                       };
+               };
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
 
        status = "okay";
 };
 
+&fb {
+       display = <&display>;
+       fsl,dmacr = <0x00020010>;
+       status = "okay";
+};
+
 &i2c1 {
        clock-frequency = <400000>;
        status = "okay";
index b7a1c6d950b984b44efd65c100c05024c80c1b4a..826231eb44466f9187a564b3a587c7b18d686b28 100644 (file)
                        };
 
                        pwm: pwm@10006000 {
+                               #pwm-cells = <2>;
                                compatible = "fsl,imx27-pwm";
                                reg = <0x10006000 0x1000>;
                                interrupts = <23>;
index 7eb075876c4ca0358b661f8fe045052c5cead5ac..7198fe3798c62b52c2c86f5d2f895cc5179571fe 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
 
 / {
        model = "Armadeus Systems APF28 module";
index b602494c152b3a82a89c544adffb761cf2a64820..e2efd8d89c4fb82bca3602274380c7a81a515518 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /* APF28Dev is a docking board for the APF28 SOM */
-/include/ "imx28-apf28.dts"
+#include "imx28-apf28.dts"
 
 / {
        model = "Armadeus Systems APF28Dev docking/development board";
                                hog_pins_apf28dev: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1103 /* MX28_PAD_LCD_D16__GPIO_1_16 */
-                                               0x1113 /* MX28_PAD_LCD_D17__GPIO_1_17 */
-                                               0x1123 /* MX28_PAD_LCD_D18__GPIO_1_18 */
-                                               0x1133 /* MX28_PAD_LCD_D19__GPIO_1_19 */
-                                               0x1143 /* MX28_PAD_LCD_D20__GPIO_1_20 */
-                                               0x1153 /* MX28_PAD_LCD_D21__GPIO_1_21 */
-                                               0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */
+                                               MX28_PAD_LCD_D16__GPIO_1_16
+                                               MX28_PAD_LCD_D17__GPIO_1_17
+                                               MX28_PAD_LCD_D18__GPIO_1_18
+                                               MX28_PAD_LCD_D19__GPIO_1_19
+                                               MX28_PAD_LCD_D20__GPIO_1_20
+                                               MX28_PAD_LCD_D21__GPIO_1_21
+                                               MX28_PAD_LCD_D22__GPIO_1_22
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_apf28dev: lcdif-apf28dev@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
index 0e7fed47bd8d2941292ce8b7411036cf46883f44..6f254ca816cbd42b3ff80d61c3bfdb86c6f8438d 100644 (file)
@@ -1,5 +1,5 @@
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
 
 / {
        model = "Bluegiga APX4 Development Kit";
                                hog_pins_a: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0113 /* MX28_PAD_GPMI_CE1N__GPIO_0_17 */
-                                               0x0153 /* MX28_PAD_GPMI_RDY1__GPIO_0_21 */
-                                               0x2123 /* MX28_PAD_SSP2_MISO__GPIO_2_18 */
-                                               0x2131 /* MX28_PAD_SSP2_SS0__GPIO_2_19 */
-                                               0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */
-                                               0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */
-                                               0x4143 /* MX28_PAD_JTAG_RTCK__GPIO_4_20 */
+                                               MX28_PAD_GPMI_CE1N__GPIO_0_17
+                                               MX28_PAD_GPMI_RDY1__GPIO_0_21
+                                               MX28_PAD_SSP2_MISO__GPIO_2_18
+                                               MX28_PAD_SSP2_SS0__AUART3_TX /* was: 0x2131 - MX28_PAD_SSP2_SS0__GPIO_2_19 */
+                                               MX28_PAD_PWM3__GPIO_3_28
+                                               MX28_PAD_LCD_RESET__GPIO_3_30
+                                               MX28_PAD_JTAG_RTCK__GPIO_4_20
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_apx4: lcdif-apx4@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                mmc2_4bit_pins_apx4: mmc2-4bit-apx4@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2041 /* MX28_PAD_SSP0_DATA4__SSP2_D0 */
-                                               0x2051 /* MX28_PAD_SSP0_DATA5__SSP2_D3 */
-                                               0x2061 /* MX28_PAD_SSP0_DATA6__SSP2_CMD */
-                                               0x2071 /* MX28_PAD_SSP0_DATA7__SSP2_SCK */
-                                               0x2141 /* MX28_PAD_SSP2_SS1__SSP2_D1 */
-                                               0x2151 /* MX28_PAD_SSP2_SS2__SSP2_D2 */
+                                               MX28_PAD_SSP0_DATA4__SSP2_D0
+                                               MX28_PAD_SSP0_DATA5__SSP2_D3
+                                               MX28_PAD_SSP0_DATA6__SSP2_CMD
+                                               MX28_PAD_SSP0_DATA7__SSP2_SCK
+                                               MX28_PAD_SSP2_SS1__SSP2_D1
+                                               MX28_PAD_SSP2_SS2__SSP2_D2
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mmc2_sck_cfg_apx4: mmc2-sck-cfg-apx4 {
                                        fsl,pinmux-ids = <
-                                               0x2071 /* MX28_PAD_SSP0_DATA7__SSP2_SCK */
+                                               MX28_PAD_SSP0_DATA7__SSP2_SCK
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
index 1ec8c94bbac97f82f48fad9a868b70a66a438030..cabb6171a19d925c214442daa47473a6a2be31a5 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
 
 / {
        model = "Crystalfontz CFA-10036 Board";
                                ssd1306_cfa10036: ssd1306-10036@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2073 /* MX28_PAD_SSP0_D7__GPIO_2_7 */
+                                               MX28_PAD_SSP0_DATA7__GPIO_2_7
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                led_pins_cfa10036: leds-10036@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3043 /* MX28_PAD_AUART1_RX__GPIO_3_4 */
+                                               MX28_PAD_AUART1_RX__GPIO_3_4
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                usb0_otg_cfa10036: otg-10036@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0142 /* MX28_PAD_GPMI_READY0__USB0_ID */
+                                               MX28_PAD_GPMI_RDY0__USB0_ID
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                        };
index 182b99fe35f39b77b0c43cb396593624a043f7ba..f93e9a700e52b39287ff6761cf9c2ffdc21ea617 100644 (file)
@@ -13,7 +13,7 @@
  * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
  * need to include the CFA-10036 DTS.
  */
-/include/ "imx28-cfa10036.dts"
+#include "imx28-cfa10036.dts"
 
 / {
        model = "Crystalfontz CFA-10037 Board";
                                usb_pins_cfa10037: usb-10037@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */
+                                               MX28_PAD_GPMI_D07__GPIO_0_7
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                mac0_pins_cfa10037: mac0-10037@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */
+                                               MX28_PAD_SSP2_SS2__GPIO_2_21
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
                };
index 06e4cfaf7dd2678b71ba7d523891c2008e31eff5..7087b4bf6a8f88e5748a70747af337de3524a5c0 100644 (file)
@@ -13,7 +13,7 @@
  * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
  * need to include the CFA-10036 DTS.
  */
-/include/ "imx28-cfa10036.dts"
+#include "imx28-cfa10036.dts"
 
 / {
        model = "Crystalfontz CFA-10049 Board";
                                usb_pins_cfa10049: usb-10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */
+                                               MX28_PAD_GPMI_D07__GPIO_0_7
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                i2cmux_pins_cfa10049: i2cmux-10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1163 /* MX28_PAD_LCD_D22__GPIO_1_22 */
-                                               0x1173 /* MX28_PAD_LCD_D22__GPIO_1_23 */
+                                               MX28_PAD_LCD_D22__GPIO_1_22
+                                               MX28_PAD_LCD_D23__GPIO_1_23
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                mac0_pins_cfa10049: mac0-10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2153 /* MX28_PAD_SSP2_D5__GPIO_2_21 */
+                                               MX28_PAD_SSP2_SS2__GPIO_2_21
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                pca_pins_cfa10049: pca-10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2133 /* MX28_PAD_SSP2_D3__GPIO_2_19 */
+                                               MX28_PAD_SSP2_SS0__GPIO_2_19
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                rotary_pins_cfa10049: rotary-10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3183 /* MX28_PAD_I2C0_SCL__GPIO_3_24 */
-                                               0x3193 /* MX28_PAD_I2C0_SDA__GPIO_3_25 */
+                                               MX28_PAD_I2C0_SCL__GPIO_3_24
+                                               MX28_PAD_I2C0_SDA__GPIO_3_25
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                rotary_btn_pins_cfa10049: rotary-btn-10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31a3 /* MX28_PAD_SAIF_SDATA0__GPIO_3_26 */
+                                               MX28_PAD_SAIF1_SDATA0__GPIO_3_26
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                spi2_pins_cfa10049: spi2-cfa10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2103 /* MX28_PAD_SSP2_SCK__GPIO_2_16 */
-                                               0x2113 /* MX28_PAD_SSP2_CMD__GPIO_2_17 */
-                                               0x2123 /* MX28_PAD_SSP2_D0__GPIO_2_18 */
-                                               0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */
+                                               MX28_PAD_SSP2_SCK__GPIO_2_16
+                                               MX28_PAD_SSP2_MOSI__GPIO_2_17
+                                               MX28_PAD_SSP2_MISO__GPIO_2_18
+                                               MX28_PAD_AUART1_TX__GPIO_3_5
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                spi3_pins_cfa10049: spi3-cfa10049@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0183 /* MX28_PAD_GPMI_RDN__GPIO_0_24 */
-                                               0x01c3 /* MX28_PAD_GPMI_RESETN__GPIO_0_28 */
-                                               0x0113 /* MX28_PAD_GPMI_CE1N__GPIO_0_17 */
-                                               0x01a3 /* MX28_PAD_GPMI_ALE__GPIO_0_26 */
-                                               0x01b3 /* MX28_PAD_GPMI_CLE__GPIO_0_27 */
+                                               MX28_PAD_GPMI_RDN__GPIO_0_24
+                                               MX28_PAD_GPMI_RESETN__GPIO_0_28
+                                               MX28_PAD_GPMI_CE1N__GPIO_0_17
+                                               MX28_PAD_GPMI_ALE__GPIO_0_26
+                                               MX28_PAD_GPMI_CLE__GPIO_0_27
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                lcdif_18bit_pins_cfa10049: lcdif-18bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
-                                               0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
-                                               0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
-                                               0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
-                                               0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
-                                               0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
-                                               0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
-                                               0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
-                                               0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
-                                               0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
-                                               0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
-                                               0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
-                                               0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
-                                               0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
-                                               0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
-                                               0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
-                                               0x1100 /* MX28_PAD_LCD_D16__LCD_D16 */
-                                               0x1110 /* MX28_PAD_LCD_D17__LCD_D17 */
+                                               MX28_PAD_LCD_D00__LCD_D0
+                                               MX28_PAD_LCD_D01__LCD_D1
+                                               MX28_PAD_LCD_D02__LCD_D2
+                                               MX28_PAD_LCD_D03__LCD_D3
+                                               MX28_PAD_LCD_D04__LCD_D4
+                                               MX28_PAD_LCD_D05__LCD_D5
+                                               MX28_PAD_LCD_D06__LCD_D6
+                                               MX28_PAD_LCD_D07__LCD_D7
+                                               MX28_PAD_LCD_D08__LCD_D8
+                                               MX28_PAD_LCD_D09__LCD_D9
+                                               MX28_PAD_LCD_D10__LCD_D10
+                                               MX28_PAD_LCD_D11__LCD_D11
+                                               MX28_PAD_LCD_D12__LCD_D12
+                                               MX28_PAD_LCD_D13__LCD_D13
+                                               MX28_PAD_LCD_D14__LCD_D14
+                                               MX28_PAD_LCD_D15__LCD_D15
+                                               MX28_PAD_LCD_D16__LCD_D16
+                                               MX28_PAD_LCD_D17__LCD_D17
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10049: lcdif-evk@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */
+                                               MX28_PAD_LCD_RESET__GPIO_3_30
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                w1_gpio_pins: w1-gpio@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1153 /* MX28_PAD_LCD_D21__GPIO_1_21 */
+                                               MX28_PAD_LCD_D21__GPIO_1_21
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>; /* 0 will enable the keeper */
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */
                                };
                        };
 
index 171bcbe1ec4b3ed995f7895a5b6a51868460b48c..c3900e7ba3318e3d8f191b49edc35597824ae91d 100644 (file)
@@ -14,7 +14,7 @@
  * The CFA-10055 is an expansion board for the CFA-10036 module and
  * CFA-10037, thus we need to include the CFA-10037 DTS.
  */
-/include/ "imx28-cfa10037.dts"
+#include "imx28-cfa10037.dts"
 
 / {
        model = "Crystalfontz CFA-10055 Board";
                                spi2_pins_cfa10055: spi2-cfa10055@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2103 /* MX28_PAD_SSP2_SCK__GPIO_2_16 */
-                                               0x2113 /* MX28_PAD_SSP2_CMD__GPIO_2_17 */
-                                               0x2123 /* MX28_PAD_SSP2_D0__GPIO_2_18 */
-                                               0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */
+                                               MX28_PAD_SSP2_SCK__GPIO_2_16
+                                               MX28_PAD_SSP2_MOSI__GPIO_2_17
+                                               MX28_PAD_SSP2_MISO__GPIO_2_18
+                                               MX28_PAD_AUART1_TX__GPIO_3_5
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                lcdif_18bit_pins_cfa10055: lcdif-18bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
-                                               0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
-                                               0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
-                                               0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
-                                               0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
-                                               0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
-                                               0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
-                                               0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
-                                               0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
-                                               0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
-                                               0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
-                                               0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
-                                               0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
-                                               0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
-                                               0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
-                                               0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
-                                               0x1100 /* MX28_PAD_LCD_D16__LCD_D16 */
-                                               0x1110 /* MX28_PAD_LCD_D17__LCD_D17 */
+                                               MX28_PAD_LCD_D00__LCD_D0
+                                               MX28_PAD_LCD_D01__LCD_D1
+                                               MX28_PAD_LCD_D02__LCD_D2
+                                               MX28_PAD_LCD_D03__LCD_D3
+                                               MX28_PAD_LCD_D04__LCD_D4
+                                               MX28_PAD_LCD_D05__LCD_D5
+                                               MX28_PAD_LCD_D06__LCD_D6
+                                               MX28_PAD_LCD_D07__LCD_D7
+                                               MX28_PAD_LCD_D08__LCD_D8
+                                               MX28_PAD_LCD_D09__LCD_D9
+                                               MX28_PAD_LCD_D10__LCD_D10
+                                               MX28_PAD_LCD_D11__LCD_D11
+                                               MX28_PAD_LCD_D12__LCD_D12
+                                               MX28_PAD_LCD_D13__LCD_D13
+                                               MX28_PAD_LCD_D14__LCD_D14
+                                               MX28_PAD_LCD_D15__LCD_D15
+                                               MX28_PAD_LCD_D16__LCD_D16
+                                               MX28_PAD_LCD_D17__LCD_D17
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10055: lcdif-evk@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10055_pullup: lcdif-10055-pullup@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */
+                                               MX28_PAD_LCD_RESET__GPIO_3_30
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
                        };
 
index b45dd0e4ee57931d9cecd7dfe567408c64d65b1b..cef959a97219b8e14bca15b01c96d6e93cf1730a 100644 (file)
@@ -13,7 +13,7 @@
  * The CFA-10055 is an expansion board for the CFA-10036 module and
  * CFA-10037, thus we need to include the CFA-10037 DTS.
  */
-/include/ "imx28-cfa10037.dts"
+#include "imx28-cfa10037.dts"
 
 / {
        model = "Crystalfontz CFA-10056 Board";
                                spi2_pins_cfa10056: spi2-cfa10056@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2103 /* MX28_PAD_SSP2_SCK__GPIO_2_16 */
-                                               0x2113 /* MX28_PAD_SSP2_CMD__GPIO_2_17 */
-                                               0x2123 /* MX28_PAD_SSP2_D0__GPIO_2_18 */
-                                               0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */
+                                               MX28_PAD_SSP2_SCK__GPIO_2_16
+                                               MX28_PAD_SSP2_MOSI__GPIO_2_17
+                                               MX28_PAD_SSP2_MISO__GPIO_2_18
+                                               MX28_PAD_AUART1_TX__GPIO_3_5
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                lcdif_pins_cfa10056: lcdif-10056@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10056_pullup: lcdif-10056-pullup@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */
+                                               MX28_PAD_LCD_RESET__GPIO_3_30
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
                        };
 
index 0333c0532f28f3ff5e4e011036214b31393c29df..3c1312885ae0dafc1642e30d27a58cc3cf49d12b 100644 (file)
@@ -14,7 +14,7 @@
  * The CFA-10057 is an expansion board for the CFA-10036 module, thus we
  * need to include the CFA-10036 DTS.
  */
-/include/ "imx28-cfa10036.dts"
+#include "imx28-cfa10036.dts"
 
 / {
        model = "Crystalfontz CFA-10057 Board";
                                usb_pins_cfa10057: usb-10057@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */
+                                               MX28_PAD_GPMI_D07__GPIO_0_7
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_18bit_pins_cfa10057: lcdif-18bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
-                                               0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
-                                               0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
-                                               0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
-                                               0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
-                                               0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
-                                               0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
-                                               0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
-                                               0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
-                                               0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
-                                               0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
-                                               0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
-                                               0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
-                                               0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
-                                               0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
-                                               0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
-                                               0x1100 /* MX28_PAD_LCD_D16__LCD_D16 */
-                                               0x1110 /* MX28_PAD_LCD_D17__LCD_D17 */
+                                               MX28_PAD_LCD_D00__LCD_D0
+                                               MX28_PAD_LCD_D01__LCD_D1
+                                               MX28_PAD_LCD_D02__LCD_D2
+                                               MX28_PAD_LCD_D03__LCD_D3
+                                               MX28_PAD_LCD_D04__LCD_D4
+                                               MX28_PAD_LCD_D05__LCD_D5
+                                               MX28_PAD_LCD_D06__LCD_D6
+                                               MX28_PAD_LCD_D07__LCD_D7
+                                               MX28_PAD_LCD_D08__LCD_D8
+                                               MX28_PAD_LCD_D09__LCD_D9
+                                               MX28_PAD_LCD_D10__LCD_D10
+                                               MX28_PAD_LCD_D11__LCD_D11
+                                               MX28_PAD_LCD_D12__LCD_D12
+                                               MX28_PAD_LCD_D13__LCD_D13
+                                               MX28_PAD_LCD_D14__LCD_D14
+                                               MX28_PAD_LCD_D15__LCD_D15
+                                               MX28_PAD_LCD_D16__LCD_D16
+                                               MX28_PAD_LCD_D17__LCD_D17
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10057: lcdif-evk@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
index 64c64c55a82a27cbb2221a9ac7f6390a173426e7..2469d34df0ae1499de3236f13e180969dd78eed7 100644 (file)
@@ -14,7 +14,7 @@
  * The CFA-10058 is an expansion board for the CFA-10036 module, thus we
  * need to include the CFA-10036 DTS.
  */
-/include/ "imx28-cfa10036.dts"
+#include "imx28-cfa10036.dts"
 
 / {
        model = "Crystalfontz CFA-10058 Board";
                                usb_pins_cfa10058: usb-10058@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0073 /* MX28_PAD_GPMI_D7__GPIO_0_7 */
+                                               MX28_PAD_GPMI_D07__GPIO_0_7
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_cfa10058: lcdif-10058@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
index 15715d921d14417a5f0e1e8fe76047410239aaa9..1f63845b8ce08c3cc23aaeff334d9ee02b56e45e 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
 
 / {
        model = "Freescale i.MX28 Evaluation Kit";
                                hog_pins_a: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x20d3 /* MX28_PAD_SSP1_CMD__GPIO_2_13 */
-                                               0x20f3 /* MX28_PAD_SSP1_DATA3__GPIO_2_15 */
-                                               0x40d3 /* MX28_PAD_ENET0_RX_CLK__GPIO_4_13 */
-                                               0x20c3 /* MX28_PAD_SSP1_SCK__GPIO_2_12 */
-                                               0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */
-                                               0x31e3 /* MX28_PAD_LCD_RESET__GPIO_3_30 */
-                                               0x3083 /* MX28_PAD_AUART2_RX__GPIO_3_8 */
-                                               0x3093 /* MX28_PAD_AUART2_TX__GPIO_3_9 */
+                                               MX28_PAD_SSP1_CMD__GPIO_2_13
+                                               MX28_PAD_SSP1_DATA3__GPIO_2_15
+                                               MX28_PAD_ENET0_RX_CLK__GPIO_4_13
+                                               MX28_PAD_SSP1_SCK__GPIO_2_12
+                                               MX28_PAD_PWM3__GPIO_3_28
+                                               MX28_PAD_LCD_RESET__GPIO_3_30
+                                               MX28_PAD_AUART2_RX__GPIO_3_8
+                                               MX28_PAD_AUART2_TX__GPIO_3_9
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                led_pin_gpio3_5: led_gpio3_5@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3053 /* MX28_PAD_AUART1_TX__GPIO_3_5 */
+                                               MX28_PAD_AUART1_TX__GPIO_3_5
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                gpmi_pins_evk: gpmi-nand-evk@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0110 /* MX28_PAD_GPMI_CE1N__GPMI_CE1N */
-                                               0x0150 /* MX28_PAD_GPMI_RDY1__GPMI_READY1 */
+                                               MX28_PAD_GPMI_CE1N__GPMI_CE1N
+                                               MX28_PAD_GPMI_RDY1__GPMI_READY1
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_evk: lcdif-evk@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
                        };
 
                        lradc@80050000 {
+                               fsl,lradc-touchscreen-wires = <4>;
                                status = "okay";
                        };
 
 
        ahb@80080000 {
                usb0: usb@80080000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&usb0_id_pins_a>;
                        vbus-supply = <&reg_usb0_vbus>;
                        status = "okay";
                };
diff --git a/arch/arm/boot/dts/imx28-m28cu3.dts b/arch/arm/boot/dts/imx28-m28cu3.dts
new file mode 100644 (file)
index 0000000..d3958da
--- /dev/null
@@ -0,0 +1,266 @@
+/*
+ * Copyright (C) 2013 Marek Vasut <marex@denx.de>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+#include "imx28.dtsi"
+
+/ {
+       model = "MSR M28CU3";
+       compatible = "msr,m28cu3", "fsl,imx28";
+
+       memory {
+               reg = <0x40000000 0x08000000>;
+       };
+
+       apb@80000000 {
+               apbh@80000000 {
+                       gpmi-nand@8000c000 {
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
+                               status = "okay";
+
+                               partition@0 {
+                                       label = "gpmi-nfc-0-boot";
+                                       reg = <0x00000000 0x01400000>;
+                                       read-only;
+                               };
+
+                               partition@1 {
+                                       label = "gpmi-nfc-general-use";
+                                       reg = <0x01400000 0x0ec00000>;
+                               };
+                       };
+
+                       ssp0: ssp@80010000 {
+                               compatible = "fsl,imx28-mmc";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&mmc0_4bit_pins_a
+                                            &mmc0_cd_cfg
+                                            &mmc0_sck_cfg>;
+                               bus-width = <4>;
+                               vmmc-supply = <&reg_vddio_sd0>;
+                               status = "okay";
+                       };
+
+                       ssp2: ssp@80014000 {
+                               compatible = "fsl,imx28-mmc";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&mmc2_4bit_pins_a
+                                            &mmc2_cd_cfg
+                                            &mmc2_sck_cfg>;
+                               bus-width = <4>;
+                               vmmc-supply = <&reg_vddio_sd1>;
+                               status = "okay";
+                       };
+
+                       pinctrl@80018000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&hog_pins_a>;
+
+                               hog_pins_a: hog@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_SSP2_SS0__GPIO_2_19
+                                               MX28_PAD_PWM4__GPIO_3_29
+                                               MX28_PAD_AUART2_RX__GPIO_3_8
+                                               MX28_PAD_ENET0_RX_CLK__GPIO_4_13
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+
+                               lcdif_pins_m28: lcdif-m28@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_LCD_VSYNC__LCD_VSYNC
+                                               MX28_PAD_LCD_HSYNC__LCD_HSYNC
+                                               MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
+                                               MX28_PAD_LCD_RESET__LCD_RESET
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
+                                               MX28_PAD_AUART1_TX__GPIO_3_5
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+
+                               led_pins_gpio: leds-m28@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_SSP3_MISO__GPIO_2_26
+                                               MX28_PAD_SSP3_SCK__GPIO_2_24
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+                       };
+
+                       ocotp@8002c000 {
+                               status = "okay";
+                       };
+
+                       lcdif@80030000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&lcdif_24bit_pins_a
+                                            &lcdif_pins_m28>;
+                               display = <&display>;
+                               reset-active-high;
+                               status = "okay";
+
+                               display: display0 {
+                                       bits-per-pixel = <32>;
+                                       bus-width = <24>;
+
+                                       display-timings {
+                                               native-mode = <&timing0>;
+                                               timing0: timing0 {
+                                                       clock-frequency = <6410256>;
+                                                       hactive = <320>;
+                                                       vactive = <240>;
+                                                       hback-porch = <38>;
+                                                       hfront-porch = <20>;
+                                                       vback-porch = <15>;
+                                                       vfront-porch = <5>;
+                                                       hsync-len = <30>;
+                                                       vsync-len = <3>;
+                                                       hsync-active = <0>;
+                                                       vsync-active = <0>;
+                                                       de-active = <1>;
+                                                       pixelclk-active = <1>;
+                                               };
+                                       };
+                               };
+                       };
+               };
+
+               apbx@80040000 {
+                       duart: serial@80074000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&duart_pins_b>;
+                               status = "okay";
+                       };
+
+                       usbphy1: usbphy@8007e000 {
+                               status = "okay";
+                       };
+
+                       auart0: serial@8006a000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&auart0_2pins_a>;
+                               status = "okay";
+                       };
+
+                       auart3: serial@80070000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&auart3_2pins_b>;
+                               status = "okay";
+                       };
+
+                       pwm: pwm@80064000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pwm3_pins_a>;
+                               status = "okay";
+                       };
+               };
+       };
+
+       ahb@80080000 {
+               usb1: usb@80090000 {
+                       vbus-supply = <&reg_usb1_vbus>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&usbphy1_pins_a>;
+                       disable-over-current;
+                       status = "okay";
+               };
+
+               mac0: ethernet@800f0000 {
+                       phy-mode = "rmii";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mac0_pins_a>;
+                       phy-reset-gpios = <&gpio4 13 0>;
+                       phy-reset-duration = <100>;
+                       status = "okay";
+               };
+
+               mac1: ethernet@800f4000 {
+                       phy-mode = "rmii";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&mac1_pins_a>;
+                       status = "okay";
+               };
+       };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm 3 5000000>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <6>;
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins_gpio>;
+
+               user1 {
+                       label = "sd0-led";
+                       gpios = <&gpio2 26 0>;
+                       linux,default-trigger = "mmc0";
+               };
+
+               user2 {
+                       label = "sd1-led";
+                       gpios = <&gpio2 24 0>;
+                       linux,default-trigger = "mmc2";
+               };
+       };
+
+       regulators {
+               compatible = "simple-bus";
+
+               reg_3p3v: 3p3v {
+                       compatible = "regulator-fixed";
+                       regulator-name = "3P3V";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
+
+               reg_vddio_sd0: vddio-sd0 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "vddio-sd0";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio3 29 0>;
+               };
+
+               reg_vddio_sd1: vddio-sd1 {
+                       compatible = "regulator-fixed";
+                       regulator-name = "vddio-sd1";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio2 19 0>;
+               };
+
+               reg_usb1_vbus: usb1_vbus {
+                       compatible = "regulator-fixed";
+                       regulator-name = "usb1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio3 8 0>;
+                       enable-active-high;
+               };
+       };
+};
index 0d322a2bebaf5fe31e088d8b98c73f08ed4b9d7d..8e2477fbe1d70963d583973ed4c46a6554c99104 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
 
 / {
        model = "DENX M28EVK";
                                hog_pins_a: hog@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31c3 /* MX28_PAD_PWM3__GPIO_3_28 */
-                                               0x30a3 /* MX28_PAD_AUART2_CTS__GPIO_3_10 */
-                                               0x30b3 /* MX28_PAD_AUART2_RTS__GPIO_3_11 */
-                                               0x30c3 /* MX28_PAD_AUART3_RX__GPIO_3_12 */
-                                               0x30d3 /* MX28_PAD_AUART3_TX__GPIO_3_13 */
+                                               MX28_PAD_PWM3__GPIO_3_28
+                                               MX28_PAD_AUART2_CTS__GPIO_3_10
+                                               MX28_PAD_AUART2_RTS__GPIO_3_11
+                                               MX28_PAD_AUART3_RX__GPIO_3_12
+                                               MX28_PAD_AUART3_TX__GPIO_3_13
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_pins_m28: lcdif-m28@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x11e0 /* MX28_PAD_LCD_DOTCLK__LCD_DOTCLK */
-                                               0x11f0 /* MX28_PAD_LCD_ENABLE__LCD_ENABLE */
+                                               MX28_PAD_LCD_DOTCLK__LCD_DOTCLK
+                                               MX28_PAD_LCD_ENABLE__LCD_ENABLE
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
                        };
 
diff --git a/arch/arm/boot/dts/imx28-pinfunc.h b/arch/arm/boot/dts/imx28-pinfunc.h
new file mode 100644 (file)
index 0000000..e11f69b
--- /dev/null
@@ -0,0 +1,506 @@
+/*
+ * Header providing constants for i.MX28 pinctrl bindings.
+ *
+ * Copyright (C) 2013 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __DT_BINDINGS_MX28_PINCTRL_H__
+#define __DT_BINDINGS_MX28_PINCTRL_H__
+
+#include "mxs-pinfunc.h"
+
+#define MX28_PAD_GPMI_D00__GPMI_D0                     0x0000
+#define MX28_PAD_GPMI_D01__GPMI_D1                     0x0010
+#define MX28_PAD_GPMI_D02__GPMI_D2                     0x0020
+#define MX28_PAD_GPMI_D03__GPMI_D3                     0x0030
+#define MX28_PAD_GPMI_D04__GPMI_D4                     0x0040
+#define MX28_PAD_GPMI_D05__GPMI_D5                     0x0050
+#define MX28_PAD_GPMI_D06__GPMI_D6                     0x0060
+#define MX28_PAD_GPMI_D07__GPMI_D7                     0x0070
+#define MX28_PAD_GPMI_CE0N__GPMI_CE0N                  0x0100
+#define MX28_PAD_GPMI_CE1N__GPMI_CE1N                  0x0110
+#define MX28_PAD_GPMI_CE2N__GPMI_CE2N                  0x0120
+#define MX28_PAD_GPMI_CE3N__GPMI_CE3N                  0x0130
+#define MX28_PAD_GPMI_RDY0__GPMI_READY0                        0x0140
+#define MX28_PAD_GPMI_RDY1__GPMI_READY1                        0x0150
+#define MX28_PAD_GPMI_RDY2__GPMI_READY2                        0x0160
+#define MX28_PAD_GPMI_RDY3__GPMI_READY3                        0x0170
+#define MX28_PAD_GPMI_RDN__GPMI_RDN                    0x0180
+#define MX28_PAD_GPMI_WRN__GPMI_WRN                    0x0190
+#define MX28_PAD_GPMI_ALE__GPMI_ALE                    0x01a0
+#define MX28_PAD_GPMI_CLE__GPMI_CLE                    0x01b0
+#define MX28_PAD_GPMI_RESETN__GPMI_RESETN              0x01c0
+#define MX28_PAD_LCD_D00__LCD_D0                       0x1000
+#define MX28_PAD_LCD_D01__LCD_D1                       0x1010
+#define MX28_PAD_LCD_D02__LCD_D2                       0x1020
+#define MX28_PAD_LCD_D03__LCD_D3                       0x1030
+#define MX28_PAD_LCD_D04__LCD_D4                       0x1040
+#define MX28_PAD_LCD_D05__LCD_D5                       0x1050
+#define MX28_PAD_LCD_D06__LCD_D6                       0x1060
+#define MX28_PAD_LCD_D07__LCD_D7                       0x1070
+#define MX28_PAD_LCD_D08__LCD_D8                       0x1080
+#define MX28_PAD_LCD_D09__LCD_D9                       0x1090
+#define MX28_PAD_LCD_D10__LCD_D10                      0x10a0
+#define MX28_PAD_LCD_D11__LCD_D11                      0x10b0
+#define MX28_PAD_LCD_D12__LCD_D12                      0x10c0
+#define MX28_PAD_LCD_D13__LCD_D13                      0x10d0
+#define MX28_PAD_LCD_D14__LCD_D14                      0x10e0
+#define MX28_PAD_LCD_D15__LCD_D15                      0x10f0
+#define MX28_PAD_LCD_D16__LCD_D16                      0x1100
+#define MX28_PAD_LCD_D17__LCD_D17                      0x1110
+#define MX28_PAD_LCD_D18__LCD_D18                      0x1120
+#define MX28_PAD_LCD_D19__LCD_D19                      0x1130
+#define MX28_PAD_LCD_D20__LCD_D20                      0x1140
+#define MX28_PAD_LCD_D21__LCD_D21                      0x1150
+#define MX28_PAD_LCD_D22__LCD_D22                      0x1160
+#define MX28_PAD_LCD_D23__LCD_D23                      0x1170
+#define MX28_PAD_LCD_RD_E__LCD_RD_E                    0x1180
+#define MX28_PAD_LCD_WR_RWN__LCD_WR_RWN                        0x1190
+#define MX28_PAD_LCD_RS__LCD_RS                                0x11a0
+#define MX28_PAD_LCD_CS__LCD_CS                                0x11b0
+#define MX28_PAD_LCD_VSYNC__LCD_VSYNC                  0x11c0
+#define MX28_PAD_LCD_HSYNC__LCD_HSYNC                  0x11d0
+#define MX28_PAD_LCD_DOTCLK__LCD_DOTCLK                        0x11e0
+#define MX28_PAD_LCD_ENABLE__LCD_ENABLE                        0x11f0
+#define MX28_PAD_SSP0_DATA0__SSP0_D0                   0x2000
+#define MX28_PAD_SSP0_DATA1__SSP0_D1                   0x2010
+#define MX28_PAD_SSP0_DATA2__SSP0_D2                   0x2020
+#define MX28_PAD_SSP0_DATA3__SSP0_D3                   0x2030
+#define MX28_PAD_SSP0_DATA4__SSP0_D4                   0x2040
+#define MX28_PAD_SSP0_DATA5__SSP0_D5                   0x2050
+#define MX28_PAD_SSP0_DATA6__SSP0_D6                   0x2060
+#define MX28_PAD_SSP0_DATA7__SSP0_D7                   0x2070
+#define MX28_PAD_SSP0_CMD__SSP0_CMD                    0x2080
+#define MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT         0x2090
+#define MX28_PAD_SSP0_SCK__SSP0_SCK                    0x20a0
+#define MX28_PAD_SSP1_SCK__SSP1_SCK                    0x20c0
+#define MX28_PAD_SSP1_CMD__SSP1_CMD                    0x20d0
+#define MX28_PAD_SSP1_DATA0__SSP1_D0                   0x20e0
+#define MX28_PAD_SSP1_DATA3__SSP1_D3                   0x20f0
+#define MX28_PAD_SSP2_SCK__SSP2_SCK                    0x2100
+#define MX28_PAD_SSP2_MOSI__SSP2_CMD                   0x2110
+#define MX28_PAD_SSP2_MISO__SSP2_D0                    0x2120
+#define MX28_PAD_SSP2_SS0__SSP2_D3                     0x2130
+#define MX28_PAD_SSP2_SS1__SSP2_D4                     0x2140
+#define MX28_PAD_SSP2_SS2__SSP2_D5                     0x2150
+#define MX28_PAD_SSP3_SCK__SSP3_SCK                    0x2180
+#define MX28_PAD_SSP3_MOSI__SSP3_CMD                   0x2190
+#define MX28_PAD_SSP3_MISO__SSP3_D0                    0x21a0
+#define MX28_PAD_SSP3_SS0__SSP3_D3                     0x21b0
+#define MX28_PAD_AUART0_RX__AUART0_RX                  0x3000
+#define MX28_PAD_AUART0_TX__AUART0_TX                  0x3010
+#define MX28_PAD_AUART0_CTS__AUART0_CTS                        0x3020
+#define MX28_PAD_AUART0_RTS__AUART0_RTS                        0x3030
+#define MX28_PAD_AUART1_RX__AUART1_RX                  0x3040
+#define MX28_PAD_AUART1_TX__AUART1_TX                  0x3050
+#define MX28_PAD_AUART1_CTS__AUART1_CTS                        0x3060
+#define MX28_PAD_AUART1_RTS__AUART1_RTS                        0x3070
+#define MX28_PAD_AUART2_RX__AUART2_RX                  0x3080
+#define MX28_PAD_AUART2_TX__AUART2_TX                  0x3090
+#define MX28_PAD_AUART2_CTS__AUART2_CTS                        0x30a0
+#define MX28_PAD_AUART2_RTS__AUART2_RTS                        0x30b0
+#define MX28_PAD_AUART3_RX__AUART3_RX                  0x30c0
+#define MX28_PAD_AUART3_TX__AUART3_TX                  0x30d0
+#define MX28_PAD_AUART3_CTS__AUART3_CTS                        0x30e0
+#define MX28_PAD_AUART3_RTS__AUART3_RTS                        0x30f0
+#define MX28_PAD_PWM0__PWM_0                           0x3100
+#define MX28_PAD_PWM1__PWM_1                           0x3110
+#define MX28_PAD_PWM2__PWM_2                           0x3120
+#define MX28_PAD_SAIF0_MCLK__SAIF0_MCLK                        0x3140
+#define MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK              0x3150
+#define MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK            0x3160
+#define MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0            0x3170
+#define MX28_PAD_I2C0_SCL__I2C0_SCL                    0x3180
+#define MX28_PAD_I2C0_SDA__I2C0_SDA                    0x3190
+#define MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0            0x31a0
+#define MX28_PAD_SPDIF__SPDIF_TX                       0x31b0
+#define MX28_PAD_PWM3__PWM_3                           0x31c0
+#define MX28_PAD_PWM4__PWM_4                           0x31d0
+#define MX28_PAD_LCD_RESET__LCD_RESET                  0x31e0
+#define MX28_PAD_ENET0_MDC__ENET0_MDC                  0x4000
+#define MX28_PAD_ENET0_MDIO__ENET0_MDIO                        0x4010
+#define MX28_PAD_ENET0_RX_EN__ENET0_RX_EN              0x4020
+#define MX28_PAD_ENET0_RXD0__ENET0_RXD0                        0x4030
+#define MX28_PAD_ENET0_RXD1__ENET0_RXD1                        0x4040
+#define MX28_PAD_ENET0_TX_CLK__ENET0_TX_CLK            0x4050
+#define MX28_PAD_ENET0_TX_EN__ENET0_TX_EN              0x4060
+#define MX28_PAD_ENET0_TXD0__ENET0_TXD0                        0x4070
+#define MX28_PAD_ENET0_TXD1__ENET0_TXD1                        0x4080
+#define MX28_PAD_ENET0_RXD2__ENET0_RXD2                        0x4090
+#define MX28_PAD_ENET0_RXD3__ENET0_RXD3                        0x40a0
+#define MX28_PAD_ENET0_TXD2__ENET0_TXD2                        0x40b0
+#define MX28_PAD_ENET0_TXD3__ENET0_TXD3                        0x40c0
+#define MX28_PAD_ENET0_RX_CLK__ENET0_RX_CLK            0x40d0
+#define MX28_PAD_ENET0_COL__ENET0_COL                  0x40e0
+#define MX28_PAD_ENET0_CRS__ENET0_CRS                  0x40f0
+#define MX28_PAD_ENET_CLK__CLKCTRL_ENET                        0x4100
+#define MX28_PAD_JTAG_RTCK__JTAG_RTCK                  0x4140
+#define MX28_PAD_EMI_D00__EMI_DATA0                    0x5000
+#define MX28_PAD_EMI_D01__EMI_DATA1                    0x5010
+#define MX28_PAD_EMI_D02__EMI_DATA2                    0x5020
+#define MX28_PAD_EMI_D03__EMI_DATA3                    0x5030
+#define MX28_PAD_EMI_D04__EMI_DATA4                    0x5040
+#define MX28_PAD_EMI_D05__EMI_DATA5                    0x5050
+#define MX28_PAD_EMI_D06__EMI_DATA6                    0x5060
+#define MX28_PAD_EMI_D07__EMI_DATA7                    0x5070
+#define MX28_PAD_EMI_D08__EMI_DATA8                    0x5080
+#define MX28_PAD_EMI_D09__EMI_DATA9                    0x5090
+#define MX28_PAD_EMI_D10__EMI_DATA10                   0x50a0
+#define MX28_PAD_EMI_D11__EMI_DATA11                   0x50b0
+#define MX28_PAD_EMI_D12__EMI_DATA12                   0x50c0
+#define MX28_PAD_EMI_D13__EMI_DATA13                   0x50d0
+#define MX28_PAD_EMI_D14__EMI_DATA14                   0x50e0
+#define MX28_PAD_EMI_D15__EMI_DATA15                   0x50f0
+#define MX28_PAD_EMI_ODT0__EMI_ODT0                    0x5100
+#define MX28_PAD_EMI_DQM0__EMI_DQM0                    0x5110
+#define MX28_PAD_EMI_ODT1__EMI_ODT1                    0x5120
+#define MX28_PAD_EMI_DQM1__EMI_DQM1                    0x5130
+#define MX28_PAD_EMI_DDR_OPEN_FB__EMI_DDR_OPEN_FEEDBACK        0x5140
+#define MX28_PAD_EMI_CLK__EMI_CLK                      0x5150
+#define MX28_PAD_EMI_DQS0__EMI_DQS0                    0x5160
+#define MX28_PAD_EMI_DQS1__EMI_DQS1                    0x5170
+#define MX28_PAD_EMI_DDR_OPEN__EMI_DDR_OPEN            0x51a0
+#define MX28_PAD_EMI_A00__EMI_ADDR0                    0x6000
+#define MX28_PAD_EMI_A01__EMI_ADDR1                    0x6010
+#define MX28_PAD_EMI_A02__EMI_ADDR2                    0x6020
+#define MX28_PAD_EMI_A03__EMI_ADDR3                    0x6030
+#define MX28_PAD_EMI_A04__EMI_ADDR4                    0x6040
+#define MX28_PAD_EMI_A05__EMI_ADDR5                    0x6050
+#define MX28_PAD_EMI_A06__EMI_ADDR6                    0x6060
+#define MX28_PAD_EMI_A07__EMI_ADDR7                    0x6070
+#define MX28_PAD_EMI_A08__EMI_ADDR8                    0x6080
+#define MX28_PAD_EMI_A09__EMI_ADDR9                    0x6090
+#define MX28_PAD_EMI_A10__EMI_ADDR10                   0x60a0
+#define MX28_PAD_EMI_A11__EMI_ADDR11                   0x60b0
+#define MX28_PAD_EMI_A12__EMI_ADDR12                   0x60c0
+#define MX28_PAD_EMI_A13__EMI_ADDR13                   0x60d0
+#define MX28_PAD_EMI_A14__EMI_ADDR14                   0x60e0
+#define MX28_PAD_EMI_BA0__EMI_BA0                      0x6100
+#define MX28_PAD_EMI_BA1__EMI_BA1                      0x6110
+#define MX28_PAD_EMI_BA2__EMI_BA2                      0x6120
+#define MX28_PAD_EMI_CASN__EMI_CASN                    0x6130
+#define MX28_PAD_EMI_RASN__EMI_RASN                    0x6140
+#define MX28_PAD_EMI_WEN__EMI_WEN                      0x6150
+#define MX28_PAD_EMI_CE0N__EMI_CE0N                    0x6160
+#define MX28_PAD_EMI_CE1N__EMI_CE1N                    0x6170
+#define MX28_PAD_EMI_CKE__EMI_CKE                      0x6180
+#define MX28_PAD_GPMI_D00__SSP1_D0                     0x0001
+#define MX28_PAD_GPMI_D01__SSP1_D1                     0x0011
+#define MX28_PAD_GPMI_D02__SSP1_D2                     0x0021
+#define MX28_PAD_GPMI_D03__SSP1_D3                     0x0031
+#define MX28_PAD_GPMI_D04__SSP1_D4                     0x0041
+#define MX28_PAD_GPMI_D05__SSP1_D5                     0x0051
+#define MX28_PAD_GPMI_D06__SSP1_D6                     0x0061
+#define MX28_PAD_GPMI_D07__SSP1_D7                     0x0071
+#define MX28_PAD_GPMI_CE0N__SSP3_D0                    0x0101
+#define MX28_PAD_GPMI_CE1N__SSP3_D3                    0x0111
+#define MX28_PAD_GPMI_CE2N__CAN1_TX                    0x0121
+#define MX28_PAD_GPMI_CE3N__CAN1_RX                    0x0131
+#define MX28_PAD_GPMI_RDY0__SSP1_CARD_DETECT           0x0141
+#define MX28_PAD_GPMI_RDY1__SSP1_CMD                   0x0151
+#define MX28_PAD_GPMI_RDY2__CAN0_TX                    0x0161
+#define MX28_PAD_GPMI_RDY3__CAN0_RX                    0x0171
+#define MX28_PAD_GPMI_RDN__SSP3_SCK                    0x0181
+#define MX28_PAD_GPMI_WRN__SSP1_SCK                    0x0191
+#define MX28_PAD_GPMI_ALE__SSP3_D1                     0x01a1
+#define MX28_PAD_GPMI_CLE__SSP3_D2                     0x01b1
+#define MX28_PAD_GPMI_RESETN__SSP3_CMD                 0x01c1
+#define MX28_PAD_LCD_D03__ETM_DA8                      0x1031
+#define MX28_PAD_LCD_D04__ETM_DA9                      0x1041
+#define MX28_PAD_LCD_D08__ETM_DA3                      0x1081
+#define MX28_PAD_LCD_D09__ETM_DA4                      0x1091
+#define MX28_PAD_LCD_D20__ENET1_1588_EVENT2_OUT                0x1141
+#define MX28_PAD_LCD_D21__ENET1_1588_EVENT2_IN         0x1151
+#define MX28_PAD_LCD_D22__ENET1_1588_EVENT3_OUT                0x1161
+#define MX28_PAD_LCD_D23__ENET1_1588_EVENT3_IN         0x1171
+#define MX28_PAD_LCD_RD_E__LCD_VSYNC                   0x1181
+#define MX28_PAD_LCD_WR_RWN__LCD_HSYNC                 0x1191
+#define MX28_PAD_LCD_RS__LCD_DOTCLK                    0x11a1
+#define MX28_PAD_LCD_CS__LCD_ENABLE                    0x11b1
+#define MX28_PAD_LCD_VSYNC__SAIF1_SDATA0               0x11c1
+#define MX28_PAD_LCD_HSYNC__SAIF1_SDATA1               0x11d1
+#define MX28_PAD_LCD_DOTCLK__SAIF1_MCLK                        0x11e1
+#define MX28_PAD_SSP0_DATA4__SSP2_D0                   0x2041
+#define MX28_PAD_SSP0_DATA5__SSP2_D3                   0x2051
+#define MX28_PAD_SSP0_DATA6__SSP2_CMD                  0x2061
+#define MX28_PAD_SSP0_DATA7__SSP2_SCK                  0x2071
+#define MX28_PAD_SSP1_SCK__SSP2_D1                     0x20c1
+#define MX28_PAD_SSP1_CMD__SSP2_D2                     0x20d1
+#define MX28_PAD_SSP1_DATA0__SSP2_D6                   0x20e1
+#define MX28_PAD_SSP1_DATA3__SSP2_D7                   0x20f1
+#define MX28_PAD_SSP2_SCK__AUART2_RX                   0x2101
+#define MX28_PAD_SSP2_MOSI__AUART2_TX                  0x2111
+#define MX28_PAD_SSP2_MISO__AUART3_RX                  0x2121
+#define MX28_PAD_SSP2_SS0__AUART3_TX                   0x2131
+#define MX28_PAD_SSP2_SS1__SSP2_D1                     0x2141
+#define MX28_PAD_SSP2_SS2__SSP2_D2                     0x2151
+#define MX28_PAD_SSP3_SCK__AUART4_TX                   0x2181
+#define MX28_PAD_SSP3_MOSI__AUART4_RX                  0x2191
+#define MX28_PAD_SSP3_MISO__AUART4_RTS                 0x21a1
+#define MX28_PAD_SSP3_SS0__AUART4_CTS                  0x21b1
+#define MX28_PAD_AUART0_RX__I2C0_SCL                   0x3001
+#define MX28_PAD_AUART0_TX__I2C0_SDA                   0x3011
+#define MX28_PAD_AUART0_CTS__AUART4_RX                 0x3021
+#define MX28_PAD_AUART0_RTS__AUART4_TX                 0x3031
+#define MX28_PAD_AUART1_RX__SSP2_CARD_DETECT           0x3041
+#define MX28_PAD_AUART1_TX__SSP3_CARD_DETECT           0x3051
+#define MX28_PAD_AUART1_CTS__USB0_OVERCURRENT          0x3061
+#define MX28_PAD_AUART1_RTS__USB0_ID                   0x3071
+#define MX28_PAD_AUART2_RX__SSP3_D1                    0x3081
+#define MX28_PAD_AUART2_TX__SSP3_D2                    0x3091
+#define MX28_PAD_AUART2_CTS__I2C1_SCL                  0x30a1
+#define MX28_PAD_AUART2_RTS__I2C1_SDA                  0x30b1
+#define MX28_PAD_AUART3_RX__CAN0_TX                    0x30c1
+#define MX28_PAD_AUART3_TX__CAN0_RX                    0x30d1
+#define MX28_PAD_AUART3_CTS__CAN1_TX                   0x30e1
+#define MX28_PAD_AUART3_RTS__CAN1_RX                   0x30f1
+#define MX28_PAD_PWM0__I2C1_SCL                                0x3101
+#define MX28_PAD_PWM1__I2C1_SDA                                0x3111
+#define MX28_PAD_PWM2__USB0_ID                         0x3121
+#define MX28_PAD_SAIF0_MCLK__PWM_3                     0x3141
+#define MX28_PAD_SAIF0_LRCLK__PWM_4                    0x3151
+#define MX28_PAD_SAIF0_BITCLK__PWM_5                   0x3161
+#define MX28_PAD_SAIF0_SDATA0__PWM_6                   0x3171
+#define MX28_PAD_I2C0_SCL__TIMROT_ROTARYA              0x3181
+#define MX28_PAD_I2C0_SDA__TIMROT_ROTARYB              0x3191
+#define MX28_PAD_SAIF1_SDATA0__PWM_7                   0x31a1
+#define MX28_PAD_LCD_RESET__LCD_VSYNC                  0x31e1
+#define MX28_PAD_ENET0_MDC__GPMI_CE4N                  0x4001
+#define MX28_PAD_ENET0_MDIO__GPMI_CE5N                 0x4011
+#define MX28_PAD_ENET0_RX_EN__GPMI_CE6N                        0x4021
+#define MX28_PAD_ENET0_RXD0__GPMI_CE7N                 0x4031
+#define MX28_PAD_ENET0_RXD1__GPMI_READY4               0x4041
+#define MX28_PAD_ENET0_TX_CLK__HSADC_TRIGGER           0x4051
+#define MX28_PAD_ENET0_TX_EN__GPMI_READY5              0x4061
+#define MX28_PAD_ENET0_TXD0__GPMI_READY6               0x4071
+#define MX28_PAD_ENET0_TXD1__GPMI_READY7               0x4081
+#define MX28_PAD_ENET0_RXD2__ENET1_RXD0                        0x4091
+#define MX28_PAD_ENET0_RXD3__ENET1_RXD1                        0x40a1
+#define MX28_PAD_ENET0_TXD2__ENET1_TXD0                        0x40b1
+#define MX28_PAD_ENET0_TXD3__ENET1_TXD1                        0x40c1
+#define MX28_PAD_ENET0_RX_CLK__ENET0_RX_ER             0x40d1
+#define MX28_PAD_ENET0_COL__ENET1_TX_EN                        0x40e1
+#define MX28_PAD_ENET0_CRS__ENET1_RX_EN                        0x40f1
+#define MX28_PAD_GPMI_CE2N__ENET0_RX_ER                        0x0122
+#define MX28_PAD_GPMI_CE3N__SAIF1_MCLK                 0x0132
+#define MX28_PAD_GPMI_RDY0__USB0_ID                    0x0142
+#define MX28_PAD_GPMI_RDY2__ENET0_TX_ER                        0x0162
+#define MX28_PAD_GPMI_RDY3__HSADC_TRIGGER              0x0172
+#define MX28_PAD_GPMI_ALE__SSP3_D4                     0x01a2
+#define MX28_PAD_GPMI_CLE__SSP3_D5                     0x01b2
+#define MX28_PAD_LCD_D00__ETM_DA0                      0x1002
+#define MX28_PAD_LCD_D01__ETM_DA1                      0x1012
+#define MX28_PAD_LCD_D02__ETM_DA2                      0x1022
+#define MX28_PAD_LCD_D03__ETM_DA3                      0x1032
+#define MX28_PAD_LCD_D04__ETM_DA4                      0x1042
+#define MX28_PAD_LCD_D05__ETM_DA5                      0x1052
+#define MX28_PAD_LCD_D06__ETM_DA6                      0x1062
+#define MX28_PAD_LCD_D07__ETM_DA7                      0x1072
+#define MX28_PAD_LCD_D08__ETM_DA8                      0x1082
+#define MX28_PAD_LCD_D09__ETM_DA9                      0x1092
+#define MX28_PAD_LCD_D10__ETM_DA10                     0x10a2
+#define MX28_PAD_LCD_D11__ETM_DA11                     0x10b2
+#define MX28_PAD_LCD_D12__ETM_DA12                     0x10c2
+#define MX28_PAD_LCD_D13__ETM_DA13                     0x10d2
+#define MX28_PAD_LCD_D14__ETM_DA14                     0x10e2
+#define MX28_PAD_LCD_D15__ETM_DA15                     0x10f2
+#define MX28_PAD_LCD_D16__ETM_DA7                      0x1102
+#define MX28_PAD_LCD_D17__ETM_DA6                      0x1112
+#define MX28_PAD_LCD_D18__ETM_DA5                      0x1122
+#define MX28_PAD_LCD_D19__ETM_DA4                      0x1132
+#define MX28_PAD_LCD_D20__ETM_DA3                      0x1142
+#define MX28_PAD_LCD_D21__ETM_DA2                      0x1152
+#define MX28_PAD_LCD_D22__ETM_DA1                      0x1162
+#define MX28_PAD_LCD_D23__ETM_DA0                      0x1172
+#define MX28_PAD_LCD_RD_E__ETM_TCTL                    0x1182
+#define MX28_PAD_LCD_WR_RWN__ETM_TCLK                  0x1192
+#define MX28_PAD_LCD_HSYNC__ETM_TCTL                   0x11d2
+#define MX28_PAD_LCD_DOTCLK__ETM_TCLK                  0x11e2
+#define MX28_PAD_SSP1_SCK__ENET0_1588_EVENT2_OUT       0x20c2
+#define MX28_PAD_SSP1_CMD__ENET0_1588_EVENT2_IN                0x20d2
+#define MX28_PAD_SSP1_DATA0__ENET0_1588_EVENT3_OUT     0x20e2
+#define MX28_PAD_SSP1_DATA3__ENET0_1588_EVENT3_IN      0x20f2
+#define MX28_PAD_SSP2_SCK__SAIF0_SDATA1                        0x2102
+#define MX28_PAD_SSP2_MOSI__SAIF0_SDATA2               0x2112
+#define MX28_PAD_SSP2_MISO__SAIF1_SDATA1               0x2122
+#define MX28_PAD_SSP2_SS0__SAIF1_SDATA2                        0x2132
+#define MX28_PAD_SSP2_SS1__USB1_OVERCURRENT            0x2142
+#define MX28_PAD_SSP2_SS2__USB0_OVERCURRENT            0x2152
+#define MX28_PAD_SSP3_SCK__ENET1_1588_EVENT0_OUT       0x2182
+#define MX28_PAD_SSP3_MOSI__ENET1_1588_EVENT0_IN       0x2192
+#define MX28_PAD_SSP3_MISO__ENET1_1588_EVENT1_OUT      0x21a2
+#define MX28_PAD_SSP3_SS0__ENET1_1588_EVENT1_IN                0x21b2
+#define MX28_PAD_AUART0_RX__DUART_CTS                  0x3002
+#define MX28_PAD_AUART0_TX__DUART_RTS                  0x3012
+#define MX28_PAD_AUART0_CTS__DUART_RX                  0x3022
+#define MX28_PAD_AUART0_RTS__DUART_TX                  0x3032
+#define MX28_PAD_AUART1_RX__PWM_0                      0x3042
+#define MX28_PAD_AUART1_TX__PWM_1                      0x3052
+#define MX28_PAD_AUART1_CTS__TIMROT_ROTARYA            0x3062
+#define MX28_PAD_AUART1_RTS__TIMROT_ROTARYB            0x3072
+#define MX28_PAD_AUART2_RX__SSP3_D4                    0x3082
+#define MX28_PAD_AUART2_TX__SSP3_D5                    0x3092
+#define MX28_PAD_AUART2_CTS__SAIF1_BITCLK              0x30a2
+#define MX28_PAD_AUART2_RTS__SAIF1_LRCLK               0x30b2
+#define MX28_PAD_AUART3_RX__ENET0_1588_EVENT0_OUT      0x30c2
+#define MX28_PAD_AUART3_TX__ENET0_1588_EVENT0_IN       0x30d2
+#define MX28_PAD_AUART3_CTS__ENET0_1588_EVENT1_OUT     0x30e2
+#define MX28_PAD_AUART3_RTS__ENET0_1588_EVENT1_IN      0x30f2
+#define MX28_PAD_PWM0__DUART_RX                                0x3102
+#define MX28_PAD_PWM1__DUART_TX                                0x3112
+#define MX28_PAD_PWM2__USB1_OVERCURRENT                        0x3122
+#define MX28_PAD_SAIF0_MCLK__AUART4_CTS                        0x3142
+#define MX28_PAD_SAIF0_LRCLK__AUART4_RTS               0x3152
+#define MX28_PAD_SAIF0_BITCLK__AUART4_RX               0x3162
+#define MX28_PAD_SAIF0_SDATA0__AUART4_TX               0x3172
+#define MX28_PAD_I2C0_SCL__DUART_RX                    0x3182
+#define MX28_PAD_I2C0_SDA__DUART_TX                    0x3192
+#define MX28_PAD_SAIF1_SDATA0__SAIF0_SDATA1            0x31a2
+#define MX28_PAD_SPDIF__ENET1_RX_ER                    0x31b2
+#define MX28_PAD_ENET0_MDC__SAIF0_SDATA1               0x4002
+#define MX28_PAD_ENET0_MDIO__SAIF0_SDATA2              0x4012
+#define MX28_PAD_ENET0_RX_EN__SAIF1_SDATA1             0x4022
+#define MX28_PAD_ENET0_RXD0__SAIF1_SDATA2              0x4032
+#define MX28_PAD_ENET0_TX_CLK__ENET0_1588_EVENT2_OUT   0x4052
+#define MX28_PAD_ENET0_RXD2__ENET0_1588_EVENT0_OUT     0x4092
+#define MX28_PAD_ENET0_RXD3__ENET0_1588_EVENT0_IN      0x40a2
+#define MX28_PAD_ENET0_TXD2__ENET0_1588_EVENT1_OUT     0x40b2
+#define MX28_PAD_ENET0_TXD3__ENET0_1588_EVENT1_IN      0x40c2
+#define MX28_PAD_ENET0_RX_CLK__ENET0_1588_EVENT2_IN    0x40d2
+#define MX28_PAD_ENET0_COL__ENET0_1588_EVENT3_OUT      0x40e2
+#define MX28_PAD_ENET0_CRS__ENET0_1588_EVENT3_IN       0x40f2
+#define MX28_PAD_GPMI_D00__GPIO_0_0                    0x0003
+#define MX28_PAD_GPMI_D01__GPIO_0_1                    0x0013
+#define MX28_PAD_GPMI_D02__GPIO_0_2                    0x0023
+#define MX28_PAD_GPMI_D03__GPIO_0_3                    0x0033
+#define MX28_PAD_GPMI_D04__GPIO_0_4                    0x0043
+#define MX28_PAD_GPMI_D05__GPIO_0_5                    0x0053
+#define MX28_PAD_GPMI_D06__GPIO_0_6                    0x0063
+#define MX28_PAD_GPMI_D07__GPIO_0_7                    0x0073
+#define MX28_PAD_GPMI_CE0N__GPIO_0_16                  0x0103
+#define MX28_PAD_GPMI_CE1N__GPIO_0_17                  0x0113
+#define MX28_PAD_GPMI_CE2N__GPIO_0_18                  0x0123
+#define MX28_PAD_GPMI_CE3N__GPIO_0_19                  0x0133
+#define MX28_PAD_GPMI_RDY0__GPIO_0_20                  0x0143
+#define MX28_PAD_GPMI_RDY1__GPIO_0_21                  0x0153
+#define MX28_PAD_GPMI_RDY2__GPIO_0_22                  0x0163
+#define MX28_PAD_GPMI_RDY3__GPIO_0_23                  0x0173
+#define MX28_PAD_GPMI_RDN__GPIO_0_24                   0x0183
+#define MX28_PAD_GPMI_WRN__GPIO_0_25                   0x0193
+#define MX28_PAD_GPMI_ALE__GPIO_0_26                   0x01a3
+#define MX28_PAD_GPMI_CLE__GPIO_0_27                   0x01b3
+#define MX28_PAD_GPMI_RESETN__GPIO_0_28                        0x01c3
+#define MX28_PAD_LCD_D00__GPIO_1_0                     0x1003
+#define MX28_PAD_LCD_D01__GPIO_1_1                     0x1013
+#define MX28_PAD_LCD_D02__GPIO_1_2                     0x1023
+#define MX28_PAD_LCD_D03__GPIO_1_3                     0x1033
+#define MX28_PAD_LCD_D04__GPIO_1_4                     0x1043
+#define MX28_PAD_LCD_D05__GPIO_1_5                     0x1053
+#define MX28_PAD_LCD_D06__GPIO_1_6                     0x1063
+#define MX28_PAD_LCD_D07__GPIO_1_7                     0x1073
+#define MX28_PAD_LCD_D08__GPIO_1_8                     0x1083
+#define MX28_PAD_LCD_D09__GPIO_1_9                     0x1093
+#define MX28_PAD_LCD_D10__GPIO_1_10                    0x10a3
+#define MX28_PAD_LCD_D11__GPIO_1_11                    0x10b3
+#define MX28_PAD_LCD_D12__GPIO_1_12                    0x10c3
+#define MX28_PAD_LCD_D13__GPIO_1_13                    0x10d3
+#define MX28_PAD_LCD_D14__GPIO_1_14                    0x10e3
+#define MX28_PAD_LCD_D15__GPIO_1_15                    0x10f3
+#define MX28_PAD_LCD_D16__GPIO_1_16                    0x1103
+#define MX28_PAD_LCD_D17__GPIO_1_17                    0x1113
+#define MX28_PAD_LCD_D18__GPIO_1_18                    0x1123
+#define MX28_PAD_LCD_D19__GPIO_1_19                    0x1133
+#define MX28_PAD_LCD_D20__GPIO_1_20                    0x1143
+#define MX28_PAD_LCD_D21__GPIO_1_21                    0x1153
+#define MX28_PAD_LCD_D22__GPIO_1_22                    0x1163
+#define MX28_PAD_LCD_D23__GPIO_1_23                    0x1173
+#define MX28_PAD_LCD_RD_E__GPIO_1_24                   0x1183
+#define MX28_PAD_LCD_WR_RWN__GPIO_1_25                 0x1193
+#define MX28_PAD_LCD_RS__GPIO_1_26                     0x11a3
+#define MX28_PAD_LCD_CS__GPIO_1_27                     0x11b3
+#define MX28_PAD_LCD_VSYNC__GPIO_1_28                  0x11c3
+#define MX28_PAD_LCD_HSYNC__GPIO_1_29                  0x11d3
+#define MX28_PAD_LCD_DOTCLK__GPIO_1_30                 0x11e3
+#define MX28_PAD_LCD_ENABLE__GPIO_1_31                 0x11f3
+#define MX28_PAD_SSP0_DATA0__GPIO_2_0                  0x2003
+#define MX28_PAD_SSP0_DATA1__GPIO_2_1                  0x2013
+#define MX28_PAD_SSP0_DATA2__GPIO_2_2                  0x2023
+#define MX28_PAD_SSP0_DATA3__GPIO_2_3                  0x2033
+#define MX28_PAD_SSP0_DATA4__GPIO_2_4                  0x2043
+#define MX28_PAD_SSP0_DATA5__GPIO_2_5                  0x2053
+#define MX28_PAD_SSP0_DATA6__GPIO_2_6                  0x2063
+#define MX28_PAD_SSP0_DATA7__GPIO_2_7                  0x2073
+#define MX28_PAD_SSP0_CMD__GPIO_2_8                    0x2083
+#define MX28_PAD_SSP0_DETECT__GPIO_2_9                 0x2093
+#define MX28_PAD_SSP0_SCK__GPIO_2_10                   0x20a3
+#define MX28_PAD_SSP1_SCK__GPIO_2_12                   0x20c3
+#define MX28_PAD_SSP1_CMD__GPIO_2_13                   0x20d3
+#define MX28_PAD_SSP1_DATA0__GPIO_2_14                 0x20e3
+#define MX28_PAD_SSP1_DATA3__GPIO_2_15                 0x20f3
+#define MX28_PAD_SSP2_SCK__GPIO_2_16                   0x2103
+#define MX28_PAD_SSP2_MOSI__GPIO_2_17                  0x2113
+#define MX28_PAD_SSP2_MISO__GPIO_2_18                  0x2123
+#define MX28_PAD_SSP2_SS0__GPIO_2_19                   0x2133
+#define MX28_PAD_SSP2_SS1__GPIO_2_20                   0x2143
+#define MX28_PAD_SSP2_SS2__GPIO_2_21                   0x2153
+#define MX28_PAD_SSP3_SCK__GPIO_2_24                   0x2183
+#define MX28_PAD_SSP3_MOSI__GPIO_2_25                  0x2193
+#define MX28_PAD_SSP3_MISO__GPIO_2_26                  0x21a3
+#define MX28_PAD_SSP3_SS0__GPIO_2_27                   0x21b3
+#define MX28_PAD_AUART0_RX__GPIO_3_0                   0x3003
+#define MX28_PAD_AUART0_TX__GPIO_3_1                   0x3013
+#define MX28_PAD_AUART0_CTS__GPIO_3_2                  0x3023
+#define MX28_PAD_AUART0_RTS__GPIO_3_3                  0x3033
+#define MX28_PAD_AUART1_RX__GPIO_3_4                   0x3043
+#define MX28_PAD_AUART1_TX__GPIO_3_5                   0x3053
+#define MX28_PAD_AUART1_CTS__GPIO_3_6                  0x3063
+#define MX28_PAD_AUART1_RTS__GPIO_3_7                  0x3073
+#define MX28_PAD_AUART2_RX__GPIO_3_8                   0x3083
+#define MX28_PAD_AUART2_TX__GPIO_3_9                   0x3093
+#define MX28_PAD_AUART2_CTS__GPIO_3_10                 0x30a3
+#define MX28_PAD_AUART2_RTS__GPIO_3_11                 0x30b3
+#define MX28_PAD_AUART3_RX__GPIO_3_12                  0x30c3
+#define MX28_PAD_AUART3_TX__GPIO_3_13                  0x30d3
+#define MX28_PAD_AUART3_CTS__GPIO_3_14                 0x30e3
+#define MX28_PAD_AUART3_RTS__GPIO_3_15                 0x30f3
+#define MX28_PAD_PWM0__GPIO_3_16                       0x3103
+#define MX28_PAD_PWM1__GPIO_3_17                       0x3113
+#define MX28_PAD_PWM2__GPIO_3_18                       0x3123
+#define MX28_PAD_SAIF0_MCLK__GPIO_3_20                 0x3143
+#define MX28_PAD_SAIF0_LRCLK__GPIO_3_21                        0x3153
+#define MX28_PAD_SAIF0_BITCLK__GPIO_3_22               0x3163
+#define MX28_PAD_SAIF0_SDATA0__GPIO_3_23               0x3173
+#define MX28_PAD_I2C0_SCL__GPIO_3_24                   0x3183
+#define MX28_PAD_I2C0_SDA__GPIO_3_25                   0x3193
+#define MX28_PAD_SAIF1_SDATA0__GPIO_3_26               0x31a3
+#define MX28_PAD_SPDIF__GPIO_3_27                      0x31b3
+#define MX28_PAD_PWM3__GPIO_3_28                       0x31c3
+#define MX28_PAD_PWM4__GPIO_3_29                       0x31d3
+#define MX28_PAD_LCD_RESET__GPIO_3_30                  0x31e3
+#define MX28_PAD_ENET0_MDC__GPIO_4_0                   0x4003
+#define MX28_PAD_ENET0_MDIO__GPIO_4_1                  0x4013
+#define MX28_PAD_ENET0_RX_EN__GPIO_4_2                 0x4023
+#define MX28_PAD_ENET0_RXD0__GPIO_4_3                  0x4033
+#define MX28_PAD_ENET0_RXD1__GPIO_4_4                  0x4043
+#define MX28_PAD_ENET0_TX_CLK__GPIO_4_5                        0x4053
+#define MX28_PAD_ENET0_TX_EN__GPIO_4_6                 0x4063
+#define MX28_PAD_ENET0_TXD0__GPIO_4_7                  0x4073
+#define MX28_PAD_ENET0_TXD1__GPIO_4_8                  0x4083
+#define MX28_PAD_ENET0_RXD2__GPIO_4_9                  0x4093
+#define MX28_PAD_ENET0_RXD3__GPIO_4_10                 0x40a3
+#define MX28_PAD_ENET0_TXD2__GPIO_4_11                 0x40b3
+#define MX28_PAD_ENET0_TXD3__GPIO_4_12                 0x40c3
+#define MX28_PAD_ENET0_RX_CLK__GPIO_4_13               0x40d3
+#define MX28_PAD_ENET0_COL__GPIO_4_14                  0x40e3
+#define MX28_PAD_ENET0_CRS__GPIO_4_15                  0x40f3
+#define MX28_PAD_ENET_CLK__GPIO_4_16                   0x4103
+#define MX28_PAD_JTAG_RTCK__GPIO_4_20                  0x4143
+
+#endif /* __DT_BINDINGS_MX28_PINCTRL_H__ */
index 6c6a5442800ad78adfe13ada4cf44a2cfd3cfbc5..4870f07bf56a86423c6a910a5c86ce6fce1624a4 100644 (file)
@@ -10,7 +10,7 @@
  */
 
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
 
 / {
        model = "SchulerControl GmbH, SC SPS 1";
                                hog_pins_a: hog-gpios@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0003 /* MX28_PAD_GPMI_D00__GPIO_0_0 */
-                                               0x0033 /* MX28_PAD_GPMI_D03__GPIO_0_3 */
-                                               0x0063 /* MX28_PAD_GPMI_D06__GPIO_0_6 */
+                                               MX28_PAD_GPMI_D00__GPIO_0_0
+                                               MX28_PAD_GPMI_D03__GPIO_0_3
+                                               MX28_PAD_GPMI_D06__GPIO_0_6
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                        };
index 37be532f00550bf868b3265d1a7d7362b3443a35..be5a0550d58c3312d37f36e04c937d5739c7f181 100644 (file)
+/*
+ * Copyright 2012 Shawn Guo <shawn.guo@linaro.org>
+ * Copyright 2013 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
 /dts-v1/;
-/include/ "imx28.dtsi"
+#include "imx28.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "Ka-Ro electronics TX28 module";
        compatible = "karo,tx28", "fsl,imx28";
 
+       aliases {
+               can0 = &can0;
+               can1 = &can1;
+               display = &display;
+               ds1339 = &ds1339;
+               gpio5 = &gpio5;
+               lcdif = &lcdif;
+               lcdif_23bit_pins = &tx28_lcdif_23bit_pins;
+               lcdif_24bit_pins = &lcdif_24bit_pins_a;
+               stk5led = &user_led;
+               usbotg = &usb0;
+       };
+
        memory {
-               reg = <0x40000000 0x08000000>;
-       };
-
-       apb@80000000 {
-               apbh@80000000 {
-                       ssp0: ssp@80010000 {
-                               compatible = "fsl,imx28-mmc";
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&mmc0_4bit_pins_a
-                                            &mmc0_cd_cfg
-                                            &mmc0_sck_cfg>;
-                               bus-width = <4>;
-                               status = "okay";
-                       };
+               reg = <0 0>; /* will be filled in by U-Boot */
+       };
 
-                       pinctrl@80018000 {
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&hog_pins_a>;
-
-                               hog_pins_a: hog@0 {
-                                       reg = <0>;
-                                       fsl,pinmux-ids = <
-                                               0x40a3 /* MX28_PAD_ENET0_RXD3__GPIO_4_10 */
-                                       >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
-                               };
-
-                               mac0_pins_gpio: mac0-gpio-mode@0 {
-                                       reg = <0>;
-                                       fsl,pinmux-ids = <
-                                               0x4003 /* MX28_PAD_ENET0_MDC__GPIO_4_0 */
-                                               0x4013 /* MX28_PAD_ENET0_MDIO__GPIO_4_1 */
-                                               0x4023 /* MX28_PAD_ENET0_RX_EN__GPIO_4_2 */
-                                               0x4033 /* MX28_PAD_ENET0_RXD0__GPIO_4_3 */
-                                               0x4043 /* MX28_PAD_ENET0_RXD1__GPIO_4_4 */
-                                               0x4063 /* MX28_PAD_ENET0_TX_EN__GPIO_4_6 */
-                                               0x4073 /* MX28_PAD_ENET0_TXD0__GPIO_4_7 */
-                                               0x4083 /* MX28_PAD_ENET0_TXD1__GPIO_4_8 */
-                                               0x4103 /* MX28_PAD_ENET_CLK__GPIO_4_16 */
-                                       >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
-                               };
-                       };
+       onewire {
+               compatible = "w1-gpio";
+               gpios = <&gpio2 7 0>;
+               status = "disabled";
+       };
+
+       regulators {
+               compatible = "simple-bus";
+
+               reg_usb0_vbus: usb0_vbus {
+                       compatible = "regulator-fixed";
+                       regulator-name = "usb0_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio0 18 0>;
+                       enable-active-high;
                };
 
-               apbx@80040000 {
-                       i2c0: i2c@80058000 {
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&i2c0_pins_a>;
-                               status = "okay";
+               reg_usb1_vbus: usb1_vbus {
+                       compatible = "regulator-fixed";
+                       regulator-name = "usb1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio3 27 0>;
+                       enable-active-high;
+               };
 
-                               ds1339: rtc@68 {
-                                       compatible = "mxim,ds1339";
-                                       reg = <0x68>;
-                               };
-                       };
+               reg_2p5v: 2p5v {
+                       compatible = "regulator-fixed";
+                       regulator-name = "2P5V";
+                       regulator-min-microvolt = <2500000>;
+                       regulator-max-microvolt = <2500000>;
+                       regulator-always-on;
+               };
 
-                       pwm: pwm@80064000 {
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&pwm0_pins_a>;
-                               status = "okay";
-                       };
+               reg_3p3v: 3p3v {
+                       compatible = "regulator-fixed";
+                       regulator-name = "3P3V";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-always-on;
+               };
 
-                       duart: serial@80074000 {
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&duart_4pins_a>;
-                               status = "okay";
-                       };
+               reg_can_xcvr: can-xcvr {
+                       compatible = "regulator-fixed";
+                       regulator-name = "CAN XCVR";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio1 0 0>;
+                       enable-active-low;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&tx28_flexcan_xcvr_pins>;
+               };
 
-                       auart1: serial@8006c000 {
-                               pinctrl-names = "default";
-                               pinctrl-0 = <&auart1_pins_a>;
-                               status = "okay";
-                       };
+               reg_lcd: lcd-power {
+                       compatible = "regulator-fixed";
+                       regulator-name = "LCD POWER";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio1 31 0>;
+                       enable-active-high;
+               };
+
+               reg_lcd_reset: lcd-reset {
+                       compatible = "regulator-fixed";
+                       regulator-name = "LCD RESET";
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       gpio = <&gpio3 30 0>;
+                       startup-delay-us = <300000>;
+                       enable-active-high;
+                       regulator-always-on;
+                       regulator-boot-on;
                };
        };
 
-       ahb@80080000 {
-               mac0: ethernet@800f0000 {
-                       phy-mode = "rmii";
-                       pinctrl-names = "default", "gpio_mode";
-                       pinctrl-0 = <&mac0_pins_a>;
-                       pinctrl-1 = <&mac0_pins_gpio>;
-                       status = "okay";
+       clocks {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               mclk: clock@0 {
+                       compatible = "fixed-clock";
+                       reg = <0>;
+                       #clock-cells = <0>;
+                       clock-frequency = <27000000>;
                };
        };
 
+       sound {
+               compatible = "fsl,imx28-tx28-sgtl5000",
+                            "fsl,mxs-audio-sgtl5000";
+               model = "imx28-tx28-sgtl5000";
+               saif-controllers = <&saif0 &saif1>;
+               audio-codec = <&sgtl5000>;
+       };
+
        leds {
                compatible = "gpio-leds";
 
-               user {
+               user_led: user {
                        label = "Heartbeat";
                        gpios = <&gpio4 10 0>;
                        linux,default-trigger = "heartbeat";
 
        backlight {
                compatible = "pwm-backlight";
-               pwms = <&pwm 0 5000000>;
-               brightness-levels = <0 4 8 16 32 64 128 255>;
-               default-brightness-level = <6>;
+               pwms = <&pwm 0 500000>;
+               /*
+                * a silly way to create a 1:1 relationship between the
+                * PWM value and the actual duty cycle
+                */
+               brightness-levels = < 0  1  2  3  4  5  6  7  8  9
+                                    10 11 12 13 14 15 16 17 18 19
+                                    20 21 22 23 24 25 26 27 28 29
+                                    30 31 32 33 34 35 36 37 38 39
+                                    40 41 42 43 44 45 46 47 48 49
+                                    50 51 52 53 54 55 56 57 58 59
+                                    60 61 62 63 64 65 66 67 68 69
+                                    70 71 72 73 74 75 76 77 78 79
+                                    80 81 82 83 84 85 86 87 88 89
+                                    90 91 92 93 94 95 96 97 98 99
+                                   100>;
+               default-brightness-level = <50>;
+       };
+
+       matrix_keypad: matrix-keypad@0 {
+               compatible = "gpio-matrix-keypad";
+               col-gpios = <
+                       &gpio5 0 0
+                       &gpio5 1 0
+                       &gpio5 2 0
+                       &gpio5 3 0
+               >;
+               row-gpios = <
+                       &gpio5 4 0
+                       &gpio5 5 0
+                       &gpio5 6 0
+                       &gpio5 7 0
+               >;
+               /* sample keymap */
+               linux,keymap = <
+                       0x00000074 /* row 0, col 0, KEY_POWER */
+                       0x00010052 /* row 0, col 1, KEY_KP0 */
+                       0x0002004f /* row 0, col 2, KEY_KP1 */
+                       0x00030050 /* row 0, col 3, KEY_KP2 */
+                       0x01000051 /* row 1, col 0, KEY_KP3 */
+                       0x0101004b /* row 1, col 1, KEY_KP4 */
+                       0x0102004c /* row 1, col 2, KEY_KP5 */
+                       0x0103004d /* row 1, col 3, KEY_KP6 */
+                       0x02000047 /* row 2, col 0, KEY_KP7 */
+                       0x02010048 /* row 2, col 1, KEY_KP8 */
+                       0x02020049 /* row 2, col 2, KEY_KP9 */
+               >;
+               gpio-activelow;
+               linux,wakeup;
+               debounce-delay-ms = <100>;
+               col-scan-delay-us = <5000>;
+               linux,no-autorepeat;
+       };
+};
+
+/* 2nd TX-Std UART - (A)UART1  */
+&auart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart1_pins_a>;
+       status = "okay";
+};
+
+/* 3rd TX-Std UART - (A)UART3  */
+&auart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&auart3_pins_a>;
+       status = "okay";
+};
+
+&can0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can0_pins_a>;
+       xceiver-supply = <&reg_can_xcvr>;
+       status = "okay";
+};
+
+&can1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&can1_pins_a>;
+       xceiver-supply = <&reg_can_xcvr>;
+       status = "okay";
+};
+
+&digctl {
+       status = "okay";
+};
+
+/* 1st TX-Std UART - (D)UART */
+&duart {
+       pinctrl-names = "default";
+       pinctrl-0 = <&duart_4pins_a>;
+       status = "okay";
+};
+
+&gpmi {
+       pinctrl-0 = <&gpmi_pins_a &gpmi_status_cfg>;
+       nand-on-flash-bbt;
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       clock-frequency = <400000>;
+       status = "okay";
+
+       sgtl5000: sgtl5000@0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+               clocks = <&mclk>;
+       };
+
+       gpio5: pca953x@20 {
+               compatible = "nxp,pca9554";
+               reg = <0x20>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tx28_pca9554_pins>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <28 0>;
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       polytouch: edt-ft5x06@38 {
+               compatible = "edt,edt-ft5x06";
+               reg = <0x38>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tx28_edt_ft5x06_pins>;
+               interrupt-parent = <&gpio2>;
+               interrupts = <5 0>;
+               reset-gpios = <&gpio2 6 1>;
+               wake-gpios = <&gpio4 9 0>;
+       };
+
+       touchscreen: tsc2007@48 {
+               compatible = "ti,tsc2007";
+               reg = <0x48>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&tx28_tsc2007_pins>;
+               interrupt-parent = <&gpio3>;
+               interrupts = <20 0>;
+               pendown-gpio = <&gpio3 20 1>;
+               ti,x-plate-ohms = /bits/ 16 <660>;
+       };
+
+       ds1339: rtc@68 {
+               compatible = "mxim,ds1339";
+               reg = <0x68>;
+       };
+};
+
+&lcdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&lcdif_24bit_pins_a &lcdif_sync_pins_a &tx28_lcdif_ctrl_pins>;
+       lcd-supply = <&reg_lcd>;
+       display = <&display>;
+       status = "okay";
+
+       display: display@0 {
+               bits-per-pixel = <32>;
+               bus-width = <24>;
+               display-timings {
+                       native-mode = <&timing5>;
+                       timing0: timing0 {
+                               panel-name = "VGA";
+                               clock-frequency = <25175000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <48>;
+                               hsync-len = <96>;
+                               hfront-porch = <16>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       timing1: timing1 {
+                               panel-name = "ETV570";
+                               clock-frequency = <25175000>;
+                               hactive = <640>;
+                               vactive = <480>;
+                               hback-porch = <114>;
+                               hsync-len = <30>;
+                               hfront-porch = <16>;
+                               vback-porch = <32>;
+                               vsync-len = <3>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       timing2: timing2 {
+                               panel-name = "ET0350";
+                               clock-frequency = <6500000>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <34>;
+                               hsync-len = <34>;
+                               hfront-porch = <20>;
+                               vback-porch = <15>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       timing3: timing3 {
+                               panel-name = "ET0430";
+                               clock-frequency = <9000000>;
+                               hactive = <480>;
+                               vactive = <272>;
+                               hback-porch = <2>;
+                               hsync-len = <41>;
+                               hfront-porch = <2>;
+                               vback-porch = <2>;
+                               vsync-len = <10>;
+                               vfront-porch = <2>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       timing4: timing4 {
+                               panel-name = "ET0500", "ET0700";
+                               clock-frequency = <33260000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <88>;
+                               hsync-len = <128>;
+                               hfront-porch = <40>;
+                               vback-porch = <33>;
+                               vsync-len = <2>;
+                               vfront-porch = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+
+                       timing5: timing5 {
+                               panel-name = "ETQ570";
+                               clock-frequency = <6400000>;
+                               hactive = <320>;
+                               vactive = <240>;
+                               hback-porch = <38>;
+                               hsync-len = <30>;
+                               hfront-porch = <30>;
+                               vback-porch = <16>;
+                               vsync-len = <3>;
+                               vfront-porch = <4>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <1>;
+                       };
+               };
+       };
+};
+
+&lradc {
+       fsl,lradc-touchscreen-wires = <4>;
+       status = "okay";
+};
+
+&mac0 {
+       phy-mode = "rmii";
+       pinctrl-names = "default", "gpio_mode";
+       pinctrl-0 = <&mac0_pins_a>;
+       pinctrl-1 = <&tx28_mac0_pins_gpio>;
+       status = "okay";
+};
+
+&mac1 {
+       phy-mode = "rmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&mac1_pins_a>;
+       /* not enabled by default */
+};
+
+&mxs_rtc {
+       status = "okay";
+};
+
+&ocotp {
+       status = "okay";
+};
+
+&pwm {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pwm0_pins_a>;
+       status = "okay";
+};
+
+&pinctrl {
+       pinctrl-names = "default";
+       pinctrl-0 = <&hog_pins_a>;
+
+       hog_pins_a: hog@0 {
+               reg = <0>;
+               fsl,pinmux-ids = <
+                       MX28_PAD_ENET0_RXD3__GPIO_4_10 /* module LED */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_edt_ft5x06_pins: tx28-edt-ft5x06-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_SSP0_DATA6__GPIO_2_6 /* RESET */
+                       MX28_PAD_SSP0_DATA5__GPIO_2_5 /* IRQ */
+                       MX28_PAD_ENET0_RXD2__GPIO_4_9 /* WAKE */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_flexcan_xcvr_pins: tx28-flexcan-xcvr-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_LCD_D00__GPIO_1_0
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_lcdif_23bit_pins: tx28-lcdif-23bit {
+               fsl,pinmux-ids = <
+                       /* LCD_D00 may be used as Flexcan Transceiver Enable on STK5-V5 */
+                       MX28_PAD_LCD_D01__LCD_D1
+                       MX28_PAD_LCD_D02__LCD_D2
+                       MX28_PAD_LCD_D03__LCD_D3
+                       MX28_PAD_LCD_D04__LCD_D4
+                       MX28_PAD_LCD_D05__LCD_D5
+                       MX28_PAD_LCD_D06__LCD_D6
+                       MX28_PAD_LCD_D07__LCD_D7
+                       MX28_PAD_LCD_D08__LCD_D8
+                       MX28_PAD_LCD_D09__LCD_D9
+                       MX28_PAD_LCD_D10__LCD_D10
+                       MX28_PAD_LCD_D11__LCD_D11
+                       MX28_PAD_LCD_D12__LCD_D12
+                       MX28_PAD_LCD_D13__LCD_D13
+                       MX28_PAD_LCD_D14__LCD_D14
+                       MX28_PAD_LCD_D15__LCD_D15
+                       MX28_PAD_LCD_D16__LCD_D16
+                       MX28_PAD_LCD_D17__LCD_D17
+                       MX28_PAD_LCD_D18__LCD_D18
+                       MX28_PAD_LCD_D19__LCD_D19
+                       MX28_PAD_LCD_D20__LCD_D20
+                       MX28_PAD_LCD_D21__LCD_D21
+                       MX28_PAD_LCD_D22__LCD_D22
+                       MX28_PAD_LCD_D23__LCD_D23
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_lcdif_ctrl_pins: tx28-lcdif-ctrl {
+               fsl,pinmux-ids = <
+                       MX28_PAD_LCD_ENABLE__GPIO_1_31 /* Enable */
+                       MX28_PAD_LCD_RESET__GPIO_3_30  /* Reset */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_mac0_pins_gpio: tx28-mac0-gpio-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_ENET0_MDC__GPIO_4_0
+                       MX28_PAD_ENET0_MDIO__GPIO_4_1
+                       MX28_PAD_ENET0_RX_EN__GPIO_4_2
+                       MX28_PAD_ENET0_RXD0__GPIO_4_3
+                       MX28_PAD_ENET0_RXD1__GPIO_4_4
+                       MX28_PAD_ENET0_TX_EN__GPIO_4_6
+                       MX28_PAD_ENET0_TXD0__GPIO_4_7
+                       MX28_PAD_ENET0_TXD1__GPIO_4_8
+                       MX28_PAD_ENET_CLK__GPIO_4_16
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_pca9554_pins: tx28-pca9554-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_PWM3__GPIO_3_28
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_tsc2007_pins: tx28-tsc2007-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_SAIF0_MCLK__GPIO_3_20 /* TSC2007 IRQ */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_4mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+
+       tx28_usbphy0_pins: tx28-usbphy0-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_GPMI_CE2N__GPIO_0_18 /* USBOTG_VBUSEN */
+                       MX28_PAD_GPMI_CE3N__GPIO_0_19 /* USBOTH_OC */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_12mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+
+       tx28_usbphy1_pins: tx28-usbphy1-pins {
+               fsl,pinmux-ids = <
+                       MX28_PAD_SPDIF__GPIO_3_27 /* USBH_VBUSEN */
+                       MX28_PAD_JTAG_RTCK__GPIO_4_20 /* USBH_OC */
+               >;
+               fsl,drive-strength = <MXS_DRIVE_12mA>;
+               fsl,voltage = <MXS_VOLTAGE_HIGH>;
+               fsl,pull-up = <MXS_PULL_DISABLE>;
+       };
+};
+
+&saif0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&saif0_pins_b>;
+       fsl,saif-master;
+       status = "okay";
+};
+
+&saif1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&saif1_pins_a>;
+       status = "okay";
+};
+
+&ssp0 {
+       compatible = "fsl,imx28-mmc";
+       pinctrl-names = "default", "special";
+       pinctrl-0 = <&mmc0_4bit_pins_a
+                    &mmc0_cd_cfg
+                    &mmc0_sck_cfg>;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&ssp3 {
+       compatible = "fsl,imx28-spi";
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi3_pins_a>;
+       clock-frequency = <57600000>;
+       status = "okay";
+
+       spidev0: spi@0 {
+               compatible = "spidev";
+               reg = <0>;
+               spi-max-frequency = <57600000>;
+       };
+
+       spidev1: spi@1 {
+               compatible = "spidev";
+               reg = <1>;
+               spi-max-frequency = <57600000>;
        };
 };
+
+&usb0 {
+       vbus-supply = <&reg_usb0_vbus>;
+       disable-over-current;
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
+&usb1 {
+       vbus-supply = <&reg_usb1_vbus>;
+       disable-over-current;
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&tx28_usbphy0_pins>;
+       phy_type = "utmi";
+       status = "okay";
+};
+
+&usbphy1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&tx28_usbphy1_pins>;
+       phy_type = "utmi";
+       status = "okay";
+};
index 7363fded95ee9411d21faf35c4a242ccd5aeb592..1c5ed9dbebb579194ece138c39bb35a5050c0ab3 100644 (file)
@@ -9,7 +9,8 @@
  * http://www.gnu.org/copyleft/gpl.html
  */
 
-/include/ "skeleton.dtsi"
+#include "skeleton.dtsi"
+#include "imx28-pinfunc.h"
 
 / {
        interrupt-parent = <&icoll>;
                                duart_pins_a: duart@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3102 /* MX28_PAD_PWM0__DUART_RX */
-                                               0x3112 /* MX28_PAD_PWM1__DUART_TX */
+                                               MX28_PAD_PWM0__DUART_RX
+                                               MX28_PAD_PWM1__DUART_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                duart_pins_b: duart@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x3022 /* MX28_PAD_AUART0_CTS__DUART_RX */
-                                               0x3032 /* MX28_PAD_AUART0_RTS__DUART_TX */
+                                               MX28_PAD_AUART0_CTS__DUART_RX
+                                               MX28_PAD_AUART0_RTS__DUART_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                duart_4pins_a: duart-4pins@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3022 /* MX28_PAD_AUART0_CTS__DUART_RX */
-                                               0x3032 /* MX28_PAD_AUART0_RTS__DUART_TX */
-                                               0x3002 /* MX28_PAD_AUART0_RX__DUART_CTS */
-                                               0x3012 /* MX28_PAD_AUART0_TX__DUART_RTS */
+                                               MX28_PAD_AUART0_CTS__DUART_RX
+                                               MX28_PAD_AUART0_RTS__DUART_TX
+                                               MX28_PAD_AUART0_RX__DUART_CTS
+                                               MX28_PAD_AUART0_TX__DUART_RTS
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                gpmi_pins_a: gpmi-nand@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0000 /* MX28_PAD_GPMI_D00__GPMI_D0 */
-                                               0x0010 /* MX28_PAD_GPMI_D01__GPMI_D1 */
-                                               0x0020 /* MX28_PAD_GPMI_D02__GPMI_D2 */
-                                               0x0030 /* MX28_PAD_GPMI_D03__GPMI_D3 */
-                                               0x0040 /* MX28_PAD_GPMI_D04__GPMI_D4 */
-                                               0x0050 /* MX28_PAD_GPMI_D05__GPMI_D5 */
-                                               0x0060 /* MX28_PAD_GPMI_D06__GPMI_D6 */
-                                               0x0070 /* MX28_PAD_GPMI_D07__GPMI_D7 */
-                                               0x0100 /* MX28_PAD_GPMI_CE0N__GPMI_CE0N */
-                                               0x0140 /* MX28_PAD_GPMI_RDY0__GPMI_READY0 */
-                                               0x0180 /* MX28_PAD_GPMI_RDN__GPMI_RDN */
-                                               0x0190 /* MX28_PAD_GPMI_WRN__GPMI_WRN */
-                                               0x01a0 /* MX28_PAD_GPMI_ALE__GPMI_ALE */
-                                               0x01b0 /* MX28_PAD_GPMI_CLE__GPMI_CLE */
-                                               0x01c0 /* MX28_PAD_GPMI_RESETN__GPMI_RESETN */
+                                               MX28_PAD_GPMI_D00__GPMI_D0
+                                               MX28_PAD_GPMI_D01__GPMI_D1
+                                               MX28_PAD_GPMI_D02__GPMI_D2
+                                               MX28_PAD_GPMI_D03__GPMI_D3
+                                               MX28_PAD_GPMI_D04__GPMI_D4
+                                               MX28_PAD_GPMI_D05__GPMI_D5
+                                               MX28_PAD_GPMI_D06__GPMI_D6
+                                               MX28_PAD_GPMI_D07__GPMI_D7
+                                               MX28_PAD_GPMI_CE0N__GPMI_CE0N
+                                               MX28_PAD_GPMI_RDY0__GPMI_READY0
+                                               MX28_PAD_GPMI_RDN__GPMI_RDN
+                                               MX28_PAD_GPMI_WRN__GPMI_WRN
+                                               MX28_PAD_GPMI_ALE__GPMI_ALE
+                                               MX28_PAD_GPMI_CLE__GPMI_CLE
+                                               MX28_PAD_GPMI_RESETN__GPMI_RESETN
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                gpmi_status_cfg: gpmi-status-cfg {
                                        fsl,pinmux-ids = <
-                                               0x0180 /* MX28_PAD_GPMI_RDN__GPMI_RDN */
-                                               0x0190 /* MX28_PAD_GPMI_WRN__GPMI_WRN */
-                                               0x01c0 /* MX28_PAD_GPMI_RESETN__GPMI_RESETN */
+                                               MX28_PAD_GPMI_RDN__GPMI_RDN
+                                               MX28_PAD_GPMI_WRN__GPMI_WRN
+                                               MX28_PAD_GPMI_RESETN__GPMI_RESETN
                                        >;
-                                       fsl,drive-strength = <2>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
                                };
 
                                auart0_pins_a: auart0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3000 /* MX28_PAD_AUART0_RX__AUART0_RX */
-                                               0x3010 /* MX28_PAD_AUART0_TX__AUART0_TX */
-                                               0x3020 /* MX28_PAD_AUART0_CTS__AUART0_CTS */
-                                               0x3030 /* MX28_PAD_AUART0_RTS__AUART0_RTS */
+                                               MX28_PAD_AUART0_RX__AUART0_RX
+                                               MX28_PAD_AUART0_TX__AUART0_TX
+                                               MX28_PAD_AUART0_CTS__AUART0_CTS
+                                               MX28_PAD_AUART0_RTS__AUART0_RTS
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart0_2pins_a: auart0-2pins@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3000 /* MX28_PAD_AUART0_RX__AUART0_RX */
-                                               0x3010 /* MX28_PAD_AUART0_TX__AUART0_TX */
+                                               MX28_PAD_AUART0_RX__AUART0_RX
+                                               MX28_PAD_AUART0_TX__AUART0_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart1_pins_a: auart1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3040 /* MX28_PAD_AUART1_RX__AUART1_RX */
-                                               0x3050 /* MX28_PAD_AUART1_TX__AUART1_TX */
-                                               0x3060 /* MX28_PAD_AUART1_CTS__AUART1_CTS */
-                                               0x3070 /* MX28_PAD_AUART1_RTS__AUART1_RTS */
+                                               MX28_PAD_AUART1_RX__AUART1_RX
+                                               MX28_PAD_AUART1_TX__AUART1_TX
+                                               MX28_PAD_AUART1_CTS__AUART1_CTS
+                                               MX28_PAD_AUART1_RTS__AUART1_RTS
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart1_2pins_a: auart1-2pins@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3040 /* MX28_PAD_AUART1_RX__AUART1_RX */
-                                               0x3050 /* MX28_PAD_AUART1_TX__AUART1_TX */
+                                               MX28_PAD_AUART1_RX__AUART1_RX
+                                               MX28_PAD_AUART1_TX__AUART1_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart2_2pins_a: auart2-2pins@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2101 /* MX28_PAD_SSP2_SCK__AUART2_RX */
-                                               0x2111 /* MX28_PAD_SSP2_MOSI__AUART2_TX */
+                                               MX28_PAD_SSP2_SCK__AUART2_RX
+                                               MX28_PAD_SSP2_MOSI__AUART2_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart2_2pins_b: auart2-2pins@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x3080 /* MX28_PAD_AUART2_RX__AUART2_RX */
-                                               0x3090 /* MX28_PAD_AUART2_TX__AUART2_TX */
+                                               MX28_PAD_AUART2_RX__AUART2_RX
+                                               MX28_PAD_AUART2_TX__AUART2_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart3_pins_a: auart3@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x30c0 /* MX28_PAD_AUART3_RX__AUART3_RX */
-                                               0x30d0 /* MX28_PAD_AUART3_TX__AUART3_TX */
-                                               0x30e0 /* MX28_PAD_AUART3_CTS__AUART3_CTS */
-                                               0x30f0 /* MX28_PAD_AUART3_RTS__AUART3_RTS */
+                                               MX28_PAD_AUART3_RX__AUART3_RX
+                                               MX28_PAD_AUART3_TX__AUART3_TX
+                                               MX28_PAD_AUART3_CTS__AUART3_CTS
+                                               MX28_PAD_AUART3_RTS__AUART3_RTS
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart3_2pins_a: auart3-2pins@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2121 /* MX28_PAD_SSP2_MISO__AUART3_RX */
-                                               0x2131 /* MX28_PAD_SSP2_SS0__AUART3_TX */
+                                               MX28_PAD_SSP2_MISO__AUART3_RX
+                                               MX28_PAD_SSP2_SS0__AUART3_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart3_2pins_b: auart3-2pins@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x30c0 /* MX28_PAD_AUART3_RX__AUART3_RX */
-                                               0x30d0 /* MX28_PAD_AUART3_TX__AUART3_TX */
+                                               MX28_PAD_AUART3_RX__AUART3_RX
+                                               MX28_PAD_AUART3_TX__AUART3_TX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                auart4_2pins_a: auart4@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2181 /* MX28_PAD_SSP3_SCK__AUART4_TX */
-                                               0x2191 /* MX28_PAD_SSP3_MOSI__AUART4_RX */
+                                               MX28_PAD_SSP3_SCK__AUART4_TX
+                                               MX28_PAD_SSP3_MOSI__AUART4_RX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                mac0_pins_a: mac0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x4000 /* MX28_PAD_ENET0_MDC__ENET0_MDC */
-                                               0x4010 /* MX28_PAD_ENET0_MDIO__ENET0_MDIO */
-                                               0x4020 /* MX28_PAD_ENET0_RX_EN__ENET0_RX_EN */
-                                               0x4030 /* MX28_PAD_ENET0_RXD0__ENET0_RXD0 */
-                                               0x4040 /* MX28_PAD_ENET0_RXD1__ENET0_RXD1 */
-                                               0x4060 /* MX28_PAD_ENET0_TX_EN__ENET0_TX_EN */
-                                               0x4070 /* MX28_PAD_ENET0_TXD0__ENET0_TXD0 */
-                                               0x4080 /* MX28_PAD_ENET0_TXD1__ENET0_TXD1 */
-                                               0x4100 /* MX28_PAD_ENET_CLK__CLKCTRL_ENET */
+                                               MX28_PAD_ENET0_MDC__ENET0_MDC
+                                               MX28_PAD_ENET0_MDIO__ENET0_MDIO
+                                               MX28_PAD_ENET0_RX_EN__ENET0_RX_EN
+                                               MX28_PAD_ENET0_RXD0__ENET0_RXD0
+                                               MX28_PAD_ENET0_RXD1__ENET0_RXD1
+                                               MX28_PAD_ENET0_TX_EN__ENET0_TX_EN
+                                               MX28_PAD_ENET0_TXD0__ENET0_TXD0
+                                               MX28_PAD_ENET0_TXD1__ENET0_TXD1
+                                               MX28_PAD_ENET_CLK__CLKCTRL_ENET
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mac1_pins_a: mac1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x40f1 /* MX28_PAD_ENET0_CRS__ENET1_RX_EN */
-                                               0x4091 /* MX28_PAD_ENET0_RXD2__ENET1_RXD0 */
-                                               0x40a1 /* MX28_PAD_ENET0_RXD3__ENET1_RXD1 */
-                                               0x40e1 /* MX28_PAD_ENET0_COL__ENET1_TX_EN */
-                                               0x40b1 /* MX28_PAD_ENET0_TXD2__ENET1_TXD0 */
-                                               0x40c1 /* MX28_PAD_ENET0_TXD3__ENET1_TXD1 */
+                                               MX28_PAD_ENET0_CRS__ENET1_RX_EN
+                                               MX28_PAD_ENET0_RXD2__ENET1_RXD0
+                                               MX28_PAD_ENET0_RXD3__ENET1_RXD1
+                                               MX28_PAD_ENET0_COL__ENET1_TX_EN
+                                               MX28_PAD_ENET0_TXD2__ENET1_TXD0
+                                               MX28_PAD_ENET0_TXD3__ENET1_TXD1
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mmc0_8bit_pins_a: mmc0-8bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2000 /* MX28_PAD_SSP0_DATA0__SSP0_D0 */
-                                               0x2010 /* MX28_PAD_SSP0_DATA1__SSP0_D1 */
-                                               0x2020 /* MX28_PAD_SSP0_DATA2__SSP0_D2 */
-                                               0x2030 /* MX28_PAD_SSP0_DATA3__SSP0_D3 */
-                                               0x2040 /* MX28_PAD_SSP0_DATA4__SSP0_D4 */
-                                               0x2050 /* MX28_PAD_SSP0_DATA5__SSP0_D5 */
-                                               0x2060 /* MX28_PAD_SSP0_DATA6__SSP0_D6 */
-                                               0x2070 /* MX28_PAD_SSP0_DATA7__SSP0_D7 */
-                                               0x2080 /* MX28_PAD_SSP0_CMD__SSP0_CMD */
-                                               0x2090 /* MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT */
-                                               0x20a0 /* MX28_PAD_SSP0_SCK__SSP0_SCK */
+                                               MX28_PAD_SSP0_DATA0__SSP0_D0
+                                               MX28_PAD_SSP0_DATA1__SSP0_D1
+                                               MX28_PAD_SSP0_DATA2__SSP0_D2
+                                               MX28_PAD_SSP0_DATA3__SSP0_D3
+                                               MX28_PAD_SSP0_DATA4__SSP0_D4
+                                               MX28_PAD_SSP0_DATA5__SSP0_D5
+                                               MX28_PAD_SSP0_DATA6__SSP0_D6
+                                               MX28_PAD_SSP0_DATA7__SSP0_D7
+                                               MX28_PAD_SSP0_CMD__SSP0_CMD
+                                               MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
+                                               MX28_PAD_SSP0_SCK__SSP0_SCK
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mmc0_4bit_pins_a: mmc0-4bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2000 /* MX28_PAD_SSP0_DATA0__SSP0_D0 */
-                                               0x2010 /* MX28_PAD_SSP0_DATA1__SSP0_D1 */
-                                               0x2020 /* MX28_PAD_SSP0_DATA2__SSP0_D2 */
-                                               0x2030 /* MX28_PAD_SSP0_DATA3__SSP0_D3 */
-                                               0x2080 /* MX28_PAD_SSP0_CMD__SSP0_CMD */
-                                               0x2090 /* MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT */
-                                               0x20a0 /* MX28_PAD_SSP0_SCK__SSP0_SCK */
+                                               MX28_PAD_SSP0_DATA0__SSP0_D0
+                                               MX28_PAD_SSP0_DATA1__SSP0_D1
+                                               MX28_PAD_SSP0_DATA2__SSP0_D2
+                                               MX28_PAD_SSP0_DATA3__SSP0_D3
+                                               MX28_PAD_SSP0_CMD__SSP0_CMD
+                                               MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
+                                               MX28_PAD_SSP0_SCK__SSP0_SCK
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                mmc0_cd_cfg: mmc0-cd-cfg {
                                        fsl,pinmux-ids = <
-                                               0x2090 /* MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT */
+                                               MX28_PAD_SSP0_DETECT__SSP0_CARD_DETECT
                                        >;
-                                       fsl,pull-up = <0>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                mmc0_sck_cfg: mmc0-sck-cfg {
                                        fsl,pinmux-ids = <
-                                               0x20a0 /* MX28_PAD_SSP0_SCK__SSP0_SCK */
+                                               MX28_PAD_SSP0_SCK__SSP0_SCK
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+
+                               mmc2_4bit_pins_a: mmc2-4bit@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_SSP0_DATA4__SSP2_D0
+                                               MX28_PAD_SSP1_SCK__SSP2_D1
+                                               MX28_PAD_SSP1_CMD__SSP2_D2
+                                               MX28_PAD_SSP0_DATA5__SSP2_D3
+                                               MX28_PAD_SSP0_DATA6__SSP2_CMD
+                                               MX28_PAD_AUART1_RX__SSP2_CARD_DETECT
+                                               MX28_PAD_SSP0_DATA7__SSP2_SCK
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
+                               };
+
+                               mmc2_cd_cfg: mmc2-cd-cfg {
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_AUART1_RX__SSP2_CARD_DETECT
+                                       >;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+
+                               mmc2_sck_cfg: mmc2-sck-cfg {
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_SSP0_DATA7__SSP2_SCK
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                i2c0_pins_a: i2c0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3180 /* MX28_PAD_I2C0_SCL__I2C0_SCL */
-                                               0x3190 /* MX28_PAD_I2C0_SDA__I2C0_SDA */
+                                               MX28_PAD_I2C0_SCL__I2C0_SCL
+                                               MX28_PAD_I2C0_SDA__I2C0_SDA
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                i2c0_pins_b: i2c0@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x3001 /* MX28_PAD_AUART0_RX__I2C0_SCL */
-                                               0x3011 /* MX28_PAD_AUART0_TX__I2C0_SDA */
+                                               MX28_PAD_AUART0_RX__I2C0_SCL
+                                               MX28_PAD_AUART0_TX__I2C0_SDA
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                i2c1_pins_a: i2c1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3101 /* MX28_PAD_PWM0__I2C1_SCL */
-                                               0x3111 /* MX28_PAD_PWM1__I2C1_SDA */
+                                               MX28_PAD_PWM0__I2C1_SCL
+                                               MX28_PAD_PWM1__I2C1_SDA
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                saif0_pins_a: saif0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3140 /* MX28_PAD_SAIF0_MCLK__SAIF0_MCLK */
-                                               0x3150 /* MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK */
-                                               0x3160 /* MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK */
-                                               0x3170 /* MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 */
+                                               MX28_PAD_SAIF0_MCLK__SAIF0_MCLK
+                                               MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK
+                                               MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK
+                                               MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                saif0_pins_b: saif0@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x3150 /* MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK */
-                                               0x3160 /* MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK */
-                                               0x3170 /* MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0 */
+                                               MX28_PAD_SAIF0_LRCLK__SAIF0_LRCLK
+                                               MX28_PAD_SAIF0_BITCLK__SAIF0_BITCLK
+                                               MX28_PAD_SAIF0_SDATA0__SAIF0_SDATA0
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                saif1_pins_a: saif1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31a0 /* MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0 */
+                                               MX28_PAD_SAIF1_SDATA0__SAIF1_SDATA0
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                pwm0_pins_a: pwm0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3100 /* MX28_PAD_PWM0__PWM_0 */
+                                               MX28_PAD_PWM0__PWM_0
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                pwm2_pins_a: pwm2@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3120 /* MX28_PAD_PWM2__PWM_2 */
+                                               MX28_PAD_PWM2__PWM_2
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                pwm3_pins_a: pwm3@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31c0 /* MX28_PAD_PWM3__PWM_3 */
+                                               MX28_PAD_PWM3__PWM_3
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                pwm3_pins_b: pwm3@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x3141 /* MX28_PAD_SAIF0_MCLK__PWM3 */
+                                               MX28_PAD_SAIF0_MCLK__PWM_3
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                pwm4_pins_a: pwm4@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x31d0 /* MX28_PAD_PWM4__PWM_4 */
+                                               MX28_PAD_PWM4__PWM_4
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_24bit_pins_a: lcdif-24bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
-                                               0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
-                                               0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
-                                               0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
-                                               0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
-                                               0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
-                                               0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
-                                               0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
-                                               0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
-                                               0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
-                                               0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
-                                               0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
-                                               0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
-                                               0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
-                                               0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
-                                               0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
-                                               0x1100 /* MX28_PAD_LCD_D16__LCD_D16 */
-                                               0x1110 /* MX28_PAD_LCD_D17__LCD_D17 */
-                                               0x1120 /* MX28_PAD_LCD_D18__LCD_D18 */
-                                               0x1130 /* MX28_PAD_LCD_D19__LCD_D19 */
-                                               0x1140 /* MX28_PAD_LCD_D20__LCD_D20 */
-                                               0x1150 /* MX28_PAD_LCD_D21__LCD_D21 */
-                                               0x1160 /* MX28_PAD_LCD_D22__LCD_D22 */
-                                               0x1170 /* MX28_PAD_LCD_D23__LCD_D23 */
+                                               MX28_PAD_LCD_D00__LCD_D0
+                                               MX28_PAD_LCD_D01__LCD_D1
+                                               MX28_PAD_LCD_D02__LCD_D2
+                                               MX28_PAD_LCD_D03__LCD_D3
+                                               MX28_PAD_LCD_D04__LCD_D4
+                                               MX28_PAD_LCD_D05__LCD_D5
+                                               MX28_PAD_LCD_D06__LCD_D6
+                                               MX28_PAD_LCD_D07__LCD_D7
+                                               MX28_PAD_LCD_D08__LCD_D8
+                                               MX28_PAD_LCD_D09__LCD_D9
+                                               MX28_PAD_LCD_D10__LCD_D10
+                                               MX28_PAD_LCD_D11__LCD_D11
+                                               MX28_PAD_LCD_D12__LCD_D12
+                                               MX28_PAD_LCD_D13__LCD_D13
+                                               MX28_PAD_LCD_D14__LCD_D14
+                                               MX28_PAD_LCD_D15__LCD_D15
+                                               MX28_PAD_LCD_D16__LCD_D16
+                                               MX28_PAD_LCD_D17__LCD_D17
+                                               MX28_PAD_LCD_D18__LCD_D18
+                                               MX28_PAD_LCD_D19__LCD_D19
+                                               MX28_PAD_LCD_D20__LCD_D20
+                                               MX28_PAD_LCD_D21__LCD_D21
+                                               MX28_PAD_LCD_D22__LCD_D22
+                                               MX28_PAD_LCD_D23__LCD_D23
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_16bit_pins_a: lcdif-16bit@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x1000 /* MX28_PAD_LCD_D00__LCD_D0 */
-                                               0x1010 /* MX28_PAD_LCD_D01__LCD_D1 */
-                                               0x1020 /* MX28_PAD_LCD_D02__LCD_D2 */
-                                               0x1030 /* MX28_PAD_LCD_D03__LCD_D3 */
-                                               0x1040 /* MX28_PAD_LCD_D04__LCD_D4 */
-                                               0x1050 /* MX28_PAD_LCD_D05__LCD_D5 */
-                                               0x1060 /* MX28_PAD_LCD_D06__LCD_D6 */
-                                               0x1070 /* MX28_PAD_LCD_D07__LCD_D7 */
-                                               0x1080 /* MX28_PAD_LCD_D08__LCD_D8 */
-                                               0x1090 /* MX28_PAD_LCD_D09__LCD_D9 */
-                                               0x10a0 /* MX28_PAD_LCD_D10__LCD_D10 */
-                                               0x10b0 /* MX28_PAD_LCD_D11__LCD_D11 */
-                                               0x10c0 /* MX28_PAD_LCD_D12__LCD_D12 */
-                                               0x10d0 /* MX28_PAD_LCD_D13__LCD_D13 */
-                                               0x10e0 /* MX28_PAD_LCD_D14__LCD_D14 */
-                                               0x10f0 /* MX28_PAD_LCD_D15__LCD_D15 */
+                                               MX28_PAD_LCD_D00__LCD_D0
+                                               MX28_PAD_LCD_D01__LCD_D1
+                                               MX28_PAD_LCD_D02__LCD_D2
+                                               MX28_PAD_LCD_D03__LCD_D3
+                                               MX28_PAD_LCD_D04__LCD_D4
+                                               MX28_PAD_LCD_D05__LCD_D5
+                                               MX28_PAD_LCD_D06__LCD_D6
+                                               MX28_PAD_LCD_D07__LCD_D7
+                                               MX28_PAD_LCD_D08__LCD_D8
+                                               MX28_PAD_LCD_D09__LCD_D9
+                                               MX28_PAD_LCD_D10__LCD_D10
+                                               MX28_PAD_LCD_D11__LCD_D11
+                                               MX28_PAD_LCD_D12__LCD_D12
+                                               MX28_PAD_LCD_D13__LCD_D13
+                                               MX28_PAD_LCD_D14__LCD_D14
+                                               MX28_PAD_LCD_D15__LCD_D15
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                lcdif_sync_pins_a: lcdif-sync@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x11a1 /* MX28_PAD_LCD_RS__LCD_DOTCLK */
-                                               0x11b1 /* MX28_PAD_LCD_CS__LCD_ENABLE */
-                                               0x1181 /* MX28_PAD_LCD_RD_E__LCD_VSYNC */
-                                               0x1191 /* MX28_PAD_LCD_WR_RWN__LCD_HSYNC */
+                                               MX28_PAD_LCD_RS__LCD_DOTCLK
+                                               MX28_PAD_LCD_CS__LCD_ENABLE
+                                               MX28_PAD_LCD_RD_E__LCD_VSYNC
+                                               MX28_PAD_LCD_WR_RWN__LCD_HSYNC
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                can0_pins_a: can0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0161 /* MX28_PAD_GPMI_RDY2__CAN0_TX */
-                                               0x0171 /* MX28_PAD_GPMI_RDY3__CAN0_RX */
+                                               MX28_PAD_GPMI_RDY2__CAN0_TX
+                                               MX28_PAD_GPMI_RDY3__CAN0_RX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                can1_pins_a: can1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x0121 /* MX28_PAD_GPMI_CE2N__CAN1_TX */
-                                               0x0131 /* MX28_PAD_GPMI_CE3N__CAN1_RX */
+                                               MX28_PAD_GPMI_CE2N__CAN1_TX
+                                               MX28_PAD_GPMI_CE3N__CAN1_RX
                                        >;
-                                       fsl,drive-strength = <0>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_4mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                spi2_pins_a: spi2@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2100 /* MX28_PAD_SSP2_SCK__SSP2_SCK */
-                                               0x2110 /* MX28_PAD_SSP2_MOSI__SSP2_CMD */
-                                               0x2120 /* MX28_PAD_SSP2_MISO__SSP2_D0 */
-                                               0x2130 /* MX28_PAD_SSP2_SS0__SSP2_D3 */
+                                               MX28_PAD_SSP2_SCK__SSP2_SCK
+                                               MX28_PAD_SSP2_MOSI__SSP2_CMD
+                                               MX28_PAD_SSP2_MISO__SSP2_D0
+                                               MX28_PAD_SSP2_SS0__SSP2_D3
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <1>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
 
                                spi3_pins_a: spi3@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x3082 /* MX28_PAD_AUART2_RX__SSP3_D4 */
-                                               0x3092 /* MX28_PAD_AUART2_TX__SSP3_D5 */
-                                               0x2180 /* MX28_PAD_SSP3_SCK__SSP3_SCK */
-                                               0x2190 /* MX28_PAD_SSP3_MOSI__SSP3_CMD */
-                                               0x21A0 /* MX28_PAD_SSP3_MISO__SSP3_D0 */
-                                               0x21B0 /* MX28_PAD_SSP3_SS0__SSP3_D3 */
+                                               MX28_PAD_AUART2_RX__SSP3_D4
+                                               MX28_PAD_AUART2_TX__SSP3_D5
+                                               MX28_PAD_SSP3_SCK__SSP3_SCK
+                                               MX28_PAD_SSP3_MOSI__SSP3_CMD
+                                               MX28_PAD_SSP3_MISO__SSP3_D0
+                                               MX28_PAD_SSP3_SS0__SSP3_D3
                                        >;
-                                       fsl,drive-strength = <1>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_8mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                usbphy0_pins_a: usbphy0@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2152 /* MX28_PAD_SSP2_SS2__USB0_OVERCURRENT */
+                                               MX28_PAD_SSP2_SS2__USB0_OVERCURRENT
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                usbphy0_pins_b: usbphy0@1 {
                                        reg = <1>;
                                        fsl,pinmux-ids = <
-                                               0x3061 /* MX28_PAD_AUART1_CTS__USB0_OVERCURRENT */
+                                               MX28_PAD_AUART1_CTS__USB0_OVERCURRENT
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
                                };
 
                                usbphy1_pins_a: usbphy1@0 {
                                        reg = <0>;
                                        fsl,pinmux-ids = <
-                                               0x2142 /* MX28_PAD_SSP2_SS1__USB1_OVERCURRENT */
+                                               MX28_PAD_SSP2_SS1__USB1_OVERCURRENT
+                                       >;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_DISABLE>;
+                               };
+
+                               usb0_id_pins_a: usb0id@0 {
+                                       reg = <0>;
+                                       fsl,pinmux-ids = <
+                                               MX28_PAD_AUART1_RTS__USB0_ID
                                        >;
-                                       fsl,drive-strength = <2>;
-                                       fsl,voltage = <1>;
-                                       fsl,pull-up = <0>;
+                                       fsl,drive-strength = <MXS_DRIVE_12mA>;
+                                       fsl,voltage = <MXS_VOLTAGE_HIGH>;
+                                       fsl,pull-up = <MXS_PULL_ENABLE>;
                                };
                        };
 
index 123fe84e0e8c4b4777f2cb80d017bb75da59a69d..5a7f552786a112dadff76c0d664fc6fb682f7ccf 100644 (file)
        model = "Armadeus Systems APF51Dev docking/development board";
        compatible = "armadeus,imx51-apf51dev", "armadeus,imx51-apf51", "fsl,imx51";
 
+       display@di1 {
+               compatible = "fsl,imx-parallel-display";
+               crtcs = <&ipu 0>;
+               interface-pix-fmt = "bgr666";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_ipu_disp1_1>;
+
+               display-timings {
+                       lw700 {
+                               native-mode;
+                               clock-frequency = <33000033>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <96>;
+                               hfront-porch = <96>;
+                               vback-porch = <20>;
+                               vfront-porch = <21>;
+                               hsync-len = <64>;
+                               vsync-len = <4>;
+                               hsync-active = <1>;
+                               vsync-active = <1>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+               };
+       };
+
        gpio-keys {
                compatible = "gpio-keys";
 
index 1d337d99ecd533e7deea58a46a8a3fb55287a8d8..be1407cf5abd1b1479e55fbfeac48be44dc90d4c 100644 (file)
                interface-pix-fmt = "rgb24";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_ipu_disp1_1>;
+               display-timings {
+                       native-mode = <&timing0>;
+                       timing0: dvi {
+                               clock-frequency = <65000000>;
+                               hactive = <1024>;
+                               vactive = <768>;
+                               hback-porch = <220>;
+                               hfront-porch = <40>;
+                               vback-porch = <21>;
+                               vfront-porch = <7>;
+                               hsync-len = <60>;
+                               vsync-len = <10>;
+                       };
+               };
        };
 
        display@di1 {
                interface-pix-fmt = "rgb565";
                pinctrl-names = "default";
                pinctrl-0 = <&pinctrl_ipu_disp2_1>;
+               status = "disabled";
+               display-timings {
+                       native-mode = <&timing1>;
+                       timing1: claawvga {
+                               clock-frequency = <27000000>;
+                               hactive = <800>;
+                               vactive = <480>;
+                               hback-porch = <40>;
+                               hfront-porch = <60>;
+                               vback-porch = <10>;
+                               vfront-porch = <10>;
+                               hsync-len = <20>;
+                               vsync-len = <10>;
+                               hsync-active = <0>;
+                               vsync-active = <0>;
+                               de-active = <1>;
+                               pixelclk-active = <0>;
+                       };
+               };
        };
 
        gpio-keys {
 
 &uart3 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart3_1>;
+       pinctrl-0 = <&pinctrl_uart3_1 &pinctrl_uart3_rtscts_1>;
        fsl,uart-has-rtscts;
        status = "okay";
 };
 
 &uart1 {
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart1_1>;
+       pinctrl-0 = <&pinctrl_uart1_1 &pinctrl_uart1_rtscts_1>;
        fsl,uart-has-rtscts;
        status = "okay";
 };
index 54cee6517902d647507f3ed40302135fcba1b849..f4dcff3a9969a053d0a7c136015c94526a739cb8 100644 (file)
                interrupt-parent = <&tzic>;
                ranges;
 
+               iram: iram@1ffe0000 {
+                       compatible = "mmio-sram";
+                       reg = <0x1ffe0000 0x20000>;
+               };
+
                ipu: ipu@40000000 {
                        #crtc-cells = <1>;
                        compatible = "fsl,imx51-ipu";
                                clocks = <&clks 107>;
                        };
 
+                       owire: owire@83fa4000 {
+                               compatible = "fsl,imx51-owire", "fsl,imx21-owire";
+                               reg = <0x83fa4000 0x4000>;
+                               interrupts = <88>;
+                               clocks = <&clks 159>;
+                               status = "disabled";
+                       };
+
                        ecspi2: ecspi@83fac000 {
                                #address-cells = <1>;
                                #size-cells = <0>;
                        fsl,pins = <
                                MX51_PAD_UART1_RXD__UART1_RXD 0x1c5
                                MX51_PAD_UART1_TXD__UART1_TXD 0x1c5
+                       >;
+               };
+
+               pinctrl_uart1_rtscts_1: uart1rtscts-1 {
+                       fsl,pins = <
                                MX51_PAD_UART1_RTS__UART1_RTS 0x1c5
                                MX51_PAD_UART1_CTS__UART1_CTS 0x1c5
                        >;
                        fsl,pins = <
                                MX51_PAD_EIM_D25__UART3_RXD 0x1c5
                                MX51_PAD_EIM_D26__UART3_TXD 0x1c5
+                       >;
+               };
+
+               pinctrl_uart3_rtscts_1: uart3rtscts-1 {
+                       fsl,pins = <
                                MX51_PAD_EIM_D27__UART3_RTS 0x1c5
                                MX51_PAD_EIM_D24__UART3_CTS 0x1c5
                        >;
index e97ddae09d74cd1afea569013c75fcfde5b4b4b0..91a5935a4aacd63879f2f2104f546d6f41bb7e60 100644 (file)
                        label = "Power Button";
                        gpios = <&gpio1 8 0>;
                        linux,code = <116>; /* KEY_POWER */
-                       gpio-key,wakeup;
                };
 
                volume-up {
                        label = "Volume Up";
                        gpios = <&gpio2 14 0>;
                        linux,code = <115>; /* KEY_VOLUMEUP */
+                       gpio-key,wakeup;
                };
 
                volume-down {
                        label = "Volume Down";
                        gpios = <&gpio2 15 0>;
                        linux,code = <114>; /* KEY_VOLUMEDOWN */
+                       gpio-key,wakeup;
                };
        };
 
 &esdhc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_esdhc1_1>;
-       cd-gpios = <&gpio3 13 0>;
        status = "okay";
 };
 
        pinctrl-0 = <&pinctrl_esdhc3_1>;
        cd-gpios = <&gpio3 11 0>;
        wp-gpios = <&gpio3 12 0>;
+       bus-width = <8>;
        status = "okay";
 };
 
                                MX53_PAD_PATA_DATA15__GPIO2_15    0x80000000
                                MX53_PAD_EIM_DA11__GPIO3_11       0x80000000
                                MX53_PAD_EIM_DA12__GPIO3_12       0x80000000
-                               MX53_PAD_EIM_DA13__GPIO3_13       0x80000000
                                MX53_PAD_PATA_DA_0__GPIO7_6       0x80000000
                                MX53_PAD_PATA_DA_2__GPIO7_8       0x80000000
                                MX53_PAD_GPIO_16__GPIO7_11        0x80000000
 };
 
 &usbotg {
-       status = "okay";
+       dr_mode = "peripheral";
+       status = "okay";
 };
index 9bbe82bdee4112ca0b15de05118b70472b04287c..97ed0816a6e0c749b5bccd2562b2cbe8655ff326 100644 (file)
 #define MX6QDL_PAD_ENET_REF_CLK__ESAI_RX_FS         0x1d4 0x4e8 0x85c 0x2 0x0
 #define MX6QDL_PAD_ENET_REF_CLK__GPIO1_IO23         0x1d4 0x4e8 0x000 0x5 0x0
 #define MX6QDL_PAD_ENET_REF_CLK__SPDIF_SR_CLK       0x1d4 0x4e8 0x000 0x6 0x0
-#define MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID           0x1d8 0x4ec 0x000 0x0 0x0
+#define MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID           0x1d8 0x4ec 0x004 0x0 0xff0d0100
 #define MX6QDL_PAD_ENET_RX_ER__ENET_RX_ER           0x1d8 0x4ec 0x000 0x1 0x0
 #define MX6QDL_PAD_ENET_RX_ER__ESAI_RX_HF_CLK       0x1d8 0x4ec 0x864 0x2 0x0
 #define MX6QDL_PAD_ENET_RX_ER__SPDIF_IN             0x1d8 0x4ec 0x914 0x3 0x1
 #define MX6QDL_PAD_GPIO_1__ESAI_RX_CLK              0x224 0x5f4 0x86c 0x0 0x1
 #define MX6QDL_PAD_GPIO_1__WDOG2_B                  0x224 0x5f4 0x000 0x1 0x0
 #define MX6QDL_PAD_GPIO_1__KEY_ROW5                 0x224 0x5f4 0x8f4 0x2 0x0
-#define MX6QDL_PAD_GPIO_1__USB_OTG_ID               0x224 0x5f4 0x000 0x3 0x0
+#define MX6QDL_PAD_GPIO_1__USB_OTG_ID               0x224 0x5f4 0x004 0x3 0xff0d0101
 #define MX6QDL_PAD_GPIO_1__PWM2_OUT                 0x224 0x5f4 0x000 0x4 0x0
 #define MX6QDL_PAD_GPIO_1__GPIO1_IO01               0x224 0x5f4 0x000 0x5 0x0
 #define MX6QDL_PAD_GPIO_1__SD1_CD_B                 0x224 0x5f4 0x000 0x6 0x0
index 3530280f5150e43d826987ab225e4b53930b33aa..f004913f7d80a1f2c0df7b229f7a011b17399818 100644 (file)
        };
 };
 
-&sata {
+&audmux {
        status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_audmux_1>;
 };
 
 &ecspi1 {
        };
 };
 
-&ssi1 {
-       fsl,mode = "i2s-slave";
+&fec {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_enet_1>;
+       phy-mode = "rgmii";
+       phy-reset-gpios = <&gpio3 23 0>;
        status = "okay";
 };
 
+&i2c1 {
+       status = "okay";
+       clock-frequency = <100000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_i2c1_1>;
+
+       codec: sgtl5000@0a {
+               compatible = "fsl,sgtl5000";
+               reg = <0x0a>;
+               clocks = <&clks 201>;
+               VDDA-supply = <&reg_2p5v>;
+               VDDIO-supply = <&reg_3p3v>;
+       };
+};
+
 &iomuxc {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_hog>;
                                MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x80000000
                                MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x1f0b0
                                MX6QDL_PAD_GPIO_0__CCM_CLKO1    0x80000000
+                               MX6QDL_PAD_EIM_D23__GPIO3_IO23  0x80000000
                        >;
                };
        };
 };
 
-&usbotg {
-       vbus-supply = <&reg_usb_otg_vbus>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_usbotg_1>;
-       disable-over-current;
+&ldb {
+       status = "okay";
+
+       lvds-channel@0 {
+               fsl,data-mapping = "spwg";
+               fsl,data-width = <18>;
+               status = "okay";
+
+               display-timings {
+                       native-mode = <&timing0>;
+                       timing0: hsd100pxn1 {
+                               clock-frequency = <65000000>;
+                               hactive = <1024>;
+                               vactive = <768>;
+                               hback-porch = <220>;
+                               hfront-porch = <40>;
+                               vback-porch = <21>;
+                               vfront-porch = <7>;
+                               hsync-len = <60>;
+                               vsync-len = <10>;
+                       };
+               };
+       };
+};
+
+&sata {
+       status = "okay";
+};
+
+&ssi1 {
+       fsl,mode = "i2s-slave";
        status = "okay";
 };
 
+&uart2 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2_1>;
+};
+
 &usbh1 {
        status = "okay";
 };
 
-&fec {
+&usbotg {
+       vbus-supply = <&reg_usb_otg_vbus>;
        pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_enet_1>;
-       phy-mode = "rgmii";
-       phy-reset-gpios = <&gpio3 23 0>;
+       pinctrl-0 = <&pinctrl_usbotg_1>;
+       disable-over-current;
        status = "okay";
 };
 
        vmmc-supply = <&reg_3p3v>;
        status = "okay";
 };
-
-&audmux {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_audmux_1>;
-};
-
-&uart2 {
-       status = "okay";
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_uart2_1>;
-};
-
-&i2c1 {
-       status = "okay";
-       clock-frequency = <100000>;
-       pinctrl-names = "default";
-       pinctrl-0 = <&pinctrl_i2c1_1>;
-
-       codec: sgtl5000@0a {
-               compatible = "fsl,sgtl5000";
-               reg = <0x0a>;
-               clocks = <&clks 201>;
-               VDDA-supply = <&reg_2p5v>;
-               VDDIO-supply = <&reg_3p3v>;
-       };
-};
diff --git a/arch/arm/boot/dts/imx6q-udoo.dts b/arch/arm/boot/dts/imx6q-udoo.dts
new file mode 100644 (file)
index 0000000..6e1ccdc
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * Author: Fabio Estevam <fabio.estevam@freescale.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ *
+ */
+
+/dts-v1/;
+#include "imx6q.dtsi"
+
+/ {
+       model = "Udoo i.MX6 Quad Board";
+       compatible = "udoo,imx6q-udoo", "fsl,imx6q";
+
+       memory {
+               reg = <0x10000000 0x40000000>;
+       };
+};
+
+&sata {
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart2_1>;
+       status = "okay";
+};
+
+&usdhc3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usdhc3_2>;
+       non-removable;
+       status = "okay";
+};
index 1cbbc5160d27d3f9065a61bbe1d7e77eb81d6605..ff6f1e8f2dd9bfa54a6387998421f1ac8877c841 100644 (file)
@@ -54,6 +54,7 @@
                        fsl,pins = <
                                MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x80000000
                                MX6QDL_PAD_SD2_DAT2__GPIO1_IO13  0x80000000
+                               MX6QDL_PAD_GPIO_18__SD3_VSELECT 0x17059
                        >;
                };
        };
 };
 
 &usdhc3 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3_1>;
+       pinctrl-1 = <&pinctrl_usdhc3_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_1_200mhz>;
        cd-gpios = <&gpio6 15 0>;
        wp-gpios = <&gpio1 13 0>;
        status = "okay";
index 39eafc222a2ece4f07184b26b1a96e85b23eb871..e75e11b36dffec5ea9e695c01d8f66ac35b83dee 100644 (file)
                mux-int-port = <2>;
                mux-ext-port = <3>;
        };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pwm1 0 5000000>;
+               brightness-levels = <0 4 8 16 32 64 128 255>;
+               default-brightness-level = <7>;
+               status = "okay";
+       };
 };
 
 &audmux {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet_1>;
        phy-mode = "rgmii";
+       phy-reset-gpios = <&gpio1 25 0>;
        status = "okay";
 };
 
                                MX6QDL_PAD_NANDF_CLE__GPIO6_IO07 0x80000000
                                MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000
                                MX6QDL_PAD_EIM_D22__GPIO3_IO22  0x80000000
+                               MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x80000000
                        >;
                };
        };
        };
 };
 
+&pwm1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_pwm0_1>;
+       status = "okay";
+};
+
 &ssi2 {
        fsl,mode = "i2s-slave";
        status = "okay";
 &usdhc2 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc2_1>;
+       bus-width = <8>;
        cd-gpios = <&gpio2 2 0>;
        wp-gpios = <&gpio2 3 0>;
        status = "okay";
 &usdhc3 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc3_1>;
+       bus-width = <8>;
        cd-gpios = <&gpio2 0 0>;
        wp-gpios = <&gpio2 1 0>;
        status = "okay";
index a55113e65bcb0a3d9d6345f7129623384ee881b6..35f54792916795dd85d77624289d94ee3ab97811 100644 (file)
                mux-int-port = <1>;
                mux-ext-port = <3>;
        };
+
+       sound-spdif {
+               compatible = "fsl,imx-audio-spdif";
+               model = "imx-spdif";
+               spdif-controller = <&spdif>;
+               spdif-out;
+       };
 };
 
 &audmux {
@@ -81,6 +88,7 @@
                                MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x80000000 /* WL_REG_ON */
                                MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x80000000 /* WL_HOST_WAKE */
                                MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x80000000 /* WL_WAKE */
+                               MX6QDL_PAD_EIM_D29__GPIO3_IO29   0x80000000
                        >;
                };
        };
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_enet_1>;
        phy-mode = "rgmii";
+       phy-reset-gpios = <&gpio3 29 0>;
+       status = "okay";
+};
+
+&spdif {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_spdif_3>;
        status = "okay";
 };
 
        status = "okay";
 };
 
+&usbotg {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg_1>;
+       disable-over-current;
+       dr_mode = "peripheral";
+       status = "okay";
+};
+
 &usdhc1 {
        pinctrl-names = "default";
        pinctrl-0 = <&pinctrl_usdhc1_2>;
index ccd55c2fdb67e3a69402021709275108a96a6f75..59154dc15fe4ee441c80fd17d9c9141a16ee5e60 100644 (file)
                        arm,data-latency = <4 2 3>;
                };
 
+               pcie: pcie@0x01000000 {
+                       compatible = "fsl,imx6q-pcie", "snps,dw-pcie";
+                       reg = <0x01ffc000 0x4000>; /* DBI */
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       device_type = "pci";
+                       ranges = <0x00000800 0 0x01f00000 0x01f00000 0 0x00080000 /* configuration space */
+                                 0x81000000 0 0          0x01f80000 0 0x00010000 /* downstream I/O */
+                                 0x82000000 0 0x01000000 0x01000000 0 0x00f00000>; /* non-prefetchable memory */
+                       num-lanes = <1>;
+                       interrupts = <0 123 0x04>;
+                       clocks = <&clks 189>, <&clks 187>, <&clks 206>, <&clks 144>;
+                       clock-names = "pcie_ref_125m", "sata_ref_100m", "lvds_gate", "pcie_axi";
+                       status = "disabled";
+               };
+
                pmu {
                        compatible = "arm,cortex-a9-pmu";
                        interrupts = <0 94 0x04>;
                                ranges;
 
                                spdif: spdif@02004000 {
+                                       compatible = "fsl,imx35-spdif";
                                        reg = <0x02004000 0x4000>;
                                        interrupts = <0 52 0x04>;
+                                       dmas = <&sdma 14 18 0>,
+                                              <&sdma 15 18 0>;
+                                       dma-names = "rx", "tx";
+                                       clocks = <&clks 197>, <&clks 3>,
+                                                <&clks 197>, <&clks 107>,
+                                                <&clks 0>,   <&clks 118>,
+                                                <&clks 62>,  <&clks 139>,
+                                                <&clks 0>;
+                                       clock-names = "core",  "rxtx0",
+                                                     "rxtx1", "rxtx2",
+                                                     "rxtx3", "rxtx4",
+                                                     "rxtx5", "rxtx6",
+                                                     "rxtx7";
+                                       status = "disabled";
                                };
 
                                ecspi1: ecspi@02008000 {
                                                        MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x1b0b0
                                                >;
                                        };
+
+                                       pinctrl_spdif_3: spdifgrp-3 {
+                                               fsl,pins = <
+                                                       MX6QDL_PAD_ENET_RXD0__SPDIF_OUT 0x1b0b0
+                                               >;
+                                       };
                                };
 
                                uart1 {
                                                >;
                                        };
 
+                                       pinctrl_usdhc3_1_100mhz: usdhc3grp-1-100mhz { /* 100Mhz */
+                                               fsl,pins = <
+                                                       MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170b9
+                                                       MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100b9
+                                                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT4__SD3_DATA4 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT5__SD3_DATA5 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT6__SD3_DATA6 0x170b9
+                                                       MX6QDL_PAD_SD3_DAT7__SD3_DATA7 0x170b9
+                                               >;
+                                       };
+
+                                       pinctrl_usdhc3_1_200mhz: usdhc3grp-1-200mhz { /* 200Mhz */
+                                               fsl,pins = <
+                                                       MX6QDL_PAD_SD3_CMD__SD3_CMD 0x170f9
+                                                       MX6QDL_PAD_SD3_CLK__SD3_CLK 0x100f9
+                                                       MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT4__SD3_DATA4 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT5__SD3_DATA5 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT6__SD3_DATA6 0x170f9
+                                                       MX6QDL_PAD_SD3_DAT7__SD3_DATA7 0x170f9
+                                               >;
+                                       };
+
                                        pinctrl_usdhc3_2: usdhc3grp-2 {
                                                fsl,pins = <
                                                        MX6QDL_PAD_SD3_CMD__SD3_CMD    0x17059
index 2886a590823dc440a9f0ba8a5d72c8efe31916d4..cc68e19c51631666e8241fbc1d4965a18605ca28 100644 (file)
        memory {
                reg = <0x80000000 0x40000000>;
        };
+
+       regulators {
+               compatible = "simple-bus";
+
+               reg_usb_otg1_vbus: usb_otg1_vbus {
+                       compatible = "regulator-fixed";
+                       regulator-name = "usb_otg1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio4 0 0>;
+                       enable-active-high;
+               };
+
+               reg_usb_otg2_vbus: usb_otg2_vbus {
+                       compatible = "regulator-fixed";
+                       regulator-name = "usb_otg2_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio4 2 0>;
+                       enable-active-high;
+               };
+       };
+};
+
+&ecspi1 {
+       fsl,spi-num-chipselects = <1>;
+       cs-gpios = <&gpio4 11 0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_ecspi1_1>;
+       status = "okay";
+
+       flash: m25p80@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "st,m25p32";
+               spi-max-frequency = <20000000>;
+               reg = <0>;
+       };
 };
 
 &fec {
@@ -38,6 +76,8 @@
                                MX6SL_PAD_SD2_DAT7__GPIO5_IO00    0x17059
                                MX6SL_PAD_SD2_DAT6__GPIO4_IO29    0x17059
                                MX6SL_PAD_REF_CLK_32K__GPIO3_IO22 0x17059
+                               MX6SL_PAD_KEY_COL4__GPIO4_IO00  0x80000000
+                               MX6SL_PAD_KEY_COL5__GPIO4_IO02  0x80000000
                        >;
                };
        };
        status = "okay";
 };
 
-&usdhc1 {
+&usbotg1 {
+       vbus-supply = <&reg_usb_otg1_vbus>;
        pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_usbotg1_1>;
+       disable-over-current;
+       status = "okay";
+};
+
+&usbotg2 {
+       vbus-supply = <&reg_usb_otg2_vbus>;
+       dr_mode = "host";
+       disable-over-current;
+       status = "okay";
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc1_1>;
+       pinctrl-1 = <&pinctrl_usdhc1_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_1_200mhz>;
        bus-width = <8>;
        cd-gpios = <&gpio4 7 0>;
        wp-gpios = <&gpio4 6 0>;
 };
 
 &usdhc2 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc2_1>;
+       pinctrl-1 = <&pinctrl_usdhc2_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc2_1_200mhz>;
        cd-gpios = <&gpio5 0 0>;
        wp-gpios = <&gpio4 29 0>;
        status = "okay";
 };
 
 &usdhc3 {
-       pinctrl-names = "default";
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
        pinctrl-0 = <&pinctrl_usdhc3_1>;
+       pinctrl-1 = <&pinctrl_usdhc3_1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc3_1_200mhz>;
        cd-gpios = <&gpio3 22 0>;
        status = "okay";
 };
index c46651e4d966769948be53636b6e1653005cda13..6eabfa12e8c5aa12b8ea97f359757a0ded3dee7b 100644 (file)
 
 / {
        aliases {
-               serial0 = &uart1;
-               serial1 = &uart2;
-               serial2 = &uart3;
-               serial3 = &uart4;
-               serial4 = &uart5;
                gpio0 = &gpio1;
                gpio1 = &gpio2;
                gpio2 = &gpio3;
                gpio3 = &gpio4;
                gpio4 = &gpio5;
+               serial0 = &uart1;
+               serial1 = &uart2;
+               serial2 = &uart3;
+               serial3 = &uart4;
+               serial4 = &uart5;
+               spi0 = &ecspi1;
+               spi1 = &ecspi2;
+               spi2 = &ecspi3;
+               spi3 = &ecspi4;
        };
 
        cpus {
                                interrupts = <0 89 0x04>;
                        };
 
+                       gpr: iomuxc-gpr@020e0000 {
+                               compatible = "fsl,imx6sl-iomuxc-gpr",
+                                            "fsl,imx6q-iomuxc-gpr", "syscon";
+                               reg = <0x020e0000 0x38>;
+                       };
+
                        iomuxc: iomuxc@020e0000 {
                                compatible = "fsl,imx6sl-iomuxc";
                                reg = <0x020e0000 0x4000>;
 
+                               ecspi1 {
+                                       pinctrl_ecspi1_1: ecspi1grp-1 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_ECSPI1_MISO__ECSPI1_MISO 0x100b1
+                                                       MX6SL_PAD_ECSPI1_MOSI__ECSPI1_MOSI 0x100b1
+                                                       MX6SL_PAD_ECSPI1_SCLK__ECSPI1_SCLK 0x100b1
+                                               >;
+                                       };
+                               };
+
                                fec {
                                        pinctrl_fec_1: fecgrp-1 {
                                                fsl,pins = <
                                        };
                                };
 
+                               usbotg1 {
+                                       pinctrl_usbotg1_1: usbotg1grp-1 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_EPDC_PWRCOM__USB_OTG1_ID 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg1_2: usbotg1grp-2 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_FEC_RXD0__USB_OTG1_ID 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg1_3: usbotg1grp-3 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_LCD_DAT1__USB_OTG1_ID 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg1_4: usbotg1grp-4 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_REF_CLK_32K__USB_OTG1_ID 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg1_5: usbotg1grp-5 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD3_DAT0__USB_OTG1_ID 0x17059
+                                               >;
+                                       };
+                               };
+
+                               usbotg2 {
+                                       pinctrl_usbotg2_1: usbotg2grp-1 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_ECSPI1_SCLK__USB_OTG2_OC 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg2_2: usbotg2grp-2 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_ECSPI2_SCLK__USB_OTG2_OC 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg2_3: usbotg2grp-3 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_KEY_ROW5__USB_OTG2_OC 0x17059
+                                               >;
+                                       };
+
+                                       pinctrl_usbotg2_4: usbotg2grp-4 {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD3_DAT2__USB_OTG2_OC 0x17059
+                                               >;
+                                       };
+                               };
+
                                usdhc1 {
                                        pinctrl_usdhc1_1: usdhc1grp-1 {
                                                fsl,pins = <
                                                        MX6SL_PAD_SD1_DAT7__SD1_DATA7 0x17059
                                                >;
                                        };
+
+                                       pinctrl_usdhc1_1_100mhz: usdhc1grp-1-100mhz {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD1_CMD__SD1_CMD 0x170b9
+                                                       MX6SL_PAD_SD1_CLK__SD1_CLK 0x100b9
+                                                       MX6SL_PAD_SD1_DAT0__SD1_DATA0 0x170b9
+                                                       MX6SL_PAD_SD1_DAT1__SD1_DATA1 0x170b9
+                                                       MX6SL_PAD_SD1_DAT2__SD1_DATA2 0x170b9
+                                                       MX6SL_PAD_SD1_DAT3__SD1_DATA3 0x170b9
+                                                       MX6SL_PAD_SD1_DAT4__SD1_DATA4 0x170b9
+                                                       MX6SL_PAD_SD1_DAT5__SD1_DATA5 0x170b9
+                                                       MX6SL_PAD_SD1_DAT6__SD1_DATA6 0x170b9
+                                                       MX6SL_PAD_SD1_DAT7__SD1_DATA7 0x170b9
+                                               >;
+                                       };
+
+                                       pinctrl_usdhc1_1_200mhz: usdhc1grp-1-200mhz {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD1_CMD__SD1_CMD 0x170f9
+                                                       MX6SL_PAD_SD1_CLK__SD1_CLK 0x100f9
+                                                       MX6SL_PAD_SD1_DAT0__SD1_DATA0 0x170f9
+                                                       MX6SL_PAD_SD1_DAT1__SD1_DATA1 0x170f9
+                                                       MX6SL_PAD_SD1_DAT2__SD1_DATA2 0x170f9
+                                                       MX6SL_PAD_SD1_DAT3__SD1_DATA3 0x170f9
+                                                       MX6SL_PAD_SD1_DAT4__SD1_DATA4 0x170f9
+                                                       MX6SL_PAD_SD1_DAT5__SD1_DATA5 0x170f9
+                                                       MX6SL_PAD_SD1_DAT6__SD1_DATA6 0x170f9
+                                                       MX6SL_PAD_SD1_DAT7__SD1_DATA7 0x170f9
+                                               >;
+                                       };
+
+
                                };
 
                                usdhc2 {
                                                        MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x17059
                                                >;
                                        };
+
+                                       pinctrl_usdhc2_1_100mhz: usdhc2grp-1-100mhz {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD2_CMD__SD2_CMD    0x170b9
+                                                       MX6SL_PAD_SD2_CLK__SD2_CLK    0x100b9
+                                                       MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x170b9
+                                                       MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x170b9
+                                                       MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x170b9
+                                                       MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x170b9
+                                               >;
+                                       };
+
+                                       pinctrl_usdhc2_1_200mhz: usdhc2grp-1-200mhz {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD2_CMD__SD2_CMD    0x170f9
+                                                       MX6SL_PAD_SD2_CLK__SD2_CLK    0x100f9
+                                                       MX6SL_PAD_SD2_DAT0__SD2_DATA0 0x170f9
+                                                       MX6SL_PAD_SD2_DAT1__SD2_DATA1 0x170f9
+                                                       MX6SL_PAD_SD2_DAT2__SD2_DATA2 0x170f9
+                                                       MX6SL_PAD_SD2_DAT3__SD2_DATA3 0x170f9
+                                               >;
+                                       };
+
                                };
 
                                usdhc3 {
                                                        MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x17059
                                                >;
                                        };
+
+                                       pinctrl_usdhc3_1_100mhz: usdhc3grp-1-100mhz {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD3_CMD__SD3_CMD    0x170b9
+                                                       MX6SL_PAD_SD3_CLK__SD3_CLK    0x100b9
+                                                       MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x170b9
+                                                       MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x170b9
+                                                       MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x170b9
+                                                       MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x170b9
+                                               >;
+                                       };
+
+                                       pinctrl_usdhc3_1_200mhz: usdhc3grp-1-200mhz {
+                                               fsl,pins = <
+                                                       MX6SL_PAD_SD3_CMD__SD3_CMD    0x170f9
+                                                       MX6SL_PAD_SD3_CLK__SD3_CLK    0x100f9
+                                                       MX6SL_PAD_SD3_DAT0__SD3_DATA0 0x170f9
+                                                       MX6SL_PAD_SD3_DAT1__SD3_DATA1 0x170f9
+                                                       MX6SL_PAD_SD3_DAT2__SD3_DATA2 0x170f9
+                                                       MX6SL_PAD_SD3_DAT3__SD3_DATA3 0x170f9
+                                               >;
+                                       };
                                };
                        };
 
                                         <&clks IMX6SL_CLK_SDMA>;
                                clock-names = "ipg", "ahb";
                                #dma-cells = <3>;
-                               fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6sl.bin";
+                               /* imx6sl reuses imx6q sdma firmware */
+                               fsl,sdma-ram-script-name = "imx/sdma/sdma-imx6q.bin";
                        };
 
                        pxp: pxp@020f0000 {
                        usbotg2: usb@02184200 {
                                compatible = "fsl,imx6sl-usb", "fsl,imx27-usb";
                                reg = <0x02184200 0x200>;
-                               interrupts = <0 40 0x04>;
+                               interrupts = <0 42 0x04>;
                                clocks = <&clks IMX6SL_CLK_USBOH3>;
                                fsl,usbphy = <&usbphy2>;
                                fsl,usbmisc = <&usbmisc 1>;
                        usbh: usb@02184400 {
                                compatible = "fsl,imx6sl-usb", "fsl,imx27-usb";
                                reg = <0x02184400 0x200>;
-                               interrupts = <0 42 0x04>;
+                               interrupts = <0 40 0x04>;
                                clocks = <&clks IMX6SL_CLK_USBOH3>;
                                fsl,usbmisc = <&usbmisc 2>;
                                status = "disabled";
index 72c4b0a0366ffcd656f16456c430b067ff814b5a..c39dd766c75a03caf11e0a79e71d3a25778fd33b 100644 (file)
@@ -19,7 +19,6 @@
        compatible = "marvell,db-88f6281-bp", "marvell,kirkwood-88f6281", "marvell,kirkwood";
 
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
index 36c411d349268e41e05d220f3d56e2d82553506e..701c6b6cdaa2ffd82b49ac2a0fe145e1e9d626a5 100644 (file)
@@ -19,7 +19,6 @@
        compatible = "marvell,db-88f6282-bp", "marvell,kirkwood-88f6282", "marvell,kirkwood";
 
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
index c0e2a587917474a37a515ff7c70e133ee193f0ba..053aa20fb30f88a0e13be1878e9d9d6ba241c4c2 100644 (file)
                        status = "ok";
                };
 
-               nand@3000000 {
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-                       chip-delay = <25>;
-                       status = "okay";
-
-                       partition@0 {
-                               label = "uboot";
-                               reg = <0x0 0x100000>;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x100000 0x400000>;
-                       };
-
-                       partition@500000 {
-                               label = "root";
-                               reg = <0x500000 0x1fb00000>;
-                       };
-               };
-
                sata@80000 {
                        nr-ports = <2>;
                        status = "okay";
        };
 };
 
+&nand {
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+       chip-delay = <25>;
+       status = "okay";
+
+       partition@0 {
+               label = "uboot";
+               reg = <0x0 0x100000>;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x100000 0x400000>;
+       };
+
+       partition@500000 {
+               label = "root";
+               reg = <0x500000 0x1fb00000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index d544f77a4ca465ccc268b90d5edc9c1ca9aee490..aefa375a550d3ac0e7615cd76ba50e83c99ac094 100644 (file)
                        status = "okay";
                        nr-ports = <2>;
                };
-
-               nand@3000000 {
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-                       status = "okay";
-                       chip-delay = <35>;
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x100000>;
-                               read-only;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x0100000 0x500000>;
-                       };
-
-                       partition@600000 {
-                               label = "ramdisk";
-                               reg = <0x0600000 0x500000>;
-                       };
-
-                       partition@b00000 {
-                               label = "image";
-                               reg = <0x0b00000 0x6600000>;
-                       };
-
-                       partition@7100000 {
-                               label = "mini firmware";
-                               reg = <0x7100000 0xa00000>;
-                       };
-
-                       partition@7b00000 {
-                               label = "config";
-                               reg = <0x7b00000 0x500000>;
-                       };
-               };
        };
 
        regulators {
        };
 };
 
+&nand {
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+       status = "okay";
+       chip-delay = <35>;
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x100000>;
+               read-only;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x0100000 0x500000>;
+       };
+
+       partition@600000 {
+               label = "ramdisk";
+               reg = <0x0600000 0x500000>;
+       };
+
+       partition@b00000 {
+               label = "image";
+               reg = <0x0b00000 0x6600000>;
+       };
+
+       partition@7100000 {
+               label = "mini firmware";
+               reg = <0x7100000 0xa00000>;
+       };
+
+       partition@7b00000 {
+               label = "config";
+               reg = <0x7b00000 0x500000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 59a2117c35a7fe2dc68f2b5f7171810dd60532d1..33ff368fbfa5696353353fc5151b4fefd7cc6198 100644 (file)
                serial@12000 {
                        status = "ok";
                };
-
-               nand@3000000 {
-                       status = "okay";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x100000>;
-                               read-only;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x0100000 0x400000>;
-                       };
-
-                       partition@500000 {
-                               label = "data";
-                               reg = <0x0500000 0xfb00000>;
-                       };
-               };
        };
        gpio-leds {
                compatible = "gpio-leds";
        };
 };
 
+&nand {
+       status = "okay";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x100000>;
+               read-only;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x0100000 0x400000>;
+       };
+
+       partition@500000 {
+               label = "data";
+               reg = <0x0500000 0xfb00000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 6f7c7d7ecf2acf74bcd5a11f2122c30aea72fb3a..a43bebb251102fbbfcde84e58f1955ce52f5de5b 100644 (file)
                        status = "ok";
                };
 
-               nand@3000000 {
-                       chip-delay = <40>;
-                       status = "okay";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x100000>;
-                               read-only;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x0100000 0x400000>;
-                       };
-
-                       partition@500000 {
-                               label = "pogoplug";
-                               reg = <0x0500000 0x2000000>;
-                       };
-
-                       partition@2500000 {
-                               label = "root";
-                               reg = <0x02500000 0xd800000>;
-                       };
-               };
                sata@80000 {
                        status = "okay";
                        nr-ports = <2>;
        };
 };
 
+&nand {
+       chip-delay = <40>;
+       status = "okay";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x100000>;
+               read-only;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x0100000 0x400000>;
+       };
+
+       partition@500000 {
+               label = "pogoplug";
+               reg = <0x0500000 0x2000000>;
+       };
+
+       partition@2500000 {
+               label = "root";
+               reg = <0x02500000 0xd800000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 6548b9dc685560887f3771156f74987e5842d918..d30a91a5047d6939c2dfdd69989bde39c359f9b7 100644 (file)
                        status = "ok";
                };
 
-               nand@3000000 {
-                       status = "okay";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x00000000 0x00100000>;
-                               read-only;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x00100000 0x00400000>;
-                       };
-
-                       partition@500000 {
-                               label = "data";
-                               reg = <0x00500000 0x1fb00000>;
-                       };
-               };
-
                sata@80000 {
                        status = "okay";
                        nr-ports = <1>;
        };
 };
 
+&nand {
+       status = "okay";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x00000000 0x00100000>;
+               read-only;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x00100000 0x00400000>;
+       };
+
+       partition@500000 {
+               label = "data";
+               reg = <0x00500000 0x1fb00000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index cb711a3bd9833f3061060783fe38357bbf65cce3..c5fb02f7ebc3e33107ac067d46a6394d6c21b27d 100644 (file)
@@ -5,7 +5,7 @@
 
 / {
        model = "RaidSonic ICY BOX IB-NAS62x0 (Rev B)";
-       compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0",  "marvell,kirkwood-88f6281", "marvell,kirkwood";
+       compatible = "raidsonic,ib-nas6210-b", "raidsonic,ib-nas6220-b", "raidsonic,ib-nas6210", "raidsonic,ib-nas6220", "raidsonic,ib-nas62x0", "marvell,kirkwood-88f6281", "marvell,kirkwood";
 
        memory {
                device_type = "memory";
@@ -43,6 +43,7 @@
                                marvell,function = "gpio";
                        };
                };
+
                serial@12000 {
                        status = "okay";
                };
                        status = "okay";
                        nr-ports = <2>;
                };
-
-               nand@3000000 {
-                       status = "okay";
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x100000>;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x0100000 0x600000>;
-                       };
-
-                       partition@700000 {
-                               label = "root";
-                               reg = <0x0700000 0xf900000>;
-                       };
-
-               };
        };
 
        gpio_keys {
@@ -93,6 +72,7 @@
                        gpios = <&gpio0 28 1>;
                };
        };
+
        gpio-leds {
                compatible = "gpio-leds";
                pinctrl-0 = <&pmx_led_os_red &pmx_led_os_green
                        gpios = <&gpio0 27 0>;
                };
        };
+
        gpio_poweroff {
                compatible = "gpio-poweroff";
                pinctrl-0 = <&pmx_power_off>;
                pinctrl-names = "default";
                gpios = <&gpio0 24 0>;
        };
+};
+
+&nand {
+       status = "okay";
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0xe0000>;
+       };
 
+       partition@e0000 {
+               label = "u-boot environment";
+               reg = <0xe0000 0x100000>;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x0100000 0x600000>;
+       };
+
+       partition@700000 {
+               label = "root";
+               reg = <0x0700000 0xf900000>;
+       };
 
 };
 
 
 &eth0 {
        status = "okay";
+
        ethernet0-port@0 {
                phy-handle = <&ethphy0>;
        };
index 0323f017eeedecbc9ea3acc64d632b16b15103cd..4a62b206f680b4c1261a404ce16ce26fb498f6c0 100644 (file)
@@ -19,7 +19,6 @@
        };
 
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
                serial@12000 {
                        status = "ok";
                };
-
-               nand@3000000 {
-                       status = "okay";
-
-                       partition@0 {
-                               label = "uboot";
-                               reg = <0x0000000 0xc0000>;
-                       };
-
-                       partition@a0000 {
-                               label = "env";
-                               reg = <0xa0000 0x20000>;
-                       };
-
-                       partition@100000 {
-                               label = "zImage";
-                               reg = <0x100000 0x300000>;
-                       };
-
-                       partition@540000 {
-                               label = "initrd";
-                               reg = <0x540000 0x300000>;
-                       };
-
-                       partition@980000 {
-                               label = "boot";
-                               reg = <0x980000 0x1f400000>;
-                       };
-               };
        };
 
        gpio-leds {
        };
 };
 
+&nand {
+       status = "okay";
+
+       partition@0 {
+               label = "uboot";
+               reg = <0x0000000 0xc0000>;
+       };
+
+       partition@a0000 {
+               label = "env";
+               reg = <0xa0000 0x20000>;
+       };
+
+       partition@100000 {
+               label = "zImage";
+               reg = <0x100000 0x300000>;
+       };
+
+       partition@540000 {
+               label = "initrd";
+               reg = <0x540000 0x300000>;
+       };
+
+       partition@980000 {
+               label = "boot";
+               reg = <0x980000 0x1f400000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index df8447442b37b406332766ece95f83677ea53819..d15395d671ededf4caf501518bb1e33ffba0cba8 100644 (file)
                        status = "ok";
                };
 
-               nand@3000000 {
-                       status = "okay";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x100000>;
-                               read-only;
-                       };
-
-                       partition@a0000 {
-                               label = "env";
-                               reg = <0xa0000 0x20000>;
-                               read-only;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x100000 0x300000>;
-                       };
-
-                       partition@400000 {
-                               label = "uInitrd";
-                               reg = <0x540000 0x1000000>;
-                       };
-               };
                sata@80000 {
                        status = "okay";
                        nr-ports = <2>;
        };
 };
 
+&nand {
+       status = "okay";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x100000>;
+               read-only;
+       };
+
+       partition@a0000 {
+               label = "env";
+               reg = <0xa0000 0x20000>;
+               read-only;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x100000 0x300000>;
+       };
+
+       partition@400000 {
+               label = "uInitrd";
+               reg = <0x540000 0x1000000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 6899408482d24c1cf2229add5ba8f63fd07f8645..cd44f37e54b5b7fb81f6c53f966abc9e3e511c8e 100644 (file)
                serial@12000 {
                        status = "ok";
                };
-
-               nand@3000000 {
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-                       status = "ok";
-                       chip-delay = <25>;
-               };
        };
 
        i2c@0 {
        };
 };
 
+&nand {
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+       status = "ok";
+       chip-delay = <25>;
+};
+
 &mdio {
        status = "okay";
 
index ce2b94b513dbe1dc20478e7b8287864a13c1cb89..6c1ec2786e6e2f77c334292bab84b4e24d4cfef6 100644 (file)
@@ -17,7 +17,6 @@
         };
 
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
                         pinctrl-names = "default";
                 };
 
-                nand@3000000 {
-                        pinctrl-0 = <&pmx_nand>;
-                        pinctrl-names = "default";
-                        status = "okay";
-
-                        partition@0 {
-                                label = "uboot";
-                                reg = <0x0000000 0x100000>;
-                        };
-
-                        partition@100000 {
-                                label = "env";
-                                reg = <0x100000 0x80000>;
-                        };
-
-                        partition@180000 {
-                                label = "fdt";
-                                reg = <0x180000 0x80000>;
-                        };
-
-                        partition@200000 {
-                                label = "kernel";
-                                reg = <0x200000 0x400000>;
-                        };
-
-                        partition@600000 {
-                                label = "rootfs";
-                                reg = <0x600000 0x1fa00000>;
-                        };
-                };
-
                rtc@10300 {
                        status = "disabled";
                };
        };
 };
 
+&nand {
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       partition@0 {
+               label = "uboot";
+               reg = <0x0000000 0x100000>;
+       };
+
+       partition@100000 {
+               label = "env";
+               reg = <0x100000 0x80000>;
+       };
+
+       partition@180000 {
+               label = "fdt";
+               reg = <0x180000 0x80000>;
+       };
+
+       partition@200000 {
+               label = "kernel";
+               reg = <0x200000 0x400000>;
+       };
+
+       partition@600000 {
+               label = "rootfs";
+               reg = <0x600000 0x1fa00000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 874857ea9cb8c8a80fc812609a2b3cd368cb40df..e6a102cf424cd646d9e121acd2b821ea46bb81be 100644 (file)
@@ -17,7 +17,6 @@
        };
 
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
                        status = "okay";
                };
 
-               nand@3000000 {
-                       status = "okay";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x180000>;
-                               read-only;
-                       };
-
-                       partition@180000 {
-                               label = "u-boot-env";
-                               reg = <0x180000 0x20000>;
-                       };
-
-                       partition@200000 {
-                               label = "uImage";
-                               reg = <0x0200000 0x600000>;
-                       };
-
-                       partition@800000 {
-                               label = "minirootfs";
-                               reg = <0x0800000 0x1000000>;
-                       };
-
-                       partition@1800000 {
-                               label = "jffs2";
-                               reg = <0x1800000 0x6800000>;
-                       };
-               };
-
                sata@80000 {
                        status = "okay";
                        nr-ports = <2>;
         };
 };
 
+&nand {
+       status = "okay";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x180000>;
+               read-only;
+       };
+
+       partition@180000 {
+               label = "u-boot-env";
+               reg = <0x180000 0x20000>;
+       };
+
+       partition@200000 {
+               label = "uImage";
+               reg = <0x0200000 0x600000>;
+       };
+
+       partition@800000 {
+               label = "minirootfs";
+               reg = <0x0800000 0x1000000>;
+       };
+
+       partition@1800000 {
+               label = "jffs2";
+               reg = <0x1800000 0x6800000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 06267a91de38d7aa4bd1dc69f1e61bf39047faec..e3f915defd3da6174ad0e1829cf1be0c15e38f80 100644 (file)
                        nr-ports = <2>;
                };
 
-               nand@3000000 {
-                       status = "okay";
-                       chip-delay = <35>;
-
-                       partition@0 {
-                               label = "uboot";
-                               reg = <0x0000000 0x0100000>;
-                               read-only;
-                       };
-                       partition@100000 {
-                               label = "uboot_env";
-                               reg = <0x0100000 0x0080000>;
-                       };
-                       partition@180000 {
-                               label = "key_store";
-                               reg = <0x0180000 0x0080000>;
-                       };
-                       partition@200000 {
-                               label = "info";
-                               reg = <0x0200000 0x0080000>;
-                       };
-                       partition@280000 {
-                               label = "etc";
-                               reg = <0x0280000 0x0a00000>;
-                       };
-                       partition@c80000 {
-                               label = "kernel_1";
-                               reg = <0x0c80000 0x0a00000>;
-                       };
-                       partition@1680000 {
-                               label = "rootfs1";
-                               reg = <0x1680000 0x2fc0000>;
-                       };
-                       partition@4640000 {
-                               label = "kernel_2";
-                               reg = <0x4640000 0x0a00000>;
-                       };
-                       partition@5040000 {
-                               label = "rootfs2";
-                               reg = <0x5040000 0x2fc0000>;
-                       };
-               };
-
                pcie-controller {
                        status = "okay";
 
                };
        };
 };
+
+&nand {
+       status = "okay";
+       chip-delay = <35>;
+
+       partition@0 {
+               label = "uboot";
+               reg = <0x0000000 0x0100000>;
+               read-only;
+       };
+       partition@100000 {
+               label = "uboot_env";
+               reg = <0x0100000 0x0080000>;
+       };
+       partition@180000 {
+               label = "key_store";
+               reg = <0x0180000 0x0080000>;
+       };
+       partition@200000 {
+               label = "info";
+               reg = <0x0200000 0x0080000>;
+       };
+       partition@280000 {
+               label = "etc";
+               reg = <0x0280000 0x0a00000>;
+       };
+       partition@c80000 {
+               label = "kernel_1";
+               reg = <0x0c80000 0x0a00000>;
+       };
+       partition@1680000 {
+               label = "rootfs1";
+               reg = <0x1680000 0x2fc0000>;
+       };
+       partition@4640000 {
+               label = "kernel_2";
+               reg = <0x4640000 0x0a00000>;
+       };
+       partition@5040000 {
+               label = "rootfs2";
+               reg = <0x5040000 0x2fc0000>;
+       };
+};
index 7aeae0c2c1f498bd31fd6572b278dbe944eab107..b5418bcaeccead3b1313074c5ebf885d5f8f0e49 100644 (file)
@@ -15,7 +15,6 @@
        };
 
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
index 85ccf8d8abb133bf62289ddd6adb0ef218764eae..f0e3d213604c975b760173bc854d624d68e38ccd 100644 (file)
                        pinctrl-names = "default";
                };
 
-               nand@3000000 {
-                       chip-delay = <25>;
-                       status = "okay";
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-
-                       partition@0 {
-                               label = "uboot";
-                               reg = <0x0 0x90000>;
-                       };
-
-                       partition@90000 {
-                               label = "env";
-                               reg = <0x90000 0x44000>;
-                       };
-
-                       partition@d4000 {
-                               label = "test";
-                               reg = <0xd4000 0x24000>;
-                       };
-
-                       partition@f4000 {
-                               label = "conf";
-                               reg = <0xf4000 0x400000>;
-                       };
-
-                       partition@4f4000 {
-                               label = "linux";
-                               reg = <0x4f4000 0x1d20000>;
-                       };
-
-                       partition@2214000 {
-                               label = "user";
-                               reg = <0x2214000 0x1dec000>;
-                       };
-               };
-
                sata@80000 {
                        nr-ports = <1>;
                        status = "okay";
        };
 };
 
+&nand {
+       chip-delay = <25>;
+       status = "okay";
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+
+       partition@0 {
+               label = "uboot";
+               reg = <0x0 0x90000>;
+       };
+
+       partition@90000 {
+               label = "env";
+               reg = <0x90000 0x44000>;
+       };
+
+       partition@d4000 {
+               label = "test";
+               reg = <0xd4000 0x24000>;
+       };
+
+       partition@f4000 {
+               label = "conf";
+               reg = <0xf4000 0x400000>;
+       };
+
+       partition@4f4000 {
+               label = "linux";
+               reg = <0x4f4000 0x1d20000>;
+       };
+
+       partition@2214000 {
+               label = "user";
+               reg = <0x2214000 0x1dec000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 5696b630b70bb0c19fb0d4bc38b17342cd5a5228..1173d7fb31b23f9e11565a45592fcb99f17e41bf 100644 (file)
                        pinctrl-names = "default";
                        status = "okay";
                };
-
-               nand@3000000 {
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-                       status = "okay";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x100000>;
-                       };
-
-                       partition@100000 {
-                               label = "uImage";
-                               reg = <0x0100000 0x400000>;
-                       };
-
-                       partition@500000 {
-                               label = "root";
-                               reg = <0x0500000 0x1fb00000>;
-                       };
-               };
        };
 
        regulators {
        };
 };
 
+&nand {
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+       status = "okay";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x100000>;
+       };
+
+       partition@100000 {
+               label = "uImage";
+               reg = <0x0100000 0x400000>;
+       };
+
+       partition@500000 {
+               label = "root";
+               reg = <0x0500000 0x1fb00000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 30842b4ff29394185f61d3cc702ddcd192000043..320da677b9847e94f0aba2bcc634bd90890686a6 100644 (file)
                        pinctrl-names = "default";
                };
 
-               nand@3000000 {
-                       status = "okay";
-                       pinctrl-0 = <&pmx_nand>;
-                       pinctrl-names = "default";
-
-                       partition@0 {
-                               label = "u-boot";
-                               reg = <0x0000000 0x180000>;
-                       };
-
-                       partition@180000 {
-                               label = "u-boot env";
-                               reg = <0x0180000 0x20000>;
-                       };
-
-                       partition@200000 {
-                               label = "uImage";
-                               reg = <0x0200000 0x600000>;
-                       };
-
-                       partition@800000 {
-                               label = "uInitrd";
-                               reg = <0x0800000 0x1000000>;
-                       };
-
-                       partition@1800000 {
-                               label = "rootfs";
-                               reg = <0x1800000 0xe800000>;
-                       };
-               };
-
                sata@80000 {
                        status = "okay";
                        nr-ports = <1>;
        };
 };
 
+&nand {
+       status = "okay";
+       pinctrl-0 = <&pmx_nand>;
+       pinctrl-names = "default";
+
+       partition@0 {
+               label = "u-boot";
+               reg = <0x0000000 0x180000>;
+       };
+
+       partition@180000 {
+               label = "u-boot env";
+               reg = <0x0180000 0x20000>;
+       };
+
+       partition@200000 {
+               label = "uImage";
+               reg = <0x0200000 0x600000>;
+       };
+
+       partition@800000 {
+               label = "uInitrd";
+               reg = <0x0800000 0x1000000>;
+       };
+
+       partition@1800000 {
+               label = "rootfs";
+               reg = <0x1800000 0xe800000>;
+       };
+};
+
 &mdio {
        status = "okay";
 
index 9efcd2dc79d3f74eaffb2b95bc9ff4fb9c7662db..345562f7589182975d27ae5e95b1e4319bc7f843 100644 (file)
@@ -6,7 +6,6 @@
 
 / {
        mbus {
-               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000>;
                pcie-controller {
                        status = "okay";
 
index 1335b2e1bed4c66efe95ee2f679129d3856ccb43..8b73c80f1dad40995be65547ee5caa4a4fbffdaa 100644 (file)
                compatible = "marvell,kirkwood-mbus", "simple-bus";
                #address-cells = <2>;
                #size-cells = <1>;
+               /* If a board file needs to change this ranges it must replace it completely */
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000     /* internal-regs */
+                         MBUS_ID(0x01, 0x2f) 0 0xf4000000 0x10000      /* nand flash */
+                         MBUS_ID(0x03, 0x01) 0 0xf5000000 0x10000      /* crypto sram */
+                         >;
                controller = <&mbusc>;
                pcie-mem-aperture = <0xe0000000 0x10000000>; /* 256 MiB memory space */
                pcie-io-aperture  = <0xf2000000 0x100000>;   /*   1 MiB    I/O space */
+
+               crypto@0301 {
+                       compatible = "marvell,orion-crypto";
+                       reg = <MBUS_ID(0xf0, 0x01) 0x30000 0x10000>,
+                             <MBUS_ID(0x03, 0x01) 0 0x800>;
+                       reg-names = "regs", "sram";
+                       interrupts = <22>;
+                       clocks = <&gate_clk 17>;
+                       status = "okay";
+               };
+
+               nand: nand@012f {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       cle = <0>;
+                       ale = <1>;
+                       bank-width = <1>;
+                       compatible = "marvell,orion-nand";
+                       reg = <MBUS_ID(0x01, 0x2f) 0 0x400>;
+                       chip-delay = <25>;
+                       /* set partition map and/or chip-delay in board dts */
+                       clocks = <&gate_clk 7>;
+                       status = "disabled";
+               };
        };
 
        ocp@f1000000 {
                compatible = "simple-bus";
-               ranges = <0x00000000 0xf1000000 0x0100000
-                         0xf4000000 0xf4000000 0x0000400
-                         0xf5000000 0xf5000000 0x0000400>;
+               ranges = <0x00000000 0xf1000000 0x0100000>;
                #address-cells = <1>;
                #size-cells = <1>;
 
                        status = "okay";
                };
 
-               nand@3000000 {
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-                       cle = <0>;
-                       ale = <1>;
-                       bank-width = <1>;
-                       compatible = "marvell,orion-nand";
-                       reg = <0xf4000000 0x400>;
-                       chip-delay = <25>;
-                       /* set partition map and/or chip-delay in board dts */
-                       clocks = <&gate_clk 7>;
-                       status = "disabled";
-               };
-
                i2c@11000 {
                        compatible = "marvell,mv64xxx-i2c";
                        reg = <0x11000 0x20>;
                        status = "disabled";
                };
 
-               crypto@30000 {
-                       compatible = "marvell,orion-crypto";
-                       reg = <0x30000 0x10000>,
-                             <0xf5000000 0x800>;
-                       reg-names = "regs", "sram";
-                       interrupts = <22>;
-                       clocks = <&gate_clk 17>;
-                       status = "okay";
-               };
-
                mdio: mdio-bus@72004 {
                        compatible = "marvell,orion-mdio";
                        #address-cells = <1>;
diff --git a/arch/arm/boot/dts/mxs-pinfunc.h b/arch/arm/boot/dts/mxs-pinfunc.h
new file mode 100644 (file)
index 0000000..c6da987
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * Header providing constants for i.MX28 pinctrl bindings.
+ *
+ * Copyright (C) 2013 Lothar Waßmann <LW@KARO-electronics.de>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#ifndef __DT_BINDINGS_MXS_PINCTRL_H__
+#define __DT_BINDINGS_MXS_PINCTRL_H__
+
+/* fsl,drive-strength property */
+#define MXS_DRIVE_4mA          0
+#define MXS_DRIVE_8mA          1
+#define MXS_DRIVE_12mA         2
+#define MXS_DRIVE_16mA         3
+
+/* fsl,voltage property */
+#define MXS_VOLTAGE_LOW                0
+#define MXS_VOLTAGE_HIGH       1
+
+/* fsl,pull-up property */
+#define MXS_PULL_DISABLE       0
+#define MXS_PULL_ENABLE                1
+
+#endif /* __DT_BINDINGS_MXS_PINCTRL_H__ */
diff --git a/arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi b/arch/arm/boot/dts/omap-gpmc-smsc911x.dtsi
new file mode 100644 (file)
index 0000000..9c18adf
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Common file for GPMC connected smsc911x on omaps
+ *
+ * Note that the board specifc DTS file needs to specify
+ * ranges, pinctrl, reg, interrupt parent and interrupts.
+ */
+
+/ {
+       vddvario: regulator-vddvario {
+                 compatible = "regulator-fixed";
+                 regulator-name = "vddvario";
+                 regulator-always-on;
+       };
+
+       vdd33a: regulator-vdd33a {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd33a";
+               regulator-always-on;
+       };
+};
+
+&gpmc {
+       ethernet@gpmc {
+               compatible = "smsc,lan9221", "smsc,lan9115";
+               bank-width = <2>;
+               gpmc,mux-add-data;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <186>;
+               gpmc,cs-wr-off-ns = <186>;
+               gpmc,adv-on-ns = <12>;
+               gpmc,adv-rd-off-ns = <48>;
+               gpmc,adv-wr-off-ns = <48>;
+               gpmc,oe-on-ns = <54>;
+               gpmc,oe-off-ns = <168>;
+               gpmc,we-on-ns = <54>;
+               gpmc,we-off-ns = <168>;
+               gpmc,rd-cycle-ns = <186>;
+               gpmc,wr-cycle-ns = <186>;
+               gpmc,access-ns = <114>;
+               gpmc,page-burst-access-ns = <6>;
+               gpmc,bus-turnaround-ns = <12>;
+               gpmc,cycle2cycle-delay-ns = <18>;
+               gpmc,wr-data-mux-bus-ns = <90>;
+               gpmc,wr-access-ns = <186>;
+               gpmc,cycle2cycle-samecsen;
+               gpmc,cycle2cycle-diffcsen;
+               vmmc-supply = <&vddvario>;
+               vmmc_aux-supply = <&vdd33a>;
+               reg-io-width = <4>;
+               smsc,save-mac-address;
+       };
+};
diff --git a/arch/arm/boot/dts/omap-zoom-common.dtsi b/arch/arm/boot/dts/omap-zoom-common.dtsi
new file mode 100644 (file)
index 0000000..b0ee342
--- /dev/null
@@ -0,0 +1,33 @@
+/*
+ * Common features on the Zoom debug board
+ */
+
+#include "omap-gpmc-smsc911x.dtsi"
+
+&gpmc {
+       ranges = <3 0 0x10000000 0x00000400>,
+                <7 0 0x2c000000 0x01000000>;
+
+       /*
+        * Four port TL16CP754C serial port on GPMC,
+        * they probably share the same GPIO IRQ
+        * REVISIT: Add timing support from slls644g.pdf
+        */
+       8250@3,0 {
+               compatible = "ns16550a";
+               reg = <3 0 0x100>;
+               bank-width = <2>;
+               reg-shift = <1>;
+               reg-io-width = <1>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <6 IRQ_TYPE_EDGE_RISING>;  /* gpio102 */
+               clock-frequency = <1843200>;
+               current-speed = <115200>;
+       };
+
+       ethernet@gpmc {
+               reg = <7 0 0xff>;
+               interrupt-parent = <&gpio5>;
+               interrupts = <30 IRQ_TYPE_LEVEL_LOW>;   /* gpio158 */
+       };
+};
index 224c08f472f42788d9903f70b67640cad47ddb9b..34cdecb4fddabae4dfc8bb3d2be3671309ac1de0 100644 (file)
                        label = "bootloader";
                        reg = <0 0x20000>;
                };
-               partition@0x20000 {
+               partition@20000 {
                        label = "params";
                        reg = <0x20000 0x20000>;
                };
-               partition@0x40000 {
+               partition@40000 {
                        label = "kernel";
                        reg = <0x40000 0x200000>;
                };
-               partition@0x240000 {
+               partition@240000 {
                        label = "file-system";
                        reg = <0x240000 0x3dc0000>;
                };
index 0c514dc8460c2423299848748278a452638e535c..2e88095ea67bbb68ecdeeb7d4ab73ff520f627ed 100644 (file)
@@ -11,7 +11,7 @@
 
 / {
        model = "TI OMAP3 BeagleBoard xM";
-       compatible = "ti,omap3-beagle-xm", "ti,omap3-beagle", "ti,omap3";
+       compatible = "ti,omap3-beagle-xm", "ti,omap36xx", "ti,omap3";
 
        cpus {
                cpu@0 {
                };
 
        };
+
+       /* HS USB Port 2 Power */
+       hsusb2_power: hsusb2_power_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "hsusb2_vbus";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&twl_gpio 18 0>;        /* GPIO LEDA */
+               startup-delay-us = <70000>;
+       };
+
+       /* HS USB Host PHY on PORT 2 */
+       hsusb2_phy: hsusb2_phy {
+               compatible = "usb-nop-xceiv";
+               reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>; /* gpio_147 */
+               vcc-supply = <&hsusb2_power>;
+       };
 };
 
 &omap3_pmx_wkup {
        };
 };
 
+&omap3_pmx_core {
+       pinctrl-names = "default";
+       pinctrl-0 = <
+                       &hsusbb2_pins
+       >;
+
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+                       0x16e (PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
+                       0x170 (PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx OUTPUT | MODE0 */
+               >;
+       };
+
+       hsusbb2_pins: pinmux_hsusbb2_pins {
+               pinctrl-single,pins = <
+                       0x5c0 (PIN_OUTPUT | MUX_MODE3)          /* etk_d10.hsusb2_clk */
+                       0x5c2 (PIN_OUTPUT | MUX_MODE3)          /* etk_d11.hsusb2_stp */
+                       0x5c4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d12.hsusb2_dir */
+                       0x5c6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d13.hsusb2_nxt */
+                       0x5c8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d14.hsusb2_data0 */
+                       0x5cA (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d15.hsusb2_data1 */
+                       0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi1_cs3.hsusb2_data2 */
+                       0x1a6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_clk.hsusb2_data7 */
+                       0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_simo.hsusb2_data4 */
+                       0x1aa (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_somi.hsusb2_data5 */
+                       0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_cs0.hsusb2_data6 */
+                       0x1ae (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_cs1.hsusb2_data3 */
+               >;
+       };
+};
+
 &i2c1 {
        clock-frequency = <2600000>;
 
        power = <50>;
 };
 
-&omap3_pmx_core {
-       uart3_pins: pinmux_uart3_pins {
-               pinctrl-single,pins = <
-                       0x16e (PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
-                       0x170 (PIN_OUTPUT | MUX_MODE0) /* uart3_tx_irtx.uart3_tx_irtx OUTPUT | MODE0 */
-               >;
-       };
-};
-
 &uart3 {
        pinctrl-names = "default";
        pinctrl-0 = <&uart3_pins>;
        pinctrl-names = "default";
        pinctrl-0 = <&gpio1_pins>;
 };
+
+&usbhshost {
+       port2-mode = "ehci-phy";
+};
+
+&usbhsehci {
+       phys = <0 &hsusb2_phy>;
+};
index dfd83103657aa85669499f747428e9449c1854ff..fa532aaacc68943989241b92a6e31743e3e854fe 100644 (file)
                };
        };
 
-       /* HS USB Port 2 RESET */
-       hsusb2_reset: hsusb2_reset_reg {
-               compatible = "regulator-fixed";
-               regulator-name = "hsusb2_reset";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&gpio5 19 0>;   /* gpio_147 */
-               startup-delay-us = <70000>;
-               enable-active-high;
-       };
-
        /* HS USB Port 2 Power */
        hsusb2_power: hsusb2_power_reg {
                compatible = "regulator-fixed";
@@ -68,7 +57,7 @@
        /* HS USB Host PHY on PORT 2 */
        hsusb2_phy: hsusb2_phy {
                compatible = "usb-nop-xceiv";
-               reset-supply = <&hsusb2_reset>;
+               reset-gpios = <&gpio5 19 GPIO_ACTIVE_LOW>;      /* gpio_147 */
                vcc-supply = <&hsusb2_power>;
        };
 
 
        hsusbb2_pins: pinmux_hsusbb2_pins {
                pinctrl-single,pins = <
-                       0x5c0 (PIN_OUTPUT | MUX_MODE3)          /* usbb2_ulpitll_clk.usbb1_ulpiphy_clk */
-                       0x5c2 (PIN_OUTPUT | MUX_MODE3)          /* usbb2_ulpitll_clk.usbb1_ulpiphy_stp */
-                       0x5c4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dir */
-                       0x5c6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_nxt */
-                       0x5c8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat0 */
-                       0x5cA (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat1 */
-                       0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat2 */
-                       0x1a6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat3 */
-                       0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat4 */
-                       0x1aa (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat5 */
-                       0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat6 */
-                       0x1ae (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* usbb2_ulpitll_clk.usbb1_ulpiphy_dat7 */
+                       0x5c0 (PIN_OUTPUT | MUX_MODE3)          /* etk_d10.hsusb2_clk */
+                       0x5c2 (PIN_OUTPUT | MUX_MODE3)          /* etk_d11.hsusb2_stp */
+                       0x5c4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d12.hsusb2_dir */
+                       0x5c6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d13.hsusb2_nxt */
+                       0x5c8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d14.hsusb2_data0 */
+                       0x5cA (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d15.hsusb2_data1 */
+                       0x1a4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi1_cs3.hsusb2_data2 */
+                       0x1a6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_clk.hsusb2_data7 */
+                       0x1a8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_simo.hsusb2_data4 */
+                       0x1aa (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_somi.hsusb2_data5 */
+                       0x1ac (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_cs0.hsusb2_data6 */
+                       0x1ae (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* mcspi2_cs1.hsusb2_data3 */
                >;
        };
 
        pinctrl-names = "default";
        pinctrl-0 = <&gpio1_pins>;
 };
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       phys = <&usb2_phy>;
+       phy-names = "usb2-phy";
+       mode = <3>;
+       power = <50>;
+};
index 7ef282795dd4194fb05df05def1a8b918d94a434..4665421bb7bc348fc549c1883a1bf8dbd5602327 100644 (file)
                nand-bus-width = <16>;
 
                gpmc,device-nand;
-               gpmc,sync-clki-ps = <0>;
+               gpmc,sync-clk-ps = <0>;
                gpmc,cs-on-ns = <0>;
                gpmc,cs-rd-off-ns = <44>;
                gpmc,cs-wr-off-ns = <44>;
diff --git a/arch/arm/boot/dts/omap3-evm-37xx.dts b/arch/arm/boot/dts/omap3-evm-37xx.dts
new file mode 100644 (file)
index 0000000..4df68ad
--- /dev/null
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "omap36xx.dtsi"
+#include "omap3-evm-common.dtsi"
+
+
+/ {
+       model = "TI OMAP37XX EVM (TMDSEVM3730)";
+       compatible = "ti,omap3-evm-37xx", "ti,omap36xx";
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>; /* 256 MB */
+       };
+
+       wl12xx_vmmc: wl12xx_vmmc {
+               pinctrl-names = "default";
+               pinctrl-0 = <&wl12xx_gpio>;
+       };
+};
+
+&omap3_pmx_core {
+       mmc1_pins: pinmux_mmc1_pins {
+               pinctrl-single,pins = <
+                       0x114 (PIN_OUTPUT_PULLUP | MUX_MODE0)   /* sdmmc1_clk.sdmmc1_clk */
+                       0x116 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_cmd.sdmmc1_cmd */
+                       0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat0.sdmmc1_dat0 */
+                       0x11a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat1.sdmmc1_dat1 */
+                       0x11c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat2.sdmmc1_dat2 */
+                       0x11e (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat3.sdmmc1_dat3 */
+                       0x120 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat4.sdmmc1_dat4 */
+                       0x122 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat5.sdmmc1_dat5 */
+                       0x124 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat6.sdmmc1_dat6 */
+                       0x126 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat7.sdmmc1_dat7 */
+               >;
+       };
+
+       /* NOTE: Clocked externally, needs INPUT also for sdmmc2_clk.sdmmc2_clk */
+       mmc2_pins: pinmux_mmc2_pins {
+               pinctrl-single,pins = <
+                       0x128 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_clk.sdmmc2_clk */
+                       0x12a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_cmd.sdmmc2_cmd */
+                       0x12c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat0.sdmmc2_dat0 */
+                       0x12e (WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
+                       0x130 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat2.sdmmc2_dat2 */
+                       0x132 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_dat3.sdmmc2_dat3 */
+               >;
+       };
+
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+                       0x16e (WAKEUP_EN | PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
+                       0x170 (PIN_OUTPUT | MUX_MODE0)          /* uart3_tx_irtx.uart3_tx_irtx */
+               >;
+       };
+
+       wl12xx_gpio: pinmux_wl12xx_gpio {
+               pinctrl-single,pins = <
+                       0x150 (PIN_OUTPUT | MUX_MODE4)          /* uart1_cts.gpio_150 */
+                       0x14e (PIN_INPUT | MUX_MODE4)           /* uart1_rts.gpio_149 */
+               >;
+       };
+
+       smsc911x_pins: pinmux_smsc911x_pins {
+               pinctrl-single,pins = <
+                       0x1a2 (PIN_INPUT | MUX_MODE4)           /* mcspi1_cs2.gpio_176 */
+               >;
+       };
+};
+
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+};
+
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_pins>;
+};
+
+&mmc3 {
+       status = "disabled";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
+
+&gpmc {
+       ranges = <0 0 0x00000000 0x20000000>,
+                <5 0 0x2c000000 0x01000000>;
+
+       nand@0,0 {
+               linux,mtd-name= "hynix,h8kds0un0mer-4em";
+               reg = <0 0 0>;
+               nand-bus-width = <16>;
+               ti,nand-ecc-opt = "bch8";
+
+               gpmc,sync-clk-ps = <0>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <44>;
+               gpmc,cs-wr-off-ns = <44>;
+               gpmc,adv-on-ns = <6>;
+               gpmc,adv-rd-off-ns = <34>;
+               gpmc,adv-wr-off-ns = <44>;
+               gpmc,we-off-ns = <40>;
+               gpmc,oe-off-ns = <54>;
+               gpmc,access-ns = <64>;
+               gpmc,rd-cycle-ns = <82>;
+               gpmc,wr-cycle-ns = <82>;
+               gpmc,wr-access-ns = <40>;
+               gpmc,wr-data-mux-bus-ns = <0>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "X-Loader";
+                       reg = <0 0x80000>;
+               };
+               partition@0x80000 {
+                       label = "U-Boot";
+                       reg = <0x80000 0x1c0000>;
+               };
+               partition@0x1c0000 {
+                       label = "Environment";
+                       reg = <0x240000 0x40000>;
+               };
+               partition@0x280000 {
+                       label = "Kernel";
+                       reg = <0x280000 0x500000>;
+               };
+               partition@0x780000 {
+                       label = "Filesystem";
+                       reg = <0x780000 0x1f880000>;
+               };
+       };
+
+       ethernet@gpmc {
+               pinctrl-names = "default";
+               pinctrl-0 = <&smsc911x_pins>;
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-evm-common.dtsi b/arch/arm/boot/dts/omap3-evm-common.dtsi
new file mode 100644 (file)
index 0000000..b549329
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Common support for omap3 EVM boards
+ */
+
+#include "omap-gpmc-smsc911x.dtsi"
+
+/ {
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vcc>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               ledb {
+                       label = "omap3evm::ledb";
+                       gpios = <&twl_gpio 19 GPIO_ACTIVE_HIGH>; /* LEDB */
+                       linux,default-trigger = "default-on";
+               };
+       };
+
+       wl12xx_vmmc: wl12xx_vmmc {
+               compatible = "regulator-fixed";
+               regulator-name = "vwl1271";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               gpio = <&gpio5 22 0>;   /* gpio150 */
+               startup-delay-us = <70000>;
+               enable-active-high;
+               vin-supply = <&vmmc2>;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <2600000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+               interrupt-parent = <&intc>;
+       };
+};
+
+#include "twl4030.dtsi"
+#include "twl4030_omap3.dtsi"
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       /*
+        * TVP5146 Video decoder-in for analog input support.
+        */
+       tvp5146@5c {
+               compatible = "ti,tvp5146m2";
+               reg = <0x5c>;
+       };
+};
+
+&mmc1 {
+       vmmc-supply = <&vmmc1>;
+       vmmc_aux-supply = <&vsim>;
+       bus-width = <8>;
+};
+
+&mmc2 {
+       vmmc-supply = <&wl12xx_vmmc>;
+       non-removable;
+       bus-width = <4>;
+       cap-power-off-card;
+};
+
+&twl_gpio {
+       ti,use-leds;
+};
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       mode = <3>;
+       power = <50>;
+};
+
+&gpmc {
+       ethernet@gpmc {
+               interrupt-parent = <&gpio6>;
+               interrupts = <16 8>;
+               reg = <5 0 0xff>;
+       };
+};
index 7d4329d179c43e24cae9bfaddb4c5b1fbc626535..e10dcd0fa539452f6fcaab8ae295fd60085f18b6 100644 (file)
@@ -8,68 +8,14 @@
 /dts-v1/;
 
 #include "omap34xx.dtsi"
+#include "omap3-evm-common.dtsi"
 
 / {
-       model = "TI OMAP3 EVM (OMAP3530, AM/DM37x)";
+       model = "TI OMAP35XX EVM (TMDSEVM3530)";
        compatible = "ti,omap3-evm", "ti,omap3";
 
-       cpus {
-               cpu@0 {
-                       cpu0-supply = <&vcc>;
-               };
-       };
-
        memory {
                device_type = "memory";
                reg = <0x80000000 0x10000000>; /* 256 MB */
        };
-
-       leds {
-               compatible = "gpio-leds";
-               ledb {
-                       label = "omap3evm::ledb";
-                       gpios = <&twl_gpio 19 GPIO_ACTIVE_HIGH>; /* LEDB */
-                       linux,default-trigger = "default-on";
-               };
-       };
-};
-
-&i2c1 {
-       clock-frequency = <2600000>;
-
-       twl: twl@48 {
-               reg = <0x48>;
-               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
-               interrupt-parent = <&intc>;
-       };
-};
-
-#include "twl4030.dtsi"
-#include "twl4030_omap3.dtsi"
-
-&i2c2 {
-       clock-frequency = <400000>;
-};
-
-&i2c3 {
-       clock-frequency = <400000>;
-
-       /*
-        * TVP5146 Video decoder-in for analog input support.
-        */
-       tvp5146@5c {
-               compatible = "ti,tvp5146m2";
-               reg = <0x5c>;
-       };
-};
-
-&twl_gpio {
-       ti,use-leds;
-};
-
-&usb_otg_hs {
-       interface-type = <0>;
-       usb-phy = <&usb2_phy>;
-       mode = <3>;
-       power = <50>;
 };
diff --git a/arch/arm/boot/dts/omap3-gta04.dts b/arch/arm/boot/dts/omap3-gta04.dts
new file mode 100644 (file)
index 0000000..b9b55c9
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2013 Marek Belisko <marek@goldelico.com>
+ *
+ * Based on omap3-beagle-xm.dts
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "omap36xx.dtsi"
+
+/ {
+       model = "OMAP3 GTA04";
+       compatible = "ti,omap3-gta04", "ti,omap3";
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vcc>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>; /* 512 MB */
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+
+               aux-button {
+                       label = "aux";
+                       linux,code = <169>;
+                       gpios = <&gpio1 7 GPIO_ACTIVE_LOW>;
+                       gpio-key,wakeup;
+               };
+       };
+};
+
+&omap3_pmx_core {
+       uart1_pins: pinmux_uart1_pins {
+               pinctrl-single,pins = <
+                       0x152 (PIN_INPUT | MUX_MODE0)           /* uart1_rx.uart1_rx */
+                       0x14c (PIN_OUTPUT |MUX_MODE0)           /* uart1_tx.uart1_tx */
+               >;
+       };
+
+       uart2_pins: pinmux_uart2_pins {
+               pinctrl-single,pins = <
+                       0x14a (PIN_INPUT | MUX_MODE0)           /* uart2_rx.uart2_rx */
+                       0x148 (PIN_OUTPUT | MUX_MODE0)          /* uart2_tx.uart2_tx */
+               >;
+       };
+
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+                       0x16e (PIN_INPUT | MUX_MODE0)           /* uart3_rx.uart3_rx */
+                       0x170 (PIN_OUTPUT | MUX_MODE0)          /* uart3_tx.uart3_tx */
+               >;
+       };
+
+       mmc1_pins: pinmux_mmc1_pins {
+               pinctrl-single,pins = <
+                       0x114 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_clk.sdmmc1_clk */
+                       0x116 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_cmd.sdmmc1_cmd */
+                       0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat0.sdmmc1_dat0 */
+                       0x11a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat1.sdmmc1_dat1 */
+                       0x11c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat2.sdmmc1_dat2 */
+                       0x11e (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat3.sdmmc1_dat3 */
+               >;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <2600000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+               interrupt-parent = <&intc>;
+       };
+};
+
+#include "twl4030.dtsi"
+#include "twl4030_omap3.dtsi"
+
+&i2c2 {
+       clock-frequency = <400000>;
+
+       /* pressure sensor */
+       bmp085@77 {
+               compatible = "bosch,bmp085";
+               reg = <0x77>;
+       };
+
+       /* leds */
+       tca6507@45 {
+               compatible = "ti,tca6507";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x45>;
+
+               gta04_led0: red_aux@0 {
+                       label = "gta04:red:aux";
+                       reg = <0x0>;
+               };
+
+               gta04_led1: green_aux@1 {
+                       label = "gta04:green:aux";
+                       reg = <0x1>;
+               };
+
+               gta04_led3: red_power@3 {
+                       label = "gta04:red:power";
+                       reg = <0x3>;
+                       linux,default-trigger = "default-on";
+               };
+
+               gta04_led4: green_power@4 {
+                       label = "gta04:green:power";
+                       reg = <0x4>;
+               };
+       };
+};
+
+&i2c3 {
+       clock-frequency = <100000>;
+};
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       phys = <&usb2_phy>;
+       phy-names = "usb2-phy";
+       mode = <3>;
+       power = <50>;
+};
+
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       vmmc-supply = <&vmmc1>;
+       vmmc_aux-supply = <&vsim>;
+       bus-width = <4>;
+};
+
+&mmc2 {
+       status = "disabled";
+};
+
+&mmc3 {
+       status = "disabled";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
+
index 2326d11462a57dcb9e43991b359f63ce14da1520..ba1e58b7b7e35ddbdf4825853cf72cef6a951939 100644 (file)
@@ -77,6 +77,8 @@
                        0x1a2 (PIN_INPUT | MUX_MODE4)           /* mcspi1_cs2.gpio_176 */
                >;
        };
+
+       leds_pins: pinmux_leds_pins { };
 };
 
 &i2c1 {
 &twl_gpio {
        ti,use-leds;
 };
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       phys = <&usb2_phy>;
+       phy-names = "usb2-phy";
+       mode = <3>;
+       power = <50>;
+};
index e8c48284587cb0b741347b501f036f746eb22423..d5cc792672501012f2a368b4d27b17bbb7669d95 100644 (file)
  */
 
 #include "omap3-igep.dtsi"
+#include "omap-gpmc-smsc911x.dtsi"
 
 / {
        model = "IGEPv2";
        compatible = "isee,omap3-igep0020", "ti,omap3";
 
        leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&leds_pins>;
                compatible = "gpio-leds";
+
                boot {
                         label = "omap3:green:boot";
                         gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
                };
        };
 
-       vddvario: regulator-vddvario {
-                 compatible = "regulator-fixed";
-                 regulator-name = "vddvario";
-                 regulator-always-on;
+       /* HS USB Port 1 Power */
+       hsusb1_power: hsusb1_power_reg {
+               compatible = "regulator-fixed";
+               regulator-name = "hsusb1_vbus";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               gpio = <&twl_gpio 18 GPIO_ACTIVE_LOW>;  /* GPIO LEDA */
+               startup-delay-us = <70000>;
+       };
+
+       /* HS USB Host PHY on PORT 1 */
+       hsusb1_phy: hsusb1_phy {
+               compatible = "usb-nop-xceiv";
+               reset-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>; /* gpio_24 */
+               vcc-supply = <&hsusb1_power>;
        };
+};
 
-       vdd33a: regulator-vdd33a {
-               compatible = "regulator-fixed";
-               regulator-name = "vdd33a";
-               regulator-always-on;
+&omap3_pmx_core {
+       pinctrl-names = "default";
+       pinctrl-0 = <
+               &hsusbb1_pins
+       >;
+
+       hsusbb1_pins: pinmux_hsusbb1_pins {
+               pinctrl-single,pins = <
+                       0x5aa (PIN_OUTPUT | MUX_MODE3)          /* etk_ctl.hsusb1_clk */
+                       0x5a8 (PIN_OUTPUT | MUX_MODE3)          /* etk_clk.hsusb1_stp */
+                       0x5bc (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d8.hsusb1_dir */
+                       0x5be (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d9.hsusb1_nxt */
+                       0x5ac (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d0.hsusb1_data0 */
+                       0x5ae (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d1.hsusb1_data1 */
+                       0x5b0 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d2.hsusb1_data2 */
+                       0x5b2 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d3.hsusb1_data7 */
+                       0x5b4 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d4.hsusb1_data4 */
+                       0x5b6 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d5.hsusb1_data5 */
+                       0x5b8 (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d6.hsusb1_data6 */
+                       0x5ba (PIN_INPUT_PULLDOWN | MUX_MODE3)  /* etk_d7.hsusb1_data3 */
+               >;
        };
 };
 
+&leds_pins {
+       pinctrl-single,pins = <
+               0x5c4 (PIN_OUTPUT | MUX_MODE4) /* etk_d12.gpio_26 */
+               0x5c6 (PIN_OUTPUT | MUX_MODE4) /* etk_d13.gpio_27 */
+               0x5c8 (PIN_OUTPUT | MUX_MODE4) /* etk_d14.gpio_28 */
+       >;
+};
+
 &i2c3 {
        clock-frequency = <100000>;
 
                        label = "SPL";
                        reg = <0 0x100000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "U-Boot";
                        reg = <0x100000 0x180000>;
                };
-               partition@0x1c0000 {
+               partition@1c0000 {
                        label = "Environment";
                        reg = <0x280000 0x100000>;
                };
-               partition@0x280000 {
+               partition@280000 {
                        label = "Kernel";
                        reg = <0x380000 0x300000>;
                };
-               partition@0x780000 {
+               partition@780000 {
                        label = "Filesystem";
                        reg = <0x680000 0x1f980000>;
                };
        };
 
-       ethernet@5,0 {
+       ethernet@gpmc {
                pinctrl-names = "default";
                pinctrl-0 = <&smsc911x_pins>;
-               compatible = "smsc,lan9221", "smsc,lan9115";
                reg = <5 0 0xff>;
-               bank-width = <2>;
-
-               gpmc,mux-add-data;
-               gpmc,cs-on-ns = <0>;
-               gpmc,cs-rd-off-ns = <186>;
-               gpmc,cs-wr-off-ns = <186>;
-               gpmc,adv-on-ns = <12>;
-               gpmc,adv-rd-off-ns = <48>;
-               gpmc,adv-wr-off-ns = <48>;
-               gpmc,oe-on-ns = <54>;
-               gpmc,oe-off-ns = <168>;
-               gpmc,we-on-ns = <54>;
-               gpmc,we-off-ns = <168>;
-               gpmc,rd-cycle-ns = <186>;
-               gpmc,wr-cycle-ns = <186>;
-               gpmc,access-ns = <114>;
-               gpmc,page-burst-access-ns = <6>;
-               gpmc,bus-turnaround-ns = <12>;
-               gpmc,cycle2cycle-delay-ns = <18>;
-               gpmc,wr-data-mux-bus-ns = <90>;
-               gpmc,wr-access-ns = <186>;
-               gpmc,cycle2cycle-samecsen;
-               gpmc,cycle2cycle-diffcsen;
-
                interrupt-parent = <&gpio6>;
-               interrupts = <16 8>;
-               vmmc-supply = <&vddvario>;
-               vmmc_aux-supply = <&vdd33a>;
-               reg-io-width = <4>;
-
-               smsc,save-mac-address;
+               interrupts = <16 IRQ_TYPE_LEVEL_LOW>;
        };
 };
+
+&usbhshost {
+       port1-mode = "ehci-phy";
+};
+
+&usbhsehci {
+       phys = <&hsusb1_phy>;
+};
index 644d05383836f45dfe5612ad760d100fb12e9072..525e6d9b09784c721b4660554a17abdda14273e9 100644 (file)
        compatible = "isee,omap3-igep0030", "ti,omap3";
 
        leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&leds_pins>;
                compatible = "gpio-leds";
+
                boot {
                         label = "omap3:green:boot";
                         gpios = <&twl_gpio 13 GPIO_ACTIVE_LOW>;
        };
 };
 
+&leds_pins {
+       pinctrl-single,pins = <
+               0x5b0 (PIN_OUTPUT | MUX_MODE4) /* etk_d2.gpio_16 */
+       >;
+};
+
 &gpmc {
        ranges = <0 0 0x00000000 0x20000000>;
 
                        label = "SPL";
                        reg = <0 0x100000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "U-Boot";
                        reg = <0x100000 0x180000>;
                };
-               partition@0x1c0000 {
+               partition@1c0000 {
                        label = "Environment";
                        reg = <0x280000 0x100000>;
                };
-               partition@0x280000 {
+               partition@280000 {
                        label = "Kernel";
                        reg = <0x380000 0x300000>;
                };
-               partition@0x780000 {
+               partition@780000 {
                        label = "Filesystem";
                        reg = <0x680000 0x1f980000>;
                };
diff --git a/arch/arm/boot/dts/omap3-n9.dts b/arch/arm/boot/dts/omap3-n9.dts
new file mode 100644 (file)
index 0000000..39828ce
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * omap3-n9.dts - Device Tree file for Nokia N9
+ *
+ * Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "omap3-n950-n9.dtsi"
+
+/ {
+       model = "Nokia N9";
+       compatible = "nokia,omap3-n9", "ti,omap3";
+};
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
new file mode 100644 (file)
index 0000000..c4f20bf
--- /dev/null
@@ -0,0 +1,484 @@
+/*
+ * Copyright (C) 2013 Pavel Machek <pavel@ucw.cz>
+ * Copyright 2013 Aaro Koskinen <aaro.koskinen@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 (or later) as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "omap34xx.dtsi"
+
+/ {
+       model = "Nokia N900";
+       compatible = "nokia,omap3-n900", "ti,omap3";
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vcc>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x10000000>; /* 256 MB */
+       };
+
+       gpio_keys {
+               compatible = "gpio-keys";
+
+               camera_lens_cover {
+                       label = "Camera Lens Cover";
+                       gpios = <&gpio4 14 GPIO_ACTIVE_LOW>; /* 110 */
+                       linux,input-type = <5>; /* EV_SW */
+                       linux,code = <0x09>; /* SW_CAMERA_LENS_COVER */
+                       gpio-key,wakeup;
+               };
+
+               camera_focus {
+                       label = "Camera Focus";
+                       gpios = <&gpio3 4 GPIO_ACTIVE_LOW>; /* 68 */
+                       linux,code = <0x210>; /* KEY_CAMERA_FOCUS */
+                       gpio-key,wakeup;
+               };
+
+               camera_capture {
+                       label = "Camera Capture";
+                       gpios = <&gpio3 5 GPIO_ACTIVE_LOW>; /* 69 */
+                       linux,code = <0xd4>; /* KEY_CAMERA */
+                       gpio-key,wakeup;
+               };
+
+               lock_button {
+                       label = "Lock Button";
+                       gpios = <&gpio4 17 GPIO_ACTIVE_LOW>; /* 113 */
+                       linux,code = <0x98>; /* KEY_SCREENLOCK */
+                       gpio-key,wakeup;
+               };
+
+               keypad_slide {
+                       label = "Keypad Slide";
+                       gpios = <&gpio3 7 GPIO_ACTIVE_LOW>; /* 71 */
+                       linux,input-type = <5>; /* EV_SW */
+                       linux,code = <0x0a>; /* SW_KEYPAD_SLIDE */
+                       gpio-key,wakeup;
+               };
+
+               proximity_sensor {
+                       label = "Proximity Sensor";
+                       gpios = <&gpio3 25 GPIO_ACTIVE_HIGH>; /* 89 */
+                       linux,input-type = <5>; /* EV_SW */
+                       linux,code = <0x0b>; /* SW_FRONT_PROXIMITY */
+               };
+       };
+
+};
+
+&omap3_pmx_core {
+       pinctrl-names = "default";
+
+       uart2_pins: pinmux_uart2_pins {
+               pinctrl-single,pins = <
+                       0x14a (PIN_INPUT | MUX_MODE0)           /* uart2_rx */
+                       0x148 (PIN_OUTPUT | MUX_MODE0)          /* uart2_tx */
+               >;
+       };
+
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+                       0x16e (PIN_INPUT | MUX_MODE0)           /* uart3_rx */
+                       0x170 (PIN_OUTPUT | MUX_MODE0)          /* uart3_tx */
+               >;
+       };
+
+       i2c1_pins: pinmux_i2c1_pins {
+               pinctrl-single,pins = <
+                       0x18a (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c1_scl */
+                       0x18c (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c1_sda */
+               >;
+       };
+
+       i2c2_pins: pinmux_i2c2_pins {
+               pinctrl-single,pins = <
+                       0x18e (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c2_scl */
+                       0x190 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c2_sda */
+               >;
+       };
+
+       i2c3_pins: pinmux_i2c3_pins {
+               pinctrl-single,pins = <
+                       0x192 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c3_scl */
+                       0x194 (PIN_INPUT_PULLUP | MUX_MODE0)    /* i2c3_sda */
+               >;
+       };
+
+       mmc1_pins: pinmux_mmc1_pins {
+               pinctrl-single,pins = <
+                       0x114 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_clk */
+                       0x116 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_cmd */
+                       0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat0 */
+                       0x11a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat1 */
+                       0x11c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat2 */
+                       0x11e (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat3 */
+               >;
+       };
+
+       display_pins: pinmux_display_pins {
+               pinctrl-single,pins = <
+                       0x0d4 (PIN_OUTPUT | MUX_MODE4)          /* RX51_LCD_RESET_GPIO */
+               >;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins>;
+
+       clock-frequency = <2200000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+               interrupt-parent = <&intc>;
+       };
+};
+
+#include "twl4030.dtsi"
+#include "twl4030_omap3.dtsi"
+
+&vaux1 {
+       regulator-name = "V28";
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <2800000>;
+       regulator-always-on; /* due battery cover sensor */
+};
+
+&vaux2 {
+       regulator-name = "VCSI";
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+};
+
+&vaux3 {
+       regulator-name = "VMMC2_30";
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <3000000>;
+};
+
+&vaux4 {
+       regulator-name = "VCAM_ANA_28";
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <2800000>;
+};
+
+&vmmc1 {
+       regulator-name = "VMMC1";
+       regulator-min-microvolt = <1850000>;
+       regulator-max-microvolt = <3150000>;
+};
+
+&vmmc2 {
+       regulator-name = "V28_A";
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-always-on; /* due VIO leak to AIC34 VDDs */
+};
+
+&vpll1 {
+       regulator-name = "VPLL";
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+       regulator-always-on;
+};
+
+&vpll2 {
+       regulator-name = "VSDI_CSI";
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+       regulator-always-on;
+};
+
+&vsim {
+       regulator-name = "VMMC2_IO_18";
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+};
+
+&vio {
+       regulator-name = "VIO";
+       regulator-min-microvolt = <1800000>;
+       regulator-max-microvolt = <1800000>;
+
+};
+
+&vintana1 {
+       regulator-name = "VINTANA1";
+       /* fixed to 1500000 */
+       regulator-always-on;
+};
+
+&vintana2 {
+       regulator-name = "VINTANA2";
+       regulator-min-microvolt = <2750000>;
+       regulator-max-microvolt = <2750000>;
+       regulator-always-on;
+};
+
+&vintdig {
+       regulator-name = "VINTDIG";
+       /* fixed to 1500000 */
+       regulator-always-on;
+};
+
+&twl {
+       twl_audio: audio {
+               compatible = "ti,twl4030-audio";
+               ti,enable-vibra = <1>;
+       };
+};
+
+&twl_gpio {
+       ti,pullups      = <0x0>;
+       ti,pulldowns    = <0x03ff3f>; /* BIT(0..5) | BIT(8..17) */
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+
+       clock-frequency = <100000>;
+
+       tlv320aic3x: tlv320aic3x@18 {
+               compatible = "ti,tlv320aic3x";
+               reg = <0x18>;
+               gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
+               ai3x-gpio-func = <
+                       0 /* AIC3X_GPIO1_FUNC_DISABLED */
+                       5 /* AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT */
+               >;
+
+               AVDD-supply = <&vmmc2>;
+               DRVDD-supply = <&vmmc2>;
+               IOVDD-supply = <&vio>;
+               DVDD-supply = <&vio>;
+       };
+
+       tlv320aic3x_aux: tlv320aic3x@19 {
+               compatible = "ti,tlv320aic3x";
+               reg = <0x19>;
+               gpio-reset = <&gpio2 28 GPIO_ACTIVE_HIGH>; /* 60 */
+
+               AVDD-supply = <&vmmc2>;
+               DRVDD-supply = <&vmmc2>;
+               IOVDD-supply = <&vio>;
+               DVDD-supply = <&vio>;
+       };
+
+       lp5523: lp5523@32 {
+               compatible = "national,lp5523";
+               reg = <0x32>;
+               clock-mode = /bits/ 8 <0>; /* LP55XX_CLOCK_AUTO */
+               enable-gpio = <&gpio2 9 GPIO_ACTIVE_HIGH>; /* 41 */
+
+               chan0 {
+                       chan-name = "lp5523:kb1";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan1 {
+                       chan-name = "lp5523:kb2";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan2 {
+                       chan-name = "lp5523:kb3";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan3 {
+                       chan-name = "lp5523:kb4";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan4 {
+                       chan-name = "lp5523:b";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan5 {
+                       chan-name = "lp5523:g";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan6 {
+                       chan-name = "lp5523:r";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan7 {
+                       chan-name = "lp5523:kb5";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+
+               chan8 {
+                       chan-name = "lp5523:kb6";
+                       led-cur = /bits/ 8 <50>;
+                       max-cur = /bits/ 8 <100>;
+               };
+       };
+
+       bq27200: bq27200@55 {
+               compatible = "ti,bq27200";
+               reg = <0x55>;
+       };
+};
+
+&i2c3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c3_pins>;
+
+       clock-frequency = <400000>;
+};
+
+&mmc1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+       vmmc-supply = <&vmmc1>;
+       bus-width = <4>;
+       cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */
+};
+
+&mmc2 {
+       status = "disabled";
+};
+
+&mmc3 {
+       status = "disabled";
+};
+
+&gpmc {
+       ranges = <0 0 0x04000000 0x10000000>; /* 256MB */
+
+       /* gpio-irq for dma: 65 */
+
+       onenand@0,0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0 0 0x10000000>;
+
+               gpmc,sync-read;
+               gpmc,sync-write;
+               gpmc,burst-length = <16>;
+               gpmc,burst-read;
+               gpmc,burst-wrap;
+               gpmc,burst-write;
+               gpmc,device-width = <2>; /* GPMC_DEVWIDTH_16BIT */
+               gpmc,mux-add-data = <2>; /* GPMC_MUX_AD */
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <87>;
+               gpmc,cs-wr-off-ns = <87>;
+               gpmc,adv-on-ns = <0>;
+               gpmc,adv-rd-off-ns = <10>;
+               gpmc,adv-wr-off-ns = <10>;
+               gpmc,oe-on-ns = <15>;
+               gpmc,oe-off-ns = <87>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <87>;
+               gpmc,rd-cycle-ns = <112>;
+               gpmc,wr-cycle-ns = <112>;
+               gpmc,access-ns = <81>;
+               gpmc,page-burst-access-ns = <15>;
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <0>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,clk-activation-ns = <5>;
+               gpmc,wr-data-mux-bus-ns = <30>;
+               gpmc,wr-access-ns = <81>;
+               gpmc,sync-clk-ps = <15000>;
+
+               /*
+                * MTD partition table corresponding to Nokia's
+                * Maemo 5 (Fremantle) release.
+                */
+               partition@0 {
+                       label = "bootloader";
+                       reg = <0x00000000 0x00020000>;
+                       read-only;
+               };
+               partition@1 {
+                       label = "config";
+                       reg = <0x00020000 0x00060000>;
+               };
+               partition@2 {
+                       label = "log";
+                       reg = <0x00080000 0x00040000>;
+               };
+               partition@3 {
+                       label = "kernel";
+                       reg = <0x000c0000 0x00200000>;
+               };
+               partition@4 {
+                       label = "initfs";
+                       reg = <0x002c0000 0x00200000>;
+               };
+               partition@5 {
+                       label = "rootfs";
+                       reg = <0x004c0000 0x0fb40000>;
+               };
+       };
+};
+
+&mcspi1 {
+       /*
+        * For some reason, touchscreen is necessary for screen to work at
+        * all on real hw. It works well without it on emulator.
+        *
+        * Also... order in the device tree actually matters here.
+        */
+       tsc2005@0 {
+               compatible = "tsc2005";
+               spi-max-frequency = <6000000>;
+               reg = <0>;
+       };
+       mipid@2 {
+               compatible = "acx565akm";
+               spi-max-frequency = <6000000>;
+               reg = <2>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&display_pins>;
+       };
+};
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       phys = <&usb2_phy>;
+       phy-names = "usb2-phy";
+       mode = <2>;
+       power = <50>;
+};
+
+&uart1 {
+       status = "disabled";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
diff --git a/arch/arm/boot/dts/omap3-n950-n9.dtsi b/arch/arm/boot/dts/omap3-n950-n9.dtsi
new file mode 100644 (file)
index 0000000..94eb77d
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * omap3-n950-n9.dtsi - Device Tree file for Nokia N950 & N9 (common stuff)
+ *
+ * Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "omap36xx.dtsi"
+
+/ {
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vcc>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x40000000>; /* 1 GB */
+       };
+
+       vemmc: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "VEMMC";
+               regulator-min-microvolt = <2900000>;
+               regulator-max-microvolt = <2900000>;
+               gpio = <&gpio5 29 0>; /* gpio line 157 */
+               startup-delay-us = <150>;
+               enable-active-high;
+       };
+};
+
+&omap3_pmx_core {
+       mmc2_pins: pinmux_mmc2_pins {
+               pinctrl-single,pins = <
+                       0x128 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_clk */
+                       0x12a (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_cmd */
+                       0x12c (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat0 */
+                       0x12e (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1 */
+                       0x130 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2 */
+                       0x132 (PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3 */
+               >;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <2900000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+               interrupt-parent = <&intc>;
+       };
+};
+
+/include/ "twl4030.dtsi"
+
+&twl {
+       compatible = "ti,twl5031";
+};
+
+&twl_gpio {
+       ti,pullups      = <0x000001>; /* BIT(0) */
+       ti,pulldowns    = <0x008106>; /* BIT(1) | BIT(2) | BIT(8) | BIT(15) */
+};
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+};
+
+&mmc1 {
+       status = "disabled";
+};
+
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_pins>;
+       vmmc-supply = <&vemmc>;
+       bus-width = <4>;
+       ti,non-removable;
+};
+
+&mmc3 {
+       status = "disabled";
+};
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       phys = <&usb2_phy>;
+       phy-names = "usb2-phy";
+       mode = <3>;
+       power = <50>;
+};
+
+&gpmc {
+       ranges = <0 0 0x04000000 0x20000000>;
+
+       onenand@0,0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0 0 0x20000000>;
+
+               gpmc,sync-read;
+               gpmc,sync-write;
+               gpmc,burst-length = <16>;
+               gpmc,burst-read;
+               gpmc,burst-wrap;
+               gpmc,burst-write;
+               gpmc,device-width = <2>;
+               gpmc,mux-add-data = <2>;
+               gpmc,cs-on-ns = <0>;
+               gpmc,cs-rd-off-ns = <87>;
+               gpmc,cs-wr-off-ns = <87>;
+               gpmc,adv-on-ns = <0>;
+               gpmc,adv-rd-off-ns = <10>;
+               gpmc,adv-wr-off-ns = <10>;
+               gpmc,oe-on-ns = <15>;
+               gpmc,oe-off-ns = <87>;
+               gpmc,we-on-ns = <0>;
+               gpmc,we-off-ns = <87>;
+               gpmc,rd-cycle-ns = <112>;
+               gpmc,wr-cycle-ns = <112>;
+               gpmc,access-ns = <81>;
+               gpmc,page-burst-access-ns = <15>;
+               gpmc,bus-turnaround-ns = <0>;
+               gpmc,cycle2cycle-delay-ns = <0>;
+               gpmc,wait-monitoring-ns = <0>;
+               gpmc,clk-activation-ns = <5>;
+               gpmc,wr-data-mux-bus-ns = <30>;
+               gpmc,wr-access-ns = <81>;
+               gpmc,sync-clk-ps = <15000>;
+
+               /*
+                * MTD partition table corresponding to Nokia's MeeGo 1.2
+                * Harmattan release.
+                */
+               partition@0 {
+                       label = "bootloader";
+                       reg = <0x00000000 0x00100000>;
+               };
+               partition@1 {
+                       label = "config";
+                       reg = <0x00100000 0x002c0000>;
+               };
+               partition@2 {
+                       label = "kernel";
+                       reg = <0x003c0000 0x01000000>;
+               };
+               partition@3 {
+                       label = "log";
+                       reg = <0x013c0000 0x00200000>;
+               };
+               partition@4 {
+                       label = "var";
+                       reg = <0x015c0000 0x1ca40000>;
+               };
+               partition@5 {
+                       label = "moslo";
+                       reg = <0x1e000000 0x02000000>;
+               };
+               partition@6 {
+                       label = "omap2-onenand";
+                       reg = <0x00000000 0x20000000>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/omap3-n950.dts b/arch/arm/boot/dts/omap3-n950.dts
new file mode 100644 (file)
index 0000000..b076a52
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * omap3-n950.dts - Device Tree file for Nokia N950
+ *
+ * Written by: Aaro Koskinen <aaro.koskinen@iki.fi>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+/dts-v1/;
+
+#include "omap3-n950-n9.dtsi"
+
+/ {
+       model = "Nokia N950";
+       compatible = "nokia,omap3-n950", "ti,omap3";
+};
diff --git a/arch/arm/boot/dts/omap3-zoom3.dts b/arch/arm/boot/dts/omap3-zoom3.dts
new file mode 100644 (file)
index 0000000..15eb9fe
--- /dev/null
@@ -0,0 +1,217 @@
+/*
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "omap36xx.dtsi"
+#include "omap-zoom-common.dtsi"
+
+/ {
+       model = "TI Zoom3";
+       compatible = "ti,omap3-zoom3", "ti,omap36xx", "ti,omap3";
+
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&vcc>;
+               };
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>; /* 512 MB */
+       };
+
+       vddvario: regulator-vddvario {
+                 compatible = "regulator-fixed";
+                 regulator-name = "vddvario";
+                 regulator-always-on;
+       };
+
+       vdd33a: regulator-vdd33a {
+               compatible = "regulator-fixed";
+               regulator-name = "vdd33a";
+               regulator-always-on;
+       };
+
+       wl12xx_vmmc: wl12xx_vmmc {
+               pinctrl-names = "default";
+               pinctrl-0 = <&wl12xx_gpio>;
+               compatible = "regulator-fixed";
+               regulator-name = "vwl1271";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               gpio = <&gpio4 5 0>;    /* gpio101 */
+               startup-delay-us = <70000>;
+               enable-active-high;
+       };
+};
+
+&omap3_pmx_core {
+       /* REVISIT: twl gpio0 is mmc0_cd */
+       mmc1_pins: pinmux_mmc1_pins {
+               pinctrl-single,pins = <
+                       0x114 (PIN_OUTPUT_PULLUP | MUX_MODE0)   /* sdmmc1_clk.sdmmc1_clk */
+                       0x116 (PIN_OUTPUT_PULLUP | MUX_MODE0)   /* sdmmc1_cmd.sdmmc1_cmd */
+                       0x118 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat0.sdmmc1_dat0 */
+                       0x11a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat1.sdmmc1_dat1 */
+                       0x11c (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat2.sdmmc1_dat2 */
+                       0x11e (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc1_dat3.sdmmc1_dat3 */
+               >;
+       };
+
+       mmc2_pins: pinmux_mmc2_pins {
+               pinctrl-single,pins = <
+                       0x128 (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_clk.sdmmc2_clk */
+                       0x12a (PIN_INPUT_PULLUP | MUX_MODE0)    /* sdmmc2_cmd.sdmmc2_cmd */
+                       0x12c (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat0.sdmmc2_dat0 */
+                       0x12e (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat1.sdmmc2_dat1 */
+                       0x130 (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat2.sdmmc2_dat2 */
+                       0x132 (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat3.sdmmc2_dat3 */
+                       0x134 (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat4.sdmmc2_dat4 */
+                       0x136 (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat5.sdmmc2_dat5 */
+                       0x138 (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat6.sdmmc2_dat6 */
+                       0x13a (PIN_INPUT | MUX_MODE0)           /* sdmmc2_dat7.sdmmc2_dat7 */
+               >;
+       };
+
+       mmc3_pins: pinmux_mmc3_pins {
+               pinctrl-single,pins = <
+                       0x168 (PIN_INPUT | MUX_MODE4)   /* mcbsp1_clkx.gpio_162 WLAN IRQ */
+                       0x1a0 (PIN_INPUT_PULLUP | MUX_MODE3)    /* mcspi1_cs1.sdmmc3_cmd */
+                       0x5a8 (PIN_INPUT_PULLUP | MUX_MODE2)    /* etk_clk.sdmmc3_clk */
+                       0x5b4 (PIN_INPUT_PULLUP | MUX_MODE2)    /* etk_d4.sdmmc3_dat0 */
+                       0x5b6 (WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE2) /* etk_d5.sdmmc3_dat1 */
+                       0x5b8 (PIN_INPUT_PULLUP | MUX_MODE2)    /* etk_d6.sdmmc3_dat2 */
+                       0x5b2 (PIN_INPUT_PULLUP | MUX_MODE2)    /* etk_d3.sdmmc3_dat3 */
+               >;
+       };
+
+       uart1_pins: pinmux_uart1_pins {
+               pinctrl-single,pins = <
+                        0x150 (PIN_INPUT | MUX_MODE0)          /* uart1_cts.uart1_cts */
+                        0x14e (PIN_OUTPUT | MUX_MODE0)         /* uart1_rts.uart1_rts */
+                        0x152 (WAKEUP_EN | PIN_INPUT | MUX_MODE0) /* uart1_rx.uart1_rx */
+                        0x14c (PIN_OUTPUT | MUX_MODE0)         /* uart1_tx.uart1_tx */
+               >;
+       };
+
+       uart2_pins: pinmux_uart2_pins {
+               pinctrl-single,pins = <
+                        0x144 (PIN_INPUT_PULLUP | MUX_MODE0)   /* uart2_cts.uart2_cts */
+                        0x146 (PIN_OUTPUT | MUX_MODE0)         /* uart2_rts.uart2_rts */
+                        0x14a (WAKEUP_EN | PIN_INPUT | MUX_MODE0) /* uart2_rx.uart2_rx */
+                        0x148 (PIN_OUTPUT | MUX_MODE0)         /* uart2_tx.uart2_tx */
+               >;
+       };
+
+       uart3_pins: pinmux_uart3_pins {
+               pinctrl-single,pins = <
+                        0x16a (PIN_INPUT_PULLDOWN | MUX_MODE0) /* uart3_cts_rctx.uart3_cts_rctx */
+                        0x16c (PIN_OUTPUT | MUX_MODE0)         /* uart3_rts_sd.uart3_rts_sd */
+                        0x16e (WAKEUP_EN | PIN_INPUT | MUX_MODE0) /* uart3_rx_irrx.uart3_rx_irrx */
+                        0x170 (PIN_OUTPUT | MUX_MODE0)         /* uart3_tx_irtx.uart3_tx_irtx */
+               >;
+       };
+
+       /* wl12xx GPIO output for WLAN_EN */
+       wl12xx_gpio: pinmux_wl12xx_gpio {
+               pinctrl-single,pins = <
+                       0xea (PIN_OUTPUT| MUX_MODE4)            /* cam_d2.gpio_101 */
+               >;
+       };
+};
+
+&omap3_pmx_wkup {
+       wlan_host_wkup: pinmux_wlan_host_wkup_pins {
+               pinctrl-single,pins = <
+                       0x1a (PIN_INPUT_PULLUP | MUX_MODE4)     /* sys_clkout1.gpio_10 WLAN_HOST_WKUP */
+               >;
+       };
+};
+
+&i2c1 {
+       clock-frequency = <2600000>;
+
+       twl: twl@48 {
+               reg = <0x48>;
+               interrupts = <7>; /* SYS_NIRQ cascaded to intc */
+               interrupt-parent = <&intc>;
+       };
+};
+
+#include "twl4030.dtsi"
+
+&i2c2 {
+       clock-frequency = <400000>;
+};
+
+&i2c3 {
+       clock-frequency = <400000>;
+
+       /*
+        * TVP5146 Video decoder-in for analog input support.
+        */
+       tvp5146@5c {
+               compatible = "ti,tvp5146m2";
+               reg = <0x5c>;
+       };
+};
+
+&twl_gpio {
+       ti,use-leds;
+};
+
+&mmc1 {
+       vmmc-supply = <&vmmc1>;
+       vmmc_aux-supply = <&vsim>;
+       bus-width = <4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc1_pins>;
+};
+/*
+&mmc2 {
+       vmmc-supply = <&vmmc2>;
+       ti,non-removable;
+       bus-width = <8>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_pins>;
+};
+*/
+&mmc3 {
+       vmmc-supply = <&wl12xx_vmmc>;
+       non-removable;
+       bus-width = <4>;
+       cap-power-off-card;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc3_pins>;
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_pins>;
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_pins>;
+};
+
+&uart4 {
+       status = "disabled";
+};
+
+&usb_otg_hs {
+       interface-type = <0>;
+       usb-phy = <&usb2_phy>;
+       mode = <3>;
+       power = <50>;
+};
index 7d95cda1fae4f0349bdfb582de99be2baf36dbf6..f3a0c26ed0c2bcd6d6df65dcecc3f18329abec18 100644 (file)
@@ -19,6 +19,9 @@
        interrupt-parent = <&intc>;
 
        aliases {
+               i2c0 = &i2c1;
+               i2c1 = &i2c2;
+               i2c2 = &i2c3;
                serial0 = &uart1;
                serial1 = &uart2;
                serial2 = &uart3;
@@ -37,6 +40,7 @@
 
        pmu {
                compatible = "arm,cortex-a8-pmu";
+               reg = <0x54000000 0x800000>;
                interrupts = <3>;
                ti,hwmods = "debugss";
        };
@@ -71,6 +75,8 @@
         */
        ocp {
                compatible = "simple-bus";
+               reg = <0x68000000 0x10000>;
+               interrupts = <9 10>;
                #address-cells = <1>;
                #size-cells = <1>;
                ranges;
                        reg = <0x48002030 0x05cc>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #interrupt-cells = <1>;
+                       interrupt-controller;
                        pinctrl-single,register-width = <16>;
-                       pinctrl-single,function-mask = <0x7f1f>;
+                       pinctrl-single,function-mask = <0xff1f>;
                };
 
-               omap3_pmx_wkup: pinmux@0x48002a00 {
+               omap3_pmx_wkup: pinmux@48002a00 {
                        compatible = "ti,omap3-padconf", "pinctrl-single";
                        reg = <0x48002a00 0x5c>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #interrupt-cells = <1>;
+                       interrupt-controller;
                        pinctrl-single,register-width = <16>;
-                       pinctrl-single,function-mask = <0x7f1f>;
+                       pinctrl-single,function-mask = <0xff1f>;
                };
 
                gpio1: gpio@48310000 {
 
                uart1: serial@4806a000 {
                        compatible = "ti,omap3-uart";
+                       reg = <0x4806a000 0x2000>;
+                       interrupts = <72>;
+                       dmas = <&sdma 49 &sdma 50>;
+                       dma-names = "tx", "rx";
                        ti,hwmods = "uart1";
                        clock-frequency = <48000000>;
                };
 
                uart2: serial@4806c000 {
                        compatible = "ti,omap3-uart";
+                       reg = <0x4806c000 0x400>;
+                       interrupts = <73>;
+                       dmas = <&sdma 51 &sdma 52>;
+                       dma-names = "tx", "rx";
                        ti,hwmods = "uart2";
                        clock-frequency = <48000000>;
                };
 
                uart3: serial@49020000 {
                        compatible = "ti,omap3-uart";
+                       reg = <0x49020000 0x400>;
+                       interrupts = <74>;
+                       dmas = <&sdma 53 &sdma 54>;
+                       dma-names = "tx", "rx";
                        ti,hwmods = "uart3";
                        clock-frequency = <48000000>;
                };
 
                i2c1: i2c@48070000 {
                        compatible = "ti,omap3-i2c";
+                       reg = <0x48070000 0x80>;
+                       interrupts = <56>;
+                       dmas = <&sdma 27 &sdma 28>;
+                       dma-names = "tx", "rx";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "i2c1";
 
                i2c2: i2c@48072000 {
                        compatible = "ti,omap3-i2c";
+                       reg = <0x48072000 0x80>;
+                       interrupts = <57>;
+                       dmas = <&sdma 29 &sdma 30>;
+                       dma-names = "tx", "rx";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "i2c2";
 
                i2c3: i2c@48060000 {
                        compatible = "ti,omap3-i2c";
+                       reg = <0x48060000 0x80>;
+                       interrupts = <61>;
+                       dmas = <&sdma 25 &sdma 26>;
+                       dma-names = "tx", "rx";
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "i2c3";
 
                mcspi1: spi@48098000 {
                        compatible = "ti,omap2-mcspi";
+                       reg = <0x48098000 0x100>;
+                       interrupts = <65>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "mcspi1";
 
                mcspi2: spi@4809a000 {
                        compatible = "ti,omap2-mcspi";
+                       reg = <0x4809a000 0x100>;
+                       interrupts = <66>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "mcspi2";
 
                mcspi3: spi@480b8000 {
                        compatible = "ti,omap2-mcspi";
+                       reg = <0x480b8000 0x100>;
+                       interrupts = <91>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "mcspi3";
 
                mcspi4: spi@480ba000 {
                        compatible = "ti,omap2-mcspi";
+                       reg = <0x480ba000 0x100>;
+                       interrupts = <48>;
                        #address-cells = <1>;
                        #size-cells = <0>;
                        ti,hwmods = "mcspi4";
                        dma-names = "tx0", "rx0";
                };
 
+               hdqw1w: 1w@480b2000 {
+                       compatible = "ti,omap3-1w";
+                       reg = <0x480b2000 0x1000>;
+                       interrupts = <58>;
+                       ti,hwmods = "hdq1w";
+               };
+
                mmc1: mmc@4809c000 {
                        compatible = "ti,omap3-hsmmc";
+                       reg = <0x4809c000 0x200>;
+                       interrupts = <83>;
                        ti,hwmods = "mmc1";
                        ti,dual-volt;
                        dmas = <&sdma 61>, <&sdma 62>;
 
                mmc2: mmc@480b4000 {
                        compatible = "ti,omap3-hsmmc";
+                       reg = <0x480b4000 0x200>;
+                       interrupts = <86>;
                        ti,hwmods = "mmc2";
                        dmas = <&sdma 47>, <&sdma 48>;
                        dma-names = "tx", "rx";
 
                mmc3: mmc@480ad000 {
                        compatible = "ti,omap3-hsmmc";
+                       reg = <0x480ad000 0x200>;
+                       interrupts = <94>;
                        ti,hwmods = "mmc3";
                        dmas = <&sdma 77>, <&sdma 78>;
                        dma-names = "tx", "rx";
 
                wdt2: wdt@48314000 {
                        compatible = "ti,omap3-wdt";
+                       reg = <0x48314000 0x80>;
                        ti,hwmods = "wd_timer2";
                };
 
index e2249bcc3e63fa5a6404d2a2d761a011f15261bf..281914ed015136c57cb65d1039136899726bfd12 100644 (file)
                        label = "bootloader-nor";
                        reg = <0 0x40000>;
                };
-               partition@0x40000 {
+               partition@40000 {
                        label = "params-nor";
                        reg = <0x40000 0x40000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "kernel-nor";
                        reg = <0x80000 0x200000>;
                };
-               partition@0x280000 {
+               partition@280000 {
                        label = "filesystem-nor";
                        reg = <0x240000 0x7d80000>;
                };
                        label = "xloader-nand";
                        reg = <0 0x80000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "bootloader-nand";
                        reg = <0x80000 0x140000>;
                };
-               partition@0x1c0000 {
+               partition@1c0000 {
                        label = "params-nand";
                        reg = <0x1c0000 0xc0000>;
                };
-               partition@0x280000 {
+               partition@280000 {
                        label = "kernel-nand";
                        reg = <0x280000 0x500000>;
                };
-               partition@0x780000 {
+               partition@780000 {
                        label = "filesystem-nand";
                        reg = <0x780000 0x7880000>;
                };
                        label = "xloader-onenand";
                        reg = <0 0x80000>;
                };
-               partition@0x80000 {
+               partition@80000 {
                        label = "bootloader-onenand";
                        reg = <0x80000 0x40000>;
                };
-               partition@0xc0000 {
+               partition@c0000 {
                        label = "params-onenand";
                        reg = <0xc0000 0x20000>;
                };
-               partition@0xe0000 {
+               partition@e0000 {
                        label = "kernel-onenand";
                        reg = <0xe0000 0x200000>;
                };
-               partition@0x2e0000 {
+               partition@2e0000 {
                        label = "filesystem-onenand";
                        reg = <0x2e0000 0xfd20000>;
                };
index f8b3765eb9becea27e0f6028b15bf9d56ab8b484..380c22eb468ef705186e9f3f55137e19809ac8d4 100644 (file)
        ocp {
                uart4: serial@49042000 {
                        compatible = "ti,omap3-uart";
+                       reg = <0x49042000 0x400>;
+                       interrupts = <80>;
+                       dmas = <&sdma 81 &sdma 82>;
+                       dma-names = "tx", "rx";
                        ti,hwmods = "uart4";
                        clock-frequency = <48000000>;
                };
index 814ab67c8c299b0b818f669c917d51ebcb8a94c0..3e6801cecd04378616018927275532b297500818 100644 (file)
                        "AFMR", "Line In";
        };
 
-       /*
-        * Temp hack: Need to be replaced with the proper gpio-controlled
-        * reset driver as soon it will be merged.
-        * http://thread.gmane.org/gmane.linux.drivers.devicetree/36830
-        */
-       /* HS USB Port 1 RESET */
-       hsusb1_reset: hsusb1_reset_reg {
-               compatible = "regulator-fixed";
-               regulator-name = "hsusb1_reset";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&gpio2 30 0>;   /* gpio_62 */
-               startup-delay-us = <70000>;
-               enable-active-high;
-       };
-
        /* HS USB Port 1 Power */
        hsusb1_power: hsusb1_power_reg {
                compatible = "regulator-fixed";
@@ -97,7 +81,7 @@
        /* HS USB Host PHY on PORT 1 */
        hsusb1_phy: hsusb1_phy {
                compatible = "usb-nop-xceiv";
-               reset-supply = <&hsusb1_reset>;
+               reset-gpios = <&gpio2 30 GPIO_ACTIVE_LOW>;   /* gpio_62 */
                vcc-supply = <&hsusb1_power>;
        /**
         * FIXME:
        };
 };
 
-&omap4_pmx_wkup {
-       pinctrl-names = "default";
-       pinctrl-0 = <
-                       &twl6030_wkup_pins
-       >;
-
-       twl6030_wkup_pins: pinmux_twl6030_wkup_pins {
-               pinctrl-single,pins = <
-                       0x14 (PIN_OUTPUT | MUX_MODE2)           /* fref_clk0_out.sys_drm_msecure */
-               >;
-       };
-};
-
 &omap4_pmx_core {
        pinctrl-names = "default";
        pinctrl-0 = <
-                       &twl6030_pins
                        &twl6040_pins
                        &mcpdm_pins
                        &mcbsp1_pins
                        &hsusbb1_pins
        >;
 
-       twl6030_pins: pinmux_twl6030_pins {
-               pinctrl-single,pins = <
-                       0x15e (WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE0)        /* sys_nirq1.sys_nirq1 */
-               >;
-       };
-
        twl6040_pins: pinmux_twl6040_pins {
                pinctrl-single,pins = <
                        0xe0 (PIN_OUTPUT | MUX_MODE3)   /* hdq_sio.gpio_127 */
 };
 
 #include "twl6030.dtsi"
+#include "twl6030_omap4.dtsi"
 
 &i2c2 {
        pinctrl-names = "default";
index 56c435468e94a8399f21236b7b553eea15bcc697..816d1c95b592965304fb2aa502da664c9f07ffe4 100644 (file)
@@ -62,3 +62,7 @@
                gpios = <&gpio1 8 GPIO_ACTIVE_HIGH>;
        };
 };
+
+&gpio1 {
+        ti,no-reset-on-init;
+};
index 4f78380ecdb890c5b72cae0ac8937365540d80bd..5fc3f43c5a81d4c9256b063f31bb32fc544dde38 100644 (file)
        };
 };
 
-&omap4_pmx_wkup {
-       pinctrl-names = "default";
-       pinctrl-0 = <
-                       &twl6030_wkup_pins
-       >;
-
-       twl6030_wkup_pins: pinmux_twl6030_wkup_pins {
-               pinctrl-single,pins = <
-                       0x14 (PIN_OUTPUT | MUX_MODE2)           /* fref_clk0_out.sys_drm_msecure */
-               >;
-       };
-};
-
 &omap4_pmx_core {
        pinctrl-names = "default";
        pinctrl-0 = <
-                       &twl6030_pins
                        &twl6040_pins
                        &mcpdm_pins
                        &dmic_pins
                >;
        };
 
-       twl6030_pins: pinmux_twl6030_pins {
-               pinctrl-single,pins = <
-                       0x15e (WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE0)        /* sys_nirq1.sys_nirq1 */
-               >;
-       };
-
        twl6040_pins: pinmux_twl6040_pins {
                pinctrl-single,pins = <
                        0xe0 (PIN_OUTPUT | MUX_MODE3)           /* hdq_sio.gpio_127 */
 };
 
 #include "twl6030.dtsi"
+#include "twl6030_omap4.dtsi"
 
 &i2c2 {
        pinctrl-names = "default";
index 22d9f2b593d461eb5bde36a35f24e2eaea40e298..e8d97b46690c24ed499e9c43dc44b50fefd318a2 100644 (file)
        interrupt-parent = <&gic>;
 
        aliases {
+               i2c0 = &i2c1;
+               i2c1 = &i2c2;
+               i2c2 = &i2c3;
+               i2c3 = &i2c4;
                serial0 = &uart1;
                serial1 = &uart2;
                serial2 = &uart3;
@@ -56,7 +60,7 @@
                cache-level = <2>;
        };
 
-       local-timer@0x48240600 {
+       local-timer@48240600 {
                compatible = "arm,cortex-a9-twd-timer";
                reg = <0x48240600 0x20>;
                interrupts = <GIC_PPI 13 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_HIGH)>;
                        reg = <0x4a100040 0x0196>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #interrupt-cells = <1>;
+                       interrupt-controller;
                        pinctrl-single,register-width = <16>;
                        pinctrl-single,function-mask = <0x7fff>;
                };
                        reg = <0x4a31e040 0x0038>;
                        #address-cells = <1>;
                        #size-cells = <0>;
+                       #interrupt-cells = <1>;
+                       interrupt-controller;
                        pinctrl-single,register-width = <16>;
                        pinctrl-single,function-mask = <0x7fff>;
                };
                        gpmc,num-cs = <8>;
                        gpmc,num-waitpins = <4>;
                        ti,hwmods = "gpmc";
+                       ti,no-idle-on-init;
                };
 
                uart1: serial@4806a000 {
                        reg = <0x4c000000 0x100>;
                        interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
                        ti,hwmods = "emif1";
+                       ti,no-idle-on-init;
                        phy-type = <1>;
                        hw-caps-read-idle-ctrl;
                        hw-caps-ll-interface;
                        reg = <0x4d000000 0x100>;
                        interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
                        ti,hwmods = "emif2";
+                       ti,no-idle-on-init;
                        phy-type = <1>;
                        hw-caps-read-idle-ctrl;
                        hw-caps-ll-interface;
                        ram-bits = <12>;
                        ti,has-mailbox;
                };
+
+               aes: aes@4b501000 {
+                       compatible = "ti,omap4-aes";
+                       ti,hwmods = "aes";
+                       reg = <0x4b501000 0xa0>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&sdma 111>, <&sdma 110>;
+                       dma-names = "tx", "rx";
+               };
+
+               des: des@480a5000 {
+                       compatible = "ti,omap4-des";
+                       ti,hwmods = "des";
+                       reg = <0x480a5000 0xa0>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                       dmas = <&sdma 117>, <&sdma 116>;
+                       dma-names = "tx", "rx";
+               };
        };
 };
index 65d7b601651c390f78272602c79d6fb3b172ce4f..002fa70180a5bf38eaa66564cedd21f16897d626 100644 (file)
                regulator-max-microvolt = <3000000>;
        };
 
-       /* HS USB Port 2 RESET */
-       hsusb2_reset: hsusb2_reset_reg {
-               compatible = "regulator-fixed";
-               regulator-name = "hsusb2_reset";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&gpio3 16 GPIO_ACTIVE_HIGH>; /* gpio3_80 HUB_NRESET */
-               startup-delay-us = <70000>;
-               enable-active-high;
-       };
-
        /* HS USB Host PHY on PORT 2 */
        hsusb2_phy: hsusb2_phy {
                compatible = "usb-nop-xceiv";
-               reset-supply = <&hsusb2_reset>;
+               reset-gpios = <&gpio3 16 GPIO_ACTIVE_LOW>; /* gpio3_80 HUB_NRESET */
        /**
          * FIXME
          * Put the right clock phandle here when available
                clock-frequency = <19200000>;
        };
 
-       /* HS USB Port 3 RESET */
-       hsusb3_reset: hsusb3_reset_reg {
-               compatible = "regulator-fixed";
-               regulator-name = "hsusb3_reset";
-               regulator-min-microvolt = <3300000>;
-               regulator-max-microvolt = <3300000>;
-               gpio = <&gpio3 15 GPIO_ACTIVE_HIGH>; /* gpio3_79 ETH_NRESET */
-               startup-delay-us = <70000>;
-               enable-active-high;
-       };
-
        /* HS USB Host PHY on PORT 3 */
        hsusb3_phy: hsusb3_phy {
                compatible = "usb-nop-xceiv";
-               reset-supply = <&hsusb3_reset>;
+               reset-gpios = <&gpio3 15 GPIO_ACTIVE_LOW>; /* gpio3_79 ETH_NRESET */
        };
 
        leds {
@@ -84,7 +62,6 @@
        pinctrl-0 = <
                        &twl6040_pins
                        &mcpdm_pins
-                       &dmic_pins
                        &mcbsp1_pins
                        &mcbsp2_pins
                        &usbhost_pins
@@ -93,7 +70,7 @@
 
        twl6040_pins: pinmux_twl6040_pins {
                pinctrl-single,pins = <
-                       0x18a (PIN_OUTPUT | MUX_MODE6)  /* perslimbus2_clock.gpio5_145 */
+                       0x17e (PIN_OUTPUT | MUX_MODE6)  /* mcspi1_somi.gpio5_141 */
                >;
        };
 
                >;
        };
 
-       dmic_pins: pinmux_dmic_pins {
-               pinctrl-single,pins = <
-                       0x144 (PIN_INPUT | MUX_MODE0)           /* abedmic_din1.abedmic_din1 */
-                       0x146 (PIN_INPUT | MUX_MODE0)           /* abedmic_din2.abedmic_din2 */
-                       0x148 (PIN_INPUT | MUX_MODE0)           /* abedmic_din3.abedmic_din3 */
-                       0x14a (PIN_OUTPUT | MUX_MODE0)          /* abedmic_clk1.abedmic_clk1 */
-               >;
-       };
-
        mcbsp1_pins: pinmux_mcbsp1_pins {
                pinctrl-single,pins = <
                        0x14c (PIN_INPUT | MUX_MODE1)           /* abedmic_clk2.abemcbsp1_fsx */
                        0xbc (PIN_INPUT | MUX_MODE0)            /*  mcspi2_clk */
                        0xbe (PIN_INPUT | MUX_MODE0)            /*  mcspi2_simo */
                        0xc0 (PIN_INPUT_PULLUP | MUX_MODE0)     /*  mcspi2_somi */
-                       0xc2 (PIN_OUTPUT | MUX_MODE0)           /*  mcspi2_cs */
+                       0xc2 (PIN_OUTPUT | MUX_MODE0)           /*  mcspi2_cs0 */
                >;
        };
 
        mcspi3_pins: pinmux_mcspi3_pins {
                pinctrl-single,pins = <
-                       0x78 (PIN_INPUT | MUX_MODE1)            /*  mcspi2_somi */
-                       0x7a (PIN_INPUT | MUX_MODE1)            /*  mcspi2_cs */
-                       0x7c (PIN_INPUT | MUX_MODE1)            /*  mcspi2_simo */
-                       0x7e (PIN_INPUT | MUX_MODE1)            /*  mcspi2_clk */
+                       0x78 (PIN_INPUT | MUX_MODE1)            /*  mcspi3_somi */
+                       0x7a (PIN_INPUT | MUX_MODE1)            /*  mcspi3_cs0 */
+                       0x7c (PIN_INPUT | MUX_MODE1)            /*  mcspi3_simo */
+                       0x7e (PIN_INPUT | MUX_MODE1)            /*  mcspi3_clk */
                >;
        };
 
        mcspi4_pins: pinmux_mcspi4_pins {
                pinctrl-single,pins = <
-                       0x164 (PIN_INPUT | MUX_MODE1)           /*  mcspi2_clk */
-                       0x168 (PIN_INPUT | MUX_MODE1)           /*  mcspi2_simo */
-                       0x16a (PIN_INPUT | MUX_MODE1)           /*  mcspi2_somi */
-                       0x16c (PIN_INPUT | MUX_MODE1)           /*  mcspi2_cs */
+                       0x164 (PIN_INPUT | MUX_MODE1)           /*  mcspi4_clk */
+                       0x168 (PIN_INPUT | MUX_MODE1)           /*  mcspi4_simo */
+                       0x16a (PIN_INPUT | MUX_MODE1)           /*  mcspi4_somi */
+                       0x16c (PIN_INPUT | MUX_MODE1)           /*  mcspi4_cs0 */
                >;
        };
 
                reg = <0x48>;
                interrupt-controller;
                #interrupt-cells = <2>;
+               ti,system-power-controller;
+
+               extcon_usb3: palmas_usb {
+                       compatible = "ti,palmas-usb-vid";
+                       ti,enable-vbus-detection;
+                       ti,enable-id-detection;
+                       ti,wakeup;
+               };
 
                palmas_pmic {
                        compatible = "ti,palmas-pmic";
                                        ti,smps-range = <0x80>;
                                };
 
-                               smps10_reg: smps10 {
+                               smps10_out2_reg: smps10_out2 {
                                        /* VBUS_5V_OTG */
-                                       regulator-name = "smps10";
+                                       regulator-name = "smps10_out2";
                                        regulator-min-microvolt = <5000000>;
                                        regulator-max-microvolt = <5000000>;
                                        regulator-always-on;
                                        regulator-boot-on;
                                };
 
+                               smps10_out1_reg: smps10_out1 {
+                                       /* VBUS_5V_OTG */
+                                       regulator-name = "smps10_out1";
+                                       regulator-min-microvolt = <5000000>;
+                                       regulator-max-microvolt = <5000000>;
+                               };
+
                                ldo1_reg: ldo1 {
                                        /* VDDAPHY_CAM: vdda_csiport */
                                        regulator-name = "ldo1";
        phys = <0 &hsusb2_phy &hsusb3_phy>;
 };
 
+&usb3 {
+       extcon = <&extcon_usb3>;
+       vbus-supply = <&smps10_out1_reg>;
+};
+
 &mcspi1 {
 
 };
         pinctrl-names = "default";
         pinctrl-0 = <&uart5_pins>;
 };
+
+&cpu0 {
+       cpu0-supply = <&smps123_reg>;
+};
index 7cdea1bfea091917455e46cc18af7d6d80a2c0f0..154d92fae1d52109ff2fea6a117df410d68d4feb 100644 (file)
        interrupt-parent = <&gic>;
 
        aliases {
+               i2c0 = &i2c1;
+               i2c1 = &i2c2;
+               i2c2 = &i2c3;
+               i2c3 = &i2c4;
+               i2c4 = &i2c5;
                serial0 = &uart1;
                serial1 = &uart2;
                serial2 = &uart3;
                #address-cells = <1>;
                #size-cells = <0>;
 
-               cpu@0 {
+               cpu0: cpu@0 {
                        device_type = "cpu";
                        compatible = "arm,cortex-a15";
                        reg = <0x0>;
+
+                       operating-points = <
+                               /* kHz    uV */
+                               500000  880000
+                               1000000 1060000
+                               1500000 1250000
+                       >;
                };
                cpu@1 {
                        device_type = "cpu";
@@ -52,7 +64,6 @@
                             <GIC_PPI 14 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_LOW)>,
                             <GIC_PPI 11 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_LOW)>,
                             <GIC_PPI 10 (GIC_CPU_MASK_RAW(3) | IRQ_TYPE_LEVEL_LOW)>;
-               clock-frequency = <6144000>;
        };
 
        gic: interrupt-controller@48211000 {
                        ti,hwmods = "wd_timer2";
                };
 
-               emif1: emif@0x4c000000 {
+               emif1: emif@4c000000 {
                        compatible      = "ti,emif-4d5";
                        ti,hwmods       = "emif1";
+                       ti,no-idle-on-init;
                        phy-type        = <2>; /* DDR PHY type: Intelli PHY */
                        reg = <0x4c000000 0x400>;
                        interrupts = <GIC_SPI 110 IRQ_TYPE_LEVEL_HIGH>;
                        hw-caps-temp-alert;
                };
 
-               emif2: emif@0x4d000000 {
+               emif2: emif@4d000000 {
                        compatible      = "ti,emif-4d5";
                        ti,hwmods       = "emif2";
+                       ti,no-idle-on-init;
                        phy-type        = <2>; /* DDR PHY type: Intelli PHY */
                        reg = <0x4d000000 0x400>;
                        interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
                        ti,type = <2>;
                };
 
-               omap_dwc3@4a020000 {
+               usb3: omap_dwc3@4a020000 {
                        compatible = "ti,dwc3";
                        ti,hwmods = "usb_otg_ss";
                        reg = <0x4a020000 0x10000>;
                                reg = <0x4a030000 0x10000>;
                                interrupts = <GIC_SPI 92 IRQ_TYPE_LEVEL_HIGH>;
                                usb-phy = <&usb2_phy>, <&usb3_phy>;
+                               dr_mode = "peripheral";
                                tx-fifo-resize;
                        };
                };
index f444624eb0974c881e5bac7de144183d366f42b6..9443e93d3cac7f07cfdca4fa24b825424ab310a2 100644 (file)
@@ -10,6 +10,7 @@
 
 /dts-v1/;
 /include/ "r8a73a4.dtsi"
+#include <dt-bindings/gpio/gpio.h>
 
 / {
        model = "APE6EVM";
                reg = <0 0x40000000 0 0x40000000>;
        };
 
+       vcc_mmc0: regulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "MMC0 Vcc";
+               regulator-min-microvolt = <2800000>;
+               regulator-max-microvolt = <2800000>;
+               regulator-always-on;
+       };
+
+       vcc_sdhi0: regulator@1 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "SDHI0 Vcc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pfc 76 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       /* Common 3.3V rail, used by several devices on APE6EVM */
+       ape6evm_fixed_3v3: regulator@2 {
+               compatible = "regulator-fixed";
+               regulator-name = "3V3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-always-on;
+       };
+
        lbsc {
                compatible = "simple-bus";
                #address-cells = <1>;
@@ -33,6 +62,7 @@
 };
 
 &i2c5 {
+       status = "okay";
        vdd_dvfs: max8973@1b {
                compatible = "maxim,max8973";
                reg = <0x1b>;
                renesas,groups = "scifa0_data";
                renesas,function = "scifa0";
        };
+
+       mmc0_pins: mmcif {
+               renesas,groups = "mmc0_data8", "mmc0_ctrl";
+               renesas,function = "mmc0";
+       };
+
+       sdhi0_pins: sdhi0 {
+               renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_cd";
+               renesas,function = "sdhi0";
+       };
+
+       sdhi1_pins: sdhi1 {
+               renesas,groups = "sdhi1_data4", "sdhi1_ctrl";
+               renesas,function = "sdhi1";
+       };
+};
+
+&mmcif0 {
+       vmmc-supply = <&vcc_mmc0>;
+       bus-width = <8>;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins>;
+       status = "okay";
+};
+
+&sdhi0 {
+       vmmc-supply = <&vcc_sdhi0>;
+       bus-width = <4>;
+       toshiba,mmc-wrprotect-disable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdhi0_pins>;
+       status = "okay";
+};
+
+&sdhi1 {
+       vmmc-supply = <&ape6evm_fixed_3v3>;
+       bus-width = <4>;
+       broken-cd;
+       toshiba,mmc-wrprotect-disable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdhi1_pins>;
+       status = "okay";
 };
index 72f867e657910e268858091d276353f2cc141d6d..91436b58016f1d48fa5cd12c3946377500b9d70a 100644 (file)
@@ -52,6 +52,7 @@
 };
 
 &i2c5 {
+       status = "okay";
        vdd_dvfs: max8973@1b {
                compatible = "maxim,max8973";
                reg = <0x1b>;
index 658fcc537576b309ae06ecb74eaf65b3e3f2856c..287e047592a03d28e009cc0500c27ab6a18e6de1 100644 (file)
                                <0 56 4>, <0 57 4>;
        };
 
+       dmac: dma-multiplexer@0 {
+               compatible = "renesas,shdma-mux";
+               #dma-cells = <1>;
+               dma-channels = <20>;
+               dma-requests = <256>;
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               dma0: dma-controller@e6700020 {
+                       compatible = "renesas,shdma-r8a73a4";
+                       reg = <0 0xe6700020 0 0x89e0>;
+                       interrupt-parent = <&gic>;
+                       interrupts = <0 220 4
+                                       0 200 4
+                                       0 201 4
+                                       0 202 4
+                                       0 203 4
+                                       0 204 4
+                                       0 205 4
+                                       0 206 4
+                                       0 207 4
+                                       0 208 4
+                                       0 209 4
+                                       0 210 4
+                                       0 211 4
+                                       0 212 4
+                                       0 213 4
+                                       0 214 4
+                                       0 215 4
+                                       0 216 4
+                                       0 217 4
+                                       0 218 4
+                                       0 219 4>;
+                       interrupt-names = "error",
+                                       "ch0", "ch1", "ch2", "ch3",
+                                       "ch4", "ch5", "ch6", "ch7",
+                                       "ch8", "ch9", "ch10", "ch11",
+                                       "ch12", "ch13", "ch14", "ch15",
+                                       "ch16", "ch17", "ch18", "ch19";
+               };
+       };
+
        thermal@e61f0000 {
                compatible = "renesas,rcar-thermal";
                reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>,
                reg = <0 0xe6500000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 174 0x4>;
+               status = "disabled";
        };
 
        i2c1: i2c@e6510000 {
                reg = <0 0xe6510000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 175 0x4>;
+               status = "disabled";
        };
 
        i2c2: i2c@e6520000 {
                reg = <0 0xe6520000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 176 0x4>;
+               status = "disabled";
        };
 
        i2c3: i2c@e6530000 {
                reg = <0 0xe6530000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 177 0x4>;
+               status = "disabled";
        };
 
        i2c4: i2c@e6540000 {
                reg = <0 0xe6540000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 178 0x4>;
+               status = "disabled";
        };
 
        i2c5: i2c@e60b0000 {
                reg = <0 0xe60b0000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 179 0x4>;
+               status = "disabled";
        };
 
        i2c6: i2c@e6550000 {
                reg = <0 0xe6550000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 184 0x4>;
+               status = "disabled";
        };
 
        i2c7: i2c@e6560000 {
                reg = <0 0xe6560000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 185 0x4>;
+               status = "disabled";
        };
 
        i2c8: i2c@e6570000 {
                reg = <0 0xe6570000 0 0x428>;
                interrupt-parent = <&gic>;
                interrupts = <0 173 0x4>;
+               status = "disabled";
        };
 
        mmcif0: mmcif@ee200000 {
index c638e4ab91b8ee95655ab0784803f8a2ffb5ce1c..1c56c5e56950846217471ae98ee00c5bed4922ac 100644 (file)
@@ -11,6 +11,7 @@
 /dts-v1/;
 /include/ "r8a7740.dtsi"
 #include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pwm/pwm.h>
 
 / {
        model = "armadillo 800 eva reference";
                regulator-boot-on;
        };
 
+       vcc_sdhi0: regulator@1 {
+               compatible = "regulator-fixed";
+
+               regulator-name = "SDHI0 Vcc";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+
+               gpio = <&pfc 75 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+       };
+
+       vccq_sdhi0: regulator@2 {
+               compatible = "regulator-gpio";
+
+               regulator-name = "SDHI0 VccQ";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_sdhi0>;
+
+               enable-gpio = <&pfc 74 GPIO_ACTIVE_HIGH>;
+               gpios = <&pfc 17 GPIO_ACTIVE_HIGH>;
+               states = <3300000 0
+                         1800000 1>;
+
+               enable-active-high;
+       };
+
        leds {
                compatible = "gpio-leds";
                led1 {
                        gpios = <&pfc 177 GPIO_ACTIVE_HIGH>;
                };
        };
+
+       backlight {
+               compatible = "pwm-backlight";
+               pwms = <&tpu 2 33333 PWM_POLARITY_INVERTED>;
+               brightness-levels = <0 1 2 4 8 16 32 64 128 255>;
+               default-brightness-level = <9>;
+               pinctrl-0 = <&backlight_pins>;
+               pinctrl-names = "default";
+       };
 };
 
 &i2c0 {
+       status = "okay";
        touchscreen: st1232@55 {
                compatible = "sitronix,st1232";
                reg = <0x55>;
                renesas,groups = "intc_irq10";
                renesas,function = "intc";
        };
+
+       backlight_pins: backlight {
+               renesas,groups = "tpu0_to2_1";
+               renesas,function = "tpu0";
+       };
+
+       mmc0_pins: mmc0 {
+               renesas,groups = "mmc0_data8_1", "mmc0_ctrl_1";
+               renesas,function = "mmc0";
+       };
+
+       sdhi0_pins: sdhi0 {
+               renesas,groups = "sdhi0_data4", "sdhi0_ctrl", "sdhi0_wp";
+               renesas,function = "sdhi0";
+       };
+};
+
+&tpu {
+       status = "okay";
+};
+
+&mmcif0 {
+       pinctrl-0 = <&mmc0_pins>;
+       pinctrl-names = "default";
+
+       vmmc-supply = <&reg_3p3v>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
+
+&sdhi0 {
+       pinctrl-0 = <&sdhi0_pins>;
+       pinctrl-names = "default";
+
+       vmmc-supply = <&vcc_sdhi0>;
+       vqmmc-supply = <&vccq_sdhi0>;
+       bus-width = <4>;
+       cd-gpios = <&pfc 167 GPIO_ACTIVE_LOW>;
+       status = "okay";
 };
index 44d3d520e01ffd0cce0c48527889d2ddf8e4c230..ae1e230f711ddf243168abc55cfc6cd3e3095cf8 100644 (file)
                              0 202 0x4
                              0 203 0x4
                              0 204 0x4>;
+               status = "disabled";
        };
 
        i2c1: i2c@e6c20000 {
                              0 71 0x4
                              0 72 0x4
                              0 73 0x4>;
+               status = "disabled";
        };
 
        pfc: pfc@e6050000 {
                status = "disabled";
                #pwm-cells = <3>;
        };
+
+       mmcif0: mmcif@e6bd0000 {
+               compatible = "renesas,sh-mmcif";
+               reg = <0xe6bd0000 0x100>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 56 4
+                               0 57 4>;
+               status = "disabled";
+       };
+
+       sdhi0: sdhi@e6850000 {
+               compatible = "renesas,sdhi-r8a7740";
+               reg = <0xe6850000 0x100>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 117 4
+                               0 118 4
+                               0 119 4>;
+               cap-sd-highspeed;
+               cap-sdio-irq;
+               status = "disabled";
+       };
+
+       sdhi1: sdhi@e6860000 {
+               compatible = "renesas,sdhi-r8a7740";
+               reg = <0xe6860000 0x100>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 121 4
+                               0 122 4
+                               0 123 4>;
+               cap-sd-highspeed;
+               cap-sdio-irq;
+               status = "disabled";
+       };
 };
index 9bb903a3230d0d781fa866949fd4d33fc54a3c23..969e386e852c443f0b5bb95440a0e595d491c04e 100644 (file)
        compatible = "renesas,bockw-reference", "renesas,r8a7778";
 
        chosen {
-               bootargs = "console=ttySC0,115200 ignore_loglevel rw";
+               bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp rw";
        };
 
        memory {
                device_type = "memory";
                reg = <0x60000000 0x10000000>;
        };
+
+       fixedregulator3v3: fixedregulator@0 {
+               compatible = "regulator-fixed";
+               regulator-name = "fixed-3.3V";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       ethernet@18300000 {
+               compatible = "smsc,lan9220", "smsc,lan9115";
+               reg = <0x18300000 0x1000>;
+
+               phy-mode = "mii";
+               interrupt-parent = <&irqpin>;
+               interrupts = <0 0>; /* IRQ0: hwirq 0 on irqpin */
+               reg-io-width = <4>;
+               vddvario-supply = <&fixedregulator3v3>;
+               vdd33a-supply = <&fixedregulator3v3>;
+       };
+};
+
+&irqpin {
+       status = "okay";
 };
index 3577aba8258336bab80d44c3065c6e94f6ffe8a7..a6308a399e2d2dbbf4fed33ee943b37f98ed0991 100644 (file)
                      <0xfe430000 0x100>;
        };
 
+       /* irqpin: IRQ0 - IRQ3 */
+       irqpin: irqpin@fe78001c {
+               compatible = "renesas,intc-irqpin";
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               status = "disabled"; /* default off */
+               reg =   <0xfe78001c 4>,
+                       <0xfe780010 4>,
+                       <0xfe780024 4>,
+                       <0xfe780044 4>,
+                       <0xfe780064 4>;
+               interrupt-parent = <&gic>;
+               interrupts =   <0 27 0x4
+                               0 28 0x4
+                               0 29 0x4
+                               0 30 0x4>;
+               sense-bitfield-width = <2>;
+       };
+
        gpio0: gpio@ffc40000 {
                compatible = "renesas,gpio-r8a7778", "renesas,gpio-rcar";
                reg = <0xffc40000 0x2c>;
index 6d55083922521619781af8c877ade660ae5ad057..ab4110aa3c3b5a4ad31f1600959195099f8ace9c 100644 (file)
@@ -42,8 +42,8 @@
                pinctrl-names = "default";
 
                phy-mode = "mii";
-               interrupt-parent = <&gic>;
-               interrupts = <0 28 0x4>;
+               interrupt-parent = <&irqpin0>;
+               interrupts = <1 0>; /* IRQ1: hwirq 1 on irqpin0 */
                reg-io-width = <4>;
                vddvario-supply = <&fixedregulator3v3>;
                vdd33a-supply = <&fixedregulator3v3>;
        };
 };
 
+&irqpin0 {
+       status = "okay";
+};
+
 &pfc {
        pinctrl-0 = <&scif2_pins &scif4_pins &sdhi0_pins>;
        pinctrl-names = "default";
index ebbe507fcbfa118280da96482dfaa109854f18c8..19faeac3fd2e1b74f5d289948dd486f473f931de 100644 (file)
        irqpin0: irqpin@fe780010 {
                compatible = "renesas,intc-irqpin";
                #interrupt-cells = <2>;
+               status = "disabled";
                interrupt-controller;
                reg = <0xfe78001c 4>,
                        <0xfe780010 4>,
                reg = <0xffc70000 0x1000>;
                interrupt-parent = <&gic>;
                interrupts = <0 79 0x4>;
+               status = "disabled";
        };
 
        i2c1: i2c@ffc71000 {
                reg = <0xffc71000 0x1000>;
                interrupt-parent = <&gic>;
                interrupts = <0 82 0x4>;
+               status = "disabled";
        };
 
        i2c2: i2c@ffc72000 {
                reg = <0xffc72000 0x1000>;
                interrupt-parent = <&gic>;
                interrupts = <0 80 0x4>;
+               status = "disabled";
        };
 
        i2c3: i2c@ffc73000 {
                reg = <0xffc73000 0x1000>;
                interrupt-parent = <&gic>;
                interrupts = <0 81 0x4>;
+               status = "disabled";
        };
 
        pfc: pfc@fffc0000 {
index 413b4c29e782d7ded622563b8a458e28d382db19..ee845fad939b895a1bfb907c6597f9f916d926f8 100644 (file)
                        reg = <0>;
                        clock-frequency = <1300000000>;
                };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <1>;
+                       clock-frequency = <1300000000>;
+               };
+
+               cpu2: cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <2>;
+                       clock-frequency = <1300000000>;
+               };
+
+               cpu3: cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <3>;
+                       clock-frequency = <1300000000>;
+               };
+
+               cpu4: cpu@4 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x100>;
+                       clock-frequency = <780000000>;
+               };
+
+               cpu5: cpu@5 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x101>;
+                       clock-frequency = <780000000>;
+               };
+
+               cpu6: cpu@6 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x102>;
+                       clock-frequency = <780000000>;
+               };
+
+               cpu7: cpu@7 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a7";
+                       reg = <0x103>;
+                       clock-frequency = <780000000>;
+               };
        };
 
        gic: interrupt-controller@f1001000 {
                interrupts = <0 0 4>, <0 1 4>, <0 2 4>, <0 3 4>;
        };
 
+       i2c0: i2c@e6508000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "renesas,i2c-r8a7790";
+               reg = <0 0xe6508000 0 0x40>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 287 0x4>;
+               status = "disabled";
+       };
+
+       i2c1: i2c@e6518000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "renesas,i2c-r8a7790";
+               reg = <0 0xe6518000 0 0x40>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 288 0x4>;
+               status = "disabled";
+       };
+
+       i2c2: i2c@e6530000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "renesas,i2c-r8a7790";
+               reg = <0 0xe6530000 0 0x40>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 286 0x4>;
+               status = "disabled";
+       };
+
+       i2c3: i2c@e6540000 {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               compatible = "renesas,i2c-r8a7790";
+               reg = <0 0xe6540000 0 0x40>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 290 0x4>;
+               status = "disabled";
+       };
+
        mmcif0: mmcif@ee200000 {
                compatible = "renesas,sh-mmcif";
                reg = <0 0xee200000 0 0x80>;
diff --git a/arch/arm/boot/dts/r8a7791.dtsi b/arch/arm/boot/dts/r8a7791.dtsi
new file mode 100644 (file)
index 0000000..fea5cfe
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Device Tree Source for the r8a7791 SoC
+ *
+ * Copyright (C) 2013 Renesas Electronics Corporation
+ * Copyright (C) 2013 Renesas Solutions Corp.
+ *
+ * This file is licensed under the terms of the GNU General Public License
+ * version 2.  This program is licensed "as is" without any warranty of any
+ * kind, whether express or implied.
+ */
+
+/ {
+       compatible = "renesas,r8a7791";
+       interrupt-parent = <&gic>;
+       #address-cells = <2>;
+       #size-cells = <2>;
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu0: cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <0>;
+                       clock-frequency = <1300000000>;
+               };
+
+               cpu1: cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <1>;
+                       clock-frequency = <1300000000>;
+               };
+       };
+
+       gic: interrupt-controller@f1001000 {
+               compatible = "arm,cortex-a15-gic";
+               #interrupt-cells = <3>;
+               #address-cells = <0>;
+               interrupt-controller;
+               reg = <0 0xf1001000 0 0x1000>,
+                       <0 0xf1002000 0 0x1000>,
+                       <0 0xf1004000 0 0x2000>,
+                       <0 0xf1006000 0 0x2000>;
+               interrupts = <1 9 0xf04>;
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <1 13 0xf08>,
+                               <1 14 0xf08>,
+                               <1 11 0xf08>,
+                               <1 10 0xf08>;
+       };
+
+       irqc0: interrupt-controller@e61c0000 {
+               compatible = "renesas,irqc";
+               #interrupt-cells = <2>;
+               interrupt-controller;
+               reg = <0 0xe61c0000 0 0x200>;
+               interrupt-parent = <&gic>;
+               interrupts = <0 0 4>,
+                             <0 1 4>,
+                             <0 2 4>,
+                             <0 3 4>,
+                             <0 12 4>,
+                             <0 13 4>,
+                             <0 14 4>,
+                             <0 15 4>,
+                             <0 16 4>,
+                             <0 17 4>;
+       };
+};
diff --git a/arch/arm/boot/dts/s3c6400.dtsi b/arch/arm/boot/dts/s3c6400.dtsi
new file mode 100644 (file)
index 0000000..a7d1c8e
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Samsung's S3C6400 SoC device tree source
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Samsung's S3C6400 SoC device nodes are listed in this file. S3C6400
+ * based board files can include this file and provide values for board specfic
+ * bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * S3C6400 SoC. As device tree coverage for S3C6400 increases, additional
+ * nodes can be added to this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+#include "s3c64xx.dtsi"
+
+/ {
+       compatible = "samsung,s3c6400";
+};
+
+&vic0 {
+       valid-mask = <0xfffffe1f>;
+       valid-wakeup-mask = <0x00200004>;
+};
+
+&vic1 {
+       valid-mask = <0xffffffff>;
+       valid-wakeup-mask = <0x53020000>;
+};
+
+&soc {
+       clocks: clock-controller@7e00f000 {
+               compatible = "samsung,s3c6400-clock";
+               reg = <0x7e00f000 0x1000>;
+               #clock-cells = <1>;
+       };
+};
diff --git a/arch/arm/boot/dts/s3c6410-mini6410.dts b/arch/arm/boot/dts/s3c6410-mini6410.dts
new file mode 100644 (file)
index 0000000..57e00f9
--- /dev/null
@@ -0,0 +1,228 @@
+/*
+ * Samsung's S3C6410 based Mini6410 board device tree source
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Device tree source file for FriendlyARM Mini6410 board which is based on
+ * Samsung's S3C6410 SoC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+#include "s3c6410.dtsi"
+
+/ {
+       model = "FriendlyARM Mini6410 board based on S3C6410";
+       compatible = "friendlyarm,mini6410", "samsung,s3c6410";
+
+       memory {
+               reg = <0x50000000 0x10000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttySAC0,115200n8 earlyprintk rootwait root=/dev/mmcblk0p1";
+       };
+
+       clocks {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fin_pll: oscillator@0 {
+                       compatible = "fixed-clock";
+                       reg = <0>;
+                       clock-frequency = <12000000>;
+                       clock-output-names = "fin_pll";
+                       #clock-cells = <0>;
+               };
+
+               xusbxti: oscillator@1 {
+                       compatible = "fixed-clock";
+                       reg = <1>;
+                       clock-output-names = "xusbxti";
+                       clock-frequency = <48000000>;
+                       #clock-cells = <0>;
+               };
+       };
+
+       srom-cs1@18000000 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x18000000 0x8000000>;
+               ranges;
+
+               ethernet@18000000 {
+                       compatible = "davicom,dm9000";
+                       reg = <0x18000000 0x2 0x18000004 0x2>;
+                       interrupt-parent = <&gpn>;
+                       interrupts = <7 IRQ_TYPE_LEVEL_HIGH>;
+                       davicom,no-eeprom;
+               };
+       };
+
+       gpio-keys {
+               compatible = "gpio-keys";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_keys>;
+               autorepeat;
+
+               button-k1 {
+                       label = "K1";
+                       gpios = <&gpn 0 GPIO_ACTIVE_LOW>;
+                       linux,code = <2>;
+                       debounce-interval = <20>;
+               };
+
+               button-k2 {
+                       label = "K2";
+                       gpios = <&gpn 1 GPIO_ACTIVE_LOW>;
+                       linux,code = <3>;
+                       debounce-interval = <20>;
+               };
+
+               button-k3 {
+                       label = "K3";
+                       gpios = <&gpn 2 GPIO_ACTIVE_LOW>;
+                       linux,code = <4>;
+                       debounce-interval = <20>;
+               };
+
+               button-k4 {
+                       label = "K4";
+                       gpios = <&gpn 3 GPIO_ACTIVE_LOW>;
+                       linux,code = <5>;
+                       debounce-interval = <20>;
+               };
+
+               button-k5 {
+                       label = "K5";
+                       gpios = <&gpn 4 GPIO_ACTIVE_LOW>;
+                       linux,code = <6>;
+                       debounce-interval = <20>;
+               };
+
+               button-k6 {
+                       label = "K6";
+                       gpios = <&gpn 5 GPIO_ACTIVE_LOW>;
+                       linux,code = <7>;
+                       debounce-interval = <20>;
+               };
+
+               button-k7 {
+                       label = "K7";
+                       gpios = <&gpl 11 GPIO_ACTIVE_LOW>;
+                       linux,code = <8>;
+                       debounce-interval = <20>;
+               };
+
+               button-k8 {
+                       label = "K8";
+                       gpios = <&gpl 12 GPIO_ACTIVE_LOW>;
+                       linux,code = <9>;
+                       debounce-interval = <20>;
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&gpio_leds>;
+
+               led-1 {
+                       label = "LED1";
+                       gpios = <&gpk 4 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "heartbeat";
+               };
+
+               led-2 {
+                       label = "LED2";
+                       gpios = <&gpk 5 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "mmc0";
+               };
+
+               led-3 {
+                       label = "LED3";
+                       gpios = <&gpk 6 GPIO_ACTIVE_LOW>;
+               };
+
+               led-4 {
+                       label = "LED4";
+                       gpios = <&gpk 7 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       buzzer {
+               compatible = "pwm-beeper";
+               pwms = <&pwm 0 1000000 0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm0_out>;
+       };
+};
+
+&sdhci0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_data>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_data>, <&uart1_fctl>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_data>;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_data>;
+       status = "okay";
+};
+
+&pwm {
+       status = "okay";
+};
+
+&pinctrl0 {
+       gpio_leds: gpio-leds {
+               samsung,pins = "gpk-4", "gpk-5", "gpk-6", "gpk-7";
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       gpio_keys: gpio-keys {
+               samsung,pins = "gpn-0", "gpn-1", "gpn-2", "gpn-3",
+                               "gpn-4", "gpn-5", "gpl-11", "gpl-12";
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_bus>;
+       status = "okay";
+
+       eeprom@50 {
+               compatible = "atmel,24c08";
+               reg = <0x50>;
+               pagesize = <16>;
+       };
+};
diff --git a/arch/arm/boot/dts/s3c6410-smdk6410.dts b/arch/arm/boot/dts/s3c6410-smdk6410.dts
new file mode 100644 (file)
index 0000000..ecf35ec
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Samsung S3C6410 based SMDK6410 board device tree source.
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Device tree source file for SAMSUNG SMDK6410 board which is based on
+ * Samsung's S3C6410 SoC.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+
+#include "s3c6410.dtsi"
+
+/ {
+       model = "SAMSUNG SMDK6410 board based on S3C6410";
+       compatible = "samsung,mini6410", "samsung,s3c6410";
+
+       memory {
+               reg = <0x50000000 0x8000000>;
+       };
+
+       chosen {
+               bootargs = "console=ttySAC0,115200n8 earlyprintk rootwait root=/dev/mmcblk0p1";
+       };
+
+       clocks {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               fin_pll: oscillator@0 {
+                       compatible = "fixed-clock";
+                       reg = <0>;
+                       clock-frequency = <12000000>;
+                       clock-output-names = "fin_pll";
+                       #clock-cells = <0>;
+               };
+
+               xusbxti: oscillator@1 {
+                       compatible = "fixed-clock";
+                       reg = <1>;
+                       clock-output-names = "xusbxti";
+                       clock-frequency = <48000000>;
+                       #clock-cells = <0>;
+               };
+       };
+
+       srom-cs1@18000000 {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0x18000000 0x8000000>;
+               ranges;
+
+               ethernet@18000000 {
+                       compatible = "smsc,lan9115";
+                       reg = <0x18000000 0x10000>;
+                       interrupt-parent = <&gpn>;
+                       interrupts = <10 IRQ_TYPE_LEVEL_LOW>;
+                       phy-mode = "mii";
+                       reg-io-width = <4>;
+                       smsc,force-internal-phy;
+               };
+       };
+};
+
+&sdhci0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sd0_clk>, <&sd0_cmd>, <&sd0_cd>, <&sd0_bus4>;
+       bus-width = <4>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_data>, <&uart0_fctl>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_data>;
+       status = "okay";
+};
+
+&uart2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_data>;
+       status = "okay";
+};
+
+&uart3 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart3_data>;
+       status = "okay";
+};
diff --git a/arch/arm/boot/dts/s3c6410.dtsi b/arch/arm/boot/dts/s3c6410.dtsi
new file mode 100644 (file)
index 0000000..eb4226b
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Samsung's S3C6410 SoC device tree source
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Samsung's S3C6410 SoC device nodes are listed in this file. S3C6410
+ * based board files can include this file and provide values for board specfic
+ * bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * S3C6410 SoC. As device tree coverage for S3C6410 increases, additional
+ * nodes can be added to this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+#include "s3c64xx.dtsi"
+
+/ {
+       compatible = "samsung,s3c6410";
+
+       aliases {
+               i2c1 = &i2c1;
+       };
+};
+
+&vic0 {
+       valid-mask = <0xffffff7f>;
+       valid-wakeup-mask = <0x00200004>;
+};
+
+&vic1 {
+       valid-mask = <0xffffffff>;
+       valid-wakeup-mask = <0x53020000>;
+};
+
+&soc {
+       clocks: clock-controller@7e00f000 {
+               compatible = "samsung,s3c6410-clock";
+               reg = <0x7e00f000 0x1000>;
+               #clock-cells = <1>;
+       };
+
+       i2c1: i2c@7f00f000 {
+               compatible = "samsung,s3c2440-i2c";
+               reg = <0x7f00f000 0x1000>;
+               interrupt-parent = <&vic0>;
+               interrupts = <5>;
+               clock-names = "i2c";
+               clocks = <&clocks PCLK_IIC1>;
+               status = "disabled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+       };
+};
diff --git a/arch/arm/boot/dts/s3c64xx-pinctrl.dtsi b/arch/arm/boot/dts/s3c64xx-pinctrl.dtsi
new file mode 100644 (file)
index 0000000..b1197d8
--- /dev/null
@@ -0,0 +1,687 @@
+/*
+ * Samsung's S3C64xx SoC series common device tree source
+ * - pin control-related definitions
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Samsung's S3C64xx SoCs pin banks, pin-mux and pin-config options are
+ * listed as device tree nodes in this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#define PIN_PULL_NONE  0
+#define PIN_PULL_DOWN  1
+#define PIN_PULL_UP    2
+
+&pinctrl0 {
+       /*
+        * Pin banks
+        */
+
+       gpa: gpa {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpb: gpb {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpc: gpc {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpd: gpd {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpe: gpe {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpf: gpf {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpg: gpg {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gph: gph {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpi: gpi {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpj: gpj {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpk: gpk {
+               gpio-controller;
+               #gpio-cells = <2>;
+       };
+
+       gpl: gpl {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpm: gpm {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpn: gpn {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpo: gpo {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpp: gpp {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       gpq: gpq {
+               gpio-controller;
+               #gpio-cells = <2>;
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       /*
+        * Pin groups
+        */
+
+       uart0_data: uart0-data {
+               samsung,pins = "gpa-0", "gpa-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       uart0_fctl: uart0-fctl {
+               samsung,pins = "gpa-2", "gpa-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       uart1_data: uart1-data {
+               samsung,pins = "gpa-4", "gpa-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       uart1_fctl: uart1-fctl {
+               samsung,pins = "gpa-6", "gpa-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       uart2_data: uart2-data {
+               samsung,pins = "gpb-0", "gpb-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       uart3_data: uart3-data {
+               samsung,pins = "gpb-2", "gpb-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       ext_dma_0: ext-dma-0 {
+               samsung,pins = "gpb-0", "gpb-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       ext_dma_1: ext-dma-1 {
+               samsung,pins = "gpb-2", "gpb-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       irda_data_0: irda-data-0 {
+               samsung,pins = "gpb-0", "gpb-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       irda_data_1: irda-data-1 {
+               samsung,pins = "gpb-2", "gpb-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       irda_sdbw: irda-sdbw {
+               samsung,pins = "gpb-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2c0_bus: i2c0-bus {
+               samsung,pins = "gpb-5", "gpb-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_UP>;
+       };
+
+       i2c1_bus: i2c1-bus {
+               /* S3C6410-only */
+               samsung,pins = "gpb-2", "gpb-3";
+               samsung,pin-function = <6>;
+               samsung,pin-pud = <PIN_PULL_UP>;
+       };
+
+       spi0_bus: spi0-bus {
+               samsung,pins = "gpc-0", "gpc-1", "gpc-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_UP>;
+       };
+
+       spi0_cs: spi0-cs {
+               samsung,pins = "gpc-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       spi1_bus: spi1-bus {
+               samsung,pins = "gpc-4", "gpc-5", "gpc-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_UP>;
+       };
+
+       spi1_cs: spi1-cs {
+               samsung,pins = "gpc-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd0_cmd: sd0-cmd {
+               samsung,pins = "gpg-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd0_clk: sd0-clk {
+               samsung,pins = "gpg-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd0_bus1: sd0-bus1 {
+               samsung,pins = "gpg-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd0_bus4: sd0-bus4 {
+               samsung,pins = "gpg-2", "gpg-3", "gpg-4", "gpg-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd0_cd: sd0-cd {
+               samsung,pins = "gpg-6";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_UP>;
+       };
+
+       sd1_cmd: sd1-cmd {
+               samsung,pins = "gph-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd1_clk: sd1-clk {
+               samsung,pins = "gph-0";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd1_bus1: sd1-bus1 {
+               samsung,pins = "gph-2";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd1_bus4: sd1-bus4 {
+               samsung,pins = "gph-2", "gph-3", "gph-4", "gph-5";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd1_bus8: sd1-bus8 {
+               samsung,pins = "gph-2", "gph-3", "gph-4", "gph-5",
+                               "gph-6", "gph-7", "gph-8", "gph-9";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd1_cd: sd1-cd {
+               samsung,pins = "gpg-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_UP>;
+       };
+
+       sd2_cmd: sd2-cmd {
+               samsung,pins = "gpc-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd2_clk: sd2-clk {
+               samsung,pins = "gpc-5";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd2_bus1: sd2-bus1 {
+               samsung,pins = "gph-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       sd2_bus4: sd2-bus4 {
+               samsung,pins = "gph-6", "gph-7", "gph-8", "gph-9";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2s0_bus: i2s0-bus {
+               samsung,pins = "gpd-0", "gpd-2", "gpd-3", "gpd-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2s0_cdclk: i2s0-cdclk {
+               samsung,pins = "gpd-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2s1_bus: i2s1-bus {
+               samsung,pins = "gpe-0", "gpe-2", "gpe-3", "gpe-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2s1_cdclk: i2s1-cdclk {
+               samsung,pins = "gpe-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2s2_bus: i2s2-bus {
+               /* S3C6410-only */
+               samsung,pins = "gpc-4", "gpc-5", "gpc-6", "gph-6",
+                               "gph-8", "gph-9";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       i2s2_cdclk: i2s2-cdclk {
+               /* S3C6410-only */
+               samsung,pins = "gph-7";
+               samsung,pin-function = <5>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pcm0_bus: pcm0-bus {
+               samsung,pins = "gpd-0", "gpd-2", "gpd-3", "gpd-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pcm0_extclk: pcm0-extclk {
+               samsung,pins = "gpd-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pcm1_bus: pcm1-bus {
+               samsung,pins = "gpe-0", "gpe-2", "gpe-3", "gpe-4";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pcm1_extclk: pcm1-extclk {
+               samsung,pins = "gpe-1";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       ac97_bus_0: ac97-bus-0 {
+               samsung,pins = "gpd-0", "gpd-1", "gpd-2", "gpd-3", "gpd-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       ac97_bus_1: ac97-bus-1 {
+               samsung,pins = "gpe-0", "gpe-1", "gpe-2", "gpe-3", "gpe-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       cam_port: cam-port {
+               samsung,pins = "gpf-0", "gpf-1", "gpf-2", "gpf-4",
+                               "gpf-5", "gpf-6", "gpf-7", "gpf-8",
+                               "gpf-9", "gpf-10", "gpf-11", "gpf-12";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       cam_rst: cam-rst {
+               samsung,pins = "gpf-3";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       cam_field: cam-field {
+               /* S3C6410-only */
+               samsung,pins = "gpb-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pwm_extclk: pwm-extclk {
+               samsung,pins = "gpf-13";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pwm0_out: pwm0-out {
+               samsung,pins = "gpf-14";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       pwm1_out: pwm1-out {
+               samsung,pins = "gpf-15";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       clkout0: clkout-0 {
+               samsung,pins = "gpf-14";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col0_0: keypad-col0-0 {
+               samsung,pins = "gph-0";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col1_0: keypad-col1-0 {
+               samsung,pins = "gph-1";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col2_0: keypad-col2-0 {
+               samsung,pins = "gph-2";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col3_0: keypad-col3-0 {
+               samsung,pins = "gph-3";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col4_0: keypad-col4-0 {
+               samsung,pins = "gph-4";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col5_0: keypad-col5-0 {
+               samsung,pins = "gph-5";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col6_0: keypad-col6-0 {
+               samsung,pins = "gph-6";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col7_0: keypad-col7-0 {
+               samsung,pins = "gph-7";
+               samsung,pin-function = <4>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col0_1: keypad-col0-1 {
+               samsung,pins = "gpl-0";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col1_1: keypad-col1-1 {
+               samsung,pins = "gpl-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col2_1: keypad-col2-1 {
+               samsung,pins = "gpl-2";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col3_1: keypad-col3-1 {
+               samsung,pins = "gpl-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col4_1: keypad-col4-1 {
+               samsung,pins = "gpl-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col5_1: keypad-col5-1 {
+               samsung,pins = "gpl-5";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col6_1: keypad-col6-1 {
+               samsung,pins = "gpl-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_col7_1: keypad-col7-1 {
+               samsung,pins = "gpl-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row0_0: keypad-row0-0 {
+               samsung,pins = "gpk-8";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row1_0: keypad-row1-0 {
+               samsung,pins = "gpk-9";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row2_0: keypad-row2-0 {
+               samsung,pins = "gpk-10";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row3_0: keypad-row3-0 {
+               samsung,pins = "gpk-11";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row4_0: keypad-row4-0 {
+               samsung,pins = "gpk-12";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row5_0: keypad-row5-0 {
+               samsung,pins = "gpk-13";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row6_0: keypad-row6-0 {
+               samsung,pins = "gpk-14";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row7_0: keypad-row7-0 {
+               samsung,pins = "gpk-15";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row0_1: keypad-row0-1 {
+               samsung,pins = "gpn-0";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row1_1: keypad-row1-1 {
+               samsung,pins = "gpn-1";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row2_1: keypad-row2-1 {
+               samsung,pins = "gpn-2";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row3_1: keypad-row3-1 {
+               samsung,pins = "gpn-3";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row4_1: keypad-row4-1 {
+               samsung,pins = "gpn-4";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row5_1: keypad-row5-1 {
+               samsung,pins = "gpn-5";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row6_1: keypad-row6-1 {
+               samsung,pins = "gpn-6";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       keypad_row7_1: keypad-row7-1 {
+               samsung,pins = "gpn-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       lcd_ctrl: lcd-ctrl {
+               samsung,pins = "gpj-8", "gpj-9", "gpj-10", "gpj-11";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       lcd_data16: lcd-data-width16 {
+               samsung,pins = "gpi-3", "gpi-4", "gpi-5", "gpi-6",
+                               "gpi-7", "gpi-10", "gpi-11", "gpi-12",
+                               "gpi-13", "gpi-14", "gpi-15", "gpj-3",
+                               "gpj-4", "gpj-5", "gpj-6", "gpj-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       lcd_data18: lcd-data-width18 {
+               samsung,pins = "gpi-2", "gpi-3", "gpi-4", "gpi-5",
+                               "gpi-6", "gpi-7", "gpi-10", "gpi-11",
+                               "gpi-12", "gpi-13", "gpi-14", "gpi-15",
+                               "gpj-2", "gpj-3", "gpj-4", "gpj-5",
+                               "gpj-6", "gpj-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       lcd_data24: lcd-data-width24 {
+               samsung,pins = "gpi-0", "gpi-1", "gpi-2", "gpi-3",
+                               "gpi-4", "gpi-5", "gpi-6", "gpi-7",
+                               "gpi-8", "gpi-9", "gpi-10", "gpi-11",
+                               "gpi-12", "gpi-13", "gpi-14", "gpi-15",
+                               "gpj-0", "gpj-1", "gpj-2", "gpj-3",
+                               "gpj-4", "gpj-5", "gpj-6", "gpj-7";
+               samsung,pin-function = <2>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+
+       hsi_bus: hsi-bus {
+               samsung,pins = "gpk-0", "gpk-1", "gpk-2", "gpk-3",
+                               "gpk-4", "gpk-5", "gpk-6", "gpk-7";
+               samsung,pin-function = <3>;
+               samsung,pin-pud = <PIN_PULL_NONE>;
+       };
+};
diff --git a/arch/arm/boot/dts/s3c64xx.dtsi b/arch/arm/boot/dts/s3c64xx.dtsi
new file mode 100644 (file)
index 0000000..4e3be4d
--- /dev/null
@@ -0,0 +1,199 @@
+/*
+ * Samsung's S3C64xx SoC series common device tree source
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * Samsung's S3C64xx SoC series device nodes are listed in this file.
+ * Particular SoCs from S3C64xx series can include this file and provide
+ * values for SoCs specfic bindings.
+ *
+ * Note: This file does not include device nodes for all the controllers in
+ * S3C64xx SoCs. As device tree coverage for S3C64xx increases, additional
+ * nodes can be added to this file.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include "skeleton.dtsi"
+#include <dt-bindings/clock/samsung,s3c64xx-clock.h>
+
+/ {
+       aliases {
+               i2c0 = &i2c0;
+               pinctrl0 = &pinctrl0;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,arm1176jzf-s", "arm,arm1176";
+                       reg = <0x0>;
+               };
+       };
+
+       soc: soc {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               vic0: interrupt-controller@71200000 {
+                       compatible = "arm,pl192-vic";
+                       interrupt-controller;
+                       reg = <0x71200000 0x1000>;
+                       #interrupt-cells = <1>;
+               };
+
+               vic1: interrupt-controller@71300000 {
+                       compatible = "arm,pl192-vic";
+                       interrupt-controller;
+                       reg = <0x71300000 0x1000>;
+                       #interrupt-cells = <1>;
+               };
+
+               sdhci0: sdhci@7c200000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0x7c200000 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <24>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.2";
+                       clocks = <&clocks HCLK_HSMMC0>, <&clocks HCLK_HSMMC0>,
+                                       <&clocks SCLK_MMC0>;
+                       status = "disabled";
+               };
+
+               sdhci1: sdhci@7c300000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0x7c300000 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <25>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.2";
+                       clocks = <&clocks HCLK_HSMMC1>, <&clocks HCLK_HSMMC1>,
+                                       <&clocks SCLK_MMC1>;
+                       status = "disabled";
+               };
+
+               sdhci2: sdhci@7c400000 {
+                       compatible = "samsung,s3c6410-sdhci";
+                       reg = <0x7c400000 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <17>;
+                       clock-names = "hsmmc", "mmc_busclk.0", "mmc_busclk.2";
+                       clocks = <&clocks HCLK_HSMMC2>, <&clocks HCLK_HSMMC2>,
+                                       <&clocks SCLK_MMC2>;
+                       status = "disabled";
+               };
+
+               watchdog: watchdog@7e004000 {
+                       compatible = "samsung,s3c2410-wdt";
+                       reg = <0x7e004000 0x1000>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <26>;
+                       clock-names = "watchdog";
+                       clocks = <&clocks PCLK_WDT>;
+                       status = "disabled";
+               };
+
+               i2c0: i2c@7f004000 {
+                       compatible = "samsung,s3c2440-i2c";
+                       reg = <0x7f004000 0x1000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <18>;
+                       clock-names = "i2c";
+                       clocks = <&clocks PCLK_IIC0>;
+                       status = "disabled";
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+
+               uart0: serial@7f005000 {
+                       compatible = "samsung,s3c6400-uart";
+                       reg = <0x7f005000 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <5>;
+                       clock-names = "uart", "clk_uart_baud2",
+                                       "clk_uart_baud3";
+                       clocks = <&clocks PCLK_UART0>, <&clocks PCLK_UART0>,
+                                       <&clocks SCLK_UART>;
+                       status = "disabled";
+               };
+
+               uart1: serial@7f005400 {
+                       compatible = "samsung,s3c6400-uart";
+                       reg = <0x7f005400 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <6>;
+                       clock-names = "uart", "clk_uart_baud2",
+                                       "clk_uart_baud3";
+                       clocks = <&clocks PCLK_UART1>, <&clocks PCLK_UART1>,
+                                       <&clocks SCLK_UART>;
+                       status = "disabled";
+               };
+
+               uart2: serial@7f005800 {
+                       compatible = "samsung,s3c6400-uart";
+                       reg = <0x7f005800 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <7>;
+                       clock-names = "uart", "clk_uart_baud2",
+                                       "clk_uart_baud3";
+                       clocks = <&clocks PCLK_UART2>, <&clocks PCLK_UART2>,
+                                       <&clocks SCLK_UART>;
+                       status = "disabled";
+               };
+
+               uart3: serial@7f005c00 {
+                       compatible = "samsung,s3c6400-uart";
+                       reg = <0x7f005c00 0x100>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <8>;
+                       clock-names = "uart", "clk_uart_baud2",
+                                       "clk_uart_baud3";
+                       clocks = <&clocks PCLK_UART3>, <&clocks PCLK_UART3>,
+                                       <&clocks SCLK_UART>;
+                       status = "disabled";
+               };
+
+               pwm: pwm@7f006000 {
+                       compatible = "samsung,s3c6400-pwm";
+                       reg = <0x7f006000 0x1000>;
+                       interrupt-parent = <&vic0>;
+                       interrupts = <23>, <24>, <25>, <27>, <28>;
+                       clock-names = "timers";
+                       clocks = <&clocks PCLK_PWM>;
+                       samsung,pwm-outputs = <0>, <1>;
+                       #pwm-cells = <3>;
+                       status = "disabled";
+               };
+
+               pinctrl0: pinctrl@7f008000 {
+                       compatible = "samsung,s3c64xx-pinctrl";
+                       reg = <0x7f008000 0x1000>;
+                       interrupt-parent = <&vic1>;
+                       interrupts = <21>;
+
+                       pctrl_int_map: pinctrl-interrupt-map {
+                               interrupt-map = <0 &vic0 0>,
+                                               <1 &vic0 1>,
+                                               <2 &vic1 0>,
+                                               <3 &vic1 1>;
+                               #address-cells = <0>;
+                               #size-cells = <0>;
+                               #interrupt-cells = <1>;
+                       };
+
+                       wakeup-interrupt-controller {
+                               compatible = "samsung,s3c64xx-wakeup-eint";
+                               interrupts = <0>, <1>, <2>, <3>;
+                               interrupt-parent = <&pctrl_int_map>;
+                       };
+               };
+       };
+};
+
+#include "s3c64xx-pinctrl.dtsi"
index 212230629f271459950547d1af23c143fb67e981..8ee06dd81799da98cbe14ed6c43973e4d4bd513f 100644 (file)
 };
 
 &i2c0 {
+       status = "okay";
        as3711@40 {
                compatible = "ams,as3711";
                reg = <0x40>;
 &i2c3 {
        pinctrl-0 = <&i2c3_pins>;
        pinctrl-names = "default";
+       status = "okay";
 };
 
 &mmcif {
index 3955c7606a6f45a33036bec612ad918806315dee..fcf26889a8a0aacb380d980fb6cccdd36ee36dff 100644 (file)
                              0 168 0x4
                              0 169 0x4
                              0 170 0x4>;
+               status = "disabled";
        };
 
        i2c1: i2c@e6822000 {
                              0 52 0x4
                              0 53 0x4
                              0 54 0x4>;
+               status = "disabled";
        };
 
        i2c2: i2c@e6824000 {
                              0 172 0x4
                              0 173 0x4
                              0 174 0x4>;
+               status = "disabled";
        };
 
        i2c3: i2c@e6826000 {
                              0 184 0x4
                              0 185 0x4
                              0 186 0x4>;
+               status = "disabled";
        };
 
        i2c4: i2c@e6828000 {
                              0 188 0x4
                              0 189 0x4
                              0 190 0x4>;
+               status = "disabled";
        };
 
        mmcif: mmcif@e6bd0000 {
index e273fa993b8c82aa696273be311a145d38d21e5d..6d09b8d42fdd123da5e3b5e4b315983c42f9c6eb 100644 (file)
                                                        reg = <0x58>;
                                                };
 
-                                               cfg_s2f_usr0_clk: cfg_s2f_usr0_clk {
+                                               cfg_h2f_usr0_clk: cfg_h2f_usr0_clk {
                                                        #clock-cells = <0>;
                                                        compatible = "altr,socfpga-perip-clk";
                                                        clocks = <&main_pll>;
                                                        reg = <0x98>;
                                                };
 
-                                               s2f_usr1_clk: s2f_usr1_clk {
+                                               h2f_usr1_clk: h2f_usr1_clk {
                                                        #clock-cells = <0>;
                                                        compatible = "altr,socfpga-perip-clk";
                                                        clocks = <&periph_pll>;
                                                        reg = <0xD0>;
                                                };
 
-                                               s2f_usr2_clk: s2f_usr2_clk {
+                                               h2f_usr2_clk: h2f_usr2_clk {
                                                        #clock-cells = <0>;
                                                        compatible = "altr,socfpga-perip-clk";
                                                        clocks = <&sdram_pll>;
                                                };
                                        };
 
-                               mpu_periph_clk: mpu_periph_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mpuclk>;
-                                       fixed-divider = <4>;
+                                       mpu_periph_clk: mpu_periph_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mpuclk>;
+                                               fixed-divider = <4>;
                                        };
 
-                               mpu_l2_ram_clk: mpu_l2_ram_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mpuclk>;
-                                       fixed-divider = <2>;
+                                       mpu_l2_ram_clk: mpu_l2_ram_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mpuclk>;
+                                               fixed-divider = <2>;
                                        };
 
-                               l4_main_clk: l4_main_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mainclk>;
-                                       clk-gate = <0x60 0>;
+                                       l4_main_clk: l4_main_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
+                                               clk-gate = <0x60 0>;
                                        };
 
-                               l3_main_clk: l3_main_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mainclk>;
+                                       l3_main_clk: l3_main_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
                                        };
 
-                               l3_mp_clk: l3_mp_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mainclk>;
-                                       div-reg = <0x64 0 2>;
-                                       clk-gate = <0x60 1>;
+                                       l3_mp_clk: l3_mp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
+                                               div-reg = <0x64 0 2>;
+                                               clk-gate = <0x60 1>;
                                        };
 
-                               l3_sp_clk: l3_sp_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mainclk>;
-                                       div-reg = <0x64 2 2>;
-                               };
+                                       l3_sp_clk: l3_sp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>;
+                                               div-reg = <0x64 2 2>;
+                                       };
 
-                               l4_mp_clk: l4_mp_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mainclk>, <&per_base_clk>;
-                                       div-reg = <0x64 4 3>;
-                                       clk-gate = <0x60 2>;
+                                       l4_mp_clk: l4_mp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>, <&per_base_clk>;
+                                               div-reg = <0x64 4 3>;
+                                               clk-gate = <0x60 2>;
                                        };
 
-                               l4_sp_clk: l4_sp_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&mainclk>, <&per_base_clk>;
-                                       div-reg = <0x64 7 3>;
-                                       clk-gate = <0x60 3>;
+                                       l4_sp_clk: l4_sp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&mainclk>, <&per_base_clk>;
+                                               div-reg = <0x64 7 3>;
+                                               clk-gate = <0x60 3>;
                                        };
 
-                               dbg_at_clk: dbg_at_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&dbg_base_clk>;
-                                       div-reg = <0x68 0 2>;
-                                       clk-gate = <0x60 4>;
+                                       dbg_at_clk: dbg_at_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               div-reg = <0x68 0 2>;
+                                               clk-gate = <0x60 4>;
                                        };
 
-                               dbg_clk: dbg_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&dbg_base_clk>;
-                                       div-reg = <0x68 2 2>;
-                                       clk-gate = <0x60 5>;
+                                       dbg_clk: dbg_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               div-reg = <0x68 2 2>;
+                                               clk-gate = <0x60 5>;
                                        };
 
-                               dbg_trace_clk: dbg_trace_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&dbg_base_clk>;
-                                       div-reg = <0x6C 0 3>;
-                                       clk-gate = <0x60 6>;
+                                       dbg_trace_clk: dbg_trace_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               div-reg = <0x6C 0 3>;
+                                               clk-gate = <0x60 6>;
                                        };
 
-                               dbg_timer_clk: dbg_timer_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&dbg_base_clk>;
-                                       clk-gate = <0x60 7>;
+                                       dbg_timer_clk: dbg_timer_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&dbg_base_clk>;
+                                               clk-gate = <0x60 7>;
                                        };
 
-                               cfg_clk: cfg_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&cfg_s2f_usr0_clk>;
-                                       clk-gate = <0x60 8>;
+                                       cfg_clk: cfg_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&cfg_h2f_usr0_clk>;
+                                               clk-gate = <0x60 8>;
                                        };
 
-                               s2f_user0_clk: s2f_user0_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&cfg_s2f_usr0_clk>;
-                                       clk-gate = <0x60 9>;
+                                       h2f_user0_clk: h2f_user0_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&cfg_h2f_usr0_clk>;
+                                               clk-gate = <0x60 9>;
                                        };
 
-                               emac_0_clk: emac_0_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&emac0_clk>;
-                                       clk-gate = <0xa0 0>;
+                                       emac_0_clk: emac_0_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&emac0_clk>;
+                                               clk-gate = <0xa0 0>;
                                        };
 
-                               emac_1_clk: emac_1_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&emac1_clk>;
-                                       clk-gate = <0xa0 1>;
+                                       emac_1_clk: emac_1_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&emac1_clk>;
+                                               clk-gate = <0xa0 1>;
                                        };
 
-                               usb_mp_clk: usb_mp_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&per_base_clk>;
-                                       clk-gate = <0xa0 2>;
-                                       div-reg = <0xa4 0 3>;
+                                       usb_mp_clk: usb_mp_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 2>;
+                                               div-reg = <0xa4 0 3>;
                                        };
 
-                               spi_m_clk: spi_m_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&per_base_clk>;
-                                       clk-gate = <0xa0 3>;
-                                       div-reg = <0xa4 3 3>;
+                                       spi_m_clk: spi_m_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 3>;
+                                               div-reg = <0xa4 3 3>;
                                        };
 
-                               can0_clk: can0_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&per_base_clk>;
-                                       clk-gate = <0xa0 4>;
-                                       div-reg = <0xa4 6 3>;
+                                       can0_clk: can0_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 4>;
+                                               div-reg = <0xa4 6 3>;
                                        };
 
-                               can1_clk: can1_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&per_base_clk>;
-                                       clk-gate = <0xa0 5>;
-                                       div-reg = <0xa4 9 3>;
+                                       can1_clk: can1_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 5>;
+                                               div-reg = <0xa4 9 3>;
                                        };
 
-                               gpio_db_clk: gpio_db_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&per_base_clk>;
-                                       clk-gate = <0xa0 6>;
-                                       div-reg = <0xa8 0 24>;
+                                       gpio_db_clk: gpio_db_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&per_base_clk>;
+                                               clk-gate = <0xa0 6>;
+                                               div-reg = <0xa8 0 24>;
                                        };
 
-                               s2f_user1_clk: s2f_user1_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&s2f_usr1_clk>;
-                                       clk-gate = <0xa0 7>;
+                                       h2f_user1_clk: h2f_user1_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&h2f_usr1_clk>;
+                                               clk-gate = <0xa0 7>;
                                        };
 
-                               sdmmc_clk: sdmmc_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
-                                       clk-gate = <0xa0 8>;
+                                       sdmmc_clk: sdmmc_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
+                                               clk-gate = <0xa0 8>;
                                        };
 
-                               nand_x_clk: nand_x_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
-                                       clk-gate = <0xa0 9>;
+                                       nand_x_clk: nand_x_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
+                                               clk-gate = <0xa0 9>;
                                        };
 
-                               nand_clk: nand_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
-                                       clk-gate = <0xa0 10>;
-                                       fixed-divider = <4>;
+                                       nand_clk: nand_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_nand_sdmmc_clk>, <&per_nand_mmc_clk>;
+                                               clk-gate = <0xa0 10>;
+                                               fixed-divider = <4>;
                                        };
 
-                               qspi_clk: qspi_clk {
-                                       #clock-cells = <0>;
-                                       compatible = "altr,socfpga-gate-clk";
-                                       clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
-                                       clk-gate = <0xa0 11>;
+                                       qspi_clk: qspi_clk {
+                                               #clock-cells = <0>;
+                                               compatible = "altr,socfpga-gate-clk";
+                                               clocks = <&f2s_periph_ref_clk>, <&main_qspi_clk>, <&per_qspi_clk>;
+                                               clk-gate = <0xa0 11>;
                                        };
                                };
                        };
                        compatible = "arm,cortex-a9-twd-timer";
                        reg = <0xfffec600 0x100>;
                        interrupts = <1 13 0xf04>;
+                       clocks = <&mpu_periph_clk>;
                };
 
                timer0: timer0@ffc08000 {
                };
 
                rstmgr@ffd05000 {
-                               compatible = "altr,rst-mgr";
-                               reg = <0xffd05000 0x1000>;
-                       };
+                       compatible = "altr,rst-mgr";
+                       reg = <0xffd05000 0x1000>;
+               };
 
                sysmgr@ffd08000 {
                                compatible = "altr,sys-mgr";
diff --git a/arch/arm/boot/dts/socfpga_arria5.dtsi b/arch/arm/boot/dts/socfpga_arria5.dtsi
new file mode 100644 (file)
index 0000000..a85b404
--- /dev/null
@@ -0,0 +1,58 @@
+/*
+ *  Copyright (C) 2013 Altera Corporation <www.altera.com>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/dts-v1/;
+/include/ "socfpga.dtsi"
+
+/ {
+       soc {
+               clkmgr@ffd04000 {
+                       clocks {
+                               osc1 {
+                                       clock-frequency = <25000000>;
+                               };
+                       };
+               };
+
+               serial0@ffc02000 {
+                       clock-frequency = <100000000>;
+               };
+
+               serial1@ffc03000 {
+                       clock-frequency = <100000000>;
+               };
+
+               sysmgr@ffd08000 {
+                       cpu1-start-addr = <0xffd080c4>;
+               };
+
+               timer0@ffc08000 {
+                       clock-frequency = <100000000>;
+               };
+
+               timer1@ffc09000 {
+                       clock-frequency = <100000000>;
+               };
+
+               timer2@ffd00000 {
+                       clock-frequency = <25000000>;
+               };
+
+               timer3@ffd01000 {
+                       clock-frequency = <25000000>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/socfpga_arria5_socdk.dts b/arch/arm/boot/dts/socfpga_arria5_socdk.dts
new file mode 100644 (file)
index 0000000..5beffb2
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *  Copyright (C) 2013 Altera Corporation <www.altera.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/include/ "socfpga_arria5.dtsi"
+
+/ {
+       model = "Altera SOCFPGA Arria V SoC Development Kit";
+       compatible = "altr,socfpga-arria5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+
+       aliases {
+               /* this allow the ethaddr uboot environmnet variable contents
+               * to be added to the gmac1 device tree blob.
+               */
+               ethernet0 = &gmac1;
+       };
+};
diff --git a/arch/arm/boot/dts/socfpga_cyclone5.dts b/arch/arm/boot/dts/socfpga_cyclone5.dts
deleted file mode 100644 (file)
index 973999d..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- *  Copyright (C) 2012 Altera Corporation <www.altera.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-/dts-v1/;
-/include/ "socfpga.dtsi"
-
-/ {
-       model = "Altera SOCFPGA Cyclone V";
-       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
-
-       chosen {
-               bootargs = "console=ttyS0,57600";
-       };
-
-       memory {
-               name = "memory";
-               device_type = "memory";
-               reg = <0x0 0x40000000>; /* 1GB */
-       };
-
-       aliases {
-               /* this allow the ethaddr uboot environmnet variable contents
-                * to be added to the gmac1 device tree blob.
-                */
-               ethernet0 = &gmac1;
-       };
-
-       soc {
-               clkmgr@ffd04000 {
-                       clocks {
-                               osc1 {
-                                       clock-frequency = <25000000>;
-                               };
-                       };
-               };
-
-               ethernet@ff702000 {
-                       phy-mode = "rgmii";
-                       phy-addr = <0xffffffff>; /* probe for phy addr */
-                       status = "okay";
-               };
-
-               timer0@ffc08000 {
-                       clock-frequency = <100000000>;
-               };
-
-               timer1@ffc09000 {
-                       clock-frequency = <100000000>;
-               };
-
-               timer2@ffd00000 {
-                       clock-frequency = <25000000>;
-               };
-
-               timer3@ffd01000 {
-                       clock-frequency = <25000000>;
-               };
-
-               serial0@ffc02000 {
-                       clock-frequency = <100000000>;
-               };
-
-               serial1@ffc03000 {
-                       clock-frequency = <100000000>;
-               };
-
-               sysmgr@ffd08000 {
-                       cpu1-start-addr = <0xffd080c4>;
-               };
-       };
-};
diff --git a/arch/arm/boot/dts/socfpga_cyclone5.dtsi b/arch/arm/boot/dts/socfpga_cyclone5.dtsi
new file mode 100644 (file)
index 0000000..a8716f6
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ *  Copyright (C) 2012 Altera Corporation <www.altera.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/dts-v1/;
+/include/ "socfpga.dtsi"
+
+/ {
+       soc {
+               clkmgr@ffd04000 {
+                       clocks {
+                               osc1 {
+                                       clock-frequency = <25000000>;
+                               };
+                       };
+               };
+
+               ethernet@ff702000 {
+                       phy-mode = "rgmii";
+                       phy-addr = <0xffffffff>; /* probe for phy addr */
+                       status = "okay";
+               };
+
+               timer0@ffc08000 {
+                       clock-frequency = <100000000>;
+               };
+
+               timer1@ffc09000 {
+                       clock-frequency = <100000000>;
+               };
+
+               timer2@ffd00000 {
+                       clock-frequency = <25000000>;
+               };
+
+               timer3@ffd01000 {
+                       clock-frequency = <25000000>;
+               };
+
+               serial0@ffc02000 {
+                       clock-frequency = <100000000>;
+               };
+
+               serial1@ffc03000 {
+                       clock-frequency = <100000000>;
+               };
+
+               sysmgr@ffd08000 {
+                       cpu1-start-addr = <0xffd080c4>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/socfpga_cyclone5_socdk.dts b/arch/arm/boot/dts/socfpga_cyclone5_socdk.dts
new file mode 100644 (file)
index 0000000..2ee52ab
--- /dev/null
@@ -0,0 +1,40 @@
+/*
+ *  Copyright (C) 2012 Altera Corporation <www.altera.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/include/ "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "Altera SOCFPGA Cyclone V SoC Development Kit";
+       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+
+       aliases {
+               /* this allow the ethaddr uboot environmnet variable contents
+                * to be added to the gmac1 device tree blob.
+                */
+               ethernet0 = &gmac1;
+       };
+};
diff --git a/arch/arm/boot/dts/socfpga_cyclone5_sockit.dts b/arch/arm/boot/dts/socfpga_cyclone5_sockit.dts
new file mode 100644 (file)
index 0000000..50b99a2
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ *  Copyright (C) 2013 Steffen Trumtrar <s.trumtrar@pengutronix.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/include/ "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "Terasic SoCkit";
+       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+};
+
+&gmac1 {
+       status = "okay";
+};
index 1c1091eedadec293f619d5843f46506e31f14ffb..7da99fe497e13d59215b2bdd1b16a41fcd120c70 100644 (file)
@@ -10,6 +10,7 @@
  */
 
 #include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/mfd/dbx500-prcmu.h>
 #include "skeleton.dtsi"
 
 / {
                        interrupts = <0 7 IRQ_TYPE_LEVEL_HIGH>;
                };
 
+
+               clocks {
+                       compatible = "stericsson,u8500-clks";
+
+                       prcmu_clk: prcmu-clock {
+                               #clock-cells = <1>;
+                       };
+
+                       prcc_pclk: prcc-periph-clock {
+                               #clock-cells = <2>;
+                       };
+
+                       prcc_kclk: prcc-kernel-clock {
+                               #clock-cells = <2>;
+                       };
+
+                       rtc_clk: rtc32k-clock {
+                               #clock-cells = <0>;
+                       };
+
+                       smp_twd_clk: smp-twd-clock {
+                               #clock-cells = <0>;
+                       };
+               };
+
+               mtu@a03c6000 {
+                       /* Nomadik System Timer */
+                       compatible = "st,nomadik-mtu";
+                       reg = <0xa03c6000 0x1000>;
+                       interrupts = <0 4 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&prcmu_clk PRCMU_TIMCLK>, <&prcc_pclk 6 6>;
+                       clock-names = "timclk", "apb_pclk";
+               };
+
                timer@a0410600 {
                        compatible = "arm,cortex-a9-twd-timer";
                        reg = <0xa0410600 0x20>;
                        interrupts = <1 13 0x304>; /* IRQ level high per-CPU */
+
+                       clocks = <&smp_twd_clk>;
                };
 
                rtc@80154000 {
                        compatible = "arm,rtc-pl031", "arm,primecell";
                        reg = <0x80154000 0x1000>;
                        interrupts = <0 18 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&rtc_clk>;
+                       clock-names = "apb_pclk";
                };
 
                gpio0: gpio@8012e000 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <0>;
+
+                       clocks = <&prcc_pclk 1 9>;
                };
 
                gpio1: gpio@8012e080 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <1>;
+
+                       clocks = <&prcc_pclk 1 9>;
                };
 
                gpio2: gpio@8000e000 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <2>;
+
+                       clocks = <&prcc_pclk 3 8>;
                };
 
                gpio3: gpio@8000e080 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <3>;
+
+                       clocks = <&prcc_pclk 3 8>;
                };
 
                gpio4: gpio@8000e100 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <4>;
+
+                       clocks = <&prcc_pclk 3 8>;
                };
 
                gpio5: gpio@8000e180 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <5>;
+
+                       clocks = <&prcc_pclk 3 8>;
                };
 
                gpio6: gpio@8011e000 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <6>;
+
+                       clocks = <&prcc_pclk 2 11>;
                };
 
                gpio7: gpio@8011e080 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <7>;
+
+                       clocks = <&prcc_pclk 2 11>;
                };
 
                gpio8: gpio@a03fe000 {
                        gpio-controller;
                        #gpio-cells = <2>;
                        gpio-bank = <8>;
+
+                       clocks = <&prcc_pclk 5 1>;
                };
 
                pinctrl {
                };
 
                usb_per5@a03e0000 {
-                       compatible = "stericsson,db8500-musb",
-                               "mentor,musb";
+                       compatible = "stericsson,db8500-musb";
                        reg = <0xa03e0000 0x10000>;
                        interrupts = <0 23 IRQ_TYPE_LEVEL_HIGH>;
                        interrupt-names = "mc";
                                    "iep_6_14", "oep_6_14",
                                    "iep_7_15", "oep_7_15",
                                    "iep_8",    "oep_8";
+
+                       clocks = <&prcc_pclk 5 0>;
                };
 
                dma: dma-controller@801C0000 {
 
                        #dma-cells = <3>;
                        memcpy-channels = <56 57 58 59 60>;
+
+                       clocks = <&prcmu_clk PRCMU_DMACLK>;
                };
 
                prcmu: prcmu@80157000 {
                                reg = <0x80157450 0xC>;
                        };
 
+                       cpufreq {
+                               compatible = "stericsson,cpufreq-ux500";
+                               clocks = <&prcmu_clk PRCMU_ARMSS>;
+                               clock-names = "armss";
+                               status = "disabled";
+                       };
+
                        thermal@801573c0 {
                                compatible = "stericsson,db8500-thermal";
                                reg = <0x801573c0 0x40>;
                        compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
                        reg = <0x80004000 0x1000>;
                        interrupts = <0 21 IRQ_TYPE_LEVEL_HIGH>;
-                       arm,primecell-periphid = <0x180024>;
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        v-i2c-supply = <&db8500_vape_reg>;
 
                        clock-frequency = <400000>;
+                       clocks = <&prcc_kclk 3 3>, <&prcc_pclk 3 3>;
+                       clock-names = "i2cclk", "apb_pclk";
                };
 
                i2c@80122000 {
                        compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
                        reg = <0x80122000 0x1000>;
                        interrupts = <0 22 IRQ_TYPE_LEVEL_HIGH>;
-                       arm,primecell-periphid = <0x180024>;
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        v-i2c-supply = <&db8500_vape_reg>;
 
                        clock-frequency = <400000>;
+
+                       clocks = <&prcc_kclk 1 2>, <&prcc_pclk 1 2>;
+                       clock-names = "i2cclk", "apb_pclk";
                };
 
                i2c@80128000 {
                        compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
                        reg = <0x80128000 0x1000>;
                        interrupts = <0 55 IRQ_TYPE_LEVEL_HIGH>;
-                       arm,primecell-periphid = <0x180024>;
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        v-i2c-supply = <&db8500_vape_reg>;
 
                        clock-frequency = <400000>;
+
+                       clocks = <&prcc_kclk 1 6>, <&prcc_pclk 1 6>;
+                       clock-names = "i2cclk", "apb_pclk";
                };
 
                i2c@80110000 {
                        compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
                        reg = <0x80110000 0x1000>;
                        interrupts = <0 12 IRQ_TYPE_LEVEL_HIGH>;
-                       arm,primecell-periphid = <0x180024>;
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        v-i2c-supply = <&db8500_vape_reg>;
 
                        clock-frequency = <400000>;
+
+                       clocks = <&prcc_kclk 2 0>, <&prcc_pclk 2 0>;
+                       clock-names = "i2cclk", "apb_pclk";
                };
 
                i2c@8012a000 {
                        compatible = "stericsson,db8500-i2c", "st,nomadik-i2c", "arm,primecell";
                        reg = <0x8012a000 0x1000>;
                        interrupts = <0 51 IRQ_TYPE_LEVEL_HIGH>;
-                       arm,primecell-periphid = <0x180024>;
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                        v-i2c-supply = <&db8500_vape_reg>;
 
                        clock-frequency = <400000>;
+
+                       clocks = <&prcc_kclk 1 9>, <&prcc_pclk 1 10>;
+                       clock-names = "i2cclk", "apb_pclk";
                };
 
                ssp@80002000 {
                        interrupts = <0 14 IRQ_TYPE_LEVEL_HIGH>;
                        #address-cells = <1>;
                        #size-cells = <0>;
-                       status = "disabled";
+                       clocks = <&prcc_kclk 3 1>, <&prcc_pclk 3 1>;
+                       clock-names = "ssp0clk", "apb_pclk";
+                       dmas = <&dma 8 0 0x2>, /* Logical - DevToMem */
+                              <&dma 8 0 0x0>; /* Logical - MemToDev */
+                       dma-names = "rx", "tx";
+               };
+
+               ssp@80003000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x80003000 0x1000>;
+                       interrupts = <0 52 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       clocks = <&prcc_kclk 3 2>, <&prcc_pclk 3 2>;
+                       clock-names = "ssp1clk", "apb_pclk";
+                       dmas = <&dma 9 0 0x2>, /* Logical - DevToMem */
+                              <&dma 9 0 0x0>; /* Logical - MemToDev */
+                       dma-names = "rx", "tx";
+               };
+
+               spi@8011a000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x8011a000 0x1000>;
+                       interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       /* Same clock wired to kernel and pclk */
+                       clocks = <&prcc_pclk 2 8>, <&prcc_pclk 2 8>;
+                       clock-names = "spi0clk", "apb_pclk";
+                       dmas = <&dma 0 0 0x2>, /* Logical - DevToMem */
+                              <&dma 0 0 0x0>; /* Logical - MemToDev */
+                       dma-names = "rx", "tx";
+               };
+
+               spi@80112000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x80112000 0x1000>;
+                       interrupts = <0 96 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       /* Same clock wired to kernel and pclk */
+                       clocks = <&prcc_pclk 2 2>, <&prcc_pclk 2 2>;
+                       clock-names = "spi1clk", "apb_pclk";
+                       dmas = <&dma 35 0 0x2>, /* Logical - DevToMem */
+                              <&dma 35 0 0x0>; /* Logical - MemToDev */
+                       dma-names = "rx", "tx";
+               };
+
+               spi@80111000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x80111000 0x1000>;
+                       interrupts = <0 6 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       /* Same clock wired to kernel and pclk */
+                       clocks = <&prcc_pclk 2 1>, <&prcc_pclk 2 1>;
+                       clock-names = "spi2clk", "apb_pclk";
+                       dmas = <&dma 33 0 0x2>, /* Logical - DevToMem */
+                              <&dma 33 0 0x0>; /* Logical - MemToDev */
+                       dma-names = "rx", "tx";
+               };
+
+               spi@80129000 {
+                       compatible = "arm,pl022", "arm,primecell";
+                       reg = <0x80129000 0x1000>;
+                       interrupts = <0 49 IRQ_TYPE_LEVEL_HIGH>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       /* Same clock wired to kernel and pclk */
+                       clocks = <&prcc_pclk 1 7>, <&prcc_pclk 1 7>;
+                       clock-names = "spi3clk", "apb_pclk";
+                       dmas = <&dma 40 0 0x2>, /* Logical - DevToMem */
+                              <&dma 40 0 0x0>; /* Logical - MemToDev */
+                       dma-names = "rx", "tx";
                };
 
                uart@80120000 {
                               <&dma 13 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 1 0>, <&prcc_pclk 1 0>;
+                       clock-names = "uart", "apb_pclk";
+
                        status = "disabled";
                };
 
                               <&dma 12 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 1 1>, <&prcc_pclk 1 1>;
+                       clock-names = "uart", "apb_pclk";
+
                        status = "disabled";
                };
 
                               <&dma 11 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 3 6>, <&prcc_pclk 3 6>;
+                       clock-names = "uart", "apb_pclk";
+
                        status = "disabled";
                };
 
                               <&dma 29 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 1 5>, <&prcc_pclk 1 5>;
+                       clock-names = "sdi", "apb_pclk";
+
                        status = "disabled";
                };
 
                               <&dma 32 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 2 4>, <&prcc_pclk 2 6>;
+                       clock-names = "sdi", "apb_pclk";
+
                        status = "disabled";
                };
 
                               <&dma 28 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 3 4>, <&prcc_pclk 3 4>;
+                       clock-names = "sdi", "apb_pclk";
+
                        status = "disabled";
                };
 
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80119000 0x1000>;
                        interrupts = <0 59 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&prcc_kclk 2 5>, <&prcc_pclk 2 7>;
+                       clock-names = "sdi", "apb_pclk";
+
                        status = "disabled";
                };
 
                               <&dma 42 0 0x0>; /* Logical - MemToDev */
                        dma-names = "rx", "tx";
 
+                       clocks = <&prcc_kclk 2 2>, <&prcc_pclk 2 4>;
+                       clock-names = "sdi", "apb_pclk";
+
                        status = "disabled";
                };
 
                        compatible = "arm,pl18x", "arm,primecell";
                        reg = <0x80008000 0x1000>;
                        interrupts = <0 100 IRQ_TYPE_LEVEL_HIGH>;
+
+                       clocks = <&prcc_kclk 3 7>, <&prcc_pclk 3 7>;
+                       clock-names = "sdi", "apb_pclk";
+
                        status = "disabled";
                };
 
                        reg = <0x80123000 0x1000>;
                        interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>;
                        v-ape-supply = <&db8500_vape_reg>;
+
+                       clocks = <&prcc_kclk 1 3>, <&prcc_pclk 1 3>;
+                       clock-names = "msp", "apb_pclk";
+
                        status = "disabled";
                };
 
                        reg = <0x80124000 0x1000>;
                        interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
                        v-ape-supply = <&db8500_vape_reg>;
+
+                       clocks = <&prcc_kclk 1 4>, <&prcc_pclk 1 4>;
+                       clock-names = "msp", "apb_pclk";
+
                        status = "disabled";
                };
 
                        reg = <0x80117000 0x1000>;
                        interrupts = <0 98 IRQ_TYPE_LEVEL_HIGH>;
                        v-ape-supply = <&db8500_vape_reg>;
+
+                       clocks = <&prcc_kclk 2 3>, <&prcc_pclk 2 5>;
+                       clock-names = "msp", "apb_pclk";
+
                        status = "disabled";
                };
 
                        reg = <0x80125000 0x1000>;
                        interrupts = <0 62 IRQ_TYPE_LEVEL_HIGH>;
                        v-ape-supply = <&db8500_vape_reg>;
+
+                       clocks = <&prcc_kclk 1 10>, <&prcc_pclk 1 11>;
+                       clock-names = "msp", "apb_pclk";
+
                        status = "disabled";
                };
 
                cpufreq-cooling {
                        compatible = "stericsson,db8500-cpufreq-cooling";
                        status = "disabled";
-                };
+               };
 
                vmmci: regulator-gpio {
                        compatible = "regulator-gpio";
                        interrupts = <0 15 IRQ_TYPE_LEVEL_HIGH>;
 
                        v-ape-supply = <&db8500_vape_reg>;
+                       clocks = <&prcc_pclk 6 1>;
                };
 
                hash@a03c2000 {
                        reg = <0xa03c2000 0x1000>;
 
                        v-ape-supply = <&db8500_vape_reg>;
+                       clocks = <&prcc_pclk 6 2>;
                };
        };
 };
diff --git a/arch/arm/boot/dts/ste-href-stuib.dtsi b/arch/arm/boot/dts/ste-href-stuib.dtsi
new file mode 100644 (file)
index 0000000..76704ec
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       soc {
+               i2c@80004000 {
+                       stmpe1601: stmpe1601@40 {
+                               compatible = "st,stmpe1601";
+                               reg = <0x40>;
+                               interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
+                               interrupt-parent = <&gpio6>;
+                               interrupt-controller;
+
+                               wakeup-source;
+                               st,autosleep-timeout = <1024>;
+
+                               stmpe_keypad {
+                                       compatible = "st,stmpe-keypad";
+
+                                       debounce-interval = <64>;
+                                       st,scan-count = <8>;
+                                       st,no-autorepeat;
+
+                                       linux,keymap = <0x205006b
+                                                       0x4010074
+                                                       0x3050072
+                                                       0x1030004
+                                                       0x502006a
+                                                       0x500000a
+                                                       0x5008b
+                                                       0x706001c
+                                                       0x405000b
+                                                       0x6070003
+                                                       0x3040067
+                                                       0x303006c
+                                                       0x60400e7
+                                                       0x602009e
+                                                       0x4020073
+                                                       0x5050002
+                                                       0x4030069
+                                                       0x3020008>;
+                               };
+                       };
+               };
+
+               i2c@80110000 {
+                       bu21013_tp@5c {
+                               compatible = "rohm,bu21013_tp";
+                               reg = <0x5c>;
+                               avdd-supply = <&ab8500_ldo_aux1_reg>;
+
+                               rohm,touch-max-x = <384>;
+                               rohm,touch-max-y = <704>;
+                               rohm,flip-y;
+                       };
+
+                       bu21013_tp@5d {
+                               compatible = "rohm,bu21013_tp";
+                               reg = <0x5d>;
+                               avdd-supply = <&ab8500_ldo_aux1_reg>;
+
+                               rohm,touch-max-x = <384>;
+                               rohm,touch-max-y = <704>;
+                               rohm,flip-y;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/ste-href-tvk1281618.dtsi b/arch/arm/boot/dts/ste-href-tvk1281618.dtsi
new file mode 100644 (file)
index 0000000..76d3ef1
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * Device Tree for the TVK1281618 UIB
+ */
+
+#include <dt-bindings/interrupt-controller/irq.h>
+
+/ {
+       soc {
+               /* Add Synaptics touch screen, TC35892 keypad etc here */
+               i2c@80004000 {
+                       tc3589x@44 {
+                               compatible = "tc3589x";
+                               reg = <0x44>;
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <26 IRQ_TYPE_EDGE_RISING>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               tc3589x_gpio {
+                                       compatible = "tc3589x-gpio";
+                                       interrupts = <0 IRQ_TYPE_EDGE_RISING>;
+
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                               };
+                       };
+               };
+       };
+};
index 370e03f5e7b2c8bcd416dd871b89c44e5e9ddfb8..aa3f02060fdd43114570eceedbf1ef54dc49a01f 100644 (file)
                        status = "okay";
                };
 
-               i2c@80004000 {
-                       tc3589x@42 {
-                               compatible = "tc3589x";
-                               reg = <0x42>;
-                               interrupt-parent = <&gpio6>;
-                               interrupts = <25 IRQ_TYPE_EDGE_RISING>;
-
-                               interrupt-controller;
-                               #interrupt-cells = <2>;
-
-                               tc3589x_gpio: tc3589x_gpio {
-                                       compatible = "tc3589x-gpio";
-                                       interrupts = <0 IRQ_TYPE_EDGE_RISING>;
-
-                                       interrupt-controller;
-                                       #interrupt-cells = <2>;
-                                       gpio-controller;
-                                       #gpio-cells = <2>;
-                               };
-                       };
-               };
-
                i2c@80128000 {
                        lp5521@33 {
                                compatible = "national,lp5521";
@@ -72,6 +50,7 @@
                                chan0 {
                                        led-cur = /bits/ 8 <0x2f>;
                                        max-cur = /bits/ 8 <0x5f>;
+                                       linux,default-trigger = "heartbeat";
                                };
                                chan1 {
                                        led-cur = /bits/ 8 <0x2f>;
                        };
                        bh1780@29 {
                                compatible = "rohm,bh1780gli";
-                               reg = <0x33>;
+                               reg = <0x29>;
                        };
                };
 
                };
 
                prcmu@80157000 {
-                       db8500-prcmu-regulators {
-                               db8500_vape_reg: db8500_vape {
-                                       regulator-name = "db8500-vape";
-                               };
-
-                               db8500_varm_reg: db8500_varm {
-                                       regulator-name = "db8500-varm";
-                               };
-
-                               db8500_vmodem_reg: db8500_vmodem {
-                                       regulator-name = "db8500-vmodem";
-                               };
-
-                               db8500_vpll_reg: db8500_vpll {
-                                       regulator-name = "db8500-vpll";
-                               };
-
-                               db8500_vsmps1_reg: db8500_vsmps1 {
-                                       regulator-name = "db8500-vsmps1";
-                               };
-
-                               db8500_vsmps2_reg: db8500_vsmps2 {
-                                       regulator-name = "db8500-vsmps2";
-                               };
-
-                               db8500_vsmps3_reg: db8500_vsmps3 {
-                                       regulator-name = "db8500-vsmps3";
-                               };
-
-                               db8500_vrf1_reg: db8500_vrf1 {
-                                       regulator-name = "db8500-vrf1";
-                               };
-
-                               db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
-                                       regulator-name = "db8500-sva-mmdsp";
-                               };
-
-                               db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
-                                       regulator-name = "db8500-sva-mmdsp-ret";
-                               };
-
-                               db8500_sva_pipe_reg: db8500_sva_pipe {
-                                       regulator-name = "db8500_sva_pipe";
-                               };
-
-                               db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
-                                       regulator-name = "db8500_sia_mmdsp";
-                               };
-
-                               db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
-                                       regulator-name = "db8500-sia-mmdsp-ret";
-                               };
-
-                               db8500_sia_pipe_reg: db8500_sia_pipe {
-                                       regulator-name = "db8500-sia-pipe";
-                               };
-
-                               db8500_sga_reg: db8500_sga {
-                                       regulator-name = "db8500-sga";
-                               };
-
-                               db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
-                                       regulator-name = "db8500-b2r2-mcde";
-                               };
-
-                               db8500_esram12_reg: db8500_esram12 {
-                                       regulator-name = "db8500-esram12";
-                               };
-
-                               db8500_esram12_ret_reg: db8500_esram12_ret {
-                                       regulator-name = "db8500-esram12-ret";
-                               };
-
-                               db8500_esram34_reg: db8500_esram34 {
-                                       regulator-name = "db8500-esram34";
+                       ab8500 {
+                               ab8500-gpio {
+                                       compatible = "stericsson,ab8500-gpio";
                                };
 
-                               db8500_esram34_ret_reg: db8500_esram34_ret {
-                                       regulator-name = "db8500-esram34-ret";
-                               };
-                       };
-
-                       ab8500 {
                                ab8500-regulators {
                                        ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
                                                regulator-name = "V-DISPLAY";
diff --git a/arch/arm/boot/dts/ste-hrefprev60-stuib.dts b/arch/arm/boot/dts/ste-hrefprev60-stuib.dts
new file mode 100644 (file)
index 0000000..2b1cb5b
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+#include "ste-hrefprev60.dtsi"
+#include "ste-href-stuib.dtsi"
+
+/ {
+       model = "ST-Ericsson HREF (pre-v60) and ST UIB";
+       compatible = "st-ericsson,mop500", "st-ericsson,u8500";
+
+       soc {
+               /* Reset line for the BU21013 touchscreen */
+               i2c@80110000 {
+                       /* Only one of these will be used */
+                       bu21013_tp@5c {
+                               touch-gpio = <&gpio2 12 0x4>;
+                               reset-gpio = <&tc3589x_gpio 13 0x4>;
+                       };
+                       bu21013_tp@5d {
+                               touch-gpio = <&gpio2 12 0x4>;
+                               reset-gpio = <&tc3589x_gpio 13 0x4>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/ste-hrefprev60-tvk.dts b/arch/arm/boot/dts/ste-hrefprev60-tvk.dts
new file mode 100644 (file)
index 0000000..59523f8
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+#include "ste-hrefprev60.dtsi"
+#include "ste-href-tvk1281618.dtsi"
+
+/ {
+       model = "ST-Ericsson HREF (pre-v60) and TVK1281618 UIB";
+       compatible = "st-ericsson,mop500", "st-ericsson,u8500";
+};
diff --git a/arch/arm/boot/dts/ste-hrefprev60.dts b/arch/arm/boot/dts/ste-hrefprev60.dts
deleted file mode 100644 (file)
index d8d3b99..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright 2012 ST-Ericsson AB
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-/dts-v1/;
-#include "ste-dbx5x0.dtsi"
-#include "ste-href.dtsi"
-#include "ste-stuib.dtsi"
-
-/ {
-       model = "ST-Ericsson HREF (pre-v60) platform with Device Tree";
-       compatible = "st-ericsson,mop500", "st-ericsson,u8500";
-
-       gpio_keys {
-               button@1 {
-                       gpios = <&tc3589x_gpio 7 0x4>;
-               };
-       };
-
-       soc {
-               prcmu@80157000 {
-                       ab8500@5 {
-                               ab8500-gpio {
-                                       compatible = "stericsson,ab8500-gpio";
-                               };
-                       };
-               };
-
-               i2c@80004000 {
-                       tps61052@33 {
-                               compatible = "tps61052";
-                               reg = <0x33>;
-                       };
-               };
-
-               i2c@80110000 {
-                       bu21013_tp@5c {
-                               reset-gpio = <&tc3589x_gpio 13 0x4>;
-                       };
-               };
-
-               vmmci: regulator-gpio {
-                       gpios = <&tc3589x_gpio 18 0x4>;
-                       enable-gpio = <&tc3589x_gpio 17 0x4>;
-
-                       status = "okay";
-               };
-       };
-};
diff --git a/arch/arm/boot/dts/ste-hrefprev60.dtsi b/arch/arm/boot/dts/ste-hrefprev60.dtsi
new file mode 100644 (file)
index 0000000..b2cd7bc
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * Device Tree for the HREF+ prior to the v60 variant.
+ */
+
+#include "ste-dbx5x0.dtsi"
+#include "ste-href.dtsi"
+
+/ {
+       gpio_keys {
+               button@1 {
+                       gpios = <&tc3589x_gpio 7 0x4>;
+               };
+       };
+
+       soc {
+               i2c@80004000 {
+                       tps61052@33 {
+                               compatible = "tps61052";
+                               reg = <0x33>;
+                       };
+
+                       tc3589x@42 {
+                               compatible = "tc3589x";
+                               reg = <0x42>;
+                               interrupt-parent = <&gpio6>;
+                               interrupts = <25 IRQ_TYPE_EDGE_RISING>;
+
+                               interrupt-controller;
+                               #interrupt-cells = <2>;
+
+                               tc3589x_gpio: tc3589x_gpio {
+                                       compatible = "tc3589x-gpio";
+                                       interrupts = <0 IRQ_TYPE_EDGE_RISING>;
+
+                                       interrupt-controller;
+                                       #interrupt-cells = <2>;
+                                       gpio-controller;
+                                       #gpio-cells = <2>;
+                               };
+                       };
+               };
+
+               vmmci: regulator-gpio {
+                       gpios = <&tc3589x_gpio 18 0x4>;
+                       enable-gpio = <&tc3589x_gpio 17 0x4>;
+
+                       status = "okay";
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/ste-hrefv60plus-stuib.dts b/arch/arm/boot/dts/ste-hrefv60plus-stuib.dts
new file mode 100644 (file)
index 0000000..8c6a2de
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * Device Tree for the HREF version 60 or later with the ST UIB
+ */
+
+/dts-v1/;
+#include "ste-hrefv60plus.dtsi"
+#include "ste-href-stuib.dtsi"
+
+/ {
+       model = "ST-Ericsson HREF (v60+) and ST UIB";
+       compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
+
+       soc {
+               /* Reset line for the BU21013 touchscreen */
+               i2c@80110000 {
+                       /* Only one of these will be used */
+                       bu21013_tp@5c {
+                               touch-gpio = <&gpio2 20 0x4>;
+                               reset-gpio = <&gpio4 17 0x4>;
+                       };
+                       bu21013_tp@5d {
+                               touch-gpio = <&gpio2 20 0x4>;
+                               reset-gpio = <&gpio4 17 0x4>;
+                       };
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/ste-hrefv60plus-tvk.dts b/arch/arm/boot/dts/ste-hrefv60plus-tvk.dts
new file mode 100644 (file)
index 0000000..d53cccd
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * Device Tree for the HREF version 60 or later with the TVK1281618 UIB
+ */
+
+/dts-v1/;
+#include "ste-hrefv60plus.dtsi"
+#include "ste-href-tvk1281618.dtsi"
+
+/ {
+       model = "ST-Ericsson HREF (v60+) and TVK1281618 UIB";
+       compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
+};
diff --git a/arch/arm/boot/dts/ste-hrefv60plus.dts b/arch/arm/boot/dts/ste-hrefv60plus.dts
deleted file mode 100644 (file)
index 6e52ebb..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * Copyright 2012 ST-Ericsson AB
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-/dts-v1/;
-#include "ste-dbx5x0.dtsi"
-#include "ste-href.dtsi"
-#include "ste-stuib.dtsi"
-
-/ {
-       model = "ST-Ericsson HREF (v60+) platform with Device Tree";
-       compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
-
-       gpio_keys {
-               button@1 {
-                       gpios = <&gpio6 25 0x4>;
-               };
-       };
-
-       soc {
-               i2c@80110000 {
-                       bu21013_tp@0x5c {
-                               reset-gpio = <&gpio4 15 0x4>;
-                       };
-               };
-
-               // External Micro SD slot
-               sdi0_per1@80126000 {
-                       arm,primecell-periphid = <0x10480180>;
-                       max-frequency = <100000000>;
-                       bus-width = <4>;
-                       mmc-cap-sd-highspeed;
-                       mmc-cap-mmc-highspeed;
-                       vmmc-supply = <&ab8500_ldo_aux3_reg>;
-
-                       cd-gpios  = <&tc3589x_gpio 3 0x4>;
-
-                       status = "okay";
-               };
-
-               // WLAN SDIO channel
-               sdi1_per2@80118000 {
-                       arm,primecell-periphid = <0x10480180>;
-                       max-frequency = <100000000>;
-                       bus-width = <4>;
-
-                       status = "okay";
-               };
-
-               // PoP:ed eMMC
-               sdi2_per3@80005000 {
-                       arm,primecell-periphid = <0x10480180>;
-                       max-frequency = <100000000>;
-                       bus-width = <8>;
-                       mmc-cap-mmc-highspeed;
-
-                       status = "okay";
-               };
-
-               // On-board eMMC
-               sdi4_per2@80114000 {
-                       arm,primecell-periphid = <0x10480180>;
-                       max-frequency = <100000000>;
-                       bus-width = <8>;
-                       mmc-cap-mmc-highspeed;
-                       vmmc-supply = <&ab8500_ldo_aux2_reg>;
-
-                       status = "okay";
-               };
-
-               prcmu@80157000 {
-                       db8500-prcmu-regulators {
-                               db8500_vape_reg: db8500_vape {
-                                       regulator-name = "db8500-vape";
-                               };
-
-                               db8500_varm_reg: db8500_varm {
-                                       regulator-name = "db8500-varm";
-                               };
-
-                               db8500_vmodem_reg: db8500_vmodem {
-                                       regulator-name = "db8500-vmodem";
-                               };
-
-                               db8500_vpll_reg: db8500_vpll {
-                                       regulator-name = "db8500-vpll";
-                               };
-
-                               db8500_vsmps1_reg: db8500_vsmps1 {
-                                       regulator-name = "db8500-vsmps1";
-                               };
-
-                               db8500_vsmps2_reg: db8500_vsmps2 {
-                                       regulator-name = "db8500-vsmps2";
-                               };
-
-                               db8500_vsmps3_reg: db8500_vsmps3 {
-                                       regulator-name = "db8500-vsmps3";
-                               };
-
-                               db8500_vrf1_reg: db8500_vrf1 {
-                                       regulator-name = "db8500-vrf1";
-                               };
-
-                               db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
-                                       regulator-name = "db8500-sva-mmdsp";
-                               };
-
-                               db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
-                                       regulator-name = "db8500-sva-mmdsp-ret";
-                               };
-
-                               db8500_sva_pipe_reg: db8500_sva_pipe {
-                                       regulator-name = "db8500_sva_pipe";
-                               };
-
-                               db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
-                                       regulator-name = "db8500_sia_mmdsp";
-                               };
-
-                               db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
-                                       regulator-name = "db8500-sia-mmdsp-ret";
-                               };
-
-                               db8500_sia_pipe_reg: db8500_sia_pipe {
-                                       regulator-name = "db8500-sia-pipe";
-                               };
-
-                               db8500_sga_reg: db8500_sga {
-                                       regulator-name = "db8500-sga";
-                               };
-
-                               db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
-                                       regulator-name = "db8500-b2r2-mcde";
-                               };
-
-                               db8500_esram12_reg: db8500_esram12 {
-                                       regulator-name = "db8500-esram12";
-                               };
-
-                               db8500_esram12_ret_reg: db8500_esram12_ret {
-                                       regulator-name = "db8500-esram12-ret";
-                               };
-
-                               db8500_esram34_reg: db8500_esram34 {
-                                       regulator-name = "db8500-esram34";
-                               };
-
-                               db8500_esram34_ret_reg: db8500_esram34_ret {
-                                       regulator-name = "db8500-esram34-ret";
-                               };
-                       };
-
-                       ab8500 {
-                               ab8500-regulators {
-                                       ab8500_ldo_aux1_reg: ab8500_ldo_aux1 {
-                                               regulator-name = "V-DISPLAY";
-                                       };
-
-                                       ab8500_ldo_aux2_reg: ab8500_ldo_aux2 {
-                                               regulator-name = "V-eMMC1";
-                                       };
-
-                                       ab8500_ldo_aux3_reg: ab8500_ldo_aux3 {
-                                               regulator-name = "V-MMC-SD";
-                                       };
-
-                                       ab8500_ldo_intcore_reg: ab8500_ldo_intcore {
-                                               regulator-name = "V-INTCORE";
-                                       };
-
-                                       ab8500_ldo_tvout_reg: ab8500_ldo_tvout {
-                                               regulator-name = "V-TVOUT";
-                                       };
-
-                                       ab8500_ldo_usb_reg: ab8500_ldo_usb {
-                                               regulator-name = "dummy";
-                                       };
-
-                                       ab8500_ldo_audio_reg: ab8500_ldo_audio {
-                                               regulator-name = "V-AUD";
-                                       };
-
-                                       ab8500_ldo_anamic1_reg: ab8500_ldo_anamic1 {
-                                               regulator-name = "V-AMIC1";
-                                       };
-
-                                       ab8500_ldo_anamic2_reg: ab8500_ldo_anamic2 {
-                                               regulator-name = "V-AMIC2";
-                                       };
-
-                                       ab8500_ldo_dmic_reg: ab8500_ldo_dmic {
-                                               regulator-name = "V-DMIC";
-                                       };
-
-                                       ab8500_ldo_ana_reg: ab8500_ldo_ana {
-                                               regulator-name = "V-CSI/DSI";
-                                       };
-                               };
-                       };
-               };
-       };
-};
diff --git a/arch/arm/boot/dts/ste-hrefv60plus.dtsi b/arch/arm/boot/dts/ste-hrefv60plus.dtsi
new file mode 100644 (file)
index 0000000..aed511b
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2012 ST-Ericsson AB
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+#include "ste-dbx5x0.dtsi"
+#include "ste-href.dtsi"
+
+/ {
+       model = "ST-Ericsson HREF (v60+) platform with Device Tree";
+       compatible = "st-ericsson,hrefv60+", "st-ericsson,u8500";
+
+       gpio_keys {
+               button@1 {
+                       gpios = <&gpio5 25 0x4>;
+               };
+       };
+
+       soc {
+               // External Micro SD slot
+               sdi0_per1@80126000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <4>;
+                       mmc-cap-sd-highspeed;
+                       mmc-cap-mmc-highspeed;
+                       vmmc-supply = <&ab8500_ldo_aux3_reg>;
+
+                       cd-gpios  = <&gpio2 31 0x4>; // 95
+
+                       status = "okay";
+               };
+
+               // WLAN SDIO channel
+               sdi1_per2@80118000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <4>;
+
+                       status = "okay";
+               };
+
+               // PoP:ed eMMC
+               sdi2_per3@80005000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <8>;
+                       mmc-cap-mmc-highspeed;
+
+                       status = "okay";
+               };
+
+               // On-board eMMC
+               sdi4_per2@80114000 {
+                       arm,primecell-periphid = <0x10480180>;
+                       max-frequency = <100000000>;
+                       bus-width = <8>;
+                       mmc-cap-mmc-highspeed;
+                       vmmc-supply = <&ab8500_ldo_aux2_reg>;
+
+                       status = "okay";
+               };
+       };
+};
index f1fc128e249dd7d0dfbd337aeb40fc0dbdcc2c69..f0b39f835914beda02952a3cd9eb8860e38599ba 100644 (file)
                                vdd33a-supply = <&en_3v3_reg>;
                                vddvario-supply = <&db8500_vape_reg>;
 
-
                                reg-shift = <1>;
                                reg-io-width = <2>;
                                smsc,force-internal-phy;
                                smsc,irq-active-high;
                                smsc,irq-push-pull;
+
+                               clocks = <&prcc_pclk 3 0>;
                        };
                };
 
                };
 
                prcmu@80157000 {
-                       db8500-prcmu-regulators {
-                               db8500_vape_reg: db8500_vape {
-                                       regulator-name = "db8500-vape";
-                               };
-
-                               db8500_varm_reg: db8500_varm {
-                                       regulator-name = "db8500-varm";
-                               };
-
-                               db8500_vmodem_reg: db8500_vmodem {
-                                       regulator-name = "db8500-vmodem";
-                               };
-
-                               db8500_vpll_reg: db8500_vpll {
-                                       regulator-name = "db8500-vpll";
-                               };
-
-                               db8500_vsmps1_reg: db8500_vsmps1 {
-                                       regulator-name = "db8500-vsmps1";
-                               };
-
-                               db8500_vsmps2_reg: db8500_vsmps2 {
-                                       regulator-name = "db8500-vsmps2";
-                               };
-
-                               db8500_vsmps3_reg: db8500_vsmps3 {
-                                       regulator-name = "db8500-vsmps3";
-                               };
-
-                               db8500_vrf1_reg: db8500_vrf1 {
-                                       regulator-name = "db8500-vrf1";
-                               };
-
-                               db8500_sva_mmdsp_reg: db8500_sva_mmdsp {
-                                       regulator-name = "db8500-sva-mmdsp";
-                               };
-
-                               db8500_sva_mmdsp_ret_reg: db8500_sva_mmdsp_ret {
-                                       regulator-name = "db8500-sva-mmdsp-ret";
-                               };
-
-                               db8500_sva_pipe_reg: db8500_sva_pipe {
-                                       regulator-name = "db8500_sva_pipe";
-                               };
-
-                               db8500_sia_mmdsp_reg: db8500_sia_mmdsp {
-                                       regulator-name = "db8500_sia_mmdsp";
-                               };
-
-                               db8500_sia_mmdsp_ret_reg: db8500_sia_mmdsp_ret {
-                                       regulator-name = "db8500-sia-mmdsp-ret";
-                               };
-
-                               db8500_sia_pipe_reg: db8500_sia_pipe {
-                                       regulator-name = "db8500-sia-pipe";
-                               };
-
-                               db8500_sga_reg: db8500_sga {
-                                       regulator-name = "db8500-sga";
-                               };
-
-                               db8500_b2r2_mcde_reg: db8500_b2r2_mcde {
-                                       regulator-name = "db8500-b2r2-mcde";
-                               };
-
-                               db8500_esram12_reg: db8500_esram12 {
-                                       regulator-name = "db8500-esram12";
-                               };
-
-                               db8500_esram12_ret_reg: db8500_esram12_ret {
-                                       regulator-name = "db8500-esram12-ret";
-                               };
-
-                               db8500_esram34_reg: db8500_esram34 {
-                                       regulator-name = "db8500-esram34";
-                               };
-
-                               db8500_esram34_ret_reg: db8500_esram34_ret {
-                                       regulator-name = "db8500-esram34-ret";
-                               };
+                       cpufreq {
+                               status = "okay";
                        };
 
                        thermal@801573c0 {
diff --git a/arch/arm/boot/dts/ste-stuib.dtsi b/arch/arm/boot/dts/ste-stuib.dtsi
deleted file mode 100644 (file)
index 524e332..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright 2012 ST-Ericsson AB
- *
- * The code contained herein is licensed under the GNU General Public
- * License. You may obtain a copy of the GNU General Public License
- * Version 2 or later at the following locations:
- *
- * http://www.opensource.org/licenses/gpl-license.html
- * http://www.gnu.org/copyleft/gpl.html
- */
-
-#include <dt-bindings/interrupt-controller/irq.h>
-
-/ {
-       soc {
-               i2c@80004000 {
-                       stmpe1601: stmpe1601@40 {
-                               compatible = "st,stmpe1601";
-                               reg = <0x40>;
-                               interrupts = <26 IRQ_TYPE_EDGE_FALLING>;
-                               interrupt-parent = <&gpio6>;
-                               interrupt-controller;
-
-                               wakeup-source;
-                               st,autosleep-timeout = <1024>;
-
-                               stmpe_keypad {
-                                       compatible = "st,stmpe-keypad";
-
-                                       debounce-interval = <64>;
-                                       st,scan-count = <8>;
-                                       st,no-autorepeat;
-
-                                       linux,keymap = <0x205006b
-                                                       0x4010074
-                                                       0x3050072
-                                                       0x1030004
-                                                       0x502006a
-                                                       0x500000a
-                                                       0x5008b
-                                                       0x706001c
-                                                       0x405000b
-                                                       0x6070003
-                                                       0x3040067
-                                                       0x303006c
-                                                       0x60400e7
-                                                       0x602009e
-                                                       0x4020073
-                                                       0x5050002
-                                                       0x4030069
-                                                       0x3020008>;
-                               };
-                       };
-               };
-
-               i2c@80110000 {
-                       bu21013_tp@5c {
-                               compatible = "rohm,bu21013_tp";
-                               reg = <0x5c>;
-                               touch-gpio = <&gpio2 20 0x4>;
-                               avdd-supply = <&ab8500_ldo_aux1_reg>;
-
-                               rohm,touch-max-x = <384>;
-                               rohm,touch-max-y = <704>;
-                               rohm,flip-y;
-                       };
-
-                       bu21013_tp@5d {
-                               compatible = "rohm,bu21013_tp";
-                               reg = <0x5d>;
-                               touch-gpio = <&gpio2 20 0x4>;
-                               avdd-supply = <&ab8500_ldo_aux1_reg>;
-
-                               rohm,touch-max-x = <384>;
-                               rohm,touch-max-y = <704>;
-                               rohm,flip-y;
-                       };
-               };
-       };
-};
index c32770a28acfe823bf898bf2cf7388f22779aadc..319cc6b509da8e29ee657730497d87f1215745a8 100644 (file)
                        reg = <0x01c20c90 0x10>;
                };
 
+               sid: eeprom@01c23800 {
+                       compatible = "allwinner,sun4i-sid";
+                       reg = <0x01c23800 0x10>;
+               };
+
                uart0: serial@01c28000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28000 0x400>;
index 3b4a0574f0689798b070e96970a33afeddd491df..52476742a1043e5e9703505d03b2eae5d2a5bc1a 100644 (file)
                        reg = <0x01c20c90 0x10>;
                };
 
+               sid: eeprom@01c23800 {
+                       compatible = "allwinner,sun4i-sid";
+                       reg = <0x01c23800 0x10>;
+               };
+
                uart0: serial@01c28000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28000 0x400>;
index f6091dc0936ce68e68b6a9ceac4f9d720b9a57fa..ce8ef2a45be098a35521db6d7fa41c472cd0b85a 100644 (file)
                        reg = <0x01c20c90 0x10>;
                };
 
+               sid: eeprom@01c23800 {
+                       compatible = "allwinner,sun4i-sid";
+                       reg = <0x01c23800 0x10>;
+               };
+
                uart1: serial@01c28400 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28400 0x400>;
index f244f5f02365161706b2442acdad508d3e9c17ec..c1751a64889a615612101613d63145b15903bfc7 100644 (file)
                apb2_gates: apb2_gates@01c2006c {
                        #clock-cells = <1>;
                        compatible = "allwinner,sun6i-a31-apb2-gates-clk";
-                       reg = <0x01c2006c 0x8>;
+                       reg = <0x01c2006c 0x4>;
                        clocks = <&apb2>;
                        clock-output-names = "apb2_i2c0", "apb2_i2c1",
                                        "apb2_i2c2", "apb2_i2c3", "apb2_uart0",
index 15e625eca3122e5038d0da909602e330363d6dba..5c51cb8a98b01bb49b7c189474eef501f6c864b5 100644 (file)
                        pinctrl-0 = <&uart0_pins_a>;
                        status = "okay";
                };
+
+               i2c0: i2c@01c2ac00 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_pins_a>;
+                       status = "okay";
+               };
+
+               i2c1: i2c@01c2b000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1_pins_a>;
+                       status = "okay";
+               };
        };
 
        leds {
diff --git a/arch/arm/boot/dts/sun7i-a20-cubietruck.dts b/arch/arm/boot/dts/sun7i-a20-cubietruck.dts
new file mode 100644 (file)
index 0000000..8a1009d
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2013 Oliver Schinagl
+ *
+ * Oliver Schinagl <oliver@schinagl.nl>
+ *
+ * The code contained herein is licensed under the GNU General Public
+ * License. You may obtain a copy of the GNU General Public License
+ * Version 2 or later at the following locations:
+ *
+ * http://www.opensource.org/licenses/gpl-license.html
+ * http://www.gnu.org/copyleft/gpl.html
+ */
+
+/dts-v1/;
+/include/ "sun7i-a20.dtsi"
+
+/ {
+       model = "Cubietech Cubietruck";
+       compatible = "cubietech,cubietruck", "allwinner,sun7i-a20";
+
+       soc@01c00000 {
+               pinctrl@01c20800 {
+                       led_pins_cubietruck: led_pins@0 {
+                               allwinner,pins = "PH7", "PH11", "PH20", "PH21";
+                               allwinner,function = "gpio_out";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+               };
+
+               uart0: serial@01c28000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&uart0_pins_a>;
+                       status = "okay";
+               };
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins_cubietruck>;
+
+               blue {
+                       label = "cubietruck:blue:usr";
+                       gpios = <&pio 7 21 0>;
+               };
+
+               orange {
+                       label = "cubietruck:orange:usr";
+                       gpios = <&pio 7 20 0>;
+               };
+
+               white {
+                       label = "cubietruck:white:usr";
+                       gpios = <&pio 7 11 0>;
+               };
+
+               green {
+                       label = "cubietruck:green:usr";
+                       gpios = <&pio 7 7 0>;
+               };
+       };
+};
index 9e778557fadb4b17eac49c86bf78d4855e229dc4..ead3013f9aca9db6a3a5e73b0539ba3698139784 100644 (file)
                        pinctrl-0 = <&uart7_pins_a>;
                        status = "okay";
                };
+
+               i2c0: i2c@01c2ac00 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c0_pins_a>;
+                       status = "okay";
+               };
+
+               i2c1: i2c@01c2b000 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c1_pins_a>;
+                       status = "okay";
+               };
+
+               i2c2: i2c@01c2b400 {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&i2c2_pins_a>;
+                       status = "okay";
+               };
        };
 
        leds {
index 80559cbdbc879106d21e6794814f6e767d1653c1..e46cfedde74c220b698c829458dfa40cef916159 100644 (file)
                                allwinner,pull = <0>;
                        };
 
+                       i2c0_pins_a: i2c0@0 {
+                               allwinner,pins = "PB0", "PB1";
+                               allwinner,function = "i2c0";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       i2c1_pins_a: i2c1@0 {
+                               allwinner,pins = "PB18", "PB19";
+                               allwinner,function = "i2c1";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
+                       i2c2_pins_a: i2c2@0 {
+                               allwinner,pins = "PB20", "PB21";
+                               allwinner,function = "i2c2";
+                               allwinner,drive = <0>;
+                               allwinner,pull = <0>;
+                       };
+
                        emac_pins_a: emac0@0 {
                                allwinner,pins = "PA0", "PA1", "PA2",
                                                "PA3", "PA4", "PA5", "PA6",
                        reg = <0x01c20c90 0x10>;
                };
 
+               sid: eeprom@01c23800 {
+                       compatible = "allwinner,sun7i-a20-sid";
+                       reg = <0x01c23800 0x200>;
+               };
+
                uart0: serial@01c28000 {
                        compatible = "snps,dw-apb-uart";
                        reg = <0x01c28000 0x400>;
                        status = "disabled";
                };
 
+               i2c0: i2c@01c2ac00 {
+                       compatible = "allwinner,sun4i-i2c";
+                       reg = <0x01c2ac00 0x400>;
+                       interrupts = <0 7 1>;
+                       clocks = <&apb1_gates 0>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c1: i2c@01c2b000 {
+                       compatible = "allwinner,sun4i-i2c";
+                       reg = <0x01c2b000 0x400>;
+                       interrupts = <0 8 1>;
+                       clocks = <&apb1_gates 1>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c2: i2c@01c2b400 {
+                       compatible = "allwinner,sun4i-i2c";
+                       reg = <0x01c2b400 0x400>;
+                       interrupts = <0 9 1>;
+                       clocks = <&apb1_gates 2>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c3: i2c@01c2b800 {
+                       compatible = "allwinner,sun4i-i2c";
+                       reg = <0x01c2b800 0x400>;
+                       interrupts = <0 88 1>;
+                       clocks = <&apb1_gates 3>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
+               i2c4: i2c@01c2bc00 {
+                       compatible = "allwinner,sun4i-i2c";
+                       reg = <0x01c2bc00 0x400>;
+                       interrupts = <0 89 1>;
+                       clocks = <&apb1_gates 15>;
+                       clock-frequency = <100000>;
+                       status = "disabled";
+               };
+
                gic: interrupt-controller@01c81000 {
                        compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
                        reg = <0x01c81000 0x1000>,
index 60230288884b663ae8a17a32d3e1bda66ba4125b..cb5ec23b03a71b59e8fac5f3df740f3eaa730f32 100644 (file)
@@ -1,5 +1,6 @@
 /dts-v1/;
 
+#include <dt-bindings/input/input.h>
 #include "tegra114.dtsi"
 
 / {
                        realtek,ldo1-en-gpios =
                                <&gpio TEGRA_GPIO(V, 3) GPIO_ACTIVE_HIGH>;
                };
+
+               temperature-sensor@4c {
+                       compatible = "onnn,nct1008";
+                       reg = <0x4c>;
+                       vcc-supply = <&palmas_ldo6_reg>;
+                       interrupt-parent = <&gpio>;
+                       interrupts = <TEGRA_GPIO(O, 4) IRQ_TYPE_LEVEL_LOW>;
+               };
        };
 
        i2c@7000d000 {
                                                regulator-max-microvolt = <1800000>;
                                        };
 
-                                       ldo6 {
+                                       palmas_ldo6_reg: ldo6 {
                                                regulator-name = "vdd-sensor-2v85";
                                                regulator-min-microvolt = <2850000>;
                                                regulator-max-microvolt = <2850000>;
                                interrupt-parent = <&palmas>;
                                interrupts = <8 0>;
                        };
+
+                       pinmux {
+                               compatible = "ti,tps65913-pinctrl";
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&palmas_default>;
+
+                               palmas_default: pinmux {
+                                       pin_gpio6 {
+                                               pins = "gpio6";
+                                               function = "gpio";
+                                       };
+                               };
+                       };
                };
        };
 
                home {
                        label = "Home";
                        gpios = <&gpio TEGRA_GPIO(I, 5) GPIO_ACTIVE_LOW>;
-                       linux,code = <102>; /* KEY_HOME */
+                       linux,code = <KEY_HOME>;
                };
 
                power {
                        label = "Power";
                        gpios = <&gpio TEGRA_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
-                       linux,code = <116>; /* KEY_POWER */
+                       linux,code = <KEY_POWER>;
                        gpio-key,wakeup;
                };
 
                volume_down {
                        label = "Volume Down";
                        gpios = <&gpio TEGRA_GPIO(R, 1) GPIO_ACTIVE_LOW>;
-                       linux,code = <114>; /* KEY_VOLUMEDOWN */
+                       linux,code = <KEY_VOLUMEDOWN>;
                };
 
                volume_up {
                        label = "Volume Up";
                        gpios = <&gpio TEGRA_GPIO(R, 2) GPIO_ACTIVE_LOW>;
-                       linux,code = <115>; /* KEY_VOLUMEUP */
+                       linux,code = <KEY_VOLUMEUP>;
                };
        };
 
diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
new file mode 100644 (file)
index 0000000..431d67a
--- /dev/null
@@ -0,0 +1,27 @@
+/dts-v1/;
+
+#include "tegra124.dtsi"
+
+/ {
+       model = "NVIDIA Tegra124 Venice2";
+       compatible = "nvidia,venice2", "nvidia,tegra124";
+
+       memory {
+               reg = <0x80000000 0x80000000>;
+       };
+
+       serial@70006000 {
+               status = "okay";
+       };
+
+       pmc@7000e400 {
+               nvidia,invert-interrupt;
+               nvidia,suspend-mode = <1>;
+               nvidia,cpu-pwr-good-time = <500>;
+               nvidia,cpu-pwr-off-time = <300>;
+               nvidia,core-pwr-good-time = <641 3845>;
+               nvidia,core-pwr-off-time = <61036>;
+               nvidia,core-power-req-active-high;
+               nvidia,sys-clock-req-active-high;
+       };
+};
diff --git a/arch/arm/boot/dts/tegra124.dtsi b/arch/arm/boot/dts/tegra124.dtsi
new file mode 100644 (file)
index 0000000..b741300
--- /dev/null
@@ -0,0 +1,149 @@
+#include <dt-bindings/gpio/tegra-gpio.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+#include "skeleton.dtsi"
+
+/ {
+       compatible = "nvidia,tegra124";
+       interrupt-parent = <&gic>;
+
+       gic: interrupt-controller@50041000 {
+               compatible = "arm,cortex-a15-gic";
+               #interrupt-cells = <3>;
+               interrupt-controller;
+               reg = <0x50041000 0x1000>,
+                     <0x50042000 0x1000>,
+                     <0x50044000 0x2000>,
+                     <0x50046000 0x2000>;
+               interrupts = <GIC_PPI 9
+                       (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+       };
+
+       timer@60005000 {
+               compatible = "nvidia,tegra124-timer", "nvidia,tegra20-timer";
+               reg = <0x60005000 0x400>;
+               interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       gpio: gpio@6000d000 {
+               compatible = "nvidia,tegra124-gpio", "nvidia,tegra30-gpio";
+               reg = <0x6000d000 0x1000>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>;
+               #gpio-cells = <2>;
+               gpio-controller;
+               #interrupt-cells = <2>;
+               interrupt-controller;
+       };
+
+       /*
+        * There are two serial driver i.e. 8250 based simple serial
+        * driver and APB DMA based serial driver for higher baudrate
+        * and performace. To enable the 8250 based driver, the compatible
+        * is "nvidia,tegra124-uart", "nvidia,tegra20-uart" and to enable
+        * the APB DMA based serial driver, the comptible is
+        * "nvidia,tegra124-hsuart", "nvidia,tegra30-hsuart".
+        */
+       serial@70006000 {
+               compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
+               reg = <0x70006000 0x40>;
+               reg-shift = <2>;
+               interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       serial@70006040 {
+               compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
+               reg = <0x70006040 0x40>;
+               reg-shift = <2>;
+               interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       serial@70006200 {
+               compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
+               reg = <0x70006200 0x40>;
+               reg-shift = <2>;
+               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       serial@70006300 {
+               compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
+               reg = <0x70006300 0x40>;
+               reg-shift = <2>;
+               interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       serial@70006400 {
+               compatible = "nvidia,tegra124-uart", "nvidia,tegra20-uart";
+               reg = <0x70006400 0x40>;
+               reg-shift = <2>;
+               interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       rtc@7000e000 {
+               compatible = "nvidia,tegra124-rtc", "nvidia,tegra20-rtc";
+               reg = <0x7000e000 0x100>;
+               interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
+       };
+
+       pmc@7000e400 {
+               compatible = "nvidia,tegra124-pmc";
+               reg = <0x7000e400 0x400>;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <0>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <1>;
+               };
+
+               cpu@2 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <2>;
+               };
+
+               cpu@3 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a15";
+                       reg = <3>;
+               };
+       };
+
+       timer {
+               compatible = "arm,armv7-timer";
+               interrupts = <GIC_PPI 13
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 14
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 11
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
+                            <GIC_PPI 10
+                               (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
+       };
+};
index e19dbf238e5c8498878dc56492018585190830ce..5ea7dfa4d9fa5de680ead80110b9c9ad31737490 100644 (file)
                        };
                };
 
-               nct1008 {
+               temperature-sensor@4c {
                        compatible = "onnn,nct1008";
                        reg = <0x4c>;
+                       vcc-supply = <&sys_3v3_reg>;
                        interrupt-parent = <&gpio>;
                        interrupts = <TEGRA_GPIO(CC, 2) IRQ_TYPE_LEVEL_LOW>;
                };
index 0022c127e1d956c42badc2970887fca3b9d7511b..2bd55cfd88adcb4d3e525ae45ea471a6376a8e34 100644 (file)
                gr3d {
                        compatible = "nvidia,tegra30-gr3d";
                        reg = <0x54180000 0x00040000>;
-                       clocks = <&tegra_car 24 &tegra_car 98>;
+                       clocks = <&tegra_car TEGRA30_CLK_GR3D
+                                 &tegra_car TEGRA30_CLK_GR3D2>;
                        clock-names = "3d", "3d2";
                };
 
                dc@54200000 {
-                       compatible = "nvidia,tegra30-dc";
+                       compatible = "nvidia,tegra30-dc", "nvidia,tegra20-dc";
                        reg = <0x54200000 0x00040000>;
                        interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
                        clocks = <&tegra_car TEGRA30_CLK_DISP1>,
index ae6a17aed9ee224c85498b2bc6b1e0fa43e75e56..af7fa40fd216f20a64da6fb06241d54547d6194c 100644 (file)
                compatible = "ti,twl4030-wdt";
        };
 
+       vaux1: regulator-vaux1 {
+               compatible = "ti,twl4030-vaux1";
+       };
+
+       vaux2: regulator-vaux2 {
+               compatible = "ti,twl4030-vaux2";
+       };
+
+       vaux3: regulator-vaux3 {
+               compatible = "ti,twl4030-vaux3";
+       };
+
+       vaux4: regulator-vaux4 {
+               compatible = "ti,twl4030-vaux4";
+       };
+
        vcc: regulator-vdd1 {
                compatible = "ti,twl4030-vdd1";
                regulator-min-microvolt = <600000>;
                regulator-max-microvolt = <1800000>;
        };
 
-       vpll2: regulator-vpll2 {
-               compatible = "ti,twl4030-vpll2";
-               regulator-min-microvolt = <1800000>;
-               regulator-max-microvolt = <1800000>;
+       vio: regulator-vio {
+               compatible = "ti,twl4030-vio";
+       };
+
+       vintana1: regulator-vintana1 {
+               compatible = "ti,twl4030-vintana1";
+       };
+
+       vintana2: regulator-vintana2 {
+               compatible = "ti,twl4030-vintana2";
+       };
+
+       vintdig: regulator-vintdig {
+               compatible = "ti,twl4030-vintdig";
        };
 
        vmmc1: regulator-vmmc1 {
                compatible = "ti,twl4030-vusb3v1";
        };
 
+       vpll1: regulator-vpll1 {
+               compatible = "ti,twl4030-vpll1";
+       };
+
+       vpll2: regulator-vpll2 {
+               compatible = "ti,twl4030-vpll2";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+       };
+
        vsim: regulator-vsim {
                compatible = "ti,twl4030-vsim";
                regulator-min-microvolt = <1800000>;
                compatible = "ti,twl4030-pwmled";
                #pwm-cells = <2>;
        };
+
+       twl_pwrbutton: pwrbutton {
+               compatible = "ti,twl4030-pwrbutton";
+               interrupts = <8>;
+       };
 };
diff --git a/arch/arm/boot/dts/twl6030_omap4.dtsi b/arch/arm/boot/dts/twl6030_omap4.dtsi
new file mode 100644 (file)
index 0000000..a4fa570
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+&twl {
+       /*
+        * On most OMAP4 platforms, the twl6030 IRQ line is connected
+        * to the SYS_NIRQ1 line on OMAP and the twl6030 MSECURE line is
+        * connected to the fref_clk0_out.sys_drm_msecure line.
+        * Therefore, configure the defaults for the SYS_NIRQ1 and
+        * fref_clk0_out.sys_drm_msecure pins here.
+        */
+       pinctrl-names = "default";
+       pinctrl-0 = <
+               &twl6030_pins
+               &twl6030_wkup_pins
+       >;
+};
+
+&omap4_pmx_wkup {
+       twl6030_wkup_pins: pinmux_twl6030_wkup_pins {
+               pinctrl-single,pins = <
+                       0x14 (PIN_OUTPUT | MUX_MODE2)           /* fref_clk0_out.sys_drm_msecure */
+               >;
+       };
+};
+
+&omap4_pmx_core {
+       twl6030_pins: pinmux_twl6030_pins {
+               pinctrl-single,pins = <
+                       0x15e (WAKEUP_EN | PIN_INPUT_PULLUP | MUX_MODE0)        /* sys_nirq1.sys_nirq1 */
+               >;
+       };
+};
diff --git a/arch/arm/boot/dts/vf610-cosmic.dts b/arch/arm/boot/dts/vf610-cosmic.dts
new file mode 100644 (file)
index 0000000..c42e4f9
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ * Copyright 2013 Linaro Limited
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+/dts-v1/;
+#include "vf610.dtsi"
+
+/ {
+       model = "PHYTEC Cosmic/Cosmic+ Board";
+       compatible = "phytec,vf610-cosmic", "fsl,vf610";
+
+       chosen {
+               bootargs = "console=ttyLP1,115200";
+       };
+
+       memory {
+               reg = <0x80000000 0x10000000>;
+       };
+
+       clocks {
+               enet_ext {
+                       compatible = "fixed-clock";
+                       #clock-cells = <0>;
+                       clock-frequency = <50000000>;
+               };
+       };
+
+};
+
+&fec1 {
+       phy-mode = "rmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec1_1>;
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_uart1_1>;
+       status = "okay";
+};
index 1a58678b93fa613c9de5524026f5777408c7dd05..c8047ca16501324aaed37981ab133c0207d682f7 100644 (file)
 
 };
 
+&dspi0 {
+       bus-num = <0>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_dspi0_1>;
+       status = "okay";
+
+       sflash: at26df081a@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "atmel,at26df081a";
+               spi-max-frequency = <16000000>;
+               spi-cpol;
+               spi-cpha;
+               reg = <0>;
+       };
+};
+
 &fec0 {
        phy-mode = "rmii";
        pinctrl-names = "default";
index 67d929cf98045235a1a39eeeb7c884c2b2bccddc..d31ce1b4a7b08df9dab864e633afe665a2400a59 100644 (file)
                                status = "disabled";
                        };
 
+                       dspi0: dspi0@4002c000 {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               compatible = "fsl,vf610-dspi";
+                               reg = <0x4002c000 0x1000>;
+                               interrupts = <0 67 0x04>;
+                               clocks = <&clks VF610_CLK_DSPI0>;
+                               clock-names = "dspi";
+                               spi-num-chipselects = <5>;
+                               status = "disabled";
+                       };
+
                        sai2: sai@40031000 {
                                compatible = "fsl,vf610-sai";
                                reg = <0x40031000 0x1000>;
index 06ea7d42ce8e6bb9f72633a14abd2ace113fa712..2a45092a40e3251e44447f3349e80ee0a69e97a4 100644 (file)
 #   $4 - default install path (blank if root directory)
 #
 
+verify () {
+       if [ ! -f "$1" ]; then
+               echo ""                                                   1>&2
+               echo " *** Missing file: $1"                              1>&2
+               echo ' *** You need to run "make" before "make install".' 1>&2
+               echo ""                                                   1>&2
+               exit 1
+       fi
+}
+
+# Make sure the files actually exist
+verify "$2"
+verify "$3"
+
 # User may have a custom install script
 if [ -x ~/bin/${INSTALLKERNEL} ]; then exec ~/bin/${INSTALLKERNEL} "$@"; fi
 if [ -x /sbin/${INSTALLKERNEL} ]; then exec /sbin/${INSTALLKERNEL} "$@"; fi
index 254cf0539439b0ab87bb44dcd62e2d24c8120f0c..98a50c309b90ad72b710fdeddc4117208fa6c29c 100644 (file)
@@ -1,14 +1,13 @@
-CONFIG_EXPERIMENTAL=y
 CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
 CONFIG_BSD_PROCESS_ACCT=y
 CONFIG_IKCONFIG=y
 CONFIG_IKCONFIG_PROC=y
 CONFIG_LOG_BUF_SHIFT=16
 CONFIG_BLK_DEV_INITRD=y
 CONFIG_EXPERT=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS_EXTRA_PASS=y
 CONFIG_SLAB=y
 CONFIG_PROFILING=y
 CONFIG_OPROFILE=y
@@ -20,22 +19,21 @@ CONFIG_MODULE_FORCE_UNLOAD=y
 CONFIG_MODVERSIONS=y
 CONFIG_MODULE_SRCVERSION_ALL=y
 # CONFIG_BLK_DEV_BSG is not set
+CONFIG_PARTITION_ADVANCED=y
 CONFIG_ARCH_MULTI_V6=y
-CONFIG_ARCH_OMAP2PLUS=y
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX_DEBUG=y
 CONFIG_ARCH_OMAP2=y
 CONFIG_ARCH_OMAP3=y
 CONFIG_ARCH_OMAP4=y
+CONFIG_SOC_OMAP5=y
 CONFIG_SOC_AM33XX=y
-CONFIG_OMAP_RESET_CLOCKS=y
-CONFIG_OMAP_MUX_DEBUG=y
-CONFIG_ARCH_VEXPRESS_CA9X4=y
+CONFIG_SOC_DRA7XX=y
 CONFIG_ARM_THUMBEE=y
 CONFIG_ARM_ERRATA_411920=y
-CONFIG_NO_HZ=y
-CONFIG_HIGH_RES_TIMERS=y
 CONFIG_SMP=y
 CONFIG_NR_CPUS=2
-CONFIG_LEDS=y
+CONFIG_CMA=y
 CONFIG_ZBOOT_ROM_TEXT=0x0
 CONFIG_ZBOOT_ROM_BSS=0x0
 CONFIG_ARM_APPENDED_DTB=y
@@ -61,8 +59,6 @@ CONFIG_IP_PNP_RARP=y
 # CONFIG_IPV6 is not set
 CONFIG_NETFILTER=y
 CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
 CONFIG_CAN_C_CAN=m
 CONFIG_CAN_C_CAN_PLATFORM=m
 CONFIG_BT=m
@@ -77,14 +73,13 @@ CONFIG_MAC80211=m
 CONFIG_MAC80211_RC_PID=y
 CONFIG_MAC80211_RC_DEFAULT_PID=y
 CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
-CONFIG_CMA=y
-CONFIG_DMA_CMA=y
-CONFIG_CONNECTOR=y
 CONFIG_DEVTMPFS=y
 CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_DMA_CMA=y
+CONFIG_OMAP_OCP2SCP=y
+CONFIG_CONNECTOR=y
 CONFIG_MTD=y
 CONFIG_MTD_CMDLINE_PARTS=y
-CONFIG_MTD_CHAR=y
 CONFIG_MTD_BLOCK=y
 CONFIG_MTD_OOPS=y
 CONFIG_MTD_CFI=y
@@ -98,32 +93,40 @@ CONFIG_MTD_UBI=y
 CONFIG_BLK_DEV_LOOP=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_SIZE=16384
-CONFIG_SENSORS_LIS3LV02D=m
 CONFIG_SENSORS_TSL2550=m
-CONFIG_SENSORS_LIS3_I2C=m
 CONFIG_BMP085_I2C=m
+CONFIG_SENSORS_LIS3_I2C=m
 CONFIG_SCSI=y
 CONFIG_BLK_DEV_SD=y
 CONFIG_SCSI_MULTI_LUN=y
 CONFIG_SCSI_SCAN_ASYNC=y
 CONFIG_MD=y
 CONFIG_NETDEVICES=y
-CONFIG_SMSC_PHY=y
-CONFIG_NET_ETHERNET=y
-CONFIG_SMC91X=y
-CONFIG_SMSC911X=y
 CONFIG_KS8851=y
 CONFIG_KS8851_MLL=y
-CONFIG_LIBERTAS=m
-CONFIG_LIBERTAS_USB=m
-CONFIG_LIBERTAS_SDIO=m
-CONFIG_LIBERTAS_DEBUG=y
+CONFIG_SMC91X=y
+CONFIG_SMSC911X=y
+CONFIG_TI_CPSW=y
+CONFIG_AT803X_PHY=y
+CONFIG_SMSC_PHY=y
 CONFIG_USB_USBNET=y
 CONFIG_USB_NET_SMSC95XX=y
 CONFIG_USB_ALI_M5632=y
 CONFIG_USB_AN2720=y
 CONFIG_USB_EPSON2888=y
 CONFIG_USB_KC2190=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_DEBUG=y
+CONFIG_WL_TI=y
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE_SPI=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
 CONFIG_INPUT_JOYDEV=y
 CONFIG_INPUT_EVDEV=y
 CONFIG_KEYBOARD_GPIO=y
@@ -133,7 +136,6 @@ CONFIG_INPUT_TOUCHSCREEN=y
 CONFIG_TOUCHSCREEN_ADS7846=y
 CONFIG_INPUT_MISC=y
 CONFIG_INPUT_TWL4030_PWRBUTTON=y
-CONFIG_VT_HW_CONSOLE_BINDING=y
 # CONFIG_LEGACY_PTYS is not set
 CONFIG_SERIAL_8250=y
 CONFIG_SERIAL_8250_CONSOLE=y
@@ -143,8 +145,7 @@ CONFIG_SERIAL_8250_MANY_PORTS=y
 CONFIG_SERIAL_8250_SHARE_IRQ=y
 CONFIG_SERIAL_8250_DETECT_IRQ=y
 CONFIG_SERIAL_8250_RSA=y
-CONFIG_SERIAL_AMBA_PL011=y
-CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
+CONFIG_SERIAL_OF_PLATFORM=y
 CONFIG_SERIAL_OMAP=y
 CONFIG_SERIAL_OMAP_CONSOLE=y
 CONFIG_HW_RANDOM=y
@@ -158,31 +159,31 @@ CONFIG_GPIO_TWL4030=y
 CONFIG_W1=y
 CONFIG_POWER_SUPPLY=y
 CONFIG_SENSORS_LM75=m
-CONFIG_WATCHDOG=y
 CONFIG_THERMAL=y
-CONFIG_THERMAL_HWMON=y
-CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_FAIR_SHARE=y
-CONFIG_THERMAL_GOV_STEP_WISE=y
 CONFIG_THERMAL_GOV_USER_SPACE=y
-CONFIG_CPU_THERMAL=y
+CONFIG_TI_SOC_THERMAL=y
+CONFIG_OMAP4_THERMAL=y
+CONFIG_OMAP5_THERMAL=y
+CONFIG_DRA752_THERMAL=y
+CONFIG_WATCHDOG=y
 CONFIG_OMAP_WATCHDOG=y
 CONFIG_TWL4030_WATCHDOG=y
+CONFIG_MFD_PALMAS=y
 CONFIG_MFD_TPS65217=y
 CONFIG_MFD_TPS65910=y
 CONFIG_TWL6040_CORE=y
-CONFIG_REGULATOR_TWL4030=y
+CONFIG_REGULATOR_PALMAS=y
 CONFIG_REGULATOR_TPS65023=y
 CONFIG_REGULATOR_TPS6507X=y
 CONFIG_REGULATOR_TPS65217=y
 CONFIG_REGULATOR_TPS65910=y
+CONFIG_REGULATOR_TWL4030=y
 CONFIG_FB=y
 CONFIG_FIRMWARE_EDID=y
 CONFIG_FB_MODE_HELPERS=y
 CONFIG_FB_TILEBLITTING=y
-CONFIG_FB_OMAP_LCD_VGA=y
 CONFIG_OMAP2_DSS=m
-CONFIG_OMAP2_DSS_RFBI=y
 CONFIG_OMAP2_DSS_SDI=y
 CONFIG_OMAP2_DSS_DSI=y
 CONFIG_FB_OMAP2=m
@@ -194,12 +195,8 @@ CONFIG_DISPLAY_PANEL_DPI=m
 CONFIG_BACKLIGHT_LCD_SUPPORT=y
 CONFIG_LCD_CLASS_DEVICE=y
 CONFIG_LCD_PLATFORM=y
-CONFIG_DISPLAY_SUPPORT=y
 CONFIG_FRAMEBUFFER_CONSOLE=y
 CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
-CONFIG_FONTS=y
-CONFIG_FONT_8x8=y
-CONFIG_FONT_8x16=y
 CONFIG_LOGO=y
 CONFIG_SOUND=m
 CONFIG_SND=m
@@ -216,14 +213,14 @@ CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=m
 CONFIG_USB=y
 CONFIG_USB_DEBUG=y
 CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
-CONFIG_USB_DEVICEFS=y
 CONFIG_USB_MON=y
 CONFIG_USB_WDM=y
 CONFIG_USB_STORAGE=y
-CONFIG_USB_LIBUSUAL=y
+CONFIG_USB_DWC3=m
 CONFIG_USB_TEST=y
-CONFIG_USB_PHY=y
 CONFIG_NOP_USB_XCEIV=y
+CONFIG_OMAP_USB2=y
+CONFIG_OMAP_USB3=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_DEBUG=y
 CONFIG_USB_GADGET_DEBUG_FILES=y
@@ -232,7 +229,6 @@ CONFIG_USB_ZERO=m
 CONFIG_MMC=y
 CONFIG_MMC_UNSAFE_RESUME=y
 CONFIG_SDIO_UART=y
-CONFIG_MMC_ARMMMCI=y
 CONFIG_MMC_OMAP=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_NEW_LEDS=y
@@ -252,11 +248,8 @@ CONFIG_RTC_DRV_OMAP=y
 CONFIG_DMADEVICES=y
 CONFIG_TI_EDMA=y
 CONFIG_DMA_OMAP=y
-CONFIG_TI_SOC_THERMAL=y
-CONFIG_TI_THERMAL=y
-CONFIG_OMAP4_THERMAL=y
-CONFIG_OMAP5_THERMAL=y
-CONFIG_DRA752_THERMAL=y
+CONFIG_EXTCON=y
+CONFIG_EXTCON_PALMAS=y
 CONFIG_EXT2_FS=y
 CONFIG_EXT3_FS=y
 # CONFIG_EXT3_FS_XATTR is not set
@@ -275,23 +268,18 @@ CONFIG_JFFS2_RUBIN=y
 CONFIG_UBIFS_FS=y
 CONFIG_CRAMFS=y
 CONFIG_NFS_FS=y
-CONFIG_NFS_V3=y
 CONFIG_NFS_V3_ACL=y
 CONFIG_NFS_V4=y
 CONFIG_ROOT_NFS=y
-CONFIG_PARTITION_ADVANCED=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
 CONFIG_PRINTK_TIME=y
+CONFIG_DEBUG_INFO=y
 CONFIG_MAGIC_SYSRQ=y
-CONFIG_DEBUG_KERNEL=y
 CONFIG_SCHEDSTATS=y
 CONFIG_TIMER_STATS=y
 CONFIG_PROVE_LOCKING=y
-CONFIG_DEBUG_SPINLOCK_SLEEP=y
 # CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_DEBUG_INFO=y
-# CONFIG_RCU_CPU_STALL_DETECTOR is not set
 CONFIG_SECURITY=y
 CONFIG_CRYPTO_MICHAEL_MIC=y
 # CONFIG_CRYPTO_ANSI_CPRNG is not set
@@ -300,9 +288,6 @@ CONFIG_CRC_T10DIF=y
 CONFIG_CRC_ITU_T=y
 CONFIG_CRC7=y
 CONFIG_LIBCRC32C=y
-CONFIG_SOC_OMAP5=y
-CONFIG_TI_DAVINCI_MDIO=y
-CONFIG_TI_DAVINCI_CPDMA=y
-CONFIG_TI_CPSW=y
-CONFIG_AT803X_PHY=y
-CONFIG_SOC_DRA7XX=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
index a0025dc13021af11af524e08e8466c826f802a4a..ac632cc38f249767bcedfc1232a4e4b8e6bc70d9 100644 (file)
@@ -1,4 +1,3 @@
-CONFIG_HIGHMEM=y
 # CONFIG_SWAP is not set
 CONFIG_SYSVIPC=y
 CONFIG_NO_HZ=y
@@ -16,6 +15,9 @@ CONFIG_SMP=y
 CONFIG_NR_CPUS=2
 CONFIG_PREEMPT=y
 CONFIG_AEABI=y
+CONFIG_HIGHMEM=y
+CONFIG_ARM_APPENDED_DTB=y
+CONFIG_ARM_ATAG_DTB_COMPAT=y
 CONFIG_CMDLINE="root=/dev/ram0 console=ttyAMA2,115200n8"
 CONFIG_CPU_FREQ=y
 CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
@@ -68,8 +70,8 @@ CONFIG_CPU_THERMAL=y
 CONFIG_WATCHDOG=y
 CONFIG_MFD_STMPE=y
 CONFIG_MFD_TC3589X=y
-CONFIG_REGULATOR_GPIO=y
 CONFIG_REGULATOR_AB8500=y
+CONFIG_REGULATOR_GPIO=y
 CONFIG_SOUND=y
 CONFIG_SND=y
 CONFIG_SND_SOC=y
@@ -78,10 +80,8 @@ CONFIG_SND_SOC_UX500_MACH_MOP500=y
 CONFIG_USB=y
 CONFIG_USB_MUSB_HDRC=y
 CONFIG_USB_MUSB_UX500=y
-CONFIG_USB_PHY=y
 CONFIG_AB8500_USB=y
 CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
 CONFIG_USB_ETH=m
 CONFIG_MMC=y
 CONFIG_MMC_UNSAFE_RESUME=y
@@ -116,12 +116,12 @@ CONFIG_NFS_FS=y
 CONFIG_ROOT_NFS=y
 CONFIG_NLS_CODEPAGE_437=y
 CONFIG_NLS_ISO8859_1=y
-CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_INFO=y
 CONFIG_DEBUG_FS=y
+CONFIG_MAGIC_SYSRQ=y
 CONFIG_DEBUG_KERNEL=y
 # CONFIG_SCHED_DEBUG is not set
 # CONFIG_DEBUG_PREEMPT is not set
-CONFIG_DEBUG_INFO=y
 # CONFIG_FTRACE is not set
 CONFIG_DEBUG_USER=y
 CONFIG_CRYPTO_DEV_UX500=y
index bfc198c759130109d44b73b4506ea853d01fba28..863c892b4aaa7403c3bde97b7de3b2cd9a75519c 100644 (file)
@@ -16,7 +16,7 @@
 
 static __always_inline bool arch_static_branch(struct static_key *key)
 {
-       asm goto("1:\n\t"
+       asm_volatile_goto("1:\n\t"
                 JUMP_LABEL_NOP "\n\t"
                 ".pushsection __jump_table,  \"aw\"\n\t"
                 ".word 1b, %l[l_yes], %c0\n\t"
index c7d670d118025eaf71a4dd145d0d3a33d300a415..2d895a297739d85d4302ec8e9ec2e01cfb4f1c69 100644 (file)
@@ -169,6 +169,7 @@ static struct clk_lookup periph_clocks_lookups[] = {
        CLKDEV_CON_DEV_ID("t0_clk", "f8008000.timer", &tcb_clk),
        CLKDEV_CON_DEV_ID("t0_clk", "f800c000.timer", &tcb_clk),
        CLKDEV_CON_DEV_ID("mci_clk", "f0008000.mmc", &mmc_clk),
+       CLKDEV_CON_DEV_ID(NULL, "f0010000.ssc", &ssc_clk),
        CLKDEV_CON_DEV_ID("dma_clk", "ffffec00.dma-controller", &dma_clk),
        CLKDEV_CON_DEV_ID(NULL, "f8010000.i2c", &twi0_clk),
        CLKDEV_CON_DEV_ID(NULL, "f8014000.i2c", &twi1_clk),
index 82d3ad8e87cf91395c0c706b48ef7df684e1e644..f087b5f22425541b92864f572f2f13afdc66d8d5 100644 (file)
@@ -92,7 +92,6 @@ static void __init kirkwood_dt_init(void)
        writel(readl(CPU_CONFIG) & ~CPU_CONFIG_ERROR_PROP, CPU_CONFIG);
 
        BUG_ON(mvebu_mbus_dt_init());
-       kirkwood_setup_wins();
 
        kirkwood_l2_init();
 
index 98f6e2adb53eaf39722f4988f43ce9d96c86ba50..c0ceb17649faada765c7a804629bc22e08e64ac8 100644 (file)
@@ -332,6 +332,11 @@ static void __init crystalfontz_init(void)
        update_fec_mac_prop(OUI_CRYSTALFONTZ);
 }
 
+static void __init m28cu3_init(void)
+{
+       update_fec_mac_prop(OUI_DENX);
+}
+
 static const char __init *mxs_get_soc_id(void)
 {
        struct device_node *np;
@@ -459,6 +464,8 @@ static void __init mxs_machine_init(void)
                apx4devkit_init();
        else if (of_machine_is_compatible("crystalfontz,cfa10036"))
                crystalfontz_init();
+       else if (of_machine_is_compatible("msr,m28cu3"))
+               m28cu3_init();
 
        of_platform_populate(NULL, of_default_bus_match_table,
                             NULL, parent);
index b5fb5f7992dfed4972be5a927934b9ccfa26ae9f..68c9688815aa2fdcb95da2d40b128acc4379772a 100644 (file)
@@ -94,6 +94,7 @@ config ARCH_OMAP2PLUS
        select GENERIC_CLOCKEVENTS
        select GENERIC_IRQ_CHIP
        select HAVE_CLK
+       select MACH_OMAP_GENERIC
        select OMAP_DM_TIMER
        select PINCTRL
        select PROC_DEVICETREE if PROC_FS
@@ -187,16 +188,11 @@ config OMAP_PACKAGE_CUS
 config OMAP_PACKAGE_CBP
        bool
 
-comment "OMAP Board Type"
+comment "OMAP Legacy Platform Data Board Type"
        depends on ARCH_OMAP2PLUS
 
 config MACH_OMAP_GENERIC
-       bool "Generic OMAP2+ board"
-       depends on ARCH_OMAP2PLUS
-       default y
-       help
-         Support for generic TI OMAP2+ boards using Flattened Device Tree.
-         More information at Documentation/devicetree
+       bool
 
 config MACH_OMAP2_TUSB6010
        bool
@@ -260,12 +256,6 @@ config MACH_OVERO
        default y
        select OMAP_PACKAGE_CBB
 
-config MACH_OMAP3EVM
-       bool "OMAP 3530 EVM board"
-       depends on ARCH_OMAP3
-       default y
-       select OMAP_PACKAGE_CBB
-
 config MACH_OMAP3517EVM
        bool "OMAP3517/ AM3517 EVM board"
        depends on ARCH_OMAP3
@@ -314,33 +304,12 @@ config MACH_NOKIA_N8X0
        select MACH_NOKIA_N810_WIMAX
        select OMAP_PACKAGE_ZAC
 
-config MACH_NOKIA_RM680
-       bool "Nokia N950 (RM-680) / N9 (RM-696) phones"
-       depends on ARCH_OMAP3
-       default y
-       select MACH_NOKIA_RM696
-       select OMAP_PACKAGE_CBB
-
 config MACH_NOKIA_RX51
        bool "Nokia N900 (RX-51) phone"
        depends on ARCH_OMAP3
        default y
        select OMAP_PACKAGE_CBB
 
-config MACH_OMAP_ZOOM2
-       bool "OMAP3 Zoom2 board"
-       depends on ARCH_OMAP3
-       default y
-       select OMAP_PACKAGE_CBB
-       select REGULATOR_FIXED_VOLTAGE if REGULATOR
-
-config MACH_OMAP_ZOOM3
-       bool "OMAP3630 Zoom3 board"
-       depends on ARCH_OMAP3
-       default y
-       select OMAP_PACKAGE_CBP
-       select REGULATOR_FIXED_VOLTAGE if REGULATOR
-
 config MACH_CM_T35
        bool "CompuLab CM-T35/CM-T3730 modules"
        depends on ARCH_OMAP3
@@ -357,31 +326,12 @@ config MACH_CM_T3517
 config MACH_CM_T3730
        bool
 
-config MACH_IGEP0020
-       bool "IGEP v2 board"
-       depends on ARCH_OMAP3
-       default y
-       select OMAP_PACKAGE_CBB
-
-config MACH_IGEP0030
-       bool "IGEP OMAP3 module"
-       depends on ARCH_OMAP3
-       default y
-       select MACH_IGEP0020
-       select OMAP_PACKAGE_CBB
-
 config MACH_SBC3530
        bool "OMAP3 SBC STALKER board"
        depends on ARCH_OMAP3
        default y
        select OMAP_PACKAGE_CUS
 
-config MACH_OMAP_3630SDP
-       bool "OMAP3630 SDP board"
-       depends on ARCH_OMAP3
-       default y
-       select OMAP_PACKAGE_CBP
-
 config MACH_TI8168EVM
        bool "TI8168 Evaluation Module"
        depends on SOC_TI81XX
index afb457c3135b18707ea23cc7019c68da0ec4c099..096d6bbcd3bcc5bfcc3499e7a50e55c175f2f3f0 100644 (file)
@@ -233,7 +233,7 @@ obj-y                                       += drm.o
 endif
 
 # Specific board support
-obj-$(CONFIG_MACH_OMAP_GENERIC)                += board-generic.o
+obj-$(CONFIG_MACH_OMAP_GENERIC)                += board-generic.o pdata-quirks.o
 obj-$(CONFIG_MACH_OMAP_H4)             += board-h4.o
 obj-$(CONFIG_MACH_OMAP_2430SDP)                += board-2430sdp.o
 obj-$(CONFIG_MACH_OMAP3_BEAGLE)                += board-omap3beagle.o
@@ -242,26 +242,14 @@ obj-$(CONFIG_MACH_OMAP_LDP)               += board-ldp.o
 obj-$(CONFIG_MACH_OMAP3530_LV_SOM)      += board-omap3logic.o
 obj-$(CONFIG_MACH_OMAP3_TORPEDO)        += board-omap3logic.o
 obj-$(CONFIG_MACH_OVERO)               += board-overo.o
-obj-$(CONFIG_MACH_OMAP3EVM)            += board-omap3evm.o
 obj-$(CONFIG_MACH_OMAP3_PANDORA)       += board-omap3pandora.o
 obj-$(CONFIG_MACH_OMAP_3430SDP)                += board-3430sdp.o
 obj-$(CONFIG_MACH_NOKIA_N8X0)          += board-n8x0.o
-obj-$(CONFIG_MACH_NOKIA_RM680)         += board-rm680.o sdram-nokia.o
 obj-$(CONFIG_MACH_NOKIA_RX51)          += board-rx51.o sdram-nokia.o
 obj-$(CONFIG_MACH_NOKIA_RX51)          += board-rx51-peripherals.o
 obj-$(CONFIG_MACH_NOKIA_RX51)          += board-rx51-video.o
-obj-$(CONFIG_MACH_OMAP_ZOOM2)          += board-zoom.o board-zoom-peripherals.o
-obj-$(CONFIG_MACH_OMAP_ZOOM2)          += board-zoom-display.o
-obj-$(CONFIG_MACH_OMAP_ZOOM2)          += board-zoom-debugboard.o
-obj-$(CONFIG_MACH_OMAP_ZOOM3)          += board-zoom.o board-zoom-peripherals.o
-obj-$(CONFIG_MACH_OMAP_ZOOM3)          += board-zoom-display.o
-obj-$(CONFIG_MACH_OMAP_ZOOM3)          += board-zoom-debugboard.o
-obj-$(CONFIG_MACH_OMAP_3630SDP)                += board-3630sdp.o
-obj-$(CONFIG_MACH_OMAP_3630SDP)                += board-zoom-peripherals.o
-obj-$(CONFIG_MACH_OMAP_3630SDP)                += board-zoom-display.o
 obj-$(CONFIG_MACH_CM_T35)              += board-cm-t35.o
 obj-$(CONFIG_MACH_CM_T3517)            += board-cm-t3517.o
-obj-$(CONFIG_MACH_IGEP0020)            += board-igep0020.o
 obj-$(CONFIG_MACH_TOUCHBOOK)           += board-omap3touchbook.o
 
 obj-$(CONFIG_MACH_OMAP3517EVM)         += board-am3517evm.o
diff --git a/arch/arm/mach-omap2/board-3630sdp.c b/arch/arm/mach-omap2/board-3630sdp.c
deleted file mode 100644 (file)
index 20d6d81..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Inc.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/gpio.h>
-#include <linux/mtd/nand.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-
-#include "common.h"
-#include "gpmc-smc91x.h"
-
-#include "board-zoom.h"
-
-#include "board-flash.h"
-#include "mux.h"
-#include "sdram-hynix-h8mbx00u0mer-0em.h"
-
-#if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
-
-static struct omap_smc91x_platform_data board_smc91x_data = {
-       .cs             = 3,
-       .flags          = GPMC_MUX_ADD_DATA | IORESOURCE_IRQ_LOWLEVEL,
-};
-
-static void __init board_smc91x_init(void)
-{
-       board_smc91x_data.gpio_irq = 158;
-       gpmc_smc91x_init(&board_smc91x_data);
-}
-
-#else
-
-static inline void board_smc91x_init(void)
-{
-}
-
-#endif /* defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE) */
-
-static void enable_board_wakeup_source(void)
-{
-       /* T2 interrupt line (keypad) */
-       omap_mux_init_signal("sys_nirq",
-               OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
-}
-
-static struct usbhs_phy_data phy_data[] __initdata = {
-       {
-               .port = 1,
-               .reset_gpio = 126,
-               .vcc_gpio = -EINVAL,
-       },
-       {
-               .port = 2,
-               .reset_gpio = 61,
-               .vcc_gpio = -EINVAL,
-       },
-};
-
-static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
-
-       .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
-       .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
-};
-
-#ifdef CONFIG_OMAP_MUX
-static struct omap_board_mux board_mux[] __initdata = {
-       { .reg_offset = OMAP_MUX_TERMINATOR },
-};
-#endif
-
-/*
- * SDP3630 CS organization
- * See also the Switch S8 settings in the comments.
- */
-static char chip_sel_sdp[][GPMC_CS_NUM] = {
-       {PDC_NOR, PDC_NAND, PDC_ONENAND, DBG_MPDB, 0, 0, 0, 0}, /* S8:1111 */
-       {PDC_ONENAND, PDC_NAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1110 */
-       {PDC_NAND, PDC_ONENAND, PDC_NOR, DBG_MPDB, 0, 0, 0, 0}, /* S8:1101 */
-};
-
-static struct mtd_partition sdp_nor_partitions[] = {
-       /* bootloader (U-Boot, etc) in first sector */
-       {
-               .name           = "Bootloader-NOR",
-               .offset         = 0,
-               .size           = SZ_256K,
-               .mask_flags     = MTD_WRITEABLE, /* force read-only */
-       },
-       /* bootloader params in the next sector */
-       {
-               .name           = "Params-NOR",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = SZ_256K,
-               .mask_flags     = 0,
-       },
-       /* kernel */
-       {
-               .name           = "Kernel-NOR",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = SZ_2M,
-               .mask_flags     = 0
-       },
-       /* file system */
-       {
-               .name           = "Filesystem-NOR",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = MTDPART_SIZ_FULL,
-               .mask_flags     = 0
-       }
-};
-
-static struct mtd_partition sdp_onenand_partitions[] = {
-       {
-               .name           = "X-Loader-OneNAND",
-               .offset         = 0,
-               .size           = 4 * (64 * 2048),
-               .mask_flags     = MTD_WRITEABLE  /* force read-only */
-       },
-       {
-               .name           = "U-Boot-OneNAND",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 2 * (64 * 2048),
-               .mask_flags     = MTD_WRITEABLE  /* force read-only */
-       },
-       {
-               .name           = "U-Boot Environment-OneNAND",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 1 * (64 * 2048),
-       },
-       {
-               .name           = "Kernel-OneNAND",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 16 * (64 * 2048),
-       },
-       {
-               .name           = "File System-OneNAND",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = MTDPART_SIZ_FULL,
-       },
-};
-
-static struct mtd_partition sdp_nand_partitions[] = {
-       /* All the partition sizes are listed in terms of NAND block size */
-       {
-               .name           = "X-Loader-NAND",
-               .offset         = 0,
-               .size           = 4 * (64 * 2048),
-               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
-       },
-       {
-               .name           = "U-Boot-NAND",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x80000 */
-               .size           = 10 * (64 * 2048),
-               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
-       },
-       {
-               .name           = "Boot Env-NAND",
-
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x1c0000 */
-               .size           = 6 * (64 * 2048),
-       },
-       {
-               .name           = "Kernel-NAND",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x280000 */
-               .size           = 40 * (64 * 2048),
-       },
-       {
-               .name           = "File System - NAND",
-               .size           = MTDPART_SIZ_FULL,
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x780000 */
-       },
-};
-
-static struct flash_partitions sdp_flash_partitions[] = {
-       {
-               .parts = sdp_nor_partitions,
-               .nr_parts = ARRAY_SIZE(sdp_nor_partitions),
-       },
-       {
-               .parts = sdp_onenand_partitions,
-               .nr_parts = ARRAY_SIZE(sdp_onenand_partitions),
-       },
-       {
-               .parts = sdp_nand_partitions,
-               .nr_parts = ARRAY_SIZE(sdp_nand_partitions),
-       },
-};
-
-static void __init omap_sdp_init(void)
-{
-       omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
-       zoom_peripherals_init();
-       omap_sdrc_init(h8mbx00u0mer0em_sdrc_params,
-                                 h8mbx00u0mer0em_sdrc_params);
-       zoom_display_init();
-       board_smc91x_init();
-       board_flash_init(sdp_flash_partitions, chip_sel_sdp, NAND_BUSWIDTH_16);
-       enable_board_wakeup_source();
-
-       usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
-       usbhs_init(&usbhs_bdata);
-}
-
-MACHINE_START(OMAP_3630SDP, "OMAP 3630SDP board")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap3630_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = omap_sdp_init,
-       .init_late      = omap3630_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
index 39c78387ddecb1b287ebfe732d7de0f3c62ca4db..19f1652e94cfbf5e1f09d2d4cc27e44087cc68d7 100644 (file)
 #include <linux/of_irq.h>
 #include <linux/of_platform.h>
 #include <linux/irqdomain.h>
-#include <linux/clk.h>
 
 #include <asm/mach/arch.h>
 
 #include "common.h"
-#include "common-board-devices.h"
-#include "dss-common.h"
 
 #if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
 #define intc_of_init   NULL
@@ -36,40 +33,9 @@ static struct of_device_id omap_dt_match_table[] __initdata = {
        { }
 };
 
-/*
- * Create alias for USB host PHY clock.
- * Remove this when clock phandle can be provided via DT
- */
-static void __init legacy_init_ehci_clk(char *clkname)
-{
-       int ret;
-
-       ret = clk_add_alias("main_clk", NULL, clkname, NULL);
-       if (ret) {
-               pr_err("%s:Failed to add main_clk alias to %s :%d\n",
-                                               __func__, clkname, ret);
-       }
-}
-
 static void __init omap_generic_init(void)
 {
-       omap_sdrc_init(NULL, NULL);
-
-       of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
-
-       /*
-        * HACK: call display setup code for selected boards to enable omapdss.
-        * This will be removed when omapdss supports DT.
-        */
-       if (of_machine_is_compatible("ti,omap4-panda")) {
-               omap4_panda_display_init_of();
-               legacy_init_ehci_clk("auxclk3_ck");
-
-       }
-       else if (of_machine_is_compatible("ti,omap4-sdp"))
-               omap_4430sdp_display_init_of();
-       else if (of_machine_is_compatible("ti,omap5-uevm"))
-               legacy_init_ehci_clk("auxclk1_ck");
+       pdata_quirks_init(omap_dt_match_table);
 }
 
 #ifdef CONFIG_SOC_OMAP2420
@@ -129,6 +95,24 @@ DT_MACHINE_START(OMAP3_DT, "Generic OMAP3 (Flattened Device Tree)")
        .restart        = omap3xxx_restart,
 MACHINE_END
 
+static const char *omap36xx_boards_compat[] __initdata = {
+       "ti,omap36xx",
+       NULL,
+};
+
+DT_MACHINE_START(OMAP36XX_DT, "Generic OMAP36xx (Flattened Device Tree)")
+       .reserve        = omap_reserve,
+       .map_io         = omap3_map_io,
+       .init_early     = omap3630_init_early,
+       .init_irq       = omap_intc_of_init,
+       .handle_irq     = omap3_intc_handle_irq,
+       .init_machine   = omap_generic_init,
+       .init_late      = omap3_init_late,
+       .init_time      = omap3_sync32k_timer_init,
+       .dt_compat      = omap36xx_boards_compat,
+       .restart        = omap3xxx_restart,
+MACHINE_END
+
 static const char *omap3_gp_boards_compat[] __initdata = {
        "ti,omap3-beagle",
        "timll,omap3-devkit8000",
@@ -162,6 +146,7 @@ DT_MACHINE_START(AM33XX_DT, "Generic AM33XX (Flattened Device Tree)")
        .init_irq       = omap_intc_of_init,
        .handle_irq     = omap3_intc_handle_irq,
        .init_machine   = omap_generic_init,
+       .init_late      = am33xx_init_late,
        .init_time      = omap3_gptimer_timer_init,
        .dt_compat      = am33xx_boards_compat,
        .restart        = am33xx_restart,
@@ -201,6 +186,7 @@ DT_MACHINE_START(OMAP5_DT, "Generic OMAP5 (Flattened Device Tree)")
        .init_early     = omap5_init_early,
        .init_irq       = omap_gic_of_init,
        .init_machine   = omap_generic_init,
+       .init_late      = omap5_init_late,
        .init_time      = omap5_realtime_timer_init,
        .dt_compat      = omap5_boards_compat,
        .restart        = omap44xx_restart,
@@ -216,6 +202,7 @@ static const char *am43_boards_compat[] __initdata = {
 DT_MACHINE_START(AM43_DT, "Generic AM43 (Flattened Device Tree)")
        .map_io         = am33xx_map_io,
        .init_early     = am43xx_init_early,
+       .init_late      = am43xx_init_late,
        .init_irq       = omap_gic_of_init,
        .init_machine   = omap_generic_init,
        .init_time      = omap3_sync32k_timer_init,
@@ -234,6 +221,7 @@ DT_MACHINE_START(DRA7XX_DT, "Generic DRA7XX (Flattened Device Tree)")
        .smp            = smp_ops(omap4_smp_ops),
        .map_io         = omap5_map_io,
        .init_early     = dra7xx_init_early,
+       .init_late      = dra7xx_init_late,
        .init_irq       = omap_gic_of_init,
        .init_machine   = omap_generic_init,
        .init_time      = omap5_realtime_timer_init,
diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c
deleted file mode 100644 (file)
index 06dbb2d..0000000
+++ /dev/null
@@ -1,718 +0,0 @@
-/*
- * Copyright (C) 2009 Integration Software and Electronic Engineering.
- *
- * Modified from mach-omap2/board-generic.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/io.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/input.h>
-#include <linux/usb/phy.h>
-
-#include <linux/regulator/machine.h>
-#include <linux/regulator/fixed.h>
-#include <linux/i2c/twl.h>
-#include <linux/mmc/host.h>
-
-#include <linux/mtd/nand.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-
-#include <video/omapdss.h>
-#include <video/omap-panel-data.h>
-#include <linux/platform_data/mtd-onenand-omap2.h>
-
-#include "common.h"
-#include "gpmc.h"
-#include "mux.h"
-#include "hsmmc.h"
-#include "sdram-numonyx-m65kxxxxam.h"
-#include "common-board-devices.h"
-#include "board-flash.h"
-#include "control.h"
-#include "gpmc-onenand.h"
-
-#define IGEP2_SMSC911X_CS       5
-#define IGEP2_SMSC911X_GPIO     176
-#define IGEP2_GPIO_USBH_NRESET  24
-#define IGEP2_GPIO_LED0_GREEN   26
-#define IGEP2_GPIO_LED0_RED     27
-#define IGEP2_GPIO_LED1_RED     28
-#define IGEP2_GPIO_DVI_PUP      170
-
-#define IGEP2_RB_GPIO_WIFI_NPD     94
-#define IGEP2_RB_GPIO_WIFI_NRESET  95
-#define IGEP2_RB_GPIO_BT_NRESET    137
-#define IGEP2_RC_GPIO_WIFI_NPD     138
-#define IGEP2_RC_GPIO_WIFI_NRESET  139
-#define IGEP2_RC_GPIO_BT_NRESET    137
-
-#define IGEP3_GPIO_LED0_GREEN  54
-#define IGEP3_GPIO_LED0_RED    53
-#define IGEP3_GPIO_LED1_RED    16
-#define IGEP3_GPIO_USBH_NRESET  183
-
-#define IGEP_SYSBOOT_MASK           0x1f
-#define IGEP_SYSBOOT_NAND           0x0f
-#define IGEP_SYSBOOT_ONENAND        0x10
-
-/*
- * IGEP2 Hardware Revision Table
- *
- *  --------------------------------------------------------------------------
- * | Id. | Hw Rev.            | HW0 (28) | WIFI_NPD | WIFI_NRESET | BT_NRESET |
- *  --------------------------------------------------------------------------
- * |  0  | B                  |   high   |  gpio94  |   gpio95    |     -     |
- * |  0  | B/C (B-compatible) |   high   |  gpio94  |   gpio95    |  gpio137  |
- * |  1  | C                  |   low    |  gpio138 |   gpio139   |  gpio137  |
- *  --------------------------------------------------------------------------
- */
-
-#define IGEP2_BOARD_HWREV_B    0
-#define IGEP2_BOARD_HWREV_C    1
-#define IGEP3_BOARD_HWREV      2
-
-static u8 hwrev;
-
-static void __init igep2_get_revision(void)
-{
-       u8 ret;
-
-       if (machine_is_igep0030()) {
-               hwrev = IGEP3_BOARD_HWREV;
-               return;
-       }
-
-       omap_mux_init_gpio(IGEP2_GPIO_LED1_RED, OMAP_PIN_INPUT);
-
-       if (gpio_request_one(IGEP2_GPIO_LED1_RED, GPIOF_IN, "GPIO_HW0_REV")) {
-               pr_warning("IGEP2: Could not obtain gpio GPIO_HW0_REV\n");
-               pr_err("IGEP2: Unknown Hardware Revision\n");
-               return;
-       }
-
-       ret = gpio_get_value(IGEP2_GPIO_LED1_RED);
-       if (ret == 0) {
-               pr_info("IGEP2: Hardware Revision C (B-NON compatible)\n");
-               hwrev = IGEP2_BOARD_HWREV_C;
-       } else if (ret ==  1) {
-               pr_info("IGEP2: Hardware Revision B/C (B compatible)\n");
-               hwrev = IGEP2_BOARD_HWREV_B;
-       } else {
-               pr_err("IGEP2: Unknown Hardware Revision\n");
-               hwrev = -1;
-       }
-
-       gpio_free(IGEP2_GPIO_LED1_RED);
-}
-
-#if defined(CONFIG_MTD_ONENAND_OMAP2) ||               \
-       defined(CONFIG_MTD_ONENAND_OMAP2_MODULE) ||     \
-       defined(CONFIG_MTD_NAND_OMAP2) ||               \
-       defined(CONFIG_MTD_NAND_OMAP2_MODULE)
-
-#define ONENAND_MAP             0x20000000
-
-/* NAND04GR4E1A ( x2 Flash built-in COMBO POP MEMORY )
- * Since the device is equipped with two DataRAMs, and two-plane NAND
- * Flash memory array, these two component enables simultaneous program
- * of 4KiB. Plane1 has only even blocks such as block0, block2, block4
- * while Plane2 has only odd blocks such as block1, block3, block5.
- * So MTD regards it as 4KiB page size and 256KiB block size 64*(2*2048)
- */
-
-static struct mtd_partition igep_flash_partitions[] = {
-       {
-               .name           = "X-Loader",
-               .offset         = 0,
-               .size           = 2 * (64*(2*2048))
-       },
-       {
-               .name           = "U-Boot",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 6 * (64*(2*2048)),
-       },
-       {
-               .name           = "Environment",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 2 * (64*(2*2048)),
-       },
-       {
-               .name           = "Kernel",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 12 * (64*(2*2048)),
-       },
-       {
-               .name           = "File System",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = MTDPART_SIZ_FULL,
-       },
-};
-
-static inline u32 igep_get_sysboot_value(void)
-{
-       return omap_ctrl_readl(OMAP343X_CONTROL_STATUS) & IGEP_SYSBOOT_MASK;
-}
-
-static void __init igep_flash_init(void)
-{
-       u32 mux;
-       mux = igep_get_sysboot_value();
-
-       if (mux == IGEP_SYSBOOT_NAND) {
-               pr_info("IGEP: initializing NAND memory device\n");
-               board_nand_init(igep_flash_partitions,
-                               ARRAY_SIZE(igep_flash_partitions),
-                               0, NAND_BUSWIDTH_16, nand_default_timings);
-       } else if (mux == IGEP_SYSBOOT_ONENAND) {
-               pr_info("IGEP: initializing OneNAND memory device\n");
-               board_onenand_init(igep_flash_partitions,
-                                  ARRAY_SIZE(igep_flash_partitions), 0);
-       } else {
-               pr_err("IGEP: Flash: unsupported sysboot sequence found\n");
-       }
-}
-
-#else
-static void __init igep_flash_init(void) {}
-#endif
-
-#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
-
-#include <linux/smsc911x.h>
-#include "gpmc-smsc911x.h"
-
-static struct omap_smsc911x_platform_data smsc911x_cfg = {
-       .cs             = IGEP2_SMSC911X_CS,
-       .gpio_irq       = IGEP2_SMSC911X_GPIO,
-       .gpio_reset     = -EINVAL,
-       .flags          = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS,
-};
-
-static inline void __init igep2_init_smsc911x(void)
-{
-       gpmc_smsc911x_init(&smsc911x_cfg);
-}
-
-#else
-static inline void __init igep2_init_smsc911x(void) { }
-#endif
-
-static struct regulator_consumer_supply igep_vmmc1_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
-};
-
-/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */
-static struct regulator_init_data igep_vmmc1 = {
-       .constraints = {
-               .min_uV                 = 1850000,
-               .max_uV                 = 3150000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(igep_vmmc1_supply),
-       .consumer_supplies      = igep_vmmc1_supply,
-};
-
-static struct regulator_consumer_supply igep_vio_supply[] = {
-       REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.1"),
-};
-
-static struct regulator_init_data igep_vio = {
-       .constraints = {
-               .min_uV                 = 1800000,
-               .max_uV                 = 1800000,
-               .apply_uV               = 1,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(igep_vio_supply),
-       .consumer_supplies      = igep_vio_supply,
-};
-
-static struct regulator_consumer_supply igep_vmmc2_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"),
-};
-
-static struct regulator_init_data igep_vmmc2 = {
-       .constraints            = {
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL,
-               .always_on              = 1,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(igep_vmmc2_supply),
-       .consumer_supplies      = igep_vmmc2_supply,
-};
-
-static struct fixed_voltage_config igep_vwlan = {
-       .supply_name            = "vwlan",
-       .microvolts             = 3300000,
-       .gpio                   = -EINVAL,
-       .enabled_at_boot        = 1,
-       .init_data              = &igep_vmmc2,
-};
-
-static struct platform_device igep_vwlan_device = {
-       .name           = "reg-fixed-voltage",
-       .id             = 0,
-       .dev = {
-               .platform_data  = &igep_vwlan,
-       },
-};
-
-static struct omap2_hsmmc_info mmc[] = {
-       {
-               .mmc            = 1,
-               .caps           = MMC_CAP_4_BIT_DATA,
-               .gpio_cd        = -EINVAL,
-               .gpio_wp        = -EINVAL,
-               .deferred       = true,
-       },
-#if defined(CONFIG_LIBERTAS_SDIO) || defined(CONFIG_LIBERTAS_SDIO_MODULE)
-       {
-               .mmc            = 2,
-               .caps           = MMC_CAP_4_BIT_DATA,
-               .gpio_cd        = -EINVAL,
-               .gpio_wp        = -EINVAL,
-       },
-#endif
-       {}      /* Terminator */
-};
-
-#if defined(CONFIG_LEDS_GPIO) || defined(CONFIG_LEDS_GPIO_MODULE)
-#include <linux/leds.h>
-
-static struct gpio_led igep_gpio_leds[] = {
-       [0] = {
-               .name                   = "omap3:red:user0",
-               .default_state          = 0,
-       },
-       [1] = {
-               .name                   = "omap3:green:boot",
-               .default_state          = 1,
-       },
-       [2] = {
-               .name                   = "omap3:red:user1",
-               .default_state          = 0,
-       },
-       [3] = {
-               .name                   = "omap3:green:user1",
-               .default_state          = 0,
-               .gpio                   = -EINVAL, /* gets replaced */
-               .active_low             = 1,
-       },
-};
-
-static struct gpio_led_platform_data igep_led_pdata = {
-       .leds           = igep_gpio_leds,
-       .num_leds       = ARRAY_SIZE(igep_gpio_leds),
-};
-
-static struct platform_device igep_led_device = {
-        .name   = "leds-gpio",
-        .id     = -1,
-        .dev    = {
-                .platform_data  =  &igep_led_pdata,
-       },
-};
-
-static void __init igep_leds_init(void)
-{
-       if (machine_is_igep0020()) {
-               igep_gpio_leds[0].gpio = IGEP2_GPIO_LED0_RED;
-               igep_gpio_leds[1].gpio = IGEP2_GPIO_LED0_GREEN;
-               igep_gpio_leds[2].gpio = IGEP2_GPIO_LED1_RED;
-       } else {
-               igep_gpio_leds[0].gpio = IGEP3_GPIO_LED0_RED;
-               igep_gpio_leds[1].gpio = IGEP3_GPIO_LED0_GREEN;
-               igep_gpio_leds[2].gpio = IGEP3_GPIO_LED1_RED;
-       }
-
-       platform_device_register(&igep_led_device);
-}
-
-#else
-static struct gpio igep_gpio_leds[] __initdata = {
-       { -EINVAL,      GPIOF_OUT_INIT_LOW, "gpio-led:red:d0"   },
-       { -EINVAL,      GPIOF_OUT_INIT_LOW, "gpio-led:green:d0" },
-       { -EINVAL,      GPIOF_OUT_INIT_LOW, "gpio-led:red:d1"   },
-};
-
-static inline void igep_leds_init(void)
-{
-       int i;
-
-       if (machine_is_igep0020()) {
-               igep_gpio_leds[0].gpio = IGEP2_GPIO_LED0_RED;
-               igep_gpio_leds[1].gpio = IGEP2_GPIO_LED0_GREEN;
-               igep_gpio_leds[2].gpio = IGEP2_GPIO_LED1_RED;
-       } else {
-               igep_gpio_leds[0].gpio = IGEP3_GPIO_LED0_RED;
-               igep_gpio_leds[1].gpio = IGEP3_GPIO_LED0_GREEN;
-               igep_gpio_leds[2].gpio = IGEP3_GPIO_LED1_RED;
-       }
-
-       if (gpio_request_array(igep_gpio_leds, ARRAY_SIZE(igep_gpio_leds))) {
-               pr_warning("IGEP v2: Could not obtain leds gpios\n");
-               return;
-       }
-
-       for (i = 0; i < ARRAY_SIZE(igep_gpio_leds); i++)
-               gpio_export(igep_gpio_leds[i].gpio, 0);
-}
-#endif
-
-static struct gpio igep2_twl_gpios[] = {
-       { -EINVAL, GPIOF_IN,            "GPIO_EHCI_NOC"  },
-       { -EINVAL, GPIOF_OUT_INIT_LOW,  "GPIO_USBH_CPEN" },
-};
-
-static int igep_twl_gpio_setup(struct device *dev,
-               unsigned gpio, unsigned ngpio)
-{
-       int ret;
-
-       /* gpio + 0 is "mmc0_cd" (input/IRQ) */
-       mmc[0].gpio_cd = gpio + 0;
-       omap_hsmmc_late_init(mmc);
-
-       /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
-#if !defined(CONFIG_LEDS_GPIO) && !defined(CONFIG_LEDS_GPIO_MODULE)
-       ret = gpio_request_one(gpio + TWL4030_GPIO_MAX + 1, GPIOF_OUT_INIT_HIGH,
-                              "gpio-led:green:d1");
-       if (ret == 0)
-               gpio_export(gpio + TWL4030_GPIO_MAX + 1, 0);
-       else
-               pr_warning("IGEP: Could not obtain gpio GPIO_LED1_GREEN\n");
-#else
-       igep_gpio_leds[3].gpio = gpio + TWL4030_GPIO_MAX + 1;
-#endif
-
-       if (machine_is_igep0030())
-               return 0;
-
-       /*
-        * REVISIT: need ehci-omap hooks for external VBUS
-        * power switch and overcurrent detect
-        */
-       igep2_twl_gpios[0].gpio = gpio + 1;
-
-       /* TWL4030_GPIO_MAX + 0 == ledA, GPIO_USBH_CPEN (out, active low) */
-       igep2_twl_gpios[1].gpio = gpio + TWL4030_GPIO_MAX;
-
-       ret = gpio_request_array(igep2_twl_gpios, ARRAY_SIZE(igep2_twl_gpios));
-       if (ret < 0)
-               pr_err("IGEP2: Could not obtain gpio for USBH_CPEN");
-
-       return 0;
-};
-
-static struct twl4030_gpio_platform_data igep_twl4030_gpio_pdata = {
-       .use_leds       = true,
-       .setup          = igep_twl_gpio_setup,
-};
-
-static struct connector_dvi_platform_data omap3stalker_dvi_connector_pdata = {
-       .name                   = "dvi",
-       .source                 = "tfp410.0",
-       .i2c_bus_num            = 3,
-};
-
-static struct platform_device omap3stalker_dvi_connector_device = {
-       .name                   = "connector-dvi",
-       .id                     = 0,
-       .dev.platform_data      = &omap3stalker_dvi_connector_pdata,
-};
-
-static struct encoder_tfp410_platform_data omap3stalker_tfp410_pdata = {
-       .name                   = "tfp410.0",
-       .source                 = "dpi.0",
-       .data_lines             = 24,
-       .power_down_gpio        = IGEP2_GPIO_DVI_PUP,
-};
-
-static struct platform_device omap3stalker_tfp410_device = {
-       .name                   = "tfp410",
-       .id                     = 0,
-       .dev.platform_data      = &omap3stalker_tfp410_pdata,
-};
-
-static struct omap_dss_board_info igep2_dss_data = {
-       .default_display_name = "dvi",
-};
-
-static struct platform_device *igep_devices[] __initdata = {
-       &igep_vwlan_device,
-       &omap3stalker_tfp410_device,
-       &omap3stalker_dvi_connector_device,
-};
-
-static int igep2_keymap[] = {
-       KEY(0, 0, KEY_LEFT),
-       KEY(0, 1, KEY_RIGHT),
-       KEY(0, 2, KEY_A),
-       KEY(0, 3, KEY_B),
-       KEY(1, 0, KEY_DOWN),
-       KEY(1, 1, KEY_UP),
-       KEY(1, 2, KEY_E),
-       KEY(1, 3, KEY_F),
-       KEY(2, 0, KEY_ENTER),
-       KEY(2, 1, KEY_I),
-       KEY(2, 2, KEY_J),
-       KEY(2, 3, KEY_K),
-       KEY(3, 0, KEY_M),
-       KEY(3, 1, KEY_N),
-       KEY(3, 2, KEY_O),
-       KEY(3, 3, KEY_P)
-};
-
-static struct matrix_keymap_data igep2_keymap_data = {
-       .keymap                 = igep2_keymap,
-       .keymap_size            = ARRAY_SIZE(igep2_keymap),
-};
-
-static struct twl4030_keypad_data igep2_keypad_pdata = {
-       .keymap_data    = &igep2_keymap_data,
-       .rows           = 4,
-       .cols           = 4,
-       .rep            = 1,
-};
-
-static struct twl4030_platform_data igep_twldata = {
-       /* platform_data for children goes here */
-       .gpio           = &igep_twl4030_gpio_pdata,
-       .vmmc1          = &igep_vmmc1,
-       .vio            = &igep_vio,
-};
-
-static struct i2c_board_info __initdata igep2_i2c3_boardinfo[] = {
-       {
-               I2C_BOARD_INFO("eeprom", 0x50),
-       },
-};
-
-static void __init igep_i2c_init(void)
-{
-       int ret;
-
-       omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB,
-                             TWL_COMMON_REGULATOR_VPLL2);
-       igep_twldata.vpll2->constraints.apply_uV = true;
-       igep_twldata.vpll2->constraints.name = "VDVI";
-
-       if (machine_is_igep0020()) {
-               /*
-                * Bus 3 is attached to the DVI port where devices like the
-                * pico DLP projector don't work reliably with 400kHz
-                */
-               ret = omap_register_i2c_bus(3, 100, igep2_i2c3_boardinfo,
-                                           ARRAY_SIZE(igep2_i2c3_boardinfo));
-               if (ret)
-                       pr_warning("IGEP2: Could not register I2C3 bus (%d)\n", ret);
-
-               igep_twldata.keypad     = &igep2_keypad_pdata;
-               /* Get common pmic data */
-               omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO, 0);
-       }
-
-       omap3_pmic_init("twl4030", &igep_twldata);
-}
-
-static struct usbhs_phy_data igep2_phy_data[] __initdata = {
-       {
-               .port = 1,
-               .reset_gpio = IGEP2_GPIO_USBH_NRESET,
-               .vcc_gpio = -EINVAL,
-       },
-};
-
-static struct usbhs_phy_data igep3_phy_data[] __initdata = {
-       {
-               .port = 2,
-               .reset_gpio = IGEP3_GPIO_USBH_NRESET,
-               .vcc_gpio = -EINVAL,
-       },
-};
-
-static struct usbhs_omap_platform_data igep2_usbhs_bdata __initdata = {
-       .port_mode[0] = OMAP_EHCI_PORT_MODE_PHY,
-};
-
-static struct usbhs_omap_platform_data igep3_usbhs_bdata __initdata = {
-       .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
-};
-
-#ifdef CONFIG_OMAP_MUX
-static struct omap_board_mux board_mux[] __initdata = {
-       /* Display Sub System */
-       OMAP3_MUX(DSS_PCLK, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_HSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_VSYNC, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_ACBIAS, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA0, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA1, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA2, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA3, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA4, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA5, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA6, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA7, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA8, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA9, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA10, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA11, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA12, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA13, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA14, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA15, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA16, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA17, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA18, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA19, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA20, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA21, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA22, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       OMAP3_MUX(DSS_DATA23, OMAP_MUX_MODE0 | OMAP_PIN_OUTPUT),
-       /* TFP410 PanelBus DVI Transmitte (GPIO_170) */
-       OMAP3_MUX(HDQ_SIO, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
-       /* SMSC9221 LAN Controller ETH IRQ (GPIO_176) */
-       OMAP3_MUX(MCSPI1_CS2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
-       { .reg_offset = OMAP_MUX_TERMINATOR },
-};
-#endif
-
-#if defined(CONFIG_LIBERTAS_SDIO) || defined(CONFIG_LIBERTAS_SDIO_MODULE)
-static struct gpio igep_wlan_bt_gpios[] __initdata = {
-       { -EINVAL, GPIOF_OUT_INIT_HIGH, "GPIO_WIFI_NPD"    },
-       { -EINVAL, GPIOF_OUT_INIT_HIGH, "GPIO_WIFI_NRESET" },
-       { -EINVAL, GPIOF_OUT_INIT_HIGH, "GPIO_BT_NRESET"   },
-};
-
-static void __init igep_wlan_bt_init(void)
-{
-       int err;
-
-       /* GPIO's for WLAN-BT combo depends on hardware revision */
-       if (hwrev == IGEP2_BOARD_HWREV_B) {
-               igep_wlan_bt_gpios[0].gpio = IGEP2_RB_GPIO_WIFI_NPD;
-               igep_wlan_bt_gpios[1].gpio = IGEP2_RB_GPIO_WIFI_NRESET;
-               igep_wlan_bt_gpios[2].gpio = IGEP2_RB_GPIO_BT_NRESET;
-       } else if (hwrev == IGEP2_BOARD_HWREV_C || machine_is_igep0030()) {
-               igep_wlan_bt_gpios[0].gpio = IGEP2_RC_GPIO_WIFI_NPD;
-               igep_wlan_bt_gpios[1].gpio = IGEP2_RC_GPIO_WIFI_NRESET;
-               igep_wlan_bt_gpios[2].gpio = IGEP2_RC_GPIO_BT_NRESET;
-       } else
-               return;
-
-       /* Make sure that the GPIO pins are muxed correctly */
-       omap_mux_init_gpio(igep_wlan_bt_gpios[0].gpio, OMAP_PIN_OUTPUT);
-       omap_mux_init_gpio(igep_wlan_bt_gpios[1].gpio, OMAP_PIN_OUTPUT);
-       omap_mux_init_gpio(igep_wlan_bt_gpios[2].gpio, OMAP_PIN_OUTPUT);
-
-       err = gpio_request_array(igep_wlan_bt_gpios,
-                                ARRAY_SIZE(igep_wlan_bt_gpios));
-       if (err) {
-               pr_warning("IGEP2: Could not obtain WIFI/BT gpios\n");
-               return;
-       }
-
-       gpio_export(igep_wlan_bt_gpios[0].gpio, 0);
-       gpio_export(igep_wlan_bt_gpios[1].gpio, 0);
-       gpio_export(igep_wlan_bt_gpios[2].gpio, 0);
-
-       gpio_set_value(igep_wlan_bt_gpios[1].gpio, 0);
-       udelay(10);
-       gpio_set_value(igep_wlan_bt_gpios[1].gpio, 1);
-
-}
-#else
-static inline void __init igep_wlan_bt_init(void) { }
-#endif
-
-static struct regulator_consumer_supply dummy_supplies[] = {
-       REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
-       REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
-};
-
-static void __init igep_init(void)
-{
-       regulator_register_fixed(1, dummy_supplies, ARRAY_SIZE(dummy_supplies));
-       omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-
-       /* Get IGEP2 hardware revision */
-       igep2_get_revision();
-
-       omap_hsmmc_init(mmc);
-
-       /* Register I2C busses and drivers */
-       igep_i2c_init();
-       platform_add_devices(igep_devices, ARRAY_SIZE(igep_devices));
-       omap_serial_init();
-       omap_sdrc_init(m65kxxxxam_sdrc_params,
-                                 m65kxxxxam_sdrc_params);
-       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
-       usb_musb_init(NULL);
-
-       igep_flash_init();
-       igep_leds_init();
-       omap_twl4030_audio_init("igep2", NULL);
-
-       /*
-        * WLAN-BT combo module from MuRata which has a Marvell WLAN
-        * (88W8686) + CSR Bluetooth chipset. Uses SDIO interface.
-        */
-       igep_wlan_bt_init();
-
-       if (machine_is_igep0020()) {
-               omap_display_init(&igep2_dss_data);
-               igep2_init_smsc911x();
-               usbhs_init_phys(igep2_phy_data, ARRAY_SIZE(igep2_phy_data));
-               usbhs_init(&igep2_usbhs_bdata);
-       } else {
-               usbhs_init_phys(igep3_phy_data, ARRAY_SIZE(igep3_phy_data));
-               usbhs_init(&igep3_usbhs_bdata);
-       }
-}
-
-MACHINE_START(IGEP0020, "IGEP v2 board")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap35xx_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = igep_init,
-       .init_late      = omap35xx_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
-
-MACHINE_START(IGEP0030, "IGEP OMAP3 module")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap35xx_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = igep_init,
-       .init_late      = omap35xx_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
index dd8da2c5399f34386baacd5d79eba2bdc41dc8c9..4ec8d82b0492f3e66e75bec0aa7cff8cd25a5faa 100644 (file)
@@ -36,7 +36,6 @@
 #include <asm/mach/map.h>
 
 #include "common.h"
-#include "board-zoom.h"
 #include "gpmc.h"
 #include "gpmc-smsc911x.h"
 
@@ -406,7 +405,7 @@ static void __init omap_ldp_init(void)
        usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
        usb_musb_init(NULL);
        board_nand_init(ldp_nand_partitions, ARRAY_SIZE(ldp_nand_partitions),
-                       ZOOM_NAND_CS, 0, nand_default_timings);
+                       0, 0, nand_default_timings);
 
        omap_hsmmc_init(mmc);
        ldp_display_init();
diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c
deleted file mode 100644 (file)
index 1814387..0000000
+++ /dev/null
@@ -1,756 +0,0 @@
-/*
- * linux/arch/arm/mach-omap2/board-omap3evm.c
- *
- * Copyright (C) 2008 Texas Instruments
- *
- * Modified from mach-omap2/board-3430sdp.c
- *
- * Initial code: Syed Mohammed Khasim
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/delay.h>
-#include <linux/err.h>
-#include <linux/clk.h>
-#include <linux/gpio.h>
-#include <linux/input.h>
-#include <linux/input/matrix_keypad.h>
-#include <linux/leds.h>
-#include <linux/interrupt.h>
-
-#include <linux/mtd/mtd.h>
-#include <linux/mtd/partitions.h>
-#include <linux/mtd/nand.h>
-
-#include <linux/spi/spi.h>
-#include <linux/spi/ads7846.h>
-#include <linux/i2c/twl.h>
-#include <linux/usb/otg.h>
-#include <linux/usb/musb.h>
-#include <linux/usb/usb_phy_gen_xceiv.h>
-#include <linux/smsc911x.h>
-
-#include <linux/wl12xx.h>
-#include <linux/regulator/fixed.h>
-#include <linux/regulator/machine.h>
-#include <linux/mmc/host.h>
-#include <linux/export.h>
-#include <linux/usb/phy.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include <linux/platform_data/mtd-nand-omap2.h>
-#include "common.h"
-#include <linux/platform_data/spi-omap2-mcspi.h>
-#include <video/omapdss.h>
-#include <video/omap-panel-data.h>
-
-#include "soc.h"
-#include "mux.h"
-#include "sdram-micron-mt46h32m32lf-6.h"
-#include "hsmmc.h"
-#include "common-board-devices.h"
-#include "board-flash.h"
-
-#define        NAND_CS                 0
-
-#define OMAP3_EVM_TS_GPIO      175
-#define OMAP3_EVM_EHCI_VBUS    22
-#define OMAP3_EVM_EHCI_SELECT  61
-
-#define OMAP3EVM_ETHR_START    0x2c000000
-#define OMAP3EVM_ETHR_SIZE     1024
-#define OMAP3EVM_ETHR_ID_REV   0x50
-#define OMAP3EVM_ETHR_GPIO_IRQ 176
-#define OMAP3EVM_SMSC911X_CS   5
-/*
- * Eth Reset signal
- *     64 = Generation 1 (<=RevD)
- *     7 = Generation 2 (>=RevE)
- */
-#define OMAP3EVM_GEN1_ETHR_GPIO_RST    64
-#define OMAP3EVM_GEN2_ETHR_GPIO_RST    7
-
-/*
- * OMAP35x EVM revision
- * Run time detection of EVM revision is done by reading Ethernet
- * PHY ID -
- *     GEN_1   = 0x01150000
- *     GEN_2   = 0x92200000
- */
-enum {
-       OMAP3EVM_BOARD_GEN_1 = 0,       /* EVM Rev between  A - D */
-       OMAP3EVM_BOARD_GEN_2,           /* EVM Rev >= Rev E */
-};
-
-static u8 omap3_evm_version;
-
-static u8 get_omap3_evm_rev(void)
-{
-       return omap3_evm_version;
-}
-
-static void __init omap3_evm_get_revision(void)
-{
-       void __iomem *ioaddr;
-       unsigned int smsc_id;
-
-       /* Ethernet PHY ID is stored at ID_REV register */
-       ioaddr = ioremap_nocache(OMAP3EVM_ETHR_START, SZ_1K);
-       if (!ioaddr)
-               return;
-       smsc_id = readl(ioaddr + OMAP3EVM_ETHR_ID_REV) & 0xFFFF0000;
-       iounmap(ioaddr);
-
-       switch (smsc_id) {
-       /*SMSC9115 chipset*/
-       case 0x01150000:
-               omap3_evm_version = OMAP3EVM_BOARD_GEN_1;
-               break;
-       /*SMSC 9220 chipset*/
-       case 0x92200000:
-       default:
-               omap3_evm_version = OMAP3EVM_BOARD_GEN_2;
-       }
-}
-
-#if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
-#include "gpmc-smsc911x.h"
-
-static struct omap_smsc911x_platform_data smsc911x_cfg = {
-       .cs             = OMAP3EVM_SMSC911X_CS,
-       .gpio_irq       = OMAP3EVM_ETHR_GPIO_IRQ,
-       .gpio_reset     = -EINVAL,
-       .flags          = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS,
-};
-
-static inline void __init omap3evm_init_smsc911x(void)
-{
-       /* Configure ethernet controller reset gpio */
-       if (cpu_is_omap3430()) {
-               if (get_omap3_evm_rev() == OMAP3EVM_BOARD_GEN_1)
-                       smsc911x_cfg.gpio_reset = OMAP3EVM_GEN1_ETHR_GPIO_RST;
-               else
-                       smsc911x_cfg.gpio_reset = OMAP3EVM_GEN2_ETHR_GPIO_RST;
-       }
-
-       gpmc_smsc911x_init(&smsc911x_cfg);
-}
-
-#else
-static inline void __init omap3evm_init_smsc911x(void) { return; }
-#endif
-
-/*
- * OMAP3EVM LCD Panel control signals
- */
-#define OMAP3EVM_LCD_PANEL_LR          2
-#define OMAP3EVM_LCD_PANEL_UD          3
-#define OMAP3EVM_LCD_PANEL_INI         152
-#define OMAP3EVM_LCD_PANEL_QVGA                154
-#define OMAP3EVM_LCD_PANEL_RESB                155
-
-#define OMAP3EVM_LCD_PANEL_ENVDD       153
-#define OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO        210
-
-/*
- * OMAP3EVM DVI control signals
- */
-#define OMAP3EVM_DVI_PANEL_EN_GPIO     199
-
-#ifdef CONFIG_BROKEN
-static void __init omap3_evm_display_init(void)
-{
-       int r;
-
-       r = gpio_request_one(OMAP3EVM_LCD_PANEL_ENVDD, GPIOF_OUT_INIT_LOW,
-                               "lcd_panel_envdd");
-       if (r)
-               pr_err("failed to get lcd_panel_envdd GPIO\n");
-
-       r = gpio_request_one(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO,
-                               GPIOF_OUT_INIT_LOW, "lcd_panel_bklight");
-       if (r)
-               pr_err("failed to get lcd_panel_bklight GPIO\n");
-
-       if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
-               gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 0);
-       else
-               gpio_set_value_cansleep(OMAP3EVM_LCD_PANEL_BKLIGHT_GPIO, 1);
-}
-#endif
-
-static struct panel_sharp_ls037v7dw01_platform_data omap3_evm_lcd_pdata = {
-       .name                   = "lcd",
-       .source                 = "dpi.0",
-
-       .data_lines             = 18,
-
-       .resb_gpio              = OMAP3EVM_LCD_PANEL_RESB,
-       .ini_gpio               = OMAP3EVM_LCD_PANEL_INI,
-       .mo_gpio                = OMAP3EVM_LCD_PANEL_QVGA,
-       .lr_gpio                = OMAP3EVM_LCD_PANEL_LR,
-       .ud_gpio                = OMAP3EVM_LCD_PANEL_UD,
-};
-
-static struct platform_device omap3_evm_lcd_device = {
-       .name                   = "panel-sharp-ls037v7dw01",
-       .id                     = 0,
-       .dev.platform_data      = &omap3_evm_lcd_pdata,
-};
-
-static struct connector_dvi_platform_data omap3_evm_dvi_connector_pdata = {
-       .name                   = "dvi",
-       .source                 = "tfp410.0",
-       .i2c_bus_num            = -1,
-};
-
-static struct platform_device omap3_evm_dvi_connector_device = {
-       .name                   = "connector-dvi",
-       .id                     = 0,
-       .dev.platform_data      = &omap3_evm_dvi_connector_pdata,
-};
-
-static struct encoder_tfp410_platform_data omap3_evm_tfp410_pdata = {
-       .name                   = "tfp410.0",
-       .source                 = "dpi.0",
-       .data_lines             = 24,
-       .power_down_gpio        = OMAP3EVM_DVI_PANEL_EN_GPIO,
-};
-
-static struct platform_device omap3_evm_tfp410_device = {
-       .name                   = "tfp410",
-       .id                     = 0,
-       .dev.platform_data      = &omap3_evm_tfp410_pdata,
-};
-
-static struct connector_atv_platform_data omap3_evm_tv_pdata = {
-       .name = "tv",
-       .source = "venc.0",
-       .connector_type = OMAP_DSS_VENC_TYPE_SVIDEO,
-       .invert_polarity = false,
-};
-
-static struct platform_device omap3_evm_tv_connector_device = {
-       .name                   = "connector-analog-tv",
-       .id                     = 0,
-       .dev.platform_data      = &omap3_evm_tv_pdata,
-};
-
-static struct omap_dss_board_info omap3_evm_dss_data = {
-       .default_display_name = "lcd",
-};
-
-static struct regulator_consumer_supply omap3evm_vmmc1_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
-};
-
-static struct regulator_consumer_supply omap3evm_vsim_supply[] = {
-       REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
-};
-
-/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
-static struct regulator_init_data omap3evm_vmmc1 = {
-       .constraints = {
-               .min_uV                 = 1850000,
-               .max_uV                 = 3150000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(omap3evm_vmmc1_supply),
-       .consumer_supplies      = omap3evm_vmmc1_supply,
-};
-
-/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
-static struct regulator_init_data omap3evm_vsim = {
-       .constraints = {
-               .min_uV                 = 1800000,
-               .max_uV                 = 3000000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(omap3evm_vsim_supply),
-       .consumer_supplies      = omap3evm_vsim_supply,
-};
-
-static struct omap2_hsmmc_info mmc[] = {
-       {
-               .mmc            = 1,
-               .caps           = MMC_CAP_4_BIT_DATA,
-               .gpio_cd        = -EINVAL,
-               .gpio_wp        = 63,
-               .deferred       = true,
-       },
-#ifdef CONFIG_WILINK_PLATFORM_DATA
-       {
-               .name           = "wl1271",
-               .mmc            = 2,
-               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
-               .gpio_wp        = -EINVAL,
-               .gpio_cd        = -EINVAL,
-               .nonremovable   = true,
-       },
-#endif
-       {}      /* Terminator */
-};
-
-static struct gpio_led gpio_leds[] = {
-       {
-               .name                   = "omap3evm::ledb",
-               /* normally not visible (board underside) */
-               .default_trigger        = "default-on",
-               .gpio                   = -EINVAL,      /* gets replaced */
-               .active_low             = true,
-       },
-};
-
-static struct gpio_led_platform_data gpio_led_info = {
-       .leds           = gpio_leds,
-       .num_leds       = ARRAY_SIZE(gpio_leds),
-};
-
-static struct platform_device leds_gpio = {
-       .name   = "leds-gpio",
-       .id     = -1,
-       .dev    = {
-               .platform_data  = &gpio_led_info,
-       },
-};
-
-
-static int omap3evm_twl_gpio_setup(struct device *dev,
-               unsigned gpio, unsigned ngpio)
-{
-       int r, lcd_bl_en;
-
-       /* gpio + 0 is "mmc0_cd" (input/IRQ) */
-       mmc[0].gpio_cd = gpio + 0;
-       omap_hsmmc_late_init(mmc);
-
-       /*
-        * Most GPIOs are for USB OTG.  Some are mostly sent to
-        * the P2 connector; notably LEDA for the LCD backlight.
-        */
-
-       /* TWL4030_GPIO_MAX + 0 == ledA, LCD Backlight control */
-       lcd_bl_en = get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2 ?
-               GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW;
-       r = gpio_request_one(gpio + TWL4030_GPIO_MAX, lcd_bl_en, "EN_LCD_BKL");
-       if (r)
-               printk(KERN_ERR "failed to get/set lcd_bkl gpio\n");
-
-       /* gpio + 7 == DVI Enable */
-       gpio_request_one(gpio + 7, GPIOF_OUT_INIT_LOW, "EN_DVI");
-
-       /* TWL4030_GPIO_MAX + 1 == ledB (out, active low LED) */
-       gpio_leds[0].gpio = gpio + TWL4030_GPIO_MAX + 1;
-
-       platform_device_register(&leds_gpio);
-
-       /* Enable VBUS switch by setting TWL4030.GPIO2DIR as output
-        * for starting USB tranceiver
-        */
-#ifdef CONFIG_TWL4030_CORE
-       if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
-               u8 val;
-
-               twl_i2c_read_u8(TWL4030_MODULE_GPIO, &val, REG_GPIODATADIR1);
-               val |= 0x04; /* TWL4030.GPIO2DIR BIT at GPIODATADIR1(0x9B) */
-               twl_i2c_write_u8(TWL4030_MODULE_GPIO, val, REG_GPIODATADIR1);
-       }
-#endif
-
-       return 0;
-}
-
-static struct twl4030_gpio_platform_data omap3evm_gpio_data = {
-       .use_leds       = true,
-       .setup          = omap3evm_twl_gpio_setup,
-};
-
-static uint32_t board_keymap[] = {
-       KEY(0, 0, KEY_LEFT),
-       KEY(0, 1, KEY_DOWN),
-       KEY(0, 2, KEY_ENTER),
-       KEY(0, 3, KEY_M),
-
-       KEY(1, 0, KEY_RIGHT),
-       KEY(1, 1, KEY_UP),
-       KEY(1, 2, KEY_I),
-       KEY(1, 3, KEY_N),
-
-       KEY(2, 0, KEY_A),
-       KEY(2, 1, KEY_E),
-       KEY(2, 2, KEY_J),
-       KEY(2, 3, KEY_O),
-
-       KEY(3, 0, KEY_B),
-       KEY(3, 1, KEY_F),
-       KEY(3, 2, KEY_K),
-       KEY(3, 3, KEY_P)
-};
-
-static struct matrix_keymap_data board_map_data = {
-       .keymap                 = board_keymap,
-       .keymap_size            = ARRAY_SIZE(board_keymap),
-};
-
-static struct twl4030_keypad_data omap3evm_kp_data = {
-       .keymap_data    = &board_map_data,
-       .rows           = 4,
-       .cols           = 4,
-       .rep            = 1,
-};
-
-/* ads7846 on SPI */
-static struct regulator_consumer_supply omap3evm_vio_supply[] = {
-       REGULATOR_SUPPLY("vcc", "spi1.0"),
-};
-
-/* VIO for ads7846 */
-static struct regulator_init_data omap3evm_vio = {
-       .constraints = {
-               .min_uV                 = 1800000,
-               .max_uV                 = 1800000,
-               .apply_uV               = true,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(omap3evm_vio_supply),
-       .consumer_supplies      = omap3evm_vio_supply,
-};
-
-#ifdef CONFIG_WILINK_PLATFORM_DATA
-
-#define OMAP3EVM_WLAN_PMENA_GPIO       (150)
-#define OMAP3EVM_WLAN_IRQ_GPIO         (149)
-
-static struct regulator_consumer_supply omap3evm_vmmc2_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"),
-};
-
-/* VMMC2 for driving the WL12xx module */
-static struct regulator_init_data omap3evm_vmmc2 = {
-       .constraints = {
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(omap3evm_vmmc2_supply),
-       .consumer_supplies      = omap3evm_vmmc2_supply,
-};
-
-static struct fixed_voltage_config omap3evm_vwlan = {
-       .supply_name            = "vwl1271",
-       .microvolts             = 1800000, /* 1.80V */
-       .gpio                   = OMAP3EVM_WLAN_PMENA_GPIO,
-       .startup_delay          = 70000, /* 70ms */
-       .enable_high            = 1,
-       .enabled_at_boot        = 0,
-       .init_data              = &omap3evm_vmmc2,
-};
-
-static struct platform_device omap3evm_wlan_regulator = {
-       .name           = "reg-fixed-voltage",
-       .id             = 1,
-       .dev = {
-               .platform_data  = &omap3evm_vwlan,
-       },
-};
-
-struct wl12xx_platform_data omap3evm_wlan_data __initdata = {
-       .board_ref_clock = WL12XX_REFCLOCK_38, /* 38.4 MHz */
-};
-#endif
-
-/* VAUX2 for USB */
-static struct regulator_consumer_supply omap3evm_vaux2_supplies[] = {
-       REGULATOR_SUPPLY("VDD_CSIPHY1", "omap3isp"),    /* OMAP ISP */
-       REGULATOR_SUPPLY("VDD_CSIPHY2", "omap3isp"),    /* OMAP ISP */
-       REGULATOR_SUPPLY("vcc", "usb_phy_gen_xceiv.2"), /* hsusb port 2 */
-       REGULATOR_SUPPLY("vaux2", NULL),
-};
-
-static struct regulator_init_data omap3evm_vaux2 = {
-       .constraints = {
-               .min_uV         = 2800000,
-               .max_uV         = 2800000,
-               .apply_uV       = true,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies          = ARRAY_SIZE(omap3evm_vaux2_supplies),
-       .consumer_supplies              = omap3evm_vaux2_supplies,
-};
-
-static struct twl4030_platform_data omap3evm_twldata = {
-       /* platform_data for children goes here */
-       .keypad         = &omap3evm_kp_data,
-       .gpio           = &omap3evm_gpio_data,
-       .vio            = &omap3evm_vio,
-       .vmmc1          = &omap3evm_vmmc1,
-       .vsim           = &omap3evm_vsim,
-};
-
-static int __init omap3_evm_i2c_init(void)
-{
-       omap3_pmic_get_config(&omap3evm_twldata,
-                       TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_MADC |
-                       TWL_COMMON_PDATA_AUDIO,
-                       TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
-
-       omap3evm_twldata.vdac->constraints.apply_uV = true;
-       omap3evm_twldata.vpll2->constraints.apply_uV = true;
-
-       omap3_pmic_init("twl4030", &omap3evm_twldata);
-       omap_register_i2c_bus(2, 400, NULL, 0);
-       omap_register_i2c_bus(3, 400, NULL, 0);
-       return 0;
-}
-
-static struct usbhs_phy_data phy_data[] __initdata = {
-       {
-               .port = 2,
-               .reset_gpio = -1,       /* set at runtime */
-               .vcc_gpio = -EINVAL,
-       },
-};
-
-static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
-       .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
-};
-
-#ifdef CONFIG_OMAP_MUX
-static struct omap_board_mux omap35x_board_mux[] __initdata = {
-       OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW |
-                               OMAP_PIN_OFF_WAKEUPENABLE),
-       OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW |
-                               OMAP_PIN_OFF_WAKEUPENABLE),
-       OMAP3_MUX(SYS_BOOT5, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(GPMC_WAIT2, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_NONE),
-#ifdef CONFIG_WILINK_PLATFORM_DATA
-       /* WLAN IRQ - GPIO 149 */
-       OMAP3_MUX(UART1_RTS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
-
-       /* WLAN POWER ENABLE - GPIO 150 */
-       OMAP3_MUX(UART1_CTS, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
-
-       /* MMC2 SDIO pin muxes for WL12xx */
-       OMAP3_MUX(SDMMC2_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_CMD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-#endif
-       { .reg_offset = OMAP_MUX_TERMINATOR },
-};
-
-static struct omap_board_mux omap36x_board_mux[] __initdata = {
-       OMAP3_MUX(SYS_NIRQ, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW |
-                               OMAP_PIN_OFF_WAKEUPENABLE),
-       OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE4 | OMAP_PIN_INPUT_PULLUP |
-                               OMAP_PIN_OFF_INPUT_PULLUP | OMAP_PIN_OFF_OUTPUT_LOW |
-                               OMAP_PIN_OFF_WAKEUPENABLE),
-       /* AM/DM37x EVM: DSS data bus muxed with sys_boot */
-       OMAP3_MUX(DSS_DATA18, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(DSS_DATA19, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(DSS_DATA22, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(DSS_DATA21, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(DSS_DATA22, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(DSS_DATA23, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(SYS_BOOT0, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(SYS_BOOT1, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(SYS_BOOT3, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(SYS_BOOT4, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(SYS_BOOT5, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-       OMAP3_MUX(SYS_BOOT6, OMAP_MUX_MODE3 | OMAP_PIN_OFF_NONE),
-#ifdef CONFIG_WILINK_PLATFORM_DATA
-       /* WLAN IRQ - GPIO 149 */
-       OMAP3_MUX(UART1_RTS, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
-
-       /* WLAN POWER ENABLE - GPIO 150 */
-       OMAP3_MUX(UART1_CTS, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
-
-       /* MMC2 SDIO pin muxes for WL12xx */
-       OMAP3_MUX(SDMMC2_CLK, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_CMD, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT0, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT1, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT2, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(SDMMC2_DAT3, OMAP_MUX_MODE0 | OMAP_PIN_INPUT_PULLUP),
-#endif
-
-       { .reg_offset = OMAP_MUX_TERMINATOR },
-};
-#else
-#define omap35x_board_mux      NULL
-#define omap36x_board_mux      NULL
-#endif
-
-static struct omap_musb_board_data musb_board_data = {
-       .interface_type         = MUSB_INTERFACE_ULPI,
-       .mode                   = MUSB_OTG,
-       .power                  = 100,
-};
-
-static struct gpio omap3_evm_ehci_gpios[] __initdata = {
-       { OMAP3_EVM_EHCI_VBUS,   GPIOF_OUT_INIT_HIGH,  "enable EHCI VBUS" },
-       { OMAP3_EVM_EHCI_SELECT, GPIOF_OUT_INIT_LOW,   "select EHCI port" },
-};
-
-static void __init omap3_evm_wl12xx_init(void)
-{
-#ifdef CONFIG_WILINK_PLATFORM_DATA
-       int ret;
-
-       /* WL12xx WLAN Init */
-       omap3evm_wlan_data.irq = gpio_to_irq(OMAP3EVM_WLAN_IRQ_GPIO);
-       ret = wl12xx_set_platform_data(&omap3evm_wlan_data);
-       if (ret)
-               pr_err("error setting wl12xx data: %d\n", ret);
-       ret = platform_device_register(&omap3evm_wlan_regulator);
-       if (ret)
-               pr_err("error registering wl12xx device: %d\n", ret);
-#endif
-}
-
-static struct regulator_consumer_supply dummy_supplies[] = {
-       REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
-       REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
-};
-
-static struct mtd_partition omap3evm_nand_partitions[] = {
-       /* All the partition sizes are listed in terms of NAND block size */
-       {
-               .name           = "X-Loader",
-               .offset         = 0,
-               .size           = 4*(SZ_128K),
-               .mask_flags     = MTD_WRITEABLE
-       },
-       {
-               .name           = "U-Boot",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 14*(SZ_128K),
-               .mask_flags     = MTD_WRITEABLE
-       },
-       {
-               .name           = "U-Boot Env",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 2*(SZ_128K)
-       },
-       {
-               .name           = "Kernel",
-               .offset         = MTDPART_OFS_APPEND,
-               .size           = 40*(SZ_128K)
-       },
-       {
-               .name           = "File system",
-               .size           = MTDPART_SIZ_FULL,
-               .offset         = MTDPART_OFS_APPEND,
-       },
-};
-
-static void __init omap3_evm_init(void)
-{
-       struct omap_board_mux *obm;
-
-       omap3_evm_get_revision();
-       regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
-
-       obm = (cpu_is_omap3630()) ? omap36x_board_mux : omap35x_board_mux;
-       omap3_mux_init(obm, OMAP_PACKAGE_CBB);
-
-       omap_mux_init_gpio(63, OMAP_PIN_INPUT);
-       omap_hsmmc_init(mmc);
-
-       if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2)
-               omap3evm_twldata.vaux2 = &omap3evm_vaux2;
-
-       omap3_evm_i2c_init();
-
-       omap_display_init(&omap3_evm_dss_data);
-       platform_device_register(&omap3_evm_lcd_device);
-       platform_device_register(&omap3_evm_tfp410_device);
-       platform_device_register(&omap3_evm_dvi_connector_device);
-       platform_device_register(&omap3_evm_tv_connector_device);
-
-       omap_serial_init();
-       omap_sdrc_init(mt46h32m32lf6_sdrc_params, NULL);
-
-       /* OMAP3EVM uses ISP1504 phy and so register nop transceiver */
-       usb_nop_xceiv_register();
-
-       if (get_omap3_evm_rev() >= OMAP3EVM_BOARD_GEN_2) {
-               /* enable EHCI VBUS using GPIO22 */
-               omap_mux_init_gpio(OMAP3_EVM_EHCI_VBUS, OMAP_PIN_INPUT_PULLUP);
-               /* Select EHCI port on main board */
-               omap_mux_init_gpio(OMAP3_EVM_EHCI_SELECT,
-                                  OMAP_PIN_INPUT_PULLUP);
-               gpio_request_array(omap3_evm_ehci_gpios,
-                                  ARRAY_SIZE(omap3_evm_ehci_gpios));
-
-               /* setup EHCI phy reset config */
-               omap_mux_init_gpio(21, OMAP_PIN_INPUT_PULLUP);
-               phy_data[0].reset_gpio = 21;
-
-               /* EVM REV >= E can supply 500mA with EXTVBUS programming */
-               musb_board_data.power = 500;
-               musb_board_data.extvbus = 1;
-       } else {
-               /* setup EHCI phy reset on MDC */
-               omap_mux_init_gpio(135, OMAP_PIN_OUTPUT);
-               phy_data[0].reset_gpio = 135;
-       }
-       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
-       usb_musb_init(&musb_board_data);
-
-       usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
-       usbhs_init(&usbhs_bdata);
-       board_nand_init(omap3evm_nand_partitions,
-                       ARRAY_SIZE(omap3evm_nand_partitions), NAND_CS,
-                       NAND_BUSWIDTH_16, NULL);
-
-       omap_ads7846_init(1, OMAP3_EVM_TS_GPIO, 310, NULL);
-       omap3evm_init_smsc911x();
-#ifdef CONFIG_BROKEN
-       omap3_evm_display_init();
-#endif
-       omap3_evm_wl12xx_init();
-       omap_twl4030_audio_init("omap3evm", NULL);
-}
-
-MACHINE_START(OMAP3EVM, "OMAP3 EVM")
-       /* Maintainer: Syed Mohammed Khasim - Texas Instruments */
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap35xx_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = omap3_evm_init,
-       .init_late      = omap35xx_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
diff --git a/arch/arm/mach-omap2/board-rm680.c b/arch/arm/mach-omap2/board-rm680.c
deleted file mode 100644 (file)
index 345e8c4..0000000
+++ /dev/null
@@ -1,167 +0,0 @@
-/*
- * Board support file for Nokia N950 (RM-680) / N9 (RM-696).
- *
- * Copyright (C) 2010 Nokia
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/io.h>
-#include <linux/i2c.h>
-#include <linux/gpio.h>
-#include <linux/init.h>
-#include <linux/i2c/twl.h>
-#include <linux/platform_device.h>
-#include <linux/regulator/fixed.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/consumer.h>
-#include <linux/platform_data/mtd-onenand-omap2.h>
-#include <linux/usb/phy.h>
-
-#include <asm/mach/arch.h>
-#include <asm/mach-types.h>
-
-#include "common.h"
-#include "mux.h"
-#include "gpmc.h"
-#include "mmc.h"
-#include "hsmmc.h"
-#include "sdram-nokia.h"
-#include "common-board-devices.h"
-#include "gpmc-onenand.h"
-
-static struct regulator_consumer_supply rm680_vemmc_consumers[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"),
-};
-
-/* Fixed regulator for internal eMMC */
-static struct regulator_init_data rm680_vemmc = {
-       .constraints =  {
-               .name                   = "rm680_vemmc",
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_STATUS
-                                       | REGULATOR_CHANGE_MODE,
-       },
-       .num_consumer_supplies          = ARRAY_SIZE(rm680_vemmc_consumers),
-       .consumer_supplies              = rm680_vemmc_consumers,
-};
-
-static struct fixed_voltage_config rm680_vemmc_config = {
-       .supply_name            = "VEMMC",
-       .microvolts             = 2900000,
-       .gpio                   = 157,
-       .startup_delay          = 150,
-       .enable_high            = 1,
-       .init_data              = &rm680_vemmc,
-};
-
-static struct platform_device rm680_vemmc_device = {
-       .name                   = "reg-fixed-voltage",
-       .dev                    = {
-               .platform_data  = &rm680_vemmc_config,
-       },
-};
-
-static struct platform_device *rm680_peripherals_devices[] __initdata = {
-       &rm680_vemmc_device,
-};
-
-/* TWL */
-static struct twl4030_gpio_platform_data rm680_gpio_data = {
-       .pullups                = BIT(0),
-       .pulldowns              = BIT(1) | BIT(2) | BIT(8) | BIT(15),
-};
-
-static struct twl4030_platform_data rm680_twl_data = {
-       .gpio                   = &rm680_gpio_data,
-       /* add rest of the children here */
-};
-
-static void __init rm680_i2c_init(void)
-{
-       omap3_pmic_get_config(&rm680_twl_data, TWL_COMMON_PDATA_USB, 0);
-       omap_pmic_init(1, 2900, "twl5031", 7 + OMAP_INTC_START, &rm680_twl_data);
-       omap_register_i2c_bus(2, 400, NULL, 0);
-       omap_register_i2c_bus(3, 400, NULL, 0);
-}
-
-#if defined(CONFIG_MTD_ONENAND_OMAP2) || \
-       defined(CONFIG_MTD_ONENAND_OMAP2_MODULE)
-static struct omap_onenand_platform_data board_onenand_data[] = {
-       {
-               .gpio_irq       = 65,
-               .flags          = ONENAND_SYNC_READWRITE,
-       }
-};
-#endif
-
-/* eMMC */
-static struct omap2_hsmmc_info mmc[] __initdata = {
-       {
-               .name           = "internal",
-               .mmc            = 2,
-               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_MMC_HIGHSPEED,
-               .gpio_cd        = -EINVAL,
-               .gpio_wp        = -EINVAL,
-       },
-       { /* Terminator */ }
-};
-
-static void __init rm680_peripherals_init(void)
-{
-       platform_add_devices(rm680_peripherals_devices,
-                               ARRAY_SIZE(rm680_peripherals_devices));
-       rm680_i2c_init();
-       gpmc_onenand_init(board_onenand_data);
-       omap_hsmmc_init(mmc);
-}
-
-#ifdef CONFIG_OMAP_MUX
-static struct omap_board_mux board_mux[] __initdata = {
-       { .reg_offset = OMAP_MUX_TERMINATOR },
-};
-#endif
-
-static void __init rm680_init(void)
-{
-       struct omap_sdrc_params *sdrc_params;
-
-       omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-       omap_serial_init();
-
-       sdrc_params = nokia_get_sdram_timings();
-       omap_sdrc_init(sdrc_params, sdrc_params);
-
-       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
-       usb_musb_init(NULL);
-       rm680_peripherals_init();
-}
-
-MACHINE_START(NOKIA_RM680, "Nokia RM-680 board")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap3630_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = rm680_init,
-       .init_late      = omap3630_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
-
-MACHINE_START(NOKIA_RM696, "Nokia RM-696 board")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap3630_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = rm680_init,
-       .init_late      = omap3630_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
index c3270c0f1fce47724b0aba71d8f1ea388b94f445..f6fe388af9895ef8c8b2859f9177a146a30fb965 100644 (file)
@@ -167,38 +167,47 @@ static struct lp55xx_led_config rx51_lp5523_led_config[] = {
                .name           = "lp5523:kb1",
                .chan_nr        = 0,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:kb2",
                .chan_nr        = 1,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:kb3",
                .chan_nr        = 2,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:kb4",
                .chan_nr        = 3,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:b",
                .chan_nr        = 4,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:g",
                .chan_nr        = 5,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:r",
                .chan_nr        = 6,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:kb5",
                .chan_nr        = 7,
                .led_current    = 50,
+               .max_current    = 100,
        }, {
                .name           = "lp5523:kb6",
                .chan_nr        = 8,
                .led_current    = 50,
+               .max_current    = 100,
        }
 };
 
diff --git a/arch/arm/mach-omap2/board-zoom-debugboard.c b/arch/arm/mach-omap2/board-zoom-debugboard.c
deleted file mode 100644 (file)
index 42e5f23..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Inc.
- * Mikkel Christensen <mlc@ti.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/gpio.h>
-#include <linux/serial_8250.h>
-#include <linux/smsc911x.h>
-#include <linux/interrupt.h>
-
-#include <linux/regulator/fixed.h>
-#include <linux/regulator/machine.h>
-
-#include "gpmc.h"
-#include "gpmc-smsc911x.h"
-
-#include "board-zoom.h"
-
-#include "soc.h"
-#include "common.h"
-
-#define ZOOM_SMSC911X_CS       7
-#define ZOOM_SMSC911X_GPIO     158
-#define ZOOM_QUADUART_CS       3
-#define ZOOM_QUADUART_GPIO     102
-#define ZOOM_QUADUART_RST_GPIO 152
-#define QUART_CLK              1843200
-#define DEBUG_BASE             0x08000000
-#define ZOOM_ETHR_START        DEBUG_BASE
-
-static struct omap_smsc911x_platform_data zoom_smsc911x_cfg = {
-       .cs             = ZOOM_SMSC911X_CS,
-       .gpio_irq       = ZOOM_SMSC911X_GPIO,
-       .gpio_reset     = -EINVAL,
-       .flags          = SMSC911X_USE_32BIT,
-};
-
-static inline void __init zoom_init_smsc911x(void)
-{
-       gpmc_smsc911x_init(&zoom_smsc911x_cfg);
-}
-
-static struct plat_serial8250_port serial_platform_data[] = {
-       {
-               .mapbase        = ZOOM_UART_BASE,
-               .flags          = UPF_BOOT_AUTOCONF|UPF_IOREMAP|UPF_SHARE_IRQ,
-               .irqflags       = IRQF_SHARED | IRQF_TRIGGER_RISING,
-               .iotype         = UPIO_MEM,
-               .regshift       = 1,
-               .uartclk        = QUART_CLK,
-       }, {
-               .flags          = 0
-       }
-};
-
-static struct platform_device zoom_debugboard_serial_device = {
-       .name                   = "serial8250",
-       .id                     = PLAT8250_DEV_PLATFORM,
-       .dev                    = {
-               .platform_data  = serial_platform_data,
-       },
-};
-
-static inline void __init zoom_init_quaduart(void)
-{
-       int quart_cs;
-       unsigned long cs_mem_base;
-       int quart_gpio = 0;
-
-       if (gpio_request_one(ZOOM_QUADUART_RST_GPIO,
-                               GPIOF_OUT_INIT_LOW,
-                               "TL16CP754C GPIO") < 0) {
-               pr_err("Failed to request GPIO%d for TL16CP754C\n",
-                       ZOOM_QUADUART_RST_GPIO);
-               return;
-       }
-
-       quart_cs = ZOOM_QUADUART_CS;
-
-       if (gpmc_cs_request(quart_cs, SZ_1M, &cs_mem_base) < 0) {
-               pr_err("Failed to request GPMC mem for Quad UART(TL16CP754C)\n");
-               return;
-       }
-
-       quart_gpio = ZOOM_QUADUART_GPIO;
-
-       if (gpio_request_one(quart_gpio, GPIOF_IN, "TL16CP754C GPIO") < 0)
-               printk(KERN_ERR "Failed to request GPIO%d for TL16CP754C\n",
-                                                               quart_gpio);
-
-       serial_platform_data[0].irq = gpio_to_irq(102);
-}
-
-static inline int omap_zoom_debugboard_detect(void)
-{
-       int debug_board_detect = 0;
-       int ret = 1;
-
-       debug_board_detect = ZOOM_SMSC911X_GPIO;
-
-       if (gpio_request_one(debug_board_detect, GPIOF_IN,
-                            "Zoom debug board detect") < 0) {
-               pr_err("Failed to request GPIO%d for Zoom debug board detect\n",
-                      debug_board_detect);
-               return 0;
-       }
-
-       if (!gpio_get_value(debug_board_detect)) {
-               ret = 0;
-       }
-       gpio_free(debug_board_detect);
-       return ret;
-}
-
-static struct platform_device *zoom_devices[] __initdata = {
-       &zoom_debugboard_serial_device,
-};
-
-static struct regulator_consumer_supply dummy_supplies[] = {
-       REGULATOR_SUPPLY("vddvario", "smsc911x.0"),
-       REGULATOR_SUPPLY("vdd33a", "smsc911x.0"),
-};
-
-int __init zoom_debugboard_init(void)
-{
-       if (!omap_zoom_debugboard_detect())
-               return 0;
-
-       regulator_register_fixed(0, dummy_supplies, ARRAY_SIZE(dummy_supplies));
-       zoom_init_smsc911x();
-       zoom_init_quaduart();
-       return platform_add_devices(zoom_devices, ARRAY_SIZE(zoom_devices));
-}
diff --git a/arch/arm/mach-omap2/board-zoom-display.c b/arch/arm/mach-omap2/board-zoom-display.c
deleted file mode 100644 (file)
index 3d8ecc1..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2010 Texas Instruments Inc.
- *
- * Modified from mach-omap2/board-zoom-peripherals.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/gpio.h>
-#include <linux/spi/spi.h>
-#include <linux/platform_data/spi-omap2-mcspi.h>
-#include <video/omapdss.h>
-#include <video/omap-panel-data.h>
-
-#include "board-zoom.h"
-#include "soc.h"
-#include "common.h"
-
-#define LCD_PANEL_RESET_GPIO_PROD      96
-#define LCD_PANEL_RESET_GPIO_PILOT     55
-#define LCD_PANEL_QVGA_GPIO            56
-
-static struct panel_nec_nl8048hl11_platform_data zoom_lcd_pdata = {
-       .name                   = "lcd",
-       .source                 = "dpi.0",
-
-       .data_lines             = 24,
-
-       .res_gpio               = -1,   /* filled in code */
-       .qvga_gpio              = LCD_PANEL_QVGA_GPIO,
-};
-
-static struct omap_dss_board_info zoom_dss_data = {
-       .default_display_name = "lcd",
-};
-
-static void __init zoom_lcd_panel_init(void)
-{
-       zoom_lcd_pdata.res_gpio = (omap_rev() > OMAP3430_REV_ES3_0) ?
-                       LCD_PANEL_RESET_GPIO_PROD :
-                       LCD_PANEL_RESET_GPIO_PILOT;
-}
-
-static struct omap2_mcspi_device_config dss_lcd_mcspi_config = {
-       .turbo_mode             = 1,
-};
-
-static struct spi_board_info nec_8048_spi_board_info[] __initdata = {
-       [0] = {
-               .modalias               = "panel-nec-nl8048hl11",
-               .bus_num                = 1,
-               .chip_select            = 2,
-               .max_speed_hz           = 375000,
-               .controller_data        = &dss_lcd_mcspi_config,
-               .platform_data          = &zoom_lcd_pdata,
-       },
-};
-
-void __init zoom_display_init(void)
-{
-       omap_display_init(&zoom_dss_data);
-       zoom_lcd_panel_init();
-       spi_register_board_info(nec_8048_spi_board_info,
-                               ARRAY_SIZE(nec_8048_spi_board_info));
-}
-
diff --git a/arch/arm/mach-omap2/board-zoom-peripherals.c b/arch/arm/mach-omap2/board-zoom-peripherals.c
deleted file mode 100644 (file)
index a90375d..0000000
+++ /dev/null
@@ -1,360 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Inc.
- *
- * Modified from mach-omap2/board-zoom2.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/input/matrix_keypad.h>
-#include <linux/gpio.h>
-#include <linux/i2c/twl.h>
-#include <linux/regulator/machine.h>
-#include <linux/regulator/fixed.h>
-#include <linux/wl12xx.h>
-#include <linux/mmc/host.h>
-#include <linux/platform_data/gpio-omap.h>
-#include <linux/platform_data/omap-twl4030.h>
-#include <linux/usb/phy.h>
-#include <linux/pwm.h>
-#include <linux/leds_pwm.h>
-#include <linux/pwm_backlight.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-#include <asm/mach/map.h>
-
-#include "common.h"
-
-#include "board-zoom.h"
-
-#include "mux.h"
-#include "hsmmc.h"
-#include "common-board-devices.h"
-
-#define OMAP_ZOOM_WLAN_PMENA_GPIO      (101)
-#define OMAP_ZOOM_TSC2004_IRQ_GPIO     (153)
-#define OMAP_ZOOM_WLAN_IRQ_GPIO                (162)
-
-/* Zoom2 has Qwerty keyboard*/
-static uint32_t board_keymap[] = {
-       KEY(0, 0, KEY_E),
-       KEY(0, 1, KEY_R),
-       KEY(0, 2, KEY_T),
-       KEY(0, 3, KEY_HOME),
-       KEY(0, 6, KEY_I),
-       KEY(0, 7, KEY_LEFTSHIFT),
-       KEY(1, 0, KEY_D),
-       KEY(1, 1, KEY_F),
-       KEY(1, 2, KEY_G),
-       KEY(1, 3, KEY_SEND),
-       KEY(1, 6, KEY_K),
-       KEY(1, 7, KEY_ENTER),
-       KEY(2, 0, KEY_X),
-       KEY(2, 1, KEY_C),
-       KEY(2, 2, KEY_V),
-       KEY(2, 3, KEY_END),
-       KEY(2, 6, KEY_DOT),
-       KEY(2, 7, KEY_CAPSLOCK),
-       KEY(3, 0, KEY_Z),
-       KEY(3, 1, KEY_KPPLUS),
-       KEY(3, 2, KEY_B),
-       KEY(3, 3, KEY_F1),
-       KEY(3, 6, KEY_O),
-       KEY(3, 7, KEY_SPACE),
-       KEY(4, 0, KEY_W),
-       KEY(4, 1, KEY_Y),
-       KEY(4, 2, KEY_U),
-       KEY(4, 3, KEY_F2),
-       KEY(4, 4, KEY_VOLUMEUP),
-       KEY(4, 6, KEY_L),
-       KEY(4, 7, KEY_LEFT),
-       KEY(5, 0, KEY_S),
-       KEY(5, 1, KEY_H),
-       KEY(5, 2, KEY_J),
-       KEY(5, 3, KEY_F3),
-       KEY(5, 4, KEY_UNKNOWN),
-       KEY(5, 5, KEY_VOLUMEDOWN),
-       KEY(5, 6, KEY_M),
-       KEY(5, 7, KEY_RIGHT),
-       KEY(6, 0, KEY_Q),
-       KEY(6, 1, KEY_A),
-       KEY(6, 2, KEY_N),
-       KEY(6, 3, KEY_BACKSPACE),
-       KEY(6, 6, KEY_P),
-       KEY(6, 7, KEY_UP),
-       KEY(7, 0, KEY_PROG1),   /*MACRO 1 <User defined> */
-       KEY(7, 1, KEY_PROG2),   /*MACRO 2 <User defined> */
-       KEY(7, 2, KEY_PROG3),   /*MACRO 3 <User defined> */
-       KEY(7, 3, KEY_PROG4),   /*MACRO 4 <User defined> */
-       KEY(7, 6, KEY_SELECT),
-       KEY(7, 7, KEY_DOWN)
-};
-
-static struct matrix_keymap_data board_map_data = {
-       .keymap                 = board_keymap,
-       .keymap_size            = ARRAY_SIZE(board_keymap),
-};
-
-static struct twl4030_keypad_data zoom_kp_twl4030_data = {
-       .keymap_data    = &board_map_data,
-       .rows           = 8,
-       .cols           = 8,
-       .rep            = 1,
-};
-
-static struct regulator_consumer_supply zoom_vmmc1_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.0"),
-};
-
-static struct regulator_consumer_supply zoom_vsim_supply[] = {
-       REGULATOR_SUPPLY("vmmc_aux", "omap_hsmmc.0"),
-};
-
-static struct regulator_consumer_supply zoom_vmmc2_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.1"),
-};
-
-static struct regulator_consumer_supply zoom_vmmc3_supply[] = {
-       REGULATOR_SUPPLY("vmmc", "omap_hsmmc.2"),
-};
-
-/* VMMC1 for OMAP VDD_MMC1 (i/o) and MMC1 card */
-static struct regulator_init_data zoom_vmmc1 = {
-       .constraints = {
-               .min_uV                 = 1850000,
-               .max_uV                 = 3150000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(zoom_vmmc1_supply),
-       .consumer_supplies      = zoom_vmmc1_supply,
-};
-
-/* VMMC2 for MMC2 card */
-static struct regulator_init_data zoom_vmmc2 = {
-       .constraints = {
-               .min_uV                 = 1850000,
-               .max_uV                 = 1850000,
-               .apply_uV               = true,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(zoom_vmmc2_supply),
-       .consumer_supplies      = zoom_vmmc2_supply,
-};
-
-/* VSIM for OMAP VDD_MMC1A (i/o for DAT4..DAT7) */
-static struct regulator_init_data zoom_vsim = {
-       .constraints = {
-               .min_uV                 = 1800000,
-               .max_uV                 = 3000000,
-               .valid_modes_mask       = REGULATOR_MODE_NORMAL
-                                       | REGULATOR_MODE_STANDBY,
-               .valid_ops_mask         = REGULATOR_CHANGE_VOLTAGE
-                                       | REGULATOR_CHANGE_MODE
-                                       | REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(zoom_vsim_supply),
-       .consumer_supplies      = zoom_vsim_supply,
-};
-
-static struct regulator_init_data zoom_vmmc3 = {
-       .constraints = {
-               .valid_ops_mask = REGULATOR_CHANGE_STATUS,
-       },
-       .num_consumer_supplies  = ARRAY_SIZE(zoom_vmmc3_supply),
-       .consumer_supplies      = zoom_vmmc3_supply,
-};
-
-static struct fixed_voltage_config zoom_vwlan = {
-       .supply_name            = "vwl1271",
-       .microvolts             = 1800000, /* 1.8V */
-       .gpio                   = OMAP_ZOOM_WLAN_PMENA_GPIO,
-       .startup_delay          = 70000, /* 70msec */
-       .enable_high            = 1,
-       .enabled_at_boot        = 0,
-       .init_data              = &zoom_vmmc3,
-};
-
-static struct platform_device omap_vwlan_device = {
-       .name           = "reg-fixed-voltage",
-       .id             = 1,
-       .dev = {
-               .platform_data  = &zoom_vwlan,
-       },
-};
-
-static struct pwm_lookup zoom_pwm_lookup[] = {
-       PWM_LOOKUP("twl-pwm", 0, "leds_pwm", "zoom::keypad"),
-       PWM_LOOKUP("twl-pwm", 1, "pwm-backlight", "backlight"),
-};
-
-static struct led_pwm zoom_pwm_leds[] = {
-       {
-               .name           = "zoom::keypad",
-               .max_brightness = 127,
-               .pwm_period_ns  = 7812500,
-       },
-};
-
-static struct led_pwm_platform_data zoom_pwm_data = {
-       .num_leds       = ARRAY_SIZE(zoom_pwm_leds),
-       .leds           = zoom_pwm_leds,
-};
-
-static struct platform_device zoom_leds_pwm = {
-       .name   = "leds_pwm",
-       .id     = -1,
-       .dev    = {
-               .platform_data = &zoom_pwm_data,
-       },
-};
-
-static struct platform_pwm_backlight_data zoom_backlight_data = {
-       .pwm_id = 1,
-       .max_brightness = 127,
-       .dft_brightness = 127,
-       .pwm_period_ns = 7812500,
-};
-
-static struct platform_device zoom_backlight_pwm = {
-       .name   = "pwm-backlight",
-       .id     = -1,
-       .dev    = {
-               .platform_data = &zoom_backlight_data,
-       },
-};
-
-static struct platform_device *zoom_devices[] __initdata = {
-       &omap_vwlan_device,
-       &zoom_leds_pwm,
-       &zoom_backlight_pwm,
-};
-
-static struct wl12xx_platform_data omap_zoom_wlan_data __initdata = {
-       .board_ref_clock = WL12XX_REFCLOCK_26, /* 26 MHz */
-};
-
-static struct omap2_hsmmc_info mmc[] = {
-       {
-               .name           = "external",
-               .mmc            = 1,
-               .caps           = MMC_CAP_4_BIT_DATA,
-               .gpio_wp        = -EINVAL,
-               .power_saving   = true,
-               .deferred       = true,
-       },
-       {
-               .name           = "internal",
-               .mmc            = 2,
-               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_8_BIT_DATA,
-               .gpio_cd        = -EINVAL,
-               .gpio_wp        = -EINVAL,
-               .nonremovable   = true,
-               .power_saving   = true,
-       },
-       {
-               .name           = "wl1271",
-               .mmc            = 3,
-               .caps           = MMC_CAP_4_BIT_DATA | MMC_CAP_POWER_OFF_CARD,
-               .gpio_wp        = -EINVAL,
-               .gpio_cd        = -EINVAL,
-               .nonremovable   = true,
-       },
-       {}      /* Terminator */
-};
-
-static struct omap_tw4030_pdata omap_twl4030_audio_data = {
-       .voice_connected = true,
-       .custom_routing = true,
-
-       .has_hs         = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
-       .has_hf         = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
-
-       .has_mainmic    = true,
-       .has_submic     = true,
-       .has_hsmic      = true,
-       .has_linein     = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT,
-};
-
-static int zoom_twl_gpio_setup(struct device *dev,
-               unsigned gpio, unsigned ngpio)
-{
-       /* gpio + 0 is "mmc0_cd" (input/IRQ) */
-       mmc[0].gpio_cd = gpio + 0;
-       omap_hsmmc_late_init(mmc);
-
-       /* Audio setup */
-       omap_twl4030_audio_data.jack_detect = gpio + 2;
-       omap_twl4030_audio_init("Zoom2", &omap_twl4030_audio_data);
-
-       return 0;
-}
-
-static struct twl4030_gpio_platform_data zoom_gpio_data = {
-       .setup          = zoom_twl_gpio_setup,
-};
-
-static struct twl4030_platform_data zoom_twldata = {
-       /* platform_data for children goes here */
-       .gpio           = &zoom_gpio_data,
-       .keypad         = &zoom_kp_twl4030_data,
-       .vmmc1          = &zoom_vmmc1,
-       .vmmc2          = &zoom_vmmc2,
-       .vsim           = &zoom_vsim,
-};
-
-static int __init omap_i2c_init(void)
-{
-       omap3_pmic_get_config(&zoom_twldata,
-                       TWL_COMMON_PDATA_USB | TWL_COMMON_PDATA_BCI |
-                       TWL_COMMON_PDATA_MADC | TWL_COMMON_PDATA_AUDIO,
-                       TWL_COMMON_REGULATOR_VDAC | TWL_COMMON_REGULATOR_VPLL2);
-
-       if (machine_is_omap_zoom2())
-               zoom_twldata.audio->codec->ramp_delay_value = 3; /* 161 ms */
-
-       omap_pmic_init(1, 2400, "twl5030", 7 + OMAP_INTC_START, &zoom_twldata);
-       omap_register_i2c_bus(2, 400, NULL, 0);
-       omap_register_i2c_bus(3, 400, NULL, 0);
-       return 0;
-}
-
-static void enable_board_wakeup_source(void)
-{
-       /* T2 interrupt line (keypad) */
-       omap_mux_init_signal("sys_nirq",
-               OMAP_WAKEUP_EN | OMAP_PIN_INPUT_PULLUP);
-}
-
-void __init zoom_peripherals_init(void)
-{
-       int ret;
-
-       omap_zoom_wlan_data.irq = gpio_to_irq(OMAP_ZOOM_WLAN_IRQ_GPIO);
-       ret = wl12xx_set_platform_data(&omap_zoom_wlan_data);
-
-       if (ret)
-               pr_err("error setting wl12xx data: %d\n", ret);
-
-       omap_hsmmc_init(mmc);
-       omap_i2c_init();
-       pwm_add_table(zoom_pwm_lookup, ARRAY_SIZE(zoom_pwm_lookup));
-       platform_add_devices(zoom_devices, ARRAY_SIZE(zoom_devices));
-       usb_bind_phy("musb-hdrc.0.auto", 0, "twl4030_usb");
-       usb_musb_init(NULL);
-       enable_board_wakeup_source();
-       omap_serial_init();
-}
diff --git a/arch/arm/mach-omap2/board-zoom.c b/arch/arm/mach-omap2/board-zoom.c
deleted file mode 100644 (file)
index 1a3dd86..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (C) 2009-2010 Texas Instruments Inc.
- * Mikkel Christensen <mlc@ti.com>
- * Felipe Balbi <balbi@ti.com>
- *
- * Modified from mach-omap2/board-ldp.c
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/input.h>
-#include <linux/gpio.h>
-#include <linux/i2c/twl.h>
-#include <linux/mtd/nand.h>
-
-#include <asm/mach-types.h>
-#include <asm/mach/arch.h>
-
-#include "common.h"
-
-#include "board-zoom.h"
-
-#include "board-flash.h"
-#include "mux.h"
-#include "sdram-micron-mt46h32m32lf-6.h"
-#include "sdram-hynix-h8mbx00u0mer-0em.h"
-
-#define ZOOM3_EHCI_RESET_GPIO          64
-
-#ifdef CONFIG_OMAP_MUX
-static struct omap_board_mux board_mux[] __initdata = {
-       /* WLAN IRQ - GPIO 162 */
-       OMAP3_MUX(MCBSP1_CLKX, OMAP_MUX_MODE4 | OMAP_PIN_INPUT),
-       /* WLAN POWER ENABLE - GPIO 101 */
-       OMAP3_MUX(CAM_D2, OMAP_MUX_MODE4 | OMAP_PIN_OUTPUT),
-       /* WLAN SDIO: MMC3 CMD */
-       OMAP3_MUX(MCSPI1_CS1, OMAP_MUX_MODE3 | OMAP_PIN_INPUT_PULLUP),
-       /* WLAN SDIO: MMC3 CLK */
-       OMAP3_MUX(ETK_CLK, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
-       /* WLAN SDIO: MMC3 DAT[0-3] */
-       OMAP3_MUX(ETK_D3, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(ETK_D4, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(ETK_D5, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
-       OMAP3_MUX(ETK_D6, OMAP_MUX_MODE2 | OMAP_PIN_INPUT_PULLUP),
-       { .reg_offset = OMAP_MUX_TERMINATOR },
-};
-#endif
-
-static struct mtd_partition zoom_nand_partitions[] = {
-       /* All the partition sizes are listed in terms of NAND block size */
-       {
-               .name           = "X-Loader-NAND",
-               .offset         = 0,
-               .size           = 4 * (64 * 2048),      /* 512KB, 0x80000 */
-               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
-       },
-       {
-               .name           = "U-Boot-NAND",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x80000 */
-               .size           = 10 * (64 * 2048),     /* 1.25MB, 0x140000 */
-               .mask_flags     = MTD_WRITEABLE,        /* force read-only */
-       },
-       {
-               .name           = "Boot Env-NAND",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x1c0000 */
-               .size           = 2 * (64 * 2048),      /* 256KB, 0x40000 */
-       },
-       {
-               .name           = "Kernel-NAND",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x0200000*/
-               .size           = 240 * (64 * 2048),    /* 30M, 0x1E00000 */
-       },
-       {
-               .name           = "system",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x2000000 */
-               .size           = 3328 * (64 * 2048),   /* 416M, 0x1A000000 */
-       },
-       {
-               .name           = "userdata",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x1C000000*/
-               .size           = 256 * (64 * 2048),    /* 32M, 0x2000000 */
-       },
-       {
-               .name           = "cache",
-               .offset         = MTDPART_OFS_APPEND,   /* Offset = 0x1E000000*/
-               .size           = 256 * (64 * 2048),    /* 32M, 0x2000000 */
-       },
-};
-
-static struct usbhs_phy_data phy_data[] __initdata = {
-       {
-               .port = 2,
-               .reset_gpio = ZOOM3_EHCI_RESET_GPIO,
-               .vcc_gpio = -EINVAL,
-       },
-};
-
-static struct usbhs_omap_platform_data usbhs_bdata __initdata = {
-       .port_mode[1]           = OMAP_EHCI_PORT_MODE_PHY,
-};
-
-static void __init omap_zoom_init(void)
-{
-       if (machine_is_omap_zoom2()) {
-               omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
-       } else if (machine_is_omap_zoom3()) {
-               omap3_mux_init(board_mux, OMAP_PACKAGE_CBP);
-               omap_mux_init_gpio(ZOOM3_EHCI_RESET_GPIO, OMAP_PIN_OUTPUT);
-
-               usbhs_init_phys(phy_data, ARRAY_SIZE(phy_data));
-               usbhs_init(&usbhs_bdata);
-       }
-
-       board_nand_init(zoom_nand_partitions,
-                       ARRAY_SIZE(zoom_nand_partitions), ZOOM_NAND_CS,
-                       NAND_BUSWIDTH_16, nand_default_timings);
-       zoom_debugboard_init();
-       zoom_peripherals_init();
-
-       if (machine_is_omap_zoom2())
-               omap_sdrc_init(mt46h32m32lf6_sdrc_params,
-                                         mt46h32m32lf6_sdrc_params);
-       else if (machine_is_omap_zoom3())
-               omap_sdrc_init(h8mbx00u0mer0em_sdrc_params,
-                                         h8mbx00u0mer0em_sdrc_params);
-
-       zoom_display_init();
-}
-
-MACHINE_START(OMAP_ZOOM2, "OMAP Zoom2 board")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap3430_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = omap_zoom_init,
-       .init_late      = omap3430_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
-
-MACHINE_START(OMAP_ZOOM3, "OMAP Zoom3 board")
-       .atag_offset    = 0x100,
-       .reserve        = omap_reserve,
-       .map_io         = omap3_map_io,
-       .init_early     = omap3630_init_early,
-       .init_irq       = omap3_init_irq,
-       .handle_irq     = omap3_intc_handle_irq,
-       .init_machine   = omap_zoom_init,
-       .init_late      = omap3630_init_late,
-       .init_time      = omap3_sync32k_timer_init,
-       .restart        = omap3xxx_restart,
-MACHINE_END
diff --git a/arch/arm/mach-omap2/board-zoom.h b/arch/arm/mach-omap2/board-zoom.h
deleted file mode 100644 (file)
index 2e94869..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
- * Defines for zoom boards
- */
-#include <video/omapdss.h>
-
-#define ZOOM_NAND_CS    0
-
-extern int __init zoom_debugboard_init(void);
-extern void __init zoom_peripherals_init(void);
-extern void __init zoom_display_init(void);
index 4a5684b96492099c18a010aef105ea5507860258..f7644febee81d7d41ae2cfc01e1fc362b972de02 100644 (file)
@@ -98,6 +98,7 @@ void am35xx_init_early(void);
 void ti81xx_init_early(void);
 void am33xx_init_early(void);
 void am43xx_init_early(void);
+void am43xx_init_late(void);
 void omap4430_init_early(void);
 void omap5_init_early(void);
 void omap3_init_late(void);    /* Do not use this one */
@@ -109,8 +110,11 @@ void omap35xx_init_late(void);
 void omap3630_init_late(void);
 void am35xx_init_late(void);
 void ti81xx_init_late(void);
+void am33xx_init_late(void);
+void omap5_init_late(void);
 int omap2_common_pm_late_init(void);
 void dra7xx_init_early(void);
+void dra7xx_init_late(void);
 
 #ifdef CONFIG_SOC_BUS
 void omap_soc_device_init(void);
@@ -288,6 +292,9 @@ static inline void omap4_cpu_resume(void)
 
 #endif
 
+void pdata_quirks_init(struct of_device_id *);
+void omap_pcs_legacy_init(int irq, void (*rearm)(void));
+
 struct omap_sdrc_params;
 extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
                                      struct omap_sdrc_params *sdrc_cs1);
index 5c5315ba129b705b4af0c6b9f8af38e217e922cd..5336c75926cdc8ff23c100c134bb44a0fa4f25df 100644 (file)
@@ -19,7 +19,6 @@
 #include <linux/of.h>
 #include <linux/pinctrl/machine.h>
 #include <linux/platform_data/omap4-keypad.h>
-#include <linux/wl12xx.h>
 #include <linux/platform_data/mailbox-omap.h>
 
 #include <asm/mach-types.h>
@@ -475,40 +474,6 @@ static void omap_init_vout(void)
 static inline void omap_init_vout(void) {}
 #endif
 
-#if IS_ENABLED(CONFIG_WL12XX)
-
-static struct wl12xx_platform_data wl12xx __initdata;
-
-void __init omap_init_wl12xx_of(void)
-{
-       int ret;
-
-       if (!of_have_populated_dt())
-               return;
-
-       if (of_machine_is_compatible("ti,omap4-sdp")) {
-               wl12xx.board_ref_clock = WL12XX_REFCLOCK_26;
-               wl12xx.board_tcxo_clock = WL12XX_TCXOCLOCK_26;
-               wl12xx.irq = gpio_to_irq(53);
-       } else if (of_machine_is_compatible("ti,omap4-panda")) {
-               wl12xx.board_ref_clock = WL12XX_REFCLOCK_38;
-               wl12xx.irq = gpio_to_irq(53);
-       } else {
-               return;
-       }
-
-       ret = wl12xx_set_platform_data(&wl12xx);
-       if (ret) {
-               pr_err("error setting wl12xx data: %d\n", ret);
-               return;
-       }
-}
-#else
-static inline void omap_init_wl12xx_of(void)
-{
-}
-#endif
-
 /*-------------------------------------------------------------------------*/
 
 static int __init omap2_init_devices(void)
@@ -531,9 +496,6 @@ static int __init omap2_init_devices(void)
                omap_init_sham();
                omap_init_aes();
                omap_init_rng();
-       } else {
-               /* These can be removed when bindings are done */
-               omap_init_wl12xx_of();
        }
        omap_init_sti();
        omap_init_vout();
index bf89effa4c9988a45c770175307e632918790a4a..365bfd3d9c68b8486f23049a71889484c60eb793 100644 (file)
@@ -213,3 +213,47 @@ void __init omap_4430sdp_display_init_of(void)
        platform_device_register(&sdp4430_tpd_device);
        platform_device_register(&sdp4430_hdmi_connector_device);
 }
+
+
+/* OMAP3 IGEPv2 data */
+
+#define IGEP2_DVI_TFP410_POWER_DOWN_GPIO       170
+
+/* DVI Connector */
+static struct connector_dvi_platform_data omap3_igep2_dvi_connector_pdata = {
+       .name                   = "dvi",
+       .source                 = "tfp410.0",
+       .i2c_bus_num            = 3,
+};
+
+static struct platform_device omap3_igep2_dvi_connector_device = {
+       .name                   = "connector-dvi",
+       .id                     = 0,
+       .dev.platform_data      = &omap3_igep2_dvi_connector_pdata,
+};
+
+/* TFP410 DPI-to-DVI chip */
+static struct encoder_tfp410_platform_data omap3_igep2_tfp410_pdata = {
+       .name                   = "tfp410.0",
+       .source                 = "dpi.0",
+       .data_lines             = 24,
+       .power_down_gpio        = IGEP2_DVI_TFP410_POWER_DOWN_GPIO,
+};
+
+static struct platform_device omap3_igep2_tfp410_device = {
+       .name                   = "tfp410",
+       .id                     = 0,
+       .dev.platform_data      = &omap3_igep2_tfp410_pdata,
+};
+
+static struct omap_dss_board_info igep2_dss_data = {
+       .default_display_name = "dvi",
+};
+
+void __init omap3_igep2_display_init_of(void)
+{
+       omap_display_init(&igep2_dss_data);
+
+       platform_device_register(&omap3_igep2_tfp410_device);
+       platform_device_register(&omap3_igep2_dvi_connector_device);
+}
index c28fe3c035880c58ad6e749f123a01d4437024c8..a9becf0d5be84695f732f1e01a2e2215f9e5ed16 100644 (file)
@@ -8,5 +8,6 @@
 
 void __init omap4_panda_display_init_of(void);
 void __init omap_4430sdp_display_init_of(void);
+void __init omap3_igep2_display_init_of(void);
 
 #endif
index 64b5a83469822ad53693c2ae8ffdd3b227fa2a7b..8b6876c98ce1a320c793e7485c35d23bd3a5b923 100644 (file)
@@ -272,9 +272,19 @@ static int omap2_onenand_setup_async(void __iomem *onenand_base)
        struct gpmc_timings t;
        int ret;
 
-       if (gpmc_onenand_data->of_node)
+       if (gpmc_onenand_data->of_node) {
                gpmc_read_settings_dt(gpmc_onenand_data->of_node,
                                      &onenand_async);
+               if (onenand_async.sync_read || onenand_async.sync_write) {
+                       if (onenand_async.sync_write)
+                               gpmc_onenand_data->flags |=
+                                       ONENAND_SYNC_READWRITE;
+                       else
+                               gpmc_onenand_data->flags |= ONENAND_SYNC_READ;
+                       onenand_async.sync_read = false;
+                       onenand_async.sync_write = false;
+               }
+       }
 
        omap2_onenand_set_async_mode(onenand_base);
 
index 579697adaae7dfd373285979eebeb815658f4a1d..51525faa0aecde65beb9ff745cfc066a81bc62ad 100644 (file)
@@ -1521,6 +1521,42 @@ err:
        return ret;
 }
 
+/*
+ * REVISIT: Add timing support from slls644g.pdf
+ */
+static int gpmc_probe_8250(struct platform_device *pdev,
+                               struct device_node *child)
+{
+       struct resource res;
+       unsigned long base;
+       int ret, cs;
+
+       if (of_property_read_u32(child, "reg", &cs) < 0) {
+               dev_err(&pdev->dev, "%s has no 'reg' property\n",
+                       child->full_name);
+               return -ENODEV;
+       }
+
+       if (of_address_to_resource(child, 0, &res) < 0) {
+               dev_err(&pdev->dev, "%s has malformed 'reg' property\n",
+                       child->full_name);
+               return -ENODEV;
+       }
+
+       ret = gpmc_cs_request(cs, resource_size(&res), &base);
+       if (ret < 0) {
+               dev_err(&pdev->dev, "cannot request GPMC CS %d\n", cs);
+               return ret;
+       }
+
+       if (of_platform_device_create(child, NULL, &pdev->dev))
+               return 0;
+
+       dev_err(&pdev->dev, "failed to create gpmc child %s\n", child->name);
+
+       return -ENODEV;
+}
+
 static int gpmc_probe_dt(struct platform_device *pdev)
 {
        int ret;
@@ -1564,6 +1600,8 @@ static int gpmc_probe_dt(struct platform_device *pdev)
                else if (of_node_cmp(child->name, "ethernet") == 0 ||
                         of_node_cmp(child->name, "nor") == 0)
                        ret = gpmc_probe_generic_child(pdev, child);
+               else if (of_node_cmp(child->name, "8250") == 0)
+                       ret = gpmc_probe_8250(pdev, child);
 
                if (WARN(ret < 0, "%s: probing gpmc child %s failed\n",
                         __func__, child->full_name))
index ff2113ce40141ab87001c912b3924fe1803cdec3..a2cbb44582e4554d9464bb26db0084f85386273f 100644 (file)
@@ -583,6 +583,11 @@ void __init am33xx_init_early(void)
        omap_hwmod_init_postsetup();
        omap_clk_init = am33xx_clk_init;
 }
+
+void __init am33xx_init_late(void)
+{
+       omap_common_late_init();
+}
 #endif
 
 #ifdef CONFIG_SOC_AM43XX
@@ -596,6 +601,11 @@ void __init am43xx_init_early(void)
        omap2_set_globals_cm(AM33XX_L4_WK_IO_ADDRESS(AM43XX_PRCM_BASE), NULL);
        omap3xxx_check_revision();
 }
+
+void __init am43xx_init_late(void)
+{
+       omap_common_late_init();
+}
 #endif
 
 #ifdef CONFIG_ARCH_OMAP4
@@ -651,6 +661,11 @@ void __init omap5_init_early(void)
        omap54xx_hwmod_init();
        omap_hwmod_init_postsetup();
 }
+
+void __init omap5_init_late(void)
+{
+       omap_common_late_init();
+}
 #endif
 
 #ifdef CONFIG_SOC_DRA7XX
@@ -671,6 +686,11 @@ void __init dra7xx_init_early(void)
        dra7xx_hwmod_init();
        omap_hwmod_init_postsetup();
 }
+
+void __init dra7xx_init_late(void)
+{
+       omap_common_late_init();
+}
 #endif
 
 
index f82cf878d6af41da87b8bb444acd609105af72a9..48094b58c88f775f592d77f8403b2a1d65cf1840 100644 (file)
@@ -811,6 +811,12 @@ int __init omap_mux_late_init(void)
                }
        }
 
+       omap_mux_dbg_init();
+
+       /* see pinctrl-single-omap for the wake-up interrupt handling */
+       if (of_have_populated_dt())
+               return 0;
+
        ret = request_irq(omap_prcm_event_to_irq("io"),
                omap_hwmod_mux_handle_irq, IRQF_SHARED | IRQF_NO_SUSPEND,
                        "hwmod_io", omap_mux_late_init);
@@ -818,8 +824,6 @@ int __init omap_mux_late_init(void)
        if (ret)
                pr_warning("mux: Failed to setup hwmod io irq %d\n", ret);
 
-       omap_mux_dbg_init();
-
        return 0;
 }
 
index 5d2080ef7923585c1313f598a40961c3b241d1ce..16f78a990d04cafbd7dd1fcaa81b7d7dd061e979 100644 (file)
@@ -28,7 +28,7 @@
 #define OMAP_PULL_UP                   (1 << 4)
 #define OMAP_ALTELECTRICALSEL          (1 << 5)
 
-/* 34xx specific mux bit defines */
+/* omap3/4/5 specific mux bit defines */
 #define OMAP_INPUT_EN                  (1 << 8)
 #define OMAP_OFF_EN                    (1 << 9)
 #define OMAP_OFFOUT_EN                 (1 << 10)
@@ -36,8 +36,6 @@
 #define OMAP_OFF_PULL_EN               (1 << 12)
 #define OMAP_OFF_PULL_UP               (1 << 13)
 #define OMAP_WAKEUP_EN                 (1 << 14)
-
-/* 44xx specific mux bit defines */
 #define OMAP_WAKEUP_EVENT              (1 << 15)
 
 /* Active pin states */
index bd41d59a7cab08ecbca342a665f5f944aa67b6bc..82fd8c72f7506da9d273aec79c9f038bc04bdfaa 100644 (file)
@@ -17,6 +17,7 @@
  * GNU General Public License for more details.
  */
 #include <linux/module.h>
+#include <linux/of.h>
 #include <linux/opp.h>
 #include <linux/cpu.h>
 
@@ -40,6 +41,9 @@ int __init omap_init_opp_table(struct omap_opp_def *opp_def,
 {
        int i, r;
 
+       if (of_have_populated_dt())
+               return -EINVAL;
+
        if (!opp_def || !opp_def_size) {
                pr_err("%s: invalid params!\n", __func__);
                return -EINVAL;
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
new file mode 100644 (file)
index 0000000..10c7145
--- /dev/null
@@ -0,0 +1,174 @@
+/*
+ * Legacy platform_data quirks
+ *
+ * Copyright (C) 2013 Texas Instruments
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#include <linux/clk.h>
+#include <linux/gpio.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/of_platform.h>
+#include <linux/wl12xx.h>
+
+#include <linux/platform_data/pinctrl-single.h>
+
+#include "common.h"
+#include "common-board-devices.h"
+#include "dss-common.h"
+#include "control.h"
+
+struct pdata_init {
+       const char *compatible;
+       void (*fn)(void);
+};
+
+/*
+ * Create alias for USB host PHY clock.
+ * Remove this when clock phandle can be provided via DT
+ */
+static void __init __used legacy_init_ehci_clk(char *clkname)
+{
+       int ret;
+
+       ret = clk_add_alias("main_clk", NULL, clkname, NULL);
+       if (ret)
+               pr_err("%s:Failed to add main_clk alias to %s :%d\n",
+                      __func__, clkname, ret);
+}
+
+#if IS_ENABLED(CONFIG_WL12XX)
+
+static struct wl12xx_platform_data wl12xx __initdata;
+
+static void __init __used legacy_init_wl12xx(unsigned ref_clock,
+                                            unsigned tcxo_clock,
+                                            int gpio)
+{
+       int res;
+
+       wl12xx.board_ref_clock = ref_clock;
+       wl12xx.board_tcxo_clock = tcxo_clock;
+       wl12xx.irq = gpio_to_irq(gpio);
+
+       res = wl12xx_set_platform_data(&wl12xx);
+       if (res) {
+               pr_err("error setting wl12xx data: %d\n", res);
+               return;
+       }
+}
+#else
+static inline void legacy_init_wl12xx(unsigned ref_clock,
+                                     unsigned tcxo_clock,
+                                     int gpio)
+{
+}
+#endif
+
+#ifdef CONFIG_ARCH_OMAP3
+static void __init hsmmc2_internal_input_clk(void)
+{
+       u32 reg;
+
+       reg = omap_ctrl_readl(OMAP343X_CONTROL_DEVCONF1);
+       reg |= OMAP2_MMCSDIO2ADPCLKISEL;
+       omap_ctrl_writel(reg, OMAP343X_CONTROL_DEVCONF1);
+}
+
+static void __init omap3_igep0020_legacy_init(void)
+{
+       omap3_igep2_display_init_of();
+}
+
+static void __init omap3_evm_legacy_init(void)
+{
+       legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 149);
+}
+
+static void __init omap3_zoom_legacy_init(void)
+{
+       legacy_init_wl12xx(WL12XX_REFCLOCK_26, 0, 162);
+}
+#endif /* CONFIG_ARCH_OMAP3 */
+
+#ifdef CONFIG_ARCH_OMAP4
+static void __init omap4_sdp_legacy_init(void)
+{
+       omap_4430sdp_display_init_of();
+       legacy_init_wl12xx(WL12XX_REFCLOCK_26,
+                          WL12XX_TCXOCLOCK_26, 53);
+}
+
+static void __init omap4_panda_legacy_init(void)
+{
+       omap4_panda_display_init_of();
+       legacy_init_ehci_clk("auxclk3_ck");
+       legacy_init_wl12xx(WL12XX_REFCLOCK_38, 0, 53);
+}
+#endif
+
+#ifdef CONFIG_SOC_OMAP5
+static void __init omap5_uevm_legacy_init(void)
+{
+       legacy_init_ehci_clk("auxclk1_ck");
+}
+#endif
+
+static struct pcs_pdata pcs_pdata;
+
+void omap_pcs_legacy_init(int irq, void (*rearm)(void))
+{
+       pcs_pdata.irq = irq;
+       pcs_pdata.rearm = rearm;
+}
+
+struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
+#ifdef CONFIG_ARCH_OMAP3
+       OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002030, "48002030.pinmux", &pcs_pdata),
+       OF_DEV_AUXDATA("ti,omap3-padconf", 0x48002a00, "48002a00.pinmux", &pcs_pdata),
+#endif
+#ifdef CONFIG_ARCH_OMAP4
+       OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a100040, "4a100040.pinmux", &pcs_pdata),
+       OF_DEV_AUXDATA("ti,omap4-padconf", 0x4a31e040, "4a31e040.pinmux", &pcs_pdata),
+#endif
+       { /* sentinel */ },
+};
+
+static struct pdata_init pdata_quirks[] __initdata = {
+#ifdef CONFIG_ARCH_OMAP3
+       { "nokia,omap3-n9", hsmmc2_internal_input_clk, },
+       { "nokia,omap3-n950", hsmmc2_internal_input_clk, },
+       { "isee,omap3-igep0020", omap3_igep0020_legacy_init, },
+       { "ti,omap3-evm-37xx", omap3_evm_legacy_init, },
+       { "ti,omap3-zoom3", omap3_zoom_legacy_init, },
+#endif
+#ifdef CONFIG_ARCH_OMAP4
+       { "ti,omap4-sdp", omap4_sdp_legacy_init, },
+       { "ti,omap4-panda", omap4_panda_legacy_init, },
+#endif
+#ifdef CONFIG_SOC_OMAP5
+       { "ti,omap5-uevm", omap5_uevm_legacy_init, },
+#endif
+       { /* sentinel */ },
+};
+
+void __init pdata_quirks_init(struct of_device_id *omap_dt_match_table)
+{
+       struct pdata_init *quirks = pdata_quirks;
+
+       omap_sdrc_init(NULL, NULL);
+       of_platform_populate(NULL, omap_dt_match_table,
+                            omap_auxdata_lookup, NULL);
+
+       while (quirks->compatible) {
+               if (of_machine_is_compatible(quirks->compatible)) {
+                       if (quirks->fn)
+                               quirks->fn();
+                       break;
+               }
+               quirks++;
+       }
+}
index e742118fcfd2b69adc367057e6f17670a5136903..360b2daf54ddb2be644925d5a13d7772e81307c1 100644 (file)
@@ -266,7 +266,12 @@ static void __init omap4_init_voltages(void)
 
 static inline void omap_init_cpufreq(void)
 {
-       struct platform_device_info devinfo = { .name = "omap-cpufreq", };
+       struct platform_device_info devinfo = { };
+
+       if (!of_have_populated_dt())
+               devinfo.name = "omap-cpufreq";
+       else
+               devinfo.name = "cpufreq-cpu0";
        platform_device_register_full(&devinfo);
 }
 
@@ -300,10 +305,11 @@ int __init omap2_common_pm_late_init(void)
                /* Smartreflex device init */
                omap_devinit_smartreflex();
 
-               /* cpufreq dummy device instantiation */
-               omap_init_cpufreq();
        }
 
+       /* cpufreq dummy device instantiation */
+       omap_init_cpufreq();
+
 #ifdef CONFIG_SUSPEND
        suspend_set_ops(&omap_pm_ops);
 #endif
index 277f71794e61adc9016212de3f9ae05efb87fd1c..f8eb83323b1a068271c5e222471706bb5d1c1708 100644 (file)
@@ -144,7 +144,13 @@ extern u32 omap3_prm_vcvp_read(u8 offset);
 extern void omap3_prm_vcvp_write(u32 val, u8 offset);
 extern u32 omap3_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset);
 
-extern void omap3xxx_prm_reconfigure_io_chain(void);
+#ifdef CONFIG_ARCH_OMAP3
+void omap3xxx_prm_reconfigure_io_chain(void);
+#else
+static inline void omap3xxx_prm_reconfigure_io_chain(void)
+{
+}
+#endif
 
 /* PRM interrupt-related functions */
 extern void omap3xxx_prm_read_pending_irqs(unsigned long *events);
index 7cd22abb8f15b54628dbc96b872fea903c7cdb95..a085d9cc1f5d0c01fbe02e2f490e18037e450a33 100644 (file)
@@ -42,7 +42,13 @@ extern u32 omap4_prm_vcvp_read(u8 offset);
 extern void omap4_prm_vcvp_write(u32 val, u8 offset);
 extern u32 omap4_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset);
 
-extern void omap44xx_prm_reconfigure_io_chain(void);
+#if defined(CONFIG_ARCH_OMAP4) || defined(CONFIG_SOC_OMAP5)
+void omap44xx_prm_reconfigure_io_chain(void);
+#else
+static inline void omap44xx_prm_reconfigure_io_chain(void)
+{
+}
+#endif
 
 /* PRM interrupt-related functions */
 extern void omap44xx_prm_read_pending_irqs(unsigned long *events);
index 228b850e632f6be77894b9d75a7162a105fd6889..a2e1174ad1b6a6632ad904e4a0b8c5f37dea1e79 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/interrupt.h>
 #include <linux/slab.h>
 
+#include "soc.h"
 #include "prm2xxx_3xxx.h"
 #include "prm2xxx.h"
 #include "prm3xxx.h"
@@ -322,6 +323,16 @@ int omap_prcm_register_chain_handler(struct omap_prcm_irq_setup *irq_setup)
                prcm_irq_chips[i] = gc;
        }
 
+       if (of_have_populated_dt()) {
+               int irq = omap_prcm_event_to_irq("io");
+               if (cpu_is_omap34xx())
+                       omap_pcs_legacy_init(irq,
+                               omap3xxx_prm_reconfigure_io_chain);
+               else
+                       omap_pcs_legacy_init(irq,
+                               omap44xx_prm_reconfigure_io_chain);
+       }
+
        return 0;
 
 err:
index fa74a0625da1a033335ea5fb76d6738889a9a1aa..ead48fa5715e16fb197dfa4fac56b0f71069bd20 100644 (file)
@@ -628,7 +628,7 @@ void __init omap4_local_timer_init(void)
 #endif /* CONFIG_HAVE_ARM_TWD */
 #endif /* CONFIG_ARCH_OMAP4 */
 
-#ifdef CONFIG_SOC_OMAP5
+#if defined(CONFIG_SOC_OMAP5) || defined(CONFIG_SOC_DRA7XX)
 void __init omap5_realtime_timer_init(void)
 {
        omap4_sync32k_timer_init();
@@ -636,7 +636,7 @@ void __init omap5_realtime_timer_init(void)
 
        clocksource_of_init();
 }
-#endif /* CONFIG_SOC_OMAP5 */
+#endif /* CONFIG_SOC_OMAP5 || CONFIG_SOC_DRA7XX */
 
 /**
  * omap_timer_init - build and register timer device with an
index 041da5172423742277e778fdbb861dfee98c7e1a..bd14e3a37128ef9c1b84559a5c31a74eb1c06752 100644 (file)
@@ -306,3 +306,19 @@ config MACH_WLF_CRAGG_6410
        select SAMSUNG_GPIO_EXTRA128
        help
          Machine support for the Wolfson Cragganmore S3C6410 variant.
+
+config MACH_S3C64XX_DT
+       bool "Samsung S3C6400/S3C6410 machine using Device Tree"
+       select CLKSRC_OF
+       select CPU_S3C6400
+       select CPU_S3C6410
+       select PINCTRL
+       select PINCTRL_S3C64XX
+       select USE_OF
+       help
+         Machine support for Samsung S3C6400/S3C6410 machines with Device Tree
+         enabled.
+         Select this if a fdt blob is available for your S3C64XX SoC based
+         board.
+         Note: This is under development and not all peripherals can be
+         supported with this machine file.
index 31d0c9101272196e81f7da943bc25bfdd1420722..6faedcffce040d0cfc041c9d3b559ff1be94a207 100644 (file)
@@ -12,7 +12,7 @@ obj-                          :=
 
 # Core
 
-obj-y                          += common.o clock.o
+obj-y                          += common.o
 
 # Core support
 
@@ -57,3 +57,4 @@ obj-$(CONFIG_MACH_SMARTQ7)            += mach-smartq7.o
 obj-$(CONFIG_MACH_SMDK6400)            += mach-smdk6400.o
 obj-$(CONFIG_MACH_SMDK6410)            += mach-smdk6410.o
 obj-$(CONFIG_MACH_WLF_CRAGG_6410)      += mach-crag6410.o mach-crag6410-module.o
+obj-$(CONFIG_MACH_S3C64XX_DT)          += mach-s3c64xx-dt.o
diff --git a/arch/arm/mach-s3c64xx/clock.c b/arch/arm/mach-s3c64xx/clock.c
deleted file mode 100644 (file)
index c1bcc4a..0000000
+++ /dev/null
@@ -1,1007 +0,0 @@
-/* linux/arch/arm/plat-s3c64xx/clock.c
- *
- * Copyright 2008 Openmoko, Inc.
- * Copyright 2008 Simtec Electronics
- *     Ben Dooks <ben@simtec.co.uk>
- *     http://armlinux.simtec.co.uk/
- *
- * S3C64XX Base clock support
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
-*/
-
-#include <linux/init.h>
-#include <linux/module.h>
-#include <linux/interrupt.h>
-#include <linux/ioport.h>
-#include <linux/clk.h>
-#include <linux/err.h>
-#include <linux/io.h>
-
-#include <mach/hardware.h>
-#include <mach/map.h>
-
-#include <mach/regs-clock.h>
-
-#include <plat/cpu.h>
-#include <plat/devs.h>
-#include <plat/cpu-freq.h>
-#include <plat/clock.h>
-#include <plat/clock-clksrc.h>
-#include <plat/pll.h>
-
-#include "regs-sys.h"
-
-/* fin_apll, fin_mpll and fin_epll are all the same clock, which we call
- * ext_xtal_mux for want of an actual name from the manual.
-*/
-
-static struct clk clk_ext_xtal_mux = {
-       .name           = "ext_xtal",
-};
-
-#define clk_fin_apll clk_ext_xtal_mux
-#define clk_fin_mpll clk_ext_xtal_mux
-#define clk_fin_epll clk_ext_xtal_mux
-
-#define clk_fout_mpll  clk_mpll
-#define clk_fout_epll  clk_epll
-
-struct clk clk_h2 = {
-       .name           = "hclk2",
-       .rate           = 0,
-};
-
-struct clk clk_27m = {
-       .name           = "clk_27m",
-       .rate           = 27000000,
-};
-
-static int clk_48m_ctrl(struct clk *clk, int enable)
-{
-       unsigned long flags;
-       u32 val;
-
-       /* can't rely on clock lock, this register has other usages */
-       local_irq_save(flags);
-
-       val = __raw_readl(S3C64XX_OTHERS);
-       if (enable)
-               val |= S3C64XX_OTHERS_USBMASK;
-       else
-               val &= ~S3C64XX_OTHERS_USBMASK;
-
-       __raw_writel(val, S3C64XX_OTHERS);
-       local_irq_restore(flags);
-
-       return 0;
-}
-
-struct clk clk_48m = {
-       .name           = "clk_48m",
-       .rate           = 48000000,
-       .enable         = clk_48m_ctrl,
-};
-
-struct clk clk_xusbxti = {
-       .name           = "xusbxti",
-       .rate           = 48000000,
-};
-
-static int inline s3c64xx_gate(void __iomem *reg,
-                               struct clk *clk,
-                               int enable)
-{
-       unsigned int ctrlbit = clk->ctrlbit;
-       u32 con;
-
-       con = __raw_readl(reg);
-
-       if (enable)
-               con |= ctrlbit;
-       else
-               con &= ~ctrlbit;
-
-       __raw_writel(con, reg);
-       return 0;
-}
-
-static int s3c64xx_pclk_ctrl(struct clk *clk, int enable)
-{
-       return s3c64xx_gate(S3C_PCLK_GATE, clk, enable);
-}
-
-static int s3c64xx_hclk_ctrl(struct clk *clk, int enable)
-{
-       return s3c64xx_gate(S3C_HCLK_GATE, clk, enable);
-}
-
-int s3c64xx_sclk_ctrl(struct clk *clk, int enable)
-{
-       return s3c64xx_gate(S3C_SCLK_GATE, clk, enable);
-}
-
-static struct clk init_clocks_off[] = {
-       {
-               .name           = "nand",
-               .parent         = &clk_h,
-       }, {
-               .name           = "rtc",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_RTC,
-       }, {
-               .name           = "adc",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_TSADC,
-       }, {
-               .name           = "i2c",
-               .devname        = "s3c2440-i2c.0",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_IIC,
-       }, {
-               .name           = "i2c",
-               .devname        = "s3c2440-i2c.1",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C6410_CLKCON_PCLK_I2C1,
-       }, {
-               .name           = "keypad",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_KEYPAD,
-       }, {
-               .name           = "spi",
-               .devname        = "s3c6410-spi.0",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_SPI0,
-       }, {
-               .name           = "spi",
-               .devname        = "s3c6410-spi.1",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_SPI1,
-       }, {
-               .name           = "48m",
-               .devname        = "s3c-sdhci.0",
-               .parent         = &clk_48m,
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_MMC0_48,
-       }, {
-               .name           = "48m",
-               .devname        = "s3c-sdhci.1",
-               .parent         = &clk_48m,
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_MMC1_48,
-       }, {
-               .name           = "48m",
-               .devname        = "s3c-sdhci.2",
-               .parent         = &clk_48m,
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_MMC2_48,
-       }, {
-               .name           = "ac97",
-               .parent         = &clk_p,
-               .ctrlbit        = S3C_CLKCON_PCLK_AC97,
-       }, {
-               .name           = "cfcon",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_IHOST,
-       }, {
-               .name           = "dma0",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_DMA0,
-       }, {
-               .name           = "dma1",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_DMA1,
-       }, {
-               .name           = "3dse",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_3DSE,
-       }, {
-               .name           = "hclk_secur",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_SECUR,
-       }, {
-               .name           = "sdma1",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_SDMA1,
-       }, {
-               .name           = "sdma0",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_SDMA0,
-       }, {
-               .name           = "hclk_jpeg",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_JPEG,
-       }, {
-               .name           = "camif",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_CAMIF,
-       }, {
-               .name           = "hclk_scaler",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_SCALER,
-       }, {
-               .name           = "2d",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_2D,
-       }, {
-               .name           = "tv",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_TV,
-       }, {
-               .name           = "post0",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_POST0,
-       }, {
-               .name           = "rot",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_ROT,
-       }, {
-               .name           = "hclk_mfc",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_MFC,
-       }, {
-               .name           = "pclk_mfc",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_MFC,
-       }, {
-               .name           = "dac27",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_DAC27,
-       }, {
-               .name           = "tv27",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_TV27,
-       }, {
-               .name           = "scaler27",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_SCALER27,
-       }, {
-               .name           = "sclk_scaler",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_SCALER,
-       }, {
-               .name           = "post0_27",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_POST0_27,
-       }, {
-               .name           = "secur",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_SECUR,
-       }, {
-               .name           = "sclk_mfc",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_MFC,
-       }, {
-               .name           = "sclk_jpeg",
-               .enable         = s3c64xx_sclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_SCLK_JPEG,
-       },
-};
-
-static struct clk clk_48m_spi0 = {
-       .name           = "spi_48m",
-       .devname        = "s3c6410-spi.0",
-       .parent         = &clk_48m,
-       .enable         = s3c64xx_sclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_SCLK_SPI0_48,
-};
-
-static struct clk clk_48m_spi1 = {
-       .name           = "spi_48m",
-       .devname        = "s3c6410-spi.1",
-       .parent         = &clk_48m,
-       .enable         = s3c64xx_sclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_SCLK_SPI1_48,
-};
-
-static struct clk clk_i2s0 = {
-       .name           = "iis",
-       .devname        = "samsung-i2s.0",
-       .parent         = &clk_p,
-       .enable         = s3c64xx_pclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_PCLK_IIS0,
-};
-
-static struct clk clk_i2s1 = {
-       .name           = "iis",
-       .devname        = "samsung-i2s.1",
-       .parent         = &clk_p,
-       .enable         = s3c64xx_pclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_PCLK_IIS1,
-};
-
-#ifdef CONFIG_CPU_S3C6410
-static struct clk clk_i2s2 = {
-       .name           = "iis",
-       .devname        = "samsung-i2s.2",
-       .parent         = &clk_p,
-       .enable         = s3c64xx_pclk_ctrl,
-       .ctrlbit        = S3C6410_CLKCON_PCLK_IIS2,
-};
-#endif
-
-static struct clk init_clocks[] = {
-       {
-               .name           = "lcd",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_LCD,
-       }, {
-               .name           = "gpio",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_GPIO,
-       }, {
-               .name           = "usb-host",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_UHOST,
-       }, {
-               .name           = "otg",
-               .parent         = &clk_h,
-               .enable         = s3c64xx_hclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_HCLK_USB,
-       }, {
-               .name           = "timers",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_PWM,
-       }, {
-               .name           = "uart",
-               .devname        = "s3c6400-uart.0",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_UART0,
-       }, {
-               .name           = "uart",
-               .devname        = "s3c6400-uart.1",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_UART1,
-       }, {
-               .name           = "uart",
-               .devname        = "s3c6400-uart.2",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_UART2,
-       }, {
-               .name           = "uart",
-               .devname        = "s3c6400-uart.3",
-               .parent         = &clk_p,
-               .enable         = s3c64xx_pclk_ctrl,
-               .ctrlbit        = S3C_CLKCON_PCLK_UART3,
-       }, {
-               .name           = "watchdog",
-               .parent         = &clk_p,
-               .ctrlbit        = S3C_CLKCON_PCLK_WDT,
-       },
-};
-
-static struct clk clk_hsmmc0 = {
-       .name           = "hsmmc",
-       .devname        = "s3c-sdhci.0",
-       .parent         = &clk_h,
-       .enable         = s3c64xx_hclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_HCLK_HSMMC0,
-};
-
-static struct clk clk_hsmmc1 = {
-       .name           = "hsmmc",
-       .devname        = "s3c-sdhci.1",
-       .parent         = &clk_h,
-       .enable         = s3c64xx_hclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_HCLK_HSMMC1,
-};
-
-static struct clk clk_hsmmc2 = {
-       .name           = "hsmmc",
-       .devname        = "s3c-sdhci.2",
-       .parent         = &clk_h,
-       .enable         = s3c64xx_hclk_ctrl,
-       .ctrlbit        = S3C_CLKCON_HCLK_HSMMC2,
-};
-
-static struct clk clk_fout_apll = {
-       .name           = "fout_apll",
-};
-
-static struct clk *clk_src_apll_list[] = {
-       [0] = &clk_fin_apll,
-       [1] = &clk_fout_apll,
-};
-
-static struct clksrc_sources clk_src_apll = {
-       .sources        = clk_src_apll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_apll_list),
-};
-
-static struct clksrc_clk clk_mout_apll = {
-       .clk    = {
-               .name           = "mout_apll",
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 0, .size = 1  },
-       .sources        = &clk_src_apll,
-};
-
-static struct clk *clk_src_epll_list[] = {
-       [0] = &clk_fin_epll,
-       [1] = &clk_fout_epll,
-};
-
-static struct clksrc_sources clk_src_epll = {
-       .sources        = clk_src_epll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_epll_list),
-};
-
-static struct clksrc_clk clk_mout_epll = {
-       .clk    = {
-               .name           = "mout_epll",
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 2, .size = 1  },
-       .sources        = &clk_src_epll,
-};
-
-static struct clk *clk_src_mpll_list[] = {
-       [0] = &clk_fin_mpll,
-       [1] = &clk_fout_mpll,
-};
-
-static struct clksrc_sources clk_src_mpll = {
-       .sources        = clk_src_mpll_list,
-       .nr_sources     = ARRAY_SIZE(clk_src_mpll_list),
-};
-
-static struct clksrc_clk clk_mout_mpll = {
-       .clk = {
-               .name           = "mout_mpll",
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 1, .size = 1  },
-       .sources        = &clk_src_mpll,
-};
-
-static unsigned int armclk_mask;
-
-static unsigned long s3c64xx_clk_arm_get_rate(struct clk *clk)
-{
-       unsigned long rate = clk_get_rate(clk->parent);
-       u32 clkdiv;
-
-       /* divisor mask starts at bit0, so no need to shift */
-       clkdiv = __raw_readl(S3C_CLK_DIV0) & armclk_mask;
-
-       return rate / (clkdiv + 1);
-}
-
-static unsigned long s3c64xx_clk_arm_round_rate(struct clk *clk,
-                                               unsigned long rate)
-{
-       unsigned long parent = clk_get_rate(clk->parent);
-       u32 div;
-
-       if (parent < rate)
-               return parent;
-
-       div = (parent / rate) - 1;
-       if (div > armclk_mask)
-               div = armclk_mask;
-
-       return parent / (div + 1);
-}
-
-static int s3c64xx_clk_arm_set_rate(struct clk *clk, unsigned long rate)
-{
-       unsigned long parent = clk_get_rate(clk->parent);
-       u32 div;
-       u32 val;
-
-       if (rate < parent / (armclk_mask + 1))
-               return -EINVAL;
-
-       rate = clk_round_rate(clk, rate);
-       div = clk_get_rate(clk->parent) / rate;
-
-       val = __raw_readl(S3C_CLK_DIV0);
-       val &= ~armclk_mask;
-       val |= (div - 1);
-       __raw_writel(val, S3C_CLK_DIV0);
-
-       return 0;
-
-}
-
-static struct clk clk_arm = {
-       .name           = "armclk",
-       .parent         = &clk_mout_apll.clk,
-       .ops            = &(struct clk_ops) {
-               .get_rate       = s3c64xx_clk_arm_get_rate,
-               .set_rate       = s3c64xx_clk_arm_set_rate,
-               .round_rate     = s3c64xx_clk_arm_round_rate,
-       },
-};
-
-static unsigned long s3c64xx_clk_doutmpll_get_rate(struct clk *clk)
-{
-       unsigned long rate = clk_get_rate(clk->parent);
-
-       printk(KERN_DEBUG "%s: parent is %ld\n", __func__, rate);
-
-       if (__raw_readl(S3C_CLK_DIV0) & S3C6400_CLKDIV0_MPLL_MASK)
-               rate /= 2;
-
-       return rate;
-}
-
-static struct clk_ops clk_dout_ops = {
-       .get_rate       = s3c64xx_clk_doutmpll_get_rate,
-};
-
-static struct clk clk_dout_mpll = {
-       .name           = "dout_mpll",
-       .parent         = &clk_mout_mpll.clk,
-       .ops            = &clk_dout_ops,
-};
-
-static struct clk *clkset_spi_mmc_list[] = {
-       &clk_mout_epll.clk,
-       &clk_dout_mpll,
-       &clk_fin_epll,
-       &clk_27m,
-};
-
-static struct clksrc_sources clkset_spi_mmc = {
-       .sources        = clkset_spi_mmc_list,
-       .nr_sources     = ARRAY_SIZE(clkset_spi_mmc_list),
-};
-
-static struct clk *clkset_irda_list[] = {
-       &clk_mout_epll.clk,
-       &clk_dout_mpll,
-       NULL,
-       &clk_27m,
-};
-
-static struct clksrc_sources clkset_irda = {
-       .sources        = clkset_irda_list,
-       .nr_sources     = ARRAY_SIZE(clkset_irda_list),
-};
-
-static struct clk *clkset_uart_list[] = {
-       &clk_mout_epll.clk,
-       &clk_dout_mpll,
-       NULL,
-       NULL
-};
-
-static struct clksrc_sources clkset_uart = {
-       .sources        = clkset_uart_list,
-       .nr_sources     = ARRAY_SIZE(clkset_uart_list),
-};
-
-static struct clk *clkset_uhost_list[] = {
-       &clk_48m,
-       &clk_mout_epll.clk,
-       &clk_dout_mpll,
-       &clk_fin_epll,
-};
-
-static struct clksrc_sources clkset_uhost = {
-       .sources        = clkset_uhost_list,
-       .nr_sources     = ARRAY_SIZE(clkset_uhost_list),
-};
-
-/* The peripheral clocks are all controlled via clocksource followed
- * by an optional divider and gate stage. We currently roll this into
- * one clock which hides the intermediate clock from the mux.
- *
- * Note, the JPEG clock can only be an even divider...
- *
- * The scaler and LCD clocks depend on the S3C64XX version, and also
- * have a common parent divisor so are not included here.
- */
-
-/* clocks that feed other parts of the clock source tree */
-
-static struct clk clk_iis_cd0 = {
-       .name           = "iis_cdclk0",
-};
-
-static struct clk clk_iis_cd1 = {
-       .name           = "iis_cdclk1",
-};
-
-static struct clk clk_iisv4_cd = {
-       .name           = "iis_cdclk_v4",
-};
-
-static struct clk clk_pcm_cd = {
-       .name           = "pcm_cdclk",
-};
-
-static struct clk *clkset_audio0_list[] = {
-       [0] = &clk_mout_epll.clk,
-       [1] = &clk_dout_mpll,
-       [2] = &clk_fin_epll,
-       [3] = &clk_iis_cd0,
-       [4] = &clk_pcm_cd,
-};
-
-static struct clksrc_sources clkset_audio0 = {
-       .sources        = clkset_audio0_list,
-       .nr_sources     = ARRAY_SIZE(clkset_audio0_list),
-};
-
-static struct clk *clkset_audio1_list[] = {
-       [0] = &clk_mout_epll.clk,
-       [1] = &clk_dout_mpll,
-       [2] = &clk_fin_epll,
-       [3] = &clk_iis_cd1,
-       [4] = &clk_pcm_cd,
-};
-
-static struct clksrc_sources clkset_audio1 = {
-       .sources        = clkset_audio1_list,
-       .nr_sources     = ARRAY_SIZE(clkset_audio1_list),
-};
-
-#ifdef CONFIG_CPU_S3C6410
-static struct clk *clkset_audio2_list[] = {
-       [0] = &clk_mout_epll.clk,
-       [1] = &clk_dout_mpll,
-       [2] = &clk_fin_epll,
-       [3] = &clk_iisv4_cd,
-       [4] = &clk_pcm_cd,
-};
-
-static struct clksrc_sources clkset_audio2 = {
-       .sources        = clkset_audio2_list,
-       .nr_sources     = ARRAY_SIZE(clkset_audio2_list),
-};
-#endif
-
-static struct clksrc_clk clksrcs[] = {
-       {
-               .clk    = {
-                       .name           = "usb-bus-host",
-                       .ctrlbit        = S3C_CLKCON_SCLK_UHOST,
-                       .enable         = s3c64xx_sclk_ctrl,
-               },
-               .reg_src        = { .reg = S3C_CLK_SRC, .shift = 5, .size = 2  },
-               .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 20, .size = 4  },
-               .sources        = &clkset_uhost,
-       }, {
-               .clk    = {
-                       .name           = "irda-bus",
-                       .ctrlbit        = S3C_CLKCON_SCLK_IRDA,
-                       .enable         = s3c64xx_sclk_ctrl,
-               },
-               .reg_src        = { .reg = S3C_CLK_SRC, .shift = 24, .size = 2  },
-               .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 20, .size = 4  },
-               .sources        = &clkset_irda,
-       }, {
-               .clk    = {
-                       .name           = "camera",
-                       .ctrlbit        = S3C_CLKCON_SCLK_CAM,
-                       .enable         = s3c64xx_sclk_ctrl,
-                       .parent         = &clk_h2,
-               },
-               .reg_div        = { .reg = S3C_CLK_DIV0, .shift = 20, .size = 4  },
-       },
-};
-
-/* Where does UCLK0 come from? */
-static struct clksrc_clk clk_sclk_uclk = {
-       .clk    = {
-               .name           = "uclk1",
-               .ctrlbit        = S3C_CLKCON_SCLK_UART,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 13, .size = 1  },
-       .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 16, .size = 4  },
-       .sources        = &clkset_uart,
-};
-
-static struct clksrc_clk clk_sclk_mmc0 = {
-       .clk    = {
-               .name           = "mmc_bus",
-               .devname        = "s3c-sdhci.0",
-               .ctrlbit        = S3C_CLKCON_SCLK_MMC0,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 18, .size = 2  },
-       .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 0, .size = 4  },
-       .sources        = &clkset_spi_mmc,
-};
-
-static struct clksrc_clk clk_sclk_mmc1 = {
-       .clk    = {
-               .name           = "mmc_bus",
-               .devname        = "s3c-sdhci.1",
-               .ctrlbit        = S3C_CLKCON_SCLK_MMC1,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 20, .size = 2  },
-       .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 4, .size = 4  },
-       .sources        = &clkset_spi_mmc,
-};
-
-static struct clksrc_clk clk_sclk_mmc2 = {
-       .clk    = {
-               .name           = "mmc_bus",
-               .devname        = "s3c-sdhci.2",
-               .ctrlbit        = S3C_CLKCON_SCLK_MMC2,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 22, .size = 2  },
-       .reg_div        = { .reg = S3C_CLK_DIV1, .shift = 8, .size = 4  },
-       .sources        = &clkset_spi_mmc,
-};
-
-static struct clksrc_clk clk_sclk_spi0 = {
-       .clk    = {
-               .name           = "spi-bus",
-               .devname        = "s3c6410-spi.0",
-               .ctrlbit        = S3C_CLKCON_SCLK_SPI0,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src = { .reg = S3C_CLK_SRC, .shift = 14, .size = 2 },
-       .reg_div = { .reg = S3C_CLK_DIV2, .shift = 0, .size = 4 },
-       .sources = &clkset_spi_mmc,
-};
-
-static struct clksrc_clk clk_sclk_spi1 = {
-       .clk    = {
-               .name           = "spi-bus",
-               .devname        = "s3c6410-spi.1",
-               .ctrlbit        = S3C_CLKCON_SCLK_SPI1,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src = { .reg = S3C_CLK_SRC, .shift = 16, .size = 2 },
-       .reg_div = { .reg = S3C_CLK_DIV2, .shift = 4, .size = 4 },
-       .sources = &clkset_spi_mmc,
-};
-
-static struct clksrc_clk clk_audio_bus0 = {
-       .clk    = {
-               .name           = "audio-bus",
-               .devname        = "samsung-i2s.0",
-               .ctrlbit        = S3C_CLKCON_SCLK_AUDIO0,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 7, .size = 3  },
-       .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 8, .size = 4  },
-       .sources        = &clkset_audio0,
-};
-
-static struct clksrc_clk clk_audio_bus1 = {
-       .clk    = {
-               .name           = "audio-bus",
-               .devname        = "samsung-i2s.1",
-               .ctrlbit        = S3C_CLKCON_SCLK_AUDIO1,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C_CLK_SRC, .shift = 10, .size = 3  },
-       .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 12, .size = 4  },
-       .sources        = &clkset_audio1,
-};
-
-#ifdef CONFIG_CPU_S3C6410
-static struct clksrc_clk clk_audio_bus2 = {
-       .clk    = {
-               .name           = "audio-bus",
-               .devname        = "samsung-i2s.2",
-               .ctrlbit        = S3C6410_CLKCON_SCLK_AUDIO2,
-               .enable         = s3c64xx_sclk_ctrl,
-       },
-       .reg_src        = { .reg = S3C6410_CLK_SRC2, .shift = 0, .size = 3  },
-       .reg_div        = { .reg = S3C_CLK_DIV2, .shift = 24, .size = 4  },
-       .sources        = &clkset_audio2,
-};
-#endif
-/* Clock initialisation code */
-
-static struct clksrc_clk *init_parents[] = {
-       &clk_mout_apll,
-       &clk_mout_epll,
-       &clk_mout_mpll,
-};
-
-static struct clksrc_clk *clksrc_cdev[] = {
-       &clk_sclk_uclk,
-       &clk_sclk_mmc0,
-       &clk_sclk_mmc1,
-       &clk_sclk_mmc2,
-       &clk_sclk_spi0,
-       &clk_sclk_spi1,
-       &clk_audio_bus0,
-       &clk_audio_bus1,
-};
-
-static struct clk *clk_cdev[] = {
-       &clk_hsmmc0,
-       &clk_hsmmc1,
-       &clk_hsmmc2,
-       &clk_48m_spi0,
-       &clk_48m_spi1,
-       &clk_i2s0,
-       &clk_i2s1,
-};
-
-static struct clk_lookup s3c64xx_clk_lookup[] = {
-       CLKDEV_INIT(NULL, "clk_uart_baud2", &clk_p),
-       CLKDEV_INIT(NULL, "clk_uart_baud3", &clk_sclk_uclk.clk),
-       CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.0", &clk_hsmmc0),
-       CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &clk_hsmmc1),
-       CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.0", &clk_hsmmc2),
-       CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk),
-       CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk),
-       CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk),
-       CLKDEV_INIT(NULL, "spi_busclk0", &clk_p),
-       CLKDEV_INIT("s3c6410-spi.0", "spi_busclk1", &clk_sclk_spi0.clk),
-       CLKDEV_INIT("s3c6410-spi.0", "spi_busclk2", &clk_48m_spi0),
-       CLKDEV_INIT("s3c6410-spi.1", "spi_busclk1", &clk_sclk_spi1.clk),
-       CLKDEV_INIT("s3c6410-spi.1", "spi_busclk2", &clk_48m_spi1),
-       CLKDEV_INIT("samsung-i2s.0", "i2s_opclk0", &clk_i2s0),
-       CLKDEV_INIT("samsung-i2s.0", "i2s_opclk1", &clk_audio_bus0.clk),
-       CLKDEV_INIT("samsung-i2s.1", "i2s_opclk0", &clk_i2s1),
-       CLKDEV_INIT("samsung-i2s.1", "i2s_opclk1", &clk_audio_bus1.clk),
-#ifdef CONFIG_CPU_S3C6410
-       CLKDEV_INIT("samsung-i2s.2", "i2s_opclk0", &clk_i2s2),
-       CLKDEV_INIT("samsung-i2s.2", "i2s_opclk1", &clk_audio_bus2.clk),
-#endif
-};
-
-#define GET_DIV(clk, field) ((((clk) & field##_MASK) >> field##_SHIFT) + 1)
-
-void __init_or_cpufreq s3c64xx_setup_clocks(void)
-{
-       struct clk *xtal_clk;
-       unsigned long xtal;
-       unsigned long fclk;
-       unsigned long hclk;
-       unsigned long hclk2;
-       unsigned long pclk;
-       unsigned long epll;
-       unsigned long apll;
-       unsigned long mpll;
-       unsigned int ptr;
-       u32 clkdiv0;
-
-       printk(KERN_DEBUG "%s: registering clocks\n", __func__);
-
-       clkdiv0 = __raw_readl(S3C_CLK_DIV0);
-       printk(KERN_DEBUG "%s: clkdiv0 = %08x\n", __func__, clkdiv0);
-
-       xtal_clk = clk_get(NULL, "xtal");
-       BUG_ON(IS_ERR(xtal_clk));
-
-       xtal = clk_get_rate(xtal_clk);
-       clk_put(xtal_clk);
-
-       printk(KERN_DEBUG "%s: xtal is %ld\n", __func__, xtal);
-
-       /* For now assume the mux always selects the crystal */
-       clk_ext_xtal_mux.parent = xtal_clk;
-
-       epll = s3c_get_pll6553x(xtal, __raw_readl(S3C_EPLL_CON0),
-                               __raw_readl(S3C_EPLL_CON1));
-       mpll = s3c6400_get_pll(xtal, __raw_readl(S3C_MPLL_CON));
-       apll = s3c6400_get_pll(xtal, __raw_readl(S3C_APLL_CON));
-
-       fclk = mpll;
-
-       printk(KERN_INFO "S3C64XX: PLL settings, A=%ld, M=%ld, E=%ld\n",
-              apll, mpll, epll);
-
-       if(__raw_readl(S3C64XX_OTHERS) & S3C64XX_OTHERS_SYNCMUXSEL)
-               /* Synchronous mode */
-               hclk2 = apll / GET_DIV(clkdiv0, S3C6400_CLKDIV0_HCLK2);
-       else
-               /* Asynchronous mode */
-               hclk2 = mpll / GET_DIV(clkdiv0, S3C6400_CLKDIV0_HCLK2);
-
-       hclk = hclk2 / GET_DIV(clkdiv0, S3C6400_CLKDIV0_HCLK);
-       pclk = hclk2 / GET_DIV(clkdiv0, S3C6400_CLKDIV0_PCLK);
-
-       printk(KERN_INFO "S3C64XX: HCLK2=%ld, HCLK=%ld, PCLK=%ld\n",
-              hclk2, hclk, pclk);
-
-       clk_fout_mpll.rate = mpll;
-       clk_fout_epll.rate = epll;
-       clk_fout_apll.rate = apll;
-
-       clk_h2.rate = hclk2;
-       clk_h.rate = hclk;
-       clk_p.rate = pclk;
-       clk_f.rate = fclk;
-
-       for (ptr = 0; ptr < ARRAY_SIZE(init_parents); ptr++)
-               s3c_set_clksrc(init_parents[ptr], true);
-
-       for (ptr = 0; ptr < ARRAY_SIZE(clksrcs); ptr++)
-               s3c_set_clksrc(&clksrcs[ptr], true);
-}
-
-static struct clk *clks1[] __initdata = {
-       &clk_ext_xtal_mux,
-       &clk_iis_cd0,
-       &clk_iis_cd1,
-       &clk_iisv4_cd,
-       &clk_pcm_cd,
-       &clk_mout_epll.clk,
-       &clk_mout_mpll.clk,
-       &clk_dout_mpll,
-       &clk_arm,
-};
-
-static struct clk *clks[] __initdata = {
-       &clk_ext,
-       &clk_epll,
-       &clk_27m,
-       &clk_48m,
-       &clk_h2,
-       &clk_xusbxti,
-};
-
-/**
- * s3c64xx_register_clocks - register clocks for s3c6400 and s3c6410
- * @xtal: The rate for the clock crystal feeding the PLLs.
- * @armclk_divlimit: Divisor mask for ARMCLK.
- *
- * Register the clocks for the S3C6400 and S3C6410 SoC range, such
- * as ARMCLK as well as the necessary parent clocks.
- *
- * This call does not setup the clocks, which is left to the
- * s3c64xx_setup_clocks() call which may be needed by the cpufreq
- * or resume code to re-set the clocks if the bootloader has changed
- * them.
- */
-void __init s3c64xx_register_clocks(unsigned long xtal, 
-                                   unsigned armclk_divlimit)
-{
-       unsigned int cnt;
-
-       armclk_mask = armclk_divlimit;
-
-       s3c24xx_register_baseclocks(xtal);
-       s3c24xx_register_clocks(clks, ARRAY_SIZE(clks));
-
-       s3c_register_clocks(init_clocks, ARRAY_SIZE(init_clocks));
-
-       s3c_register_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
-       s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off));
-
-       s3c24xx_register_clocks(clk_cdev, ARRAY_SIZE(clk_cdev));
-       for (cnt = 0; cnt < ARRAY_SIZE(clk_cdev); cnt++)
-               s3c_disable_clocks(clk_cdev[cnt], 1);
-
-       s3c24xx_register_clocks(clks1, ARRAY_SIZE(clks1));
-       s3c_register_clksrc(clksrcs, ARRAY_SIZE(clksrcs));
-       for (cnt = 0; cnt < ARRAY_SIZE(clksrc_cdev); cnt++)
-               s3c_register_clksrc(clksrc_cdev[cnt], 1);
-       clkdev_add_table(s3c64xx_clk_lookup, ARRAY_SIZE(s3c64xx_clk_lookup));
-}
index 73d79cf5e14118b1e99861c5bd79d6ffc9517164..7a3ce4c39e5fecd3470b06344295d766869b702e 100644 (file)
  * published by the Free Software Foundation.
  */
 
+/*
+ * NOTE: Code in this file is not used when booting with Device Tree support.
+ */
+
 #include <linux/kernel.h>
 #include <linux/init.h>
 #include <linux/module.h>
+#include <linux/clk-provider.h>
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
 #include <linux/serial_core.h>
@@ -38,7 +43,6 @@
 #include <mach/regs-gpio.h>
 
 #include <plat/cpu.h>
-#include <plat/clock.h>
 #include <plat/devs.h>
 #include <plat/pm.h>
 #include <plat/gpio-cfg.h>
 
 #include "common.h"
 
+/* External clock frequency */
+static unsigned long xtal_f = 12000000, xusbxti_f = 48000000;
+
+void __init s3c64xx_set_xtal_freq(unsigned long freq)
+{
+       xtal_f = freq;
+}
+
+void __init s3c64xx_set_xusbxti_freq(unsigned long freq)
+{
+       xusbxti_f = freq;
+}
+
 /* uart registration process */
 
 static void __init s3c64xx_init_uarts(struct s3c2410_uartcfg *cfg, int no)
@@ -67,7 +84,6 @@ static struct cpu_table cpu_ids[] __initdata = {
                .idcode         = S3C6400_CPU_ID,
                .idmask         = S3C64XX_CPU_MASK,
                .map_io         = s3c6400_map_io,
-               .init_clocks    = s3c6400_init_clocks,
                .init_uarts     = s3c64xx_init_uarts,
                .init           = s3c6400_init,
                .name           = name_s3c6400,
@@ -75,7 +91,6 @@ static struct cpu_table cpu_ids[] __initdata = {
                .idcode         = S3C6410_CPU_ID,
                .idmask         = S3C64XX_CPU_MASK,
                .map_io         = s3c6410_map_io,
-               .init_clocks    = s3c6410_init_clocks,
                .init_uarts     = s3c64xx_init_uarts,
                .init           = s3c6410_init,
                .name           = name_s3c6410,
@@ -192,6 +207,10 @@ void __init s3c64xx_init_io(struct map_desc *mach_desc, int size)
 
 static __init int s3c64xx_dev_init(void)
 {
+       /* Not applicable when using DT. */
+       if (of_have_populated_dt())
+               return 0;
+
        subsys_system_register(&s3c64xx_subsys, NULL);
        return device_register(&s3c64xx_dev);
 }
@@ -213,8 +232,10 @@ void __init s3c64xx_init_irq(u32 vic0_valid, u32 vic1_valid)
 {
        /*
         * FIXME: there is no better place to put this at the moment
-        * (samsung_wdt_reset_init needs clocks)
+        * (s3c64xx_clk_init needs ioremap and must happen before init_time
+        * samsung_wdt_reset_init needs clocks)
         */
+       s3c64xx_clk_init(NULL, xtal_f, xusbxti_f, soc_is_s3c6400(), S3C_VA_SYS);
        samsung_wdt_reset_init(S3C_VA_WATCHDOG);
 
        printk(KERN_DEBUG "%s: initialising interrupts\n", __func__);
@@ -391,6 +412,10 @@ static int __init s3c64xx_init_irq_eint(void)
 {
        int irq;
 
+       /* On DT-enabled systems EINTs are handled by pinctrl-s3c64xx driver. */
+       if (of_have_populated_dt())
+               return -ENODEV;
+
        for (irq = IRQ_EINT(0); irq <= IRQ_EINT(27); irq++) {
                irq_set_chip_and_handler(irq, &s3c_irq_eint, handle_level_irq);
                irq_set_chip_data(irq, (void *)eint_irq_to_bit(irq));
index e8f990b37665b900d667c7332b6e26bf389beb93..bd3bd562011e1515198e924627fd7165f57cb3dd 100644 (file)
 void s3c64xx_init_irq(u32 vic0, u32 vic1);
 void s3c64xx_init_io(struct map_desc *mach_desc, int size);
 
-void s3c64xx_register_clocks(unsigned long xtal, unsigned armclk_limit);
-void s3c64xx_setup_clocks(void);
-
 void s3c64xx_restart(enum reboot_mode mode, const char *cmd);
 void s3c64xx_init_late(void);
 
+void s3c64xx_clk_init(struct device_node *np, unsigned long xtal_f,
+       unsigned long xusbxti_f, bool is_s3c6400, void __iomem *reg_base);
+void s3c64xx_set_xtal_freq(unsigned long freq);
+void s3c64xx_set_xusbxti_freq(unsigned long freq);
+
 #ifdef CONFIG_CPU_S3C6400
 
 extern  int s3c6400_init(void);
 extern void s3c6400_init_irq(void);
 extern void s3c6400_map_io(void);
-extern void s3c6400_init_clocks(int xtal);
 
 #else
-#define s3c6400_init_clocks NULL
 #define s3c6400_map_io NULL
 #define s3c6400_init NULL
 #endif
@@ -46,10 +46,8 @@ extern void s3c6400_init_clocks(int xtal);
 extern  int s3c6410_init(void);
 extern void s3c6410_init_irq(void);
 extern void s3c6410_map_io(void);
-extern void s3c6410_init_clocks(int xtal);
 
 #else
-#define s3c6410_init_clocks NULL
 #define s3c6410_map_io NULL
 #define s3c6410_init NULL
 #endif
index 759846c28d1296990bea0f1817ae782f46e042af..7e22c2113816a4c6bb897dc0c54a74e876da3f86 100644 (file)
  * published by the Free Software Foundation.
 */
 
+/*
+ * NOTE: Code in this file is not used when booting with Device Tree support.
+ */
+
 #include <linux/kernel.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
@@ -24,6 +28,7 @@
 #include <linux/err.h>
 #include <linux/io.h>
 #include <linux/amba/pl080.h>
+#include <linux/of.h>
 
 #include <mach/dma.h>
 #include <mach/map.h>
@@ -677,7 +682,7 @@ static int s3c64xx_dma_init1(int chno, enum dma_ch chbase,
                goto err_map;
        }
 
-       clk_enable(dmac->clk);
+       clk_prepare_enable(dmac->clk);
 
        dmac->regs = regs;
        dmac->chanbase = chbase;
@@ -711,7 +716,7 @@ static int s3c64xx_dma_init1(int chno, enum dma_ch chbase,
        return 0;
 
 err_clk:
-       clk_disable(dmac->clk);
+       clk_disable_unprepare(dmac->clk);
        clk_put(dmac->clk);
 err_map:
        iounmap(regs);
@@ -726,6 +731,10 @@ static int __init s3c64xx_dma_init(void)
 {
        int ret;
 
+       /* This driver is not supported when booting with device tree. */
+       if (of_have_populated_dt())
+               return -ENODEV;
+
        printk(KERN_INFO "%s: Registering DMA channels\n", __func__);
 
        dma_pool = dma_pool_create("DMA-LLI", NULL, sizeof(struct pl080s_lli), 16, 0);
index 05332b998ec07d36e1dba08453a265d7230ddba6..4f44aac770924134e735bf5e8b41eb6fe25c5920 100644 (file)
 #ifndef __PLAT_REGS_CLOCK_H
 #define __PLAT_REGS_CLOCK_H __FILE__
 
+/*
+ * FIXME: Remove remaining definitions
+ */
+
 #define S3C_CLKREG(x)          (S3C_VA_SYS + (x))
 
-#define S3C_APLL_LOCK          S3C_CLKREG(0x00)
-#define S3C_MPLL_LOCK          S3C_CLKREG(0x04)
-#define S3C_EPLL_LOCK          S3C_CLKREG(0x08)
-#define S3C_APLL_CON           S3C_CLKREG(0x0C)
-#define S3C_MPLL_CON           S3C_CLKREG(0x10)
-#define S3C_EPLL_CON0          S3C_CLKREG(0x14)
-#define S3C_EPLL_CON1          S3C_CLKREG(0x18)
-#define S3C_CLK_SRC            S3C_CLKREG(0x1C)
-#define S3C_CLK_DIV0           S3C_CLKREG(0x20)
-#define S3C_CLK_DIV1           S3C_CLKREG(0x24)
-#define S3C_CLK_DIV2           S3C_CLKREG(0x28)
-#define S3C_CLK_OUT            S3C_CLKREG(0x2C)
-#define S3C_HCLK_GATE          S3C_CLKREG(0x30)
 #define S3C_PCLK_GATE          S3C_CLKREG(0x34)
-#define S3C_SCLK_GATE          S3C_CLKREG(0x38)
-#define S3C_MEM0_GATE          S3C_CLKREG(0x3C)
 #define S3C6410_CLK_SRC2       S3C_CLKREG(0x10C)
 #define S3C_MEM_SYS_CFG                S3C_CLKREG(0x120)
 
-/* CLKDIV0 */
-#define S3C6400_CLKDIV0_PCLK_MASK      (0xf << 12)
-#define S3C6400_CLKDIV0_PCLK_SHIFT     (12)
-#define S3C6400_CLKDIV0_HCLK2_MASK     (0x7 << 9)
-#define S3C6400_CLKDIV0_HCLK2_SHIFT    (9)
-#define S3C6400_CLKDIV0_HCLK_MASK      (0x1 << 8)
-#define S3C6400_CLKDIV0_HCLK_SHIFT     (8)
-#define S3C6400_CLKDIV0_MPLL_MASK      (0x1 << 4)
-#define S3C6400_CLKDIV0_MPLL_SHIFT     (4)
-
-#define S3C6400_CLKDIV0_ARM_MASK       (0x7 << 0)
-#define S3C6410_CLKDIV0_ARM_MASK       (0xf << 0)
-#define S3C6400_CLKDIV0_ARM_SHIFT      (0)
-
-/* HCLK GATE Registers */
-#define S3C_CLKCON_HCLK_3DSE   (1<<31)
-#define S3C_CLKCON_HCLK_UHOST  (1<<29)
-#define S3C_CLKCON_HCLK_SECUR  (1<<28)
-#define S3C_CLKCON_HCLK_SDMA1  (1<<27)
-#define S3C_CLKCON_HCLK_SDMA0  (1<<26)
-#define S3C_CLKCON_HCLK_IROM   (1<<25)
-#define S3C_CLKCON_HCLK_DDR1   (1<<24)
-#define S3C_CLKCON_HCLK_DDR0   (1<<23)
-#define S3C_CLKCON_HCLK_MEM1   (1<<22)
-#define S3C_CLKCON_HCLK_MEM0   (1<<21)
-#define S3C_CLKCON_HCLK_USB    (1<<20)
-#define S3C_CLKCON_HCLK_HSMMC2 (1<<19)
-#define S3C_CLKCON_HCLK_HSMMC1 (1<<18)
-#define S3C_CLKCON_HCLK_HSMMC0 (1<<17)
-#define S3C_CLKCON_HCLK_MDP    (1<<16)
-#define S3C_CLKCON_HCLK_DHOST  (1<<15)
-#define S3C_CLKCON_HCLK_IHOST  (1<<14)
-#define S3C_CLKCON_HCLK_DMA1   (1<<13)
-#define S3C_CLKCON_HCLK_DMA0   (1<<12)
-#define S3C_CLKCON_HCLK_JPEG   (1<<11)
-#define S3C_CLKCON_HCLK_CAMIF  (1<<10)
-#define S3C_CLKCON_HCLK_SCALER (1<<9)
-#define S3C_CLKCON_HCLK_2D     (1<<8)
-#define S3C_CLKCON_HCLK_TV     (1<<7)
-#define S3C_CLKCON_HCLK_POST0  (1<<5)
-#define S3C_CLKCON_HCLK_ROT    (1<<4)
-#define S3C_CLKCON_HCLK_LCD    (1<<3)
-#define S3C_CLKCON_HCLK_TZIC   (1<<2)
-#define S3C_CLKCON_HCLK_INTC   (1<<1)
-#define S3C_CLKCON_HCLK_MFC    (1<<0)
-
 /* PCLK GATE Registers */
-#define S3C6410_CLKCON_PCLK_I2C1       (1<<27)
-#define S3C6410_CLKCON_PCLK_IIS2       (1<<26)
-#define S3C_CLKCON_PCLK_SKEY           (1<<24)
-#define S3C_CLKCON_PCLK_CHIPID         (1<<23)
-#define S3C_CLKCON_PCLK_SPI1           (1<<22)
-#define S3C_CLKCON_PCLK_SPI0           (1<<21)
-#define S3C_CLKCON_PCLK_HSIRX          (1<<20)
-#define S3C_CLKCON_PCLK_HSITX          (1<<19)
-#define S3C_CLKCON_PCLK_GPIO           (1<<18)
-#define S3C_CLKCON_PCLK_IIC            (1<<17)
-#define S3C_CLKCON_PCLK_IIS1           (1<<16)
-#define S3C_CLKCON_PCLK_IIS0           (1<<15)
-#define S3C_CLKCON_PCLK_AC97           (1<<14)
-#define S3C_CLKCON_PCLK_TZPC           (1<<13)
-#define S3C_CLKCON_PCLK_TSADC          (1<<12)
-#define S3C_CLKCON_PCLK_KEYPAD         (1<<11)
-#define S3C_CLKCON_PCLK_IRDA           (1<<10)
-#define S3C_CLKCON_PCLK_PCM1           (1<<9)
-#define S3C_CLKCON_PCLK_PCM0           (1<<8)
-#define S3C_CLKCON_PCLK_PWM            (1<<7)
-#define S3C_CLKCON_PCLK_RTC            (1<<6)
-#define S3C_CLKCON_PCLK_WDT            (1<<5)
 #define S3C_CLKCON_PCLK_UART3          (1<<4)
 #define S3C_CLKCON_PCLK_UART2          (1<<3)
 #define S3C_CLKCON_PCLK_UART1          (1<<2)
 #define S3C_CLKCON_PCLK_UART0          (1<<1)
-#define S3C_CLKCON_PCLK_MFC            (1<<0)
-
-/* SCLK GATE Registers */
-#define S3C_CLKCON_SCLK_UHOST          (1<<30)
-#define S3C_CLKCON_SCLK_MMC2_48                (1<<29)
-#define S3C_CLKCON_SCLK_MMC1_48                (1<<28)
-#define S3C_CLKCON_SCLK_MMC0_48                (1<<27)
-#define S3C_CLKCON_SCLK_MMC2           (1<<26)
-#define S3C_CLKCON_SCLK_MMC1           (1<<25)
-#define S3C_CLKCON_SCLK_MMC0           (1<<24)
-#define S3C_CLKCON_SCLK_SPI1_48        (1<<23)
-#define S3C_CLKCON_SCLK_SPI0_48        (1<<22)
-#define S3C_CLKCON_SCLK_SPI1           (1<<21)
-#define S3C_CLKCON_SCLK_SPI0           (1<<20)
-#define S3C_CLKCON_SCLK_DAC27          (1<<19)
-#define S3C_CLKCON_SCLK_TV27           (1<<18)
-#define S3C_CLKCON_SCLK_SCALER27       (1<<17)
-#define S3C_CLKCON_SCLK_SCALER         (1<<16)
-#define S3C_CLKCON_SCLK_LCD27          (1<<15)
-#define S3C_CLKCON_SCLK_LCD            (1<<14)
-#define S3C6400_CLKCON_SCLK_POST1_27   (1<<13)
-#define S3C6410_CLKCON_FIMC            (1<<13)
-#define S3C_CLKCON_SCLK_POST0_27       (1<<12)
-#define S3C6400_CLKCON_SCLK_POST1      (1<<11)
-#define S3C6410_CLKCON_SCLK_AUDIO2     (1<<11)
-#define S3C_CLKCON_SCLK_POST0          (1<<10)
-#define S3C_CLKCON_SCLK_AUDIO1         (1<<9)
-#define S3C_CLKCON_SCLK_AUDIO0         (1<<8)
-#define S3C_CLKCON_SCLK_SECUR          (1<<7)
-#define S3C_CLKCON_SCLK_IRDA           (1<<6)
-#define S3C_CLKCON_SCLK_UART           (1<<5)
-#define S3C_CLKCON_SCLK_ONENAND        (1<<4)
-#define S3C_CLKCON_SCLK_MFC            (1<<3)
-#define S3C_CLKCON_SCLK_CAM            (1<<2)
-#define S3C_CLKCON_SCLK_JPEG           (1<<1)
-
-/* CLKSRC */
-
-#define S3C6400_CLKSRC_APLL_MOUT       (1 << 0)
-#define S3C6400_CLKSRC_MPLL_MOUT       (1 << 1)
-#define S3C6400_CLKSRC_EPLL_MOUT       (1 << 2)
-#define S3C6400_CLKSRC_APLL_MOUT_SHIFT (0)
-#define S3C6400_CLKSRC_MPLL_MOUT_SHIFT (1)
-#define S3C6400_CLKSRC_EPLL_MOUT_SHIFT (2)
-#define S3C6400_CLKSRC_MFC             (1 << 4)
 
 /* MEM_SYS_CFG */
 #define MEM_SYS_CFG_INDEP_CF           0x4000
index c3da1b68d03e0b352490b0df0e5ee8f1741ad87f..1649c0d1c1b80ff6a40f83ceb84881e354a54b1f 100644 (file)
  * published by the Free Software Foundation.
  */
 
+/*
+ * NOTE: Code in this file is not used when booting with Device Tree support.
+ */
+
 #include <linux/kernel.h>
 #include <linux/syscore_ops.h>
 #include <linux/interrupt.h>
 #include <linux/serial_core.h>
 #include <linux/irq.h>
 #include <linux/io.h>
+#include <linux/of.h>
 
 #include <mach/map.h>
 
@@ -101,6 +106,10 @@ static struct syscore_ops s3c64xx_irq_syscore_ops = {
 
 static __init int s3c64xx_syscore_init(void)
 {
+       /* Appropriate drivers (pinctrl, uart) handle this when using DT. */
+       if (of_have_populated_dt())
+               return 0;
+
        register_syscore_ops(&s3c64xx_irq_syscore_ops);
 
        return 0;
index 35e3f54574eff6773f5c2eca10b69d0d1e02cccc..d266dd5f7060ec37d0266205bf129bdf86177a3e 100644 (file)
@@ -207,7 +207,7 @@ static struct platform_device *anw6410_devices[] __initdata = {
 static void __init anw6410_map_io(void)
 {
        s3c64xx_init_io(anw6410_iodesc, ARRAY_SIZE(anw6410_iodesc));
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(anw6410_uartcfgs, ARRAY_SIZE(anw6410_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 
index eb8e5a1aca420005fa5e0988a099e51eb8ec6f94..1a911df9e4519e4c2f6ca494b5a2b182a14e765b 100644 (file)
@@ -743,7 +743,7 @@ static struct s3c2410_platform_i2c i2c1_pdata = {
 static void __init crag6410_map_io(void)
 {
        s3c64xx_init_io(NULL, 0);
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(crag6410_uartcfgs, ARRAY_SIZE(crag6410_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 
index f39569e0f2e6c4045f95e333a255c72d87be4c98..e8064044ef796d35a12bfcc0e06c86dea065dca1 100644 (file)
@@ -247,7 +247,7 @@ static struct platform_device *hmt_devices[] __initdata = {
 static void __init hmt_map_io(void)
 {
        s3c64xx_init_io(hmt_iodesc, ARRAY_SIZE(hmt_iodesc));
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(hmt_uartcfgs, ARRAY_SIZE(hmt_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 }
index fc043e3ecdf8a869ea77e27af42dad5c24222356..58d46a3d7b78936f88318824d1a378fea2532fc1 100644 (file)
@@ -231,7 +231,7 @@ static void __init mini6410_map_io(void)
        u32 tmp;
 
        s3c64xx_init_io(NULL, 0);
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(mini6410_uartcfgs, ARRAY_SIZE(mini6410_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 
index 7e2c3908f1f87a2db546867d9ff8417e2051049e..2067b0bf55b43127eef766b52beb283a11db6431 100644 (file)
@@ -86,7 +86,7 @@ static struct map_desc ncp_iodesc[] __initdata = {};
 static void __init ncp_map_io(void)
 {
        s3c64xx_init_io(ncp_iodesc, ARRAY_SIZE(ncp_iodesc));
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(ncp_uartcfgs, ARRAY_SIZE(ncp_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 }
diff --git a/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c b/arch/arm/mach-s3c64xx/mach-s3c64xx-dt.c
new file mode 100644 (file)
index 0000000..7eb9a10
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Samsung's S3C64XX flattened device tree enabled machine
+ *
+ * Copyright (c) 2013 Tomasz Figa <tomasz.figa@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+*/
+
+#include <linux/clk-provider.h>
+#include <linux/irqchip.h>
+#include <linux/of_platform.h>
+
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/system_misc.h>
+
+#include <plat/cpu.h>
+#include <plat/watchdog-reset.h>
+
+#include <mach/map.h>
+
+#include "common.h"
+
+/*
+ * IO mapping for shared system controller IP.
+ *
+ * FIXME: Make remaining drivers use dynamic mapping.
+ */
+static struct map_desc s3c64xx_dt_iodesc[] __initdata = {
+       {
+               .virtual        = (unsigned long)S3C_VA_SYS,
+               .pfn            = __phys_to_pfn(S3C64XX_PA_SYSCON),
+               .length         = SZ_4K,
+               .type           = MT_DEVICE,
+       },
+};
+
+static void __init s3c64xx_dt_map_io(void)
+{
+       debug_ll_io_init();
+       iotable_init(s3c64xx_dt_iodesc, ARRAY_SIZE(s3c64xx_dt_iodesc));
+
+       s3c64xx_init_cpu();
+
+       if (!soc_is_s3c64xx())
+               panic("SoC is not S3C64xx!");
+}
+
+static void __init s3c64xx_dt_init_irq(void)
+{
+       of_clk_init(NULL);
+       samsung_wdt_reset_of_init();
+       irqchip_init();
+};
+
+static void __init s3c64xx_dt_init_machine(void)
+{
+       of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
+}
+
+static void s3c64xx_dt_restart(enum reboot_mode mode, const char *cmd)
+{
+       if (mode != REBOOT_SOFT)
+               samsung_wdt_reset();
+
+       /* if all else fails, or mode was for soft, jump to 0 */
+       soft_restart(0);
+}
+
+static char const *s3c64xx_dt_compat[] __initdata = {
+       "samsung,s3c6400",
+       "samsung,s3c6410",
+       NULL
+};
+
+DT_MACHINE_START(S3C6400_DT, "Samsung S3C64xx (Flattened Device Tree)")
+       /* Maintainer: Tomasz Figa <tomasz.figa@gmail.com> */
+       .dt_compat      = s3c64xx_dt_compat,
+       .map_io         = s3c64xx_dt_map_io,
+       .init_irq       = s3c64xx_dt_init_irq,
+       .init_machine   = s3c64xx_dt_init_machine,
+       .restart        = s3c64xx_dt_restart,
+MACHINE_END
index 86d980b448fd0bc272e1e0cf1ab616f0e32ab24e..0f47237be3b2dd2286fe0582791548d16df3a786 100644 (file)
@@ -337,13 +337,6 @@ err:
        return ret;
 }
 
-static int __init smartq_usb_otg_init(void)
-{
-       clk_xusbxti.rate = 12000000;
-
-       return 0;
-}
-
 static int __init smartq_wifi_init(void)
 {
        int ret;
@@ -377,7 +370,8 @@ static struct map_desc smartq_iodesc[] __initdata = {};
 void __init smartq_map_io(void)
 {
        s3c64xx_init_io(smartq_iodesc, ARRAY_SIZE(smartq_iodesc));
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
+       s3c64xx_set_xusbxti_freq(12000000);
        s3c24xx_init_uarts(smartq_uartcfgs, ARRAY_SIZE(smartq_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 
@@ -399,7 +393,6 @@ void __init smartq_machine_init(void)
        WARN_ON(smartq_lcd_setup_gpio());
        WARN_ON(smartq_power_off_init());
        WARN_ON(smartq_usb_host_init());
-       WARN_ON(smartq_usb_otg_init());
        WARN_ON(smartq_wifi_init());
 
        platform_add_devices(smartq_devices, ARRAY_SIZE(smartq_devices));
index d70c0843aea2d8bca384cc814d0270e778def128..27381cfcabbedbe2a669272d3786f56db08f11ba 100644 (file)
@@ -65,7 +65,7 @@ static struct map_desc smdk6400_iodesc[] = {};
 static void __init smdk6400_map_io(void)
 {
        s3c64xx_init_io(smdk6400_iodesc, ARRAY_SIZE(smdk6400_iodesc));
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(smdk6400_uartcfgs, ARRAY_SIZE(smdk6400_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 }
index d90b450c5645bb9f9c10944a65e3086623e25b3b..2a7b32ca5c96a3037c007eeb032092cf2127bfec 100644 (file)
@@ -634,7 +634,7 @@ static void __init smdk6410_map_io(void)
        u32 tmp;
 
        s3c64xx_init_io(smdk6410_iodesc, ARRAY_SIZE(smdk6410_iodesc));
-       s3c24xx_init_clocks(12000000);
+       s3c64xx_set_xtal_freq(12000000);
        s3c24xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk6410_uartcfgs));
        samsung_set_timer_source(SAMSUNG_PWM3, SAMSUNG_PWM4);
 
index 6a1f91fea678e471fdbf5a161ed2bdbd08a26108..8cdb824a3b432456c39353b64e658ac920e3e353 100644 (file)
@@ -194,29 +194,8 @@ void s3c_pm_debug_smdkled(u32 set, u32 clear)
 #endif
 
 static struct sleep_save core_save[] = {
-       SAVE_ITEM(S3C_APLL_LOCK),
-       SAVE_ITEM(S3C_MPLL_LOCK),
-       SAVE_ITEM(S3C_EPLL_LOCK),
-       SAVE_ITEM(S3C_CLK_SRC),
-       SAVE_ITEM(S3C_CLK_DIV0),
-       SAVE_ITEM(S3C_CLK_DIV1),
-       SAVE_ITEM(S3C_CLK_DIV2),
-       SAVE_ITEM(S3C_CLK_OUT),
-       SAVE_ITEM(S3C_HCLK_GATE),
-       SAVE_ITEM(S3C_PCLK_GATE),
-       SAVE_ITEM(S3C_SCLK_GATE),
-       SAVE_ITEM(S3C_MEM0_GATE),
-
-       SAVE_ITEM(S3C_EPLL_CON1),
-       SAVE_ITEM(S3C_EPLL_CON0),
-
        SAVE_ITEM(S3C64XX_MEM0DRVCON),
        SAVE_ITEM(S3C64XX_MEM1DRVCON),
-
-#ifndef CONFIG_CPU_FREQ
-       SAVE_ITEM(S3C_APLL_CON),
-       SAVE_ITEM(S3C_MPLL_CON),
-#endif
 };
 
 static struct sleep_save misc_save[] = {
index 4869714c6f1bb015e4b6af08705837169bad2466..3db0c98222f7686574be92d880f1ee25e5369e3f 100644 (file)
@@ -9,6 +9,10 @@
  * published by the Free Software Foundation.
 */
 
+/*
+ * NOTE: Code in this file is not used when booting with Device Tree support.
+ */
+
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/interrupt.h>
@@ -20,6 +24,7 @@
 #include <linux/device.h>
 #include <linux/serial_core.h>
 #include <linux/platform_device.h>
+#include <linux/of.h>
 
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
@@ -58,12 +63,6 @@ void __init s3c6400_map_io(void)
        s3c64xx_onenand1_setname("s3c6400-onenand");
 }
 
-void __init s3c6400_init_clocks(int xtal)
-{
-       s3c64xx_register_clocks(xtal, S3C6400_CLKDIV0_ARM_MASK);
-       s3c64xx_setup_clocks();
-}
-
 void __init s3c6400_init_irq(void)
 {
        /* VIC0 does not have IRQS 5..7,
@@ -82,6 +81,10 @@ static struct device s3c6400_dev = {
 
 static int __init s3c6400_core_init(void)
 {
+       /* Not applicable when using DT. */
+       if (of_have_populated_dt())
+               return 0;
+
        return subsys_system_register(&s3c6400_subsys, NULL);
 }
 
index 31c29fdf1800404948a9e9e207454dcf337b7f7e..72b2278953a896a6dad6ad892e3a1438fd62d882 100644 (file)
  * published by the Free Software Foundation.
 */
 
+/*
+ * NOTE: Code in this file is not used when booting with Device Tree support.
+ */
+
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/interrupt.h>
@@ -21,6 +25,7 @@
 #include <linux/device.h>
 #include <linux/serial_core.h>
 #include <linux/platform_device.h>
+#include <linux/of.h>
 
 #include <asm/mach/arch.h>
 #include <asm/mach/map.h>
@@ -62,13 +67,6 @@ void __init s3c6410_map_io(void)
        s3c_cfcon_setname("s3c64xx-pata");
 }
 
-void __init s3c6410_init_clocks(int xtal)
-{
-       printk(KERN_DEBUG "%s: initialising clocks\n", __func__);
-       s3c64xx_register_clocks(xtal, S3C6410_CLKDIV0_ARM_MASK);
-       s3c64xx_setup_clocks();
-}
-
 void __init s3c6410_init_irq(void)
 {
        /* VIC0 is missing IRQ7, VIC1 is fully populated. */
@@ -86,6 +84,10 @@ static struct device s3c6410_dev = {
 
 static int __init s3c6410_core_init(void)
 {
+       /* Not applicable when using DT. */
+       if (of_have_populated_dt())
+               return 0;
+
        return subsys_system_register(&s3c6410_subsys, NULL);
 }
 
index 1f94c310c4775f3a40e168e84845d4da6dbd40ab..b45240512ce0d6ad288d87133147fba464e98016 100644 (file)
@@ -101,6 +101,12 @@ config ARCH_R8A7790
        select SH_CLK_CPG
        select RENESAS_IRQC
 
+config ARCH_R8A7791
+       bool "R-Car M2 (R8A77910)"
+       select ARM_GIC
+       select CPU_V7
+       select SH_CLK_CPG
+
 config ARCH_EMEV2
        bool "Emma Mobile EV2"
        select ARCH_WANT_OPTIONAL_GPIOLIB
index 2705bfa8c113161d0368e11e7f7158a294cb26a6..228193cc9a3813bf9299e394d83a25b6d87bb603 100644 (file)
@@ -15,6 +15,7 @@ obj-$(CONFIG_ARCH_R8A7740)    += setup-r8a7740.o
 obj-$(CONFIG_ARCH_R8A7778)     += setup-r8a7778.o
 obj-$(CONFIG_ARCH_R8A7779)     += setup-r8a7779.o
 obj-$(CONFIG_ARCH_R8A7790)     += setup-r8a7790.o
+obj-$(CONFIG_ARCH_R8A7791)     += setup-r8a7791.o
 obj-$(CONFIG_ARCH_EMEV2)       += setup-emev2.o
 
 # Clock objects
@@ -27,6 +28,7 @@ obj-$(CONFIG_ARCH_R8A7740)    += clock-r8a7740.o
 obj-$(CONFIG_ARCH_R8A7778)     += clock-r8a7778.o
 obj-$(CONFIG_ARCH_R8A7779)     += clock-r8a7779.o
 obj-$(CONFIG_ARCH_R8A7790)     += clock-r8a7790.o
+obj-$(CONFIG_ARCH_R8A7791)     += clock-r8a7791.o
 obj-$(CONFIG_ARCH_EMEV2)       += clock-emev2.o
 endif
 
index c4bf2d8fb111aba4bbddb54a2fdb95287f784582..fb6af83858e3f0210f9eeaae2c2794a5a618ca48 100644 (file)
@@ -69,6 +69,15 @@ static struct clk extal_clk = {
        .mapping = &cpg_mapping,
 };
 
+static struct clk audio_clk_a = {
+};
+
+static struct clk audio_clk_b = {
+};
+
+static struct clk audio_clk_c = {
+};
+
 /*
  * clock ratio of these clock will be updated
  * on r8a7778_clock_init()
@@ -100,18 +109,23 @@ static struct clk *main_clks[] = {
        &p_clk,
        &g_clk,
        &z_clk,
+       &audio_clk_a,
+       &audio_clk_b,
+       &audio_clk_c,
 };
 
 enum {
        MSTP331,
        MSTP323, MSTP322, MSTP321,
+       MSTP311, MSTP310,
+       MSTP309, MSTP308, MSTP307,
        MSTP114,
        MSTP110, MSTP109,
        MSTP100,
        MSTP030,
        MSTP029, MSTP028, MSTP027, MSTP026, MSTP025, MSTP024, MSTP023, MSTP022, MSTP021,
-       MSTP016, MSTP015,
-       MSTP007,
+       MSTP016, MSTP015, MSTP012, MSTP011, MSTP010,
+       MSTP009, MSTP008, MSTP007,
        MSTP_NR };
 
 static struct clk mstp_clks[MSTP_NR] = {
@@ -119,6 +133,11 @@ static struct clk mstp_clks[MSTP_NR] = {
        [MSTP323] = SH_CLK_MSTP32(&p_clk, MSTPCR3, 23, 0), /* SDHI0 */
        [MSTP322] = SH_CLK_MSTP32(&p_clk, MSTPCR3, 22, 0), /* SDHI1 */
        [MSTP321] = SH_CLK_MSTP32(&p_clk, MSTPCR3, 21, 0), /* SDHI2 */
+       [MSTP311] = SH_CLK_MSTP32(&p_clk, MSTPCR3, 11, 0), /* SSI4 */
+       [MSTP310] = SH_CLK_MSTP32(&p_clk, MSTPCR3, 10, 0), /* SSI5 */
+       [MSTP309] = SH_CLK_MSTP32(&p_clk, MSTPCR3,  9, 0), /* SSI6 */
+       [MSTP308] = SH_CLK_MSTP32(&p_clk, MSTPCR3,  8, 0), /* SSI7 */
+       [MSTP307] = SH_CLK_MSTP32(&p_clk, MSTPCR3,  7, 0), /* SSI8 */
        [MSTP114] = SH_CLK_MSTP32(&p_clk, MSTPCR1, 14, 0), /* Ether */
        [MSTP110] = SH_CLK_MSTP32(&s_clk, MSTPCR1, 10, 0), /* VIN0 */
        [MSTP109] = SH_CLK_MSTP32(&s_clk, MSTPCR1,  9, 0), /* VIN1 */
@@ -135,11 +154,20 @@ static struct clk mstp_clks[MSTP_NR] = {
        [MSTP021] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 21, 0), /* SCIF5 */
        [MSTP016] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 16, 0), /* TMU0 */
        [MSTP015] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 15, 0), /* TMU1 */
+       [MSTP012] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 12, 0), /* SSI0 */
+       [MSTP011] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 11, 0), /* SSI1 */
+       [MSTP010] = SH_CLK_MSTP32(&p_clk, MSTPCR0, 10, 0), /* SSI2 */
+       [MSTP009] = SH_CLK_MSTP32(&p_clk, MSTPCR0,  9, 0), /* SSI3 */
+       [MSTP008] = SH_CLK_MSTP32(&p_clk, MSTPCR0,  8, 0), /* SRU */
        [MSTP007] = SH_CLK_MSTP32(&p_clk, MSTPCR0,  7, 0), /* HSPI */
 };
 
 static struct clk_lookup lookups[] = {
        /* main */
+       CLKDEV_CON_ID("audio_clk_a",    &audio_clk_a),
+       CLKDEV_CON_ID("audio_clk_b",    &audio_clk_b),
+       CLKDEV_CON_ID("audio_clk_c",    &audio_clk_c),
+       CLKDEV_CON_ID("audio_clk_internal",     &s1_clk),
        CLKDEV_CON_ID("shyway_clk",     &s_clk),
        CLKDEV_CON_ID("peripheral_clk", &p_clk),
 
@@ -153,6 +181,7 @@ static struct clk_lookup lookups[] = {
        CLKDEV_DEV_ID("r8a7778-vin.1", &mstp_clks[MSTP109]), /* VIN1 */
        CLKDEV_DEV_ID("ehci-platform", &mstp_clks[MSTP100]), /* USB EHCI port0/1 */
        CLKDEV_DEV_ID("ohci-platform", &mstp_clks[MSTP100]), /* USB OHCI port0/1 */
+       CLKDEV_DEV_ID("renesas_usbhs", &mstp_clks[MSTP100]), /* USB FUNC */
        CLKDEV_DEV_ID("i2c-rcar.0", &mstp_clks[MSTP030]), /* I2C0 */
        CLKDEV_DEV_ID("i2c-rcar.1", &mstp_clks[MSTP029]), /* I2C1 */
        CLKDEV_DEV_ID("i2c-rcar.2", &mstp_clks[MSTP028]), /* I2C2 */
@@ -168,6 +197,17 @@ static struct clk_lookup lookups[] = {
        CLKDEV_DEV_ID("sh-hspi.0", &mstp_clks[MSTP007]), /* HSPI0 */
        CLKDEV_DEV_ID("sh-hspi.1", &mstp_clks[MSTP007]), /* HSPI1 */
        CLKDEV_DEV_ID("sh-hspi.2", &mstp_clks[MSTP007]), /* HSPI2 */
+       CLKDEV_DEV_ID("rcar_sound", &mstp_clks[MSTP008]), /* SRU */
+
+       CLKDEV_ICK_ID("ssi.0", "rcar_sound", &mstp_clks[MSTP012]),
+       CLKDEV_ICK_ID("ssi.1", "rcar_sound", &mstp_clks[MSTP011]),
+       CLKDEV_ICK_ID("ssi.2", "rcar_sound", &mstp_clks[MSTP010]),
+       CLKDEV_ICK_ID("ssi.3", "rcar_sound", &mstp_clks[MSTP009]),
+       CLKDEV_ICK_ID("ssi.4", "rcar_sound", &mstp_clks[MSTP311]),
+       CLKDEV_ICK_ID("ssi.5", "rcar_sound", &mstp_clks[MSTP310]),
+       CLKDEV_ICK_ID("ssi.6", "rcar_sound", &mstp_clks[MSTP309]),
+       CLKDEV_ICK_ID("ssi.7", "rcar_sound", &mstp_clks[MSTP308]),
+       CLKDEV_ICK_ID("ssi.8", "rcar_sound", &mstp_clks[MSTP307]),
 };
 
 void __init r8a7778_clock_init(void)
index bd6ad922eb7ec6c4213607031810310dd2a289bd..1f7080fab0a53556a4ce5efb3cbf3368dce71465 100644 (file)
@@ -200,7 +200,7 @@ static struct clk_lookup lookups[] = {
        CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP322]), /* SDHI1 */
        CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP321]), /* SDHI2 */
        CLKDEV_DEV_ID("sh_mobile_sdhi.3", &mstp_clks[MSTP320]), /* SDHI3 */
-       CLKDEV_DEV_ID("rcar-du.0", &mstp_clks[MSTP103]), /* DU */
+       CLKDEV_DEV_ID("rcar-du-r8a7779", &mstp_clks[MSTP103]), /* DU */
 };
 
 void __init r8a7779_clock_init(void)
index fc36d3db0b4d9541d9b8ca08c47b4530a8891c29..d99b87bc76eac00e6038dff96da364bd5d4d248f 100644 (file)
@@ -182,7 +182,7 @@ static struct clk div6_clks[DIV6_NR] = {
 /* MSTP */
 enum {
        MSTP813,
-       MSTP721, MSTP720,
+       MSTP726, MSTP725, MSTP724, MSTP723, MSTP722, MSTP721, MSTP720,
        MSTP717, MSTP716,
        MSTP522,
        MSTP315, MSTP314, MSTP313, MSTP312, MSTP311, MSTP305, MSTP304,
@@ -193,6 +193,11 @@ enum {
 
 static struct clk mstp_clks[MSTP_NR] = {
        [MSTP813] = SH_CLK_MSTP32(&p_clk, SMSTPCR8, 13, 0), /* Ether */
+       [MSTP726] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 26, 0), /* LVDS0 */
+       [MSTP725] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 25, 0), /* LVDS1 */
+       [MSTP724] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 24, 0), /* DU0 */
+       [MSTP723] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 23, 0), /* DU1 */
+       [MSTP722] = SH_CLK_MSTP32(&zx_clk, SMSTPCR7, 22, 0), /* DU2 */
        [MSTP721] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 21, 0), /* SCIF0 */
        [MSTP720] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 20, 0), /* SCIF1 */
        [MSTP717] = SH_CLK_MSTP32(&zs_clk, SMSTPCR7, 17, 0), /* HSCIF0 */
@@ -251,6 +256,11 @@ static struct clk_lookup lookups[] = {
        CLKDEV_CON_ID("ssprs",          &div6_clks[DIV6_SSPRS]),
 
        /* MSTP */
+       CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7790", &mstp_clks[MSTP726]),
+       CLKDEV_ICK_ID("lvds.1", "rcar-du-r8a7790", &mstp_clks[MSTP725]),
+       CLKDEV_ICK_ID("du.0", "rcar-du-r8a7790", &mstp_clks[MSTP724]),
+       CLKDEV_ICK_ID("du.1", "rcar-du-r8a7790", &mstp_clks[MSTP723]),
+       CLKDEV_ICK_ID("du.2", "rcar-du-r8a7790", &mstp_clks[MSTP722]),
        CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]),
        CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]),
        CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]),
diff --git a/arch/arm/mach-shmobile/clock-r8a7791.c b/arch/arm/mach-shmobile/clock-r8a7791.c
new file mode 100644 (file)
index 0000000..c9a26f1
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * r8a7791 clock framework support
+ *
+ * Copyright (C) 2013  Renesas Electronics Corporation
+ * Copyright (C) 2013  Renesas Solutions Corp.
+ * Copyright (C) 2013  Magnus Damm
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+#include <linux/init.h>
+#include <linux/io.h>
+#include <linux/kernel.h>
+#include <linux/sh_clk.h>
+#include <linux/clkdev.h>
+#include <mach/clock.h>
+#include <mach/common.h>
+
+/*
+ *   MD                EXTAL           PLL0    PLL1    PLL3
+ * 14 13 19    (MHz)           *1      *1
+ *---------------------------------------------------
+ * 0  0  0     15 x 1          x172/2  x208/2  x106
+ * 0  0  1     15 x 1          x172/2  x208/2  x88
+ * 0  1  0     20 x 1          x130/2  x156/2  x80
+ * 0  1  1     20 x 1          x130/2  x156/2  x66
+ * 1  0  0     26 / 2          x200/2  x240/2  x122
+ * 1  0  1     26 / 2          x200/2  x240/2  x102
+ * 1  1  0     30 / 2          x172/2  x208/2  x106
+ * 1  1  1     30 / 2          x172/2  x208/2  x88
+ *
+ * *1 :        Table 7.6 indicates VCO ouput (PLLx = VCO/2)
+ *     see "p1 / 2" on R8A7791_CLOCK_ROOT() below
+ */
+
+#define MD(nr) (1 << nr)
+
+#define CPG_BASE 0xe6150000
+#define CPG_LEN 0x1000
+
+#define SMSTPCR0       0xE6150130
+#define SMSTPCR1       0xE6150134
+#define SMSTPCR2       0xe6150138
+#define SMSTPCR3       0xE615013C
+#define SMSTPCR5       0xE6150144
+#define SMSTPCR7       0xe615014c
+#define SMSTPCR8       0xE6150990
+#define SMSTPCR9       0xE6150994
+#define SMSTPCR10      0xE6150998
+#define SMSTPCR11      0xE615099C
+
+#define MODEMR         0xE6160060
+#define SDCKCR         0xE6150074
+#define SD2CKCR                0xE6150078
+#define SD3CKCR                0xE615007C
+#define MMC0CKCR       0xE6150240
+#define MMC1CKCR       0xE6150244
+#define SSPCKCR                0xE6150248
+#define SSPRSCKCR      0xE615024C
+
+static struct clk_mapping cpg_mapping = {
+       .phys   = CPG_BASE,
+       .len    = CPG_LEN,
+};
+
+static struct clk extal_clk = {
+       /* .rate will be updated on r8a7791_clock_init() */
+       .mapping        = &cpg_mapping,
+};
+
+static struct sh_clk_ops followparent_clk_ops = {
+       .recalc = followparent_recalc,
+};
+
+static struct clk main_clk = {
+       /* .parent will be set r8a73a4_clock_init */
+       .ops    = &followparent_clk_ops,
+};
+
+/*
+ * clock ratio of these clock will be updated
+ * on r8a7791_clock_init()
+ */
+SH_FIXED_RATIO_CLK_SET(pll1_clk,               main_clk,       1, 1);
+SH_FIXED_RATIO_CLK_SET(pll3_clk,               main_clk,       1, 1);
+
+/* fixed ratio clock */
+SH_FIXED_RATIO_CLK_SET(extal_div2_clk,         extal_clk,      1, 2);
+SH_FIXED_RATIO_CLK_SET(cp_clk,                 extal_clk,      1, 2);
+
+SH_FIXED_RATIO_CLK_SET(pll1_div2_clk,          pll1_clk,       1, 2);
+SH_FIXED_RATIO_CLK_SET(hp_clk,                 pll1_clk,       1, 12);
+SH_FIXED_RATIO_CLK_SET(p_clk,                  pll1_clk,       1, 24);
+SH_FIXED_RATIO_CLK_SET(rclk_clk,               pll1_clk,       1, (48 * 1024));
+SH_FIXED_RATIO_CLK_SET(mp_clk,                 pll1_div2_clk,  1, 15);
+
+static struct clk *main_clks[] = {
+       &extal_clk,
+       &extal_div2_clk,
+       &main_clk,
+       &pll1_clk,
+       &pll1_div2_clk,
+       &pll3_clk,
+       &hp_clk,
+       &p_clk,
+       &rclk_clk,
+       &mp_clk,
+       &cp_clk,
+};
+
+/* MSTP */
+enum {
+       MSTP721, MSTP720,
+       MSTP719, MSTP718, MSTP715, MSTP714,
+       MSTP216, MSTP207, MSTP206,
+       MSTP204, MSTP203, MSTP202, MSTP1105, MSTP1106, MSTP1107,
+       MSTP124,
+       MSTP_NR
+};
+
+static struct clk mstp_clks[MSTP_NR] = {
+       [MSTP721] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 21, 0), /* SCIF0 */
+       [MSTP720] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 20, 0), /* SCIF1 */
+       [MSTP719] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 19, 0), /* SCIF2 */
+       [MSTP718] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 18, 0), /* SCIF3 */
+       [MSTP715] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 15, 0), /* SCIF4 */
+       [MSTP714] = SH_CLK_MSTP32(&p_clk, SMSTPCR7, 14, 0), /* SCIF5 */
+       [MSTP216] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 16, 0), /* SCIFB2 */
+       [MSTP207] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 7, 0), /* SCIFB1 */
+       [MSTP206] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 6, 0), /* SCIFB0 */
+       [MSTP204] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 4, 0), /* SCIFA0 */
+       [MSTP203] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 3, 0), /* SCIFA1 */
+       [MSTP202] = SH_CLK_MSTP32(&mp_clk, SMSTPCR2, 2, 0), /* SCIFA2 */
+       [MSTP1105] = SH_CLK_MSTP32(&mp_clk, SMSTPCR11, 5, 0), /* SCIFA3 */
+       [MSTP1106] = SH_CLK_MSTP32(&mp_clk, SMSTPCR11, 6, 0), /* SCIFA4 */
+       [MSTP1107] = SH_CLK_MSTP32(&mp_clk, SMSTPCR11, 7, 0), /* SCIFA5 */
+       [MSTP124] = SH_CLK_MSTP32(&rclk_clk, SMSTPCR1, 24, 0), /* CMT0 */
+};
+
+static struct clk_lookup lookups[] = {
+
+       /* main clocks */
+       CLKDEV_CON_ID("extal",          &extal_clk),
+       CLKDEV_CON_ID("extal_div2",     &extal_div2_clk),
+       CLKDEV_CON_ID("main",           &main_clk),
+       CLKDEV_CON_ID("pll1",           &pll1_clk),
+       CLKDEV_CON_ID("pll1_div2",      &pll1_div2_clk),
+       CLKDEV_CON_ID("pll3",           &pll3_clk),
+       CLKDEV_CON_ID("hp",             &hp_clk),
+       CLKDEV_CON_ID("p",              &p_clk),
+       CLKDEV_CON_ID("rclk",           &rclk_clk),
+       CLKDEV_CON_ID("mp",             &mp_clk),
+       CLKDEV_CON_ID("cp",             &cp_clk),
+       CLKDEV_CON_ID("peripheral_clk", &hp_clk),
+
+       /* MSTP */
+       CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */
+       CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */
+       CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]), /* SCIFB0 */
+       CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP207]), /* SCIFB1 */
+       CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP216]), /* SCIFB2 */
+       CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP202]), /* SCIFA2 */
+       CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP721]), /* SCIF0 */
+       CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP720]), /* SCIF1 */
+       CLKDEV_DEV_ID("sh-sci.8", &mstp_clks[MSTP719]), /* SCIF2 */
+       CLKDEV_DEV_ID("sh-sci.9", &mstp_clks[MSTP718]), /* SCIF3 */
+       CLKDEV_DEV_ID("sh-sci.10", &mstp_clks[MSTP715]), /* SCIF4 */
+       CLKDEV_DEV_ID("sh-sci.11", &mstp_clks[MSTP714]), /* SCIF5 */
+       CLKDEV_DEV_ID("sh-sci.12", &mstp_clks[MSTP1105]), /* SCIFA3 */
+       CLKDEV_DEV_ID("sh-sci.13", &mstp_clks[MSTP1106]), /* SCIFA4 */
+       CLKDEV_DEV_ID("sh-sci.14", &mstp_clks[MSTP1107]), /* SCIFA5 */
+       CLKDEV_DEV_ID("sh_cmt.0", &mstp_clks[MSTP124]),
+};
+
+#define R8A7791_CLOCK_ROOT(e, m, p0, p1, p30, p31)             \
+       extal_clk.rate  = e * 1000 * 1000;                      \
+       main_clk.parent = m;                                    \
+       SH_CLK_SET_RATIO(&pll1_clk_ratio, p1 / 2, 1);           \
+       if (mode & MD(19))                                      \
+               SH_CLK_SET_RATIO(&pll3_clk_ratio, p31, 1);      \
+       else                                                    \
+               SH_CLK_SET_RATIO(&pll3_clk_ratio, p30, 1)
+
+
+void __init r8a7791_clock_init(void)
+{
+       void __iomem *modemr = ioremap_nocache(MODEMR, PAGE_SIZE);
+       u32 mode;
+       int k, ret = 0;
+
+       BUG_ON(!modemr);
+       mode = ioread32(modemr);
+       iounmap(modemr);
+
+       switch (mode & (MD(14) | MD(13))) {
+       case 0:
+               R8A7791_CLOCK_ROOT(15, &extal_clk, 172, 208, 106, 88);
+               break;
+       case MD(13):
+               R8A7791_CLOCK_ROOT(20, &extal_clk, 130, 156, 80, 66);
+               break;
+       case MD(14):
+               R8A7791_CLOCK_ROOT(26, &extal_div2_clk, 200, 240, 122, 102);
+               break;
+       case MD(13) | MD(14):
+               R8A7791_CLOCK_ROOT(30, &extal_div2_clk, 172, 208, 106, 88);
+               break;
+       }
+
+       for (k = 0; !ret && (k < ARRAY_SIZE(main_clks)); k++)
+               ret = clk_register(main_clks[k]);
+
+       if (!ret)
+               ret = sh_clk_mstp_register(mstp_clks, MSTP_NR);
+
+       clkdev_add_table(lookups, ARRAY_SIZE(lookups));
+
+       if (!ret)
+               shmobile_clk_init();
+       else
+               goto epanic;
+
+       return;
+
+epanic:
+       panic("failed to setup r8a7791 clocks\n");
+}
index adfcf51b163dcd0503f51ec4961647534428daa5..ea1dca6880f40236c7eca8b1507608a5044a0da4 100644 (file)
@@ -35,4 +35,6 @@ extern void r8a7778_clock_init(void);
 extern void r8a7778_init_irq_extpin(int irlm);
 extern void r8a7778_pinmux_init(void);
 
+extern int r8a7778_usb_phy_power(bool enable);
+
 #endif /* __ASM_R8A7778_H__ */
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7791.h b/arch/arm/mach-shmobile/include/mach/r8a7791.h
new file mode 100644 (file)
index 0000000..2e6d661
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __ASM_R8A7791_H__
+#define __ASM_R8A7791_H__
+
+void r8a7791_add_dt_devices(void);
+void r8a7791_clock_init(void);
+void r8a7791_init_early(void);
+
+#endif /* __ASM_R8A7791_H__ */
index 6a2657ebd19775c4a9c79bae91f7aa0dac2bc812..e484d1420a01a01338f3b104b561c5a8f21c05aa 100644 (file)
@@ -95,29 +95,46 @@ static struct sh_timer_config sh_tmu1_platform_data __initdata = {
                &sh_tmu##idx##_platform_data,           \
                sizeof(sh_tmu##idx##_platform_data))
 
-/* USB */
-static struct usb_phy *phy;
+int r8a7778_usb_phy_power(bool enable)
+{
+       static struct usb_phy *phy = NULL;
+       int ret = 0;
+
+       if (!phy)
+               phy = usb_get_phy(USB_PHY_TYPE_USB2);
+
+       if (IS_ERR(phy)) {
+               pr_err("kernel doesn't have usb phy driver\n");
+               return PTR_ERR(phy);
+       }
+
+       if (enable)
+               ret = usb_phy_init(phy);
+       else
+               usb_phy_shutdown(phy);
 
+       return ret;
+}
+
+/* USB */
 static int usb_power_on(struct platform_device *pdev)
 {
-       if (IS_ERR(phy))
-               return PTR_ERR(phy);
+       int ret = r8a7778_usb_phy_power(true);
+
+       if (ret)
+               return ret;
 
        pm_runtime_enable(&pdev->dev);
        pm_runtime_get_sync(&pdev->dev);
 
-       usb_phy_init(phy);
-
        return 0;
 }
 
 static void usb_power_off(struct platform_device *pdev)
 {
-       if (IS_ERR(phy))
+       if (r8a7778_usb_phy_power(false))
                return;
 
-       usb_phy_shutdown(phy);
-
        pm_runtime_put_sync(&pdev->dev);
        pm_runtime_disable(&pdev->dev);
 }
@@ -353,8 +370,6 @@ void __init r8a7778_add_standard_devices(void)
 
 void __init r8a7778_init_late(void)
 {
-       phy = usb_get_phy(USB_PHY_TYPE_USB2);
-
        platform_device_register_full(&ehci_info);
        platform_device_register_full(&ohci_info);
 }
diff --git a/arch/arm/mach-shmobile/setup-r8a7791.c b/arch/arm/mach-shmobile/setup-r8a7791.c
new file mode 100644 (file)
index 0000000..b56399d
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * r8a7791 processor support
+ *
+ * Copyright (C) 2013  Renesas Electronics Corporation
+ * Copyright (C) 2013  Renesas Solutions Corp.
+ * Copyright (C) 2013  Magnus Damm
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <linux/irq.h>
+#include <linux/kernel.h>
+#include <linux/of_platform.h>
+#include <linux/serial_sci.h>
+#include <linux/sh_timer.h>
+#include <mach/common.h>
+#include <mach/irqs.h>
+#include <mach/r8a7791.h>
+#include <asm/mach/arch.h>
+
+#define SCIF_COMMON(scif_type, baseaddr, irq)                  \
+       .type           = scif_type,                            \
+       .mapbase        = baseaddr,                             \
+       .flags          = UPF_BOOT_AUTOCONF | UPF_IOREMAP,      \
+       .irqs           = SCIx_IRQ_MUXED(irq)
+
+#define SCIFA_DATA(index, baseaddr, irq)               \
+[index] = {                                            \
+       SCIF_COMMON(PORT_SCIFA, baseaddr, irq),         \
+       .scbrr_algo_id  = SCBRR_ALGO_4,                 \
+       .scscr = SCSCR_RE | SCSCR_TE,   \
+}
+
+#define SCIFB_DATA(index, baseaddr, irq)       \
+[index] = {                                    \
+       SCIF_COMMON(PORT_SCIFB, baseaddr, irq), \
+       .scbrr_algo_id  = SCBRR_ALGO_4,         \
+       .scscr = SCSCR_RE | SCSCR_TE,           \
+}
+
+#define SCIF_DATA(index, baseaddr, irq)                \
+[index] = {                                            \
+       SCIF_COMMON(PORT_SCIF, baseaddr, irq),          \
+       .scbrr_algo_id  = SCBRR_ALGO_2,                 \
+       .scscr = SCSCR_RE | SCSCR_TE,   \
+}
+
+#define HSCIF_DATA(index, baseaddr, irq)               \
+[index] = {                                            \
+       SCIF_COMMON(PORT_HSCIF, baseaddr, irq),         \
+       .scbrr_algo_id  = SCBRR_ALGO_6,                 \
+       .scscr = SCSCR_RE | SCSCR_TE,   \
+}
+
+enum { SCIFA0, SCIFA1, SCIFB0, SCIFB1, SCIFB2, SCIFA2, SCIF0, SCIF1,
+       SCIF2, SCIF3, SCIF4, SCIF5, SCIFA3, SCIFA4, SCIFA5 };
+
+static const struct plat_sci_port scif[] __initconst = {
+       SCIFA_DATA(SCIFA0, 0xe6c40000, gic_spi(144)), /* SCIFA0 */
+       SCIFA_DATA(SCIFA1, 0xe6c50000, gic_spi(145)), /* SCIFA1 */
+       SCIFB_DATA(SCIFB0, 0xe6c20000, gic_spi(148)), /* SCIFB0 */
+       SCIFB_DATA(SCIFB1, 0xe6c30000, gic_spi(149)), /* SCIFB1 */
+       SCIFB_DATA(SCIFB2, 0xe6ce0000, gic_spi(150)), /* SCIFB2 */
+       SCIFA_DATA(SCIFA2, 0xe6c60000, gic_spi(151)), /* SCIFA2 */
+       SCIF_DATA(SCIF0, 0xe6e60000, gic_spi(152)), /* SCIF0 */
+       SCIF_DATA(SCIF1, 0xe6e68000, gic_spi(153)), /* SCIF1 */
+       SCIF_DATA(SCIF2, 0xe6e58000, gic_spi(22)), /* SCIF2 */
+       SCIF_DATA(SCIF3, 0xe6ea8000, gic_spi(23)), /* SCIF3 */
+       SCIF_DATA(SCIF4, 0xe6ee0000, gic_spi(24)), /* SCIF4 */
+       SCIF_DATA(SCIF5, 0xe6ee8000, gic_spi(25)), /* SCIF5 */
+       SCIFA_DATA(SCIFA3, 0xe6c70000, gic_spi(29)), /* SCIFA3 */
+       SCIFA_DATA(SCIFA4, 0xe6c78000, gic_spi(30)), /* SCIFA4 */
+       SCIFA_DATA(SCIFA5, 0xe6c80000, gic_spi(31)), /* SCIFA5 */
+};
+
+static inline void r8a7791_register_scif(int idx)
+{
+       platform_device_register_data(&platform_bus, "sh-sci", idx, &scif[idx],
+                                     sizeof(struct plat_sci_port));
+}
+
+static const struct sh_timer_config cmt00_platform_data __initconst = {
+       .name = "CMT00",
+       .timer_bit = 0,
+       .clockevent_rating = 80,
+};
+
+static const struct resource cmt00_resources[] __initconst = {
+       DEFINE_RES_MEM(0xffca0510, 0x0c),
+       DEFINE_RES_MEM(0xffca0500, 0x04),
+       DEFINE_RES_IRQ(gic_spi(142)), /* CMT0_0 */
+};
+
+#define r8a7791_register_cmt(idx)                                      \
+       platform_device_register_resndata(&platform_bus, "sh_cmt",      \
+                                         idx, cmt##idx##_resources,    \
+                                         ARRAY_SIZE(cmt##idx##_resources), \
+                                         &cmt##idx##_platform_data,    \
+                                         sizeof(struct sh_timer_config))
+
+void __init r8a7791_add_dt_devices(void)
+{
+       r8a7791_register_scif(SCIFA0);
+       r8a7791_register_scif(SCIFA1);
+       r8a7791_register_scif(SCIFB0);
+       r8a7791_register_scif(SCIFB1);
+       r8a7791_register_scif(SCIFB2);
+       r8a7791_register_scif(SCIFA2);
+       r8a7791_register_scif(SCIF0);
+       r8a7791_register_scif(SCIF1);
+       r8a7791_register_scif(SCIF2);
+       r8a7791_register_scif(SCIF3);
+       r8a7791_register_scif(SCIF4);
+       r8a7791_register_scif(SCIF5);
+       r8a7791_register_scif(SCIFA3);
+       r8a7791_register_scif(SCIFA4);
+       r8a7791_register_scif(SCIFA5);
+       r8a7791_register_cmt(00);
+}
+
+void __init r8a7791_init_early(void)
+{
+#ifndef CONFIG_ARM_ARCH_TIMER
+       shmobile_setup_delay(1300, 2, 4); /* Cortex-A15 @ 1300MHz */
+#endif
+}
+
+#ifdef CONFIG_USE_OF
+static const char *r8a7791_boards_compat_dt[] __initdata = {
+       "renesas,r8a7791",
+       NULL,
+};
+
+DT_MACHINE_START(R8A7791_DT, "Generic R8A7791 (Flattened Device Tree)")
+       .init_early     = r8a7791_init_early,
+       .dt_compat      = r8a7791_boards_compat_dt,
+MACHINE_END
+#endif /* CONFIG_USE_OF */
index fe1f3e26b88b114b2c47ecb082b358a6a220bea7..616b96e86ad4fb067395ad4d2411cb8befcb92b8 100644 (file)
@@ -2,14 +2,11 @@
 # Makefile for the linux kernel, U8500 machine.
 #
 
-obj-y                          := cpu.o devices.o devices-common.o \
-                                  id.o usb.o timer.o pm.o
+obj-y                          := cpu.o devices.o id.o timer.o pm.o
 obj-$(CONFIG_CACHE_L2X0)       += cache-l2x0.o
 obj-$(CONFIG_UX500_SOC_DB8500) += cpu-db8500.o devices-db8500.o
 obj-$(CONFIG_MACH_MOP500)      += board-mop500.o board-mop500-sdi.o \
                                board-mop500-regulators.o \
-                               board-mop500-uib.o board-mop500-stuib.o \
-                               board-mop500-u8500uib.o \
                                board-mop500-pins.o \
                                board-mop500-audio.o
 obj-$(CONFIG_SMP)              += platsmp.o headsmp.o
index ec0807247e60cb1a40d1f4f8dbdb23b266932b31..154e15f59702c1010af74cce8fed51077c78e111 100644 (file)
@@ -68,40 +68,6 @@ static struct stedma40_chan_cfg msp2_dma_tx = {
        .phy_channel = 1,
 };
 
-static struct platform_device *db8500_add_msp_i2s(struct device *parent,
-                       int id,
-                       resource_size_t base, int irq,
-                       struct msp_i2s_platform_data *pdata)
-{
-       struct platform_device *pdev;
-       struct resource res[] = {
-               DEFINE_RES_MEM(base, SZ_4K),
-               DEFINE_RES_IRQ(irq),
-       };
-
-       pr_info("Register platform-device 'ux500-msp-i2s', id %d, irq %d\n",
-               id, irq);
-       pdev = platform_device_register_resndata(parent, "ux500-msp-i2s", id,
-                                               res, ARRAY_SIZE(res),
-                                               pdata, sizeof(*pdata));
-       if (!pdev) {
-               pr_err("Failed to register platform-device 'ux500-msp-i2s.%d'!\n",
-                       id);
-               return NULL;
-       }
-
-       return pdev;
-}
-
-/* Platform device for ASoC MOP500 machine */
-static struct platform_device snd_soc_mop500 = {
-       .name = "snd-soc-mop500",
-       .id = 0,
-       .dev = {
-               .platform_data = NULL,
-       },
-};
-
 struct msp_i2s_platform_data msp2_platform_data = {
        .id = MSP_I2S_2,
        .msp_i2s_dma_rx = &msp2_dma_rx,
@@ -113,19 +79,3 @@ struct msp_i2s_platform_data msp3_platform_data = {
        .msp_i2s_dma_rx = &msp1_dma_rx,
        .msp_i2s_dma_tx = NULL,
 };
-
-void mop500_audio_init(struct device *parent)
-{
-       pr_info("%s: Register platform-device 'snd-soc-mop500'.\n", __func__);
-       platform_device_register(&snd_soc_mop500);
-
-       pr_info("Initialize MSP I2S-devices.\n");
-       db8500_add_msp_i2s(parent, 0, U8500_MSP0_BASE, IRQ_DB8500_MSP0,
-                          &msp0_platform_data);
-       db8500_add_msp_i2s(parent, 1, U8500_MSP1_BASE, IRQ_DB8500_MSP1,
-                          &msp1_platform_data);
-       db8500_add_msp_i2s(parent, 2, U8500_MSP2_BASE, IRQ_DB8500_MSP2,
-                          &msp2_platform_data);
-       db8500_add_msp_i2s(parent, 3, U8500_MSP3_BASE, IRQ_DB8500_MSP1,
-                          &msp3_platform_data);
-}
index b3e61a38e5c8aee776c5eff883b770d80529fe10..26600a1c53190ad3ae3724456a17dd7b8a35009d 100644 (file)
@@ -65,18 +65,6 @@ struct mmci_platform_data mop500_sdi0_data = {
 #endif
 };
 
-static void sdi0_configure(struct device *parent)
-{
-       /* Add the device, force v2 to subrevision 1 */
-       db8500_add_sdi0(parent, &mop500_sdi0_data, U8500_SDI_V2_PERIPHID);
-}
-
-void mop500_sdi_tc35892_init(struct device *parent)
-{
-       mop500_sdi0_data.gpio_cd = GPIO_SDMMC_CD;
-       sdi0_configure(parent);
-}
-
 /*
  * SDI1 (SDIO WLAN)
  */
@@ -178,42 +166,3 @@ struct mmci_platform_data mop500_sdi4_data = {
        .dma_tx_param   = &mop500_sdi4_dma_cfg_tx,
 #endif
 };
-
-void __init mop500_sdi_init(struct device *parent)
-{
-       /* PoP:ed eMMC */
-       db8500_add_sdi2(parent, &mop500_sdi2_data, U8500_SDI_V2_PERIPHID);
-       /* On-board eMMC */
-       db8500_add_sdi4(parent, &mop500_sdi4_data, U8500_SDI_V2_PERIPHID);
-
-       /*
-        * On boards with the TC35892 GPIO expander, sdi0 will finally
-        * be added when the TC35892 initializes and calls
-        * mop500_sdi_tc35892_init() above.
-        */
-}
-
-void __init snowball_sdi_init(struct device *parent)
-{
-       /* On Snowball MMC_CAP_SD_HIGHSPEED isn't supported (Hardware issue?) */
-       mop500_sdi0_data.capabilities &= ~MMC_CAP_SD_HIGHSPEED;
-       /* On-board eMMC */
-       db8500_add_sdi4(parent, &mop500_sdi4_data, U8500_SDI_V2_PERIPHID);
-       /* External Micro SD slot */
-       mop500_sdi0_data.gpio_cd = SNOWBALL_SDMMC_CD_GPIO;
-       mop500_sdi0_data.cd_invert = true;
-       sdi0_configure(parent);
-}
-
-void __init hrefv60_sdi_init(struct device *parent)
-{
-       /* PoP:ed eMMC */
-       db8500_add_sdi2(parent, &mop500_sdi2_data, U8500_SDI_V2_PERIPHID);
-       /* On-board eMMC */
-       db8500_add_sdi4(parent, &mop500_sdi4_data, U8500_SDI_V2_PERIPHID);
-       /* External Micro SD slot */
-       mop500_sdi0_data.gpio_cd = HREFV60_SDMMC_CD_GPIO;
-       sdi0_configure(parent);
-       /* WLAN SDIO channel */
-       db8500_add_sdi1(parent, &mop500_sdi1_data, U8500_SDI_V2_PERIPHID);
-}
diff --git a/arch/arm/mach-ux500/board-mop500-stuib.c b/arch/arm/mach-ux500/board-mop500-stuib.c
deleted file mode 100644 (file)
index 7e1f294..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * License terms: GNU General Public License (GPL), version 2
- */
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/mfd/stmpe.h>
-#include <linux/input/bu21013.h>
-#include <linux/gpio.h>
-#include <linux/interrupt.h>
-#include <linux/i2c.h>
-#include <linux/input/matrix_keypad.h>
-#include <asm/mach-types.h>
-
-#include "board-mop500.h"
-
-/* STMPE/SKE keypad use this key layout */
-static const unsigned int mop500_keymap[] = {
-       KEY(2, 5, KEY_END),
-       KEY(4, 1, KEY_POWER),
-       KEY(3, 5, KEY_VOLUMEDOWN),
-       KEY(1, 3, KEY_3),
-       KEY(5, 2, KEY_RIGHT),
-       KEY(5, 0, KEY_9),
-
-       KEY(0, 5, KEY_MENU),
-       KEY(7, 6, KEY_ENTER),
-       KEY(4, 5, KEY_0),
-       KEY(6, 7, KEY_2),
-       KEY(3, 4, KEY_UP),
-       KEY(3, 3, KEY_DOWN),
-
-       KEY(6, 4, KEY_SEND),
-       KEY(6, 2, KEY_BACK),
-       KEY(4, 2, KEY_VOLUMEUP),
-       KEY(5, 5, KEY_1),
-       KEY(4, 3, KEY_LEFT),
-       KEY(3, 2, KEY_7),
-};
-
-static const struct matrix_keymap_data mop500_keymap_data = {
-       .keymap         = mop500_keymap,
-       .keymap_size    = ARRAY_SIZE(mop500_keymap),
-};
-/*
- * STMPE1601
- */
-static struct stmpe_keypad_platform_data stmpe1601_keypad_data = {
-       .debounce_ms    = 64,
-       .scan_count     = 8,
-       .no_autorepeat  = true,
-       .keymap_data    = &mop500_keymap_data,
-};
-
-static struct stmpe_platform_data stmpe1601_data = {
-       .id             = 1,
-       .blocks         = STMPE_BLOCK_KEYPAD,
-       .irq_trigger    = IRQF_TRIGGER_FALLING,
-       .irq_base       = MOP500_STMPE1601_IRQ(0),
-       .keypad         = &stmpe1601_keypad_data,
-       .autosleep      = true,
-       .autosleep_timeout = 1024,
-};
-
-static struct i2c_board_info __initdata mop500_i2c0_devices_stuib[] = {
-       {
-               I2C_BOARD_INFO("stmpe1601", 0x40),
-               .irq = NOMADIK_GPIO_TO_IRQ(218),
-               .platform_data = &stmpe1601_data,
-               .flags = I2C_CLIENT_WAKE,
-       },
-};
-
-/*
- * BU21013 ROHM touchscreen interface on the STUIBs
- */
-
-#define TOUCH_GPIO_PIN  84
-
-#define TOUCH_XMAX     384
-#define TOUCH_YMAX     704
-
-#define PRCMU_CLOCK_OCR                0x1CC
-#define TSC_EXT_CLOCK_9_6MHZ   0x840000
-
-static struct bu21013_platform_device tsc_plat_device = {
-       .touch_pin = TOUCH_GPIO_PIN,
-       .touch_x_max = TOUCH_XMAX,
-       .touch_y_max = TOUCH_YMAX,
-       .ext_clk = false,
-       .x_flip = false,
-       .y_flip = true,
-};
-
-static struct i2c_board_info __initdata u8500_i2c3_devices_stuib[] = {
-       {
-               I2C_BOARD_INFO("bu21013_tp", 0x5C),
-               .platform_data = &tsc_plat_device,
-       },
-       {
-               I2C_BOARD_INFO("bu21013_tp", 0x5D),
-               .platform_data = &tsc_plat_device,
-       },
-};
-
-void __init mop500_stuib_init(void)
-{
-       if (machine_is_hrefv60())
-               tsc_plat_device.cs_pin = HREFV60_TOUCH_RST_GPIO;
-       else
-               tsc_plat_device.cs_pin = GPIO_BU21013_CS;
-
-       mop500_uib_i2c_add(0, mop500_i2c0_devices_stuib,
-                       ARRAY_SIZE(mop500_i2c0_devices_stuib));
-
-       mop500_uib_i2c_add(3, u8500_i2c3_devices_stuib,
-                       ARRAY_SIZE(u8500_i2c3_devices_stuib));
-}
diff --git a/arch/arm/mach-ux500/board-mop500-u8500uib.c b/arch/arm/mach-ux500/board-mop500-u8500uib.c
deleted file mode 100644 (file)
index d397c19..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Board data for the U8500 UIB, also known as the New UIB
- * License terms: GNU General Public License (GPL), version 2
- */
-#include <linux/gpio.h>
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/i2c.h>
-#include <linux/interrupt.h>
-#include <linux/mfd/tc3589x.h>
-#include <linux/input/matrix_keypad.h>
-
-#include "irqs.h"
-
-#include "board-mop500.h"
-
-static struct i2c_board_info __initdata mop500_i2c3_devices_u8500[] = {
-       {
-               I2C_BOARD_INFO("synaptics_rmi4_i2c", 0x4B),
-               .irq = NOMADIK_GPIO_TO_IRQ(84),
-       },
-};
-
-/*
- * TC35893
- */
-static const unsigned int u8500_keymap[] = {
-       KEY(3, 1, KEY_END),
-       KEY(4, 1, KEY_POWER),
-       KEY(6, 4, KEY_VOLUMEDOWN),
-       KEY(4, 2, KEY_EMAIL),
-       KEY(3, 3, KEY_RIGHT),
-       KEY(2, 5, KEY_BACKSPACE),
-
-       KEY(6, 7, KEY_MENU),
-       KEY(5, 0, KEY_ENTER),
-       KEY(4, 3, KEY_0),
-       KEY(3, 4, KEY_DOT),
-       KEY(5, 2, KEY_UP),
-       KEY(3, 5, KEY_DOWN),
-
-       KEY(4, 5, KEY_SEND),
-       KEY(0, 5, KEY_BACK),
-       KEY(6, 2, KEY_VOLUMEUP),
-       KEY(1, 3, KEY_SPACE),
-       KEY(7, 6, KEY_LEFT),
-       KEY(5, 5, KEY_SEARCH),
-};
-
-static struct matrix_keymap_data u8500_keymap_data = {
-       .keymap         = u8500_keymap,
-       .keymap_size    = ARRAY_SIZE(u8500_keymap),
-};
-
-static struct tc3589x_keypad_platform_data tc35893_data = {
-       .krow = TC_KPD_ROWS,
-       .kcol = TC_KPD_COLUMNS,
-       .debounce_period = TC_KPD_DEBOUNCE_PERIOD,
-       .settle_time = TC_KPD_SETTLE_TIME,
-       .irqtype = IRQF_TRIGGER_FALLING,
-       .enable_wakeup = true,
-       .keymap_data    = &u8500_keymap_data,
-       .no_autorepeat  = true,
-};
-
-static struct tc3589x_platform_data tc3589x_keypad_data = {
-       .block = TC3589x_BLOCK_KEYPAD,
-       .keypad = &tc35893_data,
-       .irq_base = MOP500_EGPIO_IRQ_BASE,
-};
-
-static struct i2c_board_info __initdata mop500_i2c0_devices_u8500[] = {
-       {
-               I2C_BOARD_INFO("tc3589x", 0x44),
-               .platform_data = &tc3589x_keypad_data,
-               .irq = NOMADIK_GPIO_TO_IRQ(218),
-               .flags = I2C_CLIENT_WAKE,
-       },
-};
-
-
-void __init mop500_u8500uib_init(void)
-{
-       mop500_uib_i2c_add(3, mop500_i2c3_devices_u8500,
-                       ARRAY_SIZE(mop500_i2c3_devices_u8500));
-
-       mop500_uib_i2c_add(0, mop500_i2c0_devices_u8500,
-                       ARRAY_SIZE(mop500_i2c0_devices_u8500));
-
-}
diff --git a/arch/arm/mach-ux500/board-mop500-uib.c b/arch/arm/mach-ux500/board-mop500-uib.c
deleted file mode 100644 (file)
index bdaa422..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL), version 2
- */
-
-#define pr_fmt(fmt)    "mop500-uib: " fmt
-
-#include <linux/kernel.h>
-#include <linux/init.h>
-#include <linux/i2c.h>
-
-#include "board-mop500.h"
-#include "id.h"
-
-enum mop500_uib {
-       STUIB,
-       U8500UIB,
-};
-
-struct uib {
-       const char *name;
-       const char *option;
-       void (*init)(void);
-};
-
-static struct uib __initdata mop500_uibs[] = {
-       [STUIB] = {
-               .name   = "ST-UIB",
-               .option = "stuib",
-               .init   = mop500_stuib_init,
-       },
-       [U8500UIB] = {
-               .name   = "U8500-UIB",
-               .option = "u8500uib",
-               .init   = mop500_u8500uib_init,
-       },
-};
-
-static struct uib *mop500_uib;
-
-static int __init mop500_uib_setup(char *str)
-{
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(mop500_uibs); i++) {
-               struct uib *uib = &mop500_uibs[i];
-
-               if (!strcmp(str, uib->option)) {
-                       mop500_uib = uib;
-                       break;
-               }
-       }
-
-       if (i == ARRAY_SIZE(mop500_uibs))
-               pr_err("invalid uib= option (%s)\n", str);
-
-       return 1;
-}
-__setup("uib=", mop500_uib_setup);
-
-/*
- * The UIBs are detected after the I2C host controllers are registered, so
- * i2c_register_board_info() can't be used.
- */
-void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
-               unsigned n)
-{
-       struct i2c_adapter *adap;
-       struct i2c_client *client;
-       int i;
-
-       adap = i2c_get_adapter(busnum);
-       if (!adap) {
-               pr_err("failed to get adapter i2c%d\n", busnum);
-               return;
-       }
-
-       for (i = 0; i < n; i++) {
-               client = i2c_new_device(adap, &info[i]);
-               if (!client)
-                       pr_err("failed to register %s to i2c%d\n",
-                                       info[i].type, busnum);
-       }
-
-       i2c_put_adapter(adap);
-}
-
-static void __init __mop500_uib_init(struct uib *uib, const char *why)
-{
-       pr_info("%s (%s)\n", uib->name, why);
-       uib->init();
-}
-
-/*
- * Detect the UIB attached based on the presence or absence of i2c devices.
- */
-int __init mop500_uib_init(void)
-{
-       struct uib *uib = mop500_uib;
-       struct i2c_adapter *i2c0;
-       int ret;
-
-       if (!cpu_is_u8500_family())
-               return -ENODEV;
-
-       if (uib) {
-               __mop500_uib_init(uib, "from uib= boot argument");
-               return 0;
-       }
-
-       i2c0 = i2c_get_adapter(0);
-       if (!i2c0) {
-               __mop500_uib_init(&mop500_uibs[STUIB],
-                               "fallback, could not get i2c0");
-               return -ENODEV;
-       }
-
-       /* U8500-UIB has the TC35893 at 0x44 on I2C0, the ST-UIB doesn't. */
-       ret = i2c_smbus_xfer(i2c0, 0x44, 0, I2C_SMBUS_WRITE, 0,
-                       I2C_SMBUS_QUICK, NULL);
-       i2c_put_adapter(i2c0);
-
-       if (ret == 0)
-               uib = &mop500_uibs[U8500UIB];
-       else
-               uib = &mop500_uibs[STUIB];
-
-       __mop500_uib_init(uib, "detected");
-
-       return 0;
-}
index ad0806eff7624da302513909ab41a3af400ed820..514d40b625a4604c16c179b9562aa54b84f4d27e 100644 (file)
 #include <linux/platform_device.h>
 #include <linux/clk.h>
 #include <linux/io.h>
-#include <linux/i2c.h>
-#include <linux/platform_data/i2c-nomadik.h>
 #include <linux/platform_data/db8500_thermal.h>
-#include <linux/gpio.h>
 #include <linux/amba/bus.h>
 #include <linux/amba/pl022.h>
-#include <linux/amba/serial.h>
-#include <linux/spi/spi.h>
 #include <linux/mfd/abx500/ab8500.h>
 #include <linux/regulator/ab8500.h>
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/driver.h>
-#include <linux/regulator/gpio-regulator.h>
-#include <linux/mfd/tc3589x.h>
 #include <linux/mfd/tps6105x.h>
-#include <linux/mfd/abx500/ab8500-gpio.h>
-#include <linux/mfd/abx500/ab8500-codec.h>
 #include <linux/platform_data/leds-lp55xx.h>
 #include <linux/input.h>
-#include <linux/smsc911x.h>
-#include <linux/gpio_keys.h>
 #include <linux/delay.h>
 #include <linux/leds.h>
 #include <linux/pinctrl/consumer.h>
@@ -46,7 +35,6 @@
 #include "setup.h"
 #include "devices.h"
 #include "irqs.h"
-#include <linux/platform_data/crypto-ux500.h>
 
 #include "ste-dma40-db8500.h"
 #include "db8500-regs.h"
 #include "board-mop500.h"
 #include "board-mop500-regulators.h"
 
-static struct gpio_led snowball_led_array[] = {
-       {
-               .name = "user_led",
-               .default_trigger = "heartbeat",
-               .gpio = 142,
-       },
-};
-
-static struct gpio_led_platform_data snowball_led_data = {
-       .leds = snowball_led_array,
-       .num_leds = ARRAY_SIZE(snowball_led_array),
-};
-
-static struct platform_device snowball_led_dev = {
-       .name = "leds-gpio",
-       .dev = {
-               .platform_data = &snowball_led_data,
-       },
-};
-
-static struct fixed_voltage_config snowball_gpio_en_3v3_data = {
-       .supply_name            = "EN-3V3",
-       .gpio                   = SNOWBALL_EN_3V3_ETH_GPIO,
-       .microvolts             = 3300000,
-       .enable_high            = 1,
-       .init_data              = &gpio_en_3v3_regulator,
-       .startup_delay          = 5000, /* 1200us */
-};
-
-static struct platform_device snowball_gpio_en_3v3_regulator_dev = {
-       .name   = "reg-fixed-voltage",
-       .id     = 1,
-       .dev    = {
-               .platform_data  = &snowball_gpio_en_3v3_data,
-       },
-};
-
-/* Dynamically populated. */
-static struct gpio sdi0_reg_gpios[] = {
-       { 0, GPIOF_OUT_INIT_LOW, "mmci_vsel" },
-};
-
-static struct gpio_regulator_state sdi0_reg_states[] = {
-       { .value = 2900000, .gpios = (0 << 0) },
-       { .value = 1800000, .gpios = (1 << 0) },
-};
-
-static struct gpio_regulator_config sdi0_reg_info = {
-       .supply_name            = "ext-mmc-level-shifter",
-       .gpios                  = sdi0_reg_gpios,
-       .nr_gpios               = ARRAY_SIZE(sdi0_reg_gpios),
-       .states                 = sdi0_reg_states,
-       .nr_states              = ARRAY_SIZE(sdi0_reg_states),
-       .type                   = REGULATOR_VOLTAGE,
-       .enable_high            = 1,
-       .enabled_at_boot        = 0,
-       .init_data              = &sdi0_reg_init_data,
-       .startup_delay          = 100,
-};
-
-static struct platform_device sdi0_regulator = {
-       .name = "gpio-regulator",
-       .id   = -1,
-       .dev  = {
-               .platform_data = &sdi0_reg_info,
-       },
-};
-
-static struct abx500_gpio_platform_data ab8500_gpio_pdata = {
-       .gpio_base              = MOP500_AB8500_PIN_GPIO(1),
-};
-
-/* ab8500-codec */
-static struct ab8500_codec_platform_data ab8500_codec_pdata = {
-       .amics =  {
-               .mic1_type = AMIC_TYPE_DIFFERENTIAL,
-               .mic2_type = AMIC_TYPE_DIFFERENTIAL,
-               .mic1a_micbias = AMIC_MICBIAS_VAMIC1,
-               .mic1b_micbias = AMIC_MICBIAS_VAMIC1,
-               .mic2_micbias = AMIC_MICBIAS_VAMIC2
-       },
-       .ear_cmv = EAR_CMV_0_95V
-};
-
-static struct gpio_keys_button snowball_key_array[] = {
-       {
-               .gpio           = 32,
-               .type           = EV_KEY,
-               .code           = KEY_1,
-               .desc           = "userpb",
-               .active_low     = 1,
-               .debounce_interval = 50,
-               .wakeup         = 1,
-       },
-       {
-               .gpio           = 151,
-               .type           = EV_KEY,
-               .code           = KEY_2,
-               .desc           = "extkb1",
-               .active_low     = 1,
-               .debounce_interval = 50,
-               .wakeup         = 1,
-       },
-       {
-               .gpio           = 152,
-               .type           = EV_KEY,
-               .code           = KEY_3,
-               .desc           = "extkb2",
-               .active_low     = 1,
-               .debounce_interval = 50,
-               .wakeup         = 1,
-       },
-       {
-               .gpio           = 161,
-               .type           = EV_KEY,
-               .code           = KEY_4,
-               .desc           = "extkb3",
-               .active_low     = 1,
-               .debounce_interval = 50,
-               .wakeup         = 1,
-       },
-       {
-               .gpio           = 162,
-               .type           = EV_KEY,
-               .code           = KEY_5,
-               .desc           = "extkb4",
-               .active_low     = 1,
-               .debounce_interval = 50,
-               .wakeup         = 1,
-       },
-};
-
-static struct gpio_keys_platform_data snowball_key_data = {
-       .buttons        = snowball_key_array,
-       .nbuttons       = ARRAY_SIZE(snowball_key_array),
-};
-
-static struct platform_device snowball_key_dev = {
-       .name           = "gpio-keys",
-       .id             = -1,
-       .dev            = {
-               .platform_data  = &snowball_key_data,
-       }
-};
-
-static struct smsc911x_platform_config snowball_sbnet_cfg = {
-       .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH,
-       .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL,
-       .flags = SMSC911X_USE_16BIT | SMSC911X_FORCE_INTERNAL_PHY,
-       .shift = 1,
-};
-
-static struct resource sbnet_res[] = {
-       {
-               .name = "smsc911x-memory",
-               .start = (0x5000 << 16),
-               .end  =  (0x5000 << 16) + 0xffff,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .start = NOMADIK_GPIO_TO_IRQ(140),
-               .end = NOMADIK_GPIO_TO_IRQ(140),
-               .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
-       },
-};
-
-static struct platform_device snowball_sbnet_dev = {
-       .name           = "smsc911x",
-       .num_resources  = ARRAY_SIZE(sbnet_res),
-       .resource       = sbnet_res,
-       .dev            = {
-               .platform_data = &snowball_sbnet_cfg,
-       },
-};
-
 struct ab8500_platform_data ab8500_platdata = {
        .irq_base       = MOP500_AB8500_IRQ_BASE,
        .regulator      = &ab8500_regulator_plat_data,
-       .gpio           = &ab8500_gpio_pdata,
-       .codec          = &ab8500_codec_pdata,
-};
-
-static struct platform_device u8500_cpufreq_cooling_device = {
-       .name           = "db8500-cpufreq-cooling",
-};
-
-/*
- * TPS61052
- */
-
-static struct tps6105x_platform_data mop500_tps61052_data = {
-       .mode = TPS6105X_MODE_VOLTAGE,
-       .regulator_data = &tps61052_regulator,
-};
-
-/*
- * TC35892
- */
-
-static void mop500_tc35892_init(struct tc3589x *tc3589x, unsigned int base)
-{
-       struct device *parent = NULL;
-#if 0
-       /* FIXME: Is the sdi actually part of tc3589x? */
-       parent = tc3589x->dev;
-#endif
-       mop500_sdi_tc35892_init(parent);
-}
-
-static struct tc3589x_gpio_platform_data mop500_tc35892_gpio_data = {
-       .gpio_base      = MOP500_EGPIO(0),
-       .setup          = mop500_tc35892_init,
-};
-
-static struct tc3589x_platform_data mop500_tc35892_data = {
-       .block          = TC3589x_BLOCK_GPIO,
-       .gpio           = &mop500_tc35892_gpio_data,
-       .irq_base       = MOP500_EGPIO_IRQ_BASE,
-};
-
-static struct lp55xx_led_config lp5521_pri_led[] = {
-       [0] = {
-              .chan_nr = 0,
-              .led_current = 0x2f,
-              .max_current = 0x5f,
-       },
-       [1] = {
-              .chan_nr = 1,
-              .led_current = 0x2f,
-              .max_current = 0x5f,
-       },
-       [2] = {
-              .chan_nr = 2,
-              .led_current = 0x2f,
-              .max_current = 0x5f,
-       },
-};
-
-static struct lp55xx_platform_data __initdata lp5521_pri_data = {
-       .label = "lp5521_pri",
-       .led_config     = &lp5521_pri_led[0],
-       .num_channels   = 3,
-       .clock_mode     = LP55XX_CLOCK_EXT,
-};
-
-static struct lp55xx_led_config lp5521_sec_led[] = {
-       [0] = {
-              .chan_nr = 0,
-              .led_current = 0x2f,
-              .max_current = 0x5f,
-       },
-       [1] = {
-              .chan_nr = 1,
-              .led_current = 0x2f,
-              .max_current = 0x5f,
-       },
-       [2] = {
-              .chan_nr = 2,
-              .led_current = 0x2f,
-              .max_current = 0x5f,
-       },
-};
-
-static struct lp55xx_platform_data __initdata lp5521_sec_data = {
-       .label = "lp5521_sec",
-       .led_config     = &lp5521_sec_led[0],
-       .num_channels   = 3,
-       .clock_mode     = LP55XX_CLOCK_EXT,
-};
-
-/* I2C0 devices only available on the first HREF/MOP500 */
-static struct i2c_board_info __initdata mop500_i2c0_devices[] = {
-       {
-               I2C_BOARD_INFO("tc3589x", 0x42),
-               .irq            = NOMADIK_GPIO_TO_IRQ(217),
-               .platform_data  = &mop500_tc35892_data,
-       },
-       {
-               I2C_BOARD_INFO("tps61052", 0x33),
-               .platform_data  = &mop500_tps61052_data,
-       },
-};
-
-static struct i2c_board_info __initdata mop500_i2c2_devices[] = {
-       {
-               /* lp5521 LED driver, 1st device */
-               I2C_BOARD_INFO("lp5521", 0x33),
-               .platform_data = &lp5521_pri_data,
-       },
-       {
-               /* lp5521 LED driver, 2st device */
-               I2C_BOARD_INFO("lp5521", 0x34),
-               .platform_data = &lp5521_sec_data,
-       },
-       {
-               /* Light sensor Rohm BH1780GLI */
-               I2C_BOARD_INFO("bh1780", 0x29),
-       },
-};
-
-static int __init mop500_i2c_board_init(void)
-{
-       if (machine_is_u8500())
-               mop500_uib_i2c_add(0, mop500_i2c0_devices,
-                                  ARRAY_SIZE(mop500_i2c0_devices));
-       mop500_uib_i2c_add(2, mop500_i2c2_devices,
-                          ARRAY_SIZE(mop500_i2c2_devices));
-       return 0;
-}
-device_initcall(mop500_i2c_board_init);
-
-static void __init mop500_i2c_init(struct device *parent)
-{
-       db8500_add_i2c0(parent, NULL);
-       db8500_add_i2c1(parent, NULL);
-       db8500_add_i2c2(parent, NULL);
-       db8500_add_i2c3(parent, NULL);
-}
-
-static struct gpio_keys_button mop500_gpio_keys[] = {
-       {
-               .desc                   = "SFH7741 Proximity Sensor",
-               .type                   = EV_SW,
-               .code                   = SW_FRONT_PROXIMITY,
-               .active_low             = 0,
-               .can_disable            = 1,
-       }
-};
-
-static struct regulator *prox_regulator;
-static int mop500_prox_activate(struct device *dev);
-static void mop500_prox_deactivate(struct device *dev);
-
-static struct gpio_keys_platform_data mop500_gpio_keys_data = {
-       .buttons        = mop500_gpio_keys,
-       .nbuttons       = ARRAY_SIZE(mop500_gpio_keys),
-       .enable         = mop500_prox_activate,
-       .disable        = mop500_prox_deactivate,
-};
-
-static struct platform_device mop500_gpio_keys_device = {
-       .name   = "gpio-keys",
-       .id     = 0,
-       .dev    = {
-               .platform_data  = &mop500_gpio_keys_data,
-       },
-};
-
-static int mop500_prox_activate(struct device *dev)
-{
-       prox_regulator = regulator_get(&mop500_gpio_keys_device.dev,
-                                               "vcc");
-       if (IS_ERR(prox_regulator)) {
-               dev_err(&mop500_gpio_keys_device.dev,
-                       "no regulator\n");
-               return PTR_ERR(prox_regulator);
-       }
-
-       return regulator_enable(prox_regulator);
-}
-
-static void mop500_prox_deactivate(struct device *dev)
-{
-       regulator_disable(prox_regulator);
-       regulator_put(prox_regulator);
-}
-
-static struct cryp_platform_data u8500_cryp1_platform_data = {
-               .mem_to_engine = {
-                               .dir = DMA_MEM_TO_DEV,
-                               .dev_type = DB8500_DMA_DEV48_CAC1,
-                               .mode = STEDMA40_MODE_LOGICAL,
-               },
-               .engine_to_mem = {
-                               .dir = DMA_DEV_TO_MEM,
-                               .dev_type = DB8500_DMA_DEV48_CAC1,
-                               .mode = STEDMA40_MODE_LOGICAL,
-               }
-};
-
-static struct stedma40_chan_cfg u8500_hash_dma_cfg_tx = {
-               .dir = DMA_MEM_TO_DEV,
-               .dev_type = DB8500_DMA_DEV50_HAC1_TX,
-               .mode = STEDMA40_MODE_LOGICAL,
-};
-
-static struct hash_platform_data u8500_hash1_platform_data = {
-               .mem_to_engine = &u8500_hash_dma_cfg_tx,
-               .dma_filter = stedma40_filter,
-};
-
-/* add any platform devices here - TODO */
-static struct platform_device *mop500_platform_devs[] __initdata = {
-       &mop500_gpio_keys_device,
-       &sdi0_regulator,
 };
 
 #ifdef CONFIG_STE_DMA40
@@ -480,236 +76,3 @@ struct pl022_ssp_controller ssp0_plat = {
         */
        .num_chipselect = 5,
 };
-
-static void __init mop500_spi_init(struct device *parent)
-{
-       db8500_add_ssp0(parent, &ssp0_plat);
-}
-
-#ifdef CONFIG_STE_DMA40
-static struct stedma40_chan_cfg uart0_dma_cfg_rx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = DMA_DEV_TO_MEM,
-       .dev_type = DB8500_DMA_DEV13_UART0,
-};
-
-static struct stedma40_chan_cfg uart0_dma_cfg_tx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = DMA_MEM_TO_DEV,
-       .dev_type = DB8500_DMA_DEV13_UART0,
-};
-
-static struct stedma40_chan_cfg uart1_dma_cfg_rx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = DMA_DEV_TO_MEM,
-       .dev_type = DB8500_DMA_DEV12_UART1,
-};
-
-static struct stedma40_chan_cfg uart1_dma_cfg_tx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = DMA_MEM_TO_DEV,
-       .dev_type = DB8500_DMA_DEV12_UART1,
-};
-
-static struct stedma40_chan_cfg uart2_dma_cfg_rx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = DMA_DEV_TO_MEM,
-       .dev_type = DB8500_DMA_DEV11_UART2,
-};
-
-static struct stedma40_chan_cfg uart2_dma_cfg_tx = {
-       .mode = STEDMA40_MODE_LOGICAL,
-       .dir = DMA_MEM_TO_DEV,
-       .dev_type = DB8500_DMA_DEV11_UART2,
-};
-#endif
-
-struct amba_pl011_data uart0_plat = {
-#ifdef CONFIG_STE_DMA40
-       .dma_filter = stedma40_filter,
-       .dma_rx_param = &uart0_dma_cfg_rx,
-       .dma_tx_param = &uart0_dma_cfg_tx,
-#endif
-};
-
-struct amba_pl011_data uart1_plat = {
-#ifdef CONFIG_STE_DMA40
-       .dma_filter = stedma40_filter,
-       .dma_rx_param = &uart1_dma_cfg_rx,
-       .dma_tx_param = &uart1_dma_cfg_tx,
-#endif
-};
-
-struct amba_pl011_data uart2_plat = {
-#ifdef CONFIG_STE_DMA40
-       .dma_filter = stedma40_filter,
-       .dma_rx_param = &uart2_dma_cfg_rx,
-       .dma_tx_param = &uart2_dma_cfg_tx,
-#endif
-};
-
-static void __init mop500_uart_init(struct device *parent)
-{
-       db8500_add_uart0(parent, &uart0_plat);
-       db8500_add_uart1(parent, &uart1_plat);
-       db8500_add_uart2(parent, &uart2_plat);
-}
-
-static void __init u8500_cryp1_hash1_init(struct device *parent)
-{
-       db8500_add_cryp1(parent, &u8500_cryp1_platform_data);
-       db8500_add_hash1(parent, &u8500_hash1_platform_data);
-}
-
-static struct platform_device *snowball_platform_devs[] __initdata = {
-       &snowball_led_dev,
-       &snowball_key_dev,
-       &snowball_sbnet_dev,
-       &snowball_gpio_en_3v3_regulator_dev,
-       &u8500_cpufreq_cooling_device,
-       &sdi0_regulator,
-};
-
-static void __init mop500_init_machine(void)
-{
-       struct device *parent = NULL;
-       int i;
-
-       platform_device_register(&db8500_prcmu_device);
-       mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
-
-       sdi0_reg_info.enable_gpio = GPIO_SDMMC_EN;
-       sdi0_reg_info.gpios[0].gpio = GPIO_SDMMC_1V8_3V_SEL;
-
-       mop500_pinmaps_init();
-       parent = u8500_init_devices();
-
-       for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
-               mop500_platform_devs[i]->dev.parent = parent;
-
-       platform_add_devices(mop500_platform_devs,
-                       ARRAY_SIZE(mop500_platform_devs));
-
-       mop500_i2c_init(parent);
-       mop500_sdi_init(parent);
-       mop500_spi_init(parent);
-       mop500_audio_init(parent);
-       mop500_uart_init(parent);
-       u8500_cryp1_hash1_init(parent);
-
-       /* This board has full regulator constraints */
-       regulator_has_full_constraints();
-}
-
-
-static void __init snowball_init_machine(void)
-{
-       struct device *parent = NULL;
-       int i;
-
-       platform_device_register(&db8500_prcmu_device);
-
-       sdi0_reg_info.enable_gpio = SNOWBALL_SDMMC_EN_GPIO;
-       sdi0_reg_info.gpios[0].gpio = SNOWBALL_SDMMC_1V8_3V_GPIO;
-
-       snowball_pinmaps_init();
-       parent = u8500_init_devices();
-
-       for (i = 0; i < ARRAY_SIZE(snowball_platform_devs); i++)
-               snowball_platform_devs[i]->dev.parent = parent;
-
-       platform_add_devices(snowball_platform_devs,
-                       ARRAY_SIZE(snowball_platform_devs));
-
-       mop500_i2c_init(parent);
-       snowball_sdi_init(parent);
-       mop500_spi_init(parent);
-       mop500_audio_init(parent);
-       mop500_uart_init(parent);
-
-       u8500_cryp1_hash1_init(parent);
-
-       /* This board has full regulator constraints */
-       regulator_has_full_constraints();
-}
-
-static void __init hrefv60_init_machine(void)
-{
-       struct device *parent = NULL;
-       int i;
-
-       platform_device_register(&db8500_prcmu_device);
-       /*
-        * The HREFv60 board removed a GPIO expander and routed
-        * all these GPIO pins to the internal GPIO controller
-        * instead.
-        */
-       mop500_gpio_keys[0].gpio = HREFV60_PROX_SENSE_GPIO;
-
-       sdi0_reg_info.enable_gpio = HREFV60_SDMMC_EN_GPIO;
-       sdi0_reg_info.gpios[0].gpio = HREFV60_SDMMC_1V8_3V_GPIO;
-
-       hrefv60_pinmaps_init();
-       parent = u8500_init_devices();
-
-       for (i = 0; i < ARRAY_SIZE(mop500_platform_devs); i++)
-               mop500_platform_devs[i]->dev.parent = parent;
-
-       platform_add_devices(mop500_platform_devs,
-                       ARRAY_SIZE(mop500_platform_devs));
-
-       mop500_i2c_init(parent);
-       hrefv60_sdi_init(parent);
-       mop500_spi_init(parent);
-       mop500_audio_init(parent);
-       mop500_uart_init(parent);
-
-       /* This board has full regulator constraints */
-       regulator_has_full_constraints();
-}
-
-MACHINE_START(U8500, "ST-Ericsson MOP500 platform")
-       /* Maintainer: Srinidhi Kasagar <srinidhi.kasagar@stericsson.com> */
-       .atag_offset    = 0x100,
-       .smp            = smp_ops(ux500_smp_ops),
-       .map_io         = u8500_map_io,
-       .init_irq       = ux500_init_irq,
-       /* we re-use nomadik timer here */
-       .init_time      = ux500_timer_init,
-       .init_machine   = mop500_init_machine,
-       .init_late      = ux500_init_late,
-       .restart        = ux500_restart,
-MACHINE_END
-
-MACHINE_START(U8520, "ST-Ericsson U8520 Platform HREFP520")
-       .atag_offset    = 0x100,
-       .map_io         = u8500_map_io,
-       .init_irq       = ux500_init_irq,
-       .init_time      = ux500_timer_init,
-       .init_machine   = mop500_init_machine,
-       .init_late      = ux500_init_late,
-       .restart        = ux500_restart,
-MACHINE_END
-
-MACHINE_START(HREFV60, "ST-Ericsson U8500 Platform HREFv60+")
-       .atag_offset    = 0x100,
-       .smp            = smp_ops(ux500_smp_ops),
-       .map_io         = u8500_map_io,
-       .init_irq       = ux500_init_irq,
-       .init_time      = ux500_timer_init,
-       .init_machine   = hrefv60_init_machine,
-       .init_late      = ux500_init_late,
-       .restart        = ux500_restart,
-MACHINE_END
-
-MACHINE_START(SNOWBALL, "Calao Systems Snowball platform")
-       .atag_offset    = 0x100,
-       .smp            = smp_ops(ux500_smp_ops),
-       .map_io         = u8500_map_io,
-       .init_irq       = ux500_init_irq,
-       /* we re-use nomadik timer here */
-       .init_time      = ux500_timer_init,
-       .init_machine   = snowball_init_machine,
-       .init_late      = NULL,
-       .restart        = ux500_restart,
-MACHINE_END
index d6fab166cbf113b36e52306c8fc62632a984be89..511d6febbe9996ac7f4831ba6d878435765c2869 100644 (file)
@@ -79,7 +79,6 @@
 #define SNOWBALL_EN_3V3_ETH_GPIO       MOP500_AB8500_PIN_GPIO(26)      /* GPIO26 */
 
 struct device;
-struct i2c_board_info;
 extern struct mmci_platform_data mop500_sdi0_data;
 extern struct mmci_platform_data mop500_sdi1_data;
 extern struct mmci_platform_data mop500_sdi2_data;
@@ -88,25 +87,10 @@ extern struct msp_i2s_platform_data msp0_platform_data;
 extern struct msp_i2s_platform_data msp1_platform_data;
 extern struct msp_i2s_platform_data msp2_platform_data;
 extern struct msp_i2s_platform_data msp3_platform_data;
-extern struct arm_pmu_platdata db8500_pmu_platdata;
-extern struct amba_pl011_data uart0_plat;
-extern struct amba_pl011_data uart1_plat;
-extern struct amba_pl011_data uart2_plat;
 extern struct pl022_ssp_controller ssp0_plat;
-extern struct stedma40_platform_data dma40_plat_data;
 
-extern void mop500_sdi_init(struct device *parent);
-extern void snowball_sdi_init(struct device *parent);
-extern void hrefv60_sdi_init(struct device *parent);
-extern void mop500_sdi_tc35892_init(struct device *parent);
-void __init mop500_u8500uib_init(void);
-void __init mop500_stuib_init(void);
 void __init mop500_pinmaps_init(void);
 void __init snowball_pinmaps_init(void);
 void __init hrefv60_pinmaps_init(void);
-void mop500_audio_init(struct device *parent);
 
-int __init mop500_uib_init(void);
-void mop500_uib_i2c_add(int busnum, struct i2c_board_info *info,
-               unsigned n);
 #endif
index 301c3460d96af48f8bed5f3f89378cad8893c486..2e85c1e72535138a1b90c543ec3e95e2b36a6fa6 100644 (file)
@@ -32,7 +32,6 @@
 #include "irqs.h"
 
 #include "devices-db8500.h"
-#include "ste-dma40-db8500.h"
 #include "db8500-regs.h"
 #include "board-mop500.h"
 #include "id.h"
@@ -93,14 +92,6 @@ void __init u8500_map_io(void)
                iotable_init(u8500_io_desc, ARRAY_SIZE(u8500_io_desc));
 }
 
-static struct resource db8500_pmu_resources[] = {
-       [0] = {
-               .start          = IRQ_DB8500_PMU,
-               .end            = IRQ_DB8500_PMU,
-               .flags          = IORESOURCE_IRQ,
-       },
-};
-
 /*
  * The PMU IRQ lines of two cores are wired together into a single interrupt.
  * Bounce the interrupt to the other core if it's not ours.
@@ -125,54 +116,6 @@ struct arm_pmu_platdata db8500_pmu_platdata = {
        .handle_irq             = db8500_pmu_handler,
 };
 
-static struct platform_device db8500_pmu_device = {
-       .name                   = "arm-pmu",
-       .id                     = -1,
-       .num_resources          = ARRAY_SIZE(db8500_pmu_resources),
-       .resource               = db8500_pmu_resources,
-       .dev.platform_data      = &db8500_pmu_platdata,
-};
-
-static struct platform_device *platform_devs[] __initdata = {
-       &u8500_dma40_device,
-       &db8500_pmu_device,
-};
-
-static resource_size_t __initdata db8500_gpio_base[] = {
-       U8500_GPIOBANK0_BASE,
-       U8500_GPIOBANK1_BASE,
-       U8500_GPIOBANK2_BASE,
-       U8500_GPIOBANK3_BASE,
-       U8500_GPIOBANK4_BASE,
-       U8500_GPIOBANK5_BASE,
-       U8500_GPIOBANK6_BASE,
-       U8500_GPIOBANK7_BASE,
-       U8500_GPIOBANK8_BASE,
-};
-
-static void __init db8500_add_gpios(struct device *parent)
-{
-       struct nmk_gpio_platform_data pdata = {
-               .supports_sleepmode = true,
-       };
-
-       dbx500_add_gpios(parent, db8500_gpio_base,
-                        ARRAY_SIZE(db8500_gpio_base),
-                        IRQ_DB8500_GPIO0, &pdata);
-       dbx500_add_pinctrl(parent, "pinctrl-db8500", U8500_PRCMU_BASE);
-}
-
-static int usb_db8500_dma_cfg[] = {
-       DB8500_DMA_DEV38_USB_OTG_IEP_AND_OEP_1_9,
-       DB8500_DMA_DEV37_USB_OTG_IEP_AND_OEP_2_10,
-       DB8500_DMA_DEV36_USB_OTG_IEP_AND_OEP_3_11,
-       DB8500_DMA_DEV19_USB_OTG_IEP_AND_OEP_4_12,
-       DB8500_DMA_DEV18_USB_OTG_IEP_AND_OEP_5_13,
-       DB8500_DMA_DEV17_USB_OTG_IEP_AND_OEP_6_14,
-       DB8500_DMA_DEV16_USB_OTG_IEP_AND_OEP_7_15,
-       DB8500_DMA_DEV39_USB_OTG_IEP_AND_OEP_8
-};
-
 static const char *db8500_read_soc_id(void)
 {
        void __iomem *uid = __io_address(U8500_BB_UID_BASE);
@@ -192,60 +135,22 @@ static struct device * __init db8500_soc_device_init(void)
        return ux500_soc_device_init(soc_id);
 }
 
-/*
- * This function is called from the board init
- */
-struct device * __init u8500_init_devices(void)
-{
-       struct device *parent;
-       int i;
-
-       parent = db8500_soc_device_init();
-
-       db8500_add_rtc(parent);
-       db8500_add_gpios(parent);
-       db8500_add_usb(parent, usb_db8500_dma_cfg, usb_db8500_dma_cfg);
-
-       for (i = 0; i < ARRAY_SIZE(platform_devs); i++)
-               platform_devs[i]->dev.parent = parent;
-
-       platform_add_devices(platform_devs, ARRAY_SIZE(platform_devs));
-
-       return parent;
-}
-
 #ifdef CONFIG_MACH_UX500_DT
 static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
        /* Requires call-back bindings. */
        OF_DEV_AUXDATA("arm,cortex-a9-pmu", 0, "arm-pmu", &db8500_pmu_platdata),
        /* Requires DMA bindings. */
-       OF_DEV_AUXDATA("arm,pl011", 0x80120000, "uart0", NULL),
-       OF_DEV_AUXDATA("arm,pl011", 0x80121000, "uart1", NULL),
-       OF_DEV_AUXDATA("arm,pl011", 0x80007000, "uart2", NULL),
-       OF_DEV_AUXDATA("arm,pl022", 0x80002000, "ssp0",  &ssp0_plat),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80126000, "sdi0",  NULL),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80118000, "sdi1",  NULL),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80005000, "sdi2",  NULL),
-       OF_DEV_AUXDATA("arm,pl18x", 0x80114000, "sdi4",  NULL),
-       /* Requires clock name bindings. */
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e000, "gpio.0", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8012e080, "gpio.1", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e000, "gpio.2", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e080, "gpio.3", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e100, "gpio.4", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8000e180, "gpio.5", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e000, "gpio.6", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0x8011e080, "gpio.7", NULL),
-       OF_DEV_AUXDATA("st,nomadik-gpio", 0xa03fe000, "gpio.8", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80004000, "nmk-i2c.0", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80122000, "nmk-i2c.1", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80128000, "nmk-i2c.2", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x80110000, "nmk-i2c.3", NULL),
-       OF_DEV_AUXDATA("st,nomadik-i2c", 0x8012a000, "nmk-i2c.4", NULL),
-       OF_DEV_AUXDATA("stericsson,db8500-musb", 0xa03e0000, "musb-ux500.0", NULL),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
+                      "ux500-msp-i2s.0", &msp0_platform_data),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
+                      "ux500-msp-i2s.1", &msp1_platform_data),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
+                      "ux500-msp-i2s.2", &msp2_platform_data),
+       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
+                      "ux500-msp-i2s.3", &msp3_platform_data),
+       /* Requires non-DT:able platform data. */
        OF_DEV_AUXDATA("stericsson,db8500-prcmu", 0x80157000, "db8500-prcmu",
                        &db8500_prcmu_pdata),
-       OF_DEV_AUXDATA("smsc,lan9115", 0x50000000, "smsc911x.0", NULL),
        OF_DEV_AUXDATA("stericsson,ux500-cryp", 0xa03cb000, "cryp1", NULL),
        OF_DEV_AUXDATA("stericsson,ux500-hash", 0xa03c2000, "hash1", NULL),
        OF_DEV_AUXDATA("stericsson,snd-soc-mop500", 0, "snd-soc-mop500.0",
@@ -253,17 +158,6 @@ static struct of_dev_auxdata u8500_auxdata_lookup[] __initdata = {
        /* Requires device name bindings. */
        OF_DEV_AUXDATA("stericsson,db8500-pinctrl", U8500_PRCMU_BASE,
                "pinctrl-db8500", NULL),
-       /* Requires clock name and DMA bindings. */
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80123000,
-               "ux500-msp-i2s.0", &msp0_platform_data),
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80124000,
-               "ux500-msp-i2s.1", &msp1_platform_data),
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80117000,
-               "ux500-msp-i2s.2", &msp2_platform_data),
-       OF_DEV_AUXDATA("stericsson,ux500-msp-i2s", 0x80125000,
-               "ux500-msp-i2s.3", &msp3_platform_data),
-       /* Requires clock name bindings and channel address lookup table. */
-       OF_DEV_AUXDATA("stericsson,db8500-dma40", 0x801C0000, "dma40.0", NULL),
        {},
 };
 
index 5d7eebcabc63a12e6a699ecbe047099d95482496..f84d4397896b39705e0227dac27555542c1d9cc0 100644 (file)
@@ -78,9 +78,17 @@ void __init ux500_init_irq(void)
        if (cpu_is_u8500_family()) {
                prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
                ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
-               u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
-                              U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
-                              U8500_CLKRST6_BASE);
+
+               if (of_have_populated_dt())
+                       u8500_of_clk_init(U8500_CLKRST1_BASE,
+                                         U8500_CLKRST2_BASE,
+                                         U8500_CLKRST3_BASE,
+                                         U8500_CLKRST5_BASE,
+                                         U8500_CLKRST6_BASE);
+               else
+                       u8500_clk_init(U8500_CLKRST1_BASE, U8500_CLKRST2_BASE,
+                                      U8500_CLKRST3_BASE, U8500_CLKRST5_BASE,
+                                      U8500_CLKRST6_BASE);
        } else if (cpu_is_u9540()) {
                prcmu_early_init(U8500_PRCMU_BASE, SZ_8K - 1);
                ux500_pm_init(U8500_PRCMU_BASE, SZ_8K - 1);
@@ -96,11 +104,6 @@ void __init ux500_init_irq(void)
        }
 }
 
-void __init ux500_init_late(void)
-{
-       mop500_uib_init();
-}
-
 static const char * __init ux500_get_machine(void)
 {
        return kasprintf(GFP_KERNEL, "DB%4x", dbx500_partnumber());
diff --git a/arch/arm/mach-ux500/devices-common.c b/arch/arm/mach-ux500/devices-common.c
deleted file mode 100644 (file)
index f71b3d7..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-#include <linux/kernel.h>
-#include <linux/dma-mapping.h>
-#include <linux/err.h>
-#include <linux/irq.h>
-#include <linux/slab.h>
-#include <linux/platform_device.h>
-#include <linux/platform_data/pinctrl-nomadik.h>
-
-#include "irqs.h"
-
-#include "devices-common.h"
-
-static struct platform_device *
-dbx500_add_gpio(struct device *parent, int id, resource_size_t addr, int irq,
-               struct nmk_gpio_platform_data *pdata)
-{
-       struct resource resources[] = {
-               {
-                       .start  = addr,
-                       .end    = addr + 127,
-                       .flags  = IORESOURCE_MEM,
-               },
-               {
-                       .start  = irq,
-                       .end    = irq,
-                       .flags  = IORESOURCE_IRQ,
-               }
-       };
-
-       return platform_device_register_resndata(
-               parent,
-               "gpio",
-               id,
-               resources,
-               ARRAY_SIZE(resources),
-               pdata,
-               sizeof(*pdata));
-}
-
-void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
-                     int irq, struct nmk_gpio_platform_data *pdata)
-{
-       int first = 0;
-       int i;
-
-       for (i = 0; i < num; i++, first += 32, irq++) {
-               pdata->first_gpio = first;
-               pdata->first_irq = NOMADIK_GPIO_TO_IRQ(first);
-               pdata->num_gpio = 32;
-
-               dbx500_add_gpio(parent, i, base[i], irq, pdata);
-       }
-}
diff --git a/arch/arm/mach-ux500/devices-common.h b/arch/arm/mach-ux500/devices-common.h
deleted file mode 100644 (file)
index 96fa4ac..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- *
- * Author: Rabin Vincent <rabin.vincent@stericsson.com> for ST-Ericsson
- * License terms: GNU General Public License (GPL), version 2.
- */
-
-#ifndef __DEVICES_COMMON_H
-#define __DEVICES_COMMON_H
-
-#include <linux/platform_device.h>
-#include <linux/dma-mapping.h>
-#include <linux/sys_soc.h>
-#include <linux/amba/bus.h>
-#include <linux/platform_data/i2c-nomadik.h>
-#include <linux/platform_data/crypto-ux500.h>
-
-struct spi_master_cntlr;
-
-static inline struct amba_device *
-dbx500_add_msp_spi(struct device *parent, const char *name,
-                  resource_size_t base, int irq,
-                  struct spi_master_cntlr *pdata)
-{
-       return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
-                                  pdata, 0);
-}
-
-static inline struct amba_device *
-dbx500_add_spi(struct device *parent, const char *name, resource_size_t base,
-              int irq, struct spi_master_cntlr *pdata,
-              u32 periphid)
-{
-       return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
-                                  pdata, periphid);
-}
-
-struct mmci_platform_data;
-
-static inline struct amba_device *
-dbx500_add_sdi(struct device *parent, const char *name, resource_size_t base,
-              int irq, struct mmci_platform_data *pdata, u32 periphid)
-{
-       return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0,
-                                  pdata, periphid);
-}
-
-struct amba_pl011_data;
-
-static inline struct amba_device *
-dbx500_add_uart(struct device *parent, const char *name, resource_size_t base,
-               int irq, struct amba_pl011_data *pdata)
-{
-       return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0);
-}
-
-struct nmk_i2c_controller;
-
-static inline struct amba_device *
-dbx500_add_i2c(struct device *parent, int id, resource_size_t base, int irq,
-              struct nmk_i2c_controller *data)
-{
-       /* Conjure a name similar to what the platform device used to have */
-       char name[16];
-
-       snprintf(name, sizeof(name), "nmk-i2c.%d", id);
-       return amba_apb_device_add(parent, name, base, SZ_4K, irq, 0, data, 0);
-}
-
-static inline struct amba_device *
-dbx500_add_rtc(struct device *parent, resource_size_t base, int irq)
-{
-       return amba_apb_device_add(parent, "rtc-pl031", base, SZ_4K, irq,
-                               0, NULL, 0);
-}
-
-struct cryp_platform_data;
-
-static inline struct platform_device *
-dbx500_add_cryp1(struct device *parent, int id, resource_size_t base, int irq,
-               struct cryp_platform_data *pdata)
-{
-       struct resource res[] = {
-                       DEFINE_RES_MEM(base, SZ_4K),
-                       DEFINE_RES_IRQ(irq),
-       };
-
-       struct platform_device_info pdevinfo = {
-                       .parent = parent,
-                       .name = "cryp1",
-                       .id = id,
-                       .res = res,
-                       .num_res = ARRAY_SIZE(res),
-                       .data = pdata,
-                       .size_data = sizeof(*pdata),
-                       .dma_mask = DMA_BIT_MASK(32),
-       };
-
-       return platform_device_register_full(&pdevinfo);
-}
-
-struct hash_platform_data;
-
-static inline struct platform_device *
-dbx500_add_hash1(struct device *parent, int id, resource_size_t base,
-               struct hash_platform_data *pdata)
-{
-       struct resource res[] = {
-                       DEFINE_RES_MEM(base, SZ_4K),
-       };
-
-       struct platform_device_info pdevinfo = {
-                       .parent = parent,
-                       .name = "hash1",
-                       .id = id,
-                       .res = res,
-                       .num_res = ARRAY_SIZE(res),
-                       .data = pdata,
-                       .size_data = sizeof(*pdata),
-                       .dma_mask = DMA_BIT_MASK(32),
-       };
-
-       return platform_device_register_full(&pdevinfo);
-}
-
-struct nmk_gpio_platform_data;
-
-void dbx500_add_gpios(struct device *parent, resource_size_t *base, int num,
-                     int irq, struct nmk_gpio_platform_data *pdata);
-
-static inline void
-dbx500_add_pinctrl(struct device *parent, const char *name,
-                  resource_size_t base)
-{
-       struct resource res[] = {
-               DEFINE_RES_MEM(base, SZ_8K),
-       };
-       struct platform_device_info pdevinfo = {
-               .parent = parent,
-               .name = name,
-               .id = -1,
-               .res = res,
-               .num_res = ARRAY_SIZE(res),
-       };
-
-       platform_device_register_full(&pdevinfo);
-}
-
-#endif
index bc316062e0c23661c118429036207e50911ffebb..c59f89d058ff4499c6d7dd33b6464d086a8fdd0b 100644 (file)
@@ -9,10 +9,8 @@
 #include <linux/platform_device.h>
 #include <linux/interrupt.h>
 #include <linux/io.h>
-#include <linux/gpio.h>
 #include <linux/amba/bus.h>
 #include <linux/amba/pl022.h>
-#include <linux/platform_data/dma-ste-dma40.h>
 #include <linux/mfd/dbx500-prcmu.h>
 
 #include "setup.h"
 
 #include "db8500-regs.h"
 #include "devices-db8500.h"
-#include "ste-dma40-db8500.h"
-
-static struct resource dma40_resources[] = {
-       [0] = {
-               .start = U8500_DMA_BASE,
-               .end   = U8500_DMA_BASE + SZ_4K - 1,
-               .flags = IORESOURCE_MEM,
-               .name  = "base",
-       },
-       [1] = {
-               .start = U8500_DMA_LCPA_BASE,
-               .end   = U8500_DMA_LCPA_BASE + 2 * SZ_1K - 1,
-               .flags = IORESOURCE_MEM,
-               .name  = "lcpa",
-       },
-       [2] = {
-               .start = IRQ_DB8500_DMA,
-               .end   = IRQ_DB8500_DMA,
-               .flags = IORESOURCE_IRQ,
-       }
-};
-
-struct stedma40_platform_data dma40_plat_data = {
-       .disabled_channels = {-1},
-};
-
-struct platform_device u8500_dma40_device = {
-       .dev = {
-               .platform_data = &dma40_plat_data,
-               .coherent_dma_mask = DMA_BIT_MASK(32),
-       },
-       .name = "dma40",
-       .id = 0,
-       .num_resources = ARRAY_SIZE(dma40_resources),
-       .resource = dma40_resources
-};
-
-struct resource keypad_resources[] = {
-       [0] = {
-               .start = U8500_SKE_BASE,
-               .end = U8500_SKE_BASE + SZ_4K - 1,
-               .flags = IORESOURCE_MEM,
-       },
-       [1] = {
-               .start = IRQ_DB8500_KB,
-               .end = IRQ_DB8500_KB,
-               .flags = IORESOURCE_IRQ,
-       },
-};
-
-struct platform_device u8500_ske_keypad_device = {
-       .name = "nmk-ske-keypad",
-       .id = -1,
-       .num_resources = ARRAY_SIZE(keypad_resources),
-       .resource = keypad_resources,
-};
 
 struct prcmu_pdata db8500_prcmu_pdata = {
        .ab_platdata    = &ab8500_platdata,
@@ -84,39 +26,3 @@ struct prcmu_pdata db8500_prcmu_pdata = {
        .version_offset = DB8500_PRCMU_FW_VERSION_OFFSET,
        .legacy_offset  = DB8500_PRCMU_LEGACY_OFFSET,
 };
-
-static struct resource db8500_prcmu_res[] = {
-       {
-               .name  = "prcmu",
-               .start = U8500_PRCMU_BASE,
-               .end   = U8500_PRCMU_BASE + SZ_8K - 1,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name  = "prcmu-tcdm",
-               .start = U8500_PRCMU_TCDM_BASE,
-               .end   = U8500_PRCMU_TCDM_BASE + SZ_4K - 1,
-               .flags = IORESOURCE_MEM,
-       },
-       {
-               .name  = "irq",
-               .start = IRQ_DB8500_PRCMU1,
-               .end   = IRQ_DB8500_PRCMU1,
-               .flags = IORESOURCE_IRQ,
-       },
-       {
-               .name  = "prcmu-tcpm",
-               .start = U8500_PRCMU_TCPM_BASE,
-               .end   = U8500_PRCMU_TCPM_BASE + SZ_32K - 1,
-               .flags = IORESOURCE_MEM,
-       },
-};
-
-struct platform_device db8500_prcmu_device = {
-       .name                   = "db8500-prcmu",
-       .resource               = db8500_prcmu_res,
-       .num_resources          = ARRAY_SIZE(db8500_prcmu_res),
-       .dev = {
-               .platform_data = &db8500_prcmu_pdata,
-       },
-};
index 321998320f98536abf4ef603b498d430ab0e1ac0..b8ffc9979bb2db763738a2cf8f39cf441edd3887 100644 (file)
 #ifndef __DEVICES_DB8500_H
 #define __DEVICES_DB8500_H
 
-#include <linux/platform_data/usb-musb-ux500.h>
 #include "irqs.h"
 #include "db8500-regs.h"
-#include "devices-common.h"
 
-struct ske_keypad_platform_data;
-struct pl022_ssp_controller;
 struct platform_device;
 
 extern struct ab8500_platform_data ab8500_platdata;
 extern struct prcmu_pdata db8500_prcmu_pdata;
-extern struct platform_device db8500_prcmu_device;
 
-static inline struct platform_device *
-db8500_add_ske_keypad(struct device *parent,
-                     struct ske_keypad_platform_data *pdata,
-                     size_t size)
-{
-       struct resource resources[] = {
-               DEFINE_RES_MEM(U8500_SKE_BASE, SZ_4K),
-               DEFINE_RES_IRQ(IRQ_DB8500_KB),
-       };
-
-       return platform_device_register_resndata(parent, "nmk-ske-keypad", -1,
-                                                resources, 2, pdata, size);
-}
-
-static inline struct amba_device *
-db8500_add_ssp(struct device *parent, const char *name, resource_size_t base,
-              int irq, struct pl022_ssp_controller *pdata)
-{
-       return amba_ahb_device_add(parent, name, base, SZ_4K, irq, 0, pdata, 0);
-}
-
-#define db8500_add_i2c0(parent, pdata) \
-       dbx500_add_i2c(parent, 0, U8500_I2C0_BASE, IRQ_DB8500_I2C0, pdata)
-#define db8500_add_i2c1(parent, pdata) \
-       dbx500_add_i2c(parent, 1, U8500_I2C1_BASE, IRQ_DB8500_I2C1, pdata)
-#define db8500_add_i2c2(parent, pdata) \
-       dbx500_add_i2c(parent, 2, U8500_I2C2_BASE, IRQ_DB8500_I2C2, pdata)
-#define db8500_add_i2c3(parent, pdata) \
-       dbx500_add_i2c(parent, 3, U8500_I2C3_BASE, IRQ_DB8500_I2C3, pdata)
-#define db8500_add_i2c4(parent, pdata) \
-       dbx500_add_i2c(parent, 4, U8500_I2C4_BASE, IRQ_DB8500_I2C4, pdata)
-
-#define db8500_add_msp0_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp0", U8500_MSP0_BASE, \
-                          IRQ_DB8500_MSP0, pdata)
-#define db8500_add_msp1_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp1", U8500_MSP1_BASE, \
-                          IRQ_DB8500_MSP1, pdata)
-#define db8500_add_msp2_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp2", U8500_MSP2_BASE, \
-                          IRQ_DB8500_MSP2, pdata)
-#define db8500_add_msp3_spi(parent, pdata) \
-       dbx500_add_msp_spi(parent, "msp3", U8500_MSP3_BASE, \
-                          IRQ_DB8500_MSP1, pdata)
-
-#define db8500_add_rtc(parent) \
-       dbx500_add_rtc(parent, U8500_RTC_BASE, IRQ_DB8500_RTC);
-
-#define db8500_add_usb(parent, rx_cfg, tx_cfg) \
-       ux500_add_usb(parent, U8500_USBOTG_BASE, \
-                     IRQ_DB8500_USBOTG, rx_cfg, tx_cfg)
-
-#define db8500_add_sdi0(parent, pdata, pid) \
-       dbx500_add_sdi(parent, "sdi0", U8500_SDI0_BASE, \
-                      IRQ_DB8500_SDMMC0, pdata, pid)
-#define db8500_add_sdi1(parent, pdata, pid) \
-       dbx500_add_sdi(parent, "sdi1", U8500_SDI1_BASE, \
-                      IRQ_DB8500_SDMMC1, pdata, pid)
-#define db8500_add_sdi2(parent, pdata, pid) \
-       dbx500_add_sdi(parent, "sdi2", U8500_SDI2_BASE, \
-                      IRQ_DB8500_SDMMC2, pdata, pid)
-#define db8500_add_sdi3(parent, pdata, pid) \
-       dbx500_add_sdi(parent, "sdi3", U8500_SDI3_BASE, \
-                      IRQ_DB8500_SDMMC3, pdata, pid)
-#define db8500_add_sdi4(parent, pdata, pid) \
-       dbx500_add_sdi(parent, "sdi4", U8500_SDI4_BASE, \
-                      IRQ_DB8500_SDMMC4, pdata, pid)
-#define db8500_add_sdi5(parent, pdata, pid) \
-       dbx500_add_sdi(parent, "sdi5", U8500_SDI5_BASE, \
-                      IRQ_DB8500_SDMMC5, pdata, pid)
-
-#define db8500_add_ssp0(parent, pdata) \
-       db8500_add_ssp(parent, "ssp0", U8500_SSP0_BASE, \
-                      IRQ_DB8500_SSP0, pdata)
-#define db8500_add_ssp1(parent, pdata) \
-       db8500_add_ssp(parent, "ssp1", U8500_SSP1_BASE, \
-                      IRQ_DB8500_SSP1, pdata)
-
-#define db8500_add_spi0(parent, pdata) \
-       dbx500_add_spi(parent, "spi0", U8500_SPI0_BASE, \
-                      IRQ_DB8500_SPI0, pdata, 0)
-#define db8500_add_spi1(parent, pdata) \
-       dbx500_add_spi(parent, "spi1", U8500_SPI1_BASE, \
-                      IRQ_DB8500_SPI1, pdata, 0)
-#define db8500_add_spi2(parent, pdata) \
-       dbx500_add_spi(parent, "spi2", U8500_SPI2_BASE, \
-                      IRQ_DB8500_SPI2, pdata, 0)
-#define db8500_add_spi3(parent, pdata) \
-       dbx500_add_spi(parent, "spi3", U8500_SPI3_BASE, \
-                      IRQ_DB8500_SPI3, pdata, 0)
-
-#define db8500_add_uart0(parent, pdata) \
-       dbx500_add_uart(parent, "uart0", U8500_UART0_BASE, \
-                       IRQ_DB8500_UART0, pdata)
-#define db8500_add_uart1(parent, pdata) \
-       dbx500_add_uart(parent, "uart1", U8500_UART1_BASE, \
-                       IRQ_DB8500_UART1, pdata)
-#define db8500_add_uart2(parent, pdata) \
-       dbx500_add_uart(parent, "uart2", U8500_UART2_BASE, \
-                       IRQ_DB8500_UART2, pdata)
-
-#define db8500_add_cryp1(parent, pdata) \
-       dbx500_add_cryp1(parent, -1, U8500_CRYP1_BASE, IRQ_DB8500_CRYP1, pdata)
-#define db8500_add_hash1(parent, pdata) \
-       dbx500_add_hash1(parent, -1, U8500_HASH1_BASE, pdata)
 #endif
index cbc6f1e4104ddc2c9b8c0bd7c3b96f662167f24f..5bca7c605cd6c1a0cc5bffb54df3f006ff338a52 100644 (file)
 struct platform_device;
 struct amba_device;
 
-extern struct platform_device u8500_gpio_devs[];
-
 extern struct amba_device ux500_pl031_device;
 
-extern struct platform_device ux500_hash1_device;
-extern struct platform_device ux500_cryp1_device;
-
-extern struct platform_device u8500_dma40_device;
-extern struct platform_device ux500_ske_keypad_device;
-
 #endif
index 656324aad18e229d67a3abaf36af2c04d6c85c3c..bdb356498a748563091d7563525db015500dbfc1 100644 (file)
@@ -24,7 +24,6 @@ extern void __init u8500_map_io(void);
 extern struct device * __init u8500_init_devices(void);
 
 extern void __init ux500_init_irq(void);
-extern void __init ux500_init_late(void);
 
 extern struct device *ux500_soc_device_init(const char *soc_id);
 
index b6bd0efcbe64465bed83d2814e01f57483a03c92..05a4ff78b3bd9e73deaf4c0e814f79cdae8e971e 100644 (file)
@@ -97,8 +97,8 @@ dt_fail:
         * sched_clock with higher rating then MTU since is always-on.
         *
         */
-
-       nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
+       if (!of_have_populated_dt())
+               nmdk_timer_init(mtu_timer_base, IRQ_MTU0);
        clksrc_dbx500_prcmu_init(prcmu_timer_base);
        ux500_twd_init();
 }
diff --git a/arch/arm/mach-ux500/usb.c b/arch/arm/mach-ux500/usb.c
deleted file mode 100644 (file)
index b7bd8d3..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2011
- *
- * Author: Mian Yousaf Kaukab <mian.yousaf.kaukab@stericsson.com>
- * License terms: GNU General Public License (GPL) version 2
- */
-#include <linux/platform_device.h>
-#include <linux/usb/musb.h>
-#include <linux/dma-mapping.h>
-#include <linux/platform_data/usb-musb-ux500.h>
-#include <linux/platform_data/dma-ste-dma40.h>
-
-#include "db8500-regs.h"
-
-#define MUSB_DMA40_RX_CH { \
-               .mode = STEDMA40_MODE_LOGICAL, \
-               .dir = DMA_DEV_TO_MEM, \
-       }
-
-#define MUSB_DMA40_TX_CH { \
-               .mode = STEDMA40_MODE_LOGICAL, \
-               .dir = DMA_MEM_TO_DEV, \
-       }
-
-static struct stedma40_chan_cfg musb_dma_rx_ch[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS]
-       = {
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH,
-       MUSB_DMA40_RX_CH
-};
-
-static struct stedma40_chan_cfg musb_dma_tx_ch[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS]
-       = {
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-       MUSB_DMA40_TX_CH,
-};
-
-static void *ux500_dma_rx_param_array[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS] = {
-       &musb_dma_rx_ch[0],
-       &musb_dma_rx_ch[1],
-       &musb_dma_rx_ch[2],
-       &musb_dma_rx_ch[3],
-       &musb_dma_rx_ch[4],
-       &musb_dma_rx_ch[5],
-       &musb_dma_rx_ch[6],
-       &musb_dma_rx_ch[7]
-};
-
-static void *ux500_dma_tx_param_array[UX500_MUSB_DMA_NUM_RX_TX_CHANNELS] = {
-       &musb_dma_tx_ch[0],
-       &musb_dma_tx_ch[1],
-       &musb_dma_tx_ch[2],
-       &musb_dma_tx_ch[3],
-       &musb_dma_tx_ch[4],
-       &musb_dma_tx_ch[5],
-       &musb_dma_tx_ch[6],
-       &musb_dma_tx_ch[7]
-};
-
-static struct ux500_musb_board_data musb_board_data = {
-       .dma_rx_param_array = ux500_dma_rx_param_array,
-       .dma_tx_param_array = ux500_dma_tx_param_array,
-       .dma_filter = stedma40_filter,
-};
-
-static struct musb_hdrc_platform_data musb_platform_data = {
-       .mode = MUSB_OTG,
-       .board_data = &musb_board_data,
-};
-
-static struct resource usb_resources[] = {
-       [0] = {
-               .name   = "usb-mem",
-               .flags  =  IORESOURCE_MEM,
-       },
-
-       [1] = {
-               .name   = "mc", /* hard-coded in musb */
-               .flags  = IORESOURCE_IRQ,
-       },
-};
-
-struct platform_device ux500_musb_device = {
-       .name = "musb-ux500",
-       .id = 0,
-       .dev = {
-               .platform_data = &musb_platform_data,
-               .coherent_dma_mask = DMA_BIT_MASK(32),
-       },
-       .num_resources = ARRAY_SIZE(usb_resources),
-       .resource = usb_resources,
-};
-
-static inline void ux500_usb_dma_update_rx_ch_config(int *dev_type)
-{
-       u32 idx;
-
-       for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_TX_CHANNELS; idx++)
-               musb_dma_rx_ch[idx].dev_type = dev_type[idx];
-}
-
-static inline void ux500_usb_dma_update_tx_ch_config(int *dev_type)
-{
-       u32 idx;
-
-       for (idx = 0; idx < UX500_MUSB_DMA_NUM_RX_TX_CHANNELS; idx++)
-               musb_dma_tx_ch[idx].dev_type = dev_type[idx];
-}
-
-void ux500_add_usb(struct device *parent, resource_size_t base, int irq,
-                  int *dma_rx_cfg, int *dma_tx_cfg)
-{
-       ux500_musb_device.resource[0].start = base;
-       ux500_musb_device.resource[0].end = base + SZ_64K - 1;
-       ux500_musb_device.resource[1].start = irq;
-       ux500_musb_device.resource[1].end = irq;
-
-       ux500_usb_dma_update_rx_ch_config(dma_rx_cfg);
-       ux500_usb_dma_update_tx_ch_config(dma_tx_cfg);
-
-       ux500_musb_device.dev.parent = parent;
-
-       platform_device_register(&ux500_musb_device);
-}
index 4fb1f03a10d1f718b9f99d1e5309c9732ebc0a1f..335beb3413556637510b10ced41cc7f0a62f0b48 100644 (file)
@@ -87,8 +87,12 @@ IS_SAMSUNG_CPU(exynos5440, EXYNOS5440_SOC_ID, EXYNOS5_SOC_MASK)
 #endif
 
 #if defined(CONFIG_CPU_S3C6400) || defined(CONFIG_CPU_S3C6410)
+# define soc_is_s3c6400()      is_samsung_s3c6400()
+# define soc_is_s3c6410()      is_samsung_s3c6410()
 # define soc_is_s3c64xx()      (is_samsung_s3c6400() || is_samsung_s3c6410())
 #else
+# define soc_is_s3c6400()      0
+# define soc_is_s3c6410()      0
 # define soc_is_s3c64xx()      0
 #endif
 
index 50a3ea0037db10d2032e2ce020688b6fa74614b0..aa9511b6914a40c92e1cb99c2b544740a8407c24 100644 (file)
  * published by the Free Software Foundation.
 */
 
+/*
+ * NOTE: Code in this file is not used on S3C64xx when booting with
+ * Device Tree support.
+ */
+
 #include <linux/init.h>
 #include <linux/module.h>
 #include <linux/interrupt.h>
 #include <linux/ioport.h>
 #include <linux/serial_core.h>
 #include <linux/platform_device.h>
+#include <linux/of.h>
 
 #include <mach/hardware.h>
 
@@ -148,8 +154,12 @@ static int __init s3c_arch_init(void)
 
        // do the correct init for cpu
 
-       if (cpu == NULL)
+       if (cpu == NULL) {
+               /* Not needed when booting with device tree. */
+               if (of_have_populated_dt())
+                       return 0;
                panic("s3c_arch_init: NULL cpu\n");
+       }
 
        ret = (cpu->init)();
        if (ret != 0)
index 4d6d77ed9b9d679cd955e2fafe2dbc16527db65c..e194f957ca8c42a0af82f0621c425308a25e4d53 100644 (file)
@@ -22,7 +22,7 @@
 
 static __always_inline bool arch_static_branch(struct static_key *key)
 {
-       asm goto("1:\tnop\n\t"
+       asm_volatile_goto("1:\tnop\n\t"
                "nop\n\t"
                ".pushsection __jump_table,  \"aw\"\n\t"
                WORD_INSN " 1b, %l[l_yes], %0\n\t"
index 4204d76af854209659de87b35e143ec85fb802da..029e002a4ea0083d626140961d3cd465b188fabc 100644 (file)
@@ -73,7 +73,7 @@
 3:
 
 #if defined(CONFIG_CC_STACKPROTECTOR) && !defined(CONFIG_SMP)
-       PTR_L   t8, __stack_chk_guard
+       PTR_LA  t8, __stack_chk_guard
        LONG_L  t9, TASK_STACK_CANARY(a1)
        LONG_S  t9, 0(t8)
 #endif
index 38af83f84c4af846ce2a6fb55994804b4d781bdc..20b7b040e76f1c4e8d9a019edae6014f3ee3fea5 100644 (file)
@@ -67,7 +67,7 @@ LEAF(resume)
 1:
 
 #if defined(CONFIG_CC_STACKPROTECTOR) && !defined(CONFIG_SMP)
-       PTR_L   t8, __stack_chk_guard
+       PTR_LA  t8, __stack_chk_guard
        LONG_L  t9, TASK_STACK_CANARY(a1)
        LONG_S  t9, 0(t8)
 #endif
index 921238a6bd260d238cd2a01e177556ed105c770b..078de5eaca8fd96d8bcb720491fe3f56901dc03c 100644 (file)
@@ -69,7 +69,7 @@
 1:
 
 #if defined(CONFIG_CC_STACKPROTECTOR) && !defined(CONFIG_SMP)
-       PTR_L   t8, __stack_chk_guard
+       PTR_LA  t8, __stack_chk_guard
        LONG_L  t9, TASK_STACK_CANARY(a1)
        LONG_S  t9, 0(t8)
 #endif
index 1945f995f2dfec1212ed8e1769168085076d9bb1..4736020ba5eabeb05841e5a9dc4834026f61a92d 100644 (file)
@@ -6,7 +6,7 @@ struct pt_regs;
 
 /* traps.c */
 void parisc_terminate(char *msg, struct pt_regs *regs,
-               int code, unsigned long offset);
+               int code, unsigned long offset) __noreturn __cold;
 
 /* mm/fault.c */
 void do_page_fault(struct pt_regs *regs, unsigned long code,
index c035673209f732f0850aaa4dc98d2d49eee3b74c..b521c0adf4ec95317c2c00cd2c197bc8e3610c03 100644 (file)
@@ -602,6 +602,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long vmaddr, unsigned long
                __flush_cache_page(vma, vmaddr, PFN_PHYS(pfn));
        }
 }
+EXPORT_SYMBOL_GPL(flush_cache_page);
 
 #ifdef CONFIG_PARISC_TMPALIAS
 
index 8a252f2d6c087aad6248e98178c79eef818c14da..2b96602e812ff9648f0ce9ec66b52e103ddb8a3e 100644 (file)
@@ -72,7 +72,6 @@ enum ipi_message_type {
        IPI_NOP=0,
        IPI_RESCHEDULE=1,
        IPI_CALL_FUNC,
-       IPI_CALL_FUNC_SINGLE,
        IPI_CPU_START,
        IPI_CPU_STOP,
        IPI_CPU_TEST
@@ -164,11 +163,6 @@ ipi_interrupt(int irq, void *dev_id)
                                generic_smp_call_function_interrupt();
                                break;
 
-                       case IPI_CALL_FUNC_SINGLE:
-                               smp_debug(100, KERN_DEBUG "CPU%d IPI_CALL_FUNC_SINGLE\n", this_cpu);
-                               generic_smp_call_function_single_interrupt();
-                               break;
-
                        case IPI_CPU_START:
                                smp_debug(100, KERN_DEBUG "CPU%d IPI_CPU_START\n", this_cpu);
                                break;
@@ -260,7 +254,7 @@ void arch_send_call_function_ipi_mask(const struct cpumask *mask)
 
 void arch_send_call_function_single_ipi(int cpu)
 {
-       send_IPI_single(cpu, IPI_CALL_FUNC_SINGLE);
+       send_IPI_single(cpu, IPI_CALL_FUNC);
 }
 
 /*
index 04e47c6a45626347aa261d3725005cdafb9385ad..1cd1d0c83b6d7bd7a21d0a22c57e18f2ac27f65a 100644 (file)
@@ -291,11 +291,6 @@ void die_if_kernel(char *str, struct pt_regs *regs, long err)
        do_exit(SIGSEGV);
 }
 
-int syscall_ipi(int (*syscall) (struct pt_regs *), struct pt_regs *regs)
-{
-       return syscall(regs);
-}
-
 /* gdb uses break 4,8 */
 #define GDB_BREAK_INSN 0x10004
 static void handle_gdb_break(struct pt_regs *regs, int wot)
@@ -805,14 +800,14 @@ void notrace handle_interruption(int code, struct pt_regs *regs)
        else {
 
            /*
-            * The kernel should never fault on its own address space.
+            * The kernel should never fault on its own address space,
+            * unless pagefault_disable() was called before.
             */
 
-           if (fault_space == 0
+           if (fault_space == 0 && !in_atomic())
            {
                pdc_chassis_send_status(PDC_CHASSIS_DIRECT_PANIC);
                parisc_terminate("Kernel Fault", regs, code, fault_address);
-       
            }
        }
 
index ac4370b1ca4019f5eaf85f910097bf1cc69c0611..b5507ec06b846f09ed4d38c5841b4eecaffb156e 100644 (file)
@@ -56,7 +56,7 @@
 #ifdef __KERNEL__
 #include <linux/module.h>
 #include <linux/compiler.h>
-#include <asm/uaccess.h>
+#include <linux/uaccess.h>
 #define s_space "%%sr1"
 #define d_space "%%sr2"
 #else
@@ -524,4 +524,17 @@ EXPORT_SYMBOL(copy_to_user);
 EXPORT_SYMBOL(copy_from_user);
 EXPORT_SYMBOL(copy_in_user);
 EXPORT_SYMBOL(memcpy);
+
+long probe_kernel_read(void *dst, const void *src, size_t size)
+{
+       unsigned long addr = (unsigned long)src;
+
+       if (size < 0 || addr < PAGE_SIZE)
+               return -EFAULT;
+
+       /* check for I/O space F_EXTEND(0xfff00000) access as well? */
+
+       return __probe_kernel_read(dst, src, size);
+}
+
 #endif
index 00c0ed333a3d53421a161369cf1fa621c8a02d7f..0293588d5b8cb8e2d594406c51bbb524b319888b 100644 (file)
@@ -171,20 +171,25 @@ void do_page_fault(struct pt_regs *regs, unsigned long code,
                              unsigned long address)
 {
        struct vm_area_struct *vma, *prev_vma;
-       struct task_struct *tsk = current;
-       struct mm_struct *mm = tsk->mm;
+       struct task_struct *tsk;
+       struct mm_struct *mm;
        unsigned long acc_type;
        int fault;
-       unsigned int flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
+       unsigned int flags;
 
-       if (in_atomic() || !mm)
+       if (in_atomic())
                goto no_context;
 
+       tsk = current;
+       mm = tsk->mm;
+       if (!mm)
+               goto no_context;
+
+       flags = FAULT_FLAG_ALLOW_RETRY | FAULT_FLAG_KILLABLE;
        if (user_mode(regs))
                flags |= FAULT_FLAG_USER;
 
        acc_type = parisc_acctyp(code, regs->iir);
-
        if (acc_type & VM_WRITE)
                flags |= FAULT_FLAG_WRITE;
 retry:
index ae098c438f009eb0e312fc8b78a6ce07f4311cc6..f016bb699b5f6200268d3b8e5bf4e2bd003dbbf7 100644 (file)
@@ -19,7 +19,7 @@
 
 static __always_inline bool arch_static_branch(struct static_key *key)
 {
-       asm goto("1:\n\t"
+       asm_volatile_goto("1:\n\t"
                 "nop\n\t"
                 ".pushsection __jump_table,  \"aw\"\n\t"
                 JUMP_ENTRY_TYPE "1b, %l[l_yes], %c0\n\t"
index 57d286a78f86f6ff1231c695b9a10a591af30710..c7cb8c232d2f4fdedf9129ec691d8471736e2fc7 100644 (file)
@@ -495,14 +495,15 @@ void __do_irq(struct pt_regs *regs)
 void do_IRQ(struct pt_regs *regs)
 {
        struct pt_regs *old_regs = set_irq_regs(regs);
-       struct thread_info *curtp, *irqtp;
+       struct thread_info *curtp, *irqtp, *sirqtp;
 
        /* Switch to the irq stack to handle this */
        curtp = current_thread_info();
        irqtp = hardirq_ctx[raw_smp_processor_id()];
+       sirqtp = softirq_ctx[raw_smp_processor_id()];
 
        /* Already there ? */
-       if (unlikely(curtp == irqtp)) {
+       if (unlikely(curtp == irqtp || curtp == sirqtp)) {
                __do_irq(regs);
                set_irq_regs(old_regs);
                return;
index 294b7af28cdd3c58b2551c53b9210daa429f836d..c71103b8a748350947ad3c2f6b7256c6c2841405 100644 (file)
@@ -1066,7 +1066,7 @@ END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
 BEGIN_FTR_SECTION
        mfspr   r8, SPRN_DSCR
        ld      r7, HSTATE_DSCR(r13)
-       std     r8, VCPU_DSCR(r7)
+       std     r8, VCPU_DSCR(r9)
        mtspr   SPRN_DSCR, r7
 END_FTR_SECTION_IFSET(CPU_FTR_ARCH_206)
 
index 1c6a9d729df4a26ca3ad6c9f1c94008d681f7d42..c65593abae8eb879f71915cbf639f0dfec4468dc 100644 (file)
@@ -332,6 +332,13 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,
        unsigned long hva;
        int pfnmap = 0;
        int tsize = BOOK3E_PAGESZ_4K;
+       int ret = 0;
+       unsigned long mmu_seq;
+       struct kvm *kvm = vcpu_e500->vcpu.kvm;
+
+       /* used to check for invalidations in progress */
+       mmu_seq = kvm->mmu_notifier_seq;
+       smp_rmb();
 
        /*
         * Translate guest physical to true physical, acquiring
@@ -449,6 +456,12 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,
                gvaddr &= ~((tsize_pages << PAGE_SHIFT) - 1);
        }
 
+       spin_lock(&kvm->mmu_lock);
+       if (mmu_notifier_retry(kvm, mmu_seq)) {
+               ret = -EAGAIN;
+               goto out;
+       }
+
        kvmppc_e500_ref_setup(ref, gtlbe, pfn);
 
        kvmppc_e500_setup_stlbe(&vcpu_e500->vcpu, gtlbe, tsize,
@@ -457,10 +470,13 @@ static inline int kvmppc_e500_shadow_map(struct kvmppc_vcpu_e500 *vcpu_e500,
        /* Clear i-cache for new pages */
        kvmppc_mmu_flush_icache(pfn);
 
+out:
+       spin_unlock(&kvm->mmu_lock);
+
        /* Drop refcount on page, so that mmu notifiers can clear it */
        kvm_release_pfn_clean(pfn);
 
-       return 0;
+       return ret;
 }
 
 /* XXX only map the one-one case, for now use TLB0 */
index 6c32190dc73e880255175049fe36965e647101eb..346b1c85ffb40d890078550dc72c2dedcb275a2e 100644 (file)
@@ -15,7 +15,7 @@
 
 static __always_inline bool arch_static_branch(struct static_key *key)
 {
-       asm goto("0:    brcl 0,0\n"
+       asm_volatile_goto("0:   brcl 0,0\n"
                ".pushsection __jump_table, \"aw\"\n"
                ASM_ALIGN "\n"
                ASM_PTR " 0b, %l[label], %0\n"
index c84f33d51f7b45d92d66b870f9b35c23d5054568..7dd21720e5b002d03ff406afb12faf546f09e9f3 100644 (file)
@@ -40,28 +40,26 @@ static inline void *load_real_addr(void *addr)
 }
 
 /*
- * Copy up to one page to vmalloc or real memory
+ * Copy real to virtual or real memory
  */
-static ssize_t copy_page_real(void *buf, void *src, size_t csize)
+static int copy_from_realmem(void *dest, void *src, size_t count)
 {
-       size_t size;
+       unsigned long size;
+       int rc;
 
-       if (is_vmalloc_addr(buf)) {
-               BUG_ON(csize >= PAGE_SIZE);
-               /* If buf is not page aligned, copy first part */
-               size = min(roundup(__pa(buf), PAGE_SIZE) - __pa(buf), csize);
-               if (size) {
-                       if (memcpy_real(load_real_addr(buf), src, size))
-                               return -EFAULT;
-                       buf += size;
-                       src += size;
-               }
-               /* Copy second part */
-               size = csize - size;
-               return (size) ? memcpy_real(load_real_addr(buf), src, size) : 0;
-       } else {
-               return memcpy_real(buf, src, csize);
-       }
+       if (!count)
+               return 0;
+       if (!is_vmalloc_or_module_addr(dest))
+               return memcpy_real(dest, src, count);
+       do {
+               size = min(count, PAGE_SIZE - (__pa(dest) & ~PAGE_MASK));
+               if (memcpy_real(load_real_addr(dest), src, size))
+                       return -EFAULT;
+               count -= size;
+               dest += size;
+               src += size;
+       } while (count);
+       return 0;
 }
 
 /*
@@ -114,7 +112,7 @@ static ssize_t copy_oldmem_page_kdump(char *buf, size_t csize,
                rc = copy_to_user_real((void __force __user *) buf,
                                       (void *) src, csize);
        else
-               rc = copy_page_real(buf, (void *) src, csize);
+               rc = copy_from_realmem(buf, (void *) src, csize);
        return (rc == 0) ? rc : csize;
 }
 
@@ -210,7 +208,7 @@ int copy_from_oldmem(void *dest, void *src, size_t count)
        if (OLDMEM_BASE) {
                if ((unsigned long) src < OLDMEM_SIZE) {
                        copied = min(count, OLDMEM_SIZE - (unsigned long) src);
-                       rc = memcpy_real(dest, src + OLDMEM_BASE, copied);
+                       rc = copy_from_realmem(dest, src + OLDMEM_BASE, copied);
                        if (rc)
                                return rc;
                }
@@ -223,7 +221,7 @@ int copy_from_oldmem(void *dest, void *src, size_t count)
                                return rc;
                }
        }
-       return memcpy_real(dest + copied, src + copied, count - copied);
+       return copy_from_realmem(dest + copied, src + copied, count - copied);
 }
 
 /*
index cc30d1fb000c25c8f74a8045b105762ccf32c9b2..0dc2b6d0a1ec8557f7450d5fbd255d2758bf8512 100644 (file)
@@ -266,6 +266,7 @@ sysc_sigpending:
        tm      __TI_flags+3(%r12),_TIF_SYSCALL
        jno     sysc_return
        lm      %r2,%r7,__PT_R2(%r11)   # load svc arguments
+       l       %r10,__TI_sysc_table(%r12)      # 31 bit system call table
        xr      %r8,%r8                 # svc 0 returns -ENOSYS
        clc     __PT_INT_CODE+2(2,%r11),BASED(.Lnr_syscalls+2)
        jnl     sysc_nr_ok              # invalid svc number -> do svc 0
index 2b2188b97c6aff464e467b7250823257924e31ab..e5b43c97a8340a807671ace329a4fa87a573709a 100644 (file)
@@ -297,6 +297,7 @@ sysc_sigpending:
        tm      __TI_flags+7(%r12),_TIF_SYSCALL
        jno     sysc_return
        lmg     %r2,%r7,__PT_R2(%r11)   # load svc arguments
+       lg      %r10,__TI_sysc_table(%r12)      # address of system call table
        lghi    %r8,0                   # svc 0 returns -ENOSYS
        llgh    %r1,__PT_INT_CODE+2(%r11)       # load new svc number
        cghi    %r1,NR_syscalls
index 0ce9fb245034d67bf8f44dd7c9234ef954679a51..d86e64eddb42efdedf44078cc8e29a51247eba87 100644 (file)
@@ -67,6 +67,11 @@ static int __kprobes is_prohibited_opcode(kprobe_opcode_t *insn)
        case 0xac:      /* stnsm */
        case 0xad:      /* stosm */
                return -EINVAL;
+       case 0xc6:
+               switch (insn[0] & 0x0f) {
+               case 0x00: /* exrl   */
+                       return -EINVAL;
+               }
        }
        switch (insn[0]) {
        case 0x0101:    /* pr    */
@@ -180,7 +185,6 @@ static int __kprobes is_insn_relative_long(kprobe_opcode_t *insn)
                break;
        case 0xc6:
                switch (insn[0] & 0x0f) {
-               case 0x00: /* exrl   */
                case 0x02: /* pfdrl  */
                case 0x04: /* cghrl  */
                case 0x05: /* chrl   */
index 5080d16a832ffec0c813b30cf546340e5047a7fd..ec2e2e2aba7d8f15419aa12bc6f790993f8c54d4 100644 (file)
@@ -9,7 +9,7 @@
 
 static __always_inline bool arch_static_branch(struct static_key *key)
 {
-               asm goto("1:\n\t"
+               asm_volatile_goto("1:\n\t"
                         "nop\n\t"
                         "nop\n\t"
                         ".pushsection __jump_table,  \"aw\"\n\t"
index d385eaadece7a68fe603eeb625b3caedb3c4c345..70979846076332bf7771d8517afdcc3415518b17 100644 (file)
@@ -166,7 +166,7 @@ static inline int atomic_cmpxchg(atomic_t *v, int o, int n)
  *
  * Atomically sets @v to @i and returns old @v
  */
-static inline u64 atomic64_xchg(atomic64_t *v, u64 n)
+static inline long long atomic64_xchg(atomic64_t *v, long long n)
 {
        return xchg64(&v->counter, n);
 }
@@ -180,7 +180,8 @@ static inline u64 atomic64_xchg(atomic64_t *v, u64 n)
  * Atomically checks if @v holds @o and replaces it with @n if so.
  * Returns the old value at @v.
  */
-static inline u64 atomic64_cmpxchg(atomic64_t *v, u64 o, u64 n)
+static inline long long atomic64_cmpxchg(atomic64_t *v, long long o,
+                                       long long n)
 {
        return cmpxchg64(&v->counter, o, n);
 }
index 0d0395b1b1529d454f772ebb61e240d7fb41f52a..1ad4a1f7d42b8aa47eadbbb4cdcf2e50dc630fd0 100644 (file)
@@ -80,7 +80,7 @@ static inline void atomic_set(atomic_t *v, int n)
 /* A 64bit atomic type */
 
 typedef struct {
-       u64 __aligned(8) counter;
+       long long counter;
 } atomic64_t;
 
 #define ATOMIC64_INIT(val) { (val) }
@@ -91,14 +91,14 @@ typedef struct {
  *
  * Atomically reads the value of @v.
  */
-static inline u64 atomic64_read(const atomic64_t *v)
+static inline long long atomic64_read(const atomic64_t *v)
 {
        /*
         * Requires an atomic op to read both 32-bit parts consistently.
         * Casting away const is safe since the atomic support routines
         * do not write to memory if the value has not been modified.
         */
-       return _atomic64_xchg_add((u64 *)&v->counter, 0);
+       return _atomic64_xchg_add((long long *)&v->counter, 0);
 }
 
 /**
@@ -108,7 +108,7 @@ static inline u64 atomic64_read(const atomic64_t *v)
  *
  * Atomically adds @i to @v.
  */
-static inline void atomic64_add(u64 i, atomic64_t *v)
+static inline void atomic64_add(long long i, atomic64_t *v)
 {
        _atomic64_xchg_add(&v->counter, i);
 }
@@ -120,7 +120,7 @@ static inline void atomic64_add(u64 i, atomic64_t *v)
  *
  * Atomically adds @i to @v and returns @i + @v
  */
-static inline u64 atomic64_add_return(u64 i, atomic64_t *v)
+static inline long long atomic64_add_return(long long i, atomic64_t *v)
 {
        smp_mb();  /* barrier for proper semantics */
        return _atomic64_xchg_add(&v->counter, i) + i;
@@ -135,7 +135,8 @@ static inline u64 atomic64_add_return(u64 i, atomic64_t *v)
  * Atomically adds @a to @v, so long as @v was not already @u.
  * Returns non-zero if @v was not @u, and zero otherwise.
  */
-static inline u64 atomic64_add_unless(atomic64_t *v, u64 a, u64 u)
+static inline long long atomic64_add_unless(atomic64_t *v, long long a,
+                                       long long u)
 {
        smp_mb();  /* barrier for proper semantics */
        return _atomic64_xchg_add_unless(&v->counter, a, u) != u;
@@ -151,7 +152,7 @@ static inline u64 atomic64_add_unless(atomic64_t *v, u64 a, u64 u)
  * atomic64_set() can't be just a raw store, since it would be lost if it
  * fell between the load and store of one of the other atomic ops.
  */
-static inline void atomic64_set(atomic64_t *v, u64 n)
+static inline void atomic64_set(atomic64_t *v, long long n)
 {
        _atomic64_xchg(&v->counter, n);
 }
@@ -236,11 +237,13 @@ extern struct __get_user __atomic_xchg_add_unless(volatile int *p,
 extern struct __get_user __atomic_or(volatile int *p, int *lock, int n);
 extern struct __get_user __atomic_andn(volatile int *p, int *lock, int n);
 extern struct __get_user __atomic_xor(volatile int *p, int *lock, int n);
-extern u64 __atomic64_cmpxchg(volatile u64 *p, int *lock, u64 o, u64 n);
-extern u64 __atomic64_xchg(volatile u64 *p, int *lock, u64 n);
-extern u64 __atomic64_xchg_add(volatile u64 *p, int *lock, u64 n);
-extern u64 __atomic64_xchg_add_unless(volatile u64 *p,
-                                     int *lock, u64 o, u64 n);
+extern long long __atomic64_cmpxchg(volatile long long *p, int *lock,
+                                       long long o, long long n);
+extern long long __atomic64_xchg(volatile long long *p, int *lock, long long n);
+extern long long __atomic64_xchg_add(volatile long long *p, int *lock,
+                                       long long n);
+extern long long __atomic64_xchg_add_unless(volatile long long *p,
+                                       int *lock, long long o, long long n);
 
 /* Return failure from the atomic wrappers. */
 struct __get_user __atomic_bad_address(int __user *addr);
index 4001d5eab4bb7f1fb59e6e62c924bd71b4b10e2f..0ccda3c425be0d3b19a27c13b68ad6b6eaa37525 100644 (file)
@@ -35,10 +35,10 @@ int _atomic_xchg(int *ptr, int n);
 int _atomic_xchg_add(int *v, int i);
 int _atomic_xchg_add_unless(int *v, int a, int u);
 int _atomic_cmpxchg(int *ptr, int o, int n);
-u64 _atomic64_xchg(u64 *v, u64 n);
-u64 _atomic64_xchg_add(u64 *v, u64 i);
-u64 _atomic64_xchg_add_unless(u64 *v, u64 a, u64 u);
-u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n);
+long long _atomic64_xchg(long long *v, long long n);
+long long _atomic64_xchg_add(long long *v, long long i);
+long long _atomic64_xchg_add_unless(long long *v, long long a, long long u);
+long long _atomic64_cmpxchg(long long *v, long long o, long long n);
 
 #define xchg(ptr, n)                                                   \
        ({                                                              \
@@ -53,7 +53,8 @@ u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n);
                if (sizeof(*(ptr)) != 4)                                \
                        __cmpxchg_called_with_bad_pointer();            \
                smp_mb();                                               \
-               (typeof(*(ptr)))_atomic_cmpxchg((int *)ptr, (int)o, (int)n); \
+               (typeof(*(ptr)))_atomic_cmpxchg((int *)ptr, (int)o,     \
+                                               (int)n);                \
        })
 
 #define xchg64(ptr, n)                                                 \
@@ -61,7 +62,8 @@ u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n);
                if (sizeof(*(ptr)) != 8)                                \
                        __xchg_called_with_bad_pointer();               \
                smp_mb();                                               \
-               (typeof(*(ptr)))_atomic64_xchg((u64 *)(ptr), (u64)(n)); \
+               (typeof(*(ptr)))_atomic64_xchg((long long *)(ptr),      \
+                                               (long long)(n));        \
        })
 
 #define cmpxchg64(ptr, o, n)                                           \
@@ -69,7 +71,8 @@ u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n);
                if (sizeof(*(ptr)) != 8)                                \
                        __cmpxchg_called_with_bad_pointer();            \
                smp_mb();                                               \
-               (typeof(*(ptr)))_atomic64_cmpxchg((u64 *)ptr, (u64)o, (u64)n); \
+               (typeof(*(ptr)))_atomic64_cmpxchg((long long *)ptr,     \
+                                       (long long)o, (long long)n);    \
        })
 
 #else
@@ -81,10 +84,11 @@ u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n);
                switch (sizeof(*(ptr))) {                               \
                case 4:                                                 \
                        __x = (typeof(__x))(unsigned long)              \
-                               __insn_exch4((ptr), (u32)(unsigned long)(n)); \
+                               __insn_exch4((ptr),                     \
+                                       (u32)(unsigned long)(n));       \
                        break;                                          \
                case 8:                                                 \
-                       __x = (typeof(__x))                     \
+                       __x = (typeof(__x))                             \
                                __insn_exch((ptr), (unsigned long)(n)); \
                        break;                                          \
                default:                                                \
@@ -103,10 +107,12 @@ u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n);
                switch (sizeof(*(ptr))) {                               \
                case 4:                                                 \
                        __x = (typeof(__x))(unsigned long)              \
-                               __insn_cmpexch4((ptr), (u32)(unsigned long)(n)); \
+                               __insn_cmpexch4((ptr),                  \
+                                       (u32)(unsigned long)(n));       \
                        break;                                          \
                case 8:                                                 \
-                       __x = (typeof(__x))__insn_cmpexch((ptr), (u64)(n)); \
+                       __x = (typeof(__x))__insn_cmpexch((ptr),        \
+                                               (long long)(n));        \
                        break;                                          \
                default:                                                \
                        __cmpxchg_called_with_bad_pointer();            \
index 63294f5a8efbca7820c891232c7f79303213e653..4f7ae39fa2022c537770bd10e1cbb0e231249b53 100644 (file)
 #ifndef _ASM_TILE_PERCPU_H
 #define _ASM_TILE_PERCPU_H
 
-register unsigned long __my_cpu_offset __asm__("tp");
-#define __my_cpu_offset __my_cpu_offset
-#define set_my_cpu_offset(tp) (__my_cpu_offset = (tp))
+register unsigned long my_cpu_offset_reg asm("tp");
+
+#ifdef CONFIG_PREEMPT
+/*
+ * For full preemption, we can't just use the register variable
+ * directly, since we need barrier() to hazard against it, causing the
+ * compiler to reload anything computed from a previous "tp" value.
+ * But we also don't want to use volatile asm, since we'd like the
+ * compiler to be able to cache the value across multiple percpu reads.
+ * So we use a fake stack read as a hazard against barrier().
+ * The 'U' constraint is like 'm' but disallows postincrement.
+ */
+static inline unsigned long __my_cpu_offset(void)
+{
+       unsigned long tp;
+       register unsigned long *sp asm("sp");
+       asm("move %0, tp" : "=r" (tp) : "U" (*sp));
+       return tp;
+}
+#define __my_cpu_offset __my_cpu_offset()
+#else
+/*
+ * We don't need to hazard against barrier() since "tp" doesn't ever
+ * change with PREEMPT_NONE, and with PREEMPT_VOLUNTARY it only
+ * changes at function call points, at which we are already re-reading
+ * the value of "tp" due to "my_cpu_offset_reg" being a global variable.
+ */
+#define __my_cpu_offset my_cpu_offset_reg
+#endif
+
+#define set_my_cpu_offset(tp) (my_cpu_offset_reg = (tp))
 
 #include <asm-generic/percpu.h>
 
index df27a1fd94a310a759612a5c6706b1011a94f787..531f4c365351119eeb249904cc01fd60307931b4 100644 (file)
@@ -66,7 +66,7 @@ static struct hardwall_type hardwall_types[] = {
                0,
                "udn",
                LIST_HEAD_INIT(hardwall_types[HARDWALL_UDN].list),
-               __SPIN_LOCK_INITIALIZER(hardwall_types[HARDWALL_UDN].lock),
+               __SPIN_LOCK_UNLOCKED(hardwall_types[HARDWALL_UDN].lock),
                NULL
        },
 #ifndef __tilepro__
@@ -77,7 +77,7 @@ static struct hardwall_type hardwall_types[] = {
                1,  /* disabled pending hypervisor support */
                "idn",
                LIST_HEAD_INIT(hardwall_types[HARDWALL_IDN].list),
-               __SPIN_LOCK_INITIALIZER(hardwall_types[HARDWALL_IDN].lock),
+               __SPIN_LOCK_UNLOCKED(hardwall_types[HARDWALL_IDN].lock),
                NULL
        },
        {  /* access to user-space IPI */
@@ -87,7 +87,7 @@ static struct hardwall_type hardwall_types[] = {
                0,
                "ipi",
                LIST_HEAD_INIT(hardwall_types[HARDWALL_IPI].list),
-               __SPIN_LOCK_INITIALIZER(hardwall_types[HARDWALL_IPI].lock),
+               __SPIN_LOCK_UNLOCKED(hardwall_types[HARDWALL_IPI].lock),
                NULL
        },
 #endif
index 088d5c141e681084ce030165f303d15f4b69876f..2cbe6d5dd6b04db3ea071fb12c3dbb1866dc818e 100644 (file)
@@ -815,6 +815,9 @@ STD_ENTRY(interrupt_return)
        }
        bzt     r28, 1f
        bnz     r29, 1f
+       /* Disable interrupts explicitly for preemption. */
+       IRQ_DISABLE(r20,r21)
+       TRACE_IRQS_OFF
        jal     preempt_schedule_irq
        FEEDBACK_REENTER(interrupt_return)
 1:
index ec755d3f373467ebe271dd1743cc6f56b6f9d7da..b8fc497f24370c0d7c17536664cb19c40923e5bf 100644 (file)
@@ -841,6 +841,9 @@ STD_ENTRY(interrupt_return)
        }
        beqzt   r28, 1f
        bnez    r29, 1f
+       /* Disable interrupts explicitly for preemption. */
+       IRQ_DISABLE(r20,r21)
+       TRACE_IRQS_OFF
        jal     preempt_schedule_irq
        FEEDBACK_REENTER(interrupt_return)
 1:
index 362284af3afd31ab39081447b6f1295a866c0ab9..c93977a62116dfecd12a74376e307c89c7875b91 100644 (file)
@@ -23,6 +23,7 @@
 #include <linux/mmzone.h>
 #include <linux/dcache.h>
 #include <linux/fs.h>
+#include <linux/string.h>
 #include <asm/backtrace.h>
 #include <asm/page.h>
 #include <asm/ucontext.h>
@@ -332,21 +333,18 @@ static void describe_addr(struct KBacktraceIterator *kbt,
        }
 
        if (vma->vm_file) {
-               char *s;
                p = d_path(&vma->vm_file->f_path, buf, bufsize);
                if (IS_ERR(p))
                        p = "?";
-               s = strrchr(p, '/');
-               if (s)
-                       p = s+1;
+               name = kbasename(p);
        } else {
-               p = "anon";
+               name = "anon";
        }
 
        /* Generate a string description of the vma info. */
-       namelen = strlen(p);
+       namelen = strlen(name);
        remaining = (bufsize - 1) - namelen;
-       memmove(buf, p, namelen);
+       memmove(buf, name, namelen);
        snprintf(buf + namelen, remaining, "[%lx+%lx] ",
                 vma->vm_start, vma->vm_end - vma->vm_start);
 }
index 759efa337be88ebaf72cd1047151a2489a7745cb..c89b211fd9e7c093ed26e932432b329974003a04 100644 (file)
@@ -107,19 +107,19 @@ unsigned long _atomic_xor(volatile unsigned long *p, unsigned long mask)
 EXPORT_SYMBOL(_atomic_xor);
 
 
-u64 _atomic64_xchg(u64 *v, u64 n)
+long long _atomic64_xchg(long long *v, long long n)
 {
        return __atomic64_xchg(v, __atomic_setup(v), n);
 }
 EXPORT_SYMBOL(_atomic64_xchg);
 
-u64 _atomic64_xchg_add(u64 *v, u64 i)
+long long _atomic64_xchg_add(long long *v, long long i)
 {
        return __atomic64_xchg_add(v, __atomic_setup(v), i);
 }
 EXPORT_SYMBOL(_atomic64_xchg_add);
 
-u64 _atomic64_xchg_add_unless(u64 *v, u64 a, u64 u)
+long long _atomic64_xchg_add_unless(long long *v, long long a, long long u)
 {
        /*
         * Note: argument order is switched here since it is easier
@@ -130,7 +130,7 @@ u64 _atomic64_xchg_add_unless(u64 *v, u64 a, u64 u)
 }
 EXPORT_SYMBOL(_atomic64_xchg_add_unless);
 
-u64 _atomic64_cmpxchg(u64 *v, u64 o, u64 n)
+long long _atomic64_cmpxchg(long long *v, long long o, long long n)
 {
        return __atomic64_cmpxchg(v, __atomic_setup(v), o, n);
 }
index ee2fb9d37745887eb16255cbd30adacbdcc1ecae..145d703227bf63542560df60a842d2b8aa0f1f7c 100644 (file)
@@ -860,7 +860,7 @@ source "kernel/Kconfig.preempt"
 
 config X86_UP_APIC
        bool "Local APIC support on uniprocessors"
-       depends on X86_32 && !SMP && !X86_32_NON_STANDARD
+       depends on X86_32 && !SMP && !X86_32_NON_STANDARD && !PCI_MSI
        ---help---
          A local APIC (Advanced Programmable Interrupt Controller) is an
          integrated interrupt controller in the CPU. If you have a single-CPU
@@ -885,11 +885,11 @@ config X86_UP_IOAPIC
 
 config X86_LOCAL_APIC
        def_bool y
-       depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC
+       depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_APIC || PCI_MSI
 
 config X86_IO_APIC
        def_bool y
-       depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC
+       depends on X86_64 || SMP || X86_32_NON_STANDARD || X86_UP_IOAPIC || PCI_MSI
 
 config X86_VISWS_APIC
        def_bool y
index d3f5c63078d812e2f6220cfa5ad322aae920827c..89270b4318db8b97ac467717b38863fa549435ad 100644 (file)
@@ -374,7 +374,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
                 * Catch too early usage of this before alternatives
                 * have run.
                 */
-               asm goto("1: jmp %l[t_warn]\n"
+               asm_volatile_goto("1: jmp %l[t_warn]\n"
                         "2:\n"
                         ".section .altinstructions,\"a\"\n"
                         " .long 1b - .\n"
@@ -388,7 +388,7 @@ static __always_inline __pure bool __static_cpu_has(u16 bit)
 
 #endif
 
-               asm goto("1: jmp %l[t_no]\n"
+               asm_volatile_goto("1: jmp %l[t_no]\n"
                         "2:\n"
                         ".section .altinstructions,\"a\"\n"
                         " .long 1b - .\n"
@@ -453,7 +453,7 @@ static __always_inline __pure bool _static_cpu_has_safe(u16 bit)
  * have. Thus, we force the jump to the widest, 4-byte, signed relative
  * offset even though the last would often fit in less bytes.
  */
-               asm goto("1: .byte 0xe9\n .long %l[t_dynamic] - 2f\n"
+               asm_volatile_goto("1: .byte 0xe9\n .long %l[t_dynamic] - 2f\n"
                         "2:\n"
                         ".section .altinstructions,\"a\"\n"
                         " .long 1b - .\n"              /* src offset */
index 64507f35800ce23e9c867e1c80b5dc3d0a835ec1..6a2cefb4395a4228cce550ef8b231f3e7158d9d1 100644 (file)
@@ -18,7 +18,7 @@
 
 static __always_inline bool arch_static_branch(struct static_key *key)
 {
-       asm goto("1:"
+       asm_volatile_goto("1:"
                ".byte " __stringify(STATIC_KEY_INIT_NOP) "\n\t"
                ".pushsection __jump_table,  \"aw\" \n\t"
                _ASM_ALIGN "\n\t"
index e7e6751648edf775ad54a42a5c05b3e6d3c1cff5..07537a44216ec9b2eed302183af7c57d8949a5a0 100644 (file)
@@ -20,7 +20,7 @@
 static inline void __mutex_fastpath_lock(atomic_t *v,
                                         void (*fail_fn)(atomic_t *))
 {
-       asm volatile goto(LOCK_PREFIX "   decl %0\n"
+       asm_volatile_goto(LOCK_PREFIX "   decl %0\n"
                          "   jns %l[exit]\n"
                          : : "m" (v->counter)
                          : "memory", "cc"
@@ -75,7 +75,7 @@ static inline int __mutex_fastpath_lock_retval(atomic_t *count)
 static inline void __mutex_fastpath_unlock(atomic_t *v,
                                           void (*fail_fn)(atomic_t *))
 {
-       asm volatile goto(LOCK_PREFIX "   incl %0\n"
+       asm_volatile_goto(LOCK_PREFIX "   incl %0\n"
                          "   jg %l[exit]\n"
                          : : "m" (v->counter)
                          : "memory", "cc"
index 897783b3302a9cd0d0af3efad49c94e45f9f7e9e..9d8449158cf989af3009c6606b7a878c827f5d32 100644 (file)
@@ -1888,10 +1888,7 @@ void arch_perf_update_userpage(struct perf_event_mmap_page *userpg, u64 now)
        userpg->cap_user_rdpmc = x86_pmu.attr_rdpmc;
        userpg->pmc_width = x86_pmu.cntval_bits;
 
-       if (!boot_cpu_has(X86_FEATURE_CONSTANT_TSC))
-               return;
-
-       if (!boot_cpu_has(X86_FEATURE_NONSTOP_TSC))
+       if (!sched_clock_stable)
                return;
 
        userpg->cap_user_time = 1;
@@ -1899,10 +1896,8 @@ void arch_perf_update_userpage(struct perf_event_mmap_page *userpg, u64 now)
        userpg->time_shift = CYC2NS_SCALE_FACTOR;
        userpg->time_offset = this_cpu_read(cyc2ns_offset) - now;
 
-       if (sched_clock_stable && !check_tsc_disabled()) {
-               userpg->cap_user_time_zero = 1;
-               userpg->time_zero = this_cpu_read(cyc2ns_offset);
-       }
+       userpg->cap_user_time_zero = 1;
+       userpg->time_zero = this_cpu_read(cyc2ns_offset);
 }
 
 /*
index e643e744e4d8bf855ce1889bdae58b51001aab45..7e920bff99a34b260e1ea338c3fc7dee44ba0e67 100644 (file)
@@ -326,6 +326,14 @@ static struct dmi_system_id __initdata reboot_dmi_table[] = {
                        DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E6320"),
                },
        },
+       {       /* Handle problems with rebooting on the Latitude E5410. */
+               .callback = set_pci_reboot,
+               .ident = "Dell Latitude E5410",
+               .matches = {
+                       DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
+                       DMI_MATCH(DMI_PRODUCT_NAME, "Latitude E5410"),
+               },
+       },
        {       /* Handle problems with rebooting on the Latitude E5420. */
                .callback = set_pci_reboot,
                .ident = "Dell Latitude E5420",
index 3b8e7459dd4db84a4c6f72816cd2c0629d866ee4..2b2fce1b200900b1af42865f946d5faa25fdc56a 100644 (file)
@@ -3255,25 +3255,29 @@ static void vmx_decache_cr4_guest_bits(struct kvm_vcpu *vcpu)
 
 static void ept_load_pdptrs(struct kvm_vcpu *vcpu)
 {
+       struct kvm_mmu *mmu = vcpu->arch.walk_mmu;
+
        if (!test_bit(VCPU_EXREG_PDPTR,
                      (unsigned long *)&vcpu->arch.regs_dirty))
                return;
 
        if (is_paging(vcpu) && is_pae(vcpu) && !is_long_mode(vcpu)) {
-               vmcs_write64(GUEST_PDPTR0, vcpu->arch.mmu.pdptrs[0]);
-               vmcs_write64(GUEST_PDPTR1, vcpu->arch.mmu.pdptrs[1]);
-               vmcs_write64(GUEST_PDPTR2, vcpu->arch.mmu.pdptrs[2]);
-               vmcs_write64(GUEST_PDPTR3, vcpu->arch.mmu.pdptrs[3]);
+               vmcs_write64(GUEST_PDPTR0, mmu->pdptrs[0]);
+               vmcs_write64(GUEST_PDPTR1, mmu->pdptrs[1]);
+               vmcs_write64(GUEST_PDPTR2, mmu->pdptrs[2]);
+               vmcs_write64(GUEST_PDPTR3, mmu->pdptrs[3]);
        }
 }
 
 static void ept_save_pdptrs(struct kvm_vcpu *vcpu)
 {
+       struct kvm_mmu *mmu = vcpu->arch.walk_mmu;
+
        if (is_paging(vcpu) && is_pae(vcpu) && !is_long_mode(vcpu)) {
-               vcpu->arch.mmu.pdptrs[0] = vmcs_read64(GUEST_PDPTR0);
-               vcpu->arch.mmu.pdptrs[1] = vmcs_read64(GUEST_PDPTR1);
-               vcpu->arch.mmu.pdptrs[2] = vmcs_read64(GUEST_PDPTR2);
-               vcpu->arch.mmu.pdptrs[3] = vmcs_read64(GUEST_PDPTR3);
+               mmu->pdptrs[0] = vmcs_read64(GUEST_PDPTR0);
+               mmu->pdptrs[1] = vmcs_read64(GUEST_PDPTR1);
+               mmu->pdptrs[2] = vmcs_read64(GUEST_PDPTR2);
+               mmu->pdptrs[3] = vmcs_read64(GUEST_PDPTR3);
        }
 
        __set_bit(VCPU_EXREG_PDPTR,
@@ -7777,10 +7781,6 @@ static void prepare_vmcs02(struct kvm_vcpu *vcpu, struct vmcs12 *vmcs12)
                vmcs_write64(GUEST_PDPTR1, vmcs12->guest_pdptr1);
                vmcs_write64(GUEST_PDPTR2, vmcs12->guest_pdptr2);
                vmcs_write64(GUEST_PDPTR3, vmcs12->guest_pdptr3);
-               __clear_bit(VCPU_EXREG_PDPTR,
-                               (unsigned long *)&vcpu->arch.regs_avail);
-               __clear_bit(VCPU_EXREG_PDPTR,
-                               (unsigned long *)&vcpu->arch.regs_dirty);
        }
 
        kvm_register_write(vcpu, VCPU_REGS_RSP, vmcs12->guest_rsp);
index 7737b5bd26af816e4361a906ad9d0cd6966b7287..7a744d39175638a381835a8cadce7039f58ee3bf 100644 (file)
@@ -640,7 +640,7 @@ struct timer_rand_state {
  */
 void add_device_randomness(const void *buf, unsigned int size)
 {
-       unsigned long time = get_cycles() ^ jiffies;
+       unsigned long time = random_get_entropy() ^ jiffies;
 
        mix_pool_bytes(&input_pool, buf, size, NULL);
        mix_pool_bytes(&input_pool, &time, sizeof(time), NULL);
@@ -677,7 +677,7 @@ static void add_timer_randomness(struct timer_rand_state *state, unsigned num)
                goto out;
 
        sample.jiffies = jiffies;
-       sample.cycles = get_cycles();
+       sample.cycles = random_get_entropy();
        sample.num = num;
        mix_pool_bytes(&input_pool, &sample, sizeof(sample), NULL);
 
@@ -744,7 +744,7 @@ void add_interrupt_randomness(int irq, int irq_flags)
        struct fast_pool        *fast_pool = &__get_cpu_var(irq_randomness);
        struct pt_regs          *regs = get_irq_regs();
        unsigned long           now = jiffies;
-       __u32                   input[4], cycles = get_cycles();
+       __u32                   input[4], cycles = random_get_entropy();
 
        input[0] = cycles ^ jiffies;
        input[1] = irq;
@@ -1459,12 +1459,11 @@ struct ctl_table random_table[] = {
 
 static u32 random_int_secret[MD5_MESSAGE_BYTES / 4] ____cacheline_aligned;
 
-static int __init random_int_secret_init(void)
+int random_int_secret_init(void)
 {
        get_random_bytes(random_int_secret, sizeof(random_int_secret));
        return 0;
 }
-late_initcall(random_int_secret_init);
 
 /*
  * Get a random word for internal kernel use only. Similar to urandom but
@@ -1483,7 +1482,7 @@ unsigned int get_random_int(void)
 
        hash = get_cpu_var(get_random_int_hash);
 
-       hash[0] += current->pid + jiffies + get_cycles();
+       hash[0] += current->pid + jiffies + random_get_entropy();
        md5_transform(hash, random_int_secret);
        ret = hash[0];
        put_cpu_var(get_random_int_hash);
index 3413380086d5b22f7e9a618231e33af9a1e37b1e..8eb4799237f03d5106cfe52537c587fb7fc648dd 100644 (file)
@@ -8,6 +8,4 @@ obj-$(CONFIG_SOC_EXYNOS5250)    += clk-exynos5250.o
 obj-$(CONFIG_SOC_EXYNOS5420)   += clk-exynos5420.o
 obj-$(CONFIG_SOC_EXYNOS5440)   += clk-exynos5440.o
 obj-$(CONFIG_ARCH_EXYNOS)      += clk-exynos-audss.o
-ifdef CONFIG_COMMON_CLK
 obj-$(CONFIG_ARCH_S3C64XX)     += clk-s3c64xx.o
-endif
index c6a806ed0e8c85439d3c3753bcc133c24ed0cdb7..521483f0ba335f67a5bf7dc96e26adf3ca89fbcf 100644 (file)
@@ -8,6 +8,7 @@ obj-y += clk-prcmu.o
 obj-y += clk-sysctrl.o
 
 # Clock definitions
+obj-y += u8500_of_clk.o
 obj-y += u8500_clk.o
 obj-y += u9540_clk.o
 obj-y += u8540_clk.o
diff --git a/drivers/clk/ux500/u8500_of_clk.c b/drivers/clk/ux500/u8500_of_clk.c
new file mode 100644 (file)
index 0000000..cdeff29
--- /dev/null
@@ -0,0 +1,559 @@
+/*
+ * Clock definitions for u8500 platform.
+ *
+ * Copyright (C) 2012 ST-Ericsson SA
+ * Author: Ulf Hansson <ulf.hansson@linaro.org>
+ *
+ * License terms: GNU General Public License (GPL) version 2
+ */
+
+#include <linux/of.h>
+#include <linux/clk.h>
+#include <linux/clkdev.h>
+#include <linux/clk-provider.h>
+#include <linux/mfd/dbx500-prcmu.h>
+#include <linux/platform_data/clk-ux500.h>
+#include "clk.h"
+
+#define PRCC_NUM_PERIPH_CLUSTERS 6
+#define PRCC_PERIPHS_PER_CLUSTER 32
+
+static struct clk *prcmu_clk[PRCMU_NUM_CLKS];
+static struct clk *prcc_pclk[(PRCC_NUM_PERIPH_CLUSTERS + 1) * PRCC_PERIPHS_PER_CLUSTER];
+static struct clk *prcc_kclk[(PRCC_NUM_PERIPH_CLUSTERS + 1) * PRCC_PERIPHS_PER_CLUSTER];
+
+#define PRCC_SHOW(clk, base, bit) \
+       clk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit]
+#define PRCC_PCLK_STORE(clk, base, bit)        \
+       prcc_pclk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit] = clk
+#define PRCC_KCLK_STORE(clk, base, bit)        \
+       prcc_kclk[(base * PRCC_PERIPHS_PER_CLUSTER) + bit] = clk
+
+struct clk *ux500_twocell_get(struct of_phandle_args *clkspec, void *data)
+{
+       struct clk **clk_data = data;
+       unsigned int base, bit;
+
+       if (clkspec->args_count != 2)
+               return  ERR_PTR(-EINVAL);
+
+       base = clkspec->args[0];
+       bit = clkspec->args[1];
+
+       if (base != 1 && base != 2 && base != 3 && base != 5 && base != 6) {
+               pr_err("%s: invalid PRCC base %d\n", __func__, base);
+               return ERR_PTR(-EINVAL);
+       }
+
+       return PRCC_SHOW(clk_data, base, bit);
+}
+
+static const struct of_device_id u8500_clk_of_match[] = {
+       { .compatible = "stericsson,u8500-clks", },
+       { },
+};
+
+void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
+                      u32 clkrst5_base, u32 clkrst6_base)
+{
+       struct prcmu_fw_version *fw_version;
+       struct device_node *np = NULL;
+       struct device_node *child = NULL;
+       const char *sgaclk_parent = NULL;
+       struct clk *clk, *rtc_clk, *twd_clk;
+
+       if (of_have_populated_dt())
+               np = of_find_matching_node(NULL, u8500_clk_of_match);
+       if (!np) {
+               pr_err("Either DT or U8500 Clock node not found\n");
+               return;
+       }
+
+       /* Clock sources */
+       clk = clk_reg_prcmu_gate("soc0_pll", NULL, PRCMU_PLLSOC0,
+                               CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+       prcmu_clk[PRCMU_PLLSOC0] = clk;
+
+       clk = clk_reg_prcmu_gate("soc1_pll", NULL, PRCMU_PLLSOC1,
+                               CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+       prcmu_clk[PRCMU_PLLSOC1] = clk;
+
+       clk = clk_reg_prcmu_gate("ddr_pll", NULL, PRCMU_PLLDDR,
+                               CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+       prcmu_clk[PRCMU_PLLDDR] = clk;
+
+       /* FIXME: Add sys, ulp and int clocks here. */
+
+       rtc_clk = clk_register_fixed_rate(NULL, "rtc32k", "NULL",
+                               CLK_IS_ROOT|CLK_IGNORE_UNUSED,
+                               32768);
+
+       /* PRCMU clocks */
+       fw_version = prcmu_get_fw_version();
+       if (fw_version != NULL) {
+               switch (fw_version->project) {
+               case PRCMU_FW_PROJECT_U8500_C2:
+               case PRCMU_FW_PROJECT_U8520:
+               case PRCMU_FW_PROJECT_U8420:
+                       sgaclk_parent = "soc0_pll";
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       if (sgaclk_parent)
+               clk = clk_reg_prcmu_gate("sgclk", sgaclk_parent,
+                                       PRCMU_SGACLK, 0);
+       else
+               clk = clk_reg_prcmu_gate("sgclk", NULL,
+                                       PRCMU_SGACLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_SGACLK] = clk;
+
+       clk = clk_reg_prcmu_gate("uartclk", NULL, PRCMU_UARTCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_UARTCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("msp02clk", NULL, PRCMU_MSP02CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_MSP02CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("msp1clk", NULL, PRCMU_MSP1CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_MSP1CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("i2cclk", NULL, PRCMU_I2CCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_I2CCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("slimclk", NULL, PRCMU_SLIMCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_SLIMCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("per1clk", NULL, PRCMU_PER1CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_PER1CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("per2clk", NULL, PRCMU_PER2CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_PER2CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("per3clk", NULL, PRCMU_PER3CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_PER3CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("per5clk", NULL, PRCMU_PER5CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_PER5CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("per6clk", NULL, PRCMU_PER6CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_PER6CLK] = clk;
+
+       clk = clk_reg_prcmu_gate("per7clk", NULL, PRCMU_PER7CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_PER7CLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("lcdclk", NULL, PRCMU_LCDCLK, 0,
+                               CLK_IS_ROOT|CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_LCDCLK] = clk;
+
+       clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_BMLCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("hsitxclk", NULL, PRCMU_HSITXCLK, 0,
+                               CLK_IS_ROOT|CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_HSITXCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("hsirxclk", NULL, PRCMU_HSIRXCLK, 0,
+                               CLK_IS_ROOT|CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_HSIRXCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("hdmiclk", NULL, PRCMU_HDMICLK, 0,
+                               CLK_IS_ROOT|CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_HDMICLK] = clk;
+
+       clk = clk_reg_prcmu_gate("apeatclk", NULL, PRCMU_APEATCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_APEATCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("apetraceclk", NULL, PRCMU_APETRACECLK,
+                               CLK_IS_ROOT);
+       prcmu_clk[PRCMU_APETRACECLK] = clk;
+
+       clk = clk_reg_prcmu_gate("mcdeclk", NULL, PRCMU_MCDECLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_MCDECLK] = clk;
+
+       clk = clk_reg_prcmu_opp_gate("ipi2cclk", NULL, PRCMU_IPI2CCLK,
+                               CLK_IS_ROOT);
+       prcmu_clk[PRCMU_IPI2CCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("dsialtclk", NULL, PRCMU_DSIALTCLK,
+                               CLK_IS_ROOT);
+       prcmu_clk[PRCMU_DSIALTCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("dmaclk", NULL, PRCMU_DMACLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_DMACLK] = clk;
+
+       clk = clk_reg_prcmu_gate("b2r2clk", NULL, PRCMU_B2R2CLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_B2R2CLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("tvclk", NULL, PRCMU_TVCLK, 0,
+                               CLK_IS_ROOT|CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_TVCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("sspclk", NULL, PRCMU_SSPCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_SSPCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("rngclk", NULL, PRCMU_RNGCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_RNGCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("uiccclk", NULL, PRCMU_UICCCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_UICCCLK] = clk;
+
+       clk = clk_reg_prcmu_gate("timclk", NULL, PRCMU_TIMCLK, CLK_IS_ROOT);
+       prcmu_clk[PRCMU_TIMCLK] = clk;
+
+       clk = clk_reg_prcmu_opp_volt_scalable("sdmmcclk", NULL, PRCMU_SDMMCCLK,
+                                       100000000,
+                                       CLK_IS_ROOT|CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_SDMMCCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("dsi_pll", "hdmiclk",
+                               PRCMU_PLLDSI, 0, CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_PLLDSI] = clk;
+
+       clk = clk_reg_prcmu_scalable("dsi0clk", "dsi_pll",
+                               PRCMU_DSI0CLK, 0, CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_DSI0CLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("dsi1clk", "dsi_pll",
+                               PRCMU_DSI1CLK, 0, CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_DSI1CLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("dsi0escclk", "tvclk",
+                               PRCMU_DSI0ESCCLK, 0, CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_DSI0ESCCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("dsi1escclk", "tvclk",
+                               PRCMU_DSI1ESCCLK, 0, CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_DSI1ESCCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable("dsi2escclk", "tvclk",
+                               PRCMU_DSI2ESCCLK, 0, CLK_SET_RATE_GATE);
+       prcmu_clk[PRCMU_DSI2ESCCLK] = clk;
+
+       clk = clk_reg_prcmu_scalable_rate("armss", NULL,
+                               PRCMU_ARMSS, 0, CLK_IS_ROOT|CLK_IGNORE_UNUSED);
+       prcmu_clk[PRCMU_ARMSS] = clk;
+
+       twd_clk = clk_register_fixed_factor(NULL, "smp_twd", "armss",
+                               CLK_IGNORE_UNUSED, 1, 2);
+
+       /*
+        * FIXME: Add special handled PRCMU clocks here:
+        * 1. clkout0yuv, use PRCMU as parent + need regulator + pinctrl.
+        * 2. ab9540_clkout1yuv, see clkout0yuv
+        */
+
+       /* PRCC P-clocks */
+       clk = clk_reg_prcc_pclk("p1_pclk0", "per1clk", clkrst1_base,
+                               BIT(0), 0);
+       PRCC_PCLK_STORE(clk, 1, 0);
+
+       clk = clk_reg_prcc_pclk("p1_pclk1", "per1clk", clkrst1_base,
+                               BIT(1), 0);
+       PRCC_PCLK_STORE(clk, 1, 1);
+
+       clk = clk_reg_prcc_pclk("p1_pclk2", "per1clk", clkrst1_base,
+                               BIT(2), 0);
+       PRCC_PCLK_STORE(clk, 1, 2);
+
+       clk = clk_reg_prcc_pclk("p1_pclk3", "per1clk", clkrst1_base,
+                               BIT(3), 0);
+       PRCC_PCLK_STORE(clk, 1, 3);
+
+       clk = clk_reg_prcc_pclk("p1_pclk4", "per1clk", clkrst1_base,
+                               BIT(4), 0);
+       PRCC_PCLK_STORE(clk, 1, 4);
+
+       clk = clk_reg_prcc_pclk("p1_pclk5", "per1clk", clkrst1_base,
+                               BIT(5), 0);
+       PRCC_PCLK_STORE(clk, 1, 5);
+
+       clk = clk_reg_prcc_pclk("p1_pclk6", "per1clk", clkrst1_base,
+                               BIT(6), 0);
+       PRCC_PCLK_STORE(clk, 1, 6);
+
+       clk = clk_reg_prcc_pclk("p1_pclk7", "per1clk", clkrst1_base,
+                               BIT(7), 0);
+       PRCC_PCLK_STORE(clk, 1, 7);
+
+       clk = clk_reg_prcc_pclk("p1_pclk8", "per1clk", clkrst1_base,
+                               BIT(8), 0);
+       PRCC_PCLK_STORE(clk, 1, 8);
+
+       clk = clk_reg_prcc_pclk("p1_pclk9", "per1clk", clkrst1_base,
+                               BIT(9), 0);
+       PRCC_PCLK_STORE(clk, 1, 9);
+
+       clk = clk_reg_prcc_pclk("p1_pclk10", "per1clk", clkrst1_base,
+                               BIT(10), 0);
+       PRCC_PCLK_STORE(clk, 1, 10);
+
+       clk = clk_reg_prcc_pclk("p1_pclk11", "per1clk", clkrst1_base,
+                               BIT(11), 0);
+       PRCC_PCLK_STORE(clk, 1, 11);
+
+       clk = clk_reg_prcc_pclk("p2_pclk0", "per2clk", clkrst2_base,
+                               BIT(0), 0);
+       PRCC_PCLK_STORE(clk, 2, 0);
+
+       clk = clk_reg_prcc_pclk("p2_pclk1", "per2clk", clkrst2_base,
+                               BIT(1), 0);
+       PRCC_PCLK_STORE(clk, 2, 1);
+
+       clk = clk_reg_prcc_pclk("p2_pclk2", "per2clk", clkrst2_base,
+                               BIT(2), 0);
+       PRCC_PCLK_STORE(clk, 2, 2);
+
+       clk = clk_reg_prcc_pclk("p2_pclk3", "per2clk", clkrst2_base,
+                               BIT(3), 0);
+       PRCC_PCLK_STORE(clk, 2, 3);
+
+       clk = clk_reg_prcc_pclk("p2_pclk4", "per2clk", clkrst2_base,
+                               BIT(4), 0);
+       PRCC_PCLK_STORE(clk, 2, 4);
+
+       clk = clk_reg_prcc_pclk("p2_pclk5", "per2clk", clkrst2_base,
+                               BIT(5), 0);
+       PRCC_PCLK_STORE(clk, 2, 5);
+
+       clk = clk_reg_prcc_pclk("p2_pclk6", "per2clk", clkrst2_base,
+                               BIT(6), 0);
+       PRCC_PCLK_STORE(clk, 2, 6);
+
+       clk = clk_reg_prcc_pclk("p2_pclk7", "per2clk", clkrst2_base,
+                               BIT(7), 0);
+       PRCC_PCLK_STORE(clk, 2, 7);
+
+       clk = clk_reg_prcc_pclk("p2_pclk8", "per2clk", clkrst2_base,
+                               BIT(8), 0);
+       PRCC_PCLK_STORE(clk, 2, 8);
+
+       clk = clk_reg_prcc_pclk("p2_pclk9", "per2clk", clkrst2_base,
+                               BIT(9), 0);
+       PRCC_PCLK_STORE(clk, 2, 9);
+
+       clk = clk_reg_prcc_pclk("p2_pclk10", "per2clk", clkrst2_base,
+                               BIT(10), 0);
+       PRCC_PCLK_STORE(clk, 2, 10);
+
+       clk = clk_reg_prcc_pclk("p2_pclk11", "per2clk", clkrst2_base,
+                               BIT(11), 0);
+       PRCC_PCLK_STORE(clk, 2, 11);
+
+       clk = clk_reg_prcc_pclk("p2_pclk12", "per2clk", clkrst2_base,
+                               BIT(12), 0);
+       PRCC_PCLK_STORE(clk, 2, 12);
+
+       clk = clk_reg_prcc_pclk("p3_pclk0", "per3clk", clkrst3_base,
+                               BIT(0), 0);
+       PRCC_PCLK_STORE(clk, 3, 0);
+
+       clk = clk_reg_prcc_pclk("p3_pclk1", "per3clk", clkrst3_base,
+                               BIT(1), 0);
+       PRCC_PCLK_STORE(clk, 3, 1);
+
+       clk = clk_reg_prcc_pclk("p3_pclk2", "per3clk", clkrst3_base,
+                               BIT(2), 0);
+       PRCC_PCLK_STORE(clk, 3, 2);
+
+       clk = clk_reg_prcc_pclk("p3_pclk3", "per3clk", clkrst3_base,
+                               BIT(3), 0);
+       PRCC_PCLK_STORE(clk, 3, 3);
+
+       clk = clk_reg_prcc_pclk("p3_pclk4", "per3clk", clkrst3_base,
+                               BIT(4), 0);
+       PRCC_PCLK_STORE(clk, 3, 4);
+
+       clk = clk_reg_prcc_pclk("p3_pclk5", "per3clk", clkrst3_base,
+                               BIT(5), 0);
+       PRCC_PCLK_STORE(clk, 3, 5);
+
+       clk = clk_reg_prcc_pclk("p3_pclk6", "per3clk", clkrst3_base,
+                               BIT(6), 0);
+       PRCC_PCLK_STORE(clk, 3, 6);
+
+       clk = clk_reg_prcc_pclk("p3_pclk7", "per3clk", clkrst3_base,
+                               BIT(7), 0);
+       PRCC_PCLK_STORE(clk, 3, 7);
+
+       clk = clk_reg_prcc_pclk("p3_pclk8", "per3clk", clkrst3_base,
+                               BIT(8), 0);
+       PRCC_PCLK_STORE(clk, 3, 8);
+
+       clk = clk_reg_prcc_pclk("p5_pclk0", "per5clk", clkrst5_base,
+                               BIT(0), 0);
+       PRCC_PCLK_STORE(clk, 5, 0);
+
+       clk = clk_reg_prcc_pclk("p5_pclk1", "per5clk", clkrst5_base,
+                               BIT(1), 0);
+       PRCC_PCLK_STORE(clk, 5, 1);
+
+       clk = clk_reg_prcc_pclk("p6_pclk0", "per6clk", clkrst6_base,
+                               BIT(0), 0);
+       PRCC_PCLK_STORE(clk, 6, 0);
+
+       clk = clk_reg_prcc_pclk("p6_pclk1", "per6clk", clkrst6_base,
+                               BIT(1), 0);
+       PRCC_PCLK_STORE(clk, 6, 1);
+
+       clk = clk_reg_prcc_pclk("p6_pclk2", "per6clk", clkrst6_base,
+                               BIT(2), 0);
+       PRCC_PCLK_STORE(clk, 6, 2);
+
+       clk = clk_reg_prcc_pclk("p6_pclk3", "per6clk", clkrst6_base,
+                               BIT(3), 0);
+       PRCC_PCLK_STORE(clk, 6, 3);
+
+       clk = clk_reg_prcc_pclk("p6_pclk4", "per6clk", clkrst6_base,
+                               BIT(4), 0);
+       PRCC_PCLK_STORE(clk, 6, 4);
+
+       clk = clk_reg_prcc_pclk("p6_pclk5", "per6clk", clkrst6_base,
+                               BIT(5), 0);
+       PRCC_PCLK_STORE(clk, 6, 5);
+
+       clk = clk_reg_prcc_pclk("p6_pclk6", "per6clk", clkrst6_base,
+                               BIT(6), 0);
+       PRCC_PCLK_STORE(clk, 6, 6);
+
+       clk = clk_reg_prcc_pclk("p6_pclk7", "per6clk", clkrst6_base,
+                               BIT(7), 0);
+       PRCC_PCLK_STORE(clk, 6, 7);
+
+       /* PRCC K-clocks
+        *
+        * FIXME: Some drivers requires PERPIH[n| to be automatically enabled
+        * by enabling just the K-clock, even if it is not a valid parent to
+        * the K-clock. Until drivers get fixed we might need some kind of
+        * "parent muxed join".
+        */
+
+       /* Periph1 */
+       clk = clk_reg_prcc_kclk("p1_uart0_kclk", "uartclk",
+                       clkrst1_base, BIT(0), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 0);
+
+       clk = clk_reg_prcc_kclk("p1_uart1_kclk", "uartclk",
+                       clkrst1_base, BIT(1), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 1);
+
+       clk = clk_reg_prcc_kclk("p1_i2c1_kclk", "i2cclk",
+                       clkrst1_base, BIT(2), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 2);
+
+       clk = clk_reg_prcc_kclk("p1_msp0_kclk", "msp02clk",
+                       clkrst1_base, BIT(3), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 3);
+
+       clk = clk_reg_prcc_kclk("p1_msp1_kclk", "msp1clk",
+                       clkrst1_base, BIT(4), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 4);
+
+       clk = clk_reg_prcc_kclk("p1_sdi0_kclk", "sdmmcclk",
+                       clkrst1_base, BIT(5), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 5);
+
+       clk = clk_reg_prcc_kclk("p1_i2c2_kclk", "i2cclk",
+                       clkrst1_base, BIT(6), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 6);
+
+       clk = clk_reg_prcc_kclk("p1_slimbus0_kclk", "slimclk",
+                       clkrst1_base, BIT(8), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 8);
+
+       clk = clk_reg_prcc_kclk("p1_i2c4_kclk", "i2cclk",
+                       clkrst1_base, BIT(9), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 9);
+
+       clk = clk_reg_prcc_kclk("p1_msp3_kclk", "msp1clk",
+                       clkrst1_base, BIT(10), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 1, 10);
+
+       /* Periph2 */
+       clk = clk_reg_prcc_kclk("p2_i2c3_kclk", "i2cclk",
+                       clkrst2_base, BIT(0), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 2, 0);
+
+       clk = clk_reg_prcc_kclk("p2_sdi4_kclk", "sdmmcclk",
+                       clkrst2_base, BIT(2), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 2, 2);
+
+       clk = clk_reg_prcc_kclk("p2_msp2_kclk", "msp02clk",
+                       clkrst2_base, BIT(3), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 2, 3);
+
+       clk = clk_reg_prcc_kclk("p2_sdi1_kclk", "sdmmcclk",
+                       clkrst2_base, BIT(4), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 2, 4);
+
+       clk = clk_reg_prcc_kclk("p2_sdi3_kclk", "sdmmcclk",
+                       clkrst2_base, BIT(5), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 2, 5);
+
+       /* Note that rate is received from parent. */
+       clk = clk_reg_prcc_kclk("p2_ssirx_kclk", "hsirxclk",
+                       clkrst2_base, BIT(6),
+                       CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
+       PRCC_KCLK_STORE(clk, 2, 6);
+
+       clk = clk_reg_prcc_kclk("p2_ssitx_kclk", "hsitxclk",
+                       clkrst2_base, BIT(7),
+                       CLK_SET_RATE_GATE|CLK_SET_RATE_PARENT);
+       PRCC_KCLK_STORE(clk, 2, 7);
+
+       /* Periph3 */
+       clk = clk_reg_prcc_kclk("p3_ssp0_kclk", "sspclk",
+                       clkrst3_base, BIT(1), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 1);
+
+       clk = clk_reg_prcc_kclk("p3_ssp1_kclk", "sspclk",
+                       clkrst3_base, BIT(2), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 2);
+
+       clk = clk_reg_prcc_kclk("p3_i2c0_kclk", "i2cclk",
+                       clkrst3_base, BIT(3), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 3);
+
+       clk = clk_reg_prcc_kclk("p3_sdi2_kclk", "sdmmcclk",
+                       clkrst3_base, BIT(4), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 4);
+
+       clk = clk_reg_prcc_kclk("p3_ske_kclk", "rtc32k",
+                       clkrst3_base, BIT(5), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 5);
+
+       clk = clk_reg_prcc_kclk("p3_uart2_kclk", "uartclk",
+                       clkrst3_base, BIT(6), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 6);
+
+       clk = clk_reg_prcc_kclk("p3_sdi5_kclk", "sdmmcclk",
+                       clkrst3_base, BIT(7), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 3, 7);
+
+       /* Periph6 */
+       clk = clk_reg_prcc_kclk("p3_rng_kclk", "rngclk",
+                       clkrst6_base, BIT(0), CLK_SET_RATE_GATE);
+       PRCC_KCLK_STORE(clk, 6, 0);
+
+       for_each_child_of_node(np, child) {
+               static struct clk_onecell_data clk_data;
+
+               if (!of_node_cmp(child->name, "prcmu-clock")) {
+                       clk_data.clks = prcmu_clk;
+                       clk_data.clk_num = ARRAY_SIZE(prcmu_clk);
+                       of_clk_add_provider(child, of_clk_src_onecell_get, &clk_data);
+               }
+               if (!of_node_cmp(child->name, "prcc-periph-clock"))
+                       of_clk_add_provider(child, ux500_twocell_get, prcc_pclk);
+
+               if (!of_node_cmp(child->name, "prcc-kernel-clock"))
+                       of_clk_add_provider(child, ux500_twocell_get, prcc_kclk);
+
+               if (!of_node_cmp(child->name, "rtc32k-clock"))
+                       of_clk_add_provider(child, of_clk_src_simple_get, rtc_clk);
+
+               if (!of_node_cmp(child->name, "smp-twd-clock"))
+                       of_clk_add_provider(child, of_clk_src_simple_get, twd_clk);
+       }
+}
index f26258869deb22d4f2fd760b2139395ae25c9b0f..20c8add90d110db1575e0ccb5695499581853af5 100644 (file)
@@ -83,7 +83,7 @@ void u8540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
        clk_register_clkdev(clk, NULL, "lcd");
        clk_register_clkdev(clk, "lcd", "mcde");
 
-       clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BML8580CLK,
+       clk = clk_reg_prcmu_opp_gate("bmlclk", NULL, PRCMU_BMLCLK,
                                CLK_IS_ROOT);
        clk_register_clkdev(clk, NULL, "bml");
 
index 098a8da450f0cababa616ef83f1e65fa82578ea1..3519111c566b8a3bc9a43b8b89bc2b866c3d833e 100644 (file)
@@ -306,6 +306,7 @@ static struct dma_async_tx_descriptor *edma_prep_slave_sg(
                                                EDMA_SLOT_ANY);
                        if (echan->slot[i] < 0) {
                                dev_err(dev, "Failed to allocate slot\n");
+                               kfree(edesc);
                                return NULL;
                        }
                }
index 45a520281ce10c7e1c8bf2ef6d18e6f253f72310..ebad84591a6e22bd1f28866c3f0b1946eba3dff0 100644 (file)
@@ -93,6 +93,7 @@ struct hpb_dmae_chan {
        void __iomem *base;
        const struct hpb_dmae_slave_config *cfg;
        char dev_id[16];                /* unique name per DMAC of channel */
+       dma_addr_t slave_addr;
 };
 
 struct hpb_dmae_device {
@@ -432,7 +433,6 @@ hpb_dmae_alloc_chan_resources(struct hpb_dmae_chan *hpb_chan,
                hpb_chan->xfer_mode = XFER_DOUBLE;
        } else {
                dev_err(hpb_chan->shdma_chan.dev, "DCR setting error");
-               shdma_free_irq(&hpb_chan->shdma_chan);
                return -EINVAL;
        }
 
@@ -446,7 +446,8 @@ hpb_dmae_alloc_chan_resources(struct hpb_dmae_chan *hpb_chan,
        return 0;
 }
 
-static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id, bool try)
+static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id,
+                             dma_addr_t slave_addr, bool try)
 {
        struct hpb_dmae_chan *chan = to_chan(schan);
        const struct hpb_dmae_slave_config *sc =
@@ -457,6 +458,7 @@ static int hpb_dmae_set_slave(struct shdma_chan *schan, int slave_id, bool try)
        if (try)
                return 0;
        chan->cfg = sc;
+       chan->slave_addr = slave_addr ? : sc->addr;
        return hpb_dmae_alloc_chan_resources(chan, sc);
 }
 
@@ -468,7 +470,7 @@ static dma_addr_t hpb_dmae_slave_addr(struct shdma_chan *schan)
 {
        struct hpb_dmae_chan *chan = to_chan(schan);
 
-       return chan->cfg->addr;
+       return chan->slave_addr;
 }
 
 static struct shdma_desc *hpb_dmae_embedded_desc(void *buf, int i)
@@ -614,7 +616,6 @@ static void hpb_dmae_chan_remove(struct hpb_dmae_device *hpbdev)
        shdma_for_each_chan(schan, &hpbdev->shdma_dev, i) {
                BUG_ON(!schan);
 
-               shdma_free_irq(schan);
                shdma_chan_remove(schan);
        }
        dma_dev->chancnt = 0;
index 358a21c2d811bc6637960ed167ae8e95260ecfca..29b5d6777dc541dc9c55e1bdf1df93237117b364 100644 (file)
@@ -2082,34 +2082,14 @@ static __init int samsung_gpiolib_init(void)
        int i, nr_chips;
        int group = 0;
 
-#if defined(CONFIG_PINCTRL_EXYNOS) || defined(CONFIG_PINCTRL_EXYNOS5440)
        /*
-       * This gpio driver includes support for device tree support and there
-       * are platforms using it. In order to maintain compatibility with those
-       * platforms, and to allow non-dt Exynos4210 platforms to use this
-       * gpiolib support, a check is added to find out if there is a active
-       * pin-controller driver support available. If it is available, this
-       * gpiolib support is ignored and the gpiolib support available in
-       * pin-controller driver is used. This is a temporary check and will go
-       * away when all of the Exynos4210 platforms have switched to using
-       * device tree and the pin-ctrl driver.
-       */
-       struct device_node *pctrl_np;
-       static const struct of_device_id exynos_pinctrl_ids[] = {
-               { .compatible = "samsung,s3c2412-pinctrl", },
-               { .compatible = "samsung,s3c2416-pinctrl", },
-               { .compatible = "samsung,s3c2440-pinctrl", },
-               { .compatible = "samsung,s3c2450-pinctrl", },
-               { .compatible = "samsung,exynos4210-pinctrl", },
-               { .compatible = "samsung,exynos4x12-pinctrl", },
-               { .compatible = "samsung,exynos5250-pinctrl", },
-               { .compatible = "samsung,exynos5440-pinctrl", },
-               { }
-       };
-       for_each_matching_node(pctrl_np, exynos_pinctrl_ids)
-               if (pctrl_np && of_device_is_available(pctrl_np))
-                       return -ENODEV;
-#endif
+        * Currently there are two drivers that can provide GPIO support for
+        * Samsung SoCs. For device tree enabled platforms, the new
+        * pinctrl-samsung driver is used, providing both GPIO and pin control
+        * interfaces. For legacy (non-DT) platforms this driver is used.
+        */
+       if (of_have_populated_dt())
+               return -ENODEV;
 
        samsung_gpiolib_set_cfg(samsung_gpio_cfgs, ARRAY_SIZE(samsung_gpio_cfgs));
 
index 1688ff500513142d6d5072efb8061f1ae231bb3d..830f7501cb4d4f12fd914ec1bac6b0bbf7bae98d 100644 (file)
@@ -2925,6 +2925,8 @@ int drm_edid_to_speaker_allocation(struct edid *edid, u8 **sadb)
                        /* Speaker Allocation Data Block */
                        if (dbl == 3) {
                                *sadb = kmalloc(dbl, GFP_KERNEL);
+                               if (!*sadb)
+                                       return -ENOMEM;
                                memcpy(*sadb, &db[1], dbl);
                                count = dbl;
                                break;
index f6f6cc7fc133292e9fe3375502466b0abd1b0fa9..3d13ca6e257f0f2c6bd366a49f8b7f3622e592dd 100644 (file)
@@ -407,14 +407,6 @@ static void drm_fb_helper_dpms(struct fb_info *info, int dpms_mode)
        struct drm_connector *connector;
        int i, j;
 
-       /*
-        * fbdev->blank can be called from irq context in case of a panic.
-        * Since we already have our own special panic handler which will
-        * restore the fbdev console mode completely, just bail out early.
-        */
-       if (oops_in_progress)
-               return;
-
        /*
         * fbdev->blank can be called from irq context in case of a panic.
         * Since we already have our own special panic handler which will
index 92babac362ec0b85b6f1e52f05a6402411b43d1e..2db731f00930d7b28d85e124744423c8a37dd8b4 100644 (file)
@@ -204,6 +204,7 @@ static int psb_gtt_attach_pages(struct gtt_range *gt)
        if (IS_ERR(pages))
                return PTR_ERR(pages);
 
+       gt->npage = gt->gem.size / PAGE_SIZE;
        gt->pages = pages;
 
        return 0;
index c27a21034a5e56e6fca41d6ff710c9abef59bf72..d5c784d486714d4cc5b9e1a45c8b17fe13d51871 100644 (file)
@@ -1290,12 +1290,9 @@ static int i915_load_modeset_init(struct drm_device *dev)
         * then we do not take part in VGA arbitration and the
         * vga_client_register() fails with -ENODEV.
         */
-       if (!HAS_PCH_SPLIT(dev)) {
-               ret = vga_client_register(dev->pdev, dev, NULL,
-                                         i915_vga_set_decode);
-               if (ret && ret != -ENODEV)
-                       goto out;
-       }
+       ret = vga_client_register(dev->pdev, dev, NULL, i915_vga_set_decode);
+       if (ret && ret != -ENODEV)
+               goto out;
 
        intel_register_dsm_handler();
 
@@ -1351,12 +1348,6 @@ static int i915_load_modeset_init(struct drm_device *dev)
         */
        intel_fbdev_initial_config(dev);
 
-       /*
-        * Must do this after fbcon init so that
-        * vgacon_save_screen() works during the handover.
-        */
-       i915_disable_vga_mem(dev);
-
        /* Only enable hotplug handling once the fbdev is fully set up. */
        dev_priv->enable_hotplug_processing = true;
 
index c159e1a6810fbd8f04e60520dfc5fdb884d8dbff..38f96f65d87ad5d182cf38eff2a14b65a35067b6 100644 (file)
 #define GEN7_SQ_CHICKEN_MBCUNIT_CONFIG         0x9030
 #define  GEN7_SQ_CHICKEN_MBCUNIT_SQINTMOB      (1<<11)
 
+#define HSW_SCRATCH1                           0xb038
+#define  HSW_SCRATCH1_L3_DATA_ATOMICS_DISABLE  (1<<27)
+
 #define HSW_FUSE_STRAP         0x42014
 #define  HSW_CDCLK_LIMIT       (1 << 24)
 
 #define GEN7_ROW_CHICKEN2_GT2          0xf4f4
 #define   DOP_CLOCK_GATING_DISABLE     (1<<0)
 
+#define HSW_ROW_CHICKEN3               0xe49c
+#define  HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE    (1 << 6)
+
 #define G4X_AUD_VID_DID                        (dev_priv->info->display_mmio_offset + 0x62020)
 #define INTEL_AUDIO_DEVCL              0x808629FB
 #define INTEL_AUDIO_DEVBLC             0x80862801
index e5822e79f912d9d447901f7dbf71fe911b5ade30..581fb4b2f76637694877a2c4401acd2f35ade58c 100644 (file)
@@ -3941,8 +3941,6 @@ static void intel_connector_check_state(struct intel_connector *connector)
  * consider. */
 void intel_connector_dpms(struct drm_connector *connector, int mode)
 {
-       struct intel_encoder *encoder = intel_attached_encoder(connector);
-
        /* All the simple cases only support two dpms states. */
        if (mode != DRM_MODE_DPMS_ON)
                mode = DRM_MODE_DPMS_OFF;
@@ -3953,10 +3951,8 @@ void intel_connector_dpms(struct drm_connector *connector, int mode)
        connector->dpms = mode;
 
        /* Only need to change hw state when actually enabled */
-       if (encoder->base.crtc)
-               intel_encoder_dpms(encoder, mode);
-       else
-               WARN_ON(encoder->connectors_active != false);
+       if (connector->encoder)
+               intel_encoder_dpms(to_intel_encoder(connector->encoder), mode);
 
        intel_modeset_check_state(connector->dev);
 }
@@ -10049,33 +10045,6 @@ static void i915_disable_vga(struct drm_device *dev)
        POSTING_READ(vga_reg);
 }
 
-static void i915_enable_vga_mem(struct drm_device *dev)
-{
-       /* Enable VGA memory on Intel HD */
-       if (HAS_PCH_SPLIT(dev)) {
-               vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
-               outb(inb(VGA_MSR_READ) | VGA_MSR_MEM_EN, VGA_MSR_WRITE);
-               vga_set_legacy_decoding(dev->pdev, VGA_RSRC_LEGACY_IO |
-                                                  VGA_RSRC_LEGACY_MEM |
-                                                  VGA_RSRC_NORMAL_IO |
-                                                  VGA_RSRC_NORMAL_MEM);
-               vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
-       }
-}
-
-void i915_disable_vga_mem(struct drm_device *dev)
-{
-       /* Disable VGA memory on Intel HD */
-       if (HAS_PCH_SPLIT(dev)) {
-               vga_get_uninterruptible(dev->pdev, VGA_RSRC_LEGACY_IO);
-               outb(inb(VGA_MSR_READ) & ~VGA_MSR_MEM_EN, VGA_MSR_WRITE);
-               vga_set_legacy_decoding(dev->pdev, VGA_RSRC_LEGACY_IO |
-                                                  VGA_RSRC_NORMAL_IO |
-                                                  VGA_RSRC_NORMAL_MEM);
-               vga_put(dev->pdev, VGA_RSRC_LEGACY_IO);
-       }
-}
-
 void intel_modeset_init_hw(struct drm_device *dev)
 {
        intel_init_power_well(dev);
@@ -10354,7 +10323,6 @@ void i915_redisable_vga(struct drm_device *dev)
        if (I915_READ(vga_reg) != VGA_DISP_DISABLE) {
                DRM_DEBUG_KMS("Something enabled VGA plane, disabling it\n");
                i915_disable_vga(dev);
-               i915_disable_vga_mem(dev);
        }
 }
 
@@ -10568,8 +10536,6 @@ void intel_modeset_cleanup(struct drm_device *dev)
 
        intel_disable_fbc(dev);
 
-       i915_enable_vga_mem(dev);
-
        intel_disable_gt_powersave(dev);
 
        ironlake_teardown_rc6(dev);
index 79c14e298ba657d32f0a57493ec9500b5216ba2d..2c555f91bfae076688fe07e1694c75932a9c97d2 100644 (file)
@@ -1467,7 +1467,7 @@ static void intel_edp_psr_setup(struct intel_dp *intel_dp)
 
        /* Avoid continuous PSR exit by masking memup and hpd */
        I915_WRITE(EDP_PSR_DEBUG_CTL, EDP_PSR_DEBUG_MASK_MEMUP |
-                  EDP_PSR_DEBUG_MASK_HPD);
+                  EDP_PSR_DEBUG_MASK_HPD | EDP_PSR_DEBUG_MASK_LPSP);
 
        intel_dp->psr_setup_done = true;
 }
index 28cae80495e2b1e9d1f4fe0d089bbd63fd7a11b7..9b7b68fd5d47cf6c979c8fdffd412d8381aabc0e 100644 (file)
@@ -793,6 +793,5 @@ extern void hsw_pc8_disable_interrupts(struct drm_device *dev);
 extern void hsw_pc8_restore_interrupts(struct drm_device *dev);
 extern void intel_aux_display_runtime_get(struct drm_i915_private *dev_priv);
 extern void intel_aux_display_runtime_put(struct drm_i915_private *dev_priv);
-extern void i915_disable_vga_mem(struct drm_device *dev);
 
 #endif /* __INTEL_DRV_H__ */
index dd176b7296c1c44904a163cfe82960f6e196249d..f4c5e95b2d6f633b8151832973f6b831ab0bc559 100644 (file)
@@ -3864,8 +3864,6 @@ static void valleyview_enable_rps(struct drm_device *dev)
                                      dev_priv->rps.rpe_delay),
                         dev_priv->rps.rpe_delay);
 
-       INIT_DELAYED_WORK(&dev_priv->rps.vlv_work, vlv_rps_timer_work);
-
        valleyview_set_rps(dev_priv->dev, dev_priv->rps.rpe_delay);
 
        gen6_enable_rps_interrupts(dev);
@@ -4955,6 +4953,11 @@ static void haswell_init_clock_gating(struct drm_device *dev)
        I915_WRITE(GEN7_L3_CHICKEN_MODE_REGISTER,
                        GEN7_WA_L3_CHICKEN_MODE);
 
+       /* L3 caching of data atomics doesn't work -- disable it. */
+       I915_WRITE(HSW_SCRATCH1, HSW_SCRATCH1_L3_DATA_ATOMICS_DISABLE);
+       I915_WRITE(HSW_ROW_CHICKEN3,
+                  _MASKED_BIT_ENABLE(HSW_ROW_CHICKEN3_L3_GLOBAL_ATOMICS_DISABLE));
+
        /* This is required by WaCatErrorRejectionIssue:hsw */
        I915_WRITE(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG,
                        I915_READ(GEN7_SQ_CHICKEN_MBCUNIT_CONFIG) |
@@ -5681,5 +5684,7 @@ void intel_pm_init(struct drm_device *dev)
 
        INIT_DELAYED_WORK(&dev_priv->rps.delayed_resume_work,
                          intel_gen6_powersave_work);
+
+       INIT_DELAYED_WORK(&dev_priv->rps.vlv_work, vlv_rps_timer_work);
 }
 
index 37712a6df92358e2583b87a53df4a04cd25ba290..e290cfa4acee09bd8f0a1a2b54462e38abf0bcec 100644 (file)
@@ -113,7 +113,7 @@ nouveau_mc_create_(struct nouveau_object *parent, struct nouveau_object *engine,
                pmc->use_msi = false;
                break;
        default:
-               pmc->use_msi = nouveau_boolopt(device->cfgopt, "NvMSI", true);
+               pmc->use_msi = nouveau_boolopt(device->cfgopt, "NvMSI", false);
                if (pmc->use_msi) {
                        pmc->use_msi = pci_enable_msi(device->pdev) == 0;
                        if (pmc->use_msi) {
index b162e98a2953ee392029dba8c1eae7d0e3678e97..9b6950d9b3c09cc193010a50bdd521939464d539 100644 (file)
@@ -1930,7 +1930,7 @@ static int btc_set_mc_special_registers(struct radeon_device *rdev,
                        }
                        j++;
 
-                       if (j > SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE)
+                       if (j >= SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE)
                                return -EINVAL;
 
                        tmp = RREG32(MC_PMG_CMD_MRS);
@@ -1945,7 +1945,7 @@ static int btc_set_mc_special_registers(struct radeon_device *rdev,
                        }
                        j++;
 
-                       if (j > SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE)
+                       if (j >= SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE)
                                return -EINVAL;
                        break;
                case MC_SEQ_RESERVE_M >> 2:
@@ -1959,7 +1959,7 @@ static int btc_set_mc_special_registers(struct radeon_device *rdev,
                        }
                        j++;
 
-                       if (j > SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE)
+                       if (j >= SMC_EVERGREEN_MC_REGISTER_ARRAY_SIZE)
                                return -EINVAL;
                        break;
                default:
index d02fd1c045d567371a187c686e1af2b411f88aa1..b874ccdf52f7c2807461fef654290bc09da7c55d 100644 (file)
@@ -77,6 +77,8 @@ static void cik_pcie_gen3_enable(struct radeon_device *rdev);
 static void cik_program_aspm(struct radeon_device *rdev);
 static void cik_init_pg(struct radeon_device *rdev);
 static void cik_init_cg(struct radeon_device *rdev);
+static void cik_fini_pg(struct radeon_device *rdev);
+static void cik_fini_cg(struct radeon_device *rdev);
 static void cik_enable_gui_idle_interrupt(struct radeon_device *rdev,
                                          bool enable);
 
@@ -4185,6 +4187,10 @@ static void cik_gpu_soft_reset(struct radeon_device *rdev, u32 reset_mask)
        dev_info(rdev->dev, "  VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n",
                 RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS));
 
+       /* disable CG/PG */
+       cik_fini_pg(rdev);
+       cik_fini_cg(rdev);
+
        /* stop the rlc */
        cik_rlc_stop(rdev);
 
index 555164e270a79347fb36b9cadab09d90754c4306..b5c67a99dda9b34707c3ba7eb20a682f9c7fe089 100644 (file)
@@ -3131,7 +3131,7 @@ static void evergreen_gpu_init(struct radeon_device *rdev)
                rdev->config.evergreen.sx_max_export_size = 256;
                rdev->config.evergreen.sx_max_export_pos_size = 64;
                rdev->config.evergreen.sx_max_export_smx_size = 192;
-               rdev->config.evergreen.max_hw_contexts = 8;
+               rdev->config.evergreen.max_hw_contexts = 4;
                rdev->config.evergreen.sq_num_cf_insts = 2;
 
                rdev->config.evergreen.sc_prim_fifo_size = 0x40;
index f71ce390aebe581dd08998ce29d98e4b1058155c..f815c20640bd45e28c9d27fa86897a99af5d40d6 100644 (file)
@@ -288,8 +288,7 @@ void evergreen_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode
        /* fglrx clears sth in AFMT_AUDIO_PACKET_CONTROL2 here */
 
        WREG32(HDMI_ACR_PACKET_CONTROL + offset,
-              HDMI_ACR_AUTO_SEND | /* allow hw to sent ACR packets when required */
-              HDMI_ACR_SOURCE); /* select SW CTS value */
+              HDMI_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */
 
        evergreen_hdmi_update_ACR(encoder, mode->clock);
 
index 8768fd6a1e2707acf1006f9afff44eb1a173fd4b..4f6d2962767dced17ae7f5f3e44e79bce4f51bbf 100644 (file)
  * 6. COMMAND [29:22] | BYTE_COUNT [20:0]
  */
 #              define PACKET3_CP_DMA_DST_SEL(x)    ((x) << 20)
-                /* 0 - SRC_ADDR
+                /* 0 - DST_ADDR
                 * 1 - GDS
                 */
 #              define PACKET3_CP_DMA_ENGINE(x)     ((x) << 27)
 #              define PACKET3_CP_DMA_CP_SYNC       (1 << 31)
 /* COMMAND */
 #              define PACKET3_CP_DMA_DIS_WC        (1 << 21)
-#              define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 23)
+#              define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 22)
                 /* 0 - none
                 * 1 - 8 in 16
                 * 2 - 8 in 32
index b0fa6002af3e98da440cbebfa1ae183163e8b07d..5b729319f27b880dd70c52e19d5aeb33fe1d2cd8 100644 (file)
@@ -57,15 +57,15 @@ enum r600_hdmi_iec_status_bits {
 static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = {
     /*      32kHz        44.1kHz       48kHz    */
     /* Clock      N     CTS      N     CTS      N     CTS */
-    {  25174,  4576,  28125,  7007,  31250,  6864,  28125 }, /*  25,20/1.001 MHz */
+    {  25175,  4576,  28125,  7007,  31250,  6864,  28125 }, /*  25,20/1.001 MHz */
     {  25200,  4096,  25200,  6272,  28000,  6144,  25200 }, /*  25.20       MHz */
     {  27000,  4096,  27000,  6272,  30000,  6144,  27000 }, /*  27.00       MHz */
     {  27027,  4096,  27027,  6272,  30030,  6144,  27027 }, /*  27.00*1.001 MHz */
     {  54000,  4096,  54000,  6272,  60000,  6144,  54000 }, /*  54.00       MHz */
     {  54054,  4096,  54054,  6272,  60060,  6144,  54054 }, /*  54.00*1.001 MHz */
-    {  74175, 11648, 210937, 17836, 234375, 11648, 140625 }, /*  74.25/1.001 MHz */
+    {  74176, 11648, 210937, 17836, 234375, 11648, 140625 }, /*  74.25/1.001 MHz */
     {  74250,  4096,  74250,  6272,  82500,  6144,  74250 }, /*  74.25       MHz */
-    { 148351, 11648, 421875,  8918, 234375,  5824, 140625 }, /* 148.50/1.001 MHz */
+    { 148352, 11648, 421875,  8918, 234375,  5824, 140625 }, /* 148.50/1.001 MHz */
     { 148500,  4096, 148500,  6272, 165000,  6144, 148500 }, /* 148.50       MHz */
     {      0,  4096,      0,  6272,      0,  6144,      0 }  /* Other */
 };
@@ -75,8 +75,15 @@ static const struct radeon_hdmi_acr r600_hdmi_predefined_acr[] = {
  */
 static void r600_hdmi_calc_cts(uint32_t clock, int *CTS, int N, int freq)
 {
-       if (*CTS == 0)
-               *CTS = clock * N / (128 * freq) * 1000;
+       u64 n;
+       u32 d;
+
+       if (*CTS == 0) {
+               n = (u64)clock * (u64)N * 1000ULL;
+               d = 128 * freq;
+               do_div(n, d);
+               *CTS = n;
+       }
        DRM_DEBUG("Using ACR timing N=%d CTS=%d for frequency %d\n",
                  N, *CTS, freq);
 }
@@ -444,8 +451,8 @@ void r600_hdmi_setmode(struct drm_encoder *encoder, struct drm_display_mode *mod
        }
 
        WREG32(HDMI0_ACR_PACKET_CONTROL + offset,
-              HDMI0_ACR_AUTO_SEND | /* allow hw to sent ACR packets when required */
-              HDMI0_ACR_SOURCE); /* select SW CTS value */
+              HDMI0_ACR_SOURCE | /* select SW CTS value - XXX verify that hw CTS works on all families */
+              HDMI0_ACR_AUTO_SEND); /* allow hw to sent ACR packets when required */
 
        WREG32(HDMI0_VBI_PACKET_CONTROL + offset,
               HDMI0_NULL_SEND | /* send null packets when required */
index e673fe26ea84d00b292f77c456089c4312372ab7..7b3c7b5932c5a289be3fd58d05b7392791c6a4ff 100644 (file)
  */
 #              define PACKET3_CP_DMA_CP_SYNC       (1 << 31)
 /* COMMAND */
-#              define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 23)
+#              define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 22)
                 /* 0 - none
                 * 1 - 8 in 16
                 * 2 - 8 in 32
index ac07ad1d4f8c903783acc26e3fc8f9f0e3449d44..4f6b7fc7ad3cad3a90017c6d7f75192c4c55452a 100644 (file)
@@ -945,6 +945,8 @@ void radeon_dpm_enable_uvd(struct radeon_device *rdev, bool enable)
                if (enable) {
                        mutex_lock(&rdev->pm.mutex);
                        rdev->pm.dpm.uvd_active = true;
+                       /* disable this for now */
+#if 0
                        if ((rdev->pm.dpm.sd == 1) && (rdev->pm.dpm.hd == 0))
                                dpm_state = POWER_STATE_TYPE_INTERNAL_UVD_SD;
                        else if ((rdev->pm.dpm.sd == 2) && (rdev->pm.dpm.hd == 0))
@@ -954,6 +956,7 @@ void radeon_dpm_enable_uvd(struct radeon_device *rdev, bool enable)
                        else if ((rdev->pm.dpm.sd == 0) && (rdev->pm.dpm.hd == 2))
                                dpm_state = POWER_STATE_TYPE_INTERNAL_UVD_HD2;
                        else
+#endif
                                dpm_state = POWER_STATE_TYPE_INTERNAL_UVD;
                        rdev->pm.dpm.state = dpm_state;
                        mutex_unlock(&rdev->pm.mutex);
index f4d6bcee9006451ca377b94ece370806a8f89d2d..12e8099a0823e23a1218c1e5a3f07e78bbfbfcd0 100644 (file)
@@ -36,8 +36,8 @@ static void radeon_do_test_moves(struct radeon_device *rdev, int flag)
        struct radeon_bo *vram_obj = NULL;
        struct radeon_bo **gtt_obj = NULL;
        uint64_t gtt_addr, vram_addr;
-       unsigned i, n, size;
-       int r, ring;
+       unsigned n, size;
+       int i, r, ring;
 
        switch (flag) {
        case RADEON_TEST_COPY_DMA:
index a0f11856dddef7067871e630ed2bafcb9a2d4587..4f2e73f79638f244c43558722128910404b2b04b 100644 (file)
@@ -798,7 +798,8 @@ void radeon_uvd_note_usage(struct radeon_device *rdev)
                    (rdev->pm.dpm.hd != hd)) {
                        rdev->pm.dpm.sd = sd;
                        rdev->pm.dpm.hd = hd;
-                       streams_changed = true;
+                       /* disable this for now */
+                       /*streams_changed = true;*/
                }
        }
 
index c354c1094967990a46caea46612caed123bc9b51..d4652af425b87b11c6b723930473b3b810742b10 100644 (file)
@@ -85,6 +85,9 @@ extern void si_dma_vm_set_page(struct radeon_device *rdev,
                               uint32_t incr, uint32_t flags);
 static void si_enable_gui_idle_interrupt(struct radeon_device *rdev,
                                         bool enable);
+static void si_fini_pg(struct radeon_device *rdev);
+static void si_fini_cg(struct radeon_device *rdev);
+static void si_rlc_stop(struct radeon_device *rdev);
 
 static const u32 verde_rlc_save_restore_register_list[] =
 {
@@ -3608,6 +3611,13 @@ static void si_gpu_soft_reset(struct radeon_device *rdev, u32 reset_mask)
        dev_info(rdev->dev, "  VM_CONTEXT1_PROTECTION_FAULT_STATUS 0x%08X\n",
                 RREG32(VM_CONTEXT1_PROTECTION_FAULT_STATUS));
 
+       /* disable PG/CG */
+       si_fini_pg(rdev);
+       si_fini_cg(rdev);
+
+       /* stop the rlc */
+       si_rlc_stop(rdev);
+
        /* Disable CP parsing/prefetching */
        WREG32(CP_ME_CNTL, CP_ME_HALT | CP_PFP_HALT | CP_CE_HALT);
 
index 9ace28702c761a196089c7e88442e45b08a3ed16..2332aa1bf93c7c40936710c7e8595c6d49f6514b 100644 (file)
@@ -5208,7 +5208,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev,
                                        table->mc_reg_table_entry[k].mc_data[j] |= 0x100;
                        }
                        j++;
-                       if (j > SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+                       if (j >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
                                return -EINVAL;
 
                        if (!pi->mem_gddr5) {
@@ -5218,7 +5218,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev,
                                        table->mc_reg_table_entry[k].mc_data[j] =
                                                (table->mc_reg_table_entry[k].mc_data[i] & 0xffff0000) >> 16;
                                j++;
-                               if (j > SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+                               if (j >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
                                        return -EINVAL;
                        }
                        break;
@@ -5231,7 +5231,7 @@ static int si_set_mc_special_registers(struct radeon_device *rdev,
                                        (temp_reg & 0xffff0000) |
                                        (table->mc_reg_table_entry[k].mc_data[i] & 0x0000ffff);
                        j++;
-                       if (j > SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
+                       if (j >= SMC_SISLANDS_MC_REGISTER_ARRAY_SIZE)
                                return -EINVAL;
                        break;
                default:
index 52d2ab6b67a0b8876bdfa1710756f582b3927382..7e2e0ea66a008f491f5396bada706ca469b23f0b 100644 (file)
  * 6. COMMAND [30:21] | BYTE_COUNT [20:0]
  */
 #              define PACKET3_CP_DMA_DST_SEL(x)    ((x) << 20)
-                /* 0 - SRC_ADDR
+                /* 0 - DST_ADDR
                 * 1 - GDS
                 */
 #              define PACKET3_CP_DMA_ENGINE(x)     ((x) << 27)
 #              define PACKET3_CP_DMA_CP_SYNC       (1 << 31)
 /* COMMAND */
 #              define PACKET3_CP_DMA_DIS_WC        (1 << 21)
-#              define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 23)
+#              define PACKET3_CP_DMA_CMD_SRC_SWAP(x) ((x) << 22)
                 /* 0 - none
                 * 1 - 8 in 16
                 * 2 - 8 in 32
index 7f998bf1cc9dd796b412dae45184dc5f1c76f184..9364129ba292e1b5412a0d10818ed158c95bb0fa 100644 (file)
@@ -1868,7 +1868,7 @@ int trinity_dpm_init(struct radeon_device *rdev)
        for (i = 0; i < SUMO_MAX_HARDWARE_POWERLEVELS; i++)
                pi->at[i] = TRINITY_AT_DFLT;
 
-       pi->enable_bapm = true;
+       pi->enable_bapm = false;
        pi->enable_nbps_policy = true;
        pi->enable_sclk_ds = true;
        pi->enable_gfx_power_gating = true;
index 71b70e3a7a7183068dbc18d3b224bf3894444497..c91d547191dd2b7a511b1564523c8f649ec6ac2d 100644 (file)
@@ -241,6 +241,7 @@ config HID_HOLTEK
          - Sharkoon Drakonia / Perixx MX-2000 gaming mice
          - Tracer Sniper TRM-503 / NOVA Gaming Slider X200 /
            Zalman ZM-GM1
+         - SHARKOON DarkGlider Gaming mouse
 
 config HOLTEK_FF
        bool "Holtek On Line Grip force feedback support"
index b8470b1a10fe8b40bef83386a0476591e5a067d7..5a8c01112a233a5ce52ce7260d19376720c74042 100644 (file)
@@ -1715,6 +1715,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A04A) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A067) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT, USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HUION, USB_DEVICE_ID_HUION_580) },
        { HID_USB_DEVICE(USB_VENDOR_ID_JESS2, USB_DEVICE_ID_JESS2_COLOR_RUMBLE_PAD) },
        { HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_ION, USB_DEVICE_ID_ICADE) },
index 7e6db3cf46f9eb39746fcc4ac4b4e29296caa569..e696566cde46420334d1f416b53c2675ec581a7b 100644 (file)
@@ -27,6 +27,7 @@
  * - USB ID 04d9:a067, sold as Sharkoon Drakonia and Perixx MX-2000
  * - USB ID 04d9:a04a, sold as Tracer Sniper TRM-503, NOVA Gaming Slider X200
  *   and Zalman ZM-GM1
+ * - USB ID 04d9:a081, sold as SHARKOON DarkGlider Gaming mouse
  */
 
 static __u8 *holtek_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
@@ -46,6 +47,7 @@ static __u8 *holtek_mouse_report_fixup(struct hid_device *hdev, __u8 *rdesc,
                        }
                        break;
                case USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A04A:
+               case USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081:
                        if (*rsize >= 113 && rdesc[106] == 0xff && rdesc[107] == 0x7f
                                        && rdesc[111] == 0xff && rdesc[112] == 0x7f) {
                                hid_info(hdev, "Fixing up report descriptor\n");
@@ -63,6 +65,8 @@ static const struct hid_device_id holtek_mouse_devices[] = {
                        USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A067) },
        { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT,
                        USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A04A) },
+       { HID_USB_DEVICE(USB_VENDOR_ID_HOLTEK_ALT,
+                       USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081) },
        { }
 };
 MODULE_DEVICE_TABLE(hid, holtek_mouse_devices);
index e60e8d530697fcaf0a7c4a43f42e53b455de6f4d..9cbc7ab07dfaee581141b0191f4e76300a18d1d6 100644 (file)
 #define USB_DEVICE_ID_HOLTEK_ALT_KEYBOARD      0xa055
 #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A067    0xa067
 #define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A04A    0xa04a
+#define USB_DEVICE_ID_HOLTEK_ALT_MOUSE_A081    0xa081
 
 #define USB_VENDOR_ID_IMATION          0x0718
 #define USB_DEVICE_ID_DISC_STAKKA      0xd000
index 602c188e9d86cafedde93366bf3d114e69c3e552..6101816a7ddd8a96ae8ad0e9ecfa297c29fa637f 100644 (file)
@@ -382,7 +382,7 @@ static ssize_t kone_sysfs_write_profilex(struct file *fp,
 }
 #define PROFILE_ATTR(number)                                   \
 static struct bin_attribute bin_attr_profile##number = {       \
-       .attr = { .name = "profile##number", .mode = 0660 },    \
+       .attr = { .name = "profile" #number, .mode = 0660 },    \
        .size = sizeof(struct kone_profile),                    \
        .read = kone_sysfs_read_profilex,                       \
        .write = kone_sysfs_write_profilex,                     \
index 5ddf605b6b890b15c2b9f94783072d951908e5db..5e99fcdc71b9cf0631cb7adcc8b61a22c36ae728 100644 (file)
@@ -229,13 +229,13 @@ static ssize_t koneplus_sysfs_read_profilex_buttons(struct file *fp,
 
 #define PROFILE_ATTR(number)                                           \
 static struct bin_attribute bin_attr_profile##number##_settings = {    \
-       .attr = { .name = "profile##number##_settings", .mode = 0440 }, \
+       .attr = { .name = "profile" #number "_settings", .mode = 0440 },        \
        .size = KONEPLUS_SIZE_PROFILE_SETTINGS,                         \
        .read = koneplus_sysfs_read_profilex_settings,                  \
        .private = &profile_numbers[number-1],                          \
 };                                                                     \
 static struct bin_attribute bin_attr_profile##number##_buttons = {     \
-       .attr = { .name = "profile##number##_buttons", .mode = 0440 },  \
+       .attr = { .name = "profile" #number "_buttons", .mode = 0440 }, \
        .size = KONEPLUS_SIZE_PROFILE_BUTTONS,                          \
        .read = koneplus_sysfs_read_profilex_buttons,                   \
        .private = &profile_numbers[number-1],                          \
index 515bc03136c0c6497b2ada738f6f8a10f7368311..0c8e1ef0b67d14fdb1c3bf2a6b575fdea94faf8e 100644 (file)
@@ -257,13 +257,13 @@ static ssize_t kovaplus_sysfs_read_profilex_buttons(struct file *fp,
 
 #define PROFILE_ATTR(number)                                           \
 static struct bin_attribute bin_attr_profile##number##_settings = {    \
-       .attr = { .name = "profile##number##_settings", .mode = 0440 }, \
+       .attr = { .name = "profile" #number "_settings", .mode = 0440 },        \
        .size = KOVAPLUS_SIZE_PROFILE_SETTINGS,                         \
        .read = kovaplus_sysfs_read_profilex_settings,                  \
        .private = &profile_numbers[number-1],                          \
 };                                                                     \
 static struct bin_attribute bin_attr_profile##number##_buttons = {     \
-       .attr = { .name = "profile##number##_buttons", .mode = 0440 },  \
+       .attr = { .name = "profile" #number "_buttons", .mode = 0440 }, \
        .size = KOVAPLUS_SIZE_PROFILE_BUTTONS,                          \
        .read = kovaplus_sysfs_read_profilex_buttons,                   \
        .private = &profile_numbers[number-1],                          \
index 5a6dbbeee790d05ae7abbfb8e045b758b6a6f5ba..1a07e07d99a06c8972a2d80b8fefa8aa4f4b3848 100644 (file)
@@ -225,13 +225,13 @@ static ssize_t pyra_sysfs_read_profilex_buttons(struct file *fp,
 
 #define PROFILE_ATTR(number)                                           \
 static struct bin_attribute bin_attr_profile##number##_settings = {    \
-       .attr = { .name = "profile##number##_settings", .mode = 0440 }, \
+       .attr = { .name = "profile" #number "_settings", .mode = 0440 },        \
        .size = PYRA_SIZE_PROFILE_SETTINGS,                             \
        .read = pyra_sysfs_read_profilex_settings,                      \
        .private = &profile_numbers[number-1],                          \
 };                                                                     \
 static struct bin_attribute bin_attr_profile##number##_buttons = {     \
-       .attr = { .name = "profile##number##_buttons", .mode = 0440 },  \
+       .attr = { .name = "profile" #number "_buttons", .mode = 0440 }, \
        .size = PYRA_SIZE_PROFILE_BUTTONS,                              \
        .read = pyra_sysfs_read_profilex_buttons,                       \
        .private = &profile_numbers[number-1],                          \
index 2e7d644dba18a6fc1169c7b83ee7eded30f6e09f..71adf9e60b13f4aafa22ba94183bb4dcb8a3a21d 100644 (file)
@@ -119,12 +119,22 @@ static const struct wiimod_ops wiimod_keys = {
  * the rumble motor, this flag shouldn't be set.
  */
 
+/* used by wiimod_rumble and wiipro_rumble */
+static void wiimod_rumble_worker(struct work_struct *work)
+{
+       struct wiimote_data *wdata = container_of(work, struct wiimote_data,
+                                                 rumble_worker);
+
+       spin_lock_irq(&wdata->state.lock);
+       wiiproto_req_rumble(wdata, wdata->state.cache_rumble);
+       spin_unlock_irq(&wdata->state.lock);
+}
+
 static int wiimod_rumble_play(struct input_dev *dev, void *data,
                              struct ff_effect *eff)
 {
        struct wiimote_data *wdata = input_get_drvdata(dev);
        __u8 value;
-       unsigned long flags;
 
        /*
         * The wiimote supports only a single rumble motor so if any magnitude
@@ -137,9 +147,10 @@ static int wiimod_rumble_play(struct input_dev *dev, void *data,
        else
                value = 0;
 
-       spin_lock_irqsave(&wdata->state.lock, flags);
-       wiiproto_req_rumble(wdata, value);
-       spin_unlock_irqrestore(&wdata->state.lock, flags);
+       /* Locking state.lock here might deadlock with input_event() calls.
+        * schedule_work acts as barrier. Merging multiple changes is fine. */
+       wdata->state.cache_rumble = value;
+       schedule_work(&wdata->rumble_worker);
 
        return 0;
 }
@@ -147,6 +158,8 @@ static int wiimod_rumble_play(struct input_dev *dev, void *data,
 static int wiimod_rumble_probe(const struct wiimod_ops *ops,
                               struct wiimote_data *wdata)
 {
+       INIT_WORK(&wdata->rumble_worker, wiimod_rumble_worker);
+
        set_bit(FF_RUMBLE, wdata->input->ffbit);
        if (input_ff_create_memless(wdata->input, NULL, wiimod_rumble_play))
                return -ENOMEM;
@@ -159,6 +172,8 @@ static void wiimod_rumble_remove(const struct wiimod_ops *ops,
 {
        unsigned long flags;
 
+       cancel_work_sync(&wdata->rumble_worker);
+
        spin_lock_irqsave(&wdata->state.lock, flags);
        wiiproto_req_rumble(wdata, 0);
        spin_unlock_irqrestore(&wdata->state.lock, flags);
@@ -1731,7 +1746,6 @@ static int wiimod_pro_play(struct input_dev *dev, void *data,
 {
        struct wiimote_data *wdata = input_get_drvdata(dev);
        __u8 value;
-       unsigned long flags;
 
        /*
         * The wiimote supports only a single rumble motor so if any magnitude
@@ -1744,9 +1758,10 @@ static int wiimod_pro_play(struct input_dev *dev, void *data,
        else
                value = 0;
 
-       spin_lock_irqsave(&wdata->state.lock, flags);
-       wiiproto_req_rumble(wdata, value);
-       spin_unlock_irqrestore(&wdata->state.lock, flags);
+       /* Locking state.lock here might deadlock with input_event() calls.
+        * schedule_work acts as barrier. Merging multiple changes is fine. */
+       wdata->state.cache_rumble = value;
+       schedule_work(&wdata->rumble_worker);
 
        return 0;
 }
@@ -1756,6 +1771,8 @@ static int wiimod_pro_probe(const struct wiimod_ops *ops,
 {
        int ret, i;
 
+       INIT_WORK(&wdata->rumble_worker, wiimod_rumble_worker);
+
        wdata->extension.input = input_allocate_device();
        if (!wdata->extension.input)
                return -ENOMEM;
@@ -1817,12 +1834,13 @@ static void wiimod_pro_remove(const struct wiimod_ops *ops,
        if (!wdata->extension.input)
                return;
 
+       input_unregister_device(wdata->extension.input);
+       wdata->extension.input = NULL;
+       cancel_work_sync(&wdata->rumble_worker);
+
        spin_lock_irqsave(&wdata->state.lock, flags);
        wiiproto_req_rumble(wdata, 0);
        spin_unlock_irqrestore(&wdata->state.lock, flags);
-
-       input_unregister_device(wdata->extension.input);
-       wdata->extension.input = NULL;
 }
 
 static const struct wiimod_ops wiimod_pro = {
index f1474f372c0bba1c56b3f7bd0c5eda82be29ef85..75db0c4000377f03bf262eb66a5492046aa012c8 100644 (file)
@@ -133,13 +133,15 @@ struct wiimote_state {
        __u8 *cmd_read_buf;
        __u8 cmd_read_size;
 
-       /* calibration data */
+       /* calibration/cache data */
        __u16 calib_bboard[4][3];
+       __u8 cache_rumble;
 };
 
 struct wiimote_data {
        struct hid_device *hdev;
        struct input_dev *input;
+       struct work_struct rumble_worker;
        struct led_classdev *leds[4];
        struct input_dev *accel;
        struct input_dev *ir;
index 8918dd12bb6915d08ab588e04b22b64a24d6e827..6a6dd5cd783343c0804f26311674458a19d6519b 100644 (file)
@@ -308,18 +308,25 @@ static int hidraw_fasync(int fd, struct file *file, int on)
 static void drop_ref(struct hidraw *hidraw, int exists_bit)
 {
        if (exists_bit) {
-               hid_hw_close(hidraw->hid);
                hidraw->exist = 0;
-               if (hidraw->open)
+               if (hidraw->open) {
+                       hid_hw_close(hidraw->hid);
                        wake_up_interruptible(&hidraw->wait);
+               }
        } else {
                --hidraw->open;
        }
-
-       if (!hidraw->open && !hidraw->exist) {
-               device_destroy(hidraw_class, MKDEV(hidraw_major, hidraw->minor));
-               hidraw_table[hidraw->minor] = NULL;
-               kfree(hidraw);
+       if (!hidraw->open) {
+               if (!hidraw->exist) {
+                       device_destroy(hidraw_class,
+                                       MKDEV(hidraw_major, hidraw->minor));
+                       hidraw_table[hidraw->minor] = NULL;
+                       kfree(hidraw);
+               } else {
+                       /* close device for last reader */
+                       hid_hw_power(hidraw->hid, PM_HINT_NORMAL);
+                       hid_hw_close(hidraw->hid);
+               }
        }
 }
 
index 5bf2fb785844919bbc27ad20160b98a998102aa5..93b00d76374cee2b82be0a9deab2a0f8d7c6755b 100644 (file)
@@ -615,7 +615,7 @@ static const struct file_operations uhid_fops = {
 
 static struct miscdevice uhid_misc = {
        .fops           = &uhid_fops,
-       .minor          = MISC_DYNAMIC_MINOR,
+       .minor          = UHID_MINOR,
        .name           = UHID_NAME,
 };
 
@@ -634,4 +634,5 @@ module_exit(uhid_exit);
 MODULE_LICENSE("GPL");
 MODULE_AUTHOR("David Herrmann <dh.herrmann@gmail.com>");
 MODULE_DESCRIPTION("User-space I/O driver support for HID subsystem");
+MODULE_ALIAS_MISCDEV(UHID_MINOR);
 MODULE_ALIAS("devname:" UHID_NAME);
index 98814d12a6040e00a9a56d80686d9392c78b3765..3288f13d2d871679b5eac9d6dd019675ede3c0d5 100644 (file)
@@ -230,6 +230,7 @@ static int send_argument(const char *key)
 
 static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
 {
+       u8 status, data = 0;
        int i;
 
        if (send_command(cmd) || send_argument(key)) {
@@ -237,6 +238,7 @@ static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
                return -EIO;
        }
 
+       /* This has no effect on newer (2012) SMCs */
        if (send_byte(len, APPLESMC_DATA_PORT)) {
                pr_warn("%.4s: read len fail\n", key);
                return -EIO;
@@ -250,6 +252,17 @@ static int read_smc(u8 cmd, const char *key, u8 *buffer, u8 len)
                buffer[i] = inb(APPLESMC_DATA_PORT);
        }
 
+       /* Read the data port until bit0 is cleared */
+       for (i = 0; i < 16; i++) {
+               udelay(APPLESMC_MIN_WAIT);
+               status = inb(APPLESMC_CMD_PORT);
+               if (!(status & 0x01))
+                       break;
+               data = inb(APPLESMC_DATA_PORT);
+       }
+       if (i)
+               pr_warn("flushed %d bytes, last value is: %d\n", i, data);
+
        return 0;
 }
 
index 4c1b60539a2515c34ee4df0e7c353dbd7860dc56..0aa01136f8d955148d984ac00e06ffb9e8ce1196 100644 (file)
@@ -270,7 +270,8 @@ static SIMPLE_DEV_PM_OPS(dw_i2c_dev_pm_ops, dw_i2c_suspend, dw_i2c_resume);
 MODULE_ALIAS("platform:i2c_designware");
 
 static struct platform_driver dw_i2c_driver = {
-       .remove         = dw_i2c_remove,
+       .probe = dw_i2c_probe,
+       .remove = dw_i2c_remove,
        .driver         = {
                .name   = "i2c_designware",
                .owner  = THIS_MODULE,
@@ -282,7 +283,7 @@ static struct platform_driver dw_i2c_driver = {
 
 static int __init dw_i2c_init_driver(void)
 {
-       return platform_driver_probe(&dw_i2c_driver, dw_i2c_probe);
+       return platform_driver_register(&dw_i2c_driver);
 }
 subsys_initcall(dw_i2c_init_driver);
 
index ccf46656bdad9182e2d75d6c1f3dbf42ea0c32c6..1d7efa3169cd772ed2ba580b0c8cfd149eee09d5 100644 (file)
@@ -365,7 +365,7 @@ static void i2c_imx_stop(struct imx_i2c_struct *i2c_imx)
        clk_disable_unprepare(i2c_imx->clk);
 }
 
-static void __init i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx,
+static void i2c_imx_set_clk(struct imx_i2c_struct *i2c_imx,
                                                        unsigned int rate)
 {
        struct imx_i2c_clk_pair *i2c_clk_div = i2c_imx->hwdata->clk_div;
@@ -589,7 +589,7 @@ static struct i2c_algorithm i2c_imx_algo = {
        .functionality  = i2c_imx_func,
 };
 
-static int __init i2c_imx_probe(struct platform_device *pdev)
+static int i2c_imx_probe(struct platform_device *pdev)
 {
        const struct of_device_id *of_id = of_match_device(i2c_imx_dt_ids,
                                                           &pdev->dev);
@@ -697,7 +697,7 @@ static int __init i2c_imx_probe(struct platform_device *pdev)
        return 0;   /* Return OK */
 }
 
-static int __exit i2c_imx_remove(struct platform_device *pdev)
+static int i2c_imx_remove(struct platform_device *pdev)
 {
        struct imx_i2c_struct *i2c_imx = platform_get_drvdata(pdev);
 
@@ -715,7 +715,8 @@ static int __exit i2c_imx_remove(struct platform_device *pdev)
 }
 
 static struct platform_driver i2c_imx_driver = {
-       .remove         = __exit_p(i2c_imx_remove),
+       .probe = i2c_imx_probe,
+       .remove = i2c_imx_remove,
        .driver = {
                .name   = DRIVER_NAME,
                .owner  = THIS_MODULE,
@@ -726,7 +727,7 @@ static struct platform_driver i2c_imx_driver = {
 
 static int __init i2c_adap_imx_init(void)
 {
-       return platform_driver_probe(&i2c_imx_driver, i2c_imx_probe);
+       return platform_driver_register(&i2c_imx_driver);
 }
 subsys_initcall(i2c_adap_imx_init);
 
index f4a01675fa71b4a18ac2b35714425be363442528..b7c857774708d369931abb733b9675500b9138bd 100644 (file)
@@ -780,12 +780,13 @@ static struct platform_driver mxs_i2c_driver = {
                   .owner = THIS_MODULE,
                   .of_match_table = mxs_i2c_dt_ids,
                   },
+       .probe = mxs_i2c_probe,
        .remove = mxs_i2c_remove,
 };
 
 static int __init mxs_i2c_init(void)
 {
-       return platform_driver_probe(&mxs_i2c_driver, mxs_i2c_probe);
+       return platform_driver_register(&mxs_i2c_driver);
 }
 subsys_initcall(mxs_i2c_init);
 
index 6d8308d5dc4e915c4584e2d5d9b3e5690882a2b9..9967a6f9c2ffba2fe4521a8abf19b49e978110a4 100644 (file)
@@ -939,6 +939,9 @@ omap_i2c_isr_thread(int this_irq, void *dev_id)
                /*
                 * ProDB0017052: Clear ARDY bit twice
                 */
+               if (stat & OMAP_I2C_STAT_ARDY)
+                       omap_i2c_ack_stat(dev, OMAP_I2C_STAT_ARDY);
+
                if (stat & (OMAP_I2C_STAT_ARDY | OMAP_I2C_STAT_NACK |
                                        OMAP_I2C_STAT_AL)) {
                        omap_i2c_ack_stat(dev, (OMAP_I2C_STAT_RRDY |
index f8f6f2e552db29e344b41f4e42d0cbc1ac9fc000..04a17b9b38bbbb9f54cd8cb91ce2888aac95a478 100644 (file)
@@ -859,8 +859,7 @@ static const struct i2c_algorithm stu300_algo = {
        .functionality  = stu300_func,
 };
 
-static int __init
-stu300_probe(struct platform_device *pdev)
+static int stu300_probe(struct platform_device *pdev)
 {
        struct stu300_dev *dev;
        struct i2c_adapter *adap;
@@ -966,8 +965,7 @@ static SIMPLE_DEV_PM_OPS(stu300_pm, stu300_suspend, stu300_resume);
 #define STU300_I2C_PM  NULL
 #endif
 
-static int __exit
-stu300_remove(struct platform_device *pdev)
+static int stu300_remove(struct platform_device *pdev)
 {
        struct stu300_dev *dev = platform_get_drvdata(pdev);
 
@@ -989,13 +987,14 @@ static struct platform_driver stu300_i2c_driver = {
                .pm     = STU300_I2C_PM,
                .of_match_table = stu300_dt_match,
        },
-       .remove         = __exit_p(stu300_remove),
+       .probe = stu300_probe,
+       .remove = stu300_remove,
 
 };
 
 static int __init stu300_init(void)
 {
-       return platform_driver_probe(&stu300_i2c_driver, stu300_probe);
+       return platform_driver_register(&stu300_i2c_driver);
 }
 
 static void __exit stu300_exit(void)
index 29d3f045a2bfbc688beeb79f888cb72d10c3bcd2..3be58f89ac774962db749fcdea5c032e28edce0d 100644 (file)
@@ -1134,6 +1134,9 @@ static void acpi_i2c_register_devices(struct i2c_adapter *adap)
        acpi_handle handle;
        acpi_status status;
 
+       if (!adap->dev.parent)
+               return;
+
        handle = ACPI_HANDLE(adap->dev.parent);
        if (!handle)
                return;
index 74b41ae690f3e6dab7271319ed62c436ac30935a..928656e241ddc0873613dd7a5b786be4f0e5250e 100644 (file)
@@ -200,7 +200,7 @@ static int i2c_arbitrator_probe(struct platform_device *pdev)
        arb->parent = of_find_i2c_adapter_by_node(parent_np);
        if (!arb->parent) {
                dev_err(dev, "Cannot find parent bus\n");
-               return -EINVAL;
+               return -EPROBE_DEFER;
        }
 
        /* Actually add the mux adapter */
index 5d4a99ba743e39b21a9483ce2a15aabb41a84934..a764da777f08027da102e244556f9bb424b59494 100644 (file)
@@ -66,7 +66,7 @@ static int i2c_mux_gpio_probe_dt(struct gpiomux *mux,
        struct device_node *adapter_np, *child;
        struct i2c_adapter *adapter;
        unsigned *values, *gpios;
-       int i = 0;
+       int i = 0, ret;
 
        if (!np)
                return -ENODEV;
@@ -79,7 +79,7 @@ static int i2c_mux_gpio_probe_dt(struct gpiomux *mux,
        adapter = of_find_i2c_adapter_by_node(adapter_np);
        if (!adapter) {
                dev_err(&pdev->dev, "Cannot find parent bus\n");
-               return -ENODEV;
+               return -EPROBE_DEFER;
        }
        mux->data.parent = i2c_adapter_id(adapter);
        put_device(&adapter->dev);
@@ -116,8 +116,12 @@ static int i2c_mux_gpio_probe_dt(struct gpiomux *mux,
                return -ENOMEM;
        }
 
-       for (i = 0; i < mux->data.n_gpios; i++)
-               gpios[i] = of_get_named_gpio(np, "mux-gpios", i);
+       for (i = 0; i < mux->data.n_gpios; i++) {
+               ret = of_get_named_gpio(np, "mux-gpios", i);
+               if (ret < 0)
+                       return ret;
+               gpios[i] = ret;
+       }
 
        mux->data.gpios = gpios;
 
@@ -177,7 +181,7 @@ static int i2c_mux_gpio_probe(struct platform_device *pdev)
        if (!parent) {
                dev_err(&pdev->dev, "Parent adapter (%d) not found\n",
                        mux->data.parent);
-               return -ENODEV;
+               return -EPROBE_DEFER;
        }
 
        mux->parent = parent;
index 69a91732ae6561560ca6286007a10602e0e09ba4..68a37157377df12797b1b122ca4568d121559112 100644 (file)
@@ -113,7 +113,7 @@ static int i2c_mux_pinctrl_parse_dt(struct i2c_mux_pinctrl *mux,
        adapter = of_find_i2c_adapter_by_node(adapter_np);
        if (!adapter) {
                dev_err(mux->dev, "Cannot find parent bus\n");
-               return -ENODEV;
+               return -EPROBE_DEFER;
        }
        mux->pdata->parent_bus_num = i2c_adapter_id(adapter);
        put_device(&adapter->dev);
@@ -211,7 +211,7 @@ static int i2c_mux_pinctrl_probe(struct platform_device *pdev)
        if (!mux->parent) {
                dev_err(&pdev->dev, "Parent adapter (%d) not found\n",
                        mux->pdata->parent_bus_num);
-               ret = -ENODEV;
+               ret = -EPROBE_DEFER;
                goto err;
        }
 
index fe302e33f72e7b2da024180e697422461b017bc7..c880ebaf155372eaa7460491258502c9c2d35dcd 100644 (file)
@@ -52,7 +52,7 @@ config AMD_IOMMU
        select PCI_PRI
        select PCI_PASID
        select IOMMU_API
-       depends on X86_64 && PCI && ACPI && X86_IO_APIC
+       depends on X86_64 && PCI && ACPI
        ---help---
          With this option you can enable support for AMD IOMMU hardware in
          your system. An IOMMU is a hardware component which provides
index 2bbb00404cf5001df2c6f8654de6d467d58f3b6d..8e21ae0bab4658a2ee2beb15a07a7a396411261f 100644 (file)
@@ -469,6 +469,8 @@ void __init vic_init(void __iomem *base, unsigned int irq_start,
 int __init vic_of_init(struct device_node *node, struct device_node *parent)
 {
        void __iomem *regs;
+       u32 interrupt_mask = ~0;
+       u32 wakeup_mask = ~0;
 
        if (WARN(parent, "non-root VICs are not supported"))
                return -EINVAL;
@@ -477,10 +479,13 @@ int __init vic_of_init(struct device_node *node, struct device_node *parent)
        if (WARN_ON(!regs))
                return -EIO;
 
+       of_property_read_u32(node, "valid-mask", &interrupt_mask);
+       of_property_read_u32(node, "valid-wakeup-mask", &wakeup_mask);
+
        /*
         * Passing 0 as first IRQ makes the simple domain allocate descriptors
         */
-       __vic_init(regs, 0, ~0, ~0, node);
+       __vic_init(regs, 0, interrupt_mask, wakeup_mask, node);
 
        return 0;
 }
index 71eb233b9ace7a23f143170e8f4cc924a2a1de9a..b6a74bcbb08f8800bae2aa57888498a46eb85f69 100644 (file)
@@ -996,6 +996,7 @@ static void request_write(struct cached_dev *dc, struct search *s)
                closure_bio_submit(bio, cl, s->d);
        } else {
                bch_writeback_add(dc);
+               s->op.cache_bio = bio;
 
                if (bio->bi_rw & REQ_FLUSH) {
                        /* Also need to send a flush to the backing device */
@@ -1008,8 +1009,6 @@ static void request_write(struct cached_dev *dc, struct search *s)
                        flush->bi_private = cl;
 
                        closure_bio_submit(flush, cl, s->d);
-               } else {
-                       s->op.cache_bio = bio;
                }
        }
 out:
index 53f371dcbb6e96550537b108fffbba1c00af3015..b9ce60c301de026bba38daf276e83773c44379ec 100644 (file)
@@ -480,7 +480,6 @@ static struct clk_mgt clk_mgt[PRCMU_NUM_REG_CLOCKS] = {
        CLK_MGT_ENTRY(PER6CLK, PLL_DIV, true),
        CLK_MGT_ENTRY(PER7CLK, PLL_DIV, true),
        CLK_MGT_ENTRY(LCDCLK, PLL_FIX, true),
-       CLK_MGT_ENTRY(BML8580CLK, PLL_DIV, true),
        CLK_MGT_ENTRY(BMLCLK, PLL_DIV, true),
        CLK_MGT_ENTRY(HSITXCLK, PLL_DIV, true),
        CLK_MGT_ENTRY(HSIRXCLK, PLL_DIV, true),
index 4f6f0fa5d3b7768d4265b632f4e1620be22c347b..7cc32a8ff01c01b06e8d29ae44134253d81828ba 100644 (file)
@@ -32,7 +32,6 @@
 #define PRCM_PER7CLK_MGT       (0x040)
 #define PRCM_LCDCLK_MGT                (0x044)
 #define PRCM_BMLCLK_MGT                (0x04C)
-#define PRCM_BML8580CLK_MGT    (0x108)
 #define PRCM_HSITXCLK_MGT      (0x050)
 #define PRCM_HSIRXCLK_MGT      (0x054)
 #define PRCM_HDMICLK_MGT       (0x058)
index 26b14f9fcac6d129c3a2bc5c7a9fa7baea234691..6bc9618af0942528d67e7846810adf7c2288b75a 100644 (file)
@@ -168,12 +168,25 @@ static inline int write_disable(struct m25p *flash)
  */
 static inline int set_4byte(struct m25p *flash, u32 jedec_id, int enable)
 {
+       int status;
+       bool need_wren = false;
+
        switch (JEDEC_MFR(jedec_id)) {
-       case CFI_MFR_MACRONIX:
        case CFI_MFR_ST: /* Micron, actually */
+               /* Some Micron need WREN command; all will accept it */
+               need_wren = true;
+       case CFI_MFR_MACRONIX:
        case 0xEF /* winbond */:
+               if (need_wren)
+                       write_enable(flash);
+
                flash->command[0] = enable ? OPCODE_EN4B : OPCODE_EX4B;
-               return spi_write(flash->spi, flash->command, 1);
+               status = spi_write(flash->spi, flash->command, 1);
+
+               if (need_wren)
+                       write_disable(flash);
+
+               return status;
        default:
                /* Spansion style */
                flash->command[0] = OPCODE_BRWR;
index 7ed4841327f2d7668e51c75645628f2127589f82..d340b2f198c614b72fc68eed945a8c1a662d147c 100644 (file)
@@ -2869,10 +2869,8 @@ static int nand_flash_detect_ext_param_page(struct mtd_info *mtd,
 
        len = le16_to_cpu(p->ext_param_page_length) * 16;
        ep = kmalloc(len, GFP_KERNEL);
-       if (!ep) {
-               ret = -ENOMEM;
-               goto ext_out;
-       }
+       if (!ep)
+               return -ENOMEM;
 
        /* Send our own NAND_CMD_PARAM. */
        chip->cmdfunc(mtd, NAND_CMD_PARAM, 0, -1);
@@ -2920,7 +2918,7 @@ static int nand_flash_detect_ext_param_page(struct mtd_info *mtd,
        }
 
        pr_info("ONFI extended param page detected.\n");
-       return 0;
+       ret = 0;
 
 ext_out:
        kfree(ep);
index a82ace4d9a20975ee7ddc44fd7632191316c3eb9..0846922b2316d0774e4f154aee45256c6019a41a 100644 (file)
 #include <linux/slab.h>
 #include <linux/err.h>
 #include <linux/list.h>
+#include <linux/interrupt.h>
+
+#include <linux/irqchip/chained_irq.h>
 
 #include <linux/of.h>
 #include <linux/of_device.h>
 #include <linux/of_address.h>
+#include <linux/of_irq.h>
 
 #include <linux/pinctrl/pinctrl.h>
 #include <linux/pinctrl/pinmux.h>
 #include <linux/pinctrl/pinconf-generic.h>
 
+#include <linux/platform_data/pinctrl-single.h>
+
 #include "core.h"
 #include "pinconf.h"
 
@@ -149,6 +155,22 @@ struct pcs_name {
        char name[PCS_REG_NAME_LEN];
 };
 
+/**
+ * struct pcs_soc_data - SoC specific settings
+ * @flags:     initial SoC specific PCS_FEAT_xxx values
+ * @irq:       optional interrupt for the controller
+ * @irq_enable_mask:   optional SoC specific interrupt enable mask
+ * @irq_status_mask:   optional SoC specific interrupt status mask
+ * @rearm:     optional SoC specific wake-up rearm function
+ */
+struct pcs_soc_data {
+       unsigned flags;
+       int irq;
+       unsigned irq_enable_mask;
+       unsigned irq_status_mask;
+       void (*rearm)(void);
+};
+
 /**
  * struct pcs_device - pinctrl device instance
  * @res:       resources
@@ -156,13 +178,14 @@ struct pcs_name {
  * @size:      size of the ioremapped area
  * @dev:       device entry
  * @pctl:      pin controller device
+ * @flags:     mask of PCS_FEAT_xxx values
+ * @lock:      spinlock for register access
  * @mutex:     mutex protecting the lists
  * @width:     bits per mux register
  * @fmask:     function register mask
  * @fshift:    function register shift
  * @foff:      value to turn mux off
  * @fmax:      max number of functions in fmask
- * @is_pinconf:        whether supports pinconf
  * @bits_per_pin:number of bits per pin
  * @names:     array of register names for pins
  * @pins:      physical pins on the SoC
@@ -171,6 +194,9 @@ struct pcs_name {
  * @pingroups: list of pingroups
  * @functions: list of functions
  * @gpiofuncs: list of gpio functions
+ * @irqs:      list of interrupt registers
+ * @chip:      chip container for this instance
+ * @domain:    IRQ domain for this instance
  * @ngroups:   number of pingroups
  * @nfuncs:    number of functions
  * @desc:      pin controller descriptor
@@ -183,6 +209,12 @@ struct pcs_device {
        unsigned size;
        struct device *dev;
        struct pinctrl_dev *pctl;
+       unsigned flags;
+#define PCS_QUIRK_SHARED_IRQ   (1 << 2)
+#define PCS_FEAT_IRQ           (1 << 1)
+#define PCS_FEAT_PINCONF       (1 << 0)
+       struct pcs_soc_data socdata;
+       raw_spinlock_t lock;
        struct mutex mutex;
        unsigned width;
        unsigned fmask;
@@ -190,7 +222,6 @@ struct pcs_device {
        unsigned foff;
        unsigned fmax;
        bool bits_per_mux;
-       bool is_pinconf;
        unsigned bits_per_pin;
        struct pcs_name *names;
        struct pcs_data pins;
@@ -199,6 +230,9 @@ struct pcs_device {
        struct list_head pingroups;
        struct list_head functions;
        struct list_head gpiofuncs;
+       struct list_head irqs;
+       struct irq_chip chip;
+       struct irq_domain *domain;
        unsigned ngroups;
        unsigned nfuncs;
        struct pinctrl_desc desc;
@@ -206,6 +240,10 @@ struct pcs_device {
        void (*write)(unsigned val, void __iomem *reg);
 };
 
+#define PCS_QUIRK_HAS_SHARED_IRQ       (pcs->flags & PCS_QUIRK_SHARED_IRQ)
+#define PCS_HAS_IRQ            (pcs->flags & PCS_FEAT_IRQ)
+#define PCS_HAS_PINCONF                (pcs->flags & PCS_FEAT_PINCONF)
+
 static int pcs_pinconf_get(struct pinctrl_dev *pctldev, unsigned pin,
                           unsigned long *config);
 static int pcs_pinconf_set(struct pinctrl_dev *pctldev, unsigned pin,
@@ -429,9 +467,11 @@ static int pcs_enable(struct pinctrl_dev *pctldev, unsigned fselector,
 
        for (i = 0; i < func->nvals; i++) {
                struct pcs_func_vals *vals;
+               unsigned long flags;
                unsigned val, mask;
 
                vals = &func->vals[i];
+               raw_spin_lock_irqsave(&pcs->lock, flags);
                val = pcs->read(vals->reg);
 
                if (pcs->bits_per_mux)
@@ -442,6 +482,7 @@ static int pcs_enable(struct pinctrl_dev *pctldev, unsigned fselector,
                val &= ~mask;
                val |= (vals->val & mask);
                pcs->write(val, vals->reg);
+               raw_spin_unlock_irqrestore(&pcs->lock, flags);
        }
 
        return 0;
@@ -483,13 +524,16 @@ static void pcs_disable(struct pinctrl_dev *pctldev, unsigned fselector,
 
        for (i = 0; i < func->nvals; i++) {
                struct pcs_func_vals *vals;
+               unsigned long flags;
                unsigned val;
 
                vals = &func->vals[i];
+               raw_spin_lock_irqsave(&pcs->lock, flags);
                val = pcs->read(vals->reg);
                val &= ~pcs->fmask;
                val |= pcs->foff << pcs->fshift;
                pcs->write(val, vals->reg);
+               raw_spin_unlock_irqrestore(&pcs->lock, flags);
        }
 }
 
@@ -1060,7 +1104,7 @@ static int pcs_parse_pinconf(struct pcs_device *pcs, struct device_node *np,
        };
 
        /* If pinconf isn't supported, don't parse properties in below. */
-       if (!pcs->is_pinconf)
+       if (!PCS_HAS_PINCONF)
                return 0;
 
        /* cacluate how much properties are supported in current node */
@@ -1184,7 +1228,7 @@ static int pcs_parse_one_pinctrl_entry(struct pcs_device *pcs,
        (*map)->data.mux.group = np->name;
        (*map)->data.mux.function = np->name;
 
-       if (pcs->is_pinconf) {
+       if (PCS_HAS_PINCONF) {
                res = pcs_parse_pinconf(pcs, np, function, map);
                if (res)
                        goto free_pingroups;
@@ -1305,7 +1349,7 @@ static int pcs_parse_bits_in_pinctrl_entry(struct pcs_device *pcs,
        (*map)->data.mux.group = np->name;
        (*map)->data.mux.function = np->name;
 
-       if (pcs->is_pinconf) {
+       if (PCS_HAS_PINCONF) {
                dev_err(pcs->dev, "pinconf not supported\n");
                goto free_pingroups;
        }
@@ -1439,12 +1483,34 @@ static void pcs_free_pingroups(struct pcs_device *pcs)
        mutex_unlock(&pcs->mutex);
 }
 
+/**
+ * pcs_irq_free() - free interrupt
+ * @pcs: pcs driver instance
+ */
+static void pcs_irq_free(struct pcs_device *pcs)
+{
+       struct pcs_soc_data *pcs_soc = &pcs->socdata;
+
+       if (pcs_soc->irq < 0)
+               return;
+
+       if (pcs->domain)
+               irq_domain_remove(pcs->domain);
+
+       if (PCS_QUIRK_HAS_SHARED_IRQ)
+               free_irq(pcs_soc->irq, pcs_soc);
+       else
+               irq_set_chained_handler(pcs_soc->irq, NULL);
+}
+
 /**
  * pcs_free_resources() - free memory used by this driver
  * @pcs: pcs driver instance
  */
 static void pcs_free_resources(struct pcs_device *pcs)
 {
+       pcs_irq_free(pcs);
+
        if (pcs->pctl)
                pinctrl_unregister(pcs->pctl);
 
@@ -1493,6 +1559,268 @@ static int pcs_add_gpio_func(struct device_node *node, struct pcs_device *pcs)
        }
        return ret;
 }
+/**
+ * @reg:       virtual address of interrupt register
+ * @hwirq:     hardware irq number
+ * @irq:       virtual irq number
+ * @node:      list node
+ */
+struct pcs_interrupt {
+       void __iomem *reg;
+       irq_hw_number_t hwirq;
+       unsigned int irq;
+       struct list_head node;
+};
+
+/**
+ * pcs_irq_set() - enables or disables an interrupt
+ *
+ * Note that this currently assumes one interrupt per pinctrl
+ * register that is typically used for wake-up events.
+ */
+static inline void pcs_irq_set(struct pcs_soc_data *pcs_soc,
+                              int irq, const bool enable)
+{
+       struct pcs_device *pcs;
+       struct list_head *pos;
+       unsigned mask;
+
+       pcs = container_of(pcs_soc, struct pcs_device, socdata);
+       list_for_each(pos, &pcs->irqs) {
+               struct pcs_interrupt *pcswi;
+               unsigned soc_mask;
+
+               pcswi = list_entry(pos, struct pcs_interrupt, node);
+               if (irq != pcswi->irq)
+                       continue;
+
+               soc_mask = pcs_soc->irq_enable_mask;
+               raw_spin_lock(&pcs->lock);
+               mask = pcs->read(pcswi->reg);
+               if (enable)
+                       mask |= soc_mask;
+               else
+                       mask &= ~soc_mask;
+               pcs->write(mask, pcswi->reg);
+               raw_spin_unlock(&pcs->lock);
+       }
+}
+
+/**
+ * pcs_irq_mask() - mask pinctrl interrupt
+ * @d: interrupt data
+ */
+static void pcs_irq_mask(struct irq_data *d)
+{
+       struct pcs_soc_data *pcs_soc = irq_data_get_irq_chip_data(d);
+
+       pcs_irq_set(pcs_soc, d->irq, false);
+}
+
+/**
+ * pcs_irq_unmask() - unmask pinctrl interrupt
+ * @d: interrupt data
+ */
+static void pcs_irq_unmask(struct irq_data *d)
+{
+       struct pcs_soc_data *pcs_soc = irq_data_get_irq_chip_data(d);
+
+       pcs_irq_set(pcs_soc, d->irq, true);
+       if (pcs_soc->rearm)
+               pcs_soc->rearm();
+}
+
+/**
+ * pcs_irq_set_wake() - toggle the suspend and resume wake up
+ * @d: interrupt data
+ * @state: wake-up state
+ *
+ * Note that this should be called only for suspend and resume.
+ * For runtime PM, the wake-up events should be enabled by default.
+ */
+static int pcs_irq_set_wake(struct irq_data *d, unsigned int state)
+{
+       if (state)
+               pcs_irq_unmask(d);
+       else
+               pcs_irq_mask(d);
+
+       return 0;
+}
+
+/**
+ * pcs_irq_handle() - common interrupt handler
+ * @pcs_irq: interrupt data
+ *
+ * Note that this currently assumes we have one interrupt bit per
+ * mux register. This interrupt is typically used for wake-up events.
+ * For more complex interrupts different handlers can be specified.
+ */
+static int pcs_irq_handle(struct pcs_soc_data *pcs_soc)
+{
+       struct pcs_device *pcs;
+       struct list_head *pos;
+       int count = 0;
+
+       pcs = container_of(pcs_soc, struct pcs_device, socdata);
+       list_for_each(pos, &pcs->irqs) {
+               struct pcs_interrupt *pcswi;
+               unsigned mask;
+
+               pcswi = list_entry(pos, struct pcs_interrupt, node);
+               raw_spin_lock(&pcs->lock);
+               mask = pcs->read(pcswi->reg);
+               raw_spin_unlock(&pcs->lock);
+               if (mask & pcs_soc->irq_status_mask) {
+                       generic_handle_irq(irq_find_mapping(pcs->domain,
+                                                           pcswi->hwirq));
+                       count++;
+               }
+       }
+
+       /*
+        * For debugging on omaps, you may want to call pcs_soc->rearm()
+        * here to see wake-up interrupts during runtime also.
+        */
+
+       return count;
+}
+
+/**
+ * pcs_irq_handler() - handler for the shared interrupt case
+ * @irq: interrupt
+ * @d: data
+ *
+ * Use this for cases where multiple instances of
+ * pinctrl-single share a single interrupt like on omaps.
+ */
+static irqreturn_t pcs_irq_handler(int irq, void *d)
+{
+       struct pcs_soc_data *pcs_soc = d;
+
+       return pcs_irq_handle(pcs_soc) ? IRQ_HANDLED : IRQ_NONE;
+}
+
+/**
+ * pcs_irq_handle() - handler for the dedicated chained interrupt case
+ * @irq: interrupt
+ * @desc: interrupt descriptor
+ *
+ * Use this if you have a separate interrupt for each
+ * pinctrl-single instance.
+ */
+static void pcs_irq_chain_handler(unsigned int irq, struct irq_desc *desc)
+{
+       struct pcs_soc_data *pcs_soc = irq_desc_get_handler_data(desc);
+       struct irq_chip *chip;
+       int res;
+
+       chip = irq_get_chip(irq);
+       chained_irq_enter(chip, desc);
+       res = pcs_irq_handle(pcs_soc);
+       /* REVISIT: export and add handle_bad_irq(irq, desc)? */
+       chained_irq_exit(chip, desc);
+
+       return;
+}
+
+static int pcs_irqdomain_map(struct irq_domain *d, unsigned int irq,
+                            irq_hw_number_t hwirq)
+{
+       struct pcs_soc_data *pcs_soc = d->host_data;
+       struct pcs_device *pcs;
+       struct pcs_interrupt *pcswi;
+
+       pcs = container_of(pcs_soc, struct pcs_device, socdata);
+       pcswi = devm_kzalloc(pcs->dev, sizeof(*pcswi), GFP_KERNEL);
+       if (!pcswi)
+               return -ENOMEM;
+
+       pcswi->reg = pcs->base + hwirq;
+       pcswi->hwirq = hwirq;
+       pcswi->irq = irq;
+
+       mutex_lock(&pcs->mutex);
+       list_add_tail(&pcswi->node, &pcs->irqs);
+       mutex_unlock(&pcs->mutex);
+
+       irq_set_chip_data(irq, pcs_soc);
+       irq_set_chip_and_handler(irq, &pcs->chip,
+                                handle_level_irq);
+
+#ifdef CONFIG_ARM
+       set_irq_flags(irq, IRQF_VALID);
+#else
+       irq_set_noprobe(irq);
+#endif
+
+       return 0;
+}
+
+static struct irq_domain_ops pcs_irqdomain_ops = {
+       .map = pcs_irqdomain_map,
+       .xlate = irq_domain_xlate_onecell,
+};
+
+/**
+ * pcs_irq_init_chained_handler() - set up a chained interrupt handler
+ * @pcs: pcs driver instance
+ * @np: device node pointer
+ */
+static int pcs_irq_init_chained_handler(struct pcs_device *pcs,
+                                       struct device_node *np)
+{
+       struct pcs_soc_data *pcs_soc = &pcs->socdata;
+       const char *name = "pinctrl";
+       int num_irqs;
+
+       if (!pcs_soc->irq_enable_mask ||
+           !pcs_soc->irq_status_mask) {
+               pcs_soc->irq = -1;
+               return -EINVAL;
+       }
+
+       INIT_LIST_HEAD(&pcs->irqs);
+       pcs->chip.name = name;
+       pcs->chip.irq_ack = pcs_irq_mask;
+       pcs->chip.irq_mask = pcs_irq_mask;
+       pcs->chip.irq_unmask = pcs_irq_unmask;
+       pcs->chip.irq_set_wake = pcs_irq_set_wake;
+
+       if (PCS_QUIRK_HAS_SHARED_IRQ) {
+               int res;
+
+               res = request_irq(pcs_soc->irq, pcs_irq_handler,
+                                 IRQF_SHARED | IRQF_NO_SUSPEND,
+                                 name, pcs_soc);
+               if (res) {
+                       pcs_soc->irq = -1;
+                       return res;
+               }
+       } else {
+               irq_set_handler_data(pcs_soc->irq, pcs_soc);
+               irq_set_chained_handler(pcs_soc->irq,
+                                       pcs_irq_chain_handler);
+       }
+
+       /*
+        * We can use the register offset as the hardirq
+        * number as irq_domain_add_simple maps them lazily.
+        * This way we can easily support more than one
+        * interrupt per function if needed.
+        */
+       num_irqs = pcs->size;
+
+       pcs->domain = irq_domain_add_simple(np, num_irqs, 0,
+                                           &pcs_irqdomain_ops,
+                                           pcs_soc);
+       if (!pcs->domain) {
+               irq_set_chained_handler(pcs_soc->irq, NULL);
+               return -EINVAL;
+       }
+
+       return 0;
+}
 
 #ifdef CONFIG_PM
 static int pinctrl_single_suspend(struct platform_device *pdev,
@@ -1523,8 +1851,10 @@ static int pcs_probe(struct platform_device *pdev)
 {
        struct device_node *np = pdev->dev.of_node;
        const struct of_device_id *match;
+       struct pcs_pdata *pdata;
        struct resource *res;
        struct pcs_device *pcs;
+       const struct pcs_soc_data *soc;
        int ret;
 
        match = of_match_device(pcs_of_match, &pdev->dev);
@@ -1537,11 +1867,14 @@ static int pcs_probe(struct platform_device *pdev)
                return -ENOMEM;
        }
        pcs->dev = &pdev->dev;
+       raw_spin_lock_init(&pcs->lock);
        mutex_init(&pcs->mutex);
        INIT_LIST_HEAD(&pcs->pingroups);
        INIT_LIST_HEAD(&pcs->functions);
        INIT_LIST_HEAD(&pcs->gpiofuncs);
-       pcs->is_pinconf = match->data;
+       soc = match->data;
+       pcs->flags = soc->flags;
+       memcpy(&pcs->socdata, soc, sizeof(*soc));
 
        PCS_GET_PROP_U32("pinctrl-single,register-width", &pcs->width,
                         "register width not specified\n");
@@ -1610,7 +1943,7 @@ static int pcs_probe(struct platform_device *pdev)
        pcs->desc.name = DRIVER_NAME;
        pcs->desc.pctlops = &pcs_pinctrl_ops;
        pcs->desc.pmxops = &pcs_pinmux_ops;
-       if (pcs->is_pinconf)
+       if (PCS_HAS_PINCONF)
                pcs->desc.confops = &pcs_pinconf_ops;
        pcs->desc.owner = THIS_MODULE;
 
@@ -1629,6 +1962,27 @@ static int pcs_probe(struct platform_device *pdev)
        if (ret < 0)
                goto free;
 
+       pcs->socdata.irq = irq_of_parse_and_map(np, 0);
+       if (pcs->socdata.irq)
+               pcs->flags |= PCS_FEAT_IRQ;
+
+       /* We still need auxdata for some omaps for PRM interrupts */
+       pdata = dev_get_platdata(&pdev->dev);
+       if (pdata) {
+               if (pdata->rearm)
+                       pcs->socdata.rearm = pdata->rearm;
+               if (pdata->irq) {
+                       pcs->socdata.irq = pdata->irq;
+                       pcs->flags |= PCS_FEAT_IRQ;
+               }
+       }
+
+       if (PCS_HAS_IRQ) {
+               ret = pcs_irq_init_chained_handler(pcs, np);
+               if (ret < 0)
+                       dev_warn(pcs->dev, "initialized with no interrupts\n");
+       }
+
        dev_info(pcs->dev, "%i pins at pa %p size %u\n",
                 pcs->desc.npins, pcs->base, pcs->size);
 
@@ -1652,9 +2006,25 @@ static int pcs_remove(struct platform_device *pdev)
        return 0;
 }
 
+static const struct pcs_soc_data pinctrl_single_omap_wkup = {
+       .flags = PCS_QUIRK_SHARED_IRQ,
+       .irq_enable_mask = (1 << 14),   /* OMAP_WAKEUP_EN */
+       .irq_status_mask = (1 << 15),   /* OMAP_WAKEUP_EVENT */
+};
+
+static const struct pcs_soc_data pinctrl_single = {
+};
+
+static const struct pcs_soc_data pinconf_single = {
+       .flags = PCS_FEAT_PINCONF,
+};
+
 static struct of_device_id pcs_of_match[] = {
-       { .compatible = "pinctrl-single", .data = (void *)false },
-       { .compatible = "pinconf-single", .data = (void *)true },
+       { .compatible = "ti,omap3-padconf", .data = &pinctrl_single_omap_wkup },
+       { .compatible = "ti,omap4-padconf", .data = &pinctrl_single_omap_wkup },
+       { .compatible = "ti,omap5-padconf", .data = &pinctrl_single_omap_wkup },
+       { .compatible = "pinctrl-single", .data = &pinctrl_single },
+       { .compatible = "pinconf-single", .data = &pinconf_single },
        { },
 };
 MODULE_DEVICE_TABLE(of, pcs_of_match);
index 8cd34bf644b3ee4b34065814fab4300774c8ad23..77df9cb00688feeda6cad1fbfd4623fc5a26134e 100644 (file)
@@ -145,9 +145,11 @@ bool __init sclp_has_linemode(void)
 
        if (sccb->header.response_code != 0x20)
                return 0;
-       if (sccb->sclp_send_mask & (EVTYP_MSG_MASK | EVTYP_PMSGCMD_MASK))
-               return 1;
-       return 0;
+       if (!(sccb->sclp_send_mask & (EVTYP_OPCMD_MASK | EVTYP_PMSGCMD_MASK)))
+               return 0;
+       if (!(sccb->sclp_receive_mask & (EVTYP_MSG_MASK | EVTYP_PMSGCMD_MASK)))
+               return 0;
+       return 1;
 }
 
 bool __init sclp_has_vt220(void)
index a0f47c83fd62f94205a987a728edf207f86c3bc6..3f4ca4e09a4ccc4d49fba39d64094fafe1f1fdc7 100644 (file)
@@ -810,7 +810,7 @@ static void tty3270_resize_work(struct work_struct *work)
        struct winsize ws;
 
        screen = tty3270_alloc_screen(tp->n_rows, tp->n_cols);
-       if (!screen)
+       if (IS_ERR(screen))
                return;
        /* Switch to new output size */
        spin_lock_bh(&tp->view.lock);
index fd7cc566095a40cb22d27519726c4faa14a5f37d..d4ac60b4a56e8a6f4615fcac50015a06cccd53fc 100644 (file)
@@ -1583,7 +1583,7 @@ static int atmel_spi_probe(struct platform_device *pdev)
        /* Initialize the hardware */
        ret = clk_prepare_enable(clk);
        if (ret)
-               goto out_unmap_regs;
+               goto out_free_irq;
        spi_writel(as, CR, SPI_BIT(SWRST));
        spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
        if (as->caps.has_wdrbt) {
@@ -1614,6 +1614,7 @@ out_free_dma:
        spi_writel(as, CR, SPI_BIT(SWRST));
        spi_writel(as, CR, SPI_BIT(SWRST)); /* AT91SAM9263 Rev B workaround */
        clk_disable_unprepare(clk);
+out_free_irq:
        free_irq(irq, master);
 out_unmap_regs:
        iounmap(as->regs);
index 5655acf55bfe35a7d4f0fcb853e56435b4e847c9..6416798828e72bc9f5194282f55cf49a37f6809c 100644 (file)
@@ -226,7 +226,6 @@ static int spi_clps711x_probe(struct platform_device *pdev)
                               dev_name(&pdev->dev), hw);
        if (ret) {
                dev_err(&pdev->dev, "Can't request IRQ\n");
-               clk_put(hw->spi_clk);
                goto clk_out;
        }
 
@@ -247,7 +246,6 @@ err_out:
                        gpio_free(hw->chipselect[i]);
 
        spi_master_put(master);
-       kfree(master);
 
        return ret;
 }
@@ -263,7 +261,6 @@ static int spi_clps711x_remove(struct platform_device *pdev)
                        gpio_free(hw->chipselect[i]);
 
        spi_unregister_master(master);
-       kfree(master);
 
        return 0;
 }
index 6cd07d13ecab3b5fc78c263cb6220a3b0ae4ddb5..4e44575bd87a9674c72338cafe25c1b5006ef529 100644 (file)
@@ -476,15 +476,9 @@ static int dspi_probe(struct platform_device *pdev)
        master->bus_num = bus_num;
 
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               dev_err(&pdev->dev, "can't get platform resource\n");
-               ret = -EINVAL;
-               goto out_master_put;
-       }
-
        dspi->base = devm_ioremap_resource(&pdev->dev, res);
-       if (!dspi->base) {
-               ret = -EINVAL;
+       if (IS_ERR(dspi->base)) {
+               ret = PTR_ERR(dspi->base);
                goto out_master_put;
        }
 
index dbc5e999a1f5689c1a526ace9f3dc4061f924223..6adf4e35816d76c1c7f120cd924420c4c8bf71a1 100644 (file)
@@ -522,8 +522,10 @@ static int mpc512x_psc_spi_do_probe(struct device *dev, u32 regaddr,
        psc_num = master->bus_num;
        snprintf(clk_name, sizeof(clk_name), "psc%d_mclk", psc_num);
        clk = devm_clk_get(dev, clk_name);
-       if (IS_ERR(clk))
+       if (IS_ERR(clk)) {
+               ret = PTR_ERR(clk);
                goto free_irq;
+       }
        ret = clk_prepare_enable(clk);
        if (ret)
                goto free_irq;
index 2eb06ee0b3264020d040c2b1ea8bd6745656c372..c1a50674c1e359deb3e83fc2a04c9acf2324f58d 100644 (file)
@@ -546,8 +546,17 @@ static irqreturn_t ssp_int(int irq, void *dev_id)
        if (pm_runtime_suspended(&drv_data->pdev->dev))
                return IRQ_NONE;
 
-       sccr1_reg = read_SSCR1(reg);
+       /*
+        * If the device is not yet in RPM suspended state and we get an
+        * interrupt that is meant for another device, check if status bits
+        * are all set to one. That means that the device is already
+        * powered off.
+        */
        status = read_SSSR(reg);
+       if (status == ~0)
+               return IRQ_NONE;
+
+       sccr1_reg = read_SSCR1(reg);
 
        /* Ignore possible writes if we don't need to write */
        if (!(sccr1_reg & SSCR1_TIE))
index 512b8893893bd3d8349506fde7785e29591236e2..a80376dc3a102d04684f27934a42412be3e851d7 100644 (file)
@@ -1428,6 +1428,8 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
               S3C64XX_SPI_INT_TX_OVERRUN_EN | S3C64XX_SPI_INT_TX_UNDERRUN_EN,
               sdd->regs + S3C64XX_SPI_INT_EN);
 
+       pm_runtime_enable(&pdev->dev);
+
        if (spi_register_master(master)) {
                dev_err(&pdev->dev, "cannot register SPI master\n");
                ret = -EBUSY;
@@ -1440,8 +1442,6 @@ static int s3c64xx_spi_probe(struct platform_device *pdev)
                                        mem_res,
                                        sdd->rx_dma.dmach, sdd->tx_dma.dmach);
 
-       pm_runtime_enable(&pdev->dev);
-
        return 0;
 
 err3:
index 0b68cb592fa4d022bb6d3b3bc70296bcb224284b..e488a90a98b8acbfff5b1fd72dd92b54db2ae602 100644 (file)
@@ -296,6 +296,8 @@ static int hspi_probe(struct platform_device *pdev)
                goto error1;
        }
 
+       pm_runtime_enable(&pdev->dev);
+
        master->num_chipselect  = 1;
        master->bus_num         = pdev->id;
        master->setup           = hspi_setup;
@@ -309,8 +311,6 @@ static int hspi_probe(struct platform_device *pdev)
                goto error1;
        }
 
-       pm_runtime_enable(&pdev->dev);
-
        return 0;
 
  error1:
index 4919afa4125e36eaeed297277da4631cb9cb5c7b..1adff32e40e2ad9e1f204d8e975103ddbf5f7e98 100644 (file)
@@ -47,10 +47,10 @@ static void s3c2410_start_hc(struct platform_device *dev, struct usb_hcd *hcd)
 
        dev_dbg(&dev->dev, "s3c2410_start_hc:\n");
 
-       clk_enable(usb_clk);
+       clk_prepare_enable(usb_clk);
        mdelay(2);                      /* let the bus clock stabilise */
 
-       clk_enable(clk);
+       clk_prepare_enable(clk);
 
        if (info != NULL) {
                info->hcd       = hcd;
@@ -75,8 +75,8 @@ static void s3c2410_stop_hc(struct platform_device *dev)
                        (info->enable_oc)(info, 0);
        }
 
-       clk_disable(clk);
-       clk_disable(usb_clk);
+       clk_disable_unprepare(clk);
+       clk_disable_unprepare(usb_clk);
 }
 
 /* ohci_s3c2410_hub_status_data
index 59256b12f7469fe9170ec0fa7db0bee3cbbed6da..c844499e44792caaf492f5c310bc2b00245a9445 100644 (file)
@@ -259,7 +259,7 @@ static int ux500_probe(struct platform_device *pdev)
                goto err1;
        }
 
-       clk = clk_get(&pdev->dev, "usb");
+       clk = clk_get(&pdev->dev, NULL);
        if (IS_ERR(clk)) {
                dev_err(&pdev->dev, "failed to get clock\n");
                ret = PTR_ERR(clk);
index 5be5e3d14f794a3bdc446b78b5d0bb3fcb9b7fa9..19f3c3fc65f4c9af0ffa4a25cf8410e308a5fda8 100644 (file)
@@ -802,6 +802,12 @@ static int hpwdt_init_one(struct pci_dev *dev,
                return -ENODEV;
        }
 
+       /*
+        * Ignore all auxilary iLO devices with the following PCI ID
+        */
+       if (dev->subsystem_device == 0x1979)
+               return -ENODEV;
+
        if (pci_enable_device(dev)) {
                dev_warn(&dev->dev,
                        "Not possible to enable PCI Device: 0x%x:0x%x.\n",
index 491419e0772a83f89ae34f16a96750d2349407d1..5c3d4df63e6835f534cb57a3eca724ce08c3ba47 100644 (file)
@@ -35,7 +35,7 @@
 #define KEMPLD_WDT_STAGE_TIMEOUT(x)    (0x1b + (x) * 4)
 #define KEMPLD_WDT_STAGE_CFG(x)                (0x18 + (x))
 #define STAGE_CFG_GET_PRESCALER(x)     (((x) & 0x30) >> 4)
-#define STAGE_CFG_SET_PRESCALER(x)     (((x) & 0x30) << 4)
+#define STAGE_CFG_SET_PRESCALER(x)     (((x) & 0x3) << 4)
 #define STAGE_CFG_PRESCALER_MASK       0x30
 #define STAGE_CFG_ACTION_MASK          0x7
 #define STAGE_CFG_ASSERT               (1 << 3)
index 1f94b42764aabb95ab9d2cb38cda01611123df56..f6caa77151c74a4fc827d933715c92c57da5e0b7 100644 (file)
@@ -146,7 +146,7 @@ static const struct watchdog_ops sunxi_wdt_ops = {
        .set_timeout    = sunxi_wdt_set_timeout,
 };
 
-static int __init sunxi_wdt_probe(struct platform_device *pdev)
+static int sunxi_wdt_probe(struct platform_device *pdev)
 {
        struct sunxi_wdt_dev *sunxi_wdt;
        struct resource *res;
@@ -187,7 +187,7 @@ static int __init sunxi_wdt_probe(struct platform_device *pdev)
        return 0;
 }
 
-static int __exit sunxi_wdt_remove(struct platform_device *pdev)
+static int sunxi_wdt_remove(struct platform_device *pdev)
 {
        struct sunxi_wdt_dev *sunxi_wdt = platform_get_drvdata(pdev);
 
index 42913f131dc2b051cdb89db52e72726bb228dd61..c9b0c627fe7e6d8513dd4d43ba18cb65cfbba132 100644 (file)
@@ -310,7 +310,8 @@ static long ts72xx_wdt_ioctl(struct file *file, unsigned int cmd,
 
        case WDIOC_GETSTATUS:
        case WDIOC_GETBOOTSTATUS:
-               return put_user(0, p);
+               error = put_user(0, p);
+               break;
 
        case WDIOC_KEEPALIVE:
                ts72xx_wdt_kick(wdt);
index 4ae17ed13b3274f228c8879383ec5124ca5f05dd..62176ad89846173e4d4987da257166fb90b971ff 100644 (file)
@@ -1561,8 +1561,9 @@ int btrfs_insert_fs_root(struct btrfs_fs_info *fs_info,
        return ret;
 }
 
-struct btrfs_root *btrfs_read_fs_root_no_name(struct btrfs_fs_info *fs_info,
-                                             struct btrfs_key *location)
+struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info,
+                                    struct btrfs_key *location,
+                                    bool check_ref)
 {
        struct btrfs_root *root;
        int ret;
@@ -1586,7 +1587,7 @@ struct btrfs_root *btrfs_read_fs_root_no_name(struct btrfs_fs_info *fs_info,
 again:
        root = btrfs_lookup_fs_root(fs_info, location->objectid);
        if (root) {
-               if (btrfs_root_refs(&root->root_item) == 0)
+               if (check_ref && btrfs_root_refs(&root->root_item) == 0)
                        return ERR_PTR(-ENOENT);
                return root;
        }
@@ -1595,7 +1596,7 @@ again:
        if (IS_ERR(root))
                return root;
 
-       if (btrfs_root_refs(&root->root_item) == 0) {
+       if (check_ref && btrfs_root_refs(&root->root_item) == 0) {
                ret = -ENOENT;
                goto fail;
        }
index b71acd6e1e5b1941e75ed4c5c056d47268cdc407..5ce2a7da8b113fef13456687fdf4243fa9f1c2ba 100644 (file)
@@ -68,8 +68,17 @@ struct btrfs_root *btrfs_read_fs_root(struct btrfs_root *tree_root,
 int btrfs_init_fs_root(struct btrfs_root *root);
 int btrfs_insert_fs_root(struct btrfs_fs_info *fs_info,
                         struct btrfs_root *root);
-struct btrfs_root *btrfs_read_fs_root_no_name(struct btrfs_fs_info *fs_info,
-                                             struct btrfs_key *location);
+
+struct btrfs_root *btrfs_get_fs_root(struct btrfs_fs_info *fs_info,
+                                    struct btrfs_key *key,
+                                    bool check_ref);
+static inline struct btrfs_root *
+btrfs_read_fs_root_no_name(struct btrfs_fs_info *fs_info,
+                          struct btrfs_key *location)
+{
+       return btrfs_get_fs_root(fs_info, location, true);
+}
+
 int btrfs_cleanup_fs_roots(struct btrfs_fs_info *fs_info);
 void btrfs_btree_balance_dirty(struct btrfs_root *root);
 void btrfs_btree_balance_dirty_nodelay(struct btrfs_root *root);
index 22bda32acb893a09aa0a0472d8ab78c20c12fbdb..51731b76900de55e8350d5795feacc61a9050d02 100644 (file)
@@ -1490,10 +1490,8 @@ static noinline u64 find_delalloc_range(struct extent_io_tree *tree,
                cur_start = state->end + 1;
                node = rb_next(node);
                total_bytes += state->end - state->start + 1;
-               if (total_bytes >= max_bytes) {
-                       *end = *start + max_bytes - 1;
+               if (total_bytes >= max_bytes)
                        break;
-               }
                if (!node)
                        break;
        }
@@ -1635,10 +1633,9 @@ again:
 
        /*
         * make sure to limit the number of pages we try to lock down
-        * if we're looping.
         */
-       if (delalloc_end + 1 - delalloc_start > max_bytes && loops)
-               delalloc_end = delalloc_start + PAGE_CACHE_SIZE - 1;
+       if (delalloc_end + 1 - delalloc_start > max_bytes)
+               delalloc_end = delalloc_start + max_bytes - 1;
 
        /* step two, lock all the pages after the page that has start */
        ret = lock_delalloc_pages(inode, locked_page,
@@ -1649,8 +1646,7 @@ again:
                 */
                free_extent_state(cached_state);
                if (!loops) {
-                       unsigned long offset = (*start) & (PAGE_CACHE_SIZE - 1);
-                       max_bytes = PAGE_CACHE_SIZE - offset;
+                       max_bytes = PAGE_CACHE_SIZE;
                        loops = 1;
                        goto again;
                } else {
index 22ebc13b6c992a0755513253e17f9dd7f20b9706..b0ef7b07b1b3be510e85dd1bab6711e7d27cebee 100644 (file)
@@ -7986,7 +7986,7 @@ static int btrfs_rename(struct inode *old_dir, struct dentry *old_dentry,
 
 
        /* check for collisions, even if the  name isn't there */
-       ret = btrfs_check_dir_item_collision(root, new_dir->i_ino,
+       ret = btrfs_check_dir_item_collision(dest, new_dir->i_ino,
                             new_dentry->d_name.name,
                             new_dentry->d_name.len);
 
index a5a26320503fd4a82358adff8e614240373ea130..4a355726151ec05dd8e1110745648949888781e8 100644 (file)
@@ -588,7 +588,7 @@ static struct btrfs_root *read_fs_root(struct btrfs_fs_info *fs_info,
        else
                key.offset = (u64)-1;
 
-       return btrfs_read_fs_root_no_name(fs_info, &key);
+       return btrfs_get_fs_root(fs_info, &key, false);
 }
 
 #ifdef BTRFS_COMPAT_EXTENT_TREE_V0
index 0b1f4ef8db987da12951128f092a052018d5c6b9..ec71ea44d2b4626c9a2bcc73b5fb94af666eaf5b 100644 (file)
@@ -299,11 +299,6 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root)
                        continue;
                }
 
-               if (btrfs_root_refs(&root->root_item) == 0) {
-                       btrfs_add_dead_root(root);
-                       continue;
-               }
-
                err = btrfs_init_fs_root(root);
                if (err) {
                        btrfs_free_fs_root(root);
@@ -318,6 +313,9 @@ int btrfs_find_orphan_roots(struct btrfs_root *tree_root)
                        btrfs_free_fs_root(root);
                        break;
                }
+
+               if (btrfs_root_refs(&root->root_item) == 0)
+                       btrfs_add_dead_root(root);
        }
 
        btrfs_free_path(path);
index 0d424d7ac02b0a30f98e713bb10403e90ced51b5..e274e9c1171f9095829aff07224dfff650a85ed2 100644 (file)
@@ -2563,7 +2563,7 @@ retry:
                        break;
        }
        blk_finish_plug(&plug);
-       if (!ret && !cycled) {
+       if (!ret && !cycled && wbc->nr_to_write > 0) {
                cycled = 1;
                mpd.last_page = writeback_index - 1;
                mpd.first_page = 0;
index c081e34f717f6903492acd3c4bc92d26dc888e7e..03e9bebba1989ef20263fbd1656959b764927b03 100644 (file)
@@ -1350,6 +1350,8 @@ retry:
                                    s_min_extra_isize) {
                                        tried_min_extra_isize++;
                                        new_extra_isize = s_min_extra_isize;
+                                       kfree(is); is = NULL;
+                                       kfree(bs); bs = NULL;
                                        goto retry;
                                }
                                error = -1;
index c219e733f55330741962173e994ac8d4e894a70f..083dc0ac91408870254cac60ed4b06580deba610 100644 (file)
@@ -94,7 +94,7 @@ retry:
 
 int fd_statfs(int fd, struct kstatfs *st)
 {
-       struct fd f = fdget(fd);
+       struct fd f = fdget_raw(fd);
        int error = -EBADF;
        if (f.file) {
                error = vfs_statfs(&f.file->f_path, st);
diff --git a/include/dt-bindings/mfd/dbx500-prcmu.h b/include/dt-bindings/mfd/dbx500-prcmu.h
new file mode 100644 (file)
index 0000000..552a2d1
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * This header provides constants for the PRCMU bindings.
+ *
+ */
+
+#ifndef _DT_BINDINGS_MFD_PRCMU_H
+#define _DT_BINDINGS_MFD_PRCMU_H
+
+/*
+ * Clock identifiers.
+ */
+#define ARMCLK                 0
+#define PRCMU_ACLK             1
+#define PRCMU_SVAMMCSPCLK      2
+#define PRCMU_SDMMCHCLK        2  /* DBx540 only. */
+#define PRCMU_SIACLK           3
+#define PRCMU_SIAMMDSPCLK      3  /* DBx540 only. */
+#define PRCMU_SGACLK           4
+#define PRCMU_UARTCLK          5
+#define PRCMU_MSP02CLK                 6
+#define PRCMU_MSP1CLK          7
+#define PRCMU_I2CCLK           8
+#define PRCMU_SDMMCCLK                 9
+#define PRCMU_SLIMCLK          10
+#define PRCMU_CAMCLK           10 /* DBx540 only. */
+#define PRCMU_PER1CLK          11
+#define PRCMU_PER2CLK          12
+#define PRCMU_PER3CLK          13
+#define PRCMU_PER5CLK          14
+#define PRCMU_PER6CLK          15
+#define PRCMU_PER7CLK          16
+#define PRCMU_LCDCLK           17
+#define PRCMU_BMLCLK           18
+#define PRCMU_HSITXCLK                 19
+#define PRCMU_HSIRXCLK                 20
+#define PRCMU_HDMICLK          21
+#define PRCMU_APEATCLK                 22
+#define PRCMU_APETRACECLK      23
+#define PRCMU_MCDECLK                  24
+#define PRCMU_IPI2CCLK         25
+#define PRCMU_DSIALTCLK        26
+#define PRCMU_DMACLK           27
+#define PRCMU_B2R2CLK                  28
+#define PRCMU_TVCLK            29
+#define SPARE_UNIPROCLK        30
+#define PRCMU_SSPCLK           31
+#define PRCMU_RNGCLK           32
+#define PRCMU_UICCCLK                  33
+#define PRCMU_G1CLK             34 /* DBx540 only. */
+#define PRCMU_HVACLK            35 /* DBx540 only. */
+#define PRCMU_SPARE1CLK                36
+#define PRCMU_SPARE2CLK                37
+
+#define PRCMU_NUM_REG_CLOCKS   38
+
+#define PRCMU_RTCCLK           PRCMU_NUM_REG_CLOCKS
+#define PRCMU_SYSCLK           39
+#define PRCMU_CDCLK            40
+#define PRCMU_TIMCLK           41
+#define PRCMU_PLLSOC0                  42
+#define PRCMU_PLLSOC1                  43
+#define PRCMU_ARMSS            44
+#define PRCMU_PLLDDR           45
+
+/* DSI Clocks */
+#define PRCMU_PLLDSI           46
+#define PRCMU_DSI0CLK          47
+#define PRCMU_DSI1CLK                  48
+#define PRCMU_DSI0ESCCLK       49
+#define PRCMU_DSI1ESCCLK       50
+#define PRCMU_DSI2ESCCLK       51
+
+/* LCD DSI PLL - Ux540 only */
+#define PRCMU_PLLDSI_LCD        52
+#define PRCMU_DSI0CLK_LCD       53
+#define PRCMU_DSI1CLK_LCD       54
+#define PRCMU_DSI0ESCCLK_LCD    55
+#define PRCMU_DSI1ESCCLK_LCD    56
+#define PRCMU_DSI2ESCCLK_LCD    57
+
+#define PRCMU_NUM_CLKS         58
+
+#endif
diff --git a/include/dt-bindings/pinctrl/am43xx.h b/include/dt-bindings/pinctrl/am43xx.h
new file mode 100644 (file)
index 0000000..eb6c366
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * This header provides constants specific to AM43XX pinctrl bindings.
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_AM43XX_H
+#define _DT_BINDINGS_PINCTRL_AM43XX_H
+
+#define MUX_MODE0      0
+#define MUX_MODE1      1
+#define MUX_MODE2      2
+#define MUX_MODE3      3
+#define MUX_MODE4      4
+#define MUX_MODE5      5
+#define MUX_MODE6      6
+#define MUX_MODE7      7
+
+#define PULL_DISABLE           (1 << 16)
+#define PULL_UP                        (1 << 17)
+#define INPUT_EN               (1 << 18)
+#define SLEWCTRL_FAST          (1 << 19)
+#define DS0_PULL_UP_DOWN_EN    (1 << 27)
+
+#define PIN_OUTPUT             (PULL_DISABLE)
+#define PIN_OUTPUT_PULLUP      (PULL_UP)
+#define PIN_OUTPUT_PULLDOWN    0
+#define PIN_INPUT              (INPUT_EN | PULL_DISABLE)
+#define PIN_INPUT_PULLUP       (INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN     (INPUT_EN)
+
+#endif
+
diff --git a/include/dt-bindings/pinctrl/dra.h b/include/dt-bindings/pinctrl/dra.h
new file mode 100644 (file)
index 0000000..002a285
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * This header provides constants for DRA pinctrl bindings.
+ *
+ * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
+ * Author: Rajendra Nayak <rnayak@ti.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#ifndef _DT_BINDINGS_PINCTRL_DRA_H
+#define _DT_BINDINGS_PINCTRL_DRA_H
+
+/* DRA7 mux mode options for each pin. See TRM for options */
+#define MUX_MODE0      0x0
+#define MUX_MODE1      0x1
+#define MUX_MODE2      0x2
+#define MUX_MODE3      0x3
+#define MUX_MODE4      0x4
+#define MUX_MODE5      0x5
+#define MUX_MODE6      0x6
+#define MUX_MODE7      0x7
+#define MUX_MODE8      0x8
+#define MUX_MODE9      0x9
+#define MUX_MODE10     0xa
+#define MUX_MODE11     0xb
+#define MUX_MODE12     0xc
+#define MUX_MODE13     0xd
+#define MUX_MODE14     0xe
+#define MUX_MODE15     0xf
+
+#define PULL_ENA               (1 << 16)
+#define PULL_UP                        (1 << 17)
+#define INPUT_EN               (1 << 18)
+#define SLEWCONTROL            (1 << 19)
+#define WAKEUP_EN              (1 << 24)
+#define WAKEUP_EVENT           (1 << 25)
+
+/* Active pin states */
+#define PIN_OUTPUT             0
+#define PIN_OUTPUT_PULLUP      (PIN_OUTPUT | PULL_ENA | PULL_UP)
+#define PIN_OUTPUT_PULLDOWN    (PIN_OUTPUT | PULL_ENA)
+#define PIN_INPUT              INPUT_EN
+#define PIN_INPUT_SLEW         (INPUT_EN | SLEWCONTROL)
+#define PIN_INPUT_PULLUP       (PULL_ENA | INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN     (PULL_ENA | INPUT_EN)
+
+#endif
+
index edbd250809cb6d415e893a2d26a9d6db302925fd..bed35e36fd2748515ed75f47c9d642462223c852 100644 (file)
@@ -23,7 +23,7 @@
 #define PULL_UP                        (1 << 4)
 #define ALTELECTRICALSEL       (1 << 5)
 
-/* 34xx specific mux bit defines */
+/* omap3/4/5 specific mux bit defines */
 #define INPUT_EN               (1 << 8)
 #define OFF_EN                 (1 << 9)
 #define OFFOUT_EN              (1 << 10)
@@ -31,8 +31,6 @@
 #define OFF_PULL_EN            (1 << 12)
 #define OFF_PULL_UP            (1 << 13)
 #define WAKEUP_EN              (1 << 14)
-
-/* 44xx specific mux bit defines */
 #define WAKEUP_EVENT           (1 << 15)
 
 /* Active pin states */
index 842de225055fc5b8c769c59ff37e5afa81574f38..ded429966c1f447db9106359b174fb742fd3fe54 100644 (file)
 #define __visible __attribute__((externally_visible))
 #endif
 
+/*
+ * GCC 'asm goto' miscompiles certain code sequences:
+ *
+ *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
+ *
+ * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
+ * Fixed in GCC 4.8.2 and later versions.
+ *
+ * (asm goto is automatically volatile - the naming reflects this.)
+ */
+#if GCC_VERSION <= 40801
+# define asm_volatile_goto(x...)       do { asm goto(x); asm (""); } while (0)
+#else
+# define asm_volatile_goto(x...)       do { asm goto(x); } while (0)
+#endif
 
 #ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
 #if GCC_VERSION >= 40400
index ca0790fba2f5d60abbe975fa3547c363c525f443..060e11256fbcf8866afc23d900134d4040c7a59a 100644 (file)
@@ -12,6 +12,8 @@
 #include <linux/notifier.h>
 #include <linux/err.h>
 
+#include <dt-bindings/mfd/dbx500-prcmu.h> /* For clock identifiers */
+
 /* Offset for the firmware version within the TCPM */
 #define DB8500_PRCMU_FW_VERSION_OFFSET 0xA4
 #define DBX540_PRCMU_FW_VERSION_OFFSET 0xA8
@@ -94,74 +96,6 @@ enum prcmu_wakeup_index {
 #define PRCMU_CLKSRC_ARMCLKFIX         0x46
 #define PRCMU_CLKSRC_HDMICLK           0x47
 
-/*
- * Clock identifiers.
- */
-enum prcmu_clock {
-       PRCMU_SGACLK,
-       PRCMU_UARTCLK,
-       PRCMU_MSP02CLK,
-       PRCMU_MSP1CLK,
-       PRCMU_I2CCLK,
-       PRCMU_SDMMCCLK,
-       PRCMU_SPARE1CLK,
-       PRCMU_SLIMCLK,
-       PRCMU_PER1CLK,
-       PRCMU_PER2CLK,
-       PRCMU_PER3CLK,
-       PRCMU_PER5CLK,
-       PRCMU_PER6CLK,
-       PRCMU_PER7CLK,
-       PRCMU_LCDCLK,
-       PRCMU_BMLCLK,
-       PRCMU_HSITXCLK,
-       PRCMU_HSIRXCLK,
-       PRCMU_HDMICLK,
-       PRCMU_APEATCLK,
-       PRCMU_APETRACECLK,
-       PRCMU_MCDECLK,
-       PRCMU_IPI2CCLK,
-       PRCMU_DSIALTCLK,
-       PRCMU_DMACLK,
-       PRCMU_B2R2CLK,
-       PRCMU_TVCLK,
-       PRCMU_SSPCLK,
-       PRCMU_RNGCLK,
-       PRCMU_UICCCLK,
-       PRCMU_PWMCLK,
-       PRCMU_IRDACLK,
-       PRCMU_IRRCCLK,
-       PRCMU_SIACLK,
-       PRCMU_SVACLK,
-       PRCMU_ACLK,
-       PRCMU_HVACLK, /* Ux540 only */
-       PRCMU_G1CLK, /* Ux540 only */
-       PRCMU_SDMMCHCLK,
-       PRCMU_CAMCLK,
-       PRCMU_BML8580CLK,
-       PRCMU_NUM_REG_CLOCKS,
-       PRCMU_SYSCLK = PRCMU_NUM_REG_CLOCKS,
-       PRCMU_CDCLK,
-       PRCMU_TIMCLK,
-       PRCMU_PLLSOC0,
-       PRCMU_PLLSOC1,
-       PRCMU_ARMSS,
-       PRCMU_PLLDDR,
-       PRCMU_PLLDSI,
-       PRCMU_DSI0CLK,
-       PRCMU_DSI1CLK,
-       PRCMU_DSI0ESCCLK,
-       PRCMU_DSI1ESCCLK,
-       PRCMU_DSI2ESCCLK,
-       /* LCD DSI PLL - Ux540 only */
-       PRCMU_PLLDSI_LCD,
-       PRCMU_DSI0CLK_LCD,
-       PRCMU_DSI1CLK_LCD,
-       PRCMU_DSI0ESCCLK_LCD,
-       PRCMU_DSI1ESCCLK_LCD,
-       PRCMU_DSI2ESCCLK_LCD,
-};
-
 /**
  * enum prcmu_wdog_id - PRCMU watchdog IDs
  * @PRCMU_WDOG_ALL: use all timers
index 09c2300ddb3723188636867fa9b5c21bddab47df..cb358355ef4338c7b39e55df05e0cf539096a77e 100644 (file)
@@ -45,6 +45,7 @@
 #define MAPPER_CTRL_MINOR      236
 #define LOOP_CTRL_MINOR                237
 #define VHOST_NET_MINOR                238
+#define UHID_MINOR             239
 #define MISC_DYNAMIC_MINOR     255
 
 struct device;
index 866e85c5eb94517fc87ca1d49bc9acbde74dcc74..c8ba627c1d608733b8480bb929d9e81d97e57fa0 100644 (file)
@@ -294,9 +294,31 @@ struct ring_buffer;
  */
 struct perf_event {
 #ifdef CONFIG_PERF_EVENTS
-       struct list_head                group_entry;
+       /*
+        * entry onto perf_event_context::event_list;
+        *   modifications require ctx->lock
+        *   RCU safe iterations.
+        */
        struct list_head                event_entry;
+
+       /*
+        * XXX: group_entry and sibling_list should be mutually exclusive;
+        * either you're a sibling on a group, or you're the group leader.
+        * Rework the code to always use the same list element.
+        *
+        * Locked for modification by both ctx->mutex and ctx->lock; holding
+        * either sufficies for read.
+        */
+       struct list_head                group_entry;
        struct list_head                sibling_list;
+
+       /*
+        * We need storage to track the entries in perf_pmu_migrate_context; we
+        * cannot use the event_entry because of RCU and we want to keep the
+        * group in tact which avoids us using the other two entries.
+        */
+       struct list_head                migrate_entry;
+
        struct hlist_node               hlist_entry;
        int                             nr_siblings;
        int                             group_flags;
index 9d98f3aaa16c7637b42a8de33530aab4df9137ac..97baf831e07114c04b5e3d4163738da98b0ba5be 100644 (file)
@@ -10,6 +10,9 @@
 #ifndef __CLK_UX500_H
 #define __CLK_UX500_H
 
+void u8500_of_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
+                      u32 clkrst5_base, u32 clkrst6_base);
+
 void u8500_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
                    u32 clkrst5_base, u32 clkrst6_base);
 void u9540_clk_init(u32 clkrst1_base, u32 clkrst2_base, u32 clkrst3_base,
diff --git a/include/linux/platform_data/pinctrl-single.h b/include/linux/platform_data/pinctrl-single.h
new file mode 100644 (file)
index 0000000..72eacda
--- /dev/null
@@ -0,0 +1,12 @@
+/**
+ * irq:                optional wake-up interrupt
+ * rearm:      optional soc specific rearm function
+ *
+ * Note that the irq and rearm setup should come from device
+ * tree except for omap where there are still some dependencies
+ * to the legacy PRM code.
+ */
+struct pcs_pdata {
+       int irq;
+       void (*rearm)(void);
+};
index 3b9377d6b7a5fd63b13d02fc238d7da99fbef026..6312dd9ba449b4d65f5bb6bcdc01d606fc2fdfa8 100644 (file)
@@ -17,6 +17,7 @@ extern void add_interrupt_randomness(int irq, int irq_flags);
 extern void get_random_bytes(void *buf, int nbytes);
 extern void get_random_bytes_arch(void *buf, int nbytes);
 void generate_random_uuid(unsigned char uuid_out[16]);
+extern int random_int_secret_init(void);
 
 #ifndef MODULE
 extern const struct file_operations random_fops, urandom_fops;
index dd3edd7dfc94dc73de9389e55ed7f35bdcadfcbd..9d3f1a5b6178a9dd1aa3914b35051b96f5ceb279 100644 (file)
 
 #include <asm/timex.h>
 
+#ifndef random_get_entropy
+/*
+ * The random_get_entropy() function is used by the /dev/random driver
+ * in order to extract entropy via the relative unpredictability of
+ * when an interrupt takes places versus a high speed, fine-grained
+ * timing source or cycle counter.  Since it will be occurred on every
+ * single interrupt, it must have a very low cost/overhead.
+ *
+ * By default we use get_cycles() for this purpose, but individual
+ * architectures may override this in their asm/timex.h header file.
+ */
+#define random_get_entropy()   get_cycles()
+#endif
+
 /*
  * SHIFT_PLL is used as a dampening factor to define how much we
  * adjust the frequency correction for a given offset in PLL mode.
index 80cf8173a65b1491bd7e1da05978024acd7889b1..2c02f3a8d2ba3f4ba079a51f537be25742b17162 100644 (file)
@@ -65,15 +65,8 @@ struct pci_dev;
  *     out of the arbitration process (and can be safe to take
  *     interrupts at any time.
  */
-#if defined(CONFIG_VGA_ARB)
 extern void vga_set_legacy_decoding(struct pci_dev *pdev,
                                    unsigned int decodes);
-#else
-static inline void vga_set_legacy_decoding(struct pci_dev *pdev,
-                                          unsigned int decodes)
-{
-}
-#endif
 
 /**
  *     vga_get         - acquire & locks VGA resources
index af310afbef2867e987973cc341a7b418f7413068..63d3e8f2970c1377ec822bcb9db8ee306faecee6 100644 (file)
@@ -76,6 +76,7 @@
 #include <linux/elevator.h>
 #include <linux/sched_clock.h>
 #include <linux/context_tracking.h>
+#include <linux/random.h>
 
 #include <asm/io.h>
 #include <asm/bugs.h>
@@ -780,6 +781,7 @@ static void __init do_basic_setup(void)
        do_ctors();
        usermodehelper_enable();
        do_initcalls();
+       random_int_secret_init();
 }
 
 static void __init do_pre_smp_initcalls(void)
index cb4238e85b38e37886b27dd76351d2590a835924..d49a9d29334cc4d67c24bad9814221a0371a6350 100644 (file)
@@ -7234,15 +7234,15 @@ void perf_pmu_migrate_context(struct pmu *pmu, int src_cpu, int dst_cpu)
                perf_remove_from_context(event);
                unaccount_event_cpu(event, src_cpu);
                put_ctx(src_ctx);
-               list_add(&event->event_entry, &events);
+               list_add(&event->migrate_entry, &events);
        }
        mutex_unlock(&src_ctx->mutex);
 
        synchronize_rcu();
 
        mutex_lock(&dst_ctx->mutex);
-       list_for_each_entry_safe(event, tmp, &events, event_entry) {
-               list_del(&event->event_entry);
+       list_for_each_entry_safe(event, tmp, &events, migrate_entry) {
+               list_del(&event->migrate_entry);
                if (event->state >= PERF_EVENT_STATE_OFF)
                        event->state = PERF_EVENT_STATE_INACTIVE;
                account_event_cpu(event, dst_cpu);
index 669bf190d4fb91770f8912277278a6528c4065c3..084f7b18d0c0a722e215dce8d14dcda0e6ba78d8 100644 (file)
@@ -592,7 +592,7 @@ static void kobject_release(struct kref *kref)
 {
        struct kobject *kobj = container_of(kref, struct kobject, kref);
 #ifdef CONFIG_DEBUG_KOBJECT_RELEASE
-       pr_debug("kobject: '%s' (%p): %s, parent %p (delayed)\n",
+       pr_info("kobject: '%s' (%p): %s, parent %p (delayed)\n",
                 kobject_name(kobj), kobj, __func__, kobj->parent);
        INIT_DELAYED_WORK(&kobj->release, kobject_delayed_cleanup);
        schedule_delayed_work(&kobj->release, HZ);
index 7ea0245fc6bd5fe5579d81682a2d39ce6cd06af7..50173d412ac5c0d5fb7095b3e3004e2c63c319a0 100644 (file)
@@ -936,6 +936,14 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec,
                return;
        }
 
+       /*
+        * always configure channel mapping, it may have been changed by the
+        * user in the meantime
+        */
+       hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
+                                  channels, per_pin->chmap,
+                                  per_pin->chmap_set);
+
        /*
         * sizeof(ai) is used instead of sizeof(*hdmi_ai) or
         * sizeof(*dp_ai) to avoid partial match/update problems when
@@ -947,20 +955,10 @@ static void hdmi_setup_audio_infoframe(struct hda_codec *codec,
                            "pin=%d channels=%d\n",
                            pin_nid,
                            channels);
-               hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
-                                          channels, per_pin->chmap,
-                                          per_pin->chmap_set);
                hdmi_stop_infoframe_trans(codec, pin_nid);
                hdmi_fill_audio_infoframe(codec, pin_nid,
                                            ai.bytes, sizeof(ai));
                hdmi_start_infoframe_trans(codec, pin_nid);
-       } else {
-               /* For non-pcm audio switch, setup new channel mapping
-                * accordingly */
-               if (per_pin->non_pcm != non_pcm)
-                       hdmi_setup_channel_mapping(codec, pin_nid, non_pcm, ca,
-                                                  channels, per_pin->chmap,
-                                                  per_pin->chmap_set);
        }
 
        per_pin->non_pcm = non_pcm;
index 0e303b99a47ceef3037e7b245ed5d93caf1f7779..bf313bea70858f8a4abd18ef6c60beca6668fea1 100644 (file)
@@ -2819,6 +2819,15 @@ static void alc269_fixup_hweq(struct hda_codec *codec,
        alc_write_coef_idx(codec, 0x1e, coef | 0x80);
 }
 
+static void alc269_fixup_headset_mic(struct hda_codec *codec,
+                                      const struct hda_fixup *fix, int action)
+{
+       struct alc_spec *spec = codec->spec;
+
+       if (action == HDA_FIXUP_ACT_PRE_PROBE)
+               spec->parse_flags |= HDA_PINCFG_HEADSET_MIC;
+}
+
 static void alc271_fixup_dmic(struct hda_codec *codec,
                              const struct hda_fixup *fix, int action)
 {
@@ -3496,6 +3505,15 @@ static void alc282_fixup_asus_tx300(struct hda_codec *codec,
        }
 }
 
+static void alc290_fixup_mono_speakers(struct hda_codec *codec,
+                                      const struct hda_fixup *fix, int action)
+{
+       if (action == HDA_FIXUP_ACT_PRE_PROBE)
+               /* Remove DAC node 0x03, as it seems to be
+                  giving mono output */
+               snd_hda_override_wcaps(codec, 0x03, 0);
+}
+
 enum {
        ALC269_FIXUP_SONY_VAIO,
        ALC275_FIXUP_SONY_VAIO_GPIO2,
@@ -3507,6 +3525,7 @@ enum {
        ALC271_FIXUP_DMIC,
        ALC269_FIXUP_PCM_44K,
        ALC269_FIXUP_STEREO_DMIC,
+       ALC269_FIXUP_HEADSET_MIC,
        ALC269_FIXUP_QUANTA_MUTE,
        ALC269_FIXUP_LIFEBOOK,
        ALC269_FIXUP_AMIC,
@@ -3519,9 +3538,11 @@ enum {
        ALC269_FIXUP_HP_GPIO_LED,
        ALC269_FIXUP_INV_DMIC,
        ALC269_FIXUP_LENOVO_DOCK,
+       ALC286_FIXUP_SONY_MIC_NO_PRESENCE,
        ALC269_FIXUP_PINCFG_NO_HP_TO_LINEOUT,
        ALC269_FIXUP_DELL1_MIC_NO_PRESENCE,
        ALC269_FIXUP_DELL2_MIC_NO_PRESENCE,
+       ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
        ALC269_FIXUP_HEADSET_MODE,
        ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC,
        ALC269_FIXUP_ASUS_X101_FUNC,
@@ -3535,6 +3556,7 @@ enum {
        ALC283_FIXUP_CHROME_BOOK,
        ALC282_FIXUP_ASUS_TX300,
        ALC283_FIXUP_INT_MIC,
+       ALC290_FIXUP_MONO_SPEAKERS,
 };
 
 static const struct hda_fixup alc269_fixups[] = {
@@ -3603,6 +3625,10 @@ static const struct hda_fixup alc269_fixups[] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc269_fixup_stereo_dmic,
        },
+       [ALC269_FIXUP_HEADSET_MIC] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = alc269_fixup_headset_mic,
+       },
        [ALC269_FIXUP_QUANTA_MUTE] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc269_fixup_quanta_mute,
@@ -3712,6 +3738,15 @@ static const struct hda_fixup alc269_fixups[] = {
                .chained = true,
                .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
        },
+       [ALC269_FIXUP_DELL3_MIC_NO_PRESENCE] = {
+               .type = HDA_FIXUP_PINS,
+               .v.pins = (const struct hda_pintbl[]) {
+                       { 0x1a, 0x01a1913c }, /* use as headset mic, without its own jack detect */
+                       { }
+               },
+               .chained = true,
+               .chain_id = ALC269_FIXUP_HEADSET_MODE_NO_HP_MIC
+       },
        [ALC269_FIXUP_HEADSET_MODE] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc_fixup_headset_mode,
@@ -3720,6 +3755,15 @@ static const struct hda_fixup alc269_fixups[] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc_fixup_headset_mode_no_hp_mic,
        },
+       [ALC286_FIXUP_SONY_MIC_NO_PRESENCE] = {
+               .type = HDA_FIXUP_PINS,
+               .v.pins = (const struct hda_pintbl[]) {
+                       { 0x18, 0x01a1913c }, /* use as headset mic, without its own jack detect */
+                       { }
+               },
+               .chained = true,
+               .chain_id = ALC269_FIXUP_HEADSET_MIC
+       },
        [ALC269_FIXUP_ASUS_X101_FUNC] = {
                .type = HDA_FIXUP_FUNC,
                .v.func = alc269_fixup_x101_headset_mic,
@@ -3804,6 +3848,12 @@ static const struct hda_fixup alc269_fixups[] = {
                .chained = true,
                .chain_id = ALC269_FIXUP_LIMIT_INT_MIC_BOOST
        },
+       [ALC290_FIXUP_MONO_SPEAKERS] = {
+               .type = HDA_FIXUP_FUNC,
+               .v.func = alc290_fixup_mono_speakers,
+               .chained = true,
+               .chain_id = ALC269_FIXUP_DELL3_MIC_NO_PRESENCE,
+       },
 };
 
 static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -3845,6 +3895,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
        SND_PCI_QUIRK(0x1028, 0x0608, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1028, 0x0609, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1028, 0x0613, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
+       SND_PCI_QUIRK(0x1028, 0x0616, "Dell Vostro 5470", ALC290_FIXUP_MONO_SPEAKERS),
        SND_PCI_QUIRK(0x1028, 0x15cc, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1028, 0x15cd, "Dell X5 Precision", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x103c, 0x1586, "HP", ALC269_FIXUP_HP_MUTE_LED_MIC2),
@@ -3867,6 +3918,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
        SND_PCI_QUIRK(0x1043, 0x8398, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
        SND_PCI_QUIRK(0x1043, 0x83ce, "ASUS P1005", ALC269_FIXUP_STEREO_DMIC),
        SND_PCI_QUIRK(0x1043, 0x8516, "ASUS X101CH", ALC269_FIXUP_ASUS_X101),
+       SND_PCI_QUIRK(0x104d, 0x90b6, "Sony VAIO Pro 13", ALC286_FIXUP_SONY_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x104d, 0x9073, "Sony VAIO", ALC275_FIXUP_SONY_VAIO_GPIO2),
        SND_PCI_QUIRK(0x104d, 0x907b, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
        SND_PCI_QUIRK(0x104d, 0x9084, "Sony VAIO", ALC275_FIXUP_SONY_HWEQ),
@@ -3952,6 +4004,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
        {.id = ALC269_FIXUP_STEREO_DMIC, .name = "alc269-dmic"},
        {.id = ALC271_FIXUP_DMIC, .name = "alc271-dmic"},
        {.id = ALC269_FIXUP_INV_DMIC, .name = "inv-dmic"},
+       {.id = ALC269_FIXUP_HEADSET_MIC, .name = "headset-mic"},
        {.id = ALC269_FIXUP_LENOVO_DOCK, .name = "lenovo-dock"},
        {.id = ALC269_FIXUP_HP_GPIO_LED, .name = "hp-gpio-led"},
        {.id = ALC269_FIXUP_DELL1_MIC_NO_PRESENCE, .name = "dell-headset-multi"},
@@ -4569,6 +4622,7 @@ static const struct snd_pci_quirk alc662_fixup_tbl[] = {
        SND_PCI_QUIRK(0x1028, 0x05d8, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x1028, 0x05db, "Dell", ALC668_FIXUP_DELL_MIC_NO_PRESENCE),
        SND_PCI_QUIRK(0x103c, 0x1632, "HP RP5800", ALC662_FIXUP_HP_RP5800),
+       SND_PCI_QUIRK(0x1043, 0x1477, "ASUS N56VZ", ALC662_FIXUP_ASUS_MODE4),
        SND_PCI_QUIRK(0x1043, 0x8469, "ASUS mobo", ALC662_FIXUP_NO_JACK_DETECT),
        SND_PCI_QUIRK(0x105b, 0x0cd6, "Foxconn", ALC662_FIXUP_ASUS_MODE2),
        SND_PCI_QUIRK(0x144d, 0xc051, "Samsung R720", ALC662_FIXUP_IDEAPAD),
index 63fb5219f0f8aad7a844eb1942b5cd728be678dc..6234a51625b1b6a556f252c2fea3a150db1bdbc1 100644 (file)
@@ -299,19 +299,6 @@ static void usX2Y_error_urb_status(struct usX2Ydev *usX2Y,
        usX2Y_clients_stop(usX2Y);
 }
 
-static void usX2Y_error_sequence(struct usX2Ydev *usX2Y,
-                                struct snd_usX2Y_substream *subs, struct urb *urb)
-{
-       snd_printk(KERN_ERR
-"Sequence Error!(hcd_frame=%i ep=%i%s;wait=%i,frame=%i).\n"
-"Most probably some urb of usb-frame %i is still missing.\n"
-"Cause could be too long delays in usb-hcd interrupt handling.\n",
-                  usb_get_current_frame_number(usX2Y->dev),
-                  subs->endpoint, usb_pipein(urb->pipe) ? "in" : "out",
-                  usX2Y->wait_iso_frame, urb->start_frame, usX2Y->wait_iso_frame);
-       usX2Y_clients_stop(usX2Y);
-}
-
 static void i_usX2Y_urb_complete(struct urb *urb)
 {
        struct snd_usX2Y_substream *subs = urb->context;
@@ -328,12 +315,9 @@ static void i_usX2Y_urb_complete(struct urb *urb)
                usX2Y_error_urb_status(usX2Y, subs, urb);
                return;
        }
-       if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
-               subs->completed_urb = urb;
-       else {
-               usX2Y_error_sequence(usX2Y, subs, urb);
-               return;
-       }
+
+       subs->completed_urb = urb;
+
        {
                struct snd_usX2Y_substream *capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE],
                        *playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
index f2a1acdc4d839f22eb7fa83d63b5f35ce367c5cd..814d0e887c62e5c451c3ff7cc4b8f448c3a45007 100644 (file)
@@ -244,13 +244,8 @@ static void i_usX2Y_usbpcm_urb_complete(struct urb *urb)
                usX2Y_error_urb_status(usX2Y, subs, urb);
                return;
        }
-       if (likely((urb->start_frame & 0xFFFF) == (usX2Y->wait_iso_frame & 0xFFFF)))
-               subs->completed_urb = urb;
-       else {
-               usX2Y_error_sequence(usX2Y, subs, urb);
-               return;
-       }
 
+       subs->completed_urb = urb;
        capsubs = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE];
        capsubs2 = usX2Y->subs[SNDRV_PCM_STREAM_CAPTURE + 2];
        playbacksubs = usX2Y->subs[SNDRV_PCM_STREAM_PLAYBACK];
index 3a0ff7fb71b633df77cfd1302ce35e2bf9506142..64c043b7a43848f17a023dcf9479dbd77f96d7be 100644 (file)
@@ -770,6 +770,7 @@ check: $(OUTPUT)common-cmds.h
 install-bin: all
        $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(bindir_SQ)'
        $(INSTALL) $(OUTPUT)perf '$(DESTDIR_SQ)$(bindir_SQ)'
+       $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
        $(INSTALL) $(OUTPUT)perf-archive -t '$(DESTDIR_SQ)$(perfexec_instdir_SQ)'
 ifndef NO_LIBPERL
        $(INSTALL) -d -m 755 '$(DESTDIR_SQ)$(perfexec_instdir_SQ)/scripts/perl/Perf-Trace-Util/lib/Perf/Trace'
index f686d5ff594e6b93c6e6f732e7a1c97aa18c4e49..5098f144b92defd53e94f9f24184e3ade0672928 100644 (file)
@@ -457,6 +457,7 @@ static int __run_perf_stat(int argc, const char **argv)
                        perror("failed to prepare workload");
                        return -1;
                }
+               child_pid = evsel_list->workload.pid;
        }
 
        if (group)
index d5a8dd44945fcc6483eabfafde3b5d882b46f6f1..f79305739eccdbea8a7ee7dc65be5862543808a4 100644 (file)
@@ -219,7 +219,7 @@ define SOURCE_LIBAUDIT
 
 int main(void)
 {
-       printf(\"error message: %s\n\", audit_errno_to_name(0));
+       printf(\"error message: %s\", audit_errno_to_name(0));
        return audit_open();
 }
 endef
index e23bde19d590872c6567c35d0df39fd5d0d68a87..7defd77105d005f9820c7ca69621e814a3c45c76 100644 (file)
@@ -426,7 +426,7 @@ static int __die_search_func_cb(Dwarf_Die *fn_die, void *data)
  * @die_mem: a buffer for result DIE
  *
  * Search a non-inlined function DIE which includes @addr. Stores the
- * DIE to @die_mem and returns it if found. Returns NULl if failed.
+ * DIE to @die_mem and returns it if found. Returns NULL if failed.
  */
 Dwarf_Die *die_find_realfunc(Dwarf_Die *cu_die, Dwarf_Addr addr,
                                    Dwarf_Die *die_mem)
@@ -453,16 +453,33 @@ static int __die_find_inline_cb(Dwarf_Die *die_mem, void *data)
        return DIE_FIND_CB_CONTINUE;
 }
 
+/**
+ * die_find_top_inlinefunc - Search the top inlined function at given address
+ * @sp_die: a subprogram DIE which including @addr
+ * @addr: target address
+ * @die_mem: a buffer for result DIE
+ *
+ * Search an inlined function DIE which includes @addr. Stores the
+ * DIE to @die_mem and returns it if found. Returns NULL if failed.
+ * Even if several inlined functions are expanded recursively, this
+ * doesn't trace it down, and returns the topmost one.
+ */
+Dwarf_Die *die_find_top_inlinefunc(Dwarf_Die *sp_die, Dwarf_Addr addr,
+                                  Dwarf_Die *die_mem)
+{
+       return die_find_child(sp_die, __die_find_inline_cb, &addr, die_mem);
+}
+
 /**
  * die_find_inlinefunc - Search an inlined function at given address
- * @cu_die: a CU DIE which including @addr
+ * @sp_die: a subprogram DIE which including @addr
  * @addr: target address
  * @die_mem: a buffer for result DIE
  *
  * Search an inlined function DIE which includes @addr. Stores the
- * DIE to @die_mem and returns it if found. Returns NULl if failed.
+ * DIE to @die_mem and returns it if found. Returns NULL if failed.
  * If several inlined functions are expanded recursively, this trace
- * it and returns deepest one.
+ * it down and returns deepest one.
  */
 Dwarf_Die *die_find_inlinefunc(Dwarf_Die *sp_die, Dwarf_Addr addr,
                               Dwarf_Die *die_mem)
index 8658d41697d27fbbe06dbd1fbdbc3b9d895b4606..b4fe90c6cb2d4413c3ab96f91a346f3f89549932 100644 (file)
@@ -79,7 +79,11 @@ extern Dwarf_Die *die_find_child(Dwarf_Die *rt_die,
 extern Dwarf_Die *die_find_realfunc(Dwarf_Die *cu_die, Dwarf_Addr addr,
                                    Dwarf_Die *die_mem);
 
-/* Search an inlined function including given address */
+/* Search the top inlined function including given address */
+extern Dwarf_Die *die_find_top_inlinefunc(Dwarf_Die *sp_die, Dwarf_Addr addr,
+                                         Dwarf_Die *die_mem);
+
+/* Search the deepest inlined function including given address */
 extern Dwarf_Die *die_find_inlinefunc(Dwarf_Die *sp_die, Dwarf_Addr addr,
                                      Dwarf_Die *die_mem);
 
index ce69901176d864506d39cc0df4f5dbe9479f9383..c3e5a3b817ab714497dc7f6f39520945dc886b1a 100644 (file)
@@ -2768,6 +2768,18 @@ int perf_session__read_header(struct perf_session *session)
        if (perf_file_header__read(&f_header, header, fd) < 0)
                return -EINVAL;
 
+       /*
+        * Sanity check that perf.data was written cleanly; data size is
+        * initialized to 0 and updated only if the on_exit function is run.
+        * If data size is still 0 then the file contains only partial
+        * information.  Just warn user and process it as much as it can.
+        */
+       if (f_header.data.size == 0) {
+               pr_warning("WARNING: The %s file's data size field is 0 which is unexpected.\n"
+                          "Was the 'perf record' command properly terminated?\n",
+                          session->filename);
+       }
+
        nr_attrs = f_header.attrs.size / f_header.attr_size;
        lseek(fd, f_header.attrs.offset, SEEK_SET);
 
index 371476cb8ddc17a6643a6298ba887f8c6aa75bcb..c09e0a9fdf4cda118be077fbee1fb382dcc3d5ee 100644 (file)
@@ -1327,8 +1327,8 @@ int debuginfo__find_probe_point(struct debuginfo *self, unsigned long addr,
                                struct perf_probe_point *ppt)
 {
        Dwarf_Die cudie, spdie, indie;
-       Dwarf_Addr _addr, baseaddr;
-       const char *fname = NULL, *func = NULL, *tmp;
+       Dwarf_Addr _addr = 0, baseaddr = 0;
+       const char *fname = NULL, *func = NULL, *basefunc = NULL, *tmp;
        int baseline = 0, lineno = 0, ret = 0;
 
        /* Adjust address with bias */
@@ -1349,27 +1349,36 @@ int debuginfo__find_probe_point(struct debuginfo *self, unsigned long addr,
        /* Find a corresponding function (name, baseline and baseaddr) */
        if (die_find_realfunc(&cudie, (Dwarf_Addr)addr, &spdie)) {
                /* Get function entry information */
-               tmp = dwarf_diename(&spdie);
-               if (!tmp ||
+               func = basefunc = dwarf_diename(&spdie);
+               if (!func ||
                    dwarf_entrypc(&spdie, &baseaddr) != 0 ||
-                   dwarf_decl_line(&spdie, &baseline) != 0)
+                   dwarf_decl_line(&spdie, &baseline) != 0) {
+                       lineno = 0;
                        goto post;
-               func = tmp;
+               }
 
-               if (addr == (unsigned long)baseaddr)
+               if (addr == (unsigned long)baseaddr) {
                        /* Function entry - Relative line number is 0 */
                        lineno = baseline;
-               else if (die_find_inlinefunc(&spdie, (Dwarf_Addr)addr,
-                                            &indie)) {
+                       fname = dwarf_decl_file(&spdie);
+                       goto post;
+               }
+
+               /* Track down the inline functions step by step */
+               while (die_find_top_inlinefunc(&spdie, (Dwarf_Addr)addr,
+                                               &indie)) {
+                       /* There is an inline function */
                        if (dwarf_entrypc(&indie, &_addr) == 0 &&
-                           _addr == addr)
+                           _addr == addr) {
                                /*
                                 * addr is at an inline function entry.
                                 * In this case, lineno should be the call-site
-                                * line number.
+                                * line number. (overwrite lineinfo)
                                 */
                                lineno = die_get_call_lineno(&indie);
-                       else {
+                               fname = die_get_call_file(&indie);
+                               break;
+                       } else {
                                /*
                                 * addr is in an inline function body.
                                 * Since lineno points one of the lines
@@ -1377,19 +1386,27 @@ int debuginfo__find_probe_point(struct debuginfo *self, unsigned long addr,
                                 * be the entry line of the inline function.
                                 */
                                tmp = dwarf_diename(&indie);
-                               if (tmp &&
-                                   dwarf_decl_line(&spdie, &baseline) == 0)
-                                       func = tmp;
+                               if (!tmp ||
+                                   dwarf_decl_line(&indie, &baseline) != 0)
+                                       break;
+                               func = tmp;
+                               spdie = indie;
                        }
                }
+               /* Verify the lineno and baseline are in a same file */
+               tmp = dwarf_decl_file(&spdie);
+               if (!tmp || strcmp(tmp, fname) != 0)
+                       lineno = 0;
        }
 
 post:
        /* Make a relative line number or an offset */
        if (lineno)
                ppt->line = lineno - baseline;
-       else if (func)
+       else if (basefunc) {
                ppt->offset = addr - (unsigned long)baseaddr;
+               func = basefunc;
+       }
 
        /* Duplicate strings */
        if (func) {
index 70ffa41518f34a1bbfaa82e67c46a8a22b133f67..568b750c01f60b3d81cda29966ed40534a7bc8e1 100644 (file)
@@ -256,6 +256,8 @@ void perf_tool__fill_defaults(struct perf_tool *tool)
                tool->sample = process_event_sample_stub;
        if (tool->mmap == NULL)
                tool->mmap = process_event_stub;
+       if (tool->mmap2 == NULL)
+               tool->mmap2 = process_event_stub;
        if (tool->comm == NULL)
                tool->comm = process_event_stub;
        if (tool->fork == NULL)
@@ -1310,7 +1312,7 @@ int __perf_session__process_events(struct perf_session *session,
        file_offset = page_offset;
        head = data_offset - page_offset;
 
-       if (data_offset + data_size < file_size)
+       if (data_size && (data_offset + data_size < file_size))
                file_size = data_offset + data_size;
 
        progress_next = file_size / 16;