aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/Kconfig14
-rw-r--r--arch/arm/Kconfig-nommu2
-rw-r--r--arch/arm/Makefile3
-rw-r--r--arch/arm/boot/bootp/Makefile2
-rw-r--r--arch/arm/boot/bootp/init.S2
-rw-r--r--arch/arm/boot/compressed/Makefile2
-rw-r--r--arch/arm/boot/compressed/ll_char_wr.S4
-rw-r--r--arch/arm/boot/dts/Makefile16
-rw-r--r--arch/arm/boot/dts/alphascale-asm9260.dtsi3
-rw-r--r--arch/arm/boot/dts/alpine.dtsi8
-rw-r--r--arch/arm/boot/dts/am335x-baltos-ir2110.dts4
-rw-r--r--arch/arm/boot/dts/am335x-baltos-ir3220.dts4
-rw-r--r--arch/arm/boot/dts/am335x-baltos-ir5221.dts4
-rw-r--r--arch/arm/boot/dts/am335x-chiliboard.dts8
-rw-r--r--arch/arm/boot/dts/am335x-evm.dts2
-rw-r--r--arch/arm/boot/dts/am335x-evmsk.dts4
-rw-r--r--arch/arm/boot/dts/am335x-guardian.dts511
-rw-r--r--arch/arm/boot/dts/am335x-icev2.dts4
-rw-r--r--arch/arm/boot/dts/am335x-igep0033.dtsi4
-rw-r--r--arch/arm/boot/dts/am335x-lxm.dts4
-rw-r--r--arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi5
-rw-r--r--arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts5
-rw-r--r--arch/arm/boot/dts/am335x-phycore-som.dtsi4
-rw-r--r--arch/arm/boot/dts/am335x-shc.dts6
-rw-r--r--arch/arm/boot/dts/am33xx-l4.dtsi17
-rw-r--r--arch/arm/boot/dts/am3874-iceboard.dts496
-rw-r--r--arch/arm/boot/dts/am437x-gp-evm.dts2
-rw-r--r--arch/arm/boot/dts/am437x-l4.dtsi17
-rw-r--r--arch/arm/boot/dts/am43x-epos-evm.dts5
-rw-r--r--arch/arm/boot/dts/arm-realview-eb.dtsi4
-rw-r--r--arch/arm/boot/dts/arm-realview-pb1176.dts4
-rw-r--r--arch/arm/boot/dts/arm-realview-pb11mp.dts4
-rw-r--r--arch/arm/boot/dts/arm-realview-pbx.dtsi4
-rw-r--r--arch/arm/boot/dts/armada-370-rd.dts42
-rw-r--r--arch/arm/boot/dts/armada-388-clearfog.dts58
-rw-r--r--arch/arm/boot/dts/armada-388-clearfog.dtsi2
-rw-r--r--arch/arm/boot/dts/armada-38x.dtsi41
-rw-r--r--arch/arm/boot/dts/armada-39x.dtsi3
-rw-r--r--arch/arm/boot/dts/armada-xp-db.dts46
-rw-r--r--arch/arm/boot/dts/armada-xp-gp.dts13
-rw-r--r--arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts85
-rw-r--r--arch/arm/boot/dts/armada-xp-linksys-mamba.dts47
-rw-r--r--arch/arm/boot/dts/artpec6.dtsi3
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-arm-stardragon4800-rep2.dts10
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts55
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-inspur-on5263m5.dts145
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts5
-rw-r--r--arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dts8
-rw-r--r--arch/arm/boot/dts/aspeed-g4.dtsi1
-rw-r--r--arch/arm/boot/dts/aspeed-g5.dtsi41
-rw-r--r--arch/arm/boot/dts/at91-nattis-2-natte-2.dts2
-rw-r--r--arch/arm/boot/dts/at91-sama5d27_som1.dtsi30
-rw-r--r--arch/arm/boot/dts/at91-sama5d27_som1_ek.dts4
-rw-r--r--arch/arm/boot/dts/at91-wb45n.dts2
-rw-r--r--arch/arm/boot/dts/at91-wb50n.dts4
-rw-r--r--arch/arm/boot/dts/at91rm9200.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9260.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9261.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9263.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9g45.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9n12.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9rl.dtsi4
-rw-r--r--arch/arm/boot/dts/at91sam9x5.dtsi4
-rw-r--r--arch/arm/boot/dts/atlas6-evb.dts1
-rw-r--r--arch/arm/boot/dts/atlas6.dtsi1
-rw-r--r--arch/arm/boot/dts/atlas7.dtsi1
-rw-r--r--arch/arm/boot/dts/axm55xx.dtsi4
-rw-r--r--arch/arm/boot/dts/bcm-cygnus.dtsi9
-rw-r--r--arch/arm/boot/dts/bcm-nsp.dtsi4
-rw-r--r--arch/arm/boot/dts/bcm11351.dtsi4
-rw-r--r--arch/arm/boot/dts/bcm21664-garnet.dts1
-rw-r--r--arch/arm/boot/dts/bcm21664.dtsi4
-rw-r--r--arch/arm/boot/dts/bcm23550-sparrow.dts1
-rw-r--r--arch/arm/boot/dts/bcm23550.dtsi4
-rw-r--r--arch/arm/boot/dts/bcm28155-ap.dts1
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-a-plus.dts4
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-b-plus.dts4
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-zero-w.dts11
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi-zero.dts4
-rw-r--r--arch/arm/boot/dts/bcm2835-rpi.dtsi8
-rw-r--r--arch/arm/boot/dts/bcm2836-rpi-2-b.dts68
-rw-r--r--arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts175
-rw-r--r--arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts74
-rw-r--r--arch/arm/boot/dts/bcm2837-rpi-3-b.dts74
-rw-r--r--arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi2
-rw-r--r--arch/arm/boot/dts/bcm283x.dtsi17
-rw-r--r--arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts1
-rw-r--r--arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts1
-rw-r--r--arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts1
-rw-r--r--arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts1
-rw-r--r--arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts1
-rw-r--r--arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-linksys-panamera.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-netgear-r8500.dts1
-rw-r--r--arch/arm/boot/dts/bcm47094-phicomm-k3.dts71
-rw-r--r--arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts4
-rw-r--r--arch/arm/boot/dts/bcm47189-luxul-xap-810.dts4
-rw-r--r--arch/arm/boot/dts/bcm47189-tenda-ac9.dts1
-rw-r--r--arch/arm/boot/dts/bcm5301x.dtsi3
-rw-r--r--arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dts1
-rw-r--r--arch/arm/boot/dts/bcm53573.dtsi3
-rw-r--r--arch/arm/boot/dts/bcm63138.dtsi4
-rw-r--r--arch/arm/boot/dts/bcm7445.dtsi2
-rw-r--r--arch/arm/boot/dts/bcm947189acdbmr.dts1
-rw-r--r--arch/arm/boot/dts/bcm953012er.dts1
-rw-r--r--arch/arm/boot/dts/bcm953012hr.dts1
-rw-r--r--arch/arm/boot/dts/bcm953012k.dts1
-rw-r--r--arch/arm/boot/dts/cx92755.dtsi4
-rw-r--r--arch/arm/boot/dts/da850-evm.dts31
-rw-r--r--arch/arm/boot/dts/da850-lcdk.dts48
-rw-r--r--arch/arm/boot/dts/da850.dtsi2
-rw-r--r--arch/arm/boot/dts/dm814x.dtsi79
-rw-r--r--arch/arm/boot/dts/dove.dtsi4
-rw-r--r--arch/arm/boot/dts/dra7-l4.dtsi15
-rw-r--r--arch/arm/boot/dts/ep7209.dtsi4
-rw-r--r--arch/arm/boot/dts/ep7211-edb7211.dts1
-rw-r--r--arch/arm/boot/dts/exynos3250.dtsi3
-rw-r--r--arch/arm/boot/dts/exynos4412-odroid-common.dtsi14
-rw-r--r--arch/arm/boot/dts/exynos4412-odroidx.dts2
-rw-r--r--arch/arm/boot/dts/exynos5250-arndale.dts4
-rw-r--r--arch/arm/boot/dts/exynos5422-odroid-core.dtsi7
-rw-r--r--arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi6
-rw-r--r--arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi5
-rw-r--r--arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts8
-rw-r--r--arch/arm/boot/dts/exynos5422-odroidxu4.dts4
-rw-r--r--arch/arm/boot/dts/gemini-dlink-dir-685.dts2
-rw-r--r--arch/arm/boot/dts/imx27.dtsi2
-rw-r--r--arch/arm/boot/dts/imx28-cfa10036.dts3
-rw-r--r--arch/arm/boot/dts/imx51-digi-connectcore-jsk.dts16
-rw-r--r--arch/arm/boot/dts/imx51-digi-connectcore-som.dtsi34
-rw-r--r--arch/arm/boot/dts/imx6-logicpd-baseboard.dtsi555
-rw-r--r--arch/arm/boot/dts/imx6-logicpd-som.dtsi365
-rw-r--r--arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts5
-rw-r--r--arch/arm/boot/dts/imx6dl-yapp4-common.dtsi595
-rw-r--r--arch/arm/boot/dts/imx6dl-yapp4-draco.dts58
-rw-r--r--arch/arm/boot/dts/imx6dl-yapp4-hydra.dts50
-rw-r--r--arch/arm/boot/dts/imx6dl-yapp4-ursa.dts54
-rw-r--r--arch/arm/boot/dts/imx6q-logicpd.dts120
-rw-r--r--arch/arm/boot/dts/imx6q-pistachio.dts2
-rw-r--r--arch/arm/boot/dts/imx6q-tbs2910.dts49
-rw-r--r--arch/arm/boot/dts/imx6qdl-apalis.dtsi26
-rw-r--r--arch/arm/boot/dts/imx6qdl-colibri.dtsi26
-rw-r--r--arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi14
-rw-r--r--arch/arm/boot/dts/imx6qdl-sabresd.dtsi6
-rw-r--r--arch/arm/boot/dts/imx6sl.dtsi8
-rw-r--r--arch/arm/boot/dts/imx6sll-evk.dts2
-rw-r--r--arch/arm/boot/dts/imx6sx.dtsi21
-rw-r--r--arch/arm/boot/dts/imx6ul-phytec-pcl063.dtsi148
-rw-r--r--arch/arm/boot/dts/imx6ul-phytec-peb-eval-01.dtsi55
-rw-r--r--arch/arm/boot/dts/imx6ul-phytec-phyboard-segin-full.dts89
-rw-r--r--arch/arm/boot/dts/imx6ul-phytec-phyboard-segin.dtsi329
-rw-r--r--arch/arm/boot/dts/imx6ull-colibri.dtsi8
-rw-r--r--arch/arm/boot/dts/imx6ull.dtsi12
-rw-r--r--arch/arm/boot/dts/imx7d.dtsi9
-rw-r--r--arch/arm/boot/dts/imx7ulp.dtsi19
-rw-r--r--arch/arm/boot/dts/integrator.dtsi10
-rw-r--r--arch/arm/boot/dts/integratorcp.dts89
-rw-r--r--arch/arm/boot/dts/kirkwood-dir665.dts47
-rw-r--r--arch/arm/boot/dts/kirkwood-dnskw.dtsi4
-rw-r--r--arch/arm/boot/dts/kirkwood-linksys-viper.dts47
-rw-r--r--arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts47
-rw-r--r--arch/arm/boot/dts/kirkwood-rd88f6281-z0.dts9
-rw-r--r--arch/arm/boot/dts/kirkwood-rd88f6281.dtsi41
-rw-r--r--arch/arm/boot/dts/kirkwood.dtsi3
-rw-r--r--arch/arm/boot/dts/lpc3250-ea3250.dts20
-rw-r--r--arch/arm/boot/dts/lpc3250-phy3250.dts87
-rw-r--r--arch/arm/boot/dts/lpc32xx.dtsi32
-rw-r--r--arch/arm/boot/dts/lpc4350-hitex-eval.dts2
-rw-r--r--arch/arm/boot/dts/lpc4357-ea4357-devkit.dts2
-rw-r--r--arch/arm/boot/dts/lpc4357-myd-lpc4357.dts619
-rw-r--r--arch/arm/boot/dts/ls1021a-moxa-uc-8410a.dts1
-rw-r--r--arch/arm/boot/dts/ls1021a-qds.dts1
-rw-r--r--arch/arm/boot/dts/ls1021a-twr.dts1
-rw-r--r--arch/arm/boot/dts/ls1021a.dtsi19
-rw-r--r--arch/arm/boot/dts/meson.dtsi12
-rw-r--r--arch/arm/boot/dts/meson6-atv1200.dts1
-rw-r--r--arch/arm/boot/dts/meson6.dtsi8
-rw-r--r--arch/arm/boot/dts/meson8-minix-neo-x8.dts1
-rw-r--r--arch/arm/boot/dts/meson8.dtsi89
-rw-r--r--arch/arm/boot/dts/meson8b-ec100.dts131
-rw-r--r--arch/arm/boot/dts/meson8b-mxq.dts1
-rw-r--r--arch/arm/boot/dts/meson8b-odroidc1.dts10
-rw-r--r--arch/arm/boot/dts/meson8b.dtsi83
-rw-r--r--arch/arm/boot/dts/meson8m2-mxiii-plus.dts9
-rw-r--r--arch/arm/boot/dts/meson8m2.dtsi4
-rw-r--r--arch/arm/boot/dts/milbeaut-m10v-evb.dts32
-rw-r--r--arch/arm/boot/dts/milbeaut-m10v.dtsi95
-rw-r--r--arch/arm/boot/dts/mmp2-brownstone.dts1
-rw-r--r--arch/arm/boot/dts/mmp2.dtsi4
-rw-r--r--arch/arm/boot/dts/motorola-cpcap-mapphone.dtsi2
-rw-r--r--arch/arm/boot/dts/moxart.dtsi3
-rw-r--r--arch/arm/boot/dts/mps2.dtsi6
-rw-r--r--arch/arm/boot/dts/mt2701-evb.dts1
-rw-r--r--arch/arm/boot/dts/mt2701.dtsi3
-rw-r--r--arch/arm/boot/dts/mt6580-evbp1.dts1
-rw-r--r--arch/arm/boot/dts/mt6580.dtsi1
-rw-r--r--arch/arm/boot/dts/mt6589-aquaris5.dts1
-rw-r--r--arch/arm/boot/dts/mt6589.dtsi3
-rw-r--r--arch/arm/boot/dts/mt6592-evb.dts2
-rw-r--r--arch/arm/boot/dts/mt6592.dtsi3
-rw-r--r--arch/arm/boot/dts/mt7623.dtsi15
-rw-r--r--arch/arm/boot/dts/mt8127-moose.dts1
-rw-r--r--arch/arm/boot/dts/mt8127.dtsi3
-rw-r--r--arch/arm/boot/dts/mt8135-evbp1.dts1
-rw-r--r--arch/arm/boot/dts/mt8135.dtsi3
-rw-r--r--arch/arm/boot/dts/nspire.dtsi4
-rw-r--r--arch/arm/boot/dts/omap3-evm-common.dtsi7
-rw-r--r--arch/arm/boot/dts/omap3-evm-processor-common.dtsi10
-rw-r--r--arch/arm/boot/dts/omap3-gta04.dtsi43
-rw-r--r--arch/arm/boot/dts/omap3-gta04a5.dts2
-rw-r--r--arch/arm/boot/dts/omap3-n900.dts2
-rw-r--r--arch/arm/boot/dts/omap3-n950-n9.dtsi42
-rw-r--r--arch/arm/boot/dts/omap4-droid4-xt894.dts21
-rw-r--r--arch/arm/boot/dts/omap4-panda-common.dtsi6
-rw-r--r--arch/arm/boot/dts/omap4-sdp.dts30
-rw-r--r--arch/arm/boot/dts/omap5-board-common.dtsi9
-rw-r--r--arch/arm/boot/dts/omap5-cm-t54.dts12
-rw-r--r--arch/arm/boot/dts/omap5-l4.dtsi2
-rw-r--r--arch/arm/boot/dts/orion5x-lacie-d2-network.dts1
-rw-r--r--arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts1
-rw-r--r--arch/arm/boot/dts/orion5x-lswsgl.dts1
-rw-r--r--arch/arm/boot/dts/orion5x-maxtor-shared-storage-2.dts1
-rw-r--r--arch/arm/boot/dts/orion5x-netgear-wnr854t.dts1
-rw-r--r--arch/arm/boot/dts/orion5x-rd88f5182-nas.dts1
-rw-r--r--arch/arm/boot/dts/orion5x.dtsi4
-rw-r--r--arch/arm/boot/dts/ox810se.dtsi4
-rw-r--r--arch/arm/boot/dts/ox820.dtsi4
-rw-r--r--arch/arm/boot/dts/picoxcell-pc3x2.dtsi1
-rw-r--r--arch/arm/boot/dts/picoxcell-pc3x3.dtsi1
-rw-r--r--arch/arm/boot/dts/prima2-evb.dts1
-rw-r--r--arch/arm/boot/dts/prima2.dtsi1
-rw-r--r--arch/arm/boot/dts/pxa168.dtsi4
-rw-r--r--arch/arm/boot/dts/pxa2xx.dtsi3
-rw-r--r--arch/arm/boot/dts/pxa910.dtsi4
-rw-r--r--arch/arm/boot/dts/qcom-apq8060-dragonboard.dts21
-rw-r--r--arch/arm/boot/dts/qcom-apq8064.dtsi54
-rw-r--r--arch/arm/boot/dts/qcom-apq8084.dtsi9
-rw-r--r--arch/arm/boot/dts/qcom-ipq4019.dtsi11
-rw-r--r--arch/arm/boot/dts/qcom-ipq8064.dtsi8
-rw-r--r--arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi1
-rw-r--r--arch/arm/boot/dts/qcom-mdm9615.dtsi13
-rw-r--r--arch/arm/boot/dts/qcom-msm8660.dtsi72
-rw-r--r--arch/arm/boot/dts/qcom-msm8960.dtsi9
-rw-r--r--arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts130
-rw-r--r--arch/arm/boot/dts/qcom-msm8974.dtsi19
-rw-r--r--arch/arm/boot/dts/qcom-pm8941.dtsi39
-rw-r--r--arch/arm/boot/dts/qcom-pma8084.dtsi24
-rw-r--r--arch/arm/boot/dts/r7s9210-rza2mevb.dts82
-rw-r--r--arch/arm/boot/dts/r7s9210.dtsi218
-rw-r--r--arch/arm/boot/dts/r8a7743.dtsi79
-rw-r--r--arch/arm/boot/dts/r8a7744.dtsi188
-rw-r--r--arch/arm/boot/dts/r8a77470-iwg23s-sbc.dts18
-rw-r--r--arch/arm/boot/dts/r8a7778.dtsi28
-rw-r--r--arch/arm/boot/dts/r8a7779.dtsi26
-rw-r--r--arch/arm/boot/dts/r8a7790-stout.dts15
-rw-r--r--arch/arm/boot/dts/rk3036-kylin.dts1
-rw-r--r--arch/arm/boot/dts/rk3036.dtsi1
-rw-r--r--arch/arm/boot/dts/rk3066a-bqcurie2.dts1
-rw-r--r--arch/arm/boot/dts/rk3066a-mk808.dts1
-rw-r--r--arch/arm/boot/dts/rk3066a-rayeager.dts2
-rw-r--r--arch/arm/boot/dts/rk3066a.dtsi48
-rw-r--r--arch/arm/boot/dts/rk3188-bqedison2qc.dts19
-rw-r--r--arch/arm/boot/dts/rk3188-px3-evb.dts1
-rw-r--r--arch/arm/boot/dts/rk3188.dtsi1
-rw-r--r--arch/arm/boot/dts/rk3229-evb.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-fennec.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-firefly-reload.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-miqi.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-popmetal.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-rock2-square.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-tinker-s.dts1
-rw-r--r--arch/arm/boot/dts/rk3288-veyron.dtsi4
-rw-r--r--arch/arm/boot/dts/rk3288-vyasa.dts1
-rw-r--r--arch/arm/boot/dts/rv1108-elgin-r1.dts208
-rw-r--r--arch/arm/boot/dts/rv1108-evb.dts20
-rw-r--r--arch/arm/boot/dts/rv1108.dtsi37
-rw-r--r--arch/arm/boot/dts/s3c2416-smdk2416.dts5
-rw-r--r--arch/arm/boot/dts/s5pv210-aries.dtsi90
-rw-r--r--arch/arm/boot/dts/s5pv210-fascinate4g.dts7
-rw-r--r--arch/arm/boot/dts/s5pv210-galaxys.dts7
-rw-r--r--arch/arm/boot/dts/s5pv210.dtsi25
-rw-r--r--arch/arm/boot/dts/sama5d2.dtsi4
-rw-r--r--arch/arm/boot/dts/sama5d3.dtsi4
-rw-r--r--arch/arm/boot/dts/sama5d4.dtsi4
-rw-r--r--arch/arm/boot/dts/skeleton.dtsi18
-rw-r--r--arch/arm/boot/dts/skeleton64.dtsi14
-rw-r--r--arch/arm/boot/dts/socfpga.dtsi16
-rw-r--r--arch/arm/boot/dts/socfpga_arria10.dtsi18
-rw-r--r--arch/arm/boot/dts/socfpga_cyclone5_chameleon96.dts130
-rw-r--r--arch/arm/boot/dts/spear13xx.dtsi4
-rw-r--r--arch/arm/boot/dts/spear3xx.dtsi4
-rw-r--r--arch/arm/boot/dts/spear600.dtsi4
-rw-r--r--arch/arm/boot/dts/ste-nomadik-nhk15.dts85
-rw-r--r--arch/arm/boot/dts/ste-nomadik-stn8815.dtsi2
-rw-r--r--arch/arm/boot/dts/ste-u300.dts2
-rw-r--r--arch/arm/boot/dts/stm32429i-eval.dts1
-rw-r--r--arch/arm/boot/dts/stm32746g-eval.dts1
-rw-r--r--arch/arm/boot/dts/stm32f429-disco.dts1
-rw-r--r--arch/arm/boot/dts/stm32f429.dtsi64
-rw-r--r--arch/arm/boot/dts/stm32f469-disco.dts1
-rw-r--r--arch/arm/boot/dts/stm32f746-disco.dts1
-rw-r--r--arch/arm/boot/dts/stm32f746.dtsi4
-rw-r--r--arch/arm/boot/dts/stm32f769-disco.dts1
-rw-r--r--arch/arm/boot/dts/stm32h743-pinctrl.dtsi15
-rw-r--r--arch/arm/boot/dts/stm32h743.dtsi17
-rw-r--r--arch/arm/boot/dts/stm32h743i-disco.dts18
-rw-r--r--arch/arm/boot/dts/stm32h743i-eval.dts18
-rw-r--r--arch/arm/boot/dts/stm32mp157-pinctrl.dtsi7
-rw-r--r--arch/arm/boot/dts/stm32mp157c-ed1.dts8
-rw-r--r--arch/arm/boot/dts/stm32mp157c-ev1.dts10
-rw-r--r--arch/arm/boot/dts/stm32mp157c.dtsi97
-rw-r--r--arch/arm/boot/dts/sun4i-a10.dtsi44
-rw-r--r--arch/arm/boot/dts/sun5i-a13-q8-tablet.dts7
-rw-r--r--arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi2
-rw-r--r--arch/arm/boot/dts/sun6i-a31.dtsi1
-rw-r--r--arch/arm/boot/dts/sun7i-a20-bananapi.dts5
-rw-r--r--arch/arm/boot/dts/sun8i-a23-a33.dtsi175
-rw-r--r--arch/arm/boot/dts/sun8i-a23-q8-tablet.dts4
-rw-r--r--arch/arm/boot/dts/sun8i-a23.dtsi20
-rw-r--r--arch/arm/boot/dts/sun8i-a33.dtsi194
-rw-r--r--arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts4
-rw-r--r--arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts8
-rw-r--r--arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts8
-rw-r--r--arch/arm/boot/dts/sun8i-h3-beelink-x2.dts2
-rw-r--r--arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts25
-rw-r--r--arch/arm/boot/dts/sun8i-q8-common.dtsi37
-rw-r--r--arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts41
-rw-r--r--arch/arm/boot/dts/sun8i-r40.dtsi15
-rw-r--r--arch/arm/boot/dts/sun9i-a80-cubieboard4.dts44
-rw-r--r--arch/arm/boot/dts/sun9i-a80-optimus.dts44
-rw-r--r--arch/arm/boot/dts/sun9i-a80.dtsi65
-rw-r--r--arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi16
-rw-r--r--arch/arm/boot/dts/sunxi-h3-h5.dtsi3
-rw-r--r--arch/arm/boot/dts/tegra114-dalmore.dts2
-rw-r--r--arch/arm/boot/dts/tegra124-jetson-tk1.dts2
-rw-r--r--arch/arm/boot/dts/tegra124-nyan.dtsi19
-rw-r--r--arch/arm/boot/dts/tegra124-venice2.dts2
-rw-r--r--arch/arm/boot/dts/tegra20-trimslice.dts2
-rw-r--r--arch/arm/boot/dts/tegra20.dtsi15
-rw-r--r--arch/arm/boot/dts/tegra30-beaver.dts2
-rw-r--r--arch/arm/boot/dts/tegra30-cardhu.dtsi2
-rw-r--r--arch/arm/boot/dts/versatile-ab.dts2
-rw-r--r--arch/arm/boot/dts/vexpress-v2m-rs1.dtsi2
-rw-r--r--arch/arm/boot/dts/vexpress-v2m.dtsi2
-rw-r--r--arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts5
-rw-r--r--arch/arm/boot/dts/vf610-bk4.dts35
-rw-r--r--arch/arm/boot/dts/vf610-zii-cfu1.dts2
-rw-r--r--arch/arm/boot/dts/vf610-zii-ssmb-dtu.dts311
-rw-r--r--arch/arm/boot/dts/vf610-zii-ssmb-spu3.dts3
-rw-r--r--arch/arm/boot/dts/vt8500.dtsi9
-rw-r--r--arch/arm/boot/dts/wm8505.dtsi9
-rw-r--r--arch/arm/boot/dts/wm8650.dtsi9
-rw-r--r--arch/arm/boot/dts/wm8750.dtsi9
-rw-r--r--arch/arm/boot/dts/wm8850.dtsi9
-rw-r--r--arch/arm/boot/dts/zx296702-ad1.dts1
-rw-r--r--arch/arm/boot/dts/zx296702.dtsi4
-rw-r--r--arch/arm/boot/dts/zynq-zturn.dts2
-rw-r--r--arch/arm/common/mcpm_entry.c2
-rw-r--r--arch/arm/configs/axm55xx_defconfig4
-rw-r--r--arch/arm/configs/bcm2835_defconfig4
-rw-r--r--arch/arm/configs/cns3420vb_defconfig1
-rw-r--r--arch/arm/configs/efm32_defconfig1
-rw-r--r--arch/arm/configs/eseries_pxa_defconfig1
-rw-r--r--arch/arm/configs/gemini_defconfig1
-rw-r--r--arch/arm/configs/integrator_defconfig9
-rw-r--r--arch/arm/configs/lpc18xx_defconfig31
-rw-r--r--arch/arm/configs/lpc32xx_defconfig65
-rw-r--r--arch/arm/configs/milbeaut_m10v_defconfig119
-rw-r--r--arch/arm/configs/mini2440_defconfig1
-rw-r--r--arch/arm/configs/moxart_defconfig1
-rw-r--r--arch/arm/configs/mps2_defconfig1
-rw-r--r--arch/arm/configs/multi_v7_defconfig10
-rw-r--r--arch/arm/configs/nhk8815_defconfig41
-rw-r--r--arch/arm/configs/nuc910_defconfig1
-rw-r--r--arch/arm/configs/nuc950_defconfig1
-rw-r--r--arch/arm/configs/nuc960_defconfig1
-rw-r--r--arch/arm/configs/omap2plus_defconfig83
-rw-r--r--arch/arm/configs/pxa_defconfig5
-rw-r--r--arch/arm/configs/raumfeld_defconfig197
-rw-r--r--arch/arm/configs/s5pv210_defconfig47
-rw-r--r--arch/arm/configs/shmobile_defconfig48
-rw-r--r--arch/arm/configs/socfpga_defconfig25
-rw-r--r--arch/arm/configs/spear3xx_defconfig6
-rw-r--r--arch/arm/configs/stm32_defconfig1
-rw-r--r--arch/arm/crypto/aes-ce-core.S26
-rw-r--r--arch/arm/crypto/crct10dif-ce-core.S568
-rw-r--r--arch/arm/crypto/crct10dif-ce-glue.c25
-rw-r--r--arch/arm/crypto/sha256-armv4.pl3
-rw-r--r--arch/arm/crypto/sha256-core.S_shipped3
-rw-r--r--arch/arm/crypto/sha512-armv4.pl3
-rw-r--r--arch/arm/crypto/sha512-core.S_shipped3
-rw-r--r--arch/arm/include/asm/arch_gicv3.h37
-rw-r--r--arch/arm/include/asm/assembler.h12
-rw-r--r--arch/arm/include/asm/barrier.h2
-rw-r--r--arch/arm/include/asm/dma-mapping.h9
-rw-r--r--arch/arm/include/asm/hardware/entry-macro-iomd.S10
-rw-r--r--arch/arm/include/asm/irq.h1
-rw-r--r--arch/arm/include/asm/kvm_emulate.h8
-rw-r--r--arch/arm/include/asm/kvm_host.h63
-rw-r--r--arch/arm/include/asm/kvm_hyp.h4
-rw-r--r--arch/arm/include/asm/kvm_mmu.h9
-rw-r--r--arch/arm/include/asm/kvm_ras.h14
-rw-r--r--arch/arm/include/asm/pgtable.h3
-rw-r--r--arch/arm/include/asm/processor.h6
-rw-r--r--arch/arm/include/asm/smp.h1
-rw-r--r--arch/arm/include/asm/smp_twd.h16
-rw-r--r--arch/arm/include/asm/spinlock.h3
-rw-r--r--arch/arm/include/asm/stage2_pgtable.h5
-rw-r--r--arch/arm/include/asm/suspend.h1
-rw-r--r--arch/arm/include/asm/system_misc.h5
-rw-r--r--arch/arm/include/asm/uaccess.h4
-rw-r--r--arch/arm/include/asm/unistd.h5
-rw-r--r--arch/arm/include/asm/v7m.h2
-rw-r--r--arch/arm/include/asm/vfpmacros.h8
-rw-r--r--arch/arm/include/asm/xen/page-coherent.h94
-rw-r--r--arch/arm/include/debug/tegra.S2
-rw-r--r--arch/arm/kernel/debug.S2
-rw-r--r--arch/arm/kernel/entry-armv.S12
-rw-r--r--arch/arm/kernel/entry-common.S2
-rw-r--r--arch/arm/kernel/entry-header.S11
-rw-r--r--arch/arm/kernel/entry-v7m.S4
-rw-r--r--arch/arm/kernel/head-nommu.S4
-rw-r--r--arch/arm/kernel/hyp-stub.S4
-rw-r--r--arch/arm/kernel/irq.c62
-rw-r--r--arch/arm/kernel/machine_kexec.c5
-rw-r--r--arch/arm/kernel/patch.c6
-rw-r--r--arch/arm/kernel/process.c2
-rw-r--r--arch/arm/kernel/setup.c6
-rw-r--r--arch/arm/kernel/sleep.S12
-rw-r--r--arch/arm/kernel/smp.c12
-rw-r--r--arch/arm/kernel/smp_twd.c66
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c8
-rw-r--r--arch/arm/kernel/unwind.c14
-rw-r--r--arch/arm/kvm/Makefile5
-rw-r--r--arch/arm/kvm/coproc.c27
-rw-r--r--arch/arm/kvm/hyp/cp15-sr.c1
-rw-r--r--arch/arm/kvm/hyp/hyp-entry.S2
-rw-r--r--arch/arm/kvm/hyp/switch.c2
-rw-r--r--arch/arm/kvm/hyp/tlb.c4
-rw-r--r--arch/arm/kvm/interrupts.S4
-rw-r--r--arch/arm/kvm/reset.c24
-rw-r--r--arch/arm/lib/Makefile2
-rw-r--r--arch/arm/lib/bitops.h8
-rw-r--r--arch/arm/lib/clear_user.S2
-rw-r--r--arch/arm/lib/copy_from_user.S2
-rw-r--r--arch/arm/lib/copy_page.S4
-rw-r--r--arch/arm/lib/copy_template.S6
-rw-r--r--arch/arm/lib/copy_to_user.S2
-rw-r--r--arch/arm/lib/csumpartial.S20
-rw-r--r--arch/arm/lib/csumpartialcopygeneric.S4
-rw-r--r--arch/arm/lib/csumpartialcopyuser.S2
-rw-r--r--arch/arm/lib/div64.S4
-rw-r--r--arch/arm/lib/floppydma.S10
-rw-r--r--arch/arm/lib/io-readsb.S20
-rw-r--r--arch/arm/lib/io-readsl.S2
-rw-r--r--arch/arm/lib/io-readsw-armv3.S6
-rw-r--r--arch/arm/lib/io-readsw-armv4.S12
-rw-r--r--arch/arm/lib/io-writesb.S20
-rw-r--r--arch/arm/lib/io-writesl.S2
-rw-r--r--arch/arm/lib/io-writesw-armv3.S2
-rw-r--r--arch/arm/lib/io-writesw-armv4.S6
-rw-r--r--arch/arm/lib/lib1funcs.S4
-rw-r--r--arch/arm/lib/memcpy.S4
-rw-r--r--arch/arm/lib/memmove.S24
-rw-r--r--arch/arm/lib/memset.S42
-rw-r--r--arch/arm/lib/xor-neon.c2
-rw-r--r--arch/arm/mach-actions/platsmp.c15
-rw-r--r--arch/arm/mach-bcm/Kconfig1
-rw-r--r--arch/arm/mach-cns3xxx/pcie.c4
-rw-r--r--arch/arm/mach-davinci/Kconfig19
-rw-r--r--arch/arm/mach-davinci/Makefile3
-rw-r--r--arch/arm/mach-davinci/asp.h8
-rw-r--r--arch/arm/mach-davinci/board-da830-evm.c95
-rw-r--r--arch/arm/mach-davinci/board-da850-evm.c59
-rw-r--r--arch/arm/mach-davinci/board-dm355-evm.c6
-rw-r--r--arch/arm/mach-davinci/board-dm355-leopard.c2
-rw-r--r--arch/arm/mach-davinci/board-dm365-evm.c15
-rw-r--r--arch/arm/mach-davinci/board-dm644x-evm.c25
-rw-r--r--arch/arm/mach-davinci/board-dm646x-evm.c19
-rw-r--r--arch/arm/mach-davinci/board-mityomapl138.c41
-rw-r--r--arch/arm/mach-davinci/board-neuros-osd2.c2
-rw-r--r--arch/arm/mach-davinci/board-omapl138-hawk.c88
-rw-r--r--arch/arm/mach-davinci/board-sffsdr.c15
-rw-r--r--arch/arm/mach-davinci/common.c18
-rw-r--r--arch/arm/mach-davinci/cp_intc.c215
-rw-r--r--arch/arm/mach-davinci/cp_intc.h57
-rw-r--r--arch/arm/mach-davinci/da830.c128
-rw-r--r--arch/arm/mach-davinci/da850.c156
-rw-r--r--arch/arm/mach-davinci/davinci.h4
-rw-r--r--arch/arm/mach-davinci/devices-da8xx.c147
-rw-r--r--arch/arm/mach-davinci/devices.c40
-rw-r--r--arch/arm/mach-davinci/dm355.c78
-rw-r--r--arch/arm/mach-davinci/dm365.c102
-rw-r--r--arch/arm/mach-davinci/dm644x.c68
-rw-r--r--arch/arm/mach-davinci/dm646x.c82
-rw-r--r--arch/arm/mach-davinci/include/mach/common.h14
-rw-r--r--arch/arm/mach-davinci/include/mach/cpufreq.h26
-rw-r--r--arch/arm/mach-davinci/include/mach/da8xx.h2
-rw-r--r--arch/arm/mach-davinci/include/mach/entry-macro.S39
-rw-r--r--arch/arm/mach-davinci/irq.c117
-rw-r--r--arch/arm/mach-davinci/irqs.h (renamed from arch/arm/mach-davinci/include/mach/irqs.h)4
-rw-r--r--arch/arm/mach-davinci/usb-da8xx.c9
-rw-r--r--arch/arm/mach-davinci/usb.c15
-rw-r--r--arch/arm/mach-ep93xx/ts72xx.c1
-rw-r--r--arch/arm/mach-exynos/headsmp.S2
-rw-r--r--arch/arm/mach-exynos/platsmp.c35
-rw-r--r--arch/arm/mach-imx/Makefile3
-rw-r--r--arch/arm/mach-imx/common.h10
-rw-r--r--arch/arm/mach-imx/cpuidle-imx7ulp.c60
-rw-r--r--arch/arm/mach-imx/cpuidle.h5
-rw-r--r--arch/arm/mach-imx/mach-imx27_visstrim_m10.c12
-rw-r--r--arch/arm/mach-imx/mach-imx7ulp.c46
-rw-r--r--arch/arm/mach-imx/mach-mx21ads.c1
-rw-r--r--arch/arm/mach-imx/mach-mx27ads.c2
-rw-r--r--arch/arm/mach-imx/mach-mx31moboard.c3
-rw-r--r--arch/arm/mach-imx/mmdc.c9
-rw-r--r--arch/arm/mach-imx/pm-imx7ulp.c49
-rw-r--r--arch/arm/mach-integrator/impd1.c8
-rw-r--r--arch/arm/mach-iop32x/n2100.c3
-rw-r--r--arch/arm/mach-ks8695/include/mach/entry-macro.S2
-rw-r--r--arch/arm/mach-lpc32xx/phy3250.c84
-rw-r--r--arch/arm/mach-lpc32xx/pm.c13
-rw-r--r--arch/arm/mach-mediatek/Kconfig4
-rw-r--r--arch/arm/mach-mediatek/mediatek.c3
-rw-r--r--arch/arm/mach-mediatek/platsmp.c2
-rw-r--r--arch/arm/mach-meson/Kconfig1
-rw-r--r--arch/arm/mach-milbeaut/Kconfig20
-rw-r--r--arch/arm/mach-milbeaut/Makefile1
-rw-r--r--arch/arm/mach-milbeaut/platsmp.c143
-rw-r--r--arch/arm/mach-mmp/brownstone.c1
-rw-r--r--arch/arm/mach-omap1/board-ams-delta.c2
-rw-r--r--arch/arm/mach-omap1/board-nokia770.c18
-rw-r--r--arch/arm/mach-omap2/cpuidle44xx.c16
-rw-r--r--arch/arm/mach-omap2/display.c7
-rw-r--r--arch/arm/mach-omap2/omap-wakeupgen.c36
-rw-r--r--arch/arm/mach-omap2/omap_hwmod.c16
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_81xx_data.c131
-rw-r--r--arch/arm/mach-omap2/pdata-quirks.c1
-rw-r--r--arch/arm/mach-omap2/prm_common.c4
-rw-r--r--arch/arm/mach-orion5x/common.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f5181l-ge-setup.c2
-rw-r--r--arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c2
-rw-r--r--arch/arm/mach-orion5x/wnr854t-setup.c2
-rw-r--r--arch/arm/mach-orion5x/wrt350n-v2-setup.c2
-rw-r--r--arch/arm/mach-oxnas/Makefile1
-rw-r--r--arch/arm/mach-oxnas/hotplug.c109
-rw-r--r--arch/arm/mach-oxnas/platsmp.c4
-rw-r--r--arch/arm/mach-prima2/common.h2
-rw-r--r--arch/arm/mach-prima2/headsmp.S2
-rw-r--r--arch/arm/mach-prima2/hotplug.c3
-rw-r--r--arch/arm/mach-prima2/platsmp.c17
-rw-r--r--arch/arm/mach-pxa/Kconfig18
-rw-r--r--arch/arm/mach-pxa/Makefile3
-rw-r--r--arch/arm/mach-pxa/cm-x255.c2
-rw-r--r--arch/arm/mach-pxa/cm-x270.c2
-rw-r--r--arch/arm/mach-pxa/corgi.c2
-rw-r--r--arch/arm/mach-pxa/devices.c2
-rw-r--r--arch/arm/mach-pxa/em-x270.c5
-rw-r--r--arch/arm/mach-pxa/ezx.c3
-rw-r--r--arch/arm/mach-pxa/hx4700.c25
-rw-r--r--arch/arm/mach-pxa/icontrol.c4
-rw-r--r--arch/arm/mach-pxa/include/mach/pxa25x-udc.h0
-rw-r--r--arch/arm/mach-pxa/littleton.c2
-rw-r--r--arch/arm/mach-pxa/lubbock.c2
-rw-r--r--arch/arm/mach-pxa/magician.c25
-rw-r--r--arch/arm/mach-pxa/pcm027.c2
-rw-r--r--arch/arm/mach-pxa/poodle.c2
-rw-r--r--arch/arm/mach-pxa/raumfeld.c1187
-rw-r--r--arch/arm/mach-pxa/spitz.c2
-rw-r--r--arch/arm/mach-pxa/stargate2.c6
-rw-r--r--arch/arm/mach-pxa/tosa.c2
-rw-r--r--arch/arm/mach-pxa/z2.c4
-rw-r--r--arch/arm/mach-pxa/zeus.c5
-rw-r--r--arch/arm/mach-qcom/platsmp.c26
-rw-r--r--arch/arm/mach-s3c24xx/mach-osiris-dvs.c8
-rw-r--r--arch/arm/mach-sa1100/assabet.c1
-rw-r--r--arch/arm/mach-sa1100/simpad.c1
-rw-r--r--arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c5
-rw-r--r--arch/arm/mach-socfpga/socfpga.c3
-rw-r--r--arch/arm/mach-spear/generic.h2
-rw-r--r--arch/arm/mach-spear/headsmp.S2
-rw-r--r--arch/arm/mach-spear/hotplug.c4
-rw-r--r--arch/arm/mach-spear/platsmp.c27
-rw-r--r--arch/arm/mach-sunxi/sunxi.c2
-rw-r--r--arch/arm/mach-tango/pm.c6
-rw-r--r--arch/arm/mach-tango/pm.h7
-rw-r--r--arch/arm/mach-tango/setup.c2
-rw-r--r--arch/arm/mach-tegra/iomap.h9
-rw-r--r--arch/arm/mach-tegra/reset-handler.S2
-rw-r--r--arch/arm/mach-tegra/sleep-tegra20.S2
-rw-r--r--arch/arm/mach-tegra/sleep-tegra30.S25
-rw-r--r--arch/arm/mm/cache-l2x0-pmu.c9
-rw-r--r--arch/arm/mm/cache-v6.S8
-rw-r--r--arch/arm/mm/copypage-v4mc.c3
-rw-r--r--arch/arm/mm/copypage-v4wb.c3
-rw-r--r--arch/arm/mm/copypage-v4wt.c3
-rw-r--r--arch/arm/mm/dma-mapping.c6
-rw-r--r--arch/arm/mm/idmap.c4
-rw-r--r--arch/arm/mm/init.c75
-rw-r--r--arch/arm/mm/mmu.c25
-rw-r--r--arch/arm/mm/pmsa-v8.c4
-rw-r--r--arch/arm/mm/proc-v7m.S7
-rw-r--r--arch/arm/net/bpf_jit_32.c53
-rw-r--r--arch/arm/net/bpf_jit_32.h2
-rw-r--r--arch/arm/plat-orion/common.c2
-rw-r--r--arch/arm/plat-pxa/ssp.c3
-rw-r--r--arch/arm/probes/kprobes/opt-arm.c2
-rw-r--r--arch/arm/tools/syscall.tbl85
-rw-r--r--arch/arm/xen/hypercall.S3
-rw-r--r--arch/arm/xen/mm.c1
617 files changed, 11445 insertions, 5657 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index 664e918e2624..054ead960f98 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -2,6 +2,7 @@
2config ARM 2config ARM
3 bool 3 bool
4 default y 4 default y
5 select ARCH_32BIT_OFF_T
5 select ARCH_CLOCKSOURCE_DATA 6 select ARCH_CLOCKSOURCE_DATA
6 select ARCH_DISCARD_MEMBLOCK if !HAVE_ARCH_PFN_VALID && !KEXEC 7 select ARCH_DISCARD_MEMBLOCK if !HAVE_ARCH_PFN_VALID && !KEXEC
7 select ARCH_HAS_DEBUG_VIRTUAL if MMU 8 select ARCH_HAS_DEBUG_VIRTUAL if MMU
@@ -12,9 +13,11 @@ config ARM
12 select ARCH_HAS_MEMBARRIER_SYNC_CORE 13 select ARCH_HAS_MEMBARRIER_SYNC_CORE
13 select ARCH_HAS_PTE_SPECIAL if ARM_LPAE 14 select ARCH_HAS_PTE_SPECIAL if ARM_LPAE
14 select ARCH_HAS_PHYS_TO_DMA 15 select ARCH_HAS_PHYS_TO_DMA
16 select ARCH_HAS_SETUP_DMA_OPS
15 select ARCH_HAS_SET_MEMORY 17 select ARCH_HAS_SET_MEMORY
16 select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL 18 select ARCH_HAS_STRICT_KERNEL_RWX if MMU && !XIP_KERNEL
17 select ARCH_HAS_STRICT_MODULE_RWX if MMU 19 select ARCH_HAS_STRICT_MODULE_RWX if MMU
20 select ARCH_HAS_TEARDOWN_DMA_OPS if MMU
18 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST 21 select ARCH_HAS_TICK_BROADCAST if GENERIC_CLOCKEVENTS_BROADCAST
19 select ARCH_HAVE_CUSTOM_GPIO_H 22 select ARCH_HAVE_CUSTOM_GPIO_H
20 select ARCH_HAS_GCOV_PROFILE_ALL 23 select ARCH_HAS_GCOV_PROFILE_ALL
@@ -30,6 +33,7 @@ config ARM
30 select CLONE_BACKWARDS 33 select CLONE_BACKWARDS
31 select CPU_PM if SUSPEND || CPU_IDLE 34 select CPU_PM if SUSPEND || CPU_IDLE
32 select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS 35 select DCACHE_WORD_ACCESS if HAVE_EFFICIENT_UNALIGNED_ACCESS
36 select DMA_DECLARE_COHERENT
33 select DMA_REMAP if MMU 37 select DMA_REMAP if MMU
34 select EDAC_SUPPORT 38 select EDAC_SUPPORT
35 select EDAC_ATOMIC_SCRUB 39 select EDAC_ATOMIC_SCRUB
@@ -72,7 +76,6 @@ config ARM
72 select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL 76 select HAVE_FUNCTION_GRAPH_TRACER if !THUMB2_KERNEL
73 select HAVE_FUNCTION_TRACER if !XIP_KERNEL 77 select HAVE_FUNCTION_TRACER if !XIP_KERNEL
74 select HAVE_GCC_PLUGINS 78 select HAVE_GCC_PLUGINS
75 select HAVE_GENERIC_DMA_COHERENT
76 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7) 79 select HAVE_HW_BREAKPOINT if PERF_EVENTS && (CPU_V6 || CPU_V6K || CPU_V7)
77 select HAVE_IDE if PCI || ISA || PCMCIA 80 select HAVE_IDE if PCI || ISA || PCMCIA
78 select HAVE_IRQ_TIME_ACCOUNTING 81 select HAVE_IRQ_TIME_ACCOUNTING
@@ -101,7 +104,6 @@ config ARM
101 select MODULES_USE_ELF_REL 104 select MODULES_USE_ELF_REL
102 select NEED_DMA_MAP_STATE 105 select NEED_DMA_MAP_STATE
103 select OF_EARLY_FLATTREE if OF 106 select OF_EARLY_FLATTREE if OF
104 select OF_RESERVED_MEM if OF
105 select OLD_SIGACTION 107 select OLD_SIGACTION
106 select OLD_SIGSUSPEND3 108 select OLD_SIGSUSPEND3
107 select PCI_SYSCALL if PCI 109 select PCI_SYSCALL if PCI
@@ -589,11 +591,13 @@ config ARCH_DAVINCI
589 select GENERIC_ALLOCATOR 591 select GENERIC_ALLOCATOR
590 select GENERIC_CLOCKEVENTS 592 select GENERIC_CLOCKEVENTS
591 select GENERIC_IRQ_CHIP 593 select GENERIC_IRQ_CHIP
594 select GENERIC_IRQ_MULTI_HANDLER
592 select GPIOLIB 595 select GPIOLIB
593 select HAVE_IDE 596 select HAVE_IDE
594 select PM_GENERIC_DOMAINS if PM 597 select PM_GENERIC_DOMAINS if PM
595 select PM_GENERIC_DOMAINS_OF if PM && OF 598 select PM_GENERIC_DOMAINS_OF if PM && OF
596 select RESET_CONTROLLER 599 select RESET_CONTROLLER
600 select SPARSE_IRQ
597 select USE_OF 601 select USE_OF
598 select ZONE_DMA 602 select ZONE_DMA
599 help 603 help
@@ -750,6 +754,8 @@ source "arch/arm/mach-mediatek/Kconfig"
750 754
751source "arch/arm/mach-meson/Kconfig" 755source "arch/arm/mach-meson/Kconfig"
752 756
757source "arch/arm/mach-milbeaut/Kconfig"
758
753source "arch/arm/mach-mmp/Kconfig" 759source "arch/arm/mach-mmp/Kconfig"
754 760
755source "arch/arm/mach-moxart/Kconfig" 761source "arch/arm/mach-moxart/Kconfig"
@@ -1304,7 +1310,7 @@ config SCHED_SMT
1304config HAVE_ARM_SCU 1310config HAVE_ARM_SCU
1305 bool 1311 bool
1306 help 1312 help
1307 This option enables support for the ARM system coherency unit 1313 This option enables support for the ARM snoop control unit
1308 1314
1309config HAVE_ARM_ARCH_TIMER 1315config HAVE_ARM_ARCH_TIMER
1310 bool "Architected timer support" 1316 bool "Architected timer support"
@@ -1316,7 +1322,6 @@ config HAVE_ARM_ARCH_TIMER
1316 1322
1317config HAVE_ARM_TWD 1323config HAVE_ARM_TWD
1318 bool 1324 bool
1319 select TIMER_OF if OF
1320 help 1325 help
1321 This options enables support for the ARM timer and watchdog unit 1326 This options enables support for the ARM timer and watchdog unit
1322 1327
@@ -1400,6 +1405,7 @@ config NR_CPUS
1400config HOTPLUG_CPU 1405config HOTPLUG_CPU
1401 bool "Support for hot-pluggable CPUs" 1406 bool "Support for hot-pluggable CPUs"
1402 depends on SMP 1407 depends on SMP
1408 select GENERIC_IRQ_MIGRATION
1403 help 1409 help
1404 Say Y here to experiment with turning CPUs off and on. CPUs 1410 Say Y here to experiment with turning CPUs off and on. CPUs
1405 can be controlled through /sys/devices/system/cpu. 1411 can be controlled through /sys/devices/system/cpu.
diff --git a/arch/arm/Kconfig-nommu b/arch/arm/Kconfig-nommu
index 1168a03c8525..36c80d3dd93f 100644
--- a/arch/arm/Kconfig-nommu
+++ b/arch/arm/Kconfig-nommu
@@ -20,10 +20,12 @@ config DRAM_SIZE
20 20
21config FLASH_MEM_BASE 21config FLASH_MEM_BASE
22 hex 'FLASH Base Address' if SET_MEM_PARAM 22 hex 'FLASH Base Address' if SET_MEM_PARAM
23 depends on CPU_ARM740T || CPU_ARM946E || CPU_ARM940T
23 default 0x00400000 24 default 0x00400000
24 25
25config FLASH_SIZE 26config FLASH_SIZE
26 hex 'FLASH Size' if SET_MEM_PARAM 27 hex 'FLASH Size' if SET_MEM_PARAM
28 depends on CPU_ARM740T || CPU_ARM946E || CPU_ARM940T
27 default 0x00400000 29 default 0x00400000
28 30
29config PROCESSOR_ID 31config PROCESSOR_ID
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 9db3c584b2cb..807a7d06c2a0 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -10,7 +10,7 @@
10# 10#
11# Copyright (C) 1995-2001 by Russell King 11# Copyright (C) 1995-2001 by Russell King
12 12
13LDFLAGS_vmlinux :=-p --no-undefined -X --pic-veneer 13LDFLAGS_vmlinux := --no-undefined -X --pic-veneer
14ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) 14ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
15LDFLAGS_vmlinux += --be8 15LDFLAGS_vmlinux += --be8
16KBUILD_LDFLAGS_MODULE += --be8 16KBUILD_LDFLAGS_MODULE += --be8
@@ -190,6 +190,7 @@ machine-$(CONFIG_ARCH_MV78XX0) += mv78xx0
190machine-$(CONFIG_ARCH_MVEBU) += mvebu 190machine-$(CONFIG_ARCH_MVEBU) += mvebu
191machine-$(CONFIG_ARCH_MXC) += imx 191machine-$(CONFIG_ARCH_MXC) += imx
192machine-$(CONFIG_ARCH_MEDIATEK) += mediatek 192machine-$(CONFIG_ARCH_MEDIATEK) += mediatek
193machine-$(CONFIG_ARCH_MILBEAUT) += milbeaut
193machine-$(CONFIG_ARCH_MXS) += mxs 194machine-$(CONFIG_ARCH_MXS) += mxs
194machine-$(CONFIG_ARCH_NETX) += netx 195machine-$(CONFIG_ARCH_NETX) += netx
195machine-$(CONFIG_ARCH_NOMADIK) += nomadik 196machine-$(CONFIG_ARCH_NOMADIK) += nomadik
diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile
index 83e1a076a5d6..981a8d03f064 100644
--- a/arch/arm/boot/bootp/Makefile
+++ b/arch/arm/boot/bootp/Makefile
@@ -8,7 +8,7 @@
8 8
9GCOV_PROFILE := n 9GCOV_PROFILE := n
10 10
11LDFLAGS_bootp :=-p --no-undefined -X \ 11LDFLAGS_bootp := --no-undefined -X \
12 --defsym initrd_phys=$(INITRD_PHYS) \ 12 --defsym initrd_phys=$(INITRD_PHYS) \
13 --defsym params_phys=$(PARAMS_PHYS) -T 13 --defsym params_phys=$(PARAMS_PHYS) -T
14AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\" 14AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\"
diff --git a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S
index 78b508075161..142927e5f485 100644
--- a/arch/arm/boot/bootp/init.S
+++ b/arch/arm/boot/bootp/init.S
@@ -44,7 +44,7 @@ _start: add lr, pc, #-0x8 @ lr = current load addr
44 */ 44 */
45 movne r10, #0 @ terminator 45 movne r10, #0 @ terminator
46 movne r4, #2 @ Size of this entry (2 words) 46 movne r4, #2 @ Size of this entry (2 words)
47 stmneia r9, {r4, r5, r10} @ Size, ATAG_CORE, terminator 47 stmiane r9, {r4, r5, r10} @ Size, ATAG_CORE, terminator
48 48
49/* 49/*
50 * find the end of the tag list, and then add an INITRD tag on the end. 50 * find the end of the tag list, and then add an INITRD tag on the end.
diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile
index 6114ae6ea466..9219389bbe61 100644
--- a/arch/arm/boot/compressed/Makefile
+++ b/arch/arm/boot/compressed/Makefile
@@ -132,8 +132,6 @@ endif
132ifeq ($(CONFIG_CPU_ENDIAN_BE8),y) 132ifeq ($(CONFIG_CPU_ENDIAN_BE8),y)
133LDFLAGS_vmlinux += --be8 133LDFLAGS_vmlinux += --be8
134endif 134endif
135# ?
136LDFLAGS_vmlinux += -p
137# Report unresolved symbol references 135# Report unresolved symbol references
138LDFLAGS_vmlinux += --no-undefined 136LDFLAGS_vmlinux += --no-undefined
139# Delete all temporary local symbols 137# Delete all temporary local symbols
diff --git a/arch/arm/boot/compressed/ll_char_wr.S b/arch/arm/boot/compressed/ll_char_wr.S
index 8517c8606b4a..b1dcdb9f4030 100644
--- a/arch/arm/boot/compressed/ll_char_wr.S
+++ b/arch/arm/boot/compressed/ll_char_wr.S
@@ -75,7 +75,7 @@ Lrow4bpplp:
75 tst r1, #7 @ avoid using r7 directly after 75 tst r1, #7 @ avoid using r7 directly after
76 str r7, [r0, -r5]! 76 str r7, [r0, -r5]!
77 subne r1, r1, #1 77 subne r1, r1, #1
78 ldrneb r7, [r6, r1] 78 ldrbne r7, [r6, r1]
79 bne Lrow4bpplp 79 bne Lrow4bpplp
80 ldmfd sp!, {r4 - r7, pc} 80 ldmfd sp!, {r4 - r7, pc}
81 81
@@ -103,7 +103,7 @@ Lrow8bpplp:
103 sub r0, r0, r5 @ avoid ip 103 sub r0, r0, r5 @ avoid ip
104 stmia r0, {r4, ip} 104 stmia r0, {r4, ip}
105 subne r1, r1, #1 105 subne r1, r1, #1
106 ldrneb r7, [r6, r1] 106 ldrbne r7, [r6, r1]
107 bne Lrow8bpplp 107 bne Lrow8bpplp
108 ldmfd sp!, {r4 - r7, pc} 108 ldmfd sp!, {r4 - r7, pc}
109 109
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index bd40148a15b2..f4f5aeaf3298 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -79,6 +79,7 @@ dtb-$(CONFIG_ARCH_BCM2835) += \
79 bcm2835-rpi-a-plus.dtb \ 79 bcm2835-rpi-a-plus.dtb \
80 bcm2835-rpi-cm1-io1.dtb \ 80 bcm2835-rpi-cm1-io1.dtb \
81 bcm2836-rpi-2-b.dtb \ 81 bcm2836-rpi-2-b.dtb \
82 bcm2837-rpi-3-a-plus.dtb \
82 bcm2837-rpi-3-b.dtb \ 83 bcm2837-rpi-3-b.dtb \
83 bcm2837-rpi-3-b-plus.dtb \ 84 bcm2837-rpi-3-b-plus.dtb \
84 bcm2837-rpi-cm3-io3.dtb \ 85 bcm2837-rpi-cm3-io3.dtb \
@@ -115,6 +116,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
115 bcm47094-luxul-xwr-3100.dtb \ 116 bcm47094-luxul-xwr-3100.dtb \
116 bcm47094-luxul-xwr-3150-v1.dtb \ 117 bcm47094-luxul-xwr-3150-v1.dtb \
117 bcm47094-netgear-r8500.dtb \ 118 bcm47094-netgear-r8500.dtb \
119 bcm47094-phicomm-k3.dtb \
118 bcm94708.dtb \ 120 bcm94708.dtb \
119 bcm94709.dtb \ 121 bcm94709.dtb \
120 bcm953012er.dtb \ 122 bcm953012er.dtb \
@@ -313,7 +315,8 @@ dtb-$(CONFIG_MACH_KIRKWOOD) += \
313dtb-$(CONFIG_ARCH_LPC18XX) += \ 315dtb-$(CONFIG_ARCH_LPC18XX) += \
314 lpc4337-ciaa.dtb \ 316 lpc4337-ciaa.dtb \
315 lpc4350-hitex-eval.dtb \ 317 lpc4350-hitex-eval.dtb \
316 lpc4357-ea4357-devkit.dtb 318 lpc4357-ea4357-devkit.dtb \
319 lpc4357-myd-lpc4357.dtb
317dtb-$(CONFIG_ARCH_LPC32XX) += \ 320dtb-$(CONFIG_ARCH_LPC32XX) += \
318 lpc3250-ea3250.dtb \ 321 lpc3250-ea3250.dtb \
319 lpc3250-phy3250.dtb 322 lpc3250-phy3250.dtb
@@ -445,6 +448,9 @@ dtb-$(CONFIG_SOC_IMX6Q) += \
445 imx6dl-wandboard.dtb \ 448 imx6dl-wandboard.dtb \
446 imx6dl-wandboard-revb1.dtb \ 449 imx6dl-wandboard-revb1.dtb \
447 imx6dl-wandboard-revd1.dtb \ 450 imx6dl-wandboard-revd1.dtb \
451 imx6dl-yapp4-draco.dtb \
452 imx6dl-yapp4-hydra.dtb \
453 imx6dl-yapp4-ursa.dtb \
448 imx6q-apalis-eval.dtb \ 454 imx6q-apalis-eval.dtb \
449 imx6q-apalis-ixora.dtb \ 455 imx6q-apalis-ixora.dtb \
450 imx6q-apalis-ixora-v1.1.dtb \ 456 imx6q-apalis-ixora-v1.1.dtb \
@@ -561,6 +567,7 @@ dtb-$(CONFIG_SOC_IMX6UL) += \
561 imx6ul-opos6uldev.dtb \ 567 imx6ul-opos6uldev.dtb \
562 imx6ul-pico-hobbit.dtb \ 568 imx6ul-pico-hobbit.dtb \
563 imx6ul-pico-pi.dtb \ 569 imx6ul-pico-pi.dtb \
570 imx6ul-phytec-phyboard-segin-full.dtb \
564 imx6ul-tx6ul-0010.dtb \ 571 imx6ul-tx6ul-0010.dtb \
565 imx6ul-tx6ul-0011.dtb \ 572 imx6ul-tx6ul-0011.dtb \
566 imx6ul-tx6ul-mainboard.dtb \ 573 imx6ul-tx6ul-mainboard.dtb \
@@ -599,6 +606,7 @@ dtb-$(CONFIG_SOC_VF610) += \
599 vf610-zii-dev-rev-b.dtb \ 606 vf610-zii-dev-rev-b.dtb \
600 vf610-zii-dev-rev-c.dtb \ 607 vf610-zii-dev-rev-c.dtb \
601 vf610-zii-scu4-aib.dtb \ 608 vf610-zii-scu4-aib.dtb \
609 vf610-zii-ssmb-dtu.dtb \
602 vf610-zii-ssmb-spu3.dtb 610 vf610-zii-ssmb-spu3.dtb
603dtb-$(CONFIG_ARCH_MXS) += \ 611dtb-$(CONFIG_ARCH_MXS) += \
604 imx23-evk.dtb \ 612 imx23-evk.dtb \
@@ -700,6 +708,7 @@ dtb-$(CONFIG_ARCH_OMAP3) += \
700 omap3-thunder.dtb \ 708 omap3-thunder.dtb \
701 omap3-zoom3.dtb 709 omap3-zoom3.dtb
702dtb-$(CONFIG_SOC_TI81XX) += \ 710dtb-$(CONFIG_SOC_TI81XX) += \
711 am3874-iceboard.dtb \
703 dm8148-evm.dtb \ 712 dm8148-evm.dtb \
704 dm8148-t410.dtb \ 713 dm8148-t410.dtb \
705 dm8168-evm.dtb \ 714 dm8168-evm.dtb \
@@ -719,6 +728,7 @@ dtb-$(CONFIG_SOC_AM33XX) += \
719 am335x-cm-t335.dtb \ 728 am335x-cm-t335.dtb \
720 am335x-evm.dtb \ 729 am335x-evm.dtb \
721 am335x-evmsk.dtb \ 730 am335x-evmsk.dtb \
731 am335x-guardian.dtb \
722 am335x-icev2.dtb \ 732 am335x-icev2.dtb \
723 am335x-lxm.dtb \ 733 am335x-lxm.dtb \
724 am335x-moxa-uc-2101.dtb \ 734 am335x-moxa-uc-2101.dtb \
@@ -843,6 +853,7 @@ dtb-$(CONFIG_ARCH_RENESAS) += \
843 r7s72100-genmai.dtb \ 853 r7s72100-genmai.dtb \
844 r7s72100-gr-peach.dtb \ 854 r7s72100-gr-peach.dtb \
845 r7s72100-rskrza1.dtb \ 855 r7s72100-rskrza1.dtb \
856 r7s9210-rza2mevb.dtb \
846 r8a73a4-ape6evm.dtb \ 857 r8a73a4-ape6evm.dtb \
847 r8a7740-armadillo800eva.dtb \ 858 r8a7740-armadillo800eva.dtb \
848 r8a7743-iwg20d-q7.dtb \ 859 r8a7743-iwg20d-q7.dtb \
@@ -868,6 +879,7 @@ dtb-$(CONFIG_ARCH_RENESAS) += \
868 r9a06g032-rzn1d400-db.dtb \ 879 r9a06g032-rzn1d400-db.dtb \
869 sh73a0-kzm9g.dtb 880 sh73a0-kzm9g.dtb
870dtb-$(CONFIG_ARCH_ROCKCHIP) += \ 881dtb-$(CONFIG_ARCH_ROCKCHIP) += \
882 rv1108-elgin-r1.dtb \
871 rv1108-evb.dtb \ 883 rv1108-evb.dtb \
872 rk3036-evb.dtb \ 884 rk3036-evb.dtb \
873 rk3036-kylin.dtb \ 885 rk3036-kylin.dtb \
@@ -919,6 +931,7 @@ dtb-$(CONFIG_ARCH_SOCFPGA) += \
919 socfpga_arria10_socdk_nand.dtb \ 931 socfpga_arria10_socdk_nand.dtb \
920 socfpga_arria10_socdk_qspi.dtb \ 932 socfpga_arria10_socdk_qspi.dtb \
921 socfpga_arria10_socdk_sdmmc.dtb \ 933 socfpga_arria10_socdk_sdmmc.dtb \
934 socfpga_cyclone5_chameleon96.dtb \
922 socfpga_cyclone5_mcvevk.dtb \ 935 socfpga_cyclone5_mcvevk.dtb \
923 socfpga_cyclone5_socdk.dtb \ 936 socfpga_cyclone5_socdk.dtb \
924 socfpga_cyclone5_de0_nano_soc.dtb \ 937 socfpga_cyclone5_de0_nano_soc.dtb \
@@ -1233,6 +1246,7 @@ dtb-$(CONFIG_ARCH_MEDIATEK) += \
1233 mt7623n-bananapi-bpi-r2.dtb \ 1246 mt7623n-bananapi-bpi-r2.dtb \
1234 mt8127-moose.dtb \ 1247 mt8127-moose.dtb \
1235 mt8135-evbp1.dtb 1248 mt8135-evbp1.dtb
1249dtb-$(CONFIG_ARCH_MILBEAUT) += milbeaut-m10v-evb.dtb
1236dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb 1250dtb-$(CONFIG_ARCH_ZX) += zx296702-ad1.dtb
1237dtb-$(CONFIG_ARCH_ASPEED) += \ 1251dtb-$(CONFIG_ARCH_ASPEED) += \
1238 aspeed-ast2500-evb.dtb \ 1252 aspeed-ast2500-evb.dtb \
diff --git a/arch/arm/boot/dts/alphascale-asm9260.dtsi b/arch/arm/boot/dts/alphascale-asm9260.dtsi
index 907fc7bfc418..2ce6038536fd 100644
--- a/arch/arm/boot/dts/alphascale-asm9260.dtsi
+++ b/arch/arm/boot/dts/alphascale-asm9260.dtsi
@@ -4,10 +4,11 @@
4 * Licensed under the X11 license or the GPL v2 (or later) 4 * Licensed under the X11 license or the GPL v2 (or later)
5 */ 5 */
6 6
7#include "skeleton.dtsi"
8#include <dt-bindings/clock/alphascale,asm9260.h> 7#include <dt-bindings/clock/alphascale,asm9260.h>
9 8
10/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
11 interrupt-parent = <&icoll>; 12 interrupt-parent = <&icoll>;
12 13
13 memory { 14 memory {
diff --git a/arch/arm/boot/dts/alpine.dtsi b/arch/arm/boot/dts/alpine.dtsi
index 731df7a8c4e6..d3036ea823d1 100644
--- a/arch/arm/boot/dts/alpine.dtsi
+++ b/arch/arm/boot/dts/alpine.dtsi
@@ -25,12 +25,18 @@
25 */ 25 */
26 26
27#include <dt-bindings/interrupt-controller/arm-gic.h> 27#include <dt-bindings/interrupt-controller/arm-gic.h>
28#include "skeleton64.dtsi"
29 28
30/ { 29/ {
30 #address-cells = <2>;
31 #size-cells = <2>;
31 /* SOC compatibility */ 32 /* SOC compatibility */
32 compatible = "al,alpine"; 33 compatible = "al,alpine";
33 34
35 memory {
36 device_type = "memory";
37 reg = <0 0 0 0>;
38 };
39
34 /* CPU Configuration */ 40 /* CPU Configuration */
35 cpus { 41 cpus {
36 #address-cells = <1>; 42 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/am335x-baltos-ir2110.dts b/arch/arm/boot/dts/am335x-baltos-ir2110.dts
index 75de1e723303..50dcf1290ac6 100644
--- a/arch/arm/boot/dts/am335x-baltos-ir2110.dts
+++ b/arch/arm/boot/dts/am335x-baltos-ir2110.dts
@@ -72,7 +72,3 @@
72 dual_emac_res_vlan = <2>; 72 dual_emac_res_vlan = <2>;
73 phy-handle = <&phy1>; 73 phy-handle = <&phy1>;
74}; 74};
75
76&phy_sel {
77 rmii-clock-ext = <1>;
78};
diff --git a/arch/arm/boot/dts/am335x-baltos-ir3220.dts b/arch/arm/boot/dts/am335x-baltos-ir3220.dts
index 1b215c425c57..f3f1abd26470 100644
--- a/arch/arm/boot/dts/am335x-baltos-ir3220.dts
+++ b/arch/arm/boot/dts/am335x-baltos-ir3220.dts
@@ -114,7 +114,3 @@
114 dual_emac_res_vlan = <2>; 114 dual_emac_res_vlan = <2>;
115 phy-handle = <&phy1>; 115 phy-handle = <&phy1>;
116}; 116};
117
118&phy_sel {
119 rmii-clock-ext = <1>;
120};
diff --git a/arch/arm/boot/dts/am335x-baltos-ir5221.dts b/arch/arm/boot/dts/am335x-baltos-ir5221.dts
index 832ead864dc5..42f473f0ed77 100644
--- a/arch/arm/boot/dts/am335x-baltos-ir5221.dts
+++ b/arch/arm/boot/dts/am335x-baltos-ir5221.dts
@@ -133,10 +133,6 @@
133 phy-handle = <&phy1>; 133 phy-handle = <&phy1>;
134}; 134};
135 135
136&phy_sel {
137 rmii-clock-ext = <1>;
138};
139
140&dcan1 { 136&dcan1 {
141 pinctrl-names = "default"; 137 pinctrl-names = "default";
142 pinctrl-0 = <&dcan1_pins>; 138 pinctrl-0 = <&dcan1_pins>;
diff --git a/arch/arm/boot/dts/am335x-chiliboard.dts b/arch/arm/boot/dts/am335x-chiliboard.dts
index 9c2a947aacf5..bffa5dce54ec 100644
--- a/arch/arm/boot/dts/am335x-chiliboard.dts
+++ b/arch/arm/boot/dts/am335x-chiliboard.dts
@@ -14,6 +14,10 @@
14 compatible = "grinn,am335x-chiliboard", "grinn,am335x-chilisom", 14 compatible = "grinn,am335x-chiliboard", "grinn,am335x-chilisom",
15 "ti,am33xx"; 15 "ti,am33xx";
16 16
17 chosen {
18 stdout-path = &uart0;
19 };
20
17 leds { 21 leds {
18 compatible = "gpio-leds"; 22 compatible = "gpio-leds";
19 pinctrl-names = "default"; 23 pinctrl-names = "default";
@@ -151,10 +155,6 @@
151 phy-mode = "rmii"; 155 phy-mode = "rmii";
152}; 156};
153 157
154&phy_sel {
155 rmii-clock-ext;
156};
157
158/* USB */ 158/* USB */
159&usb { 159&usb {
160 status = "okay"; 160 status = "okay";
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index b67f5fee1469..dce5be5df97b 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -729,7 +729,7 @@
729 729
730&cpsw_emac0 { 730&cpsw_emac0 {
731 phy-handle = <&ethphy0>; 731 phy-handle = <&ethphy0>;
732 phy-mode = "rgmii-txid"; 732 phy-mode = "rgmii-id";
733}; 733};
734 734
735&tscadc { 735&tscadc {
diff --git a/arch/arm/boot/dts/am335x-evmsk.dts b/arch/arm/boot/dts/am335x-evmsk.dts
index 172c0224e7f6..b128998097ce 100644
--- a/arch/arm/boot/dts/am335x-evmsk.dts
+++ b/arch/arm/boot/dts/am335x-evmsk.dts
@@ -651,13 +651,13 @@
651 651
652&cpsw_emac0 { 652&cpsw_emac0 {
653 phy-handle = <&ethphy0>; 653 phy-handle = <&ethphy0>;
654 phy-mode = "rgmii-txid"; 654 phy-mode = "rgmii-id";
655 dual_emac_res_vlan = <1>; 655 dual_emac_res_vlan = <1>;
656}; 656};
657 657
658&cpsw_emac1 { 658&cpsw_emac1 {
659 phy-handle = <&ethphy1>; 659 phy-handle = <&ethphy1>;
660 phy-mode = "rgmii-txid"; 660 phy-mode = "rgmii-id";
661 dual_emac_res_vlan = <2>; 661 dual_emac_res_vlan = <2>;
662}; 662};
663 663
diff --git a/arch/arm/boot/dts/am335x-guardian.dts b/arch/arm/boot/dts/am335x-guardian.dts
new file mode 100644
index 000000000000..c9611ea4b884
--- /dev/null
+++ b/arch/arm/boot/dts/am335x-guardian.dts
@@ -0,0 +1,511 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
4 * Copyright (C) 2018 Robert Bosch Power Tools GmbH
5 */
6/dts-v1/;
7
8#include "am33xx.dtsi"
9#include <dt-bindings/input/input.h>
10#include <dt-bindings/interrupt-controller/irq.h>
11
12/ {
13 model = "Bosch AM335x Guardian";
14 compatible = "bosch,am335x-guardian", "ti,am33xx";
15
16 chosen {
17 stdout-path = &uart0;
18 tick-timer = &timer2;
19 };
20
21 cpus {
22 cpu@0 {
23 cpu0-supply = <&dcdc2_reg>;
24 };
25 };
26
27 memory@80000000 {
28 device_type = "memory";
29 reg = <0x80000000 0x10000000>; /* 256 MB */
30 };
31
32 gpio_keys {
33 compatible = "gpio-keys";
34 #address-cells = <1>;
35 #size-cells = <0>;
36 pinctrl-names = "default";
37 pinctrl-0 = <&gpio_keys_pins>;
38
39 button21 {
40 label = "guardian-power-button";
41 linux,code = <KEY_POWER>;
42 gpios = <&gpio2 21 0>;
43 wakeup-source;
44 };
45 };
46
47 leds {
48 compatible = "gpio-leds";
49 pinctrl-names = "default";
50 pinctrl-0 = <&leds_pins>;
51
52 led1 {
53 label = "green:heartbeat";
54 gpios = <&gpio1 27 GPIO_ACTIVE_HIGH>;
55 linux,default-trigger = "heartbeat";
56 default-state = "off";
57 };
58
59 led2 {
60 label = "green:mmc0";
61 gpios = <&gpio1 26 GPIO_ACTIVE_HIGH>;
62 linux,default-trigger = "mmc0";
63 default-state = "off";
64 };
65 };
66
67 panel {
68 compatible = "ti,tilcdc,panel";
69 pinctrl-names = "default", "sleep";
70 pinctrl-0 = <&lcd_pins_default &lcd_disen_pins>;
71 pinctrl-1 = <&lcd_pins_sleep>;
72
73 display-timings {
74 320x240 {
75 hactive = <320>;
76 vactive = <240>;
77 hback-porch = <68>;
78 hfront-porch = <20>;
79 hsync-len = <1>;
80 vback-porch = <18>;
81 vfront-porch = <4>;
82 vsync-len = <1>;
83 clock-frequency = <9000000>;
84 hsync-active = <0>;
85 vsync-active = <0>;
86 };
87 };
88 panel-info {
89 ac-bias = <255>;
90 ac-bias-intrpt = <0>;
91 dma-burst-sz = <16>;
92 bpp = <24>;
93 bus-width = <16>;
94 fdd = <0x80>;
95 sync-edge = <0>;
96 sync-ctrl = <1>;
97 raster-order = <0>;
98 fifo-th = <0>;
99 };
100
101 };
102
103 pwm7: dmtimer-pwm {
104 compatible = "ti,omap-dmtimer-pwm";
105 ti,timers = <&timer7>;
106 pinctrl-names = "default";
107 pinctrl-0 = <&dmtimer7_pins>;
108 };
109
110 vmmcsd_fixed: regulator-3v3 {
111 compatible = "regulator-fixed";
112 regulator-name = "vmmcsd_fixed";
113 regulator-min-microvolt = <3300000>;
114 regulator-max-microvolt = <3300000>;
115 };
116};
117
118&cppi41dma {
119 status = "okay";
120};
121
122&elm {
123 status = "okay";
124};
125
126&gpmc {
127 pinctrl-names = "default";
128 pinctrl-0 = <&nandflash_pins>;
129 ranges = <0 0 0x08000000 0x1000000>; /* CS0: 16MB for NAND */
130 status = "okay";
131
132 nand@0,0 {
133 compatible = "ti,omap2-nand";
134 reg = <0 0 4>; /* CS0, offset 0, IO size 4 */
135 interrupt-parent = <&gpmc>;
136 interrupts = <0 IRQ_TYPE_NONE>, /* fifoevent */
137 <1 IRQ_TYPE_NONE>; /* termcount */
138 rb-gpios = <&gpmc 0 GPIO_ACTIVE_HIGH>; /* gpmc_wait0 */
139 ti,nand-ecc-opt = "bch16";
140 ti,elm-id = <&elm>;
141 nand-bus-width = <8>;
142 gpmc,device-width = <1>;
143 gpmc,sync-clk-ps = <0>;
144 gpmc,cs-on-ns = <0>;
145 gpmc,cs-rd-off-ns = <44>;
146 gpmc,cs-wr-off-ns = <44>;
147 gpmc,adv-on-ns = <6>;
148 gpmc,adv-rd-off-ns = <34>;
149 gpmc,adv-wr-off-ns = <44>;
150 gpmc,we-on-ns = <0>;
151 gpmc,we-off-ns = <40>;
152 gpmc,oe-on-ns = <0>;
153 gpmc,oe-off-ns = <54>;
154 gpmc,access-ns = <64>;
155 gpmc,rd-cycle-ns = <82>;
156 gpmc,wr-cycle-ns = <82>;
157 gpmc,bus-turnaround-ns = <0>;
158 gpmc,cycle2cycle-delay-ns = <0>;
159 gpmc,clk-activation-ns = <0>;
160 gpmc,wr-access-ns = <40>;
161 gpmc,wr-data-mux-bus-ns = <0>;
162
163 /*
164 * MTD partition table
165 *
166 * All SPL-* partitions are sized to minimal length which can
167 * be independently programmable. For NAND flash this is equal
168 * to size of erase-block.
169 */
170 #address-cells = <1>;
171 #size-cells = <1>;
172
173 partition@0 {
174 label = "SPL";
175 reg = <0x0 0x40000>;
176 };
177
178 partition@1 {
179 label = "SPL.backup1";
180 reg = <0x40000 0x40000>;
181 };
182
183 partition@2 {
184 label = "SPL.backup2";
185 reg = <0x80000 0x40000>;
186 };
187
188 partition@3 {
189 label = "SPL.backup3";
190 reg = <0xc0000 0x40000>;
191 };
192
193 partition@4 {
194 label = "u-boot";
195 reg = <0x100000 0x100000>;
196 };
197
198 partition@5 {
199 label = "u-boot.backup1";
200 reg = <0x200000 0x100000>;
201 };
202
203 partition@6 {
204 label = "u-boot-env";
205 reg = <0x300000 0x40000>;
206 };
207
208 partition@7 {
209 label = "u-boot-env.backup1";
210 reg = <0x340000 0x40000>;
211 };
212
213 partition@8 {
214 label = "UBI";
215 reg = <0x380000 0x1fc80000>;
216 };
217 };
218};
219
220&i2c0 {
221 pinctrl-names = "default";
222 pinctrl-0 = <&i2c0_pins>;
223 clock-frequency = <400000>;
224 status = "okay";
225
226 tps: tps@24 {
227 reg = <0x24>;
228 };
229};
230
231&lcdc {
232 blue-and-red-wiring = "crossed";
233 status = "okay";
234};
235
236&mmc1 {
237 bus-width = <0x4>;
238 pinctrl-names = "default";
239 pinctrl-0 = <&mmc1_pins>;
240 cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
241 vmmc-supply = <&vmmcsd_fixed>;
242 status = "okay";
243};
244
245&rtc {
246 clocks = <&clk_32768_ck>, <&clk_24mhz_clkctrl AM3_CLK_24MHZ_CLKDIV32K_CLKCTRL 0>;
247 clock-names = "ext-clk", "int-clk";
248 system-power-controller;
249};
250
251&spi0 {
252 ti,pindir-d0-out-d1-in;
253 pinctrl-names = "default";
254 pinctrl-0 = <&spi0_pins>;
255 status = "okay";
256};
257
258#include "tps65217.dtsi"
259
260&tps {
261 ti,pmic-shutdown-controller;
262 interrupt-parent = <&intc>;
263 interrupts = <7>; /* NMI */
264
265 backlight {
266 isel = <1>; /* 1 - ISET1, 2 ISET2 */
267 fdim = <100>; /* TPS65217_BL_FDIM_100HZ */
268 default-brightness = <100>;
269 };
270
271 regulators {
272 dcdc1_reg: regulator@0 {
273 regulator-name = "vdds_dpr";
274 regulator-always-on;
275 };
276
277 dcdc2_reg: regulator@1 {
278 regulator-name = "vdd_mpu";
279 regulator-min-microvolt = <925000>;
280 regulator-max-microvolt = <1351500>;
281 regulator-boot-on;
282 regulator-always-on;
283 };
284
285 dcdc3_reg: regulator@2 {
286 regulator-name = "vdd_core";
287 regulator-min-microvolt = <925000>;
288 regulator-max-microvolt = <1150000>;
289 regulator-boot-on;
290 regulator-always-on;
291 };
292
293 ldo1_reg: regulator@3 {
294 regulator-name = "vio,vrtc,vdds";
295 regulator-always-on;
296 };
297
298 ldo2_reg: regulator@4 {
299 regulator-name = "vdd_3v3aux";
300 regulator-always-on;
301 };
302
303 ldo3_reg: regulator@5 {
304 regulator-name = "vdd_1v8";
305 regulator-min-microvolt = <1800000>;
306 regulator-max-microvolt = <1800000>;
307 regulator-always-on;
308 };
309
310 ldo4_reg: regulator@6 {
311 regulator-name = "vdd_3v3a";
312 regulator-always-on;
313 };
314 };
315};
316
317&tscadc {
318 status = "okay";
319
320 adc {
321 ti,adc-channels = <0 1 2 3 4 5 6>;
322 };
323};
324
325&uart0 {
326 pinctrl-names = "default";
327 pinctrl-0 = <&uart0_pins>;
328 status = "okay";
329};
330
331&usb {
332 status = "okay";
333};
334
335&usb_ctrl_mod {
336 status = "okay";
337};
338
339&usb0 {
340 dr_mode = "peripheral";
341 status = "okay";
342};
343
344&usb0_phy {
345 status = "okay";
346};
347
348&usb1 {
349 dr_mode = "host";
350 status = "okay";
351};
352
353&usb1_phy {
354 status = "okay";
355};
356
357&am33xx_pinmux {
358 pinctrl-names = "default";
359 pinctrl-0 = <&clkout2_pin &gpio_pins>;
360
361 clkout2_pin: pinmux_clkout2_pin {
362 pinctrl-single,pins = <
363 AM33XX_IOPAD(0x9b4, PIN_OUTPUT_PULLDOWN | MUX_MODE3)
364 >;
365 };
366
367 dmtimer7_pins: pinmux_dmtimer7_pins {
368 pinctrl-single,pins = <
369 AM33XX_IOPAD(0x968, PIN_OUTPUT | MUX_MODE5)
370 >;
371 };
372
373 gpio_keys_pins: pinmux_gpio_keys_pins {
374 pinctrl-single,pins = <
375 AM33XX_IOPAD(0x940, PIN_INPUT | MUX_MODE7)
376 >;
377 };
378
379 gpio_pins: pinmux_gpio_pins {
380 pinctrl-single,pins = <
381 AM33XX_IOPAD(0x928, PIN_OUTPUT | MUX_MODE7)
382 AM33XX_IOPAD(0x990, PIN_OUTPUT | MUX_MODE7)
383 >;
384 };
385
386 i2c0_pins: pinmux_i2c0_pins {
387 pinctrl-single,pins = <
388 AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0)
389 AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0)
390 >;
391 };
392
393 lcd_disen_pins: pinmux_lcd_disen_pins {
394 pinctrl-single,pins = <
395 AM33XX_IOPAD(0x9a4, PIN_OUTPUT_PULLUP | SLEWCTRL_SLOW | MUX_MODE7)
396 >;
397 };
398
399 lcd_pins_default: pinmux_lcd_pins_default {
400 pinctrl-single,pins = <
401 AM33XX_IOPAD(0x820, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
402 AM33XX_IOPAD(0x824, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
403 AM33XX_IOPAD(0x828, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
404 AM33XX_IOPAD(0x82c, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
405 AM33XX_IOPAD(0x830, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
406 AM33XX_IOPAD(0x834, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
407 AM33XX_IOPAD(0x838, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
408 AM33XX_IOPAD(0x83c, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE1)
409 AM33XX_IOPAD(0x8a0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
410 AM33XX_IOPAD(0x8a4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
411 AM33XX_IOPAD(0x8a8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
412 AM33XX_IOPAD(0x8ac, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
413 AM33XX_IOPAD(0x8b0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
414 AM33XX_IOPAD(0x8b4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
415 AM33XX_IOPAD(0x8b8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
416 AM33XX_IOPAD(0x8bc, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
417 AM33XX_IOPAD(0x8c0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
418 AM33XX_IOPAD(0x8c4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
419 AM33XX_IOPAD(0x8c8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
420 AM33XX_IOPAD(0x8cc, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
421 AM33XX_IOPAD(0x8d0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
422 AM33XX_IOPAD(0x8d4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
423 AM33XX_IOPAD(0x8d8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
424 AM33XX_IOPAD(0x8dc, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
425 AM33XX_IOPAD(0x8e0, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
426 AM33XX_IOPAD(0x8e4, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
427 AM33XX_IOPAD(0x8e8, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
428 AM33XX_IOPAD(0x8ec, PIN_OUTPUT | SLEWCTRL_SLOW | MUX_MODE0)
429 >;
430 };
431
432 lcd_pins_sleep: pinmux_lcd_pins_sleep {
433 pinctrl-single,pins = <
434 AM33XX_IOPAD(0x8a0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
435 AM33XX_IOPAD(0x8a4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
436 AM33XX_IOPAD(0x8a8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
437 AM33XX_IOPAD(0x8ac, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
438 AM33XX_IOPAD(0x8b0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
439 AM33XX_IOPAD(0x8b4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
440 AM33XX_IOPAD(0x8b8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
441 AM33XX_IOPAD(0x8bc, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
442 AM33XX_IOPAD(0x8c0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
443 AM33XX_IOPAD(0x8c4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
444 AM33XX_IOPAD(0x8c8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
445 AM33XX_IOPAD(0x8cc, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
446 AM33XX_IOPAD(0x8d0, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
447 AM33XX_IOPAD(0x8d4, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
448 AM33XX_IOPAD(0x8d8, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
449 AM33XX_IOPAD(0x8dc, PULL_DISABLE | SLEWCTRL_SLOW | MUX_MODE7)
450 AM33XX_IOPAD(0x8e0, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7)
451 AM33XX_IOPAD(0x8e4, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7)
452 AM33XX_IOPAD(0x8e8, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7)
453 AM33XX_IOPAD(0x8ec, PIN_INPUT_PULLDOWN | SLEWCTRL_SLOW | MUX_MODE7)
454 >;
455 };
456
457 leds_pins: pinmux_leds_pins {
458 pinctrl-single,pins = <
459 AM33XX_IOPAD(0x868, PIN_OUTPUT | MUX_MODE7)
460 AM33XX_IOPAD(0x86c, PIN_OUTPUT | MUX_MODE7)
461 >;
462 };
463
464 mmc1_pins: pinmux_mmc1_pins {
465 pinctrl-single,pins = <
466 AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0)
467 AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0)
468 AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0)
469 AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0)
470 AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0)
471 AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0)
472 AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7)
473 >;
474 };
475
476 spi0_pins: pinmux_spi0_pins {
477 pinctrl-single,pins = <
478 AM33XX_IOPAD(0x950, PIN_OUTPUT_PULLDOWN | MUX_MODE0)
479 AM33XX_IOPAD(0x954, PIN_OUTPUT_PULLUP | MUX_MODE0)
480 AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0)
481 AM33XX_IOPAD(0x95c, PIN_OUTPUT_PULLUP | MUX_MODE0)
482 >;
483 };
484
485 uart0_pins: pinmux_uart0_pins {
486 pinctrl-single,pins = <
487 AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0)
488 AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0)
489 >;
490 };
491
492 nandflash_pins: pinmux_nandflash_pins {
493 pinctrl-single,pins = <
494 AM33XX_IOPAD(0x800, PIN_INPUT | MUX_MODE0)
495 AM33XX_IOPAD(0x804, PIN_INPUT | MUX_MODE0)
496 AM33XX_IOPAD(0x808, PIN_INPUT | MUX_MODE0)
497 AM33XX_IOPAD(0x80c, PIN_INPUT | MUX_MODE0)
498 AM33XX_IOPAD(0x810, PIN_INPUT | MUX_MODE0)
499 AM33XX_IOPAD(0x814, PIN_INPUT | MUX_MODE0)
500 AM33XX_IOPAD(0x818, PIN_INPUT | MUX_MODE0)
501 AM33XX_IOPAD(0x81c, PIN_INPUT | MUX_MODE0)
502 AM33XX_IOPAD(0x870, PIN_INPUT | MUX_MODE0)
503 AM33XX_IOPAD(0x874, PIN_OUTPUT | MUX_MODE0)
504 AM33XX_IOPAD(0x87c, PIN_OUTPUT | MUX_MODE0)
505 AM33XX_IOPAD(0x890, PIN_OUTPUT | MUX_MODE0)
506 AM33XX_IOPAD(0x894, PIN_OUTPUT | MUX_MODE0)
507 AM33XX_IOPAD(0x898, PIN_OUTPUT | MUX_MODE0)
508 AM33XX_IOPAD(0x89c, PIN_OUTPUT | MUX_MODE0)
509 >;
510 };
511};
diff --git a/arch/arm/boot/dts/am335x-icev2.dts b/arch/arm/boot/dts/am335x-icev2.dts
index f2005ecca74f..9ac775c71072 100644
--- a/arch/arm/boot/dts/am335x-icev2.dts
+++ b/arch/arm/boot/dts/am335x-icev2.dts
@@ -484,10 +484,6 @@
484 dual_emac; 484 dual_emac;
485}; 485};
486 486
487&phy_sel {
488 rmii-clock-ext;
489};
490
491&davinci_mdio { 487&davinci_mdio {
492 pinctrl-names = "default", "sleep"; 488 pinctrl-names = "default", "sleep";
493 pinctrl-0 = <&davinci_mdio_default>; 489 pinctrl-0 = <&davinci_mdio_default>;
diff --git a/arch/arm/boot/dts/am335x-igep0033.dtsi b/arch/arm/boot/dts/am335x-igep0033.dtsi
index 55b4c94cfafb..cbd22f25de95 100644
--- a/arch/arm/boot/dts/am335x-igep0033.dtsi
+++ b/arch/arm/boot/dts/am335x-igep0033.dtsi
@@ -123,10 +123,6 @@
123 phy-mode = "rmii"; 123 phy-mode = "rmii";
124}; 124};
125 125
126&phy_sel {
127 rmii-clock-ext;
128};
129
130&elm { 126&elm {
131 status = "okay"; 127 status = "okay";
132}; 128};
diff --git a/arch/arm/boot/dts/am335x-lxm.dts b/arch/arm/boot/dts/am335x-lxm.dts
index 481edcfaf121..d0e8e720a4d6 100644
--- a/arch/arm/boot/dts/am335x-lxm.dts
+++ b/arch/arm/boot/dts/am335x-lxm.dts
@@ -328,10 +328,6 @@
328 dual_emac_res_vlan = <3>; 328 dual_emac_res_vlan = <3>;
329}; 329};
330 330
331&phy_sel {
332 rmii-clock-ext;
333};
334
335&mac { 331&mac {
336 pinctrl-names = "default", "sleep"; 332 pinctrl-names = "default", "sleep";
337 pinctrl-0 = <&cpsw_default>; 333 pinctrl-0 = <&cpsw_default>;
diff --git a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
index 14f781953475..cb5913a69837 100644
--- a/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
+++ b/arch/arm/boot/dts/am335x-moxa-uc-2100-common.dtsi
@@ -159,11 +159,6 @@
159 status = "okay"; 159 status = "okay";
160}; 160};
161 161
162&phy_sel {
163 reg= <0x44e10650 0xf5>;
164 rmii-clock-ext;
165};
166
167&sham { 162&sham {
168 status = "okay"; 163 status = "okay";
169}; 164};
diff --git a/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts b/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
index 5a58efc0c874..e562ce40f290 100644
--- a/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
+++ b/arch/arm/boot/dts/am335x-moxa-uc-8100-me-t.dts
@@ -446,11 +446,6 @@
446 dual_emac_res_vlan = <2>; 446 dual_emac_res_vlan = <2>;
447}; 447};
448 448
449&phy_sel {
450 reg= <0x44e10650 0xf5>;
451 rmii-clock-ext;
452};
453
454&sham { 449&sham {
455 status = "okay"; 450 status = "okay";
456}; 451};
diff --git a/arch/arm/boot/dts/am335x-phycore-som.dtsi b/arch/arm/boot/dts/am335x-phycore-som.dtsi
index 428a25e952b0..015adb626b03 100644
--- a/arch/arm/boot/dts/am335x-phycore-som.dtsi
+++ b/arch/arm/boot/dts/am335x-phycore-som.dtsi
@@ -100,10 +100,6 @@
100 status = "okay"; 100 status = "okay";
101}; 101};
102 102
103&phy_sel {
104 rmii-clock-ext;
105};
106
107/* I2C Busses */ 103/* I2C Busses */
108&am33xx_pinmux { 104&am33xx_pinmux {
109 i2c0_pins: pinmux_i2c0 { 105 i2c0_pins: pinmux_i2c0 {
diff --git a/arch/arm/boot/dts/am335x-shc.dts b/arch/arm/boot/dts/am335x-shc.dts
index d0fd68873689..bfbe27a80006 100644
--- a/arch/arm/boot/dts/am335x-shc.dts
+++ b/arch/arm/boot/dts/am335x-shc.dts
@@ -1,11 +1,9 @@
1// SPDX-License-Identifier: GPL-2.0
1/* 2/*
2 * support for the bosch am335x based shc c3 board 3 * support for the bosch am335x based shc c3 board
3 * 4 *
4 * Copyright, C) 2015 Heiko Schocher <hs@denx.de> 5 * Copyright, C) 2015 Heiko Schocher <hs@denx.de>
5 * 6 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */ 7 */
10/dts-v1/; 8/dts-v1/;
11 9
@@ -215,7 +213,7 @@
215 pinctrl-names = "default"; 213 pinctrl-names = "default";
216 pinctrl-0 = <&mmc1_pins>; 214 pinctrl-0 = <&mmc1_pins>;
217 bus-width = <0x4>; 215 bus-width = <0x4>;
218 cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>; 216 cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
219 cd-inverted; 217 cd-inverted;
220 max-frequency = <26000000>; 218 max-frequency = <26000000>;
221 vmmc-supply = <&vmmcsd_fixed>; 219 vmmc-supply = <&vmmcsd_fixed>;
diff --git a/arch/arm/boot/dts/am33xx-l4.dtsi b/arch/arm/boot/dts/am33xx-l4.dtsi
index 7b818d9d2eab..f459ec316a22 100644
--- a/arch/arm/boot/dts/am33xx-l4.dtsi
+++ b/arch/arm/boot/dts/am33xx-l4.dtsi
@@ -279,17 +279,9 @@
279 #pinctrl-cells = <1>; 279 #pinctrl-cells = <1>;
280 ranges = <0 0 0x2000>; 280 ranges = <0 0 0x2000>;
281 281
282 phy_sel: cpsw-phy-sel@650 {
283 compatible = "ti,am3352-cpsw-phy-sel";
284 reg= <0x650 0x4>;
285 reg-names = "gmii-sel";
286 };
287
288 am33xx_pinmux: pinmux@800 { 282 am33xx_pinmux: pinmux@800 {
289 compatible = "pinctrl-single"; 283 compatible = "pinctrl-single";
290 reg = <0x800 0x238>; 284 reg = <0x800 0x238>;
291 #address-cells = <1>;
292 #size-cells = <0>;
293 #pinctrl-cells = <1>; 285 #pinctrl-cells = <1>;
294 pinctrl-single,register-width = <32>; 286 pinctrl-single,register-width = <32>;
295 pinctrl-single,function-mask = <0x7f>; 287 pinctrl-single,function-mask = <0x7f>;
@@ -302,6 +294,12 @@
302 #size-cells = <1>; 294 #size-cells = <1>;
303 ranges = <0 0 0x800>; 295 ranges = <0 0 0x800>;
304 296
297 phy_gmii_sel: phy-gmii-sel {
298 compatible = "ti,am3352-phy-gmii-sel";
299 reg = <0x650 0x4>;
300 #phy-cells = <2>;
301 };
302
305 scm_clocks: clocks { 303 scm_clocks: clocks {
306 #address-cells = <1>; 304 #address-cells = <1>;
307 #size-cells = <0>; 305 #size-cells = <0>;
@@ -717,7 +715,6 @@
717 interrupts = <40 41 42 43>; 715 interrupts = <40 41 42 43>;
718 ranges = <0 0 0x8000>; 716 ranges = <0 0 0x8000>;
719 syscon = <&scm_conf>; 717 syscon = <&scm_conf>;
720 cpsw-phy-sel = <&phy_sel>;
721 status = "disabled"; 718 status = "disabled";
722 719
723 davinci_mdio: mdio@1000 { 720 davinci_mdio: mdio@1000 {
@@ -733,11 +730,13 @@
733 cpsw_emac0: slave@200 { 730 cpsw_emac0: slave@200 {
734 /* Filled in by U-Boot */ 731 /* Filled in by U-Boot */
735 mac-address = [ 00 00 00 00 00 00 ]; 732 mac-address = [ 00 00 00 00 00 00 ];
733 phys = <&phy_gmii_sel 1 1>;
736 }; 734 };
737 735
738 cpsw_emac1: slave@300 { 736 cpsw_emac1: slave@300 {
739 /* Filled in by U-Boot */ 737 /* Filled in by U-Boot */
740 mac-address = [ 00 00 00 00 00 00 ]; 738 mac-address = [ 00 00 00 00 00 00 ];
739 phys = <&phy_gmii_sel 2 1>;
741 }; 740 };
742 }; 741 };
743 }; 742 };
diff --git a/arch/arm/boot/dts/am3874-iceboard.dts b/arch/arm/boot/dts/am3874-iceboard.dts
new file mode 100644
index 000000000000..883fb85135d4
--- /dev/null
+++ b/arch/arm/boot/dts/am3874-iceboard.dts
@@ -0,0 +1,496 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device tree for Winterland IceBoard
4 *
5 * http://mcgillcosmology.com
6 * http://threespeedlogic.com
7 *
8 * This is an ARM + FPGA instrumentation board used at telescopes in
9 * Antarctica (the South Pole Telescope), Chile (POLARBEAR), and at the DRAO
10 * observatory in British Columbia (CHIME).
11 *
12 * Copyright (c) 2019 Three-Speed Logic, Inc. <gsmecher@threespeedlogic.com>
13 */
14
15/dts-v1/;
16
17#include "dm814x.dtsi"
18#include <dt-bindings/interrupt-controller/irq.h>
19
20/ {
21 model = "Winterland IceBoard";
22 compatible = "ti,dm8148", "ti,dm814";
23
24 chosen {
25 stdout-path = "serial1:115200n8";
26 bootargs = "earlycon";
27 };
28
29 memory@80000000 {
30 device_type = "memory";
31 reg = <0x80000000 0x40000000>; /* 1 GB */
32 };
33
34 vmmcsd_fixed: fixedregulator0 {
35 compatible = "regulator-fixed";
36 regulator-name = "vmmcsd_fixed";
37 regulator-min-microvolt = <3300000>;
38 regulator-max-microvolt = <3300000>;
39 regulator-always-on;
40 };
41};
42
43/* The MAC provides internal delay for the transmit path ONLY, which is enabled
44 * provided no -id/-txid/-rxid suffix is provided to "phy-mode".
45 *
46 * The receive path is delayed at the PHY. The recommended register settings
47 * are 0xf0 for the control bits, and 0x7777 for the data bits. However, the
48 * conversion code in the kernel lies: the PHY's registers are 120 ps per tap,
49 * and the kernel assumes 200 ps per tap. So we have fudged the numbers here to
50 * obtain the correct register settings.
51 */
52&mac { dual_emac = <1>; };
53&cpsw_emac0 {
54 phy-handle = <&ethphy0>;
55 phy-mode = "rgmii";
56 dual_emac_res_vlan = <1>;
57};
58&cpsw_emac1 {
59 phy-handle = <&ethphy1>;
60 phy-mode = "rgmii";
61 dual_emac_res_vlan = <2>;
62};
63
64&davinci_mdio {
65 ethphy0: ethernet-phy@0 {
66 reg = <0x2>;
67
68 rxc-skew-ps = <3000>;
69 rxdv-skew-ps = <0>;
70
71 rxd3-skew-ps = <0>;
72 rxd2-skew-ps = <0>;
73 rxd1-skew-ps = <0>;
74 rxd0-skew-ps = <0>;
75
76 phy-reset-gpios = <&gpio2 8 GPIO_ACTIVE_LOW>;
77 };
78
79 ethphy1: ethernet-phy@1 {
80 reg = <0x1>;
81
82 rxc-skew-ps = <3000>;
83 rxdv-skew-ps = <0>;
84
85 rxd3-skew-ps = <0>;
86 rxd2-skew-ps = <0>;
87 rxd1-skew-ps = <0>;
88 rxd0-skew-ps = <0>;
89
90 phy-reset-gpios = <&gpio2 1 GPIO_ACTIVE_LOW>;
91 };
92};
93
94&mmc1 { status = "disabled"; };
95&mmc2 {
96 pinctrl-names = "default";
97 pinctrl-0 = <&mmc2_pins>;
98 vmmc-supply = <&vmmcsd_fixed>;
99 bus-width = <4>;
100};
101&mmc3 { status = "disabled"; };
102
103&i2c1 {
104 /* Most I2C activity happens through this port, with the sole exception
105 * of the backplane. Since there are multiply assigned addresses, the
106 * "i2c-mux-idle-disconnect" is important.
107 */
108
109 pca9548@70 {
110 compatible = "nxp,pca9548";
111 reg = <0x70>;
112 #address-cells = <1>;
113 #size-cells = <0>;
114
115 i2c@0 {
116 /* FMC A */
117 #address-cells = <1>;
118 #size-cells = <0>;
119 reg = <0>;
120 i2c-mux-idle-disconnect;
121 };
122
123 i2c@1 {
124 /* FMC B */
125 #address-cells = <1>;
126 #size-cells = <0>;
127 reg = <1>;
128 i2c-mux-idle-disconnect;
129 };
130
131 i2c@2 {
132 /* QSFP A */
133 #address-cells = <1>;
134 #size-cells = <0>;
135 reg = <2>;
136 i2c-mux-idle-disconnect;
137 };
138
139 i2c@3 {
140 /* QSFP B */
141 #address-cells = <1>;
142 #size-cells = <0>;
143 reg = <3>;
144 i2c-mux-idle-disconnect;
145 };
146
147 i2c@4 {
148 /* SFP */
149 #address-cells = <1>;
150 #size-cells = <0>;
151 reg = <4>;
152 i2c-mux-idle-disconnect;
153 };
154
155 i2c@5 {
156 #address-cells = <1>;
157 #size-cells = <0>;
158 reg = <5>;
159 i2c-mux-idle-disconnect;
160
161 ina230@40 { compatible = "ti,ina230"; reg = <0x40>; shunt-resistor = <5000>; };
162 ina230@41 { compatible = "ti,ina230"; reg = <0x41>; shunt-resistor = <5000>; };
163 ina230@42 { compatible = "ti,ina230"; reg = <0x42>; shunt-resistor = <5000>; };
164
165 ina230@44 { compatible = "ti,ina230"; reg = <0x44>; shunt-resistor = <5000>; };
166 ina230@45 { compatible = "ti,ina230"; reg = <0x45>; shunt-resistor = <5000>; };
167 ina230@46 { compatible = "ti,ina230"; reg = <0x46>; shunt-resistor = <5000>; };
168
169 ina230@47 { compatible = "ti,ina230"; reg = <0x47>; shunt-resistor = <5500>; };
170 ina230@48 { compatible = "ti,ina230"; reg = <0x48>; shunt-resistor = <2360>; };
171 ina230@49 { compatible = "ti,ina230"; reg = <0x49>; shunt-resistor = <2360>; };
172 ina230@43 { compatible = "ti,ina230"; reg = <0x43>; shunt-resistor = <2360>; };
173 ina230@4b { compatible = "ti,ina230"; reg = <0x4b>; shunt-resistor = <5500>; };
174 ina230@4c { compatible = "ti,ina230"; reg = <0x4c>; shunt-resistor = <2360>; };
175 ina230@4d { compatible = "ti,ina230"; reg = <0x4d>; shunt-resistor = <770>; };
176 ina230@4e { compatible = "ti,ina230"; reg = <0x4e>; shunt-resistor = <770>; };
177 ina230@4f { compatible = "ti,ina230"; reg = <0x4f>; shunt-resistor = <770>; };
178 };
179
180 i2c@6 {
181 /* Backplane */
182 #address-cells = <1>;
183 #size-cells = <0>;
184 reg = <6>;
185 i2c-mux-idle-disconnect;
186 };
187
188 i2c@7 {
189 #address-cells = <1>;
190 #size-cells = <0>;
191 reg = <7>;
192 i2c-mux-idle-disconnect;
193
194 u41: pca9575@20 {
195 compatible = "nxp,pca9575";
196 reg = <0x20>;
197 gpio-controller;
198 #gpio-cells = <2>;
199
200 gpio-line-names =
201 "FMCA_EN_12V0", "FMCA_EN_3V3", "FMCA_EN_VADJ", "FMCA_PG_M2C",
202 "FMCA_PG_C2M", "FMCA_PRSNT_M2C_L", "FMCA_CLK_DIR", "SFP_LOS",
203 "FMCB_EN_12V0", "FMCB_EN_3V3", "FMCB_EN_VADJ", "FMCB_PG_M2C",
204 "FMCB_PG_C2M", "FMCB_PRSNT_M2C_L", "FMCB_CLK_DIR", "SFP_ModPrsL";
205 reset_gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
206 };
207
208 u42: pca9575@21 {
209 compatible = "nxp,pca9575";
210 reg = <0x21>;
211 gpio-controller;
212 #gpio-cells = <2>;
213 gpio-line-names =
214 "QSFPA_ModPrsL", "QSFPA_IntL", "QSFPA_ResetL", "QSFPA_ModSelL",
215 "QSFPA_LPMode", "QSFPB_ModPrsL", "QSFPB_IntL", "QSFPB_ResetL",
216 "SFP_TxFault", "SFP_TxDisable", "SFP_RS0", "SFP_RS1",
217 "QSFPB_ModSelL", "QSFPB_LPMode", "SEL_SFP", "ARM_MR";
218 reset_gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
219 };
220
221 u48: pca9575@22 {
222 compatible = "nxp,pca9575";
223 reg=<0x22>;
224 gpio-controller;
225 #gpio-cells = <2>;
226
227 sw-gpios = <&u48 0 0>, <&u48 1 0>, <&u48 2 0>, <&u48 3 0>,
228 <&u48 4 0>, <&u48 5 0>, <&u48 6 0>, <&u48 7 0>;
229 led-gpios = <&u48 7 0>, <&u48 6 0>, <&u48 5 0>, <&u48 4 0>,
230 <&u48 3 0>, <&u48 2 0>, <&u48 1 0>, <&u48 0 0>;
231
232 gpio-line-names =
233 "GP_SW1", "GP_SW2", "GP_SW3", "GP_SW4",
234 "GP_SW5", "GP_SW6", "GP_SW7", "GP_SW8",
235 "GP_LED8", "GP_LED7", "GP_LED6", "GP_LED5",
236 "GP_LED4", "GP_LED3", "GP_LED2", "GP_LED1";
237 reset_gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
238 };
239
240 u59: pca9575@23 {
241 compatible = "nxp,pca9575";
242 reg=<0x23>;
243 gpio-controller;
244 #gpio-cells = <2>;
245 gpio-line-names =
246 "GP_LED9", "GP_LED10", "GP_LED11", "GP_LED12",
247 "GTX1V8PowerFault", "PHYAPowerFault", "PHYBPowerFault", "ArmPowerFault",
248 "BP_SLOW_GPIO0", "BP_SLOW_GPIO1", "BP_SLOW_GPIO2", "BP_SLOW_GPIO3",
249 "BP_SLOW_GPIO4", "BP_SLOW_GPIO5", "__unused_u59_p16", "__unused_u59_p17";
250 reset_gpios = <&gpio2 11 GPIO_ACTIVE_LOW>;
251 };
252
253 tmp100@48 { compatible = "ti,tmp100"; reg = <0x48>; };
254 tmp100@4a { compatible = "ti,tmp100"; reg = <0x4a>; };
255 tmp100@4b { compatible = "ti,tmp100"; reg = <0x4b>; };
256 tmp100@4c { compatible = "ti,tmp100"; reg = <0x4c>; };
257
258 /* EEPROM bank and serial number are treated as separate devices */
259 at24c01@57 { compatible = "atmel,24c01"; reg = <0x57>; };
260 at24cs01@5f { compatible = "atmel,24cs01"; reg = <0x5f>; };
261 };
262 };
263};
264
265&i2c2 {
266 pca9548@71 {
267 compatible = "nxp,pca9548";
268 reg = <0x71>;
269 #address-cells = <1>;
270 #size-cells = <0>;
271
272 i2c@6 {
273 /* Backplane */
274 #address-cells = <1>;
275 #size-cells = <0>;
276 reg = <6>;
277 multi-master;
278
279 /* All backplanes should have this -- it's how we know they're there. */
280 at24c08@54 { compatible="atmel,24c08"; reg=<0x54>; };
281 at24cs08@5c { compatible="atmel,24cs08"; reg=<0x5c>; };
282
283 /* 16 slot backplane */
284 tmp421@4d { compatible="ti,tmp421"; reg=<0x4d>; };
285 tmp421@4e { compatible="ti,tmp421"; reg=<0x4e>; };
286 ina230@40 { compatible = "ti,ina230"; reg = <0x40>; shunt-resistor = <2360>; };
287 amc6821@18 { compatible = "ti,amc6821"; reg = <0x18>; };
288
289 /* Single slot backplane */
290 };
291 };
292};
293
294&pincntl {
295 mmc2_pins: pinmux_mmc2_pins {
296 pinctrl-single,pins = <
297 DM814X_IOPAD(0x0800, PIN_INPUT | 0x1) /* SD1_CLK */
298 DM814X_IOPAD(0x0804, PIN_INPUT_PULLUP | 0x1) /* SD1_CMD */
299 DM814X_IOPAD(0x0808, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[0] */
300 DM814X_IOPAD(0x080c, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[1] */
301 DM814X_IOPAD(0x0810, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[2] */
302 DM814X_IOPAD(0x0814, PIN_INPUT_PULLUP | 0x1) /* SD1_DAT[3] */
303 DM814X_IOPAD(0x0924, PIN_INPUT_PULLUP | 0x40) /* SD1_POW */
304 DM814X_IOPAD(0x0928, PIN_INPUT | 0x40) /* SD1_SDWP */
305 DM814X_IOPAD(0x093C, PIN_INPUT | 0x2) /* SD1_SDCD */
306 >;
307 };
308
309 usb0_pins: pinmux_usb0_pins {
310 pinctrl-single,pins = <
311 DM814X_IOPAD(0x0c34, PIN_OUTPUT | 0x1) /* USB0_DRVVBUS */
312 >;
313 };
314
315 usb1_pins: pinmux_usb1_pins {
316 pinctrl-single,pins = <
317 DM814X_IOPAD(0x0834, PIN_OUTPUT | 0x80) /* USB1_DRVVBUS */
318 >;
319 };
320
321 gpio1_pins: pinmux_gpio1_pins {
322 pinctrl-single,pins = <
323 DM814X_IOPAD(0x081c, PIN_OUTPUT | 0x80) /* PROGRAM_B */
324 DM814X_IOPAD(0x0820, PIN_INPUT | 0x80) /* INIT_B */
325 DM814X_IOPAD(0x0824, PIN_INPUT | 0x80) /* DONE */
326
327 DM814X_IOPAD(0x0838, PIN_INPUT_PULLUP | 0x80) /* FMCA_TMS */
328 DM814X_IOPAD(0x083c, PIN_INPUT_PULLUP | 0x80) /* FMCA_TCK */
329 DM814X_IOPAD(0x0898, PIN_INPUT_PULLUP | 0x80) /* FMCA_TDO */
330 DM814X_IOPAD(0x089c, PIN_INPUT_PULLUP | 0x80) /* FMCA_TDI */
331 DM814X_IOPAD(0x08ac, PIN_INPUT_PULLUP | 0x80) /* FMCA_TRST */
332
333 DM814X_IOPAD(0x08b0, PIN_INPUT_PULLUP | 0x80) /* FMCB_TMS */
334 DM814X_IOPAD(0x0a88, PIN_INPUT_PULLUP | 0x80) /* FMCB_TCK */
335 DM814X_IOPAD(0x0a8c, PIN_INPUT_PULLUP | 0x80) /* FMCB_TDO */
336 DM814X_IOPAD(0x08bc, PIN_INPUT_PULLUP | 0x80) /* FMCB_TDI */
337 DM814X_IOPAD(0x0a94, PIN_INPUT_PULLUP | 0x80) /* FMCB_TRST */
338
339 DM814X_IOPAD(0x08d4, PIN_INPUT_PULLUP | 0x80) /* FPGA_TMS */
340 DM814X_IOPAD(0x0aa8, PIN_INPUT_PULLUP | 0x80) /* FPGA_TCK */
341 DM814X_IOPAD(0x0adc, PIN_INPUT_PULLUP | 0x80) /* FPGA_TDO */
342 DM814X_IOPAD(0x0ab0, PIN_INPUT_PULLUP | 0x80) /* FPGA_TDI */
343 >;
344 };
345
346 gpio2_pins: pinmux_gpio2_pins {
347 pinctrl-single,pins = <
348 DM814X_IOPAD(0x090c, PIN_INPUT_PULLUP | 0x80) /* PHY A IRQ */
349 DM814X_IOPAD(0x0910, PIN_INPUT_PULLUP | 0x80) /* PHY A RESET */
350 DM814X_IOPAD(0x08f4, PIN_INPUT_PULLUP | 0x80) /* PHY B IRQ */
351 DM814X_IOPAD(0x08f8, PIN_INPUT_PULLUP | 0x80) /* PHY B RESET */
352
353 //DM814X_IOPAD(0x0a14, PIN_INPUT_PULLUP | 0x80) /* ARM IRQ */
354 //DM814X_IOPAD(0x0900, PIN_INPUT | 0x80) /* GPIO IRQ */
355 DM814X_IOPAD(0x0a2c, PIN_INPUT_PULLUP | 0x80) /* GPIO RESET */
356 >;
357 };
358
359 gpio4_pins: pinmux_gpio4_pins {
360 pinctrl-single,pins = <
361 /* The PLL doesn't react well to the SPI controller reset, so
362 * we force the CS lines to pull up as GPIOs until we're ready.
363 * See https://e2e.ti.com/support/processors/f/791/t/276011?Linux-support-for-AM3874-DM8148-in-Arago-linux-omap3
364 */
365 DM814X_IOPAD(0x0b3c, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO0 */
366 DM814X_IOPAD(0x0b40, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO1 */
367 DM814X_IOPAD(0x0b44, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO2 */
368 DM814X_IOPAD(0x0b48, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO3 */
369 DM814X_IOPAD(0x0b4c, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO4 */
370 DM814X_IOPAD(0x0b50, PIN_INPUT_PULLUP | 0x80) /* BP_ARM_GPIO5 */
371 >;
372 };
373
374 spi2_pins: pinmux_spi2_pins {
375 pinctrl-single,pins = <
376 DM814X_IOPAD(0x0950, PIN_INPUT_PULLUP | 0x80) /* PLL SPI CS1 as GPIO */
377 DM814X_IOPAD(0x0818, PIN_INPUT_PULLUP | 0x80) /* PLL SPI CS2 as GPIO */
378 >;
379 };
380
381 spi4_pins: pinmux_spi4_pins {
382 pinctrl-single,pins = <
383 DM814X_IOPAD(0x0a7c, 0x20)
384 DM814X_IOPAD(0x0b74, 0x20)
385 DM814X_IOPAD(0x0b78, PIN_OUTPUT | 0x20)
386 DM814X_IOPAD(0x0b7c, PIN_OUTPUT_PULLDOWN | 0x20)
387 DM814X_IOPAD(0x0b80, PIN_INPUT | 0x20)
388 >;
389 };
390};
391
392&gpio1 {
393 pinctrl-names = "default";
394 pinctrl-0 = <&gpio1_pins>;
395 gpio-line-names =
396 "", "PROGRAM_B", "INIT_B", "DONE", /* 0-3 */
397 "", "", "", "", /* 4-7 */
398 "FMCA_TMS", "FMCA_TCK", "FMCA_TDO", "FMCA_TDI", /* 8-11 */
399 "", "", "", "FMCA_TRST", /* 12-15 */
400 "FMCB_TMS", "FMCB_TCK", "FMCB_TDO", "FMCB_TDI", /* 16-19 */
401 "FMCB_TRST", "", "", "", /* 20-23 */
402 "FPGA_TMS", "FPGA_TCK", "FPGA_TDO", "FPGA_TDI", /* 24-27 */
403 "", "", "", ""; /* 28-31 */
404};
405
406&gpio2 {
407 pinctrl-names = "default";
408 pinctrl-0 = <&gpio2_pins>;
409 gpio-line-names =
410 "PHYA_IRQ_N", "PHYA_RESET_N", "", "", /* 0-3 */
411 "", "", "", "PHYB_IRQ_N", /* 4-7 */
412 "PHYB_RESET_N", "ARM_IRQ", "GPIO_IRQ", ""; /* 8-11 */
413};
414
415&gpio3 {
416 pinctrl-names = "default";
417 /*pinctrl-0 = <&gpio3_pins>;*/
418 gpio-line-names =
419 "", "", "ARMClkSel0", "", /* 0-3 */
420 "EnFPGARef", "", "", "ARMClkSel1"; /* 4-7 */
421};
422
423&gpio4 {
424 pinctrl-names = "default";
425 pinctrl-0 = <&gpio4_pins>;
426 gpio-line-names =
427 "BP_ARM_GPIO0", "BP_ARM_GPIO1", "BP_ARM_GPIO2", "BP_ARM_GPIO3",
428 "BP_ARM_GPIO4", "BP_ARM_GPIO5";
429};
430
431&usb0 {
432 pinctrl-names = "default";
433 pinctrl-0 = <&usb0_pins>;
434 dr_mode = "host";
435};
436
437&usb1 {
438 pinctrl-names = "default";
439 pinctrl-0 = <&usb1_pins>;
440 dr_mode = "host";
441};
442
443&mcspi1 {
444 s25fl256@0 {
445 #address-cells = <1>;
446 #size-cells = <1>;
447 compatible = "jedec,spi-nor";
448 reg = <0>;
449 spi-max-frequency = <40000000>;
450
451 fsbl@0 {
452 /* 256 kB */
453 label = "U-Boot-min";
454 reg = <0 0x40000>;
455 };
456 ssbl@1 {
457 /* 512 kB */
458 label = "U-Boot";
459 reg = <0x40000 0x80000>;
460 };
461 bootenv@2 {
462 /* 256 kB */
463 label = "U-Boot Env";
464 reg = <0xc0000 0x40000>;
465 };
466 kernel@3 {
467 /* 4 MB */
468 label = "Kernel";
469 reg = <0x100000 0x400000>;
470 };
471 ipmi@4 {
472 label = "IPMI FRU";
473 reg = <0x500000 0x40000>;
474 };
475 fs@5 {
476 label = "File System";
477 reg = <0x540000 0x1ac0000>;
478 };
479 };
480};
481
482&mcspi3 {
483 /* DMA event numbers stolen from MCASP */
484 dmas = <&edma_xbar 8 0 16 &edma_xbar 9 0 17
485 &edma_xbar 10 0 18 &edma_xbar 11 0 19>;
486 dma-names = "tx0", "rx0", "tx1", "rx1";
487};
488
489&mcspi4 {
490 pinctrl-names = "default";
491 pinctrl-0 = <&spi4_pins>;
492
493 /* DMA event numbers stolen from MCASP, MCBSP */
494 dmas = <&edma_xbar 12 0 20 &edma_xbar 13 0 21>;
495 dma-names = "tx0", "rx0";
496};
diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts b/arch/arm/boot/dts/am437x-gp-evm.dts
index f4a20cade808..4c6ee37ea573 100644
--- a/arch/arm/boot/dts/am437x-gp-evm.dts
+++ b/arch/arm/boot/dts/am437x-gp-evm.dts
@@ -71,7 +71,7 @@
71 pinctrl-0 = <&matrix_keypad_default>; 71 pinctrl-0 = <&matrix_keypad_default>;
72 pinctrl-1 = <&matrix_keypad_sleep>; 72 pinctrl-1 = <&matrix_keypad_sleep>;
73 73
74 linux,wakeup; 74 wakeup-source;
75 75
76 row-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH /* Bank0, pin3 */ 76 row-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH /* Bank0, pin3 */
77 &gpio4 3 GPIO_ACTIVE_HIGH /* Bank4, pin3 */ 77 &gpio4 3 GPIO_ACTIVE_HIGH /* Bank4, pin3 */
diff --git a/arch/arm/boot/dts/am437x-l4.dtsi b/arch/arm/boot/dts/am437x-l4.dtsi
index ca0896f80248..85c6f4ff1824 100644
--- a/arch/arm/boot/dts/am437x-l4.dtsi
+++ b/arch/arm/boot/dts/am437x-l4.dtsi
@@ -280,12 +280,6 @@
280 #size-cells = <1>; 280 #size-cells = <1>;
281 ranges = <0 0 0x4000>; 281 ranges = <0 0 0x4000>;
282 282
283 phy_sel: cpsw-phy-sel@650 {
284 compatible = "ti,am43xx-cpsw-phy-sel";
285 reg= <0x650 0x4>;
286 reg-names = "gmii-sel";
287 };
288
289 am43xx_pinmux: pinmux@800 { 283 am43xx_pinmux: pinmux@800 {
290 compatible = "ti,am437-padconf", 284 compatible = "ti,am437-padconf",
291 "pinctrl-single"; 285 "pinctrl-single";
@@ -300,11 +294,17 @@
300 }; 294 };
301 295
302 scm_conf: scm_conf@0 { 296 scm_conf: scm_conf@0 {
303 compatible = "syscon"; 297 compatible = "syscon", "simple-bus";
304 reg = <0x0 0x800>; 298 reg = <0x0 0x800>;
305 #address-cells = <1>; 299 #address-cells = <1>;
306 #size-cells = <1>; 300 #size-cells = <1>;
307 301
302 phy_gmii_sel: phy-gmii-sel {
303 compatible = "ti,am43xx-phy-gmii-sel";
304 reg = <0x650 0x4>;
305 #phy-cells = <2>;
306 };
307
308 scm_clocks: clocks { 308 scm_clocks: clocks {
309 #address-cells = <1>; 309 #address-cells = <1>;
310 #size-cells = <0>; 310 #size-cells = <0>;
@@ -555,7 +555,6 @@
555 cpts_clock_shift = <29>; 555 cpts_clock_shift = <29>;
556 ranges = <0 0 0x8000>; 556 ranges = <0 0 0x8000>;
557 syscon = <&scm_conf>; 557 syscon = <&scm_conf>;
558 cpsw-phy-sel = <&phy_sel>;
559 558
560 davinci_mdio: mdio@1000 { 559 davinci_mdio: mdio@1000 {
561 compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio"; 560 compatible = "ti,am4372-mdio","ti,cpsw-mdio","ti,davinci_mdio";
@@ -572,11 +571,13 @@
572 cpsw_emac0: slave@200 { 571 cpsw_emac0: slave@200 {
573 /* Filled in by U-Boot */ 572 /* Filled in by U-Boot */
574 mac-address = [ 00 00 00 00 00 00 ]; 573 mac-address = [ 00 00 00 00 00 00 ];
574 phys = <&phy_gmii_sel 1 0>;
575 }; 575 };
576 576
577 cpsw_emac1: slave@300 { 577 cpsw_emac1: slave@300 {
578 /* Filled in by U-Boot */ 578 /* Filled in by U-Boot */
579 mac-address = [ 00 00 00 00 00 00 ]; 579 mac-address = [ 00 00 00 00 00 00 ];
580 phys = <&phy_gmii_sel 2 0>;
580 }; 581 };
581 }; 582 };
582 }; 583 };
diff --git a/arch/arm/boot/dts/am43x-epos-evm.dts b/arch/arm/boot/dts/am43x-epos-evm.dts
index 4ea753b3ee43..9dfd80e3b76e 100644
--- a/arch/arm/boot/dts/am43x-epos-evm.dts
+++ b/arch/arm/boot/dts/am43x-epos-evm.dts
@@ -584,10 +584,7 @@
584&cpsw_emac0 { 584&cpsw_emac0 {
585 phy-handle = <&ethphy0>; 585 phy-handle = <&ethphy0>;
586 phy-mode = "rmii"; 586 phy-mode = "rmii";
587}; 587 phys = <&phy_gmii_sel 1 1>;
588
589&phy_sel {
590 rmii-clock-ext;
591}; 588};
592 589
593&i2c0 { 590&i2c0 {
diff --git a/arch/arm/boot/dts/arm-realview-eb.dtsi b/arch/arm/boot/dts/arm-realview-eb.dtsi
index 0e4c7c4c8c09..610506723ea5 100644
--- a/arch/arm/boot/dts/arm-realview-eb.dtsi
+++ b/arch/arm/boot/dts/arm-realview-eb.dtsi
@@ -22,9 +22,10 @@
22 22
23#include <dt-bindings/interrupt-controller/irq.h> 23#include <dt-bindings/interrupt-controller/irq.h>
24#include <dt-bindings/gpio/gpio.h> 24#include <dt-bindings/gpio/gpio.h>
25#include "skeleton.dtsi"
26 25
27/ { 26/ {
27 #address-cells = <1>;
28 #size-cells = <1>;
28 compatible = "arm,realview-eb"; 29 compatible = "arm,realview-eb";
29 30
30 chosen { }; 31 chosen { };
@@ -38,6 +39,7 @@
38 }; 39 };
39 40
40 memory { 41 memory {
42 device_type = "memory";
41 /* 128 MiB memory @ 0x0 */ 43 /* 128 MiB memory @ 0x0 */
42 reg = <0x00000000 0x08000000>; 44 reg = <0x00000000 0x08000000>;
43 }; 45 };
diff --git a/arch/arm/boot/dts/arm-realview-pb1176.dts b/arch/arm/boot/dts/arm-realview-pb1176.dts
index 83e0fbc4a1a1..cbbb8878daa3 100644
--- a/arch/arm/boot/dts/arm-realview-pb1176.dts
+++ b/arch/arm/boot/dts/arm-realview-pb1176.dts
@@ -23,9 +23,10 @@
23/dts-v1/; 23/dts-v1/;
24#include <dt-bindings/interrupt-controller/irq.h> 24#include <dt-bindings/interrupt-controller/irq.h>
25#include <dt-bindings/gpio/gpio.h> 25#include <dt-bindings/gpio/gpio.h>
26#include "skeleton.dtsi"
27 26
28/ { 27/ {
28 #address-cells = <1>;
29 #size-cells = <1>;
29 model = "ARM RealView PB1176"; 30 model = "ARM RealView PB1176";
30 compatible = "arm,realview-pb1176"; 31 compatible = "arm,realview-pb1176";
31 32
@@ -40,6 +41,7 @@
40 }; 41 };
41 42
42 memory { 43 memory {
44 device_type = "memory";
43 /* 128 MiB memory @ 0x0 */ 45 /* 128 MiB memory @ 0x0 */
44 reg = <0x00000000 0x08000000>; 46 reg = <0x00000000 0x08000000>;
45 }; 47 };
diff --git a/arch/arm/boot/dts/arm-realview-pb11mp.dts b/arch/arm/boot/dts/arm-realview-pb11mp.dts
index 2f6aa24a0b67..2015619ca22c 100644
--- a/arch/arm/boot/dts/arm-realview-pb11mp.dts
+++ b/arch/arm/boot/dts/arm-realview-pb11mp.dts
@@ -23,9 +23,10 @@
23/dts-v1/; 23/dts-v1/;
24#include <dt-bindings/interrupt-controller/irq.h> 24#include <dt-bindings/interrupt-controller/irq.h>
25#include <dt-bindings/gpio/gpio.h> 25#include <dt-bindings/gpio/gpio.h>
26#include "skeleton.dtsi"
27 26
28/ { 27/ {
28 #address-cells = <1>;
29 #size-cells = <1>;
29 model = "ARM RealView PB11MPcore"; 30 model = "ARM RealView PB11MPcore";
30 compatible = "arm,realview-pb11mp"; 31 compatible = "arm,realview-pb11mp";
31 32
@@ -39,6 +40,7 @@
39 }; 40 };
40 41
41 memory { 42 memory {
43 device_type = "memory";
42 /* 44 /*
43 * The PB11MPCore has 512 MiB memory @ 0x70000000 45 * The PB11MPCore has 512 MiB memory @ 0x70000000
44 * and the first 256 are also remapped @ 0x00000000 46 * and the first 256 are also remapped @ 0x00000000
diff --git a/arch/arm/boot/dts/arm-realview-pbx.dtsi b/arch/arm/boot/dts/arm-realview-pbx.dtsi
index 916a97734f84..a81e9c282432 100644
--- a/arch/arm/boot/dts/arm-realview-pbx.dtsi
+++ b/arch/arm/boot/dts/arm-realview-pbx.dtsi
@@ -22,9 +22,10 @@
22 22
23#include <dt-bindings/interrupt-controller/irq.h> 23#include <dt-bindings/interrupt-controller/irq.h>
24#include <dt-bindings/gpio/gpio.h> 24#include <dt-bindings/gpio/gpio.h>
25#include "skeleton.dtsi"
26 25
27/ { 26/ {
27 #address-cells = <1>;
28 #size-cells = <1>;
28 compatible = "arm,realview-pbx"; 29 compatible = "arm,realview-pbx";
29 30
30 chosen { }; 31 chosen { };
@@ -39,6 +40,7 @@
39 }; 40 };
40 41
41 memory { 42 memory {
43 device_type = "memory";
42 /* 128 MiB memory @ 0x0 */ 44 /* 128 MiB memory @ 0x0 */
43 reg = <0x00000000 0x08000000>; 45 reg = <0x00000000 0x08000000>;
44 }; 46 };
diff --git a/arch/arm/boot/dts/armada-370-rd.dts b/arch/arm/boot/dts/armada-370-rd.dts
index 2bfb3108b5b2..c910d157a686 100644
--- a/arch/arm/boot/dts/armada-370-rd.dts
+++ b/arch/arm/boot/dts/armada-370-rd.dts
@@ -114,48 +114,6 @@
114 }; 114 };
115 }; 115 };
116 }; 116 };
117
118 dsa {
119 status = "disabled";
120
121 compatible = "marvell,dsa";
122 #address-cells = <2>;
123 #size-cells = <0>;
124
125 dsa,ethernet = <&eth1>;
126 dsa,mii-bus = <&mdio>;
127
128 switch@0 {
129 #address-cells = <1>;
130 #size-cells = <0>;
131 reg = <0x10 0>; /* MDIO address 16, switch 0 in tree */
132
133 port@0 {
134 reg = <0>;
135 label = "lan0";
136 };
137
138 port@1 {
139 reg = <1>;
140 label = "lan1";
141 };
142
143 port@2 {
144 reg = <2>;
145 label = "lan2";
146 };
147
148 port@3 {
149 reg = <3>;
150 label = "lan3";
151 };
152
153 port@5 {
154 reg = <5>;
155 label = "cpu";
156 };
157 };
158 };
159}; 117};
160 118
161&pciec { 119&pciec {
diff --git a/arch/arm/boot/dts/armada-388-clearfog.dts b/arch/arm/boot/dts/armada-388-clearfog.dts
index 89a354b43978..20f8d4667753 100644
--- a/arch/arm/boot/dts/armada-388-clearfog.dts
+++ b/arch/arm/boot/dts/armada-388-clearfog.dts
@@ -30,64 +30,6 @@
30 }; 30 };
31 }; 31 };
32 32
33 dsa@0 {
34 status = "disabled";
35
36 compatible = "marvell,dsa";
37 dsa,ethernet = <&eth1>;
38 dsa,mii-bus = <&mdio>;
39 pinctrl-0 = <&clearfog_dsa0_clk_pins &clearfog_dsa0_pins>;
40 pinctrl-names = "default";
41 #address-cells = <2>;
42 #size-cells = <0>;
43
44 switch@0 {
45 #address-cells = <1>;
46 #size-cells = <0>;
47 reg = <4 0>;
48
49 port@0 {
50 reg = <0>;
51 label = "lan5";
52 };
53
54 port@1 {
55 reg = <1>;
56 label = "lan4";
57 };
58
59 port@2 {
60 reg = <2>;
61 label = "lan3";
62 };
63
64 port@3 {
65 reg = <3>;
66 label = "lan2";
67 };
68
69 port@4 {
70 reg = <4>;
71 label = "lan1";
72 };
73
74 port@5 {
75 reg = <5>;
76 label = "cpu";
77 };
78
79 port@6 {
80 /* 88E1512 external phy */
81 reg = <6>;
82 label = "lan6";
83 fixed-link {
84 speed = <1000>;
85 full-duplex;
86 };
87 };
88 };
89 };
90
91 gpio-keys { 33 gpio-keys {
92 compatible = "gpio-keys"; 34 compatible = "gpio-keys";
93 pinctrl-0 = <&rear_button_pins>; 35 pinctrl-0 = <&rear_button_pins>;
diff --git a/arch/arm/boot/dts/armada-388-clearfog.dtsi b/arch/arm/boot/dts/armada-388-clearfog.dtsi
index 1b0d0680c8b6..0d81600ca247 100644
--- a/arch/arm/boot/dts/armada-388-clearfog.dtsi
+++ b/arch/arm/boot/dts/armada-388-clearfog.dtsi
@@ -93,6 +93,7 @@
93 bm,pool-long = <2>; 93 bm,pool-long = <2>;
94 bm,pool-short = <1>; 94 bm,pool-short = <1>;
95 buffer-manager = <&bm>; 95 buffer-manager = <&bm>;
96 phys = <&comphy1 1>;
96 phy-mode = "sgmii"; 97 phy-mode = "sgmii";
97 status = "okay"; 98 status = "okay";
98}; 99};
@@ -103,6 +104,7 @@
103 bm,pool-short = <1>; 104 bm,pool-short = <1>;
104 buffer-manager = <&bm>; 105 buffer-manager = <&bm>;
105 managed = "in-band-status"; 106 managed = "in-band-status";
107 phys = <&comphy5 2>;
106 phy-mode = "sgmii"; 108 phy-mode = "sgmii";
107 sfp = <&sfp>; 109 sfp = <&sfp>;
108 status = "okay"; 110 status = "okay";
diff --git a/arch/arm/boot/dts/armada-38x.dtsi b/arch/arm/boot/dts/armada-38x.dtsi
index 929459c42760..96c18703e471 100644
--- a/arch/arm/boot/dts/armada-38x.dtsi
+++ b/arch/arm/boot/dts/armada-38x.dtsi
@@ -9,13 +9,15 @@
9 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 9 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
10 */ 10 */
11 11
12#include "skeleton.dtsi"
13#include <dt-bindings/interrupt-controller/arm-gic.h> 12#include <dt-bindings/interrupt-controller/arm-gic.h>
14#include <dt-bindings/interrupt-controller/irq.h> 13#include <dt-bindings/interrupt-controller/irq.h>
15 14
16#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 15#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
17 16
18/ { 17/ {
18 #address-cells = <1>;
19 #size-cells = <1>;
20
19 model = "Marvell Armada 38x family SoC"; 21 model = "Marvell Armada 38x family SoC";
20 compatible = "marvell,armada380"; 22 compatible = "marvell,armada380";
21 23
@@ -335,6 +337,43 @@
335 #clock-cells = <1>; 337 #clock-cells = <1>;
336 }; 338 };
337 339
340 comphy: phy@18300 {
341 compatible = "marvell,armada-380-comphy";
342 reg = <0x18300 0x100>;
343 #address-cells = <1>;
344 #size-cells = <0>;
345
346 comphy0: phy@0 {
347 reg = <0>;
348 #phy-cells = <1>;
349 };
350
351 comphy1: phy@1 {
352 reg = <1>;
353 #phy-cells = <1>;
354 };
355
356 comphy2: phy@2 {
357 reg = <2>;
358 #phy-cells = <1>;
359 };
360
361 comphy3: phy@3 {
362 reg = <3>;
363 #phy-cells = <1>;
364 };
365
366 comphy4: phy@4 {
367 reg = <4>;
368 #phy-cells = <1>;
369 };
370
371 comphy5: phy@5 {
372 reg = <5>;
373 #phy-cells = <1>;
374 };
375 };
376
338 coreclk: mvebu-sar@18600 { 377 coreclk: mvebu-sar@18600 {
339 compatible = "marvell,armada-380-core-clock"; 378 compatible = "marvell,armada-380-core-clock";
340 reg = <0x18600 0x04>; 379 reg = <0x18600 0x04>;
diff --git a/arch/arm/boot/dts/armada-39x.dtsi b/arch/arm/boot/dts/armada-39x.dtsi
index f0c949831efb..b1b86934c688 100644
--- a/arch/arm/boot/dts/armada-39x.dtsi
+++ b/arch/arm/boot/dts/armada-39x.dtsi
@@ -7,13 +7,14 @@
7 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com> 7 * Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
8 */ 8 */
9 9
10#include "skeleton.dtsi"
11#include <dt-bindings/interrupt-controller/arm-gic.h> 10#include <dt-bindings/interrupt-controller/arm-gic.h>
12#include <dt-bindings/interrupt-controller/irq.h> 11#include <dt-bindings/interrupt-controller/irq.h>
13 12
14#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 13#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
15 14
16/ { 15/ {
16 #address-cells = <1>;
17 #size-cells = <1>;
17 model = "Marvell Armada 39x family SoC"; 18 model = "Marvell Armada 39x family SoC";
18 compatible = "marvell,armada390"; 19 compatible = "marvell,armada390";
19 20
diff --git a/arch/arm/boot/dts/armada-xp-db.dts b/arch/arm/boot/dts/armada-xp-db.dts
index f3ac7483afed..5d04dc68cf57 100644
--- a/arch/arm/boot/dts/armada-xp-db.dts
+++ b/arch/arm/boot/dts/armada-xp-db.dts
@@ -144,30 +144,32 @@
144 status = "okay"; 144 status = "okay";
145 }; 145 };
146 146
147 nand@d0000 { 147 nand-controller@d0000 {
148 status = "okay"; 148 status = "okay";
149 label = "pxa3xx_nand-0";
150 num-cs = <1>;
151 marvell,nand-keep-config;
152 nand-on-flash-bbt;
153
154 partitions {
155 compatible = "fixed-partitions";
156 #address-cells = <1>;
157 #size-cells = <1>;
158
159 partition@0 {
160 label = "U-Boot";
161 reg = <0 0x800000>;
162 };
163 partition@800000 {
164 label = "Linux";
165 reg = <0x800000 0x800000>;
166 };
167 partition@1000000 {
168 label = "Filesystem";
169 reg = <0x1000000 0x3f000000>;
170 149
150 nand@0 {
151 reg = <0>;
152 label = "pxa3xx_nand-0";
153 nand-rb = <0>;
154 nand-on-flash-bbt;
155
156 partitions {
157 compatible = "fixed-partitions";
158 #address-cells = <1>;
159 #size-cells = <1>;
160
161 partition@0 {
162 label = "U-Boot";
163 reg = <0 0x800000>;
164 };
165 partition@800000 {
166 label = "Linux";
167 reg = <0x800000 0x800000>;
168 };
169 partition@1000000 {
170 label = "Filesystem";
171 reg = <0x1000000 0x3f000000>;
172 };
171 }; 173 };
172 }; 174 };
173 }; 175 };
diff --git a/arch/arm/boot/dts/armada-xp-gp.dts b/arch/arm/boot/dts/armada-xp-gp.dts
index 1139e9469a83..b4cca507cf13 100644
--- a/arch/arm/boot/dts/armada-xp-gp.dts
+++ b/arch/arm/boot/dts/armada-xp-gp.dts
@@ -160,12 +160,15 @@
160 status = "okay"; 160 status = "okay";
161 }; 161 };
162 162
163 nand@d0000 { 163 nand-controller@d0000 {
164 status = "okay"; 164 status = "okay";
165 label = "pxa3xx_nand-0"; 165
166 num-cs = <1>; 166 nand@0 {
167 marvell,nand-keep-config; 167 reg = <0>;
168 nand-on-flash-bbt; 168 label = "pxa3xx_nand-0";
169 nand-rb = <0>;
170 nand-on-flash-bbt;
171 };
169 }; 172 };
170 }; 173 };
171 174
diff --git a/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts b/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts
index bbbb38888bb8..87dcb502f72d 100644
--- a/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts
+++ b/arch/arm/boot/dts/armada-xp-lenovo-ix4-300d.dts
@@ -81,49 +81,52 @@
81 81
82 }; 82 };
83 83
84 nand@d0000 { 84 nand-controller@d0000 {
85 status = "okay"; 85 status = "okay";
86 label = "pxa3xx_nand-0";
87 num-cs = <1>;
88 marvell,nand-keep-config;
89 nand-on-flash-bbt;
90
91 partitions {
92 compatible = "fixed-partitions";
93 #address-cells = <1>;
94 #size-cells = <1>;
95
96 partition@0 {
97 label = "u-boot";
98 reg = <0x00000000 0x000e0000>;
99 read-only;
100 };
101
102 partition@e0000 {
103 label = "u-boot-env";
104 reg = <0x000e0000 0x00020000>;
105 read-only;
106 };
107
108 partition@100000 {
109 label = "u-boot-env2";
110 reg = <0x00100000 0x00020000>;
111 read-only;
112 };
113
114 partition@120000 {
115 label = "zImage";
116 reg = <0x00120000 0x00400000>;
117 };
118
119 partition@520000 {
120 label = "initrd";
121 reg = <0x00520000 0x00400000>;
122 };
123 86
124 partition@e00000 { 87 nand@0 {
125 label = "boot"; 88 reg = <0>;
126 reg = <0x00e00000 0x3f200000>; 89 label = "pxa3xx_nand-0";
90 nand-rb = <0>;
91 nand-on-flash-bbt;
92
93 partitions {
94 compatible = "fixed-partitions";
95 #address-cells = <1>;
96 #size-cells = <1>;
97
98 partition@0 {
99 label = "u-boot";
100 reg = <0x00000000 0x000e0000>;
101 read-only;
102 };
103
104 partition@e0000 {
105 label = "u-boot-env";
106 reg = <0x000e0000 0x00020000>;
107 read-only;
108 };
109
110 partition@100000 {
111 label = "u-boot-env2";
112 reg = <0x00100000 0x00020000>;
113 read-only;
114 };
115
116 partition@120000 {
117 label = "zImage";
118 reg = <0x00120000 0x00400000>;
119 };
120
121 partition@520000 {
122 label = "initrd";
123 reg = <0x00520000 0x00400000>;
124 };
125
126 partition@e00000 {
127 label = "boot";
128 reg = <0x00e00000 0x3f200000>;
129 };
127 }; 130 };
128 }; 131 };
129 }; 132 };
diff --git a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
index 7a2606c3b62e..8480a16919a0 100644
--- a/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
+++ b/arch/arm/boot/dts/armada-xp-linksys-mamba.dts
@@ -210,53 +210,6 @@
210 compatible = "pwm-fan"; 210 compatible = "pwm-fan";
211 pwms = <&gpio0 24 4000>; 211 pwms = <&gpio0 24 4000>;
212 }; 212 };
213
214 dsa {
215 status = "disabled";
216
217 compatible = "marvell,dsa";
218 #address-cells = <2>;
219 #size-cells = <0>;
220
221 dsa,ethernet = <&eth0>;
222 dsa,mii-bus = <&mdio>;
223
224 switch@0 {
225 #address-cells = <1>;
226 #size-cells = <0>;
227 reg = <0x0 0>; /* MDIO address 0, switch 0 in tree */
228
229 port@0 {
230 reg = <0>;
231 label = "lan4";
232 };
233
234 port@1 {
235 reg = <1>;
236 label = "lan3";
237 };
238
239 port@2 {
240 reg = <2>;
241 label = "lan2";
242 };
243
244 port@3 {
245 reg = <3>;
246 label = "lan1";
247 };
248
249 port@4 {
250 reg = <4>;
251 label = "internet";
252 };
253
254 port@5 {
255 reg = <5>;
256 label = "cpu";
257 };
258 };
259 };
260}; 213};
261 214
262&pciec { 215&pciec {
diff --git a/arch/arm/boot/dts/artpec6.dtsi b/arch/arm/boot/dts/artpec6.dtsi
index 3e4115c2cd75..037157e6c5ee 100644
--- a/arch/arm/boot/dts/artpec6.dtsi
+++ b/arch/arm/boot/dts/artpec6.dtsi
@@ -43,9 +43,10 @@
43#include <dt-bindings/interrupt-controller/arm-gic.h> 43#include <dt-bindings/interrupt-controller/arm-gic.h>
44#include <dt-bindings/dma/nbpfaxi.h> 44#include <dt-bindings/dma/nbpfaxi.h>
45#include <dt-bindings/clock/axis,artpec6-clkctrl.h> 45#include <dt-bindings/clock/axis,artpec6-clkctrl.h>
46#include "skeleton.dtsi"
47 46
48/ { 47/ {
48 #address-cells = <1>;
49 #size-cells = <1>;
49 compatible = "axis,artpec6"; 50 compatible = "axis,artpec6";
50 interrupt-parent = <&intc>; 51 interrupt-parent = <&intc>;
51 52
diff --git a/arch/arm/boot/dts/aspeed-bmc-arm-stardragon4800-rep2.dts b/arch/arm/boot/dts/aspeed-bmc-arm-stardragon4800-rep2.dts
index bdfd8c9f3a7c..521afbea2c5b 100644
--- a/arch/arm/boot/dts/aspeed-bmc-arm-stardragon4800-rep2.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-arm-stardragon4800-rep2.dts
@@ -173,6 +173,16 @@
173 }; 173 };
174 }; 174 };
175 }; 175 };
176
177 dps650ab@58 {
178 compatible = "delta,dps650ab";
179 reg = <0x58>;
180 };
181
182 dps650ab@59 {
183 compatible = "delta,dps650ab";
184 reg = <0x59>;
185 };
176}; 186};
177 187
178&i2c9 { 188&i2c9 {
diff --git a/arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts b/arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts
index f8e7b71af7e6..4c2dcac738e8 100644
--- a/arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-facebook-tiogapass.dts
@@ -21,6 +21,17 @@
21 memory@80000000 { 21 memory@80000000 {
22 reg = <0x80000000 0x20000000>; 22 reg = <0x80000000 0x20000000>;
23 }; 23 };
24
25 iio-hwmon {
26 compatible = "iio-hwmon";
27 io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
28 <&adc 4>, <&adc 5>, <&adc 6>;
29 };
30
31 iio-hwmon-battery {
32 compatible = "iio-hwmon";
33 io-channels = <&adc 7>;
34 };
24}; 35};
25 36
26&fmc { 37&fmc {
@@ -43,6 +54,16 @@
43 }; 54 };
44}; 55};
45 56
57&lpc_snoop {
58 status = "okay";
59 snoop-ports = <0x80>;
60};
61
62&lpc_ctrl {
63 // Enable lpc clock
64 status = "okay";
65};
66
46&uart1 { 67&uart1 {
47 // Host Console 68 // Host Console
48 status = "okay"; 69 status = "okay";
@@ -51,11 +72,33 @@
51 &pinctrl_rxd1_default>; 72 &pinctrl_rxd1_default>;
52}; 73};
53 74
75&uart2 {
76 // SoL Host Console
77 status = "okay";
78};
79
80&uart3 {
81 // SoL BMC Console
82 status = "okay";
83};
84
54&uart5 { 85&uart5 {
55 // BMC Console 86 // BMC Console
56 status = "okay"; 87 status = "okay";
57}; 88};
58 89
90&kcs2 {
91 // BMC KCS channel 2
92 status = "okay";
93 kcs_addr = <0xca8>;
94};
95
96&kcs3 {
97 // BMC KCS channel 3
98 status = "okay";
99 kcs_addr = <0xca2>;
100};
101
59&mac0 { 102&mac0 {
60 status = "okay"; 103 status = "okay";
61 104
@@ -64,6 +107,10 @@
64 use-ncsi; 107 use-ncsi;
65}; 108};
66 109
110&adc {
111 status = "okay";
112};
113
67&i2c0 { 114&i2c0 {
68 status = "okay"; 115 status = "okay";
69 //Airmax Conn B, CPU0 PIROM, CPU1 PIROM 116 //Airmax Conn B, CPU0 PIROM, CPU1 PIROM
@@ -122,6 +169,10 @@
122 169
123&i2c8 { 170&i2c8 {
124 status = "okay"; 171 status = "okay";
172 tmp421@1f {
173 compatible = "ti,tmp421";
174 reg = <0x1f>;
175 };
125 //Mezz Sensor SMBus 176 //Mezz Sensor SMBus
126}; 177};
127 178
@@ -140,7 +191,7 @@
140 }; 191 };
141 192
142 fan@1 { 193 fan@1 {
143 reg = <0x00>; 194 reg = <0x01>;
144 aspeed,fan-tach-ch = /bits/ 8 <0x01>; 195 aspeed,fan-tach-ch = /bits/ 8 <0x02>;
145 }; 196 };
146}; 197};
diff --git a/arch/arm/boot/dts/aspeed-bmc-inspur-on5263m5.dts b/arch/arm/boot/dts/aspeed-bmc-inspur-on5263m5.dts
new file mode 100644
index 000000000000..2337ee23f5c4
--- /dev/null
+++ b/arch/arm/boot/dts/aspeed-bmc-inspur-on5263m5.dts
@@ -0,0 +1,145 @@
1// SPDX-License-Identifier: GPL-2.0
2// Copyright (c) 2018 Inspur Corporation
3/dts-v1/;
4
5#include "aspeed-g5.dtsi"
6#include <dt-bindings/gpio/aspeed-gpio.h>
7
8/ {
9 model = "ON5263M5 BMC";
10 compatible = "inspur,on5263m5-bmc", "aspeed,ast2500";
11
12 chosen {
13 stdout-path = &uart5;
14 bootargs = "earlyprintk";
15 };
16
17 memory {
18 reg = <0x80000000 0x20000000>;
19 };
20
21 reserved-memory {
22 #address-cells = <1>;
23 #size-cells = <1>;
24 ranges;
25
26 vga_memory: framebuffer@9f000000 {
27 no-map;
28 reg = <0x9f000000 0x01000000>;
29 };
30 };
31
32 leds {
33 compatible = "gpio-leds";
34 bmc_alive {
35 label = "bmc_alive";
36 gpios = <&gpio ASPEED_GPIO(I, 1) GPIO_ACTIVE_LOW>;
37 linux,default-trigger = "timer";
38 };
39 };
40
41 iio-hwmon {
42 compatible = "iio-hwmon";
43 io-channels = <&adc 0>, <&adc 1>, <&adc 2>, <&adc 3>,
44 <&adc 4>, <&adc 5>, <&adc 6>, <&adc 7>;
45 };
46
47};
48
49&fmc {
50 status = "okay";
51 flash@0 {
52 status = "okay";
53 m25p,fast-read;
54 label = "bmc";
55#include "openbmc-flash-layout.dtsi"
56 };
57};
58
59&spi1 {
60 status = "okay";
61 pinctrl-names = "default";
62 pinctrl-0 = <&pinctrl_spi1_default>;
63
64 flash@0 {
65 status = "okay";
66 m25p,fast-read;
67 label = "pnor";
68 };
69};
70
71&uart5 {
72 status = "okay";
73};
74
75&mac0 {
76 status = "okay";
77
78 pinctrl-names = "default";
79 pinctrl-0 = <&pinctrl_rmii1_default>;
80 use-ncsi;
81};
82
83&mac1 {
84 status = "okay";
85
86 pinctrl-names = "default";
87 pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
88};
89
90&i2c6 {
91 status = "okay";
92
93 tmp421@4e {
94 compatible = "ti,tmp421";
95 reg = <0x4e>;
96 };
97
98 tmp112@48 {
99 compatible = "ti,tmp112";
100 reg = <0x48>;
101 };
102
103 eeprom@54 {
104 compatible = "atmel,24c64";
105 reg = <0x54>;
106 pagesize = <32>;
107 };
108};
109
110&i2c7 {
111 status = "okay";
112
113 adm1278@11 {
114 compatible = "adi,adm1278";
115 reg = <0x11>;
116 };
117};
118
119&gfx {
120 status = "okay";
121};
122
123&pinctrl {
124 aspeed,external-nodes = <&gfx &lhc>;
125};
126
127&pwm_tacho {
128 status = "okay";
129 pinctrl-names = "default";
130 pinctrl-0 = <&pinctrl_pwm0_default &pinctrl_pwm1_default>;
131
132 fan@0 {
133 reg = <0x00>;
134 aspeed,fan-tach-ch = /bits/ 8 <0x00 0x01>;
135 };
136
137 fan@1 {
138 reg = <0x01>;
139 aspeed,fan-tach-ch = /bits/ 8 <0x02 0x03>;
140 };
141};
142
143&adc {
144 status = "okay";
145};
diff --git a/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts b/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
index 9aa1d4467453..b854ac0bae9a 100644
--- a/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts
@@ -169,6 +169,11 @@
169 169
170&i2c3 { 170&i2c3 {
171 status = "okay"; 171 status = "okay";
172
173 occ-hwmon@50 {
174 compatible = "ibm,p8-occ-hwmon";
175 reg = <0x50>;
176 };
172}; 177};
173 178
174&i2c4 { 179&i2c4 {
diff --git a/arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dts b/arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dts
index 385c0f4b69ee..0d7c6339da46 100644
--- a/arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dts
+++ b/arch/arm/boot/dts/aspeed-bmc-quanta-q71l.dts
@@ -116,6 +116,10 @@
116 status = "okay"; 116 status = "okay";
117}; 117};
118 118
119&lpc_ctrl {
120 status = "okay";
121};
122
119&lpc_snoop { 123&lpc_snoop {
120 status = "okay"; 124 status = "okay";
121 snoop-ports = <0x80>; 125 snoop-ports = <0x80>;
@@ -134,6 +138,10 @@
134 pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>; 138 pinctrl-0 = <&pinctrl_rgmii2_default &pinctrl_mdio2_default>;
135}; 139};
136 140
141&uart1 {
142 status = "okay";
143};
144
137&uart5 { 145&uart5 {
138 status = "okay"; 146 status = "okay";
139}; 147};
diff --git a/arch/arm/boot/dts/aspeed-g4.dtsi b/arch/arm/boot/dts/aspeed-g4.dtsi
index 69f6b9d2e7e7..9549f867aa1e 100644
--- a/arch/arm/boot/dts/aspeed-g4.dtsi
+++ b/arch/arm/boot/dts/aspeed-g4.dtsi
@@ -197,6 +197,7 @@
197 gpio-ranges = <&pinctrl 0 0 220>; 197 gpio-ranges = <&pinctrl 0 0 220>;
198 clocks = <&syscon ASPEED_CLK_APB>; 198 clocks = <&syscon ASPEED_CLK_APB>;
199 interrupt-controller; 199 interrupt-controller;
200 #interrupt-cells = <2>;
200 }; 201 };
201 202
202 timer: timer@1e782000 { 203 timer: timer@1e782000 {
diff --git a/arch/arm/boot/dts/aspeed-g5.dtsi b/arch/arm/boot/dts/aspeed-g5.dtsi
index d107459fc0f8..85ed9dbec196 100644
--- a/arch/arm/boot/dts/aspeed-g5.dtsi
+++ b/arch/arm/boot/dts/aspeed-g5.dtsi
@@ -47,6 +47,13 @@
47 reg = <0x80000000 0>; 47 reg = <0x80000000 0>;
48 }; 48 };
49 49
50 edac: sdram@1e6e0000 {
51 compatible = "aspeed,ast2500-sdram-edac";
52 reg = <0x1e6e0000 0x174>;
53 interrupts = <0>;
54 status = "disabled";
55 };
56
50 ahb { 57 ahb {
51 compatible = "simple-bus"; 58 compatible = "simple-bus";
52 #address-cells = <1>; 59 #address-cells = <1>;
@@ -250,6 +257,7 @@
250 gpio-ranges = <&pinctrl 0 0 220>; 257 gpio-ranges = <&pinctrl 0 0 220>;
251 clocks = <&syscon ASPEED_CLK_APB>; 258 clocks = <&syscon ASPEED_CLK_APB>;
252 interrupt-controller; 259 interrupt-controller;
260 #interrupt-cells = <2>;
253 }; 261 };
254 262
255 timer: timer@1e782000 { 263 timer: timer@1e782000 {
@@ -330,8 +338,32 @@
330 ranges = <0x0 0x1e789000 0x1000>; 338 ranges = <0x0 0x1e789000 0x1000>;
331 339
332 lpc_bmc: lpc-bmc@0 { 340 lpc_bmc: lpc-bmc@0 {
333 compatible = "aspeed,ast2500-lpc-bmc"; 341 compatible = "aspeed,ast2500-lpc-bmc", "simple-mfd", "syscon";
334 reg = <0x0 0x80>; 342 reg = <0x0 0x80>;
343 reg-io-width = <4>;
344
345 #address-cells = <1>;
346 #size-cells = <1>;
347 ranges = <0x0 0x0 0x80>;
348
349 kcs1: kcs1@0 {
350 compatible = "aspeed,ast2500-kcs-bmc";
351 interrupts = <8>;
352 kcs_chan = <1>;
353 status = "disabled";
354 };
355 kcs2: kcs2@0 {
356 compatible = "aspeed,ast2500-kcs-bmc";
357 interrupts = <8>;
358 kcs_chan = <2>;
359 status = "disabled";
360 };
361 kcs3: kcs3@0 {
362 compatible = "aspeed,ast2500-kcs-bmc";
363 interrupts = <8>;
364 kcs_chan = <3>;
365 status = "disabled";
366 };
335 }; 367 };
336 368
337 lpc_host: lpc-host@80 { 369 lpc_host: lpc-host@80 {
@@ -343,6 +375,13 @@
343 #size-cells = <1>; 375 #size-cells = <1>;
344 ranges = <0x0 0x80 0x1e0>; 376 ranges = <0x0 0x80 0x1e0>;
345 377
378 kcs4: kcs4@0 {
379 compatible = "aspeed,ast2500-kcs-bmc";
380 interrupts = <8>;
381 kcs_chan = <4>;
382 status = "disabled";
383 };
384
346 lpc_ctrl: lpc-ctrl@0 { 385 lpc_ctrl: lpc-ctrl@0 {
347 compatible = "aspeed,ast2500-lpc-ctrl"; 386 compatible = "aspeed,ast2500-lpc-ctrl";
348 reg = <0x0 0x80>; 387 reg = <0x0 0x80>;
diff --git a/arch/arm/boot/dts/at91-nattis-2-natte-2.dts b/arch/arm/boot/dts/at91-nattis-2-natte-2.dts
index 0f6d335125e2..f245944bd5d7 100644
--- a/arch/arm/boot/dts/at91-nattis-2-natte-2.dts
+++ b/arch/arm/boot/dts/at91-nattis-2-natte-2.dts
@@ -22,7 +22,7 @@
22 wakeup { 22 wakeup {
23 label = "Wakeup"; 23 label = "Wakeup";
24 linux,code = <10>; 24 linux,code = <10>;
25 gpio-key,wakeup; 25 wakeup-source;
26 gpios = <&pioB 27 GPIO_ACTIVE_LOW>; 26 gpios = <&pioB 27 GPIO_ACTIVE_LOW>;
27 }; 27 };
28 }; 28 };
diff --git a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
index cf0087b4c9e1..33a159c0163f 100644
--- a/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
+++ b/arch/arm/boot/dts/at91-sama5d27_som1.dtsi
@@ -62,6 +62,20 @@
62 62
63 ahb { 63 ahb {
64 apb { 64 apb {
65 qspi1: spi@f0024000 {
66 pinctrl-names = "default";
67 pinctrl-0 = <&pinctrl_qspi1_default>;
68
69 flash@0 {
70 compatible = "jedec,spi-nor";
71 reg = <0>;
72 spi-max-frequency = <80000000>;
73 spi-tx-bus-width = <4>;
74 spi-rx-bus-width = <4>;
75 m25p,fast-read;
76 };
77 };
78
65 macb0: ethernet@f8008000 { 79 macb0: ethernet@f8008000 {
66 pinctrl-names = "default"; 80 pinctrl-names = "default";
67 pinctrl-0 = <&pinctrl_macb0_default>; 81 pinctrl-0 = <&pinctrl_macb0_default>;
@@ -78,6 +92,22 @@
78 92
79 pinctrl@fc038000 { 93 pinctrl@fc038000 {
80 94
95 pinctrl_qspi1_default: qspi1_default {
96 sck_cs {
97 pinmux = <PIN_PB5__QSPI1_SCK>,
98 <PIN_PB6__QSPI1_CS>;
99 bias-disable;
100 };
101
102 data {
103 pinmux = <PIN_PB7__QSPI1_IO0>,
104 <PIN_PB8__QSPI1_IO1>,
105 <PIN_PB9__QSPI1_IO2>,
106 <PIN_PB10__QSPI1_IO3>;
107 bias-pull-up;
108 };
109 };
110
81 pinctrl_macb0_default: macb0_default { 111 pinctrl_macb0_default: macb0_default {
82 pinmux = <PIN_PD9__GTXCK>, 112 pinmux = <PIN_PD9__GTXCK>,
83 <PIN_PD10__GTXEN>, 113 <PIN_PD10__GTXEN>,
diff --git a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
index 4a258867ddf1..a48180555ef5 100644
--- a/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
+++ b/arch/arm/boot/dts/at91-sama5d27_som1_ek.dts
@@ -109,6 +109,10 @@
109 status = "okay"; 109 status = "okay";
110 }; 110 };
111 111
112 qspi1: spi@f0024000 {
113 status = "okay";
114 };
115
112 spi0: spi@f8000000 { 116 spi0: spi@f8000000 {
113 pinctrl-names = "default"; 117 pinctrl-names = "default";
114 pinctrl-0 = <&pinctrl_spi0_default>; 118 pinctrl-0 = <&pinctrl_spi0_default>;
diff --git a/arch/arm/boot/dts/at91-wb45n.dts b/arch/arm/boot/dts/at91-wb45n.dts
index 5b9512a6c89c..54d130c92185 100644
--- a/arch/arm/boot/dts/at91-wb45n.dts
+++ b/arch/arm/boot/dts/at91-wb45n.dts
@@ -22,7 +22,7 @@
22 label = "IRQBTN"; 22 label = "IRQBTN";
23 linux,code = <99>; 23 linux,code = <99>;
24 gpios = <&pioB 18 GPIO_ACTIVE_LOW>; 24 gpios = <&pioB 18 GPIO_ACTIVE_LOW>;
25 gpio-key,wakeup = <1>; 25 wakeup-source;
26 }; 26 };
27 }; 27 };
28}; 28};
diff --git a/arch/arm/boot/dts/at91-wb50n.dts b/arch/arm/boot/dts/at91-wb50n.dts
index 8cecc7051a86..a5e45bb95c04 100644
--- a/arch/arm/boot/dts/at91-wb50n.dts
+++ b/arch/arm/boot/dts/at91-wb50n.dts
@@ -23,7 +23,7 @@
23 label = "BTNESC"; 23 label = "BTNESC";
24 linux,code = <1>; /* ESC button */ 24 linux,code = <1>; /* ESC button */
25 gpios = <&pioA 10 GPIO_ACTIVE_LOW>; 25 gpios = <&pioA 10 GPIO_ACTIVE_LOW>;
26 gpio-key,wakeup = <1>; 26 wakeup-source;
27 }; 27 };
28 28
29 irqbtn@31 { 29 irqbtn@31 {
@@ -31,7 +31,7 @@
31 label = "IRQBTN"; 31 label = "IRQBTN";
32 linux,code = <99>; /* SysReq button */ 32 linux,code = <99>; /* SysReq button */
33 gpios = <&pioE 31 GPIO_ACTIVE_LOW>; 33 gpios = <&pioE 31 GPIO_ACTIVE_LOW>;
34 gpio-key,wakeup = <1>; 34 wakeup-source;
35 }; 35 };
36 }; 36 };
37 37
diff --git a/arch/arm/boot/dts/at91rm9200.dtsi b/arch/arm/boot/dts/at91rm9200.dtsi
index 2ad69a7fbc00..5a882a053816 100644
--- a/arch/arm/boot/dts/at91rm9200.dtsi
+++ b/arch/arm/boot/dts/at91rm9200.dtsi
@@ -10,13 +10,14 @@
10 * Licensed under GPLv2 or later. 10 * Licensed under GPLv2 or later.
11 */ 11 */
12 12
13#include "skeleton.dtsi"
14#include <dt-bindings/pinctrl/at91.h> 13#include <dt-bindings/pinctrl/at91.h>
15#include <dt-bindings/interrupt-controller/irq.h> 14#include <dt-bindings/interrupt-controller/irq.h>
16#include <dt-bindings/gpio/gpio.h> 15#include <dt-bindings/gpio/gpio.h>
17#include <dt-bindings/clock/at91.h> 16#include <dt-bindings/clock/at91.h>
18 17
19/ { 18/ {
19 #address-cells = <1>;
20 #size-cells = <1>;
20 model = "Atmel AT91RM9200 family SoC"; 21 model = "Atmel AT91RM9200 family SoC";
21 compatible = "atmel,at91rm9200"; 22 compatible = "atmel,at91rm9200";
22 interrupt-parent = <&aic>; 23 interrupt-parent = <&aic>;
@@ -49,6 +50,7 @@
49 }; 50 };
50 51
51 memory { 52 memory {
53 device_type = "memory";
52 reg = <0x20000000 0x04000000>; 54 reg = <0x20000000 0x04000000>;
53 }; 55 };
54 56
diff --git a/arch/arm/boot/dts/at91sam9260.dtsi b/arch/arm/boot/dts/at91sam9260.dtsi
index 7cd9c3bc4dfb..3b58b94b53c9 100644
--- a/arch/arm/boot/dts/at91sam9260.dtsi
+++ b/arch/arm/boot/dts/at91sam9260.dtsi
@@ -8,13 +8,14 @@
8 * Licensed under GPLv2 or later. 8 * Licensed under GPLv2 or later.
9 */ 9 */
10 10
11#include "skeleton.dtsi"
12#include <dt-bindings/pinctrl/at91.h> 11#include <dt-bindings/pinctrl/at91.h>
13#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/interrupt-controller/irq.h>
14#include <dt-bindings/gpio/gpio.h> 13#include <dt-bindings/gpio/gpio.h>
15#include <dt-bindings/clock/at91.h> 14#include <dt-bindings/clock/at91.h>
16 15
17/ { 16/ {
17 #address-cells = <1>;
18 #size-cells = <1>;
18 model = "Atmel AT91SAM9260 family SoC"; 19 model = "Atmel AT91SAM9260 family SoC";
19 compatible = "atmel,at91sam9260"; 20 compatible = "atmel,at91sam9260";
20 interrupt-parent = <&aic>; 21 interrupt-parent = <&aic>;
@@ -46,6 +47,7 @@
46 }; 47 };
47 48
48 memory { 49 memory {
50 device_type = "memory";
49 reg = <0x20000000 0x04000000>; 51 reg = <0x20000000 0x04000000>;
50 }; 52 };
51 53
diff --git a/arch/arm/boot/dts/at91sam9261.dtsi b/arch/arm/boot/dts/at91sam9261.dtsi
index 01d700b63b45..a907a1fdd24c 100644
--- a/arch/arm/boot/dts/at91sam9261.dtsi
+++ b/arch/arm/boot/dts/at91sam9261.dtsi
@@ -6,13 +6,14 @@
6 * Licensed under GPLv2 only. 6 * Licensed under GPLv2 only.
7 */ 7 */
8 8
9#include "skeleton.dtsi"
10#include <dt-bindings/pinctrl/at91.h> 9#include <dt-bindings/pinctrl/at91.h>
11#include <dt-bindings/interrupt-controller/irq.h> 10#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/clock/at91.h> 12#include <dt-bindings/clock/at91.h>
14 13
15/ { 14/ {
15 #address-cells = <1>;
16 #size-cells = <1>;
16 model = "Atmel AT91SAM9261 family SoC"; 17 model = "Atmel AT91SAM9261 family SoC";
17 compatible = "atmel,at91sam9261"; 18 compatible = "atmel,at91sam9261";
18 interrupt-parent = <&aic>; 19 interrupt-parent = <&aic>;
@@ -43,6 +44,7 @@
43 }; 44 };
44 45
45 memory { 46 memory {
47 device_type = "memory";
46 reg = <0x20000000 0x08000000>; 48 reg = <0x20000000 0x08000000>;
47 }; 49 };
48 50
diff --git a/arch/arm/boot/dts/at91sam9263.dtsi b/arch/arm/boot/dts/at91sam9263.dtsi
index c5766da4e54e..3fb63d81f18e 100644
--- a/arch/arm/boot/dts/at91sam9263.dtsi
+++ b/arch/arm/boot/dts/at91sam9263.dtsi
@@ -6,13 +6,14 @@
6 * Licensed under GPLv2 only. 6 * Licensed under GPLv2 only.
7 */ 7 */
8 8
9#include "skeleton.dtsi"
10#include <dt-bindings/pinctrl/at91.h> 9#include <dt-bindings/pinctrl/at91.h>
11#include <dt-bindings/interrupt-controller/irq.h> 10#include <dt-bindings/interrupt-controller/irq.h>
12#include <dt-bindings/gpio/gpio.h> 11#include <dt-bindings/gpio/gpio.h>
13#include <dt-bindings/clock/at91.h> 12#include <dt-bindings/clock/at91.h>
14 13
15/ { 14/ {
15 #address-cells = <1>;
16 #size-cells = <1>;
16 model = "Atmel AT91SAM9263 family SoC"; 17 model = "Atmel AT91SAM9263 family SoC";
17 compatible = "atmel,at91sam9263"; 18 compatible = "atmel,at91sam9263";
18 interrupt-parent = <&aic>; 19 interrupt-parent = <&aic>;
@@ -45,6 +46,7 @@
45 }; 46 };
46 47
47 memory { 48 memory {
49 device_type = "memory";
48 reg = <0x20000000 0x08000000>; 50 reg = <0x20000000 0x08000000>;
49 }; 51 };
50 52
diff --git a/arch/arm/boot/dts/at91sam9g45.dtsi b/arch/arm/boot/dts/at91sam9g45.dtsi
index d16db1fa7e15..f36819607131 100644
--- a/arch/arm/boot/dts/at91sam9g45.dtsi
+++ b/arch/arm/boot/dts/at91sam9g45.dtsi
@@ -9,7 +9,6 @@
9 * Licensed under GPLv2 or later. 9 * Licensed under GPLv2 or later.
10 */ 10 */
11 11
12#include "skeleton.dtsi"
13#include <dt-bindings/dma/at91.h> 12#include <dt-bindings/dma/at91.h>
14#include <dt-bindings/pinctrl/at91.h> 13#include <dt-bindings/pinctrl/at91.h>
15#include <dt-bindings/interrupt-controller/irq.h> 14#include <dt-bindings/interrupt-controller/irq.h>
@@ -17,6 +16,8 @@
17#include <dt-bindings/clock/at91.h> 16#include <dt-bindings/clock/at91.h>
18 17
19/ { 18/ {
19 #address-cells = <1>;
20 #size-cells = <1>;
20 model = "Atmel AT91SAM9G45 family SoC"; 21 model = "Atmel AT91SAM9G45 family SoC";
21 compatible = "atmel,at91sam9g45"; 22 compatible = "atmel,at91sam9g45";
22 interrupt-parent = <&aic>; 23 interrupt-parent = <&aic>;
@@ -51,6 +52,7 @@
51 }; 52 };
52 53
53 memory { 54 memory {
55 device_type = "memory";
54 reg = <0x70000000 0x10000000>; 56 reg = <0x70000000 0x10000000>;
55 }; 57 };
56 58
diff --git a/arch/arm/boot/dts/at91sam9n12.dtsi b/arch/arm/boot/dts/at91sam9n12.dtsi
index 37cb81f457b5..f71d65e6e510 100644
--- a/arch/arm/boot/dts/at91sam9n12.dtsi
+++ b/arch/arm/boot/dts/at91sam9n12.dtsi
@@ -7,7 +7,6 @@
7 * Licensed under GPLv2 or later. 7 * Licensed under GPLv2 or later.
8 */ 8 */
9 9
10#include "skeleton.dtsi"
11#include <dt-bindings/dma/at91.h> 10#include <dt-bindings/dma/at91.h>
12#include <dt-bindings/pinctrl/at91.h> 11#include <dt-bindings/pinctrl/at91.h>
13#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/interrupt-controller/irq.h>
@@ -15,6 +14,8 @@
15#include <dt-bindings/clock/at91.h> 14#include <dt-bindings/clock/at91.h>
16 15
17/ { 16/ {
17 #address-cells = <1>;
18 #size-cells = <1>;
18 model = "Atmel AT91SAM9N12 SoC"; 19 model = "Atmel AT91SAM9N12 SoC";
19 compatible = "atmel,at91sam9n12"; 20 compatible = "atmel,at91sam9n12";
20 interrupt-parent = <&aic>; 21 interrupt-parent = <&aic>;
@@ -47,6 +48,7 @@
47 }; 48 };
48 49
49 memory { 50 memory {
51 device_type = "memory";
50 reg = <0x20000000 0x10000000>; 52 reg = <0x20000000 0x10000000>;
51 }; 53 };
52 54
diff --git a/arch/arm/boot/dts/at91sam9rl.dtsi b/arch/arm/boot/dts/at91sam9rl.dtsi
index 3862ff2f26e0..6b5777f3c20b 100644
--- a/arch/arm/boot/dts/at91sam9rl.dtsi
+++ b/arch/arm/boot/dts/at91sam9rl.dtsi
@@ -7,7 +7,6 @@
7 * Licensed under GPLv2 or later. 7 * Licensed under GPLv2 or later.
8 */ 8 */
9 9
10#include "skeleton.dtsi"
11#include <dt-bindings/pinctrl/at91.h> 10#include <dt-bindings/pinctrl/at91.h>
12#include <dt-bindings/clock/at91.h> 11#include <dt-bindings/clock/at91.h>
13#include <dt-bindings/interrupt-controller/irq.h> 12#include <dt-bindings/interrupt-controller/irq.h>
@@ -15,6 +14,8 @@
15#include <dt-bindings/pwm/pwm.h> 14#include <dt-bindings/pwm/pwm.h>
16 15
17/ { 16/ {
17 #address-cells = <1>;
18 #size-cells = <1>;
18 model = "Atmel AT91SAM9RL family SoC"; 19 model = "Atmel AT91SAM9RL family SoC";
19 compatible = "atmel,at91sam9rl", "atmel,at91sam9"; 20 compatible = "atmel,at91sam9rl", "atmel,at91sam9";
20 interrupt-parent = <&aic>; 21 interrupt-parent = <&aic>;
@@ -48,6 +49,7 @@
48 }; 49 };
49 50
50 memory { 51 memory {
52 device_type = "memory";
51 reg = <0x20000000 0x04000000>; 53 reg = <0x20000000 0x04000000>;
52 }; 54 };
53 55
diff --git a/arch/arm/boot/dts/at91sam9x5.dtsi b/arch/arm/boot/dts/at91sam9x5.dtsi
index 07443a387a8f..79c4956d3902 100644
--- a/arch/arm/boot/dts/at91sam9x5.dtsi
+++ b/arch/arm/boot/dts/at91sam9x5.dtsi
@@ -9,7 +9,6 @@
9 * Licensed under GPLv2 or later. 9 * Licensed under GPLv2 or later.
10 */ 10 */
11 11
12#include "skeleton.dtsi"
13#include <dt-bindings/dma/at91.h> 12#include <dt-bindings/dma/at91.h>
14#include <dt-bindings/pinctrl/at91.h> 13#include <dt-bindings/pinctrl/at91.h>
15#include <dt-bindings/interrupt-controller/irq.h> 14#include <dt-bindings/interrupt-controller/irq.h>
@@ -17,6 +16,8 @@
17#include <dt-bindings/clock/at91.h> 16#include <dt-bindings/clock/at91.h>
18 17
19/ { 18/ {
19 #address-cells = <1>;
20 #size-cells = <1>;
20 model = "Atmel AT91SAM9x5 family SoC"; 21 model = "Atmel AT91SAM9x5 family SoC";
21 compatible = "atmel,at91sam9x5"; 22 compatible = "atmel,at91sam9x5";
22 interrupt-parent = <&aic>; 23 interrupt-parent = <&aic>;
@@ -49,6 +50,7 @@
49 }; 50 };
50 51
51 memory { 52 memory {
53 device_type = "memory";
52 reg = <0x20000000 0x10000000>; 54 reg = <0x20000000 0x10000000>;
53 }; 55 };
54 56
diff --git a/arch/arm/boot/dts/atlas6-evb.dts b/arch/arm/boot/dts/atlas6-evb.dts
index ab042ca8dea1..40882419309d 100644
--- a/arch/arm/boot/dts/atlas6-evb.dts
+++ b/arch/arm/boot/dts/atlas6-evb.dts
@@ -15,6 +15,7 @@
15 compatible = "sirf,atlas6-cb", "sirf,atlas6"; 15 compatible = "sirf,atlas6-cb", "sirf,atlas6";
16 16
17 memory { 17 memory {
18 device_type = "memory";
18 reg = <0x00000000 0x20000000>; 19 reg = <0x00000000 0x20000000>;
19 }; 20 };
20 21
diff --git a/arch/arm/boot/dts/atlas6.dtsi b/arch/arm/boot/dts/atlas6.dtsi
index 29598667420b..5587b98032a3 100644
--- a/arch/arm/boot/dts/atlas6.dtsi
+++ b/arch/arm/boot/dts/atlas6.dtsi
@@ -6,7 +6,6 @@
6 * Licensed under GPLv2 or later. 6 * Licensed under GPLv2 or later.
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10/ { 9/ {
11 compatible = "sirf,atlas6"; 10 compatible = "sirf,atlas6";
12 #address-cells = <1>; 11 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/atlas7.dtsi b/arch/arm/boot/dts/atlas7.dtsi
index 83449b33de6b..f3de9af35b4d 100644
--- a/arch/arm/boot/dts/atlas7.dtsi
+++ b/arch/arm/boot/dts/atlas7.dtsi
@@ -6,7 +6,6 @@
6 * Licensed under GPLv2 or later. 6 * Licensed under GPLv2 or later.
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10/ { 9/ {
11 compatible = "sirf,atlas7"; 10 compatible = "sirf,atlas7";
12 #address-cells = <1>; 11 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/axm55xx.dtsi b/arch/arm/boot/dts/axm55xx.dtsi
index 47799f59faa5..2a93d3ee3b66 100644
--- a/arch/arm/boot/dts/axm55xx.dtsi
+++ b/arch/arm/boot/dts/axm55xx.dtsi
@@ -12,9 +12,9 @@
12#include <dt-bindings/interrupt-controller/arm-gic.h> 12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/clock/lsi,axm5516-clks.h> 13#include <dt-bindings/clock/lsi,axm5516-clks.h>
14 14
15#include "skeleton64.dtsi"
16
17/ { 15/ {
16 #address-cells = <2>;
17 #size-cells = <2>;
18 interrupt-parent = <&gic>; 18 interrupt-parent = <&gic>;
19 19
20 aliases { 20 aliases {
diff --git a/arch/arm/boot/dts/bcm-cygnus.dtsi b/arch/arm/boot/dts/bcm-cygnus.dtsi
index 253df7170a4e..5f7b46503a51 100644
--- a/arch/arm/boot/dts/bcm-cygnus.dtsi
+++ b/arch/arm/boot/dts/bcm-cygnus.dtsi
@@ -34,9 +34,9 @@
34#include <dt-bindings/interrupt-controller/irq.h> 34#include <dt-bindings/interrupt-controller/irq.h>
35#include <dt-bindings/clock/bcm-cygnus.h> 35#include <dt-bindings/clock/bcm-cygnus.h>
36 36
37#include "skeleton.dtsi"
38
39/ { 37/ {
38 #address-cells = <1>;
39 #size-cells = <1>;
40 compatible = "brcm,cygnus"; 40 compatible = "brcm,cygnus";
41 model = "Broadcom Cygnus SoC"; 41 model = "Broadcom Cygnus SoC";
42 interrupt-parent = <&gic>; 42 interrupt-parent = <&gic>;
@@ -45,6 +45,11 @@
45 ethernet0 = &eth0; 45 ethernet0 = &eth0;
46 }; 46 };
47 47
48 memory {
49 device_type = "memory";
50 reg = <0 0>;
51 };
52
48 cpus { 53 cpus {
49 #address-cells = <1>; 54 #address-cells = <1>;
50 #size-cells = <0>; 55 #size-cells = <0>;
diff --git a/arch/arm/boot/dts/bcm-nsp.dtsi b/arch/arm/boot/dts/bcm-nsp.dtsi
index 0d2538b46139..6925b30c2253 100644
--- a/arch/arm/boot/dts/bcm-nsp.dtsi
+++ b/arch/arm/boot/dts/bcm-nsp.dtsi
@@ -34,9 +34,9 @@
34#include <dt-bindings/interrupt-controller/irq.h> 34#include <dt-bindings/interrupt-controller/irq.h>
35#include <dt-bindings/clock/bcm-nsp.h> 35#include <dt-bindings/clock/bcm-nsp.h>
36 36
37#include "skeleton.dtsi"
38
39/ { 37/ {
38 #address-cells = <1>;
39 #size-cells = <1>;
40 compatible = "brcm,nsp"; 40 compatible = "brcm,nsp";
41 model = "Broadcom Northstar Plus SoC"; 41 model = "Broadcom Northstar Plus SoC";
42 interrupt-parent = <&gic>; 42 interrupt-parent = <&gic>;
diff --git a/arch/arm/boot/dts/bcm11351.dtsi b/arch/arm/boot/dts/bcm11351.dtsi
index db7cded1b7ad..b99c2e579622 100644
--- a/arch/arm/boot/dts/bcm11351.dtsi
+++ b/arch/arm/boot/dts/bcm11351.dtsi
@@ -16,9 +16,9 @@
16 16
17#include "dt-bindings/clock/bcm281xx.h" 17#include "dt-bindings/clock/bcm281xx.h"
18 18
19#include "skeleton.dtsi"
20
21/ { 19/ {
20 #address-cells = <1>;
21 #size-cells = <1>;
22 model = "BCM11351 SoC"; 22 model = "BCM11351 SoC";
23 compatible = "brcm,bcm11351"; 23 compatible = "brcm,bcm11351";
24 interrupt-parent = <&gic>; 24 interrupt-parent = <&gic>;
diff --git a/arch/arm/boot/dts/bcm21664-garnet.dts b/arch/arm/boot/dts/bcm21664-garnet.dts
index e87cb26ddf84..8b045cfab64b 100644
--- a/arch/arm/boot/dts/bcm21664-garnet.dts
+++ b/arch/arm/boot/dts/bcm21664-garnet.dts
@@ -22,6 +22,7 @@
22 compatible = "brcm,bcm21664-garnet", "brcm,bcm21664"; 22 compatible = "brcm,bcm21664-garnet", "brcm,bcm21664";
23 23
24 memory { 24 memory {
25 device_type = "memory";
25 reg = <0x80000000 0x40000000>; /* 1 GB */ 26 reg = <0x80000000 0x40000000>; /* 1 GB */
26 }; 27 };
27 28
diff --git a/arch/arm/boot/dts/bcm21664.dtsi b/arch/arm/boot/dts/bcm21664.dtsi
index 266f2611dc22..758daa334148 100644
--- a/arch/arm/boot/dts/bcm21664.dtsi
+++ b/arch/arm/boot/dts/bcm21664.dtsi
@@ -16,9 +16,9 @@
16 16
17#include "dt-bindings/clock/bcm21664.h" 17#include "dt-bindings/clock/bcm21664.h"
18 18
19#include "skeleton.dtsi"
20
21/ { 19/ {
20 #address-cells = <1>;
21 #size-cells = <1>;
22 model = "BCM21664 SoC"; 22 model = "BCM21664 SoC";
23 compatible = "brcm,bcm21664"; 23 compatible = "brcm,bcm21664";
24 interrupt-parent = <&gic>; 24 interrupt-parent = <&gic>;
diff --git a/arch/arm/boot/dts/bcm23550-sparrow.dts b/arch/arm/boot/dts/bcm23550-sparrow.dts
index 4d525ccb48c8..1c66b15f3013 100644
--- a/arch/arm/boot/dts/bcm23550-sparrow.dts
+++ b/arch/arm/boot/dts/bcm23550-sparrow.dts
@@ -46,6 +46,7 @@
46 }; 46 };
47 47
48 memory { 48 memory {
49 device_type = "memory";
49 reg = <0x80000000 0x20000000>; /* 512 MB */ 50 reg = <0x80000000 0x20000000>; /* 512 MB */
50 }; 51 };
51}; 52};
diff --git a/arch/arm/boot/dts/bcm23550.dtsi b/arch/arm/boot/dts/bcm23550.dtsi
index a7a643f38385..701198f5f498 100644
--- a/arch/arm/boot/dts/bcm23550.dtsi
+++ b/arch/arm/boot/dts/bcm23550.dtsi
@@ -36,9 +36,9 @@
36/* BCM23550 and BCM21664 have almost identical clocks */ 36/* BCM23550 and BCM21664 have almost identical clocks */
37#include "dt-bindings/clock/bcm21664.h" 37#include "dt-bindings/clock/bcm21664.h"
38 38
39#include "skeleton.dtsi"
40
41/ { 39/ {
40 #address-cells = <1>;
41 #size-cells = <1>;
42 model = "BCM23550 SoC"; 42 model = "BCM23550 SoC";
43 compatible = "brcm,bcm23550"; 43 compatible = "brcm,bcm23550";
44 interrupt-parent = <&gic>; 44 interrupt-parent = <&gic>;
diff --git a/arch/arm/boot/dts/bcm28155-ap.dts b/arch/arm/boot/dts/bcm28155-ap.dts
index 9ce91dd60cb6..fbfca83bd28f 100644
--- a/arch/arm/boot/dts/bcm28155-ap.dts
+++ b/arch/arm/boot/dts/bcm28155-ap.dts
@@ -22,6 +22,7 @@
22 compatible = "brcm,bcm28155-ap", "brcm,bcm11351"; 22 compatible = "brcm,bcm28155-ap", "brcm,bcm11351";
23 23
24 memory { 24 memory {
25 device_type = "memory";
25 reg = <0x80000000 0x40000000>; /* 1 GB */ 26 reg = <0x80000000 0x40000000>; /* 1 GB */
26 }; 27 };
27 28
diff --git a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
index 2cd9c5e4f892..db8a6017f220 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-a-plus.dts
@@ -31,8 +31,8 @@
31 * "FOO" = GPIO line named "FOO" on the schematic 31 * "FOO" = GPIO line named "FOO" on the schematic
32 * "FOO_N" = GPIO line named "FOO" on schematic, active low 32 * "FOO_N" = GPIO line named "FOO" on schematic, active low
33 */ 33 */
34 gpio-line-names = "SDA0", 34 gpio-line-names = "ID_SDA",
35 "SCL0", 35 "ID_SCL",
36 "SDA1", 36 "SDA1",
37 "SCL1", 37 "SCL1",
38 "GPIO_GCLK", 38 "GPIO_GCLK",
diff --git a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
index cfbdaacbaeba..1e40d672b055 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-b-plus.dts
@@ -33,8 +33,8 @@
33 * "FOO" = GPIO line named "FOO" on the schematic 33 * "FOO" = GPIO line named "FOO" on the schematic
34 * "FOO_N" = GPIO line named "FOO" on schematic, active low 34 * "FOO_N" = GPIO line named "FOO" on schematic, active low
35 */ 35 */
36 gpio-line-names = "SDA0", 36 gpio-line-names = "ID_SDA",
37 "SCL0", 37 "ID_SCL",
38 "SDA1", 38 "SDA1",
39 "SCL1", 39 "SCL1",
40 "GPIO_GCLK", 40 "GPIO_GCLK",
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
index 644d907bafbb..ba0167df6c5f 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero-w.dts
@@ -25,8 +25,6 @@
25 25
26 wifi_pwrseq: wifi-pwrseq { 26 wifi_pwrseq: wifi-pwrseq {
27 compatible = "mmc-pwrseq-simple"; 27 compatible = "mmc-pwrseq-simple";
28 pinctrl-names = "default";
29 pinctrl-0 = <&wl_on>;
30 reset-gpios = <&gpio 41 GPIO_ACTIVE_LOW>; 28 reset-gpios = <&gpio 41 GPIO_ACTIVE_LOW>;
31 }; 29 };
32}; 30};
@@ -40,8 +38,8 @@
40 * "FOO" = GPIO line named "FOO" on the schematic 38 * "FOO" = GPIO line named "FOO" on the schematic
41 * "FOO_N" = GPIO line named "FOO" on schematic, active low 39 * "FOO_N" = GPIO line named "FOO" on schematic, active low
42 */ 40 */
43 gpio-line-names = "GPIO0", 41 gpio-line-names = "ID_SDA",
44 "GPIO1", 42 "ID_SCL",
45 "SDA1", 43 "SDA1",
46 "SCL1", 44 "SCL1",
47 "GPIO_GCLK", 45 "GPIO_GCLK",
@@ -98,11 +96,6 @@
98 "SD_DATA3_R"; 96 "SD_DATA3_R";
99 97
100 pinctrl-0 = <&gpioout &alt0>; 98 pinctrl-0 = <&gpioout &alt0>;
101
102 wl_on: wl-on {
103 brcm,pins = <41>;
104 brcm,function = <BCM2835_FSEL_GPIO_OUT>;
105 };
106}; 99};
107 100
108&hdmi { 101&hdmi {
diff --git a/arch/arm/boot/dts/bcm2835-rpi-zero.dts b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
index 00323ba8f7de..3b35a8a4a55f 100644
--- a/arch/arm/boot/dts/bcm2835-rpi-zero.dts
+++ b/arch/arm/boot/dts/bcm2835-rpi-zero.dts
@@ -28,8 +28,8 @@
28 * "FOO" = GPIO line named "FOO" on the schematic 28 * "FOO" = GPIO line named "FOO" on the schematic
29 * "FOO_N" = GPIO line named "FOO" on schematic, active low 29 * "FOO_N" = GPIO line named "FOO" on schematic, active low
30 */ 30 */
31 gpio-line-names = "SDA0", 31 gpio-line-names = "ID_SDA",
32 "SCL0", 32 "ID_SCL",
33 "SDA1", 33 "SDA1",
34 "SCL1", 34 "SCL1",
35 "GPIO_GCLK", 35 "GPIO_GCLK",
diff --git a/arch/arm/boot/dts/bcm2835-rpi.dtsi b/arch/arm/boot/dts/bcm2835-rpi.dtsi
index 29f970f864dc..715d50c64529 100644
--- a/arch/arm/boot/dts/bcm2835-rpi.dtsi
+++ b/arch/arm/boot/dts/bcm2835-rpi.dtsi
@@ -1,7 +1,7 @@
1#include <dt-bindings/power/raspberrypi-power.h> 1#include <dt-bindings/power/raspberrypi-power.h>
2 2
3/ { 3/ {
4 memory { 4 memory@0 {
5 device_type = "memory"; 5 device_type = "memory";
6 reg = <0 0x10000000>; 6 reg = <0 0x10000000>;
7 }; 7 };
@@ -19,8 +19,6 @@
19 soc { 19 soc {
20 firmware: firmware { 20 firmware: firmware {
21 compatible = "raspberrypi,bcm2835-firmware", "simple-bus"; 21 compatible = "raspberrypi,bcm2835-firmware", "simple-bus";
22 #address-cells = <0>;
23 #size-cells = <0>;
24 mboxes = <&mailbox>; 22 mboxes = <&mailbox>;
25 }; 23 };
26 24
@@ -87,10 +85,6 @@
87 power-domains = <&power RPI_POWER_DOMAIN_USB>; 85 power-domains = <&power RPI_POWER_DOMAIN_USB>;
88}; 86};
89 87
90&v3d {
91 power-domains = <&power RPI_POWER_DOMAIN_V3D>;
92};
93
94&hdmi { 88&hdmi {
95 power-domains = <&power RPI_POWER_DOMAIN_HDMI>; 89 power-domains = <&power RPI_POWER_DOMAIN_HDMI>;
96 status = "okay"; 90 status = "okay";
diff --git a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
index ac4408b34b58..7b4e651bafdd 100644
--- a/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
+++ b/arch/arm/boot/dts/bcm2836-rpi-2-b.dts
@@ -9,7 +9,7 @@
9 compatible = "raspberrypi,2-model-b", "brcm,bcm2836"; 9 compatible = "raspberrypi,2-model-b", "brcm,bcm2836";
10 model = "Raspberry Pi 2 Model B"; 10 model = "Raspberry Pi 2 Model B";
11 11
12 memory { 12 memory@0 {
13 reg = <0 0x40000000>; 13 reg = <0 0x40000000>;
14 }; 14 };
15 15
@@ -28,6 +28,72 @@
28}; 28};
29 29
30&gpio { 30&gpio {
31 /*
32 * Taken from rpi_SCH_2b_1p2_reduced.pdf and
33 * the official GPU firmware DT blob.
34 *
35 * Legend:
36 * "NC" = not connected (no rail from the SoC)
37 * "FOO" = GPIO line named "FOO" on the schematic
38 * "FOO_N" = GPIO line named "FOO" on schematic, active low
39 */
40 gpio-line-names = "ID_SDA",
41 "ID_SCL",
42 "SDA1",
43 "SCL1",
44 "GPIO_GCLK",
45 "GPIO5",
46 "GPIO6",
47 "SPI_CE1_N",
48 "SPI_CE0_N",
49 "SPI_MISO",
50 "SPI_MOSI",
51 "SPI_SCLK",
52 "GPIO12",
53 "GPIO13",
54 /* Serial port */
55 "TXD0",
56 "RXD0",
57 "GPIO16",
58 "GPIO17",
59 "GPIO18",
60 "GPIO19",
61 "GPIO20",
62 "GPIO21",
63 "GPIO22",
64 "GPIO23",
65 "GPIO24",
66 "GPIO25",
67 "GPIO26",
68 "GPIO27",
69 "SDA0",
70 "SCL0",
71 "", /* GPIO30 */
72 "LAN_RUN",
73 "CAM_GPIO1",
74 "", /* GPIO33 */
75 "", /* GPIO34 */
76 "PWR_LOW_N",
77 "", /* GPIO36 */
78 "", /* GPIO37 */
79 "USB_LIMIT",
80 "", /* GPIO39 */
81 "PWM0_OUT",
82 "CAM_GPIO0",
83 "SMPS_SCL",
84 "SMPS_SDA",
85 "ETHCLK",
86 "PWM1_OUT",
87 "HDMI_HPD_N",
88 "STATUS_LED",
89 /* Used by SD Card */
90 "SD_CLK_R",
91 "SD_CMD_R",
92 "SD_DATA0_R",
93 "SD_DATA1_R",
94 "SD_DATA2_R",
95 "SD_DATA3_R";
96
31 pinctrl-0 = <&gpioout &alt0 &i2s_alt0>; 97 pinctrl-0 = <&gpioout &alt0 &i2s_alt0>;
32 98
33 /* I2S interface */ 99 /* I2S interface */
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
new file mode 100644
index 000000000000..7f4437a8eedb
--- /dev/null
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-a-plus.dts
@@ -0,0 +1,175 @@
1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/;
3#include "bcm2837.dtsi"
4#include "bcm2836-rpi.dtsi"
5#include "bcm283x-rpi-usb-host.dtsi"
6
7/ {
8 compatible = "raspberrypi,3-model-a-plus", "brcm,bcm2837";
9 model = "Raspberry Pi 3 Model A+";
10
11 chosen {
12 /* 8250 auxiliary UART instead of pl011 */
13 stdout-path = "serial1:115200n8";
14 };
15
16 memory@0 {
17 reg = <0 0x20000000>;
18 };
19
20 leds {
21 act {
22 gpios = <&gpio 29 GPIO_ACTIVE_HIGH>;
23 };
24
25 pwr {
26 label = "PWR";
27 gpios = <&expgpio 2 GPIO_ACTIVE_LOW>;
28 };
29 };
30};
31
32&firmware {
33 expgpio: gpio {
34 compatible = "raspberrypi,firmware-gpio";
35 gpio-controller;
36 #gpio-cells = <2>;
37 gpio-line-names = "",
38 "BT_WL_ON",
39 "STATUS_LED_R",
40 "",
41 "",
42 "CAM_GPIO0",
43 "CAM_GPIO1",
44 "";
45 status = "okay";
46 };
47};
48
49&gpio {
50 /*
51 * This is mostly based on the official GPU firmware DT blob.
52 *
53 * Legend:
54 * "NC" = not connected (no rail from the SoC)
55 * "FOO" = GPIO line named "FOO" on the schematic
56 * "FOO_N" = GPIO line named "FOO" on schematic, active low
57 */
58 gpio-line-names = "ID_SDA",
59 "ID_SCL",
60 "SDA1",
61 "SCL1",
62 "GPIO_GCLK",
63 "GPIO5",
64 "GPIO6",
65 "SPI_CE1_N",
66 "SPI_CE0_N",
67 "SPI_MISO",
68 "SPI_MOSI",
69 "SPI_SCLK",
70 "GPIO12",
71 "GPIO13",
72 /* Serial port */
73 "TXD1",
74 "RXD1",
75 "GPIO16",
76 "GPIO17",
77 "GPIO18",
78 "GPIO19",
79 "GPIO20",
80 "GPIO21",
81 "GPIO22",
82 "GPIO23",
83 "GPIO24",
84 "GPIO25",
85 "GPIO26",
86 "GPIO27",
87 "HDMI_HPD_N",
88 "STATUS_LED_G",
89 /* Used by BT module */
90 "CTS0",
91 "RTS0",
92 "TXD0",
93 "RXD0",
94 /* Used by Wifi */
95 "SD1_CLK",
96 "SD1_CMD",
97 "SD1_DATA0",
98 "SD1_DATA1",
99 "SD1_DATA2",
100 "SD1_DATA3",
101 "PWM0_OUT",
102 "PWM1_OUT",
103 "", /* GPIO42 */
104 "WIFI_CLK",
105 "SDA0",
106 "SCL0",
107 "SMPS_SCL",
108 "SMPS_SDA",
109 /* Used by SD Card */
110 "SD_CLK_R",
111 "SD_CMD_R",
112 "SD_DATA0_R",
113 "SD_DATA1_R",
114 "SD_DATA2_R",
115 "SD_DATA3_R";
116};
117
118&hdmi {
119 hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
120};
121
122&pwm {
123 pinctrl-names = "default";
124 pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>;
125 status = "okay";
126};
127
128/*
129 * SDHCI is used to control the SDIO for wireless
130 *
131 * WL_REG_ON and BT_REG_ON of the CYW43455 Wifi/BT module are driven
132 * by a single GPIO. We can't give GPIO control to one of the drivers,
133 * otherwise the other part would get unexpectedly disturbed.
134 */
135&sdhci {
136 #address-cells = <1>;
137 #size-cells = <0>;
138 pinctrl-names = "default";
139 pinctrl-0 = <&emmc_gpio34>;
140 status = "okay";
141 bus-width = <4>;
142 non-removable;
143
144 brcmf: wifi@1 {
145 reg = <1>;
146 compatible = "brcm,bcm4329-fmac";
147 };
148};
149
150/* SDHOST is used to drive the SD card */
151&sdhost {
152 pinctrl-names = "default";
153 pinctrl-0 = <&sdhost_gpio48>;
154 status = "okay";
155 bus-width = <4>;
156};
157
158/* uart0 communicates with the BT module */
159&uart0 {
160 pinctrl-names = "default";
161 pinctrl-0 = <&uart0_ctsrts_gpio30 &uart0_gpio32 &gpclk2_gpio43>;
162 status = "okay";
163
164 bluetooth {
165 compatible = "brcm,bcm43438-bt";
166 max-speed = <2000000>;
167 };
168};
169
170/* uart1 is mapped to the pin header */
171&uart1 {
172 pinctrl-names = "default";
173 pinctrl-0 = <&uart1_gpio14>;
174 status = "okay";
175};
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
index 42bb09044cc7..c6fa34c24100 100644
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b-plus.dts
@@ -14,7 +14,7 @@
14 stdout-path = "serial1:115200n8"; 14 stdout-path = "serial1:115200n8";
15 }; 15 };
16 16
17 memory { 17 memory@0 {
18 reg = <0 0x40000000>; 18 reg = <0 0x40000000>;
19 }; 19 };
20 20
@@ -42,7 +42,7 @@
42 #gpio-cells = <2>; 42 #gpio-cells = <2>;
43 gpio-line-names = "BT_ON", 43 gpio-line-names = "BT_ON",
44 "WL_ON", 44 "WL_ON",
45 "STATUS_LED", 45 "STATUS_LED_R",
46 "LAN_RUN", 46 "LAN_RUN",
47 "", 47 "",
48 "CAM_GPIO0", 48 "CAM_GPIO0",
@@ -52,6 +52,76 @@
52 }; 52 };
53}; 53};
54 54
55&gpio {
56 /*
57 * Taken from rpi_SCH_3bplus_1p0_reduced.pdf and
58 * the official GPU firmware DT blob.
59 *
60 * Legend:
61 * "NC" = not connected (no rail from the SoC)
62 * "FOO" = GPIO line named "FOO" on the schematic
63 * "FOO_N" = GPIO line named "FOO" on schematic, active low
64 */
65 gpio-line-names = "ID_SDA",
66 "ID_SCL",
67 "SDA1",
68 "SCL1",
69 "GPIO_GCLK",
70 "GPIO5",
71 "GPIO6",
72 "SPI_CE1_N",
73 "SPI_CE0_N",
74 "SPI_MISO",
75 "SPI_MOSI",
76 "SPI_SCLK",
77 "GPIO12",
78 "GPIO13",
79 /* Serial port */
80 "TXD1",
81 "RXD1",
82 "GPIO16",
83 "GPIO17",
84 "GPIO18",
85 "GPIO19",
86 "GPIO20",
87 "GPIO21",
88 "GPIO22",
89 "GPIO23",
90 "GPIO24",
91 "GPIO25",
92 "GPIO26",
93 "GPIO27",
94 "HDMI_HPD_N",
95 "STATUS_LED_G",
96 /* Used by BT module */
97 "CTS0",
98 "RTS0",
99 "TXD0",
100 "RXD0",
101 /* Used by Wifi */
102 "SD1_CLK",
103 "SD1_CMD",
104 "SD1_DATA0",
105 "SD1_DATA1",
106 "SD1_DATA2",
107 "SD1_DATA3",
108 "PWM0_OUT",
109 "PWM1_OUT",
110 "ETHCLK",
111 "WIFI_CLK",
112 "SDA0",
113 "SCL0",
114 "SMPS_SCL",
115 "SMPS_SDA",
116 /* Used by SD Card */
117 "SD_CLK_R",
118 "SD_CMD_R",
119 "SD_DATA0_R",
120 "SD_DATA1_R",
121 "SD_DATA2_R",
122 "SD_DATA3_R";
123};
124
55&hdmi { 125&hdmi {
56 hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; 126 hpd-gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
57}; 127};
diff --git a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
index 0c155dd4f396..ce71f578c51a 100644
--- a/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
+++ b/arch/arm/boot/dts/bcm2837-rpi-3-b.dts
@@ -14,7 +14,7 @@
14 stdout-path = "serial1:115200n8"; 14 stdout-path = "serial1:115200n8";
15 }; 15 };
16 16
17 memory { 17 memory@0 {
18 reg = <0 0x40000000>; 18 reg = <0 0x40000000>;
19 }; 19 };
20 20
@@ -39,7 +39,7 @@
39 "WL_ON", 39 "WL_ON",
40 "STATUS_LED", 40 "STATUS_LED",
41 "LAN_RUN", 41 "LAN_RUN",
42 "HPD_N", 42 "HDMI_HPD_N",
43 "CAM_GPIO0", 43 "CAM_GPIO0",
44 "CAM_GPIO1", 44 "CAM_GPIO1",
45 "PWR_LOW_N"; 45 "PWR_LOW_N";
@@ -47,6 +47,76 @@
47 }; 47 };
48}; 48};
49 49
50&gpio {
51 /*
52 * Taken from rpi_SCH_3b_1p2_reduced.pdf and
53 * the official GPU firmware DT blob.
54 *
55 * Legend:
56 * "NC" = not connected (no rail from the SoC)
57 * "FOO" = GPIO line named "FOO" on the schematic
58 * "FOO_N" = GPIO line named "FOO" on schematic, active low
59 */
60 gpio-line-names = "ID_SDA",
61 "ID_SCL",
62 "SDA1",
63 "SCL1",
64 "GPIO_GCLK",
65 "GPIO5",
66 "GPIO6",
67 "SPI_CE1_N",
68 "SPI_CE0_N",
69 "SPI_MISO",
70 "SPI_MOSI",
71 "SPI_SCLK",
72 "GPIO12",
73 "GPIO13",
74 /* Serial port */
75 "TXD1",
76 "RXD1",
77 "GPIO16",
78 "GPIO17",
79 "GPIO18",
80 "GPIO19",
81 "GPIO20",
82 "GPIO21",
83 "GPIO22",
84 "GPIO23",
85 "GPIO24",
86 "GPIO25",
87 "GPIO26",
88 "GPIO27",
89 "", /* GPIO 28 */
90 "LAN_RUN_BOOT",
91 /* Used by BT module */
92 "CTS0",
93 "RTS0",
94 "TXD0",
95 "RXD0",
96 /* Used by Wifi */
97 "SD1_CLK",
98 "SD1_CMD",
99 "SD1_DATA0",
100 "SD1_DATA1",
101 "SD1_DATA2",
102 "SD1_DATA3",
103 "PWM0_OUT",
104 "PWM1_OUT",
105 "ETHCLK",
106 "WIFI_CLK",
107 "SDA0",
108 "SCL0",
109 "SMPS_SCL",
110 "SMPS_SDA",
111 /* Used by SD Card */
112 "SD_CLK_R",
113 "SD_CMD_R",
114 "SD_DATA0_R",
115 "SD_DATA1_R",
116 "SD_DATA2_R",
117 "SD_DATA3_R";
118};
119
50&pwm { 120&pwm {
51 pinctrl-names = "default"; 121 pinctrl-names = "default";
52 pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>; 122 pinctrl-0 = <&pwm0_gpio40 &pwm1_gpio41>;
diff --git a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
index 4a89a1885a3d..81399b2c5af9 100644
--- a/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
+++ b/arch/arm/boot/dts/bcm2837-rpi-cm3.dtsi
@@ -4,7 +4,7 @@
4#include "bcm2836-rpi.dtsi" 4#include "bcm2836-rpi.dtsi"
5 5
6/ { 6/ {
7 memory { 7 memory@0 {
8 reg = <0 0x40000000>; 8 reg = <0 0x40000000>;
9 }; 9 };
10 10
diff --git a/arch/arm/boot/dts/bcm283x.dtsi b/arch/arm/boot/dts/bcm283x.dtsi
index 31b29646b14c..9777644c6c2b 100644
--- a/arch/arm/boot/dts/bcm283x.dtsi
+++ b/arch/arm/boot/dts/bcm283x.dtsi
@@ -3,6 +3,7 @@
3#include <dt-bindings/clock/bcm2835-aux.h> 3#include <dt-bindings/clock/bcm2835-aux.h>
4#include <dt-bindings/gpio/gpio.h> 4#include <dt-bindings/gpio/gpio.h>
5#include <dt-bindings/interrupt-controller/irq.h> 5#include <dt-bindings/interrupt-controller/irq.h>
6#include <dt-bindings/soc/bcm2835-pm.h>
6 7
7/* firmware-provided startup stubs live here, where the secondary CPUs are 8/* firmware-provided startup stubs live here, where the secondary CPUs are
8 * spinning. 9 * spinning.
@@ -120,9 +121,18 @@
120 #interrupt-cells = <2>; 121 #interrupt-cells = <2>;
121 }; 122 };
122 123
123 watchdog@7e100000 { 124 pm: watchdog@7e100000 {
124 compatible = "brcm,bcm2835-pm-wdt"; 125 compatible = "brcm,bcm2835-pm", "brcm,bcm2835-pm-wdt";
125 reg = <0x7e100000 0x28>; 126 #power-domain-cells = <1>;
127 #reset-cells = <1>;
128 reg = <0x7e100000 0x114>,
129 <0x7e00a000 0x24>;
130 clocks = <&clocks BCM2835_CLOCK_V3D>,
131 <&clocks BCM2835_CLOCK_PERI_IMAGE>,
132 <&clocks BCM2835_CLOCK_H264>,
133 <&clocks BCM2835_CLOCK_ISP>;
134 clock-names = "v3d", "peri_image", "h264", "isp";
135 system-power-controller;
126 }; 136 };
127 137
128 clocks: cprman@7e101000 { 138 clocks: cprman@7e101000 {
@@ -629,6 +639,7 @@
629 compatible = "brcm,bcm2835-v3d"; 639 compatible = "brcm,bcm2835-v3d";
630 reg = <0x7ec00000 0x1000>; 640 reg = <0x7ec00000 0x1000>;
631 interrupts = <1 10>; 641 interrupts = <1 10>;
642 power-domains = <&pm BCM2835_POWER_DOMAIN_GRAFX_V3D>;
632 }; 643 };
633 644
634 vc4: gpu { 645 vc4: gpu {
diff --git a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
index 76a2bab3bc6f..fe842f2f1ca7 100644
--- a/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
+++ b/arch/arm/boot/dts/bcm47081-asus-rt-n18u.dts
@@ -20,6 +20,7 @@
20 }; 20 };
21 21
22 memory { 22 memory {
23 device_type = "memory";
23 reg = <0x00000000 0x08000000 24 reg = <0x00000000 0x08000000
24 0x88000000 0x08000000>; 25 0x88000000 0x08000000>;
25 }; 26 };
diff --git a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
index 69e3570e03dd..6fcbb0509ba0 100644
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-600dhp2.dts
@@ -20,6 +20,7 @@
20 }; 20 };
21 21
22 memory { 22 memory {
23 device_type = "memory";
23 reg = <0x00000000 0x08000000 24 reg = <0x00000000 0x08000000
24 0x88000000 0x08000000>; 25 0x88000000 0x08000000>;
25 }; 26 };
diff --git a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
index 0f6f0fe13bfb..b3e8cc90b13f 100644
--- a/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
+++ b/arch/arm/boot/dts/bcm47081-buffalo-wzr-900dhp.dts
@@ -20,6 +20,7 @@
20 }; 20 };
21 21
22 memory { 22 memory {
23 device_type = "memory";
23 reg = <0x00000000 0x08000000 24 reg = <0x00000000 0x08000000
24 0x88000000 0x08000000>; 25 0x88000000 0x08000000>;
25 }; 26 };
diff --git a/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts b/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
index f77089744996..fdeaa895512f 100644
--- a/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
+++ b/arch/arm/boot/dts/bcm47081-luxul-xap-1410.dts
@@ -16,6 +16,7 @@
16 }; 16 };
17 17
18 memory { 18 memory {
19 device_type = "memory";
19 reg = <0x00000000 0x08000000>; 20 reg = <0x00000000 0x08000000>;
20 }; 21 };
21 22
diff --git a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
index 4d427863756f..0d510cb15ec3 100644
--- a/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
+++ b/arch/arm/boot/dts/bcm47081-luxul-xwr-1200.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000>; 21 reg = <0x00000000 0x08000000>;
21 }; 22 };
22 23
diff --git a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
index 189cc3dcd6ef..962e89edba11 100644
--- a/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
+++ b/arch/arm/boot/dts/bcm47081-tplink-archer-c5-v2.dts
@@ -16,6 +16,7 @@
16 }; 16 };
17 17
18 memory { 18 memory {
19 device_type = "memory";
19 reg = <0x00000000 0x08000000>; 20 reg = <0x00000000 0x08000000>;
20 }; 21 };
21 22
diff --git a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
index 03c1ab188576..658a56ff8a5c 100644
--- a/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
+++ b/arch/arm/boot/dts/bcm47094-dlink-dir-885l.dts
@@ -20,6 +20,7 @@
20 }; 20 };
21 21
22 memory { 22 memory {
23 device_type = "memory";
23 reg = <0x00000000 0x08000000 24 reg = <0x00000000 0x08000000
24 0x88000000 0x08000000>; 25 0x88000000 0x08000000>;
25 }; 26 };
diff --git a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
index 36efe410dcd7..5fd47eec4407 100644
--- a/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
+++ b/arch/arm/boot/dts/bcm47094-linksys-panamera.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000 21 reg = <0x00000000 0x08000000
21 0x88000000 0x08000000>; 22 0x88000000 0x08000000>;
22 }; 23 };
diff --git a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
index 3e5e9972cd97..6604be6ff0a0 100644
--- a/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
+++ b/arch/arm/boot/dts/bcm47094-luxul-abr-4500.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000 21 reg = <0x00000000 0x08000000
21 0x88000000 0x18000000>; 22 0x88000000 0x18000000>;
22 }; 23 };
diff --git a/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts b/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
index 7fd85475893d..567ebbd5a0e9 100644
--- a/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
+++ b/arch/arm/boot/dts/bcm47094-luxul-xap-1610.dts
@@ -16,6 +16,7 @@
16 }; 16 };
17 17
18 memory { 18 memory {
19 device_type = "memory";
19 reg = <0x00000000 0x08000000>; 20 reg = <0x00000000 0x08000000>;
20 }; 21 };
21 22
diff --git a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
index 7acbecd42950..ac2d136ed334 100644
--- a/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
+++ b/arch/arm/boot/dts/bcm47094-luxul-xbr-4500.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000 21 reg = <0x00000000 0x08000000
21 0x88000000 0x18000000>; 22 0x88000000 0x18000000>;
22 }; 23 };
diff --git a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
index f4558d9d2769..74371e821b1a 100644
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3100.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000 21 reg = <0x00000000 0x08000000
21 0x88000000 0x08000000>; 22 0x88000000 0x08000000>;
22 }; 23 };
diff --git a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
index bdad7267255a..b44af63ee310 100644
--- a/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
+++ b/arch/arm/boot/dts/bcm47094-luxul-xwr-3150-v1.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000 21 reg = <0x00000000 0x08000000
21 0x88000000 0x18000000>; 22 0x88000000 0x18000000>;
22 }; 23 };
diff --git a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
index 30719380b6c0..eebc0d43e220 100644
--- a/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
+++ b/arch/arm/boot/dts/bcm47094-netgear-r8500.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory { 19 memory {
20 device_type = "memory";
20 reg = <0x00000000 0x08000000 21 reg = <0x00000000 0x08000000
21 0x88000000 0x18000000>; 22 0x88000000 0x18000000>;
22 }; 23 };
diff --git a/arch/arm/boot/dts/bcm47094-phicomm-k3.dts b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
new file mode 100644
index 000000000000..ec09c0426d16
--- /dev/null
+++ b/arch/arm/boot/dts/bcm47094-phicomm-k3.dts
@@ -0,0 +1,71 @@
1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
2/*
3 * Copyright (C) 2017 Hamster Tian <haotia@gmail.com>
4 * Copyright (C) 2019 Hao Dong <halbertdong@gmail.com>
5 */
6
7/dts-v1/;
8
9#include "bcm47094.dtsi"
10#include "bcm5301x-nand-cs0-bch4.dtsi"
11
12/ {
13 compatible = "phicomm,k3", "brcm,bcm47094", "brcm,bcm4708";
14 model = "Phicomm K3";
15
16 memory {
17 reg = <0x00000000 0x08000000
18 0x88000000 0x18000000>;
19 };
20
21 gpio-keys {
22 compatible = "gpio-keys";
23 #address-cells = <1>;
24 #size-cells = <0>;
25
26 restart {
27 label = "Reset";
28 linux,code = <KEY_RESTART>;
29 gpios = <&chipcommon 17 GPIO_ACTIVE_LOW>;
30 };
31 };
32};
33
34&uart1 {
35 status = "okay";
36};
37
38&usb3_phy {
39 status = "okay";
40};
41
42&nandcs {
43 partitions {
44 compatible = "fixed-partitions";
45 #address-cells = <1>;
46 #size-cells = <1>;
47
48 partition@0 {
49 label = "boot";
50 reg = <0x0000000 0x0080000>;
51 read-only;
52 };
53
54 partition@80000 {
55 label = "nvram";
56 reg = <0x0080000 0x0100000>;
57 };
58
59 partition@180000{
60 label = "phicomm";
61 reg = <0x0180000 0x0280000>;
62 read-only;
63 };
64
65 partition@400000 {
66 label = "firmware";
67 reg = <0x0400000 0x7C00000>;
68 compatible = "brcm,trx";
69 };
70 };
71};
diff --git a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
index 74c83b0ca54e..eb59508578e4 100644
--- a/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-1440.dts
@@ -1,7 +1,6 @@
1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
1/* 2/*
2 * Copyright 2017 Luxul Inc. 3 * Copyright 2017 Luxul Inc.
3 *
4 * Licensed under the ISC license.
5 */ 4 */
6 5
7/dts-v1/; 6/dts-v1/;
@@ -17,6 +16,7 @@
17 }; 16 };
18 17
19 memory { 18 memory {
19 device_type = "memory";
20 reg = <0x00000000 0x08000000>; 20 reg = <0x00000000 0x08000000>;
21 }; 21 };
22 22
diff --git a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
index 214df18f3a75..4c71f5e95e00 100644
--- a/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
+++ b/arch/arm/boot/dts/bcm47189-luxul-xap-810.dts
@@ -1,7 +1,6 @@
1// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
1/* 2/*
2 * Copyright 2017 Luxul Inc. 3 * Copyright 2017 Luxul Inc.
3 *
4 * Licensed under the ISC license.
5 */ 4 */
6 5
7/dts-v1/; 6/dts-v1/;
@@ -17,6 +16,7 @@
17 }; 16 };
18 17
19 memory { 18 memory {
19 device_type = "memory";
20 reg = <0x00000000 0x08000000>; 20 reg = <0x00000000 0x08000000>;
21 }; 21 };
22 22
diff --git a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
index e15e2a1e9d8c..5ad53ea52d0a 100644
--- a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
+++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
@@ -16,6 +16,7 @@
16 }; 16 };
17 17
18 memory { 18 memory {
19 device_type = "memory";
19 reg = <0x00000000 0x08000000>; 20 reg = <0x00000000 0x08000000>;
20 }; 21 };
21 22
diff --git a/arch/arm/boot/dts/bcm5301x.dtsi b/arch/arm/boot/dts/bcm5301x.dtsi
index fd7af943fb0b..ac5266ee8d4c 100644
--- a/arch/arm/boot/dts/bcm5301x.dtsi
+++ b/arch/arm/boot/dts/bcm5301x.dtsi
@@ -13,9 +13,10 @@
13#include <dt-bindings/input/input.h> 13#include <dt-bindings/input/input.h>
14#include <dt-bindings/interrupt-controller/irq.h> 14#include <dt-bindings/interrupt-controller/irq.h>
15#include <dt-bindings/interrupt-controller/arm-gic.h> 15#include <dt-bindings/interrupt-controller/arm-gic.h>
16#include "skeleton.dtsi"
17 16
18/ { 17/ {
18 #address-cells = <1>;
19 #size-cells = <1>;
19 interrupt-parent = <&gic>; 20 interrupt-parent = <&gic>;
20 21
21 chipcommonA { 22 chipcommonA {
diff --git a/arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dts b/arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dts
index 431cda514230..2e7fda9b998c 100644
--- a/arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dts
+++ b/arch/arm/boot/dts/bcm53340-ubnt-unifi-switch8.dts
@@ -20,6 +20,7 @@
20 }; 20 };
21 21
22 memory@0 { 22 memory@0 {
23 device_type = "memory";
23 reg = <0x00000000 0x08000000>, 24 reg = <0x00000000 0x08000000>,
24 <0x68000000 0x08000000>; 25 <0x68000000 0x08000000>;
25 }; 26 };
diff --git a/arch/arm/boot/dts/bcm53573.dtsi b/arch/arm/boot/dts/bcm53573.dtsi
index 5054fa9eb0d0..b29695bd4855 100644
--- a/arch/arm/boot/dts/bcm53573.dtsi
+++ b/arch/arm/boot/dts/bcm53573.dtsi
@@ -7,9 +7,10 @@
7#include <dt-bindings/input/input.h> 7#include <dt-bindings/input/input.h>
8#include <dt-bindings/interrupt-controller/irq.h> 8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include "skeleton.dtsi"
11 10
12/ { 11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
13 interrupt-parent = <&gic>; 14 interrupt-parent = <&gic>;
14 15
15 aliases { 16 aliases {
diff --git a/arch/arm/boot/dts/bcm63138.dtsi b/arch/arm/boot/dts/bcm63138.dtsi
index f59764008b9c..e6a41e1b27fd 100644
--- a/arch/arm/boot/dts/bcm63138.dtsi
+++ b/arch/arm/boot/dts/bcm63138.dtsi
@@ -6,9 +6,9 @@
6#include <dt-bindings/interrupt-controller/arm-gic.h> 6#include <dt-bindings/interrupt-controller/arm-gic.h>
7#include <dt-bindings/interrupt-controller/irq.h> 7#include <dt-bindings/interrupt-controller/irq.h>
8 8
9#include "skeleton.dtsi"
10
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 compatible = "brcm,bcm63138"; 12 compatible = "brcm,bcm63138";
13 model = "Broadcom BCM63138 DSL SoC"; 13 model = "Broadcom BCM63138 DSL SoC";
14 interrupt-parent = <&gic>; 14 interrupt-parent = <&gic>;
diff --git a/arch/arm/boot/dts/bcm7445.dtsi b/arch/arm/boot/dts/bcm7445.dtsi
index c859aa6f358c..504a63236a5e 100644
--- a/arch/arm/boot/dts/bcm7445.dtsi
+++ b/arch/arm/boot/dts/bcm7445.dtsi
@@ -1,8 +1,6 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2#include <dt-bindings/interrupt-controller/arm-gic.h> 2#include <dt-bindings/interrupt-controller/arm-gic.h>
3 3
4#include "skeleton.dtsi"
5
6/ { 4/ {
7 #address-cells = <2>; 5 #address-cells = <2>;
8 #size-cells = <2>; 6 #size-cells = <2>;
diff --git a/arch/arm/boot/dts/bcm947189acdbmr.dts b/arch/arm/boot/dts/bcm947189acdbmr.dts
index ef263412fea5..4991700ae6b0 100644
--- a/arch/arm/boot/dts/bcm947189acdbmr.dts
+++ b/arch/arm/boot/dts/bcm947189acdbmr.dts
@@ -18,6 +18,7 @@
18 }; 18 };
19 19
20 memory { 20 memory {
21 device_type = "memory";
21 reg = <0x00000000 0x08000000>; 22 reg = <0x00000000 0x08000000>;
22 }; 23 };
23 24
diff --git a/arch/arm/boot/dts/bcm953012er.dts b/arch/arm/boot/dts/bcm953012er.dts
index 17f63c7a0437..250a1d6f2d05 100644
--- a/arch/arm/boot/dts/bcm953012er.dts
+++ b/arch/arm/boot/dts/bcm953012er.dts
@@ -40,6 +40,7 @@
40 compatible = "brcm,bcm953012er", "brcm,brcm53012", "brcm,bcm4708"; 40 compatible = "brcm,bcm953012er", "brcm,brcm53012", "brcm,bcm4708";
41 41
42 memory { 42 memory {
43 device_type = "memory";
43 reg = <0x00000000 0x8000000>; 44 reg = <0x00000000 0x8000000>;
44 }; 45 };
45 46
diff --git a/arch/arm/boot/dts/bcm953012hr.dts b/arch/arm/boot/dts/bcm953012hr.dts
index 11b0f5ed99e6..9140be7ec053 100644
--- a/arch/arm/boot/dts/bcm953012hr.dts
+++ b/arch/arm/boot/dts/bcm953012hr.dts
@@ -46,6 +46,7 @@
46 }; 46 };
47 47
48 memory@80000000 { 48 memory@80000000 {
49 device_type = "memory";
49 reg = <0x80000000 0x10000000>; 50 reg = <0x80000000 0x10000000>;
50 }; 51 };
51}; 52};
diff --git a/arch/arm/boot/dts/bcm953012k.dts b/arch/arm/boot/dts/bcm953012k.dts
index e798055d6989..52c4c6c9d3f1 100644
--- a/arch/arm/boot/dts/bcm953012k.dts
+++ b/arch/arm/boot/dts/bcm953012k.dts
@@ -44,6 +44,7 @@
44 }; 44 };
45 45
46 memory { 46 memory {
47 device_type = "memory";
47 reg = <0x80000000 0x10000000>; 48 reg = <0x80000000 0x10000000>;
48 }; 49 };
49}; 50};
diff --git a/arch/arm/boot/dts/cx92755.dtsi b/arch/arm/boot/dts/cx92755.dtsi
index a5a23c376418..d2e8f36f8c60 100644
--- a/arch/arm/boot/dts/cx92755.dtsi
+++ b/arch/arm/boot/dts/cx92755.dtsi
@@ -44,9 +44,9 @@
44 * OTHER DEALINGS IN THE SOFTWARE. 44 * OTHER DEALINGS IN THE SOFTWARE.
45 */ 45 */
46 46
47#include "skeleton.dtsi"
48
49/ { 47/ {
48 #address-cells = <1>;
49 #size-cells = <1>;
50 compatible = "cnxt,cx92755"; 50 compatible = "cnxt,cx92755";
51 51
52 interrupt-parent = <&intc>; 52 interrupt-parent = <&intc>;
diff --git a/arch/arm/boot/dts/da850-evm.dts b/arch/arm/boot/dts/da850-evm.dts
index a3c9b346721d..f04bc3e15332 100644
--- a/arch/arm/boot/dts/da850-evm.dts
+++ b/arch/arm/boot/dts/da850-evm.dts
@@ -94,6 +94,28 @@
94 regulator-boot-on; 94 regulator-boot-on;
95 }; 95 };
96 96
97 baseboard_3v3: fixedregulator-3v3 {
98 /* TPS73701DCQ */
99 compatible = "regulator-fixed";
100 regulator-name = "baseboard_3v3";
101 regulator-min-microvolt = <3300000>;
102 regulator-max-microvolt = <3300000>;
103 vin-supply = <&vbat>;
104 regulator-always-on;
105 regulator-boot-on;
106 };
107
108 baseboard_1v8: fixedregulator-1v8 {
109 /* TPS73701DCQ */
110 compatible = "regulator-fixed";
111 regulator-name = "baseboard_1v8";
112 regulator-min-microvolt = <1800000>;
113 regulator-max-microvolt = <1800000>;
114 vin-supply = <&vbat>;
115 regulator-always-on;
116 regulator-boot-on;
117 };
118
97 backlight_lcd: backlight-regulator { 119 backlight_lcd: backlight-regulator {
98 compatible = "regulator-fixed"; 120 compatible = "regulator-fixed";
99 regulator-name = "lcd_backlight_pwr"; 121 regulator-name = "lcd_backlight_pwr";
@@ -105,7 +127,7 @@
105 127
106 sound { 128 sound {
107 compatible = "simple-audio-card"; 129 compatible = "simple-audio-card";
108 simple-audio-card,name = "DA850/OMAP-L138 EVM"; 130 simple-audio-card,name = "DA850-OMAPL138 EVM";
109 simple-audio-card,widgets = 131 simple-audio-card,widgets =
110 "Line", "Line In", 132 "Line", "Line In",
111 "Line", "Line Out"; 133 "Line", "Line Out";
@@ -210,10 +232,9 @@
210 232
211 /* Regulators */ 233 /* Regulators */
212 IOVDD-supply = <&vdcdc2_reg>; 234 IOVDD-supply = <&vdcdc2_reg>;
213 /* Derived from VBAT: Baseboard 3.3V / 1.8V */ 235 AVDD-supply = <&baseboard_3v3>;
214 AVDD-supply = <&vbat>; 236 DRVDD-supply = <&baseboard_3v3>;
215 DRVDD-supply = <&vbat>; 237 DVDD-supply = <&baseboard_1v8>;
216 DVDD-supply = <&vbat>;
217 }; 238 };
218 tca6416: gpio@20 { 239 tca6416: gpio@20 {
219 compatible = "ti,tca6416"; 240 compatible = "ti,tca6416";
diff --git a/arch/arm/boot/dts/da850-lcdk.dts b/arch/arm/boot/dts/da850-lcdk.dts
index 0177e3ed20fe..26f453dc8370 100644
--- a/arch/arm/boot/dts/da850-lcdk.dts
+++ b/arch/arm/boot/dts/da850-lcdk.dts
@@ -39,17 +39,51 @@
39 }; 39 };
40 }; 40 };
41 41
42 vcc_5vd: fixedregulator-vcc_5vd {
43 compatible = "regulator-fixed";
44 regulator-name = "vcc_5vd";
45 regulator-min-microvolt = <5000000>;
46 regulator-max-microvolt = <5000000>;
47 regulator-boot-on;
48 };
49
50 vcc_3v3d: fixedregulator-vcc_3v3d {
51 /* TPS650250 - VDCDC1 */
52 compatible = "regulator-fixed";
53 regulator-name = "vcc_3v3d";
54 regulator-min-microvolt = <3300000>;
55 regulator-max-microvolt = <3300000>;
56 vin-supply = <&vcc_5vd>;
57 regulator-always-on;
58 regulator-boot-on;
59 };
60
61 vcc_1v8d: fixedregulator-vcc_1v8d {
62 /* TPS650250 - VDCDC2 */
63 compatible = "regulator-fixed";
64 regulator-name = "vcc_1v8d";
65 regulator-min-microvolt = <1800000>;
66 regulator-max-microvolt = <1800000>;
67 vin-supply = <&vcc_5vd>;
68 regulator-always-on;
69 regulator-boot-on;
70 };
71
42 sound { 72 sound {
43 compatible = "simple-audio-card"; 73 compatible = "simple-audio-card";
44 simple-audio-card,name = "DA850/OMAP-L138 LCDK"; 74 simple-audio-card,name = "DA850-OMAPL138 LCDK";
45 simple-audio-card,widgets = 75 simple-audio-card,widgets =
46 "Line", "Line In", 76 "Line", "Line In",
47 "Line", "Line Out"; 77 "Line", "Line Out",
78 "Microphone", "Mic Jack";
48 simple-audio-card,routing = 79 simple-audio-card,routing =
49 "LINE1L", "Line In", 80 "LINE1L", "Line In",
50 "LINE1R", "Line In", 81 "LINE1R", "Line In",
51 "Line Out", "LLOUT", 82 "Line Out", "LLOUT",
52 "Line Out", "RLOUT"; 83 "Line Out", "RLOUT",
84 "MIC3L", "Mic Jack",
85 "MIC3R", "Mic Jack",
86 "Mic Jack", "Mic Bias";
53 simple-audio-card,format = "dsp_b"; 87 simple-audio-card,format = "dsp_b";
54 simple-audio-card,bitclock-master = <&link0_codec>; 88 simple-audio-card,bitclock-master = <&link0_codec>;
55 simple-audio-card,frame-master = <&link0_codec>; 89 simple-audio-card,frame-master = <&link0_codec>;
@@ -220,7 +254,15 @@
220 #sound-dai-cells = <0>; 254 #sound-dai-cells = <0>;
221 compatible = "ti,tlv320aic3106"; 255 compatible = "ti,tlv320aic3106";
222 reg = <0x18>; 256 reg = <0x18>;
257 adc-settle-ms = <40>;
258 ai3x-micbias-vg = <1>; /* 2.0V */
223 status = "okay"; 259 status = "okay";
260
261 /* Regulators */
262 IOVDD-supply = <&vcc_3v3d>;
263 AVDD-supply = <&vcc_3v3d>;
264 DRVDD-supply = <&vcc_3v3d>;
265 DVDD-supply = <&vcc_1v8d>;
224 }; 266 };
225}; 267};
226 268
diff --git a/arch/arm/boot/dts/da850.dtsi b/arch/arm/boot/dts/da850.dtsi
index 47aa53ba6b92..559659b399d0 100644
--- a/arch/arm/boot/dts/da850.dtsi
+++ b/arch/arm/boot/dts/da850.dtsi
@@ -476,7 +476,7 @@
476 clocksource: timer@20000 { 476 clocksource: timer@20000 {
477 compatible = "ti,da830-timer"; 477 compatible = "ti,da830-timer";
478 reg = <0x20000 0x1000>; 478 reg = <0x20000 0x1000>;
479 interrupts = <12>, <13>; 479 interrupts = <21>, <22>;
480 interrupt-names = "tint12", "tint34"; 480 interrupt-names = "tint12", "tint34";
481 clocks = <&pll0_auxclk>; 481 clocks = <&pll0_auxclk>;
482 }; 482 };
diff --git a/arch/arm/boot/dts/dm814x.dtsi b/arch/arm/boot/dts/dm814x.dtsi
index 601c57afd4fe..95de9f214c14 100644
--- a/arch/arm/boot/dts/dm814x.dtsi
+++ b/arch/arm/boot/dts/dm814x.dtsi
@@ -222,6 +222,30 @@
222 #interrupt-cells = <2>; 222 #interrupt-cells = <2>;
223 }; 223 };
224 224
225 gpio3: gpio@1ac000 {
226 compatible = "ti,omap4-gpio";
227 ti,hwmods = "gpio3";
228 ti,gpio-always-on;
229 reg = <0x1ac000 0x2000>;
230 interrupts = <32>;
231 gpio-controller;
232 #gpio-cells = <2>;
233 interrupt-controller;
234 #interrupt-cells = <2>;
235 };
236
237 gpio4: gpio@1ae000 {
238 compatible = "ti,omap4-gpio";
239 ti,hwmods = "gpio4";
240 ti,gpio-always-on;
241 reg = <0x1ae000 0x2000>;
242 interrupts = <62>;
243 gpio-controller;
244 #gpio-cells = <2>;
245 interrupt-controller;
246 #interrupt-cells = <2>;
247 };
248
225 i2c2: i2c@2a000 { 249 i2c2: i2c@2a000 {
226 compatible = "ti,omap4-i2c"; 250 compatible = "ti,omap4-i2c";
227 #address-cells = <1>; 251 #address-cells = <1>;
@@ -240,10 +264,48 @@
240 ti,spi-num-cs = <4>; 264 ti,spi-num-cs = <4>;
241 ti,hwmods = "mcspi1"; 265 ti,hwmods = "mcspi1";
242 dmas = <&edma 16 0 &edma 17 0 266 dmas = <&edma 16 0 &edma 17 0
243 &edma 18 0 &edma 19 0>; 267 &edma 18 0 &edma 19 0
268 &edma 20 0 &edma 21 0
269 &edma 22 0 &edma 23 0>;
270
271 dma-names = "tx0", "rx0", "tx1", "rx1",
272 "tx2", "rx2", "tx3", "rx3";
273 };
274
275 mcspi2: spi@1a0000 {
276 compatible = "ti,omap4-mcspi";
277 reg = <0x1a0000 0x1000>;
278 #address-cells = <1>;
279 #size-cells = <0>;
280 interrupts = <125>;
281 ti,spi-num-cs = <4>;
282 ti,hwmods = "mcspi2";
283 dmas = <&edma 42 0 &edma 43 0
284 &edma 44 0 &edma 45 0>;
244 dma-names = "tx0", "rx0", "tx1", "rx1"; 285 dma-names = "tx0", "rx0", "tx1", "rx1";
245 }; 286 };
246 287
288 /* Board must configure dmas with edma_xbar for EDMA */
289 mcspi3: spi@1a2000 {
290 compatible = "ti,omap4-mcspi";
291 reg = <0x1a2000 0x1000>;
292 #address-cells = <1>;
293 #size-cells = <0>;
294 interrupts = <126>;
295 ti,spi-num-cs = <4>;
296 ti,hwmods = "mcspi3";
297 };
298
299 mcspi4: spi@1a4000 {
300 compatible = "ti,omap4-mcspi";
301 reg = <0x1a4000 0x1000>;
302 #address-cells = <1>;
303 #size-cells = <0>;
304 interrupts = <127>;
305 ti,spi-num-cs = <4>;
306 ti,hwmods = "mcspi4";
307 };
308
247 timer1: timer@2e000 { 309 timer1: timer@2e000 {
248 compatible = "ti,dm814-timer"; 310 compatible = "ti,dm814-timer";
249 reg = <0x2e000 0x2000>; 311 reg = <0x2e000 0x2000>;
@@ -343,6 +405,12 @@
343 #size-cells = <1>; 405 #size-cells = <1>;
344 ranges = <0 0 0x800>; 406 ranges = <0 0 0x800>;
345 407
408 phy_gmii_sel: phy-gmii-sel {
409 compatible = "ti,dm814-phy-gmii-sel";
410 reg = <0x650 0x4>;
411 #phy-cells = <1>;
412 };
413
346 scm_clocks: clocks { 414 scm_clocks: clocks {
347 #address-cells = <1>; 415 #address-cells = <1>;
348 #size-cells = <0>; 416 #size-cells = <0>;
@@ -549,17 +617,14 @@
549 cpsw_emac0: slave@4a100200 { 617 cpsw_emac0: slave@4a100200 {
550 /* Filled in by U-Boot */ 618 /* Filled in by U-Boot */
551 mac-address = [ 00 00 00 00 00 00 ]; 619 mac-address = [ 00 00 00 00 00 00 ];
620 phys = <&phy_gmii_sel 1>;
621
552 }; 622 };
553 623
554 cpsw_emac1: slave@4a100300 { 624 cpsw_emac1: slave@4a100300 {
555 /* Filled in by U-Boot */ 625 /* Filled in by U-Boot */
556 mac-address = [ 00 00 00 00 00 00 ]; 626 mac-address = [ 00 00 00 00 00 00 ];
557 }; 627 phys = <&phy_gmii_sel 2>;
558
559 phy_sel: cpsw-phy-sel@48140650 {
560 compatible = "ti,am3352-cpsw-phy-sel";
561 reg= <0x48140650 0x4>;
562 reg-names = "gmii-sel";
563 }; 628 };
564 }; 629 };
565 630
diff --git a/arch/arm/boot/dts/dove.dtsi b/arch/arm/boot/dts/dove.dtsi
index 250ad0535e8c..2e8a3977219f 100644
--- a/arch/arm/boot/dts/dove.dtsi
+++ b/arch/arm/boot/dts/dove.dtsi
@@ -1,12 +1,12 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/include/ "skeleton.dtsi"
3
4#include <dt-bindings/gpio/gpio.h> 2#include <dt-bindings/gpio/gpio.h>
5#include <dt-bindings/interrupt-controller/irq.h> 3#include <dt-bindings/interrupt-controller/irq.h>
6 4
7#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 5#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
8 6
9/ { 7/ {
8 #address-cells = <1>;
9 #size-cells = <1>;
10 compatible = "marvell,dove"; 10 compatible = "marvell,dove";
11 model = "Marvell Armada 88AP510 SoC"; 11 model = "Marvell Armada 88AP510 SoC";
12 interrupt-parent = <&intc>; 12 interrupt-parent = <&intc>;
diff --git a/arch/arm/boot/dts/dra7-l4.dtsi b/arch/arm/boot/dts/dra7-l4.dtsi
index bb45cb7fc3b6..414f1cd68733 100644
--- a/arch/arm/boot/dts/dra7-l4.dtsi
+++ b/arch/arm/boot/dts/dra7-l4.dtsi
@@ -77,18 +77,18 @@
77 }; 77 };
78 }; 78 };
79 79
80 phy_gmii_sel: phy-gmii-sel {
81 compatible = "ti,dra7xx-phy-gmii-sel";
82 reg = <0x554 0x4>;
83 #phy-cells = <1>;
84 };
85
80 scm_conf_clocks: clocks { 86 scm_conf_clocks: clocks {
81 #address-cells = <1>; 87 #address-cells = <1>;
82 #size-cells = <0>; 88 #size-cells = <0>;
83 }; 89 };
84 }; 90 };
85 91
86 phy_sel: cpsw-phy-sel@554 {
87 compatible = "ti,dra7xx-cpsw-phy-sel";
88 reg= <0x554 0x4>;
89 reg-names = "gmii-sel";
90 };
91
92 dra7_pmx_core: pinmux@1400 { 92 dra7_pmx_core: pinmux@1400 {
93 compatible = "ti,dra7-padconf", 93 compatible = "ti,dra7-padconf",
94 "pinctrl-single"; 94 "pinctrl-single";
@@ -3099,7 +3099,6 @@
3099 <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>; 3099 <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH>;
3100 ranges = <0 0 0x4000>; 3100 ranges = <0 0 0x4000>;
3101 syscon = <&scm_conf>; 3101 syscon = <&scm_conf>;
3102 cpsw-phy-sel = <&phy_sel>;
3103 status = "disabled"; 3102 status = "disabled";
3104 3103
3105 davinci_mdio: mdio@1000 { 3104 davinci_mdio: mdio@1000 {
@@ -3114,11 +3113,13 @@
3114 cpsw_emac0: slave@200 { 3113 cpsw_emac0: slave@200 {
3115 /* Filled in by U-Boot */ 3114 /* Filled in by U-Boot */
3116 mac-address = [ 00 00 00 00 00 00 ]; 3115 mac-address = [ 00 00 00 00 00 00 ];
3116 phys = <&phy_gmii_sel 1>;
3117 }; 3117 };
3118 3118
3119 cpsw_emac1: slave@300 { 3119 cpsw_emac1: slave@300 {
3120 /* Filled in by U-Boot */ 3120 /* Filled in by U-Boot */
3121 mac-address = [ 00 00 00 00 00 00 ]; 3121 mac-address = [ 00 00 00 00 00 00 ];
3122 phys = <&phy_gmii_sel 2>;
3122 }; 3123 };
3123 }; 3124 };
3124 }; 3125 };
diff --git a/arch/arm/boot/dts/ep7209.dtsi b/arch/arm/boot/dts/ep7209.dtsi
index aaf1261d2ee4..0e74222a5eae 100644
--- a/arch/arm/boot/dts/ep7209.dtsi
+++ b/arch/arm/boot/dts/ep7209.dtsi
@@ -6,11 +6,11 @@
6 6
7/dts-v1/; 7/dts-v1/;
8 8
9#include "skeleton.dtsi"
10
11#include <dt-bindings/clock/clps711x-clock.h> 9#include <dt-bindings/clock/clps711x-clock.h>
12 10
13/ { 11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
14 model = "Cirrus Logic EP7209"; 14 model = "Cirrus Logic EP7209";
15 compatible = "cirrus,ep7209"; 15 compatible = "cirrus,ep7209";
16 16
diff --git a/arch/arm/boot/dts/ep7211-edb7211.dts b/arch/arm/boot/dts/ep7211-edb7211.dts
index bc9d5b697452..3475c7777cbc 100644
--- a/arch/arm/boot/dts/ep7211-edb7211.dts
+++ b/arch/arm/boot/dts/ep7211-edb7211.dts
@@ -12,6 +12,7 @@
12 compatible = "cirrus,edb7211", "cirrus,ep7211", "cirrus,ep7209"; 12 compatible = "cirrus,edb7211", "cirrus,ep7211", "cirrus,ep7209";
13 13
14 memory { 14 memory {
15 device_type = "memory";
15 reg = <0xc0000000 0x02000000>; 16 reg = <0xc0000000 0x02000000>;
16 }; 17 };
17 18
diff --git a/arch/arm/boot/dts/exynos3250.dtsi b/arch/arm/boot/dts/exynos3250.dtsi
index 608d17454179..5892a9f7622f 100644
--- a/arch/arm/boot/dts/exynos3250.dtsi
+++ b/arch/arm/boot/dts/exynos3250.dtsi
@@ -168,6 +168,9 @@
168 interrupt-controller; 168 interrupt-controller;
169 #interrupt-cells = <3>; 169 #interrupt-cells = <3>;
170 interrupt-parent = <&gic>; 170 interrupt-parent = <&gic>;
171 clock-names = "clkout8";
172 clocks = <&cmu CLK_FIN_PLL>;
173 #clock-cells = <1>;
171 }; 174 };
172 175
173 mipi_phy: video-phy { 176 mipi_phy: video-phy {
diff --git a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
index 3a9eb1e91c45..08d3a0a7b4eb 100644
--- a/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
+++ b/arch/arm/boot/dts/exynos4412-odroid-common.dtsi
@@ -49,7 +49,7 @@
49 }; 49 };
50 50
51 emmc_pwrseq: pwrseq { 51 emmc_pwrseq: pwrseq {
52 pinctrl-0 = <&sd1_cd>; 52 pinctrl-0 = <&emmc_rstn>;
53 pinctrl-names = "default"; 53 pinctrl-names = "default";
54 compatible = "mmc-pwrseq-emmc"; 54 compatible = "mmc-pwrseq-emmc";
55 reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>; 55 reset-gpios = <&gpk1 2 GPIO_ACTIVE_LOW>;
@@ -165,12 +165,6 @@
165 cpu0-supply = <&buck2_reg>; 165 cpu0-supply = <&buck2_reg>;
166}; 166};
167 167
168/* RSTN signal for eMMC */
169&sd1_cd {
170 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
171 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
172};
173
174&pinctrl_1 { 168&pinctrl_1 {
175 gpio_power_key: power_key { 169 gpio_power_key: power_key {
176 samsung,pins = "gpx1-3"; 170 samsung,pins = "gpx1-3";
@@ -188,6 +182,11 @@
188 samsung,pins = "gpx3-7"; 182 samsung,pins = "gpx3-7";
189 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>; 183 samsung,pin-pud = <EXYNOS_PIN_PULL_DOWN>;
190 }; 184 };
185
186 emmc_rstn: emmc-rstn {
187 samsung,pins = "gpk1-2";
188 samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
189 };
191}; 190};
192 191
193&ehci { 192&ehci {
@@ -390,7 +389,6 @@
390 regulator-name = "LDO20_1.8V"; 389 regulator-name = "LDO20_1.8V";
391 regulator-min-microvolt = <1800000>; 390 regulator-min-microvolt = <1800000>;
392 regulator-max-microvolt = <1800000>; 391 regulator-max-microvolt = <1800000>;
393 regulator-boot-on;
394 }; 392 };
395 393
396 ldo21_reg: LDO21 { 394 ldo21_reg: LDO21 {
diff --git a/arch/arm/boot/dts/exynos4412-odroidx.dts b/arch/arm/boot/dts/exynos4412-odroidx.dts
index 348556fcdd9d..a2251581f6b6 100644
--- a/arch/arm/boot/dts/exynos4412-odroidx.dts
+++ b/arch/arm/boot/dts/exynos4412-odroidx.dts
@@ -53,7 +53,7 @@
53 regulator-name = "p3v3_en"; 53 regulator-name = "p3v3_en";
54 regulator-min-microvolt = <3300000>; 54 regulator-min-microvolt = <3300000>;
55 regulator-max-microvolt = <3300000>; 55 regulator-max-microvolt = <3300000>;
56 gpio = <&gpa1 1 GPIO_ACTIVE_LOW>; 56 gpio = <&gpa1 1 GPIO_ACTIVE_HIGH>;
57 enable-active-high; 57 enable-active-high;
58 regulator-always-on; 58 regulator-always-on;
59 }; 59 };
diff --git a/arch/arm/boot/dts/exynos5250-arndale.dts b/arch/arm/boot/dts/exynos5250-arndale.dts
index 2ca9319f48f2..dc6fa6fe83f1 100644
--- a/arch/arm/boot/dts/exynos5250-arndale.dts
+++ b/arch/arm/boot/dts/exynos5250-arndale.dts
@@ -23,7 +23,7 @@
23 }; 23 };
24 24
25 chosen { 25 chosen {
26 bootargs = "console=ttySAC2,115200"; 26 stdout-path = "serial2:115200n8";
27 }; 27 };
28 28
29 gpio_keys { 29 gpio_keys {
@@ -100,7 +100,7 @@
100 regulator-name = "VDD_33ON_2.8V"; 100 regulator-name = "VDD_33ON_2.8V";
101 regulator-min-microvolt = <2800000>; 101 regulator-min-microvolt = <2800000>;
102 regulator-max-microvolt = <2800000>; 102 regulator-max-microvolt = <2800000>;
103 gpio = <&gpx1 1 GPIO_ACTIVE_LOW>; 103 gpio = <&gpx1 1 GPIO_ACTIVE_HIGH>;
104 enable-active-high; 104 enable-active-high;
105 }; 105 };
106 106
diff --git a/arch/arm/boot/dts/exynos5422-odroid-core.dtsi b/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
index bf09eab90f8a..25d95de15c9b 100644
--- a/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
+++ b/arch/arm/boot/dts/exynos5422-odroid-core.dtsi
@@ -36,6 +36,11 @@
36 }; 36 };
37}; 37};
38 38
39&adc {
40 vdd-supply = <&ldo4_reg>;
41 status = "okay";
42};
43
39&bus_wcore { 44&bus_wcore {
40 devfreq-events = <&nocp_mem0_0>, <&nocp_mem0_1>, 45 devfreq-events = <&nocp_mem0_0>, <&nocp_mem0_1>,
41 <&nocp_mem1_0>, <&nocp_mem1_1>; 46 <&nocp_mem1_0>, <&nocp_mem1_1>;
@@ -468,7 +473,7 @@
468 buck8_reg: BUCK8 { 473 buck8_reg: BUCK8 {
469 regulator-name = "vdd_1.8v_ldo"; 474 regulator-name = "vdd_1.8v_ldo";
470 regulator-min-microvolt = <800000>; 475 regulator-min-microvolt = <800000>;
471 regulator-max-microvolt = <1500000>; 476 regulator-max-microvolt = <2000000>;
472 regulator-always-on; 477 regulator-always-on;
473 regulator-boot-on; 478 regulator-boot-on;
474 }; 479 };
diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi b/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi
index e84544b220b9..51a843bd65ed 100644
--- a/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi
+++ b/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi
@@ -24,7 +24,9 @@
24 "Headphone Jack", "MICBIAS", 24 "Headphone Jack", "MICBIAS",
25 "IN1", "Headphone Jack", 25 "IN1", "Headphone Jack",
26 "Speakers", "SPKL", 26 "Speakers", "SPKL",
27 "Speakers", "SPKR"; 27 "Speakers", "SPKR",
28 "I2S Playback", "Mixer DAI TX",
29 "HiFi Playback", "Mixer DAI TX";
28 30
29 assigned-clocks = <&clock CLK_MOUT_EPLL>, 31 assigned-clocks = <&clock CLK_MOUT_EPLL>,
30 <&clock CLK_MOUT_MAU_EPLL>, 32 <&clock CLK_MOUT_MAU_EPLL>,
@@ -51,7 +53,7 @@
51 <196608000>; 53 <196608000>;
52 54
53 cpu { 55 cpu {
54 sound-dai = <&i2s0 0>; 56 sound-dai = <&i2s0 0>, <&i2s0 1>;
55 }; 57 };
56 codec { 58 codec {
57 sound-dai = <&hdmi>, <&max98090>; 59 sound-dai = <&hdmi>, <&max98090>;
diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi b/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
index b299e541cac0..5f195ad7e467 100644
--- a/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
+++ b/arch/arm/boot/dts/exynos5422-odroidxu3-common.dtsi
@@ -362,11 +362,6 @@
362 }; 362 };
363}; 363};
364 364
365&adc {
366 vdd-supply = <&ldo4_reg>;
367 status = "okay";
368};
369
370&hdmi { 365&hdmi {
371 status = "okay"; 366 status = "okay";
372 ddc = <&i2c_2>; 367 ddc = <&i2c_2>;
diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts b/arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts
index 0db935f2b836..c19b5a51ca44 100644
--- a/arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts
+++ b/arch/arm/boot/dts/exynos5422-odroidxu3-lite.dts
@@ -18,6 +18,14 @@
18 compatible = "hardkernel,odroid-xu3-lite", "samsung,exynos5800", "samsung,exynos5"; 18 compatible = "hardkernel,odroid-xu3-lite", "samsung,exynos5800", "samsung,exynos5";
19}; 19};
20 20
21&arm_a7_pmu {
22 status = "disabled";
23};
24
25&arm_a15_pmu {
26 status = "disabled";
27};
28
21&pwm { 29&pwm {
22 /* 30 /*
23 * PWM 0 -- fan 31 * PWM 0 -- fan
diff --git a/arch/arm/boot/dts/exynos5422-odroidxu4.dts b/arch/arm/boot/dts/exynos5422-odroidxu4.dts
index 122174ea9e0a..892d389d6d09 100644
--- a/arch/arm/boot/dts/exynos5422-odroidxu4.dts
+++ b/arch/arm/boot/dts/exynos5422-odroidxu4.dts
@@ -33,6 +33,8 @@
33 compatible = "samsung,odroid-xu3-audio"; 33 compatible = "samsung,odroid-xu3-audio";
34 model = "Odroid-XU4"; 34 model = "Odroid-XU4";
35 35
36 samsung,audio-routing = "I2S Playback", "Mixer DAI TX";
37
36 assigned-clocks = <&clock CLK_MOUT_EPLL>, 38 assigned-clocks = <&clock CLK_MOUT_EPLL>,
37 <&clock CLK_MOUT_MAU_EPLL>, 39 <&clock CLK_MOUT_MAU_EPLL>,
38 <&clock CLK_MOUT_USER_MAU_EPLL>, 40 <&clock CLK_MOUT_USER_MAU_EPLL>,
@@ -58,7 +60,7 @@
58 <196608000>; 60 <196608000>;
59 61
60 cpu { 62 cpu {
61 sound-dai = <&i2s0 0>; 63 sound-dai = <&i2s0 0>, <&i2s0 1>;
62 }; 64 };
63 65
64 codec { 66 codec {
diff --git a/arch/arm/boot/dts/gemini-dlink-dir-685.dts b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
index cc0c3cf89eaa..592111c8d6fd 100644
--- a/arch/arm/boot/dts/gemini-dlink-dir-685.dts
+++ b/arch/arm/boot/dts/gemini-dlink-dir-685.dts
@@ -443,7 +443,7 @@
443 }; 443 };
444 444
445 display-controller@6a000000 { 445 display-controller@6a000000 {
446 status = "disabled"; 446 status = "okay";
447 447
448 port@0 { 448 port@0 {
449 reg = <0>; 449 reg = <0>;
diff --git a/arch/arm/boot/dts/imx27.dtsi b/arch/arm/boot/dts/imx27.dtsi
index 26ff5d419bfc..3652f5556b29 100644
--- a/arch/arm/boot/dts/imx27.dtsi
+++ b/arch/arm/boot/dts/imx27.dtsi
@@ -40,7 +40,7 @@
40 spi2 = &cspi3; 40 spi2 = &cspi3;
41 }; 41 };
42 42
43 aitc: aitc-interrupt-controller@e0000000 { 43 aitc: aitc-interrupt-controller@10040000 {
44 compatible = "fsl,imx27-aitc", "fsl,avic"; 44 compatible = "fsl,imx27-aitc", "fsl,avic";
45 interrupt-controller; 45 interrupt-controller;
46 #interrupt-cells = <1>; 46 #interrupt-cells = <1>;
diff --git a/arch/arm/boot/dts/imx28-cfa10036.dts b/arch/arm/boot/dts/imx28-cfa10036.dts
index d3e3622979c5..de48b5808ef6 100644
--- a/arch/arm/boot/dts/imx28-cfa10036.dts
+++ b/arch/arm/boot/dts/imx28-cfa10036.dts
@@ -11,6 +11,7 @@
11 11
12/dts-v1/; 12/dts-v1/;
13#include "imx28.dtsi" 13#include "imx28.dtsi"
14#include <dt-bindings/gpio/gpio.h>
14 15
15/ { 16/ {
16 model = "Crystalfontz CFA-10036 Board"; 17 model = "Crystalfontz CFA-10036 Board";
@@ -96,7 +97,7 @@
96 pinctrl-names = "default"; 97 pinctrl-names = "default";
97 pinctrl-0 = <&ssd1306_cfa10036>; 98 pinctrl-0 = <&ssd1306_cfa10036>;
98 reg = <0x3c>; 99 reg = <0x3c>;
99 reset-gpios = <&gpio2 7 0>; 100 reset-gpios = <&gpio2 7 GPIO_ACTIVE_LOW>;
100 solomon,height = <32>; 101 solomon,height = <32>;
101 solomon,width = <128>; 102 solomon,width = <128>;
102 solomon,page-offset = <0>; 103 solomon,page-offset = <0>;
diff --git a/arch/arm/boot/dts/imx51-digi-connectcore-jsk.dts b/arch/arm/boot/dts/imx51-digi-connectcore-jsk.dts
index 2967a748d859..a2eea58510dc 100644
--- a/arch/arm/boot/dts/imx51-digi-connectcore-jsk.dts
+++ b/arch/arm/boot/dts/imx51-digi-connectcore-jsk.dts
@@ -21,12 +21,28 @@
21 }; 21 };
22}; 22};
23 23
24&esdhc1 {
25 status = "okay";
26};
27
24&owire { 28&owire {
25 pinctrl-names = "default"; 29 pinctrl-names = "default";
26 pinctrl-0 = <&pinctrl_owire>; 30 pinctrl-0 = <&pinctrl_owire>;
27 status = "okay"; 31 status = "okay";
28}; 32};
29 33
34&pmic {
35 fsl,mc13xxx-uses-rtc;
36
37 regulators {
38 vcoincell_reg: vcoincell {
39 regulator-min-microvolt = <3000000>;
40 regulator-max-microvolt = <3000000>;
41 regulator-always-on;
42 };
43 };
44};
45
30&uart1 { 46&uart1 {
31 pinctrl-names = "default"; 47 pinctrl-names = "default";
32 pinctrl-0 = <&pinctrl_uart1>; 48 pinctrl-0 = <&pinctrl_uart1>;
diff --git a/arch/arm/boot/dts/imx51-digi-connectcore-som.dtsi b/arch/arm/boot/dts/imx51-digi-connectcore-som.dtsi
index 82d8df097ef1..d90ba5fe4f1b 100644
--- a/arch/arm/boot/dts/imx51-digi-connectcore-som.dtsi
+++ b/arch/arm/boot/dts/imx51-digi-connectcore-som.dtsi
@@ -37,7 +37,6 @@
37 reg = <0>; 37 reg = <0>;
38 interrupt-parent = <&gpio1>; 38 interrupt-parent = <&gpio1>;
39 interrupts = <5 IRQ_TYPE_LEVEL_HIGH>; 39 interrupts = <5 IRQ_TYPE_LEVEL_HIGH>;
40 fsl,mc13xxx-uses-rtc;
41 40
42 regulators { 41 regulators {
43 sw1_reg: sw1 { 42 sw1_reg: sw1 {
@@ -142,16 +141,17 @@
142 pwgt2spi_reg: pwgt2spi { 141 pwgt2spi_reg: pwgt2spi {
143 regulator-always-on; 142 regulator-always-on;
144 }; 143 };
145
146 vcoincell_reg: vcoincell {
147 regulator-min-microvolt = <3000000>;
148 regulator-max-microvolt = <3000000>;
149 regulator-always-on;
150 };
151 }; 144 };
152 }; 145 };
153}; 146};
154 147
148&esdhc1 {
149 pinctrl-names = "default";
150 pinctrl-0 = <&pinctrl_esdhc1>;
151 max-frequency = <50000000>;
152 bus-width = <1>;
153};
154
155&esdhc2 { 155&esdhc2 {
156 pinctrl-names = "default"; 156 pinctrl-names = "default";
157 pinctrl-0 = <&pinctrl_esdhc2>; 157 pinctrl-0 = <&pinctrl_esdhc2>;
@@ -174,9 +174,12 @@
174}; 174};
175 175
176&i2c2 { 176&i2c2 {
177 pinctrl-names = "default"; 177 pinctrl-names = "default", "gpio";
178 pinctrl-0 = <&pinctrl_i2c2>; 178 pinctrl-0 = <&pinctrl_i2c2>;
179 pinctrl-1 = <&pinctrl_i2c2_gpio>;
179 clock-frequency = <400000>; 180 clock-frequency = <400000>;
181 scl-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
182 sda-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>;
180 status = "okay"; 183 status = "okay";
181 184
182 mma7455l@1d { 185 mma7455l@1d {
@@ -241,6 +244,14 @@
241 >; 244 >;
242 }; 245 };
243 246
247 pinctrl_esdhc1: esdhc1grp {
248 fsl,pins = <
249 MX51_PAD_SD1_CLK__SD1_CLK 0x400021d5
250 MX51_PAD_SD1_CMD__SD1_CMD 0x400020d5
251 MX51_PAD_SD1_DATA0__SD1_DATA0 0x400020d5
252 >;
253 };
254
244 pinctrl_esdhc2: esdhc2grp { 255 pinctrl_esdhc2: esdhc2grp {
245 fsl,pins = < 256 fsl,pins = <
246 MX51_PAD_SD2_CMD__SD2_CMD 0x400020d5 257 MX51_PAD_SD2_CMD__SD2_CMD 0x400020d5
@@ -282,6 +293,13 @@
282 >; 293 >;
283 }; 294 };
284 295
296 pinctrl_i2c2_gpio: i2c2gpiogrp {
297 fsl,pins = <
298 MX51_PAD_GPIO1_2__GPIO1_2 0x400001ed
299 MX51_PAD_GPIO1_3__GPIO1_3 0x400001ed
300 >;
301 };
302
285 pinctrl_nfc: nfcgrp { 303 pinctrl_nfc: nfcgrp {
286 fsl,pins = < 304 fsl,pins = <
287 MX51_PAD_NANDF_D0__NANDF_D0 0x80000000 305 MX51_PAD_NANDF_D0__NANDF_D0 0x80000000
diff --git a/arch/arm/boot/dts/imx6-logicpd-baseboard.dtsi b/arch/arm/boot/dts/imx6-logicpd-baseboard.dtsi
new file mode 100644
index 000000000000..fb01fa6e4224
--- /dev/null
+++ b/arch/arm/boot/dts/imx6-logicpd-baseboard.dtsi
@@ -0,0 +1,555 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2019 Logic PD, Inc.
4
5/ {
6 keyboard {
7 compatible = "gpio-keys";
8
9 btn0 {
10 gpios = <&pcf8575 0 GPIO_ACTIVE_LOW>;
11 label = "btn0";
12 linux,code = <KEY_WAKEUP>;
13 debounce-interval = <10>;
14 wakeup-source;
15 };
16
17 btn1 {
18 gpios = <&pcf8575 1 GPIO_ACTIVE_LOW>;
19 label = "btn1";
20 linux,code = <KEY_WAKEUP>;
21 debounce-interval = <10>;
22 wakeup-source;
23 };
24
25 btn2 {
26 gpios = <&pcf8575 2 GPIO_ACTIVE_LOW>;
27 label = "btn2";
28 linux,code = <KEY_WAKEUP>;
29 debounce-interval = <10>;
30 wakeup-source;
31 };
32
33 btn3 {
34 gpios = <&pcf8575 3 GPIO_ACTIVE_LOW>;
35 label = "btn3";
36 linux,code = <KEY_WAKEUP>;
37 debounce-interval = <10>;
38 wakeup-source;
39 };
40
41 };
42
43 leds {
44 compatible = "gpio-leds";
45
46 gen-led0 {
47 label = "led0";
48 pinctrl-names = "default";
49 pinctrl-0 = <&pinctrl_led0>;
50 gpios = <&gpio1 30 GPIO_ACTIVE_HIGH>;
51 linux,default-trigger = "cpu0";
52 };
53
54 gen-led1 {
55 label = "led1";
56 gpios = <&pcf8575 8 GPIO_ACTIVE_HIGH>;
57 };
58
59 gen-led2 {
60 label = "led2";
61 gpios = <&pcf8575 9 GPIO_ACTIVE_HIGH>;
62 linux,default-trigger = "heartbeat";
63 };
64
65 gen-led3 {
66 label = "led3";
67 gpios = <&pcf8575 10 GPIO_ACTIVE_HIGH>;
68 linux,default-trigger = "default-on";
69 };
70 };
71
72 reg_usb_otg_vbus: regulator-otg-vbus {
73 pinctrl-names = "default";
74 pinctrl-0 = <&pinctrl_reg_usb_otg>;
75 compatible = "regulator-fixed";
76 regulator-name = "usb_otg_vbus";
77 regulator-min-microvolt = <5000000>;
78 regulator-max-microvolt = <5000000>;
79 gpio = <&gpio4 15 GPIO_ACTIVE_HIGH>;
80 enable-active-high;
81 };
82
83 reg_usb_h1_vbus: regulator-usb-h1-vbus {
84 pinctrl-names = "default";
85 pinctrl-0 = <&pinctrl_reg_usb_h1_vbus>;
86 compatible = "regulator-fixed";
87 regulator-name = "usb_h1_vbus";
88 regulator-min-microvolt = <5000000>;
89 regulator-max-microvolt = <5000000>;
90 gpio = <&gpio7 12 GPIO_ACTIVE_HIGH>;
91 enable-active-high;
92 };
93
94 reg_3v3: regulator-3v3 {
95 pinctrl-names = "default";
96 pinctrl-0 = <&pinctrl_reg_3v3>;
97 compatible = "regulator-fixed";
98 regulator-name = "reg_3v3";
99 regulator-min-microvolt = <3300000>;
100 regulator-max-microvolt = <3300000>;
101 gpio = <&gpio1 26 GPIO_ACTIVE_HIGH>;
102 enable-active-high;
103 regulator-always-on;
104 };
105
106 reg_enet: regulator-ethernet {
107 pinctrl-names = "default";
108 pinctrl-0 = <&pinctrl_reg_enet>;
109 compatible = "regulator-fixed";
110 regulator-name = "ethernet-supply";
111 regulator-min-microvolt = <3300000>;
112 regulator-max-microvolt = <3300000>;
113 gpio = <&gpio3 31 GPIO_ACTIVE_HIGH>;
114 startup-delay-us = <70000>;
115 enable-active-high;
116 vin-supply = <&sw4_reg>;
117 };
118
119 reg_audio: regulator-audio {
120 pinctrl-names = "default";
121 pinctrl-0 = <&pinctrl_reg_audio>;
122 compatible = "regulator-fixed";
123 regulator-name = "3v3_aud";
124 regulator-min-microvolt = <3300000>;
125 regulator-max-microvolt = <3300000>;
126 gpio = <&gpio1 29 GPIO_ACTIVE_HIGH>;
127 enable-active-high;
128 vin-supply = <&reg_3v3>;
129 };
130
131 reg_hdmi: regulator-hdmi {
132 pinctrl-names = "default";
133 pinctrl-0 = <&pinctrl_reg_hdmi>;
134 compatible = "regulator-fixed";
135 regulator-name = "hdmi-supply";
136 regulator-min-microvolt = <3300000>;
137 regulator-max-microvolt = <3300000>;
138 gpio = <&gpio3 20 GPIO_ACTIVE_HIGH>;
139 enable-active-high;
140 vin-supply = <&reg_3v3>;
141 };
142
143 reg_uart3: regulator-uart3 {
144 pinctrl-names = "default";
145 pinctrl-0 = <&pinctrl_reg_uart3>;
146 compatible = "regulator-fixed";
147 regulator-name = "uart3-supply";
148 gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
149 enable-active-high;
150 regulator-always-on;
151 vin-supply = <&reg_3v3>;
152 };
153
154 reg_1v8: regulator-1v8 {
155 pinctrl-names = "default";
156 pinctrl-0 = <&pinctrl_reg_1v8>;
157 compatible = "regulator-fixed";
158 regulator-name = "1v8-supply";
159 gpio = <&gpio3 30 GPIO_ACTIVE_HIGH>;
160 enable-active-high;
161 regulator-always-on;
162 vin-supply = <&reg_3v3>;
163 };
164
165 reg_pcie: regulator-pcie {
166 compatible = "regulator-fixed";
167 pinctrl-names = "default";
168 pinctrl-0 = <&pinctrl_reg_pcie>;
169 regulator-name = "mpcie_3v3";
170 regulator-min-microvolt = <3300000>;
171 regulator-max-microvolt = <3300000>;
172 gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
173 enable-active-high;
174 };
175
176 reg_mipi: regulator-mipi {
177 compatible = "regulator-fixed";
178 pinctrl-names = "default";
179 pinctrl-0 = <&pinctrl_reg_mipi>;
180 regulator-name = "mipi_pwr_en";
181 regulator-min-microvolt = <2800000>;
182 regulator-max-microvolt = <2800000>;
183 gpio = <&gpio3 19 GPIO_ACTIVE_HIGH>;
184 enable-active-high;
185 };
186
187 sound {
188 compatible = "fsl,imx-audio-wm8962";
189 model = "wm8962-audio";
190 ssi-controller = <&ssi2>;
191 audio-codec = <&wm8962>;
192 audio-routing =
193 "Headphone Jack", "HPOUTL",
194 "Headphone Jack", "HPOUTR",
195 "Ext Spk", "SPKOUTL",
196 "Ext Spk", "SPKOUTR",
197 "AMIC", "MICBIAS",
198 "IN3R", "AMIC";
199 mux-int-port = <2>;
200 mux-ext-port = <4>;
201 };
202};
203
204&audmux {
205 pinctrl-names = "default";
206 pinctrl-0 = <&pinctrl_audmux>;
207 status = "okay";
208};
209
210&ecspi1 {
211 pinctrl-names = "default";
212 pinctrl-0 = <&pinctrl_ecspi1>;
213 status = "disabled";
214};
215
216&fec {
217 pinctrl-names = "default";
218 pinctrl-0 = <&pinctrl_enet>;
219 phy-mode = "rgmii";
220 phy-reset-duration = <10>;
221 phy-reset-gpios = <&gpio1 24 GPIO_ACTIVE_LOW>;
222 phy-supply = <&reg_enet>;
223 interrupt-parent = <&gpio1>;
224 interrupts = <25 IRQ_TYPE_EDGE_FALLING>;
225 status = "okay";
226};
227
228&i2c1 {
229 pinctrl-names = "default";
230 pinctrl-0 = <&pinctrl_i2c1>;
231 clock-frequency = <400000>;
232 status = "okay";
233
234 wm8962: audio-codec@1a {
235 compatible = "wlf,wm8962";
236 reg = <0x1a>;
237 clocks = <&clks IMX6QDL_CLK_CKO>;
238 clock-names = "xclk";
239 DCVDD-supply = <&reg_audio>;
240 DBVDD-supply = <&reg_audio>;
241 AVDD-supply = <&reg_audio>;
242 CPVDD-supply = <&reg_audio>;
243 MICVDD-supply = <&reg_audio>;
244 PLLVDD-supply = <&reg_audio>;
245 SPKVDD1-supply = <&reg_audio>;
246 SPKVDD2-supply = <&reg_audio>;
247 gpio-cfg = <
248 0x0000 /* 0:Default */
249 0x0000 /* 1:Default */
250 0x0013 /* 2:FN_DMICCLK */
251 0x0000 /* 3:Default */
252 0x8014 /* 4:FN_DMICCDAT */
253 0x0000 /* 5:Default */
254 >;
255 };
256};
257
258&i2c3 {
259 ov5640: camera@10 {
260 compatible = "ovti,ov5640";
261 pinctrl-names = "default";
262 pinctrl-0 = <&pinctrl_ov5640>;
263 reg = <0x10>;
264 clocks = <&clks IMX6QDL_CLK_CKO>;
265 clock-names = "xclk";
266 DOVDD-supply = <&reg_mipi>;
267 AVDD-supply = <&reg_mipi>;
268 DVDD-supply = <&reg_mipi>;
269 reset-gpios = <&gpio3 26 GPIO_ACTIVE_LOW>;
270 powerdown-gpios = <&gpio3 27 GPIO_ACTIVE_HIGH>;
271
272 port {
273 ov5640_to_mipi_csi2: endpoint {
274 remote-endpoint = <&mipi_csi2_in>;
275 clock-lanes = <0>;
276 data-lanes = <1 2>;
277 };
278 };
279 };
280
281 pcf8575: gpio@20 {
282 pinctrl-names = "default";
283 pinctrl-0 = <&pinctrl_pcf8574>;
284 compatible = "nxp,pcf8575";
285 reg = <0x20>;
286 interrupt-parent = <&gpio6>;
287 interrupts = <31 IRQ_TYPE_EDGE_FALLING>;
288 gpio-controller;
289 #gpio-cells = <2>;
290 interrupt-controller;
291 #interrupt-cells = <2>;
292 lines-initial-states = <0x0710>;
293 wakeup-source;
294 };
295};
296
297&ipu1_csi1_from_mipi_vc1 {
298 clock-lanes = <0>;
299 data-lanes = <1 2>;
300};
301
302&mipi_csi {
303 status = "okay";
304
305 port@0 {
306 reg = <0>;
307
308 mipi_csi2_in: endpoint {
309 remote-endpoint = <&ov5640_to_mipi_csi2>;
310 clock-lanes = <0>;
311 data-lanes = <1 2>;
312 };
313 };
314};
315
316&pcie {
317 pinctrl-names = "default";
318 pinctrl-0 = <&pinctrl_pcie>;
319 reset-gpio = <&gpio1 9 GPIO_ACTIVE_LOW>;
320 vpcie-supply = <&reg_pcie>;
321 status = "okay";
322};
323
324&pwm3 {
325 pinctrl-names = "default";
326 pinctrl-0 = <&pinctrl_pwm3>;
327};
328
329&ssi2 {
330 status = "okay";
331};
332
333&uart3 {
334 pinctrl-names = "default";
335 pinctrl-0 = <&pinctrl_uart3>;
336 status = "okay";
337};
338
339&usbh1 {
340 vbus-supply = <&reg_usb_h1_vbus>;
341 status = "okay";
342};
343
344&usbotg {
345 vbus-supply = <&reg_usb_otg_vbus>;
346 pinctrl-names = "default";
347 pinctrl-0 = <&pinctrl_usbotg>;
348 disable-over-current;
349 dr_mode = "otg";
350 status = "okay";
351};
352
353&usdhc2 {
354 pinctrl-names = "default";
355 pinctrl-0 = <&pinctrl_usdhc2>;
356 pinctrl-1 = <&pinctrl_usdhc2_100mhz>;
357 pinctrl-2 = <&pinctrl_usdhc2_200mhz>;
358 vmmc-supply = <&reg_3v3>;
359 no-1-8-v;
360 keep-power-in-suspend;
361 cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
362 status = "okay";
363};
364
365&iomuxc {
366 pinctrl_audmux: audmuxgrp {
367 fsl,pins = <
368 MX6QDL_PAD_DISP0_DAT20__AUD4_TXC 0x130b0
369 MX6QDL_PAD_DISP0_DAT21__AUD4_TXD 0x110b0
370 MX6QDL_PAD_DISP0_DAT22__AUD4_TXFS 0x130b0
371 MX6QDL_PAD_DISP0_DAT23__AUD4_RXD 0x130b0
372 >;
373 };
374
375 pinctrl_ecspi1: ecspi1grp {
376 fsl,pins = <
377 MX6QDL_PAD_KEY_COL0__ECSPI1_SCLK 0x100b1
378 MX6QDL_PAD_KEY_ROW0__ECSPI1_MOSI 0x100b1
379 MX6QDL_PAD_KEY_COL1__ECSPI1_MISO 0x100b1
380 MX6QDL_PAD_KEY_ROW1__ECSPI1_SS0 0x100b1
381 >;
382 };
383
384 pinctrl_enet: enetgrp {
385 fsl,pins = <
386 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b8b0
387 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b0b0
388 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b030
389 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b030
390 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b030
391 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b030
392 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b030
393 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x100b0
394 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b030
395 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x4001b0a8
396 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b030
397 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x13030
398 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x13030
399 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b030
400 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b030
401 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x13030
402 MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x1b0b0 /* ENET_INT */
403 MX6QDL_PAD_ENET_RX_ER__GPIO1_IO24 0x1b0b0 /* ETHR_nRST */
404 >;
405 };
406
407 pinctrl_i2c1: i2c1grp {
408 fsl,pins = <
409 MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
410 MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
411 >;
412 };
413
414 pinctrl_led0: led0grp {
415 fsl,pins = <
416 MX6QDL_PAD_ENET_TXD0__GPIO1_IO30 0x1b0b0
417 >;
418 };
419
420 pinctrl_ov5640: ov5640grp {
421 fsl,pins = <
422 MX6QDL_PAD_EIM_D26__GPIO3_IO26 0x1b0b1
423 MX6QDL_PAD_EIM_D27__GPIO3_IO27 0x1b0b1
424 >;
425 };
426
427 pinctrl_pcf8574: pcf8575grp {
428 fsl,pins = <
429 MX6QDL_PAD_EIM_BCLK__GPIO6_IO31 0x1b0b0
430 >;
431 };
432
433 pinctrl_pcie: pciegrp {
434 fsl,pins = <
435 MX6QDL_PAD_GPIO_8__GPIO1_IO08 0x1b0b0
436 MX6QDL_PAD_GPIO_9__GPIO1_IO09 0x1b0b0
437 >;
438 };
439
440 pinctrl_pwm3: pwm3grp {
441 fsl,pins = <
442 MX6QDL_PAD_SD4_DAT1__PWM3_OUT 0x1b0b1
443 >;
444 };
445
446 pinctrl_reg_1v8: reg1v8grp {
447 fsl,pins = <
448 MX6QDL_PAD_EIM_D30__GPIO3_IO30 0x1b0b0
449 >;
450 };
451
452 pinctrl_reg_3v3: reg3v3grp {
453 fsl,pins = <
454 MX6QDL_PAD_ENET_RXD1__GPIO1_IO26 0x1b0b0
455 >;
456 };
457
458 pinctrl_reg_audio: reg-audiogrp {
459 fsl,pins = <
460 MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x1b0b0
461 >;
462 };
463
464 pinctrl_reg_enet: reg-enetgrp {
465 fsl,pins = <
466 MX6QDL_PAD_EIM_D31__GPIO3_IO31 0x1b0b0
467 >;
468 };
469
470 pinctrl_reg_hdmi: reg-hdmigrp {
471 fsl,pins = <
472 MX6QDL_PAD_EIM_D20__GPIO3_IO20 0x1b0b0
473 >;
474 };
475
476 pinctrl_reg_mipi: reg-mipigrp {
477 fsl,pins = <MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x1b0b1>;
478 };
479
480 pinctrl_reg_pcie: reg-pciegrp {
481 fsl,pins = <
482 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x1b0b0
483 >;
484 };
485
486 pinctrl_reg_uart3: reguart3grp {
487 fsl,pins = <
488 MX6QDL_PAD_ENET_TX_EN__GPIO1_IO28 0x1b0b0
489 >;
490 };
491
492 pinctrl_reg_usb_h1_vbus: usbh1grp {
493 fsl,pins = <
494 MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x1b0b0
495 >;
496 };
497
498 pinctrl_reg_usb_otg: reg-usb-otggrp {
499 fsl,pins = <
500 MX6QDL_PAD_KEY_ROW4__GPIO4_IO15 0x1b0b0
501 >;
502 };
503
504 pinctrl_uart3: uart3grp {
505 fsl,pins = <
506 MX6QDL_PAD_EIM_D23__UART3_CTS_B 0x1b0b1
507 MX6QDL_PAD_EIM_D24__UART3_TX_DATA 0x1b0b1
508 MX6QDL_PAD_EIM_D25__UART3_RX_DATA 0x1b0b1
509 MX6QDL_PAD_EIM_EB3__UART3_RTS_B 0x1b0b1
510 >;
511 };
512
513 pinctrl_usbotg: usbotggrp {
514 fsl,pins = <
515 MX6QDL_PAD_GPIO_1__USB_OTG_ID 0xd17059
516 >;
517 };
518
519 pinctrl_usdhc2: usdhc2grp {
520 fsl,pins = <
521 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0 /* CD */
522 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x17069
523 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x10069
524 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17069
525 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17069
526 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17069
527 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x17069
528 >;
529 };
530
531 pinctrl_usdhc2_100mhz: h100-usdhc2-100mhz {
532 fsl,pins = <
533 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0 /* CD */
534 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170b9
535 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100b9
536 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170b9
537 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170b9
538 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170b9
539 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x170b9
540 >;
541 };
542
543 pinctrl_usdhc2_200mhz: h100-usdhc2-200mhz {
544 fsl,pins = <
545 MX6QDL_PAD_GPIO_4__GPIO1_IO04 0x1b0b0 /* CD */
546 MX6QDL_PAD_SD2_CMD__SD2_CMD 0x170f9
547 MX6QDL_PAD_SD2_CLK__SD2_CLK 0x100f9
548 MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x170f9
549 MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x170f9
550 MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x170f9
551 MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x170f9
552 >;
553 };
554
555};
diff --git a/arch/arm/boot/dts/imx6-logicpd-som.dtsi b/arch/arm/boot/dts/imx6-logicpd-som.dtsi
new file mode 100644
index 000000000000..7ceae3573248
--- /dev/null
+++ b/arch/arm/boot/dts/imx6-logicpd-som.dtsi
@@ -0,0 +1,365 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2019 Logic PD, Inc.
4
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/input/input.h>
7
8/ {
9 chosen {
10 stdout-path = &uart1;
11 };
12
13 memory@10000000 {
14 device_type = "memory";
15 reg = <0x10000000 0x80000000>;
16 };
17
18 reg_wl18xx_vmmc: regulator-wl18xx {
19 compatible = "regulator-fixed";
20 regulator-name = "vwl1837";
21 regulator-min-microvolt = <3300000>;
22 regulator-max-microvolt = <3300000>;
23 gpio = <&gpio7 0 GPIO_ACTIVE_HIGH>;
24 startup-delay-us = <70000>;
25 enable-active-high;
26 };
27};
28
29&clks {
30 assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
31 <&clks IMX6QDL_CLK_LDB_DI1_SEL>;
32 assigned-clock-parents = <&clks IMX6QDL_CLK_PLL3_USB_OTG>,
33 <&clks IMX6QDL_CLK_PLL3_USB_OTG>;
34};
35
36&gpmi {
37 pinctrl-names = "default";
38 pinctrl-0 = <&pinctrl_gpmi_nand>;
39 nand-on-flash-bbt;
40 status = "okay";
41};
42
43&i2c3 {
44 clock-frequency = <100000>;
45 pinctrl-names = "default";
46 pinctrl-0 = <&pinctrl_i2c3>;
47 status = "okay";
48
49 pfuze100: pmic@8 {
50 compatible = "fsl,pfuze100";
51 reg = <0x08>;
52
53 regulators {
54 sw1a_reg: sw1ab {
55 regulator-min-microvolt = <725000>;
56 regulator-max-microvolt = <1450000>;
57 regulator-name = "vddcore";
58 regulator-boot-on;
59 regulator-always-on;
60 regulator-ramp-delay = <6250>;
61 };
62
63 sw1c_reg: sw1c {
64 regulator-min-microvolt = <725000>;
65 regulator-max-microvolt = <1450000>;
66 regulator-name = "vddsoc";
67 regulator-boot-on;
68 regulator-always-on;
69 regulator-ramp-delay = <6250>;
70 };
71
72 sw2_reg: sw2 {
73 regulator-min-microvolt = <3300000>;
74 regulator-max-microvolt = <3300000>;
75 regulator-name = "gen_3v3";
76 regulator-boot-on;
77 };
78
79 sw3a_reg: sw3a {
80 regulator-min-microvolt = <1350000>;
81 regulator-max-microvolt = <1350000>;
82 regulator-name = "sw3a_vddr";
83 regulator-boot-on;
84 regulator-always-on;
85 };
86
87 sw3b_reg: sw3b {
88 regulator-min-microvolt = <1350000>;
89 regulator-max-microvolt = <1350000>;
90 regulator-name = "sw3b_vddr";
91 regulator-boot-on;
92 regulator-always-on;
93 };
94
95 sw4_reg: sw4 {
96 regulator-min-microvolt = <1800000>;
97 regulator-max-microvolt = <3300000>;
98 regulator-name = "gen_rgmii";
99 };
100
101 swbst_reg: swbst {
102 regulator-min-microvolt = <5000000>;
103 regulator-max-microvolt = <5150000>;
104 regulator-name = "gen_5v0";
105 };
106
107 snvs_reg: vsnvs {
108 regulator-min-microvolt = <1000000>;
109 regulator-max-microvolt = <3000000>;
110 regulator-name = "gen_vsns";
111 regulator-boot-on;
112 regulator-always-on;
113 };
114
115 vref_reg: vrefddr {
116 regulator-boot-on;
117 regulator-always-on;
118 };
119
120 vgen1_reg: vgen1 {
121 regulator-min-microvolt = <1500000>;
122 regulator-max-microvolt = <1500000>;
123 regulator-name = "gen_1v5";
124 };
125
126 vgen2_reg: vgen2 {
127 regulator-name = "vgen2";
128 regulator-min-microvolt = <800000>;
129 regulator-max-microvolt = <1550000>;
130 };
131
132 vgen3_reg: vgen3 {
133 regulator-name = "gen_vadj_0";
134 regulator-min-microvolt = <1800000>;
135 regulator-max-microvolt = <3300000>;
136 };
137
138 vgen4_reg: vgen4 {
139 regulator-name = "gen_1v8";
140 regulator-min-microvolt = <1800000>;
141 regulator-max-microvolt = <1800000>;
142 regulator-always-on;
143 };
144
145 vgen5_reg: vgen5 {
146 regulator-name = "gen_vadj_1";
147 regulator-min-microvolt = <1800000>;
148 regulator-max-microvolt = <3300000>;
149 regulator-always-on;
150 };
151
152 vgen6_reg: vgen6 {
153 regulator-name = "gen_2v5";
154 regulator-min-microvolt = <2500000>;
155 regulator-max-microvolt = <2500000>;
156 regulator-always-on;
157 };
158
159 coin_reg: coin {
160 regulator-min-microvolt = <2500000>;
161 regulator-max-microvolt = <3000000>;
162 regulator-always-on;
163 };
164 };
165 };
166
167 temperature-sensor@49 {
168 compatible = "ti,tmp102";
169 reg = <0x49>;
170 interrupt-parent = <&gpio6>;
171 interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
172 #thermal-sensor-cells = <1>;
173 };
174
175 temperature-sensor@4a {
176 compatible = "ti,tmp102";
177 reg = <0x4a>;
178 pinctrl-names = "default";
179 pinctrl-0 = <&pinctrl_tempsense>;
180 interrupt-parent = <&gpio6>;
181 interrupts = <15 IRQ_TYPE_LEVEL_LOW>;
182 #thermal-sensor-cells = <1>;
183 };
184
185 eeprom@51 {
186 compatible = "atmel,24c64";
187 pagesize = <32>;
188 read-only; /* Manufacturing EEPROM programmed at factory */
189 reg = <0x51>;
190 };
191
192 eeprom@52 {
193 compatible = "atmel,24c64";
194 pagesize = <32>;
195 reg = <0x52>;
196 };
197};
198
199/* Reroute power feeding the CPU to come from the external PMIC */
200&reg_arm
201{
202 vin-supply = <&sw1a_reg>;
203};
204
205&reg_soc
206{
207 vin-supply = <&sw1c_reg>;
208};
209
210&iomuxc {
211 pinctrl-names = "default";
212 pinctrl-0 = <&pinctrl_hog>;
213
214 pinctrl_gpmi_nand: gpmi-nandgrp {
215 fsl,pins = <
216 MX6QDL_PAD_NANDF_CLE__NAND_CLE 0x0b0b1
217 MX6QDL_PAD_NANDF_ALE__NAND_ALE 0x0b0b1
218 MX6QDL_PAD_NANDF_WP_B__NAND_WP_B 0x0b0b1
219 MX6QDL_PAD_NANDF_RB0__NAND_READY_B 0x0b000
220 MX6QDL_PAD_NANDF_CS0__NAND_CE0_B 0x0b0b1
221 MX6QDL_PAD_SD4_CMD__NAND_RE_B 0x0b0b1
222 MX6QDL_PAD_SD4_CLK__NAND_WE_B 0x0b0b1
223 MX6QDL_PAD_NANDF_D0__NAND_DATA00 0x0b0b1
224 MX6QDL_PAD_NANDF_D1__NAND_DATA01 0x0b0b1
225 MX6QDL_PAD_NANDF_D2__NAND_DATA02 0x0b0b1
226 MX6QDL_PAD_NANDF_D3__NAND_DATA03 0x0b0b1
227 MX6QDL_PAD_NANDF_D4__NAND_DATA04 0x0b0b1
228 MX6QDL_PAD_NANDF_D5__NAND_DATA05 0x0b0b1
229 MX6QDL_PAD_NANDF_D6__NAND_DATA06 0x0b0b1
230 MX6QDL_PAD_NANDF_D7__NAND_DATA07 0x0b0b1
231 >;
232 };
233
234 pinctrl_hog: hoggrp {
235 fsl,pins = < /* Enable ARM Debugger */
236 MX6QDL_PAD_CSI0_MCLK__ARM_TRACE_CTL 0x1b0b0
237 MX6QDL_PAD_CSI0_PIXCLK__ARM_EVENTO 0x1b0b0
238 MX6QDL_PAD_CSI0_VSYNC__ARM_TRACE00 0x1b0b0
239 MX6QDL_PAD_CSI0_DATA_EN__ARM_TRACE_CLK 0x1b0b0
240 MX6QDL_PAD_CSI0_DAT4__ARM_TRACE01 0x1b0b0
241 MX6QDL_PAD_CSI0_DAT5__ARM_TRACE02 0x1b0b0
242 MX6QDL_PAD_CSI0_DAT6__ARM_TRACE03 0x1b0b0
243 MX6QDL_PAD_CSI0_DAT7__ARM_TRACE04 0x1b0b0
244 MX6QDL_PAD_CSI0_DAT8__ARM_TRACE05 0x1b0b0
245 MX6QDL_PAD_CSI0_DAT9__ARM_TRACE06 0x1b0b0
246 MX6QDL_PAD_CSI0_DAT10__ARM_TRACE07 0x1b0b0
247 MX6QDL_PAD_CSI0_DAT11__ARM_TRACE08 0x1b0b0
248 MX6QDL_PAD_CSI0_DAT12__ARM_TRACE09 0x1b0b0
249 MX6QDL_PAD_CSI0_DAT13__ARM_TRACE10 0x1b0b0
250 MX6QDL_PAD_CSI0_DAT14__ARM_TRACE11 0x1b0b0
251 MX6QDL_PAD_CSI0_DAT15__ARM_TRACE12 0x1b0b0
252 MX6QDL_PAD_CSI0_DAT16__ARM_TRACE13 0x1b0b0
253 MX6QDL_PAD_CSI0_DAT17__ARM_TRACE14 0x1b0b0
254 MX6QDL_PAD_CSI0_DAT18__ARM_TRACE15 0x1b0b0
255 MX6QDL_PAD_GPIO_0__CCM_CLKO1 0x130b0
256 >;
257 };
258
259 pinctrl_i2c3: i2c3grp {
260 fsl,pins = <
261 MX6QDL_PAD_EIM_D17__I2C3_SCL 0x4001b8b1
262 MX6QDL_PAD_EIM_D18__I2C3_SDA 0x4001b8b1
263 >;
264 };
265
266 pinctrl_tempsense: tempsensegrp {
267 fsl,pins = <
268 MX6QDL_PAD_NANDF_CS2__GPIO6_IO15 0x1b0b0
269 >;
270 };
271
272 pinctrl_uart1: uart1grp {
273 fsl,pins = <
274 MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA 0x1b0b1
275 MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
276 >;
277 };
278
279 pinctrl_uart2: uart2grp {
280 fsl,pins = <
281 MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x13059 /* BT_EN */
282 MX6QDL_PAD_SD4_DAT4__UART2_RX_DATA 0x1b0b1
283 MX6QDL_PAD_SD4_DAT5__UART2_RTS_B 0x1b0b1
284 MX6QDL_PAD_SD4_DAT6__UART2_CTS_B 0x1b0b1
285 MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
286 >;
287 };
288
289 pinctrl_usdhc1: usdhc1grp {
290 fsl,pins = <
291 MX6QDL_PAD_SD1_CMD__SD1_CMD 0x170B9
292 MX6QDL_PAD_SD1_CLK__SD1_CLK 0x100B9
293 MX6QDL_PAD_SD1_DAT0__SD1_DATA0 0x170B9
294 MX6QDL_PAD_SD1_DAT1__SD1_DATA1 0x170B9
295 MX6QDL_PAD_SD1_DAT2__SD1_DATA2 0x170B9
296 MX6QDL_PAD_SD1_DAT3__SD1_DATA3 0x170B9
297 >;
298 };
299
300 pinctrl_usdhc3: usdhc3grp {
301 fsl,pins = <
302 MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17049
303 MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10049
304 MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17049
305 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17049
306 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17049
307 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17049
308 MX6QDL_PAD_SD3_DAT4__GPIO7_IO01 0x130b0 /* WL_IRQ */
309 MX6QDL_PAD_SD3_DAT5__GPIO7_IO00 0x17059 /* WLAN_EN */
310 >;
311 };
312};
313
314&snvs_poweroff {
315 status = "okay";
316};
317
318&uart1 {
319 pinctrl-names = "default";
320 pinctrl-0 = <&pinctrl_uart1>;
321 status = "okay";
322};
323
324&uart2 {
325 pinctrl-names = "default";
326 pinctrl-0 = <&pinctrl_uart2>;
327 uart-has-rtscts;
328 status = "okay";
329
330 bluetooth {
331 compatible = "ti,wl1837-st";
332 enable-gpios = <&gpio7 8 GPIO_ACTIVE_HIGH>;
333 };
334};
335
336&usdhc1 {
337 pinctrl-names = "default", "state_100mhz", "state_200mhz";
338 pinctrl-0 = <&pinctrl_usdhc1>;
339 non-removable;
340 keep-power-in-suspend;
341 wakeup-source;
342 vmmc-supply = <&sw2_reg>;
343 status = "okay";
344};
345
346&usdhc3 {
347 pinctrl-names = "default";
348 pinctrl-0 = <&pinctrl_usdhc3>;
349 non-removable;
350 cap-power-off-card;
351 keep-power-in-suspend;
352 wakeup-source;
353 vmmc-supply = <&reg_wl18xx_vmmc>;
354 #address-cells = <1>;
355 #size-cells = <0>;
356 status = "okay";
357
358 wlcore: wlcore@2 {
359 compatible = "ti,wl1837";
360 reg = <2>;
361 interrupt-parent = <&gpio7>;
362 interrupts = <1 IRQ_TYPE_LEVEL_HIGH>;
363 tcxo-clock-frequency = <26000000>;
364 };
365};
diff --git a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
index d5f7a1703aae..9a5d6c94cca4 100644
--- a/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
+++ b/arch/arm/boot/dts/imx6dl-colibri-eval-v3.dts
@@ -228,10 +228,11 @@
228&weim { 228&weim {
229 status = "okay"; 229 status = "okay";
230 230
231 /* weim memory map: 32MB on CS0, 32MB on CS1, 32MB on CS2 */ 231 /* weim memory map: 32MB on CS0, CS1, CS2 and CS3 */
232 ranges = <0 0 0x08000000 0x02000000 232 ranges = <0 0 0x08000000 0x02000000
233 1 0 0x0a000000 0x02000000 233 1 0 0x0a000000 0x02000000
234 2 0 0x0c000000 0x02000000>; 234 2 0 0x0c000000 0x02000000
235 3 0 0x0e000000 0x02000000>;
235 236
236 /* SRAM on Colibri nEXT_CS0 */ 237 /* SRAM on Colibri nEXT_CS0 */
237 sram@0,0 { 238 sram@0,0 {
diff --git a/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi b/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi
new file mode 100644
index 000000000000..b715ab0fa1ff
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-yapp4-common.dtsi
@@ -0,0 +1,595 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2015-2018 Y Soft Corporation, a.s.
4
5#include <dt-bindings/gpio/gpio.h>
6#include <dt-bindings/interrupt-controller/irq.h>
7#include <dt-bindings/pwm/pwm.h>
8
9/ {
10 backlight: backlight {
11 compatible = "pwm-backlight";
12 pwms = <&pwm1 0 500000 PWM_POLARITY_INVERTED>;
13 brightness-levels = <0 32 64 128 255>;
14 default-brightness-level = <32>;
15 num-interpolated-steps = <8>;
16 power-supply = <&sw2_reg>;
17 status = "disabled";
18 };
19
20 lcd_display: display {
21 compatible = "fsl,imx-parallel-display";
22 #address-cells = <1>;
23 #size-cells = <0>;
24 interface-pix-fmt = "rgb24";
25 pinctrl-names = "default";
26 pinctrl-0 = <&pinctrl_ipu1>;
27 status = "disabled";
28
29 port@0 {
30 reg = <0>;
31
32 lcd_display_in: endpoint {
33 remote-endpoint = <&ipu1_di0_disp0>;
34 };
35 };
36
37 port@1 {
38 reg = <1>;
39
40 lcd_display_out: endpoint {
41 remote-endpoint = <&lcd_panel_in>;
42 };
43 };
44 };
45
46 panel: panel {
47 compatible = "dataimage,scf0700c48ggu18";
48 power-supply = <&sw2_reg>;
49 status = "disabled";
50
51 port {
52 lcd_panel_in: endpoint {
53 remote-endpoint = <&lcd_display_out>;
54 };
55 };
56 };
57
58 reg_pcie: regulator-pcie {
59 compatible = "regulator-fixed";
60 pinctrl-names = "default";
61 pinctrl-0 = <&pinctrl_pcie_reg>;
62 regulator-name = "MPCIE_3V3";
63 regulator-min-microvolt = <3300000>;
64 regulator-max-microvolt = <3300000>;
65 gpio = <&gpio3 19 GPIO_ACTIVE_HIGH>;
66 enable-active-high;
67 status = "disabled";
68 };
69
70 reg_usb_h1_vbus: regulator-usb-h1-vbus {
71 compatible = "regulator-fixed";
72 pinctrl-names = "default";
73 pinctrl-0 = <&pinctrl_usbh1_vbus>;
74 regulator-name = "usb_h1_vbus";
75 regulator-min-microvolt = <5000000>;
76 regulator-max-microvolt = <5000000>;
77 gpio = <&gpio1 29 GPIO_ACTIVE_HIGH>;
78 enable-active-high;
79 status = "disabled";
80 };
81
82 reg_usb_otg_vbus: regulator-usb-otg-vbus {
83 compatible = "regulator-fixed";
84 pinctrl-names = "default";
85 pinctrl-0 = <&pinctrl_usbotg_vbus>;
86 regulator-name = "usb_otg_vbus";
87 regulator-min-microvolt = <5000000>;
88 regulator-max-microvolt = <5000000>;
89 gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
90 enable-active-high;
91 status = "okay";
92 };
93};
94
95&fec {
96 pinctrl-names = "default";
97 pinctrl-0 = <&pinctrl_enet>;
98 phy-mode = "rgmii-id";
99 phy-reset-gpios = <&gpio1 25 GPIO_ACTIVE_LOW>;
100 phy-reset-duration = <20>;
101 phy-supply = <&sw2_reg>;
102 phy-handle = <&ethphy0>;
103 status = "okay";
104
105 mdio {
106 #address-cells = <1>;
107 #size-cells = <0>;
108
109 phy_port2: phy@1 {
110 reg = <1>;
111 };
112
113 phy_port3: phy@2 {
114 reg = <2>;
115 };
116
117 switch@0 {
118 compatible = "qca,qca8334";
119 reg = <0>;
120
121 switch_ports: ports {
122 #address-cells = <1>;
123 #size-cells = <0>;
124
125 ethphy0: port@0 {
126 reg = <0>;
127 label = "cpu";
128 phy-mode = "rgmii";
129 ethernet = <&fec>;
130
131 fixed-link {
132 speed = <1000>;
133 full-duplex;
134 };
135 };
136
137 port@2 {
138 reg = <2>;
139 label = "eth2";
140 phy-handle = <&phy_port2>;
141 };
142
143 port@3 {
144 reg = <3>;
145 label = "eth1";
146 phy-handle = <&phy_port3>;
147 };
148 };
149 };
150 };
151};
152
153&hdmi {
154 pinctrl-names = "default";
155 pinctrl-0 = <&pinctrl_hdmi_cec>;
156 ddc-i2c-bus = <&i2c2>;
157 status = "disabled";
158};
159
160&i2c2 {
161 clock-frequency = <100000>;
162 pinctrl-names = "default";
163 pinctrl-0 = <&pinctrl_i2c2>;
164 status = "okay";
165
166 pmic@8 {
167 compatible = "fsl,pfuze200";
168 pinctrl-names = "default";
169 pinctrl-0 = <&pinctrl_pmic>;
170 reg = <0x8>;
171
172 regulators {
173 sw1a_reg: sw1ab {
174 regulator-min-microvolt = <300000>;
175 regulator-max-microvolt = <1875000>;
176 regulator-boot-on;
177 regulator-always-on;
178 regulator-ramp-delay = <6250>;
179 };
180
181 sw2_reg: sw2 {
182 regulator-min-microvolt = <800000>;
183 regulator-max-microvolt = <3300000>;
184 regulator-boot-on;
185 regulator-always-on;
186 };
187
188 sw3a_reg: sw3a {
189 regulator-min-microvolt = <400000>;
190 regulator-max-microvolt = <1975000>;
191 regulator-boot-on;
192 regulator-always-on;
193 };
194
195 sw3b_reg: sw3b {
196 regulator-min-microvolt = <400000>;
197 regulator-max-microvolt = <1975000>;
198 regulator-boot-on;
199 regulator-always-on;
200 };
201
202 swbst_reg: swbst {
203 regulator-min-microvolt = <5000000>;
204 regulator-max-microvolt = <5150000>;
205 };
206
207 vgen1_reg: vgen1 {
208 regulator-min-microvolt = <800000>;
209 regulator-max-microvolt = <1550000>;
210 };
211
212 vgen2_reg: vgen2 {
213 regulator-min-microvolt = <800000>;
214 regulator-max-microvolt = <1550000>;
215 };
216
217 vgen3_reg: vgen3 {
218 regulator-min-microvolt = <1800000>;
219 regulator-max-microvolt = <3300000>;
220 regulator-always-on;
221 };
222
223 vgen4_reg: vgen4 {
224 regulator-min-microvolt = <1800000>;
225 regulator-max-microvolt = <3300000>;
226 regulator-always-on;
227 };
228
229 vgen5_reg: vgen5 {
230 regulator-min-microvolt = <1800000>;
231 regulator-max-microvolt = <3300000>;
232 regulator-always-on;
233 };
234
235 vgen6_reg: vgen6 {
236 regulator-min-microvolt = <1800000>;
237 regulator-max-microvolt = <3300000>;
238 regulator-always-on;
239 };
240
241 vref_reg: vrefddr {
242 regulator-boot-on;
243 regulator-always-on;
244 };
245
246 vsnvs_reg: vsnvs {
247 regulator-min-microvolt = <1000000>;
248 regulator-max-microvolt = <3000000>;
249 regulator-boot-on;
250 regulator-always-on;
251 };
252 };
253 };
254
255 leds: led-controller@30 {
256 compatible = "ti,lp5562";
257 reg = <0x30>;
258 clock-mode = /bits/ 8 <1>;
259 status = "disabled";
260
261 chan0 {
262 chan-name = "R";
263 led-cur = /bits/ 8 <0x20>;
264 max-cur = /bits/ 8 <0x60>;
265 };
266
267 chan1 {
268 chan-name = "G";
269 led-cur = /bits/ 8 <0x20>;
270 max-cur = /bits/ 8 <0x60>;
271 };
272
273 chan2 {
274 chan-name = "B";
275 led-cur = /bits/ 8 <0x20>;
276 max-cur = /bits/ 8 <0x60>;
277 };
278
279 chan3 {
280 chan-name = "W";
281 led-cur = /bits/ 8 <0x0>;
282 max-cur = /bits/ 8 <0x0>;
283 };
284 };
285
286 eeprom@57 {
287 compatible = "atmel,24c128";
288 reg = <0x57>;
289 pagesize = <64>;
290 status = "okay";
291 };
292
293 touchscreen: touchscreen@5c {
294 compatible = "pixcir,pixcir_tangoc";
295 reg = <0x5c>;
296 pinctrl-0 = <&pinctrl_touch>;
297 interrupt-parent = <&gpio4>;
298 interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
299 attb-gpio = <&gpio4 5 GPIO_ACTIVE_HIGH>;
300 reset-gpio = <&gpio1 2 GPIO_ACTIVE_HIGH>;
301 touchscreen-size-x = <800>;
302 touchscreen-size-y = <480>;
303 status = "disabled";
304 };
305};
306
307&i2c3 {
308 clock-frequency = <100000>;
309 pinctrl-names = "default";
310 pinctrl-0 = <&pinctrl_i2c3>;
311 status = "disabled";
312
313 oled: oled@3d {
314 compatible = "solomon,ssd1305fb-i2c";
315 reg = <0x3d>;
316 solomon,height = <64>;
317 solomon,width = <128>;
318 solomon,page-offset = <0>;
319 solomon,prechargep2 = <15>;
320 reset-gpios = <&gpio_oled 1 GPIO_ACTIVE_LOW>;
321 vbat-supply = <&sw2_reg>;
322 status = "disabled";
323 };
324
325 gpio_oled: gpio@41 {
326 compatible = "nxp,pca9536";
327 gpio-controller;
328 #gpio-cells = <2>;
329 reg = <0x41>;
330 vcc-supply = <&sw2_reg>;
331 status = "disabled";
332 };
333};
334
335&iomuxc {
336 pinctrl_enet: enetgrp {
337 fsl,pins = <
338 MX6QDL_PAD_ENET_MDIO__ENET_MDIO 0x1b020
339 MX6QDL_PAD_ENET_MDC__ENET_MDC 0x1b020
340 MX6QDL_PAD_RGMII_TXC__RGMII_TXC 0x1b020
341 MX6QDL_PAD_RGMII_TD0__RGMII_TD0 0x1b020
342 MX6QDL_PAD_RGMII_TD1__RGMII_TD1 0x1b020
343 MX6QDL_PAD_RGMII_TD2__RGMII_TD2 0x1b020
344 MX6QDL_PAD_RGMII_TD3__RGMII_TD3 0x1b020
345 MX6QDL_PAD_RGMII_TX_CTL__RGMII_TX_CTL 0x1b020
346 MX6QDL_PAD_RGMII_RXC__RGMII_RXC 0x1b020
347 MX6QDL_PAD_RGMII_RD0__RGMII_RD0 0x1b020
348 MX6QDL_PAD_RGMII_RD1__RGMII_RD1 0x1b020
349 MX6QDL_PAD_RGMII_RD2__RGMII_RD2 0x1b020
350 MX6QDL_PAD_RGMII_RD3__RGMII_RD3 0x1b020
351 MX6QDL_PAD_RGMII_RX_CTL__RGMII_RX_CTL 0x1b020
352 MX6QDL_PAD_ENET_REF_CLK__ENET_TX_CLK 0x1b010
353 MX6QDL_PAD_GPIO_16__ENET_REF_CLK 0x1b010
354 MX6QDL_PAD_ENET_CRS_DV__GPIO1_IO25 0x1b098
355 >;
356 };
357
358 pinctrl_hdmi_cec: hdmicecgrp {
359 fsl,pins = <
360 MX6QDL_PAD_EIM_A25__HDMI_TX_CEC_LINE 0x1b898
361 >;
362 };
363
364 pinctrl_i2c2: i2c2grp {
365 fsl,pins = <
366 MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b899
367 MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b899
368 >;
369 };
370
371 pinctrl_i2c3: i2c3grp {
372 fsl,pins = <
373 MX6QDL_PAD_GPIO_3__I2C3_SCL 0x4001b899
374 MX6QDL_PAD_GPIO_6__I2C3_SDA 0x4001b899
375 >;
376 };
377
378 pinctrl_ipu1: ipu1grp {
379 fsl,pins = <
380 MX6QDL_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK 0x10
381 MX6QDL_PAD_DI0_PIN2__IPU1_DI0_PIN02 0x10
382 MX6QDL_PAD_DI0_PIN3__IPU1_DI0_PIN03 0x10
383 MX6QDL_PAD_DISP0_DAT0__IPU1_DISP0_DATA00 0x10
384 MX6QDL_PAD_DISP0_DAT1__IPU1_DISP0_DATA01 0x10
385 MX6QDL_PAD_DISP0_DAT2__IPU1_DISP0_DATA02 0x10
386 MX6QDL_PAD_DISP0_DAT3__IPU1_DISP0_DATA03 0x10
387 MX6QDL_PAD_DISP0_DAT4__IPU1_DISP0_DATA04 0x10
388 MX6QDL_PAD_DISP0_DAT5__IPU1_DISP0_DATA05 0x10
389 MX6QDL_PAD_DISP0_DAT6__IPU1_DISP0_DATA06 0x10
390 MX6QDL_PAD_DISP0_DAT7__IPU1_DISP0_DATA07 0x10
391 MX6QDL_PAD_DISP0_DAT8__IPU1_DISP0_DATA08 0x10
392 MX6QDL_PAD_DISP0_DAT9__IPU1_DISP0_DATA09 0x10
393 MX6QDL_PAD_DISP0_DAT10__IPU1_DISP0_DATA10 0x10
394 MX6QDL_PAD_DISP0_DAT11__IPU1_DISP0_DATA11 0x10
395 MX6QDL_PAD_DISP0_DAT12__IPU1_DISP0_DATA12 0x10
396 MX6QDL_PAD_DISP0_DAT13__IPU1_DISP0_DATA13 0x10
397 MX6QDL_PAD_DISP0_DAT14__IPU1_DISP0_DATA14 0x10
398 MX6QDL_PAD_DISP0_DAT15__IPU1_DISP0_DATA15 0x10
399 MX6QDL_PAD_DISP0_DAT16__IPU1_DISP0_DATA16 0x10
400 MX6QDL_PAD_DISP0_DAT17__IPU1_DISP0_DATA17 0x10
401 MX6QDL_PAD_DISP0_DAT18__IPU1_DISP0_DATA18 0x10
402 MX6QDL_PAD_DISP0_DAT19__IPU1_DISP0_DATA19 0x10
403 MX6QDL_PAD_DISP0_DAT20__IPU1_DISP0_DATA20 0x10
404 MX6QDL_PAD_DISP0_DAT21__IPU1_DISP0_DATA21 0x10
405 MX6QDL_PAD_DISP0_DAT22__IPU1_DISP0_DATA22 0x10
406 MX6QDL_PAD_DISP0_DAT23__IPU1_DISP0_DATA23 0x10
407 >;
408 };
409
410 pinctrl_pcie: pciegrp {
411 fsl,pins = <
412 MX6QDL_PAD_GPIO_17__GPIO7_IO12 0x1b098
413 MX6QDL_PAD_KEY_COL4__GPIO4_IO14 0x1b098
414 MX6QDL_PAD_CSI0_DATA_EN__GPIO5_IO20 0x1b098
415 >;
416 };
417
418 pinctrl_pcie_reg: pciereggrp {
419 fsl,pins = <
420 MX6QDL_PAD_EIM_D19__GPIO3_IO19 0x1b098
421 >;
422 };
423
424 pinctrl_pmic: pmicgrp {
425 fsl,pins = <
426 MX6QDL_PAD_GPIO_18__GPIO7_IO13 0x1b098
427 >;
428 };
429
430 pinctrl_pwm1: pwm1grp {
431 fsl,pins = <
432 MX6QDL_PAD_GPIO_9__PWM1_OUT 0x8
433 >;
434 };
435
436 pinctrl_touch: touchgrp {
437 fsl,pins = <
438 MX6QDL_PAD_GPIO_19__GPIO4_IO05 0x1b098
439 MX6QDL_PAD_GPIO_2__GPIO1_IO02 0x1b098
440 >;
441 };
442
443 pinctrl_uart1: uart1grp {
444 fsl,pins = <
445 MX6QDL_PAD_CSI0_DAT10__UART1_TX_DATA 0x1b0a8
446 MX6QDL_PAD_CSI0_DAT11__UART1_RX_DATA 0x1b0a8
447 >;
448 };
449
450 pinctrl_usbh1: usbh1grp {
451 fsl,pins = <
452 MX6QDL_PAD_EIM_D30__USB_H1_OC 0x1b098
453 >;
454 };
455
456 pinctrl_usbh1_vbus: usbh1-vbus {
457 fsl,pins = <
458 MX6QDL_PAD_ENET_TXD1__GPIO1_IO29 0x98
459 >;
460 };
461
462 pinctrl_usbotg: usbotggrp {
463 fsl,pins = <
464 MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x1b098
465 MX6QDL_PAD_EIM_D21__USB_OTG_OC 0x1b098
466 >;
467 };
468
469 pinctrl_usbotg_vbus: usbotg-vbus {
470 fsl,pins = <
471 MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x98
472 >;
473 };
474
475 pinctrl_usdhc3: usdhc3grp {
476 fsl,pins = <
477 MX6QDL_PAD_EIM_A16__GPIO2_IO22 0x1b018
478 MX6QDL_PAD_SD3_RST__GPIO7_IO08 0x1b018
479 MX6QDL_PAD_SD3_CMD__SD3_CMD 0x17059
480 MX6QDL_PAD_SD3_CLK__SD3_CLK 0x10059
481 MX6QDL_PAD_SD3_DAT0__SD3_DATA0 0x17059
482 MX6QDL_PAD_SD3_DAT1__SD3_DATA1 0x17059
483 MX6QDL_PAD_SD3_DAT2__SD3_DATA2 0x17059
484 MX6QDL_PAD_SD3_DAT3__SD3_DATA3 0x17059
485 >;
486 };
487
488 pinctrl_usdhc4: usdhc4grp {
489 fsl,pins = <
490 MX6QDL_PAD_SD4_CMD__SD4_CMD 0x1f069
491 MX6QDL_PAD_SD4_CLK__SD4_CLK 0x10069
492 MX6QDL_PAD_SD4_DAT0__SD4_DATA0 0x17069
493 MX6QDL_PAD_SD4_DAT1__SD4_DATA1 0x17069
494 MX6QDL_PAD_SD4_DAT2__SD4_DATA2 0x17069
495 MX6QDL_PAD_SD4_DAT3__SD4_DATA3 0x17069
496 MX6QDL_PAD_SD4_DAT4__SD4_DATA4 0x17069
497 MX6QDL_PAD_SD4_DAT5__SD4_DATA5 0x17069
498 MX6QDL_PAD_SD4_DAT6__SD4_DATA6 0x17069
499 MX6QDL_PAD_SD4_DAT7__SD4_DATA7 0x17069
500 >;
501 };
502
503 pinctrl_wdog: wdoggrp {
504 fsl,pins = <
505 MX6QDL_PAD_GPIO_1__WDOG2_B 0x1b0b0
506 >;
507 };
508};
509
510&ipu1_di0_disp0 {
511 remote-endpoint = <&lcd_display_in>;
512};
513
514&pcie {
515 pinctrl-names = "default";
516 pinctrl-0 = <&pinctrl_pcie>;
517 reset-gpio = <&gpio7 12 GPIO_ACTIVE_LOW>;
518 vpcie-supply = <&reg_pcie>;
519 status = "disabled";
520};
521
522&pwm1 {
523 #pwm-cells = <3>;
524 pinctrl-names = "default";
525 pinctrl-0 = <&pinctrl_pwm1>;
526 status = "disabled";
527};
528
529&uart1 {
530 pinctrl-names = "default";
531 pinctrl-0 = <&pinctrl_uart1>;
532 status = "okay";
533};
534
535&usbh1 {
536 pinctrl-names = "default";
537 pinctrl-0 = <&pinctrl_usbh1>;
538 vbus-supply = <&reg_usb_h1_vbus>;
539 status = "disabled";
540};
541
542&usbotg {
543 pinctrl-names = "default";
544 pinctrl-0 = <&pinctrl_usbotg>;
545 vbus-supply = <&reg_usb_otg_vbus>;
546 srp-disable;
547 hnp-disable;
548 adp-disable;
549 status = "okay";
550};
551
552&usbphy1 {
553 fsl,tx-d-cal = <106>;
554 status = "okay";
555};
556
557&usbphy2 {
558 fsl,tx-d-cal = <109>;
559 status = "disabled";
560};
561
562&usdhc3 {
563 pinctrl-names = "default";
564 pinctrl-0 = <&pinctrl_usdhc3>;
565 bus-width = <4>;
566 cd-gpios = <&gpio7 8 GPIO_ACTIVE_LOW>;
567 wp-gpios = <&gpio2 22 GPIO_ACTIVE_HIGH>;
568 no-1-8-v;
569 keep-power-in-suspend;
570 wakeup-source;
571 vmmc-supply = <&sw2_reg>;
572 status = "disabled";
573};
574
575&usdhc4 {
576 pinctrl-names = "default";
577 pinctrl-0 = <&pinctrl_usdhc4>;
578 bus-width = <8>;
579 non-removable;
580 no-1-8-v;
581 keep-power-in-suspend;
582 vmmc-supply = <&sw2_reg>;
583 status = "okay";
584};
585
586&wdog1 {
587 status = "disabled";
588};
589
590&wdog2 {
591 pinctrl-names = "default";
592 pinctrl-0 = <&pinctrl_wdog>;
593 fsl,ext-reset-output;
594 status = "okay";
595};
diff --git a/arch/arm/boot/dts/imx6dl-yapp4-draco.dts b/arch/arm/boot/dts/imx6dl-yapp4-draco.dts
new file mode 100644
index 000000000000..a38c407fd837
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-yapp4-draco.dts
@@ -0,0 +1,58 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2015-2018 Y Soft Corporation, a.s.
4
5/dts-v1/;
6
7#include "imx6dl.dtsi"
8#include "imx6dl-yapp4-common.dtsi"
9
10/ {
11 model = "Y Soft IOTA Draco i.MX6Solo board";
12 compatible = "ysoft,imx6dl-yapp4-draco", "fsl,imx6dl";
13
14 memory@10000000 {
15 device_type = "memory";
16 reg = <0x10000000 0x20000000>;
17 };
18};
19
20&backlight {
21 status = "okay";
22};
23
24&lcd_display {
25 status = "okay";
26};
27
28&leds {
29 status = "okay";
30};
31
32&panel {
33 status = "okay";
34};
35
36&pwm1 {
37 status = "okay";
38};
39
40&reg_usb_h1_vbus {
41 status = "okay";
42};
43
44&touchscreen {
45 status = "okay";
46};
47
48&usbh1 {
49 status = "okay";
50};
51
52&usbphy2 {
53 status = "okay";
54};
55
56&usdhc3 {
57 status = "okay";
58};
diff --git a/arch/arm/boot/dts/imx6dl-yapp4-hydra.dts b/arch/arm/boot/dts/imx6dl-yapp4-hydra.dts
new file mode 100644
index 000000000000..f97927064750
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-yapp4-hydra.dts
@@ -0,0 +1,50 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2015-2018 Y Soft Corporation, a.s.
4
5/dts-v1/;
6
7#include "imx6dl.dtsi"
8#include "imx6dl-yapp4-common.dtsi"
9
10/ {
11 model = "Y Soft IOTA Hydra i.MX6DualLite board";
12 compatible = "ysoft,imx6dl-yapp4-hydra", "fsl,imx6dl";
13
14 memory@10000000 {
15 device_type = "memory";
16 reg = <0x10000000 0x80000000>;
17 };
18};
19
20&gpio_oled {
21 status = "okay";
22};
23
24&hdmi {
25 status = "okay";
26};
27
28&i2c3 {
29 status = "okay";
30};
31
32&leds {
33 status = "okay";
34};
35
36&oled {
37 status = "okay";
38};
39
40&pcie {
41 status = "okay";
42};
43
44&reg_pcie {
45 status = "okay";
46};
47
48&usdhc3 {
49 status = "okay";
50};
diff --git a/arch/arm/boot/dts/imx6dl-yapp4-ursa.dts b/arch/arm/boot/dts/imx6dl-yapp4-ursa.dts
new file mode 100644
index 000000000000..0d594e4bd559
--- /dev/null
+++ b/arch/arm/boot/dts/imx6dl-yapp4-ursa.dts
@@ -0,0 +1,54 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2015-2018 Y Soft Corporation, a.s.
4
5/dts-v1/;
6
7#include "imx6dl.dtsi"
8#include "imx6dl-yapp4-common.dtsi"
9
10/ {
11 model = "Y Soft IOTA Ursa i.MX6Solo board";
12 compatible = "ysoft,imx6dl-yapp4-ursa", "fsl,imx6dl";
13
14 memory@10000000 {
15 device_type = "memory";
16 reg = <0x10000000 0x20000000>;
17 };
18};
19
20&backlight {
21 status = "okay";
22};
23
24&lcd_display {
25 status = "okay";
26};
27
28&panel {
29 status = "okay";
30};
31
32&pwm1 {
33 status = "okay";
34};
35
36&reg_usb_h1_vbus {
37 status = "okay";
38};
39
40&switch_ports {
41 /delete-node/ port@2;
42};
43
44&touchscreen {
45 status = "okay";
46};
47
48&usbh1 {
49 status = "okay";
50};
51
52&usbphy2 {
53 status = "okay";
54};
diff --git a/arch/arm/boot/dts/imx6q-logicpd.dts b/arch/arm/boot/dts/imx6q-logicpd.dts
new file mode 100644
index 000000000000..45eb0b7f75f8
--- /dev/null
+++ b/arch/arm/boot/dts/imx6q-logicpd.dts
@@ -0,0 +1,120 @@
1// SPDX-License-Identifier: GPL-2.0
2//
3// Copyright (C) 2019 Logic PD, Inc.
4
5/dts-v1/;
6#include "imx6q.dtsi"
7#include "imx6-logicpd-som.dtsi"
8#include "imx6-logicpd-baseboard.dtsi"
9
10/ {
11 model = "Logic PD i.MX6QD SOM-M3";
12 compatible = "fsl,imx6q";
13
14 backlight: backlight-lvds {
15 compatible = "pwm-backlight";
16 pwms = <&pwm3 0 20000>;
17 brightness-levels = <0 4 8 16 32 64 128 255>;
18 default-brightness-level = <6>;
19 power-supply = <&reg_lcd>;
20 };
21
22 panel-lvds0 {
23 compatible = "okaya,rs800480t-7x0gp";
24
25 port {
26 panel_in_lvds0: endpoint {
27 remote-endpoint = <&lvds0_out>;
28 };
29 };
30 };
31
32 reg_lcd: regulator-lcd {
33 pinctrl-names = "default";
34 pinctrl-0 = <&pinctrl_lcd_reg>;
35 compatible = "regulator-fixed";
36 regulator-name = "lcd_panel_pwr";
37 regulator-min-microvolt = <3300000>;
38 regulator-max-microvolt = <3300000>;
39 gpio = <&gpio4 17 GPIO_ACTIVE_HIGH>;
40 enable-active-high;
41 regulator-always-on;
42 vin-supply = <&reg_3v3>;
43 startup-delay-us = <500000>;
44 };
45
46 reg_lcd_reset: regulator-lcd-reset {
47 pinctrl-names = "default";
48 pinctrl-0 = <&pinctrl_lcd_reset>;
49 compatible = "regulator-fixed";
50 regulator-name = "nLCD_RESET";
51 regulator-min-microvolt = <3300000>;
52 regulator-max-microvolt = <3300000>;
53 gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>;
54 enable-active-high;
55 regulator-always-on;
56 vin-supply = <&reg_lcd>;
57 };
58};
59
60&clks {
61 assigned-clocks = <&clks IMX6QDL_CLK_LDB_DI0_SEL>,
62 <&clks IMX6QDL_CLK_LDB_DI1_SEL>,
63 <&clks IMX6QDL_CLK_IPU1_DI0_PRE_SEL>,
64 <&clks IMX6QDL_CLK_IPU2_DI0_PRE_SEL>;
65 assigned-clock-parents = <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>,
66 <&clks IMX6QDL_CLK_PLL5_VIDEO_DIV>,
67 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>,
68 <&clks IMX6QDL_CLK_PLL2_PFD2_396M>;
69};
70
71&hdmi {
72 ddc-i2c-bus = <&i2c3>;
73 status = "okay";
74};
75
76&ldb {
77 status = "okay";
78
79 lvds-channel@0 {
80 fsl,data-mapping = "spwg";
81 fsl,data-width = <24>;
82 status = "okay";
83
84 port@4 {
85 reg = <4>;
86 lvds0_out: endpoint {
87 remote-endpoint = <&panel_in_lvds0>;
88 };
89 };
90 };
91
92};
93
94&pwm3 {
95 status = "okay";
96};
97
98&reg_hdmi {
99 regulator-always-on; /* Without this, the level shifter on HDMI doesn't turn on */
100};
101
102&iomuxc {
103 pinctrl_lcd_reg: lcdreg {
104 fsl,pins = <
105 MX6QDL_PAD_DI0_PIN15__GPIO4_IO17 0x100b0 /* R_LCD_PANEL_PWR */
106 >;
107 };
108
109 pinctrl_lcd_reset: lcdreset {
110 fsl,pins = <
111 MX6QDL_PAD_EIM_A25__GPIO5_IO02 0x100b0 /* LCD_nRESET */
112 >;
113 };
114
115 pinctrl_touchscreen: touchscreengrp {
116 fsl,pins = <
117 MX6QDL_PAD_GPIO_6__GPIO1_IO06 0x1b0b0 /* TOUCH_nPINTDAV */
118 >;
119 };
120};
diff --git a/arch/arm/boot/dts/imx6q-pistachio.dts b/arch/arm/boot/dts/imx6q-pistachio.dts
index 5edf858c8b86..a31b17eaf51c 100644
--- a/arch/arm/boot/dts/imx6q-pistachio.dts
+++ b/arch/arm/boot/dts/imx6q-pistachio.dts
@@ -103,7 +103,7 @@
103 power { 103 power {
104 label = "Power Button"; 104 label = "Power Button";
105 gpios = <&gpio2 12 GPIO_ACTIVE_LOW>; 105 gpios = <&gpio2 12 GPIO_ACTIVE_LOW>;
106 gpio-key,wakeup; 106 wakeup-source;
107 linux,code = <KEY_POWER>; 107 linux,code = <KEY_POWER>;
108 }; 108 };
109 }; 109 };
diff --git a/arch/arm/boot/dts/imx6q-tbs2910.dts b/arch/arm/boot/dts/imx6q-tbs2910.dts
index 279b15e9ae2e..2ce8399a10ba 100644
--- a/arch/arm/boot/dts/imx6q-tbs2910.dts
+++ b/arch/arm/boot/dts/imx6q-tbs2910.dts
@@ -1,49 +1,6 @@
1/* 1// SPDX-License-Identifier: GPL-2.0+ OR MIT
2 * Copyright 2014 Soeren Moch <smoch@web.de> 2//
3 * 3// Copyright 2014 Soeren Moch <smoch@web.de>
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 * a) This file is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License as
11 * published by the Free Software Foundation; either version 2 of
12 * the License, or (at your option) any later version.
13 *
14 * This file is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public
20 * License along with this file; if not, write to the Free
21 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
22 * MA 02110-1301 USA
23 *
24 * Or, alternatively,
25 *
26 * b) Permission is hereby granted, free of charge, to any person
27 * obtaining a copy of this software and associated documentation
28 * files (the "Software"), to deal in the Software without
29 * restriction, including without limitation the rights to use,
30 * copy, modify, merge, publish, distribute, sublicense, and/or
31 * sell copies of the Software, and to permit persons to whom the
32 * Software is furnished to do so, subject to the following
33 * conditions:
34 *
35 * The above copyright notice and this permission notice shall be
36 * included in all copies or substantial portions of the Software.
37 *
38 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
39 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
40 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
41 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
42 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
43 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
44 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
45 * OTHER DEALINGS IN THE SOFTWARE.
46 */
47 4
48/dts-v1/; 5/dts-v1/;
49 6
diff --git a/arch/arm/boot/dts/imx6qdl-apalis.dtsi b/arch/arm/boot/dts/imx6qdl-apalis.dtsi
index 8380f1b26826..7c4ad541c3f5 100644
--- a/arch/arm/boot/dts/imx6qdl-apalis.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-apalis.dtsi
@@ -332,11 +332,17 @@
332 id = <0>; 332 id = <0>;
333 blocks = <0x5>; 333 blocks = <0x5>;
334 irq-trigger = <0x1>; 334 irq-trigger = <0x1>;
335 /* 3.25 MHz ADC clock speed */
336 st,adc-freq = <1>;
337 /* 12-bit ADC */
338 st,mod-12b = <1>;
339 /* internal ADC reference */
340 st,ref-sel = <0>;
341 /* ADC converstion time: 80 clocks */
342 st,sample-time = <4>;
335 343
336 stmpe_touchscreen { 344 stmpe_touchscreen {
337 compatible = "st,stmpe-ts"; 345 compatible = "st,stmpe-ts";
338 /* 3.25 MHz ADC clock speed */
339 st,adc-freq = <1>;
340 /* 8 sample average control */ 346 /* 8 sample average control */
341 st,ave-ctrl = <3>; 347 st,ave-ctrl = <3>;
342 /* 7 length fractional part in z */ 348 /* 7 length fractional part in z */
@@ -346,17 +352,17 @@
346 * current limit value 352 * current limit value
347 */ 353 */
348 st,i-drive = <1>; 354 st,i-drive = <1>;
349 /* 12-bit ADC */
350 st,mod-12b = <1>;
351 /* internal ADC reference */
352 st,ref-sel = <0>;
353 /* ADC converstion time: 80 clocks */
354 st,sample-time = <4>;
355 /* 1 ms panel driver settling time */ 355 /* 1 ms panel driver settling time */
356 st,settling = <3>; 356 st,settling = <3>;
357 /* 5 ms touch detect interrupt delay */ 357 /* 5 ms touch detect interrupt delay */
358 st,touch-det-delay = <5>; 358 st,touch-det-delay = <5>;
359 }; 359 };
360
361 stmpe_adc {
362 compatible = "st,stmpe-adc";
363 /* forbid to use ADC channels 3-0 (touch) */
364 st,norequest-mask = <0x0F>;
365 };
360 }; 366 };
361}; 367};
362 368
@@ -369,8 +375,8 @@
369 pinctrl-names = "default", "recovery"; 375 pinctrl-names = "default", "recovery";
370 pinctrl-0 = <&pinctrl_i2c3>; 376 pinctrl-0 = <&pinctrl_i2c3>;
371 pinctrl-1 = <&pinctrl_i2c3_recovery>; 377 pinctrl-1 = <&pinctrl_i2c3_recovery>;
372 scl-gpios = <&gpio3 17 GPIO_ACTIVE_HIGH>; 378 scl-gpios = <&gpio3 17 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
373 sda-gpios = <&gpio3 18 GPIO_ACTIVE_HIGH>; 379 sda-gpios = <&gpio3 18 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
374 status = "disabled"; 380 status = "disabled";
375}; 381};
376 382
diff --git a/arch/arm/boot/dts/imx6qdl-colibri.dtsi b/arch/arm/boot/dts/imx6qdl-colibri.dtsi
index 87e15e7cb32b..1beac22266ed 100644
--- a/arch/arm/boot/dts/imx6qdl-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-colibri.dtsi
@@ -262,11 +262,17 @@
262 id = <0>; 262 id = <0>;
263 blocks = <0x5>; 263 blocks = <0x5>;
264 irq-trigger = <0x1>; 264 irq-trigger = <0x1>;
265 /* 3.25 MHz ADC clock speed */
266 st,adc-freq = <1>;
267 /* 12-bit ADC */
268 st,mod-12b = <1>;
269 /* internal ADC reference */
270 st,ref-sel = <0>;
271 /* ADC converstion time: 80 clocks */
272 st,sample-time = <4>;
265 273
266 stmpe_touchscreen { 274 stmpe_touchscreen {
267 compatible = "st,stmpe-ts"; 275 compatible = "st,stmpe-ts";
268 /* 3.25 MHz ADC clock speed */
269 st,adc-freq = <1>;
270 /* 8 sample average control */ 276 /* 8 sample average control */
271 st,ave-ctrl = <3>; 277 st,ave-ctrl = <3>;
272 /* 7 length fractional part in z */ 278 /* 7 length fractional part in z */
@@ -276,17 +282,17 @@
276 * current limit value 282 * current limit value
277 */ 283 */
278 st,i-drive = <1>; 284 st,i-drive = <1>;
279 /* 12-bit ADC */
280 st,mod-12b = <1>;
281 /* internal ADC reference */
282 st,ref-sel = <0>;
283 /* ADC converstion time: 80 clocks */
284 st,sample-time = <4>;
285 /* 1 ms panel driver settling time */ 285 /* 1 ms panel driver settling time */
286 st,settling = <3>; 286 st,settling = <3>;
287 /* 5 ms touch detect interrupt delay */ 287 /* 5 ms touch detect interrupt delay */
288 st,touch-det-delay = <5>; 288 st,touch-det-delay = <5>;
289 }; 289 };
290
291 stmpe_adc {
292 compatible = "st,stmpe-adc";
293 /* forbid to use ADC channels 3-0 (touch) */
294 st,norequest-mask = <0x0F>;
295 };
290 }; 296 };
291}; 297};
292 298
@@ -298,8 +304,8 @@
298 pinctrl-names = "default", "recovery"; 304 pinctrl-names = "default", "recovery";
299 pinctrl-0 = <&pinctrl_i2c3>; 305 pinctrl-0 = <&pinctrl_i2c3>;
300 pinctrl-1 = <&pinctrl_i2c3_recovery>; 306 pinctrl-1 = <&pinctrl_i2c3_recovery>;
301 scl-gpios = <&gpio1 3 GPIO_ACTIVE_HIGH>; 307 scl-gpios = <&gpio1 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
302 sda-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; 308 sda-gpios = <&gpio1 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
303 status = "disabled"; 309 status = "disabled";
304}; 310};
305 311
diff --git a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
index 1b50b01e9bac..433bf09a1954 100644
--- a/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-phytec-pfla02.dtsi
@@ -89,10 +89,23 @@
89&fec { 89&fec {
90 pinctrl-names = "default"; 90 pinctrl-names = "default";
91 pinctrl-0 = <&pinctrl_enet>; 91 pinctrl-0 = <&pinctrl_enet>;
92 phy-handle = <&ethphy>;
92 phy-mode = "rgmii"; 93 phy-mode = "rgmii";
93 phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>; 94 phy-reset-gpios = <&gpio3 23 GPIO_ACTIVE_LOW>;
94 phy-supply = <&vdd_eth_io_reg>; 95 phy-supply = <&vdd_eth_io_reg>;
95 status = "disabled"; 96 status = "disabled";
97
98 fec_mdio: mdio {
99 #address-cells = <1>;
100 #size-cells = <0>;
101
102 ethphy: ethernet-phy@0 {
103 compatible = "ethernet-phy-ieee802.3-c22";
104 reg = <0>;
105 txc-skew-ps = <1680>;
106 rxc-skew-ps = <1860>;
107 };
108 };
96}; 109};
97 110
98&gpmi { 111&gpmi {
@@ -117,6 +130,7 @@
117 reg = <0x58>; 130 reg = <0x58>;
118 interrupt-parent = <&gpio2>; 131 interrupt-parent = <&gpio2>;
119 interrupts = <9 IRQ_TYPE_LEVEL_LOW>; /* active-low GPIO2_9 */ 132 interrupts = <9 IRQ_TYPE_LEVEL_LOW>; /* active-low GPIO2_9 */
133 interrupt-controller;
120 134
121 regulators { 135 regulators {
122 vddcore_reg: bcore1 { 136 vddcore_reg: bcore1 {
diff --git a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
index 8930aec6464c..a0705066ccba 100644
--- a/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-sabresd.dtsi
@@ -64,7 +64,6 @@
64 regulator-max-microvolt = <3300000>; 64 regulator-max-microvolt = <3300000>;
65 gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>; 65 gpio = <&gpio2 31 GPIO_ACTIVE_HIGH>;
66 enable-active-high; 66 enable-active-high;
67 regulator-always-on;
68 }; 67 };
69 68
70 gpio-keys { 69 gpio-keys {
@@ -250,6 +249,8 @@
250 pinctrl-0 = <&pinctrl_i2c1_mma8451_int>; 249 pinctrl-0 = <&pinctrl_i2c1_mma8451_int>;
251 interrupt-parent = <&gpio1>; 250 interrupt-parent = <&gpio1>;
252 interrupts = <18 IRQ_TYPE_LEVEL_LOW>; 251 interrupts = <18 IRQ_TYPE_LEVEL_LOW>;
252 vdd-supply = <&reg_sensors>;
253 vddio-supply = <&reg_sensors>;
253 }; 254 };
254 255
255 ov5642: camera@3c { 256 ov5642: camera@3c {
@@ -440,6 +441,8 @@
440 pinctrl-0 = <&pinctrl_i2c3_mag3110_int>; 441 pinctrl-0 = <&pinctrl_i2c3_mag3110_int>;
441 interrupt-parent = <&gpio3>; 442 interrupt-parent = <&gpio3>;
442 interrupts = <16 IRQ_TYPE_EDGE_RISING>; 443 interrupts = <16 IRQ_TYPE_EDGE_RISING>;
444 vdd-supply = <&reg_sensors>;
445 vddio-supply = <&reg_sensors>;
443 }; 446 };
444 447
445 light-sensor@44 { 448 light-sensor@44 {
@@ -449,6 +452,7 @@
449 pinctrl-0 = <&pinctrl_i2c3_isl29023_int>; 452 pinctrl-0 = <&pinctrl_i2c3_isl29023_int>;
450 interrupt-parent = <&gpio3>; 453 interrupt-parent = <&gpio3>;
451 interrupts = <9 IRQ_TYPE_EDGE_FALLING>; 454 interrupts = <9 IRQ_TYPE_EDGE_FALLING>;
455 vcc-supply = <&reg_sensors>;
452 }; 456 };
453}; 457};
454 458
diff --git a/arch/arm/boot/dts/imx6sl.dtsi b/arch/arm/boot/dts/imx6sl.dtsi
index e7524e73efb4..4b4813f176cd 100644
--- a/arch/arm/boot/dts/imx6sl.dtsi
+++ b/arch/arm/boot/dts/imx6sl.dtsi
@@ -338,7 +338,7 @@
338 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm"; 338 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm";
339 reg = <0x02080000 0x4000>; 339 reg = <0x02080000 0x4000>;
340 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>; 340 interrupts = <0 83 IRQ_TYPE_LEVEL_HIGH>;
341 clocks = <&clks IMX6SL_CLK_PWM1>, 341 clocks = <&clks IMX6SL_CLK_PERCLK>,
342 <&clks IMX6SL_CLK_PWM1>; 342 <&clks IMX6SL_CLK_PWM1>;
343 clock-names = "ipg", "per"; 343 clock-names = "ipg", "per";
344 }; 344 };
@@ -348,7 +348,7 @@
348 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm"; 348 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm";
349 reg = <0x02084000 0x4000>; 349 reg = <0x02084000 0x4000>;
350 interrupts = <0 84 IRQ_TYPE_LEVEL_HIGH>; 350 interrupts = <0 84 IRQ_TYPE_LEVEL_HIGH>;
351 clocks = <&clks IMX6SL_CLK_PWM2>, 351 clocks = <&clks IMX6SL_CLK_PERCLK>,
352 <&clks IMX6SL_CLK_PWM2>; 352 <&clks IMX6SL_CLK_PWM2>;
353 clock-names = "ipg", "per"; 353 clock-names = "ipg", "per";
354 }; 354 };
@@ -358,7 +358,7 @@
358 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm"; 358 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm";
359 reg = <0x02088000 0x4000>; 359 reg = <0x02088000 0x4000>;
360 interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>; 360 interrupts = <0 85 IRQ_TYPE_LEVEL_HIGH>;
361 clocks = <&clks IMX6SL_CLK_PWM3>, 361 clocks = <&clks IMX6SL_CLK_PERCLK>,
362 <&clks IMX6SL_CLK_PWM3>; 362 <&clks IMX6SL_CLK_PWM3>;
363 clock-names = "ipg", "per"; 363 clock-names = "ipg", "per";
364 }; 364 };
@@ -368,7 +368,7 @@
368 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm"; 368 compatible = "fsl,imx6sl-pwm", "fsl,imx27-pwm";
369 reg = <0x0208c000 0x4000>; 369 reg = <0x0208c000 0x4000>;
370 interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>; 370 interrupts = <0 86 IRQ_TYPE_LEVEL_HIGH>;
371 clocks = <&clks IMX6SL_CLK_PWM4>, 371 clocks = <&clks IMX6SL_CLK_PERCLK>,
372 <&clks IMX6SL_CLK_PWM4>; 372 <&clks IMX6SL_CLK_PWM4>;
373 clock-names = "ipg", "per"; 373 clock-names = "ipg", "per";
374 }; 374 };
diff --git a/arch/arm/boot/dts/imx6sll-evk.dts b/arch/arm/boot/dts/imx6sll-evk.dts
index d8163705363e..4a31a415f88e 100644
--- a/arch/arm/boot/dts/imx6sll-evk.dts
+++ b/arch/arm/boot/dts/imx6sll-evk.dts
@@ -309,7 +309,7 @@
309 pinctrl-2 = <&pinctrl_usdhc3_200mhz>; 309 pinctrl-2 = <&pinctrl_usdhc3_200mhz>;
310 cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>; 310 cd-gpios = <&gpio3 22 GPIO_ACTIVE_LOW>;
311 keep-power-in-suspend; 311 keep-power-in-suspend;
312 enable-sdio-wakeup; 312 wakeup-source;
313 vmmc-supply = <&reg_sd3_vmmc>; 313 vmmc-supply = <&reg_sd3_vmmc>;
314 status = "okay"; 314 status = "okay";
315}; 315};
diff --git a/arch/arm/boot/dts/imx6sx.dtsi b/arch/arm/boot/dts/imx6sx.dtsi
index 272ff6133ec1..5b16e65f7696 100644
--- a/arch/arm/boot/dts/imx6sx.dtsi
+++ b/arch/arm/boot/dts/imx6sx.dtsi
@@ -467,7 +467,7 @@
467 }; 467 };
468 468
469 gpt: gpt@2098000 { 469 gpt: gpt@2098000 {
470 compatible = "fsl,imx6sx-gpt", "fsl,imx31-gpt"; 470 compatible = "fsl,imx6sx-gpt", "fsl,imx6dl-gpt";
471 reg = <0x02098000 0x4000>; 471 reg = <0x02098000 0x4000>;
472 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>; 472 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
473 clocks = <&clks IMX6SX_CLK_GPT_BUS>, 473 clocks = <&clks IMX6SX_CLK_GPT_BUS>,
@@ -785,6 +785,18 @@
785 clocks = <&clks IMX6SX_CLK_GPU>; 785 clocks = <&clks IMX6SX_CLK_GPU>;
786 }; 786 };
787 787
788 pd_disp: power-domain@2 {
789 reg = <2>;
790 #power-domain-cells = <0>;
791 clocks = <&clks IMX6SX_CLK_PXP_AXI>,
792 <&clks IMX6SX_CLK_DISPLAY_AXI>,
793 <&clks IMX6SX_CLK_LCDIF1_PIX>,
794 <&clks IMX6SX_CLK_LCDIF_APB>,
795 <&clks IMX6SX_CLK_LCDIF2_PIX>,
796 <&clks IMX6SX_CLK_CSI>,
797 <&clks IMX6SX_CLK_VADC>;
798 };
799
788 pd_pci: power-domain@3 { 800 pd_pci: power-domain@3 {
789 reg = <3>; 801 reg = <3>;
790 #power-domain-cells = <0>; 802 #power-domain-cells = <0>;
@@ -1205,6 +1217,7 @@
1205 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 1217 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
1206 clocks = <&clks IMX6SX_CLK_PXP_AXI>; 1218 clocks = <&clks IMX6SX_CLK_PXP_AXI>;
1207 clock-names = "axi"; 1219 clock-names = "axi";
1220 power-domains = <&pd_disp>;
1208 status = "disabled"; 1221 status = "disabled";
1209 }; 1222 };
1210 1223
@@ -1226,6 +1239,7 @@
1226 <&clks IMX6SX_CLK_LCDIF_APB>, 1239 <&clks IMX6SX_CLK_LCDIF_APB>,
1227 <&clks IMX6SX_CLK_DISPLAY_AXI>; 1240 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1228 clock-names = "pix", "axi", "disp_axi"; 1241 clock-names = "pix", "axi", "disp_axi";
1242 power-domains = <&pd_disp>;
1229 status = "disabled"; 1243 status = "disabled";
1230 }; 1244 };
1231 1245
@@ -1237,6 +1251,7 @@
1237 <&clks IMX6SX_CLK_LCDIF_APB>, 1251 <&clks IMX6SX_CLK_LCDIF_APB>,
1238 <&clks IMX6SX_CLK_DISPLAY_AXI>; 1252 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1239 clock-names = "pix", "axi", "disp_axi"; 1253 clock-names = "pix", "axi", "disp_axi";
1254 power-domains = <&pd_disp>;
1240 status = "disabled"; 1255 status = "disabled";
1241 }; 1256 };
1242 1257
@@ -1246,6 +1261,7 @@
1246 clocks = <&clks IMX6SX_CLK_VADC>, 1261 clocks = <&clks IMX6SX_CLK_VADC>,
1247 <&clks IMX6SX_CLK_CSI>; 1262 <&clks IMX6SX_CLK_CSI>;
1248 clock-names = "vadc", "csi"; 1263 clock-names = "vadc", "csi";
1264 power-domains = <&pd_disp>;
1249 status = "disabled"; 1265 status = "disabled";
1250 }; 1266 };
1251 }; 1267 };
@@ -1370,7 +1386,8 @@
1370 <&clks IMX6SX_CLK_PCIE_REF_125M>, 1386 <&clks IMX6SX_CLK_PCIE_REF_125M>,
1371 <&clks IMX6SX_CLK_DISPLAY_AXI>; 1387 <&clks IMX6SX_CLK_DISPLAY_AXI>;
1372 clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_inbound_axi"; 1388 clock-names = "pcie", "pcie_bus", "pcie_phy", "pcie_inbound_axi";
1373 power-domains = <&pd_pci>; 1389 power-domains = <&pd_disp>, <&pd_pci>;
1390 power-domain-names = "pcie", "pcie_phy";
1374 status = "disabled"; 1391 status = "disabled";
1375 }; 1392 };
1376 }; 1393 };
diff --git a/arch/arm/boot/dts/imx6ul-phytec-pcl063.dtsi b/arch/arm/boot/dts/imx6ul-phytec-pcl063.dtsi
new file mode 100644
index 000000000000..fc2997449b49
--- /dev/null
+++ b/arch/arm/boot/dts/imx6ul-phytec-pcl063.dtsi
@@ -0,0 +1,148 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2016 PHYTEC Messtechnik GmbH
4 * Author: Christian Hemp <c.hemp@phytec.de>
5 */
6
7#include <dt-bindings/gpio/gpio.h>
8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/pwm/pwm.h>
10#include "imx6ul.dtsi"
11
12/ {
13 model = "Phytec phyCORE i.MX6 UltraLite";
14 compatible = "phytec,imx6ul-pcl063", "fsl,imx6ul";
15
16 chosen {
17 stdout-path = &uart1;
18 };
19
20 /*
21 * Set the minimum memory size here and
22 * let the bootloader set the real size.
23 */
24 memory {
25 device_type = "memory";
26 reg = <0x80000000 0x8000000>;
27 };
28
29 gpio_leds_som: leds {
30 pinctrl-names = "default";
31 pinctrl-0 = <&pinctrl_gpioleds_som>;
32 compatible = "gpio-leds";
33
34 led_green {
35 label = "phycore:green";
36 gpios = <&gpio5 4 GPIO_ACTIVE_HIGH>;
37 linux,default-trigger = "heartbeat";
38 };
39 };
40};
41
42&fec1 {
43 pinctrl-names = "default";
44 pinctrl-0 = <&pinctrl_enet1>;
45 phy-mode = "rmii";
46 phy-handle = <&ethphy0>;
47 status = "okay";
48
49 mdio: mdio {
50 #address-cells = <1>;
51 #size-cells = <0>;
52
53 ethphy0: ethernet-phy@1 {
54 reg = <1>;
55 interrupt-parent = <&gpio1>;
56 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
57 micrel,led-mode = <1>;
58 clocks = <&clks IMX6UL_CLK_ENET_REF>;
59 clock-names = "rmii-ref";
60 };
61 };
62};
63
64&gpmi {
65 pinctrl-names = "default";
66 pinctrl-0 = <&pinctrl_gpmi_nand>;
67 nand-on-flash-bbt;
68 status = "okay";
69};
70
71&i2c1 {
72 pinctrl-names = "default";
73 pinctrl-0 =<&pinctrl_i2c1>;
74 clock-frequency = <100000>;
75 status = "okay";
76
77 eeprom@52 {
78 compatible = "catalyst,24c32", "atmel,24c32";
79 reg = <0x52>;
80 };
81};
82
83&snvs_poweroff {
84 status = "okay";
85};
86
87&uart1 {
88 pinctrl-names = "default";
89 pinctrl-0 = <&pinctrl_uart1>;
90 status = "okay";
91};
92
93&iomuxc {
94 pinctrl_enet1: enet1grp {
95 fsl,pins = <
96 MX6UL_PAD_GPIO1_IO07__ENET1_MDC 0x1b0b0
97 MX6UL_PAD_GPIO1_IO06__ENET1_MDIO 0x1b0b0
98 MX6UL_PAD_ENET1_RX_EN__ENET1_RX_EN 0x1b0b0
99 MX6UL_PAD_ENET1_RX_ER__ENET1_RX_ER 0x1b0b0
100 MX6UL_PAD_ENET1_RX_DATA0__ENET1_RDATA00 0x1b0b0
101 MX6UL_PAD_ENET1_RX_DATA1__ENET1_RDATA01 0x1b0b0
102 MX6UL_PAD_ENET1_TX_EN__ENET1_TX_EN 0x1b0b0
103 MX6UL_PAD_ENET1_TX_DATA0__ENET1_TDATA00 0x1b0b0
104 MX6UL_PAD_ENET1_TX_DATA1__ENET1_TDATA01 0x1b0b0
105 MX6UL_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 0x4001b031
106 MX6UL_PAD_GPIO1_IO02__GPIO1_IO02 0x17059
107 >;
108 };
109
110 pinctrl_gpioleds_som: gpioledssomgrp {
111 fsl,pins = <MX6UL_PAD_SNVS_TAMPER4__GPIO5_IO04 0x0b0b0>;
112 };
113
114 pinctrl_gpmi_nand: gpminandgrp {
115 fsl,pins = <
116 MX6UL_PAD_NAND_CLE__RAWNAND_CLE 0x0b0b1
117 MX6UL_PAD_NAND_ALE__RAWNAND_ALE 0x0b0b1
118 MX6UL_PAD_NAND_WP_B__RAWNAND_WP_B 0x0b0b1
119 MX6UL_PAD_NAND_READY_B__RAWNAND_READY_B 0x0b000
120 MX6UL_PAD_NAND_CE0_B__RAWNAND_CE0_B 0x0b0b1
121 MX6UL_PAD_NAND_RE_B__RAWNAND_RE_B 0x0b0b1
122 MX6UL_PAD_NAND_WE_B__RAWNAND_WE_B 0x0b0b1
123 MX6UL_PAD_NAND_DATA00__RAWNAND_DATA00 0x0b0b1
124 MX6UL_PAD_NAND_DATA01__RAWNAND_DATA01 0x0b0b1
125 MX6UL_PAD_NAND_DATA02__RAWNAND_DATA02 0x0b0b1
126 MX6UL_PAD_NAND_DATA03__RAWNAND_DATA03 0x0b0b1
127 MX6UL_PAD_NAND_DATA04__RAWNAND_DATA04 0x0b0b1
128 MX6UL_PAD_NAND_DATA05__RAWNAND_DATA05 0x0b0b1
129 MX6UL_PAD_NAND_DATA06__RAWNAND_DATA06 0x0b0b1
130 MX6UL_PAD_NAND_DATA07__RAWNAND_DATA07 0x0b0b1
131 >;
132 };
133
134 pinctrl_i2c1: i2cgrp {
135 fsl,pins = <
136 MX6UL_PAD_UART4_TX_DATA__I2C1_SCL 0x4001b8b0
137 MX6UL_PAD_UART4_RX_DATA__I2C1_SDA 0x4001b8b0
138 >;
139 };
140
141 pinctrl_uart1: uart1grp {
142 fsl,pins = <
143 MX6UL_PAD_UART1_TX_DATA__UART1_DCE_TX 0x1b0b1
144 MX6UL_PAD_UART1_RX_DATA__UART1_DCE_RX 0x1b0b1
145 >;
146 };
147
148};
diff --git a/arch/arm/boot/dts/imx6ul-phytec-peb-eval-01.dtsi b/arch/arm/boot/dts/imx6ul-phytec-peb-eval-01.dtsi
new file mode 100644
index 000000000000..e2f38f39a6ad
--- /dev/null
+++ b/arch/arm/boot/dts/imx6ul-phytec-peb-eval-01.dtsi
@@ -0,0 +1,55 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2016 PHYTEC Messtechnik
4 * Author: Christian Hemp <c.hemp@phytec.de>
5 */
6
7#include <dt-bindings/input/input.h>
8
9/ {
10 gpio_keys: gpio-keys {
11 compatible = "gpio-key";
12 pinctrl-names = "default";
13 pinctrl-0 = <&pinctrl_gpio_keys>;
14 status = "disabled";
15
16 power {
17 label = "Power Button";
18 gpios = <&gpio5 0 GPIO_ACTIVE_LOW>;
19 linux,code = <KEY_POWER>;
20 wakeup-source;
21 };
22 };
23
24 user_leds: leds {
25 compatible = "gpio-leds";
26 pinctrl-names = "default";
27 pinctrl-0 = <&pinctrl_user_leds>;
28 status = "disabled";
29
30 led_yellow {
31 gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
32 linux,default-trigger = "default-on";
33 };
34
35 led_red {
36 gpios = <&gpio1 10 GPIO_ACTIVE_HIGH>;
37 linux,default-trigger = "default-on";
38 };
39 };
40};
41
42&iomuxc {
43 pinctrl_gpio_keys: gpio_keysgrp {
44 fsl,pins = <
45 MX6UL_PAD_SNVS_TAMPER0__GPIO5_IO00 0x79
46 >;
47 };
48
49 pinctrl_user_leds: user_ledsgrp {
50 fsl,pins = <
51 MX6UL_PAD_JTAG_MOD__GPIO1_IO10 0x79
52 MX6UL_PAD_GPIO1_IO01__GPIO1_IO01 0x79
53 >;
54 };
55};
diff --git a/arch/arm/boot/dts/imx6ul-phytec-phyboard-segin-full.dts b/arch/arm/boot/dts/imx6ul-phytec-phyboard-segin-full.dts
new file mode 100644
index 000000000000..b6a1407a9d44
--- /dev/null
+++ b/arch/arm/boot/dts/imx6ul-phytec-phyboard-segin-full.dts
@@ -0,0 +1,89 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2016 PHYTEC Messtechnik GmbH
4 * Author: Christian Hemp <c.hemp@phytec.de>
5 */
6
7/dts-v1/;
8#include "imx6ul-phytec-pcl063.dtsi"
9#include "imx6ul-phytec-phyboard-segin.dtsi"
10#include "imx6ul-phytec-peb-eval-01.dtsi"
11
12/ {
13 model = "Phytec phyBOARD-Segin i.MX6 UltraLite Full Featured";
14 compatible = "phytec,imx6ul-pbacd10", "phytec,imx6ul-pcl063", "fsl,imx6ul";
15};
16
17&adc1 {
18 status = "okay";
19};
20
21&can1 {
22 status = "okay";
23};
24
25&tlv320 {
26 status = "okay";
27};
28
29&ecspi3 {
30 pinctrl-names = "default";
31 pinctrl-0 = <&pinctrl_ecspi3>;
32 cs-gpios = <&gpio1 20 GPIO_ACTIVE_HIGH>;
33 status = "okay";
34};
35
36&fec2 {
37 status = "okay";
38};
39
40&i2c_rtc {
41 status = "okay";
42};
43
44&reg_can1_en {
45 status = "okay";
46};
47
48&reg_sound_1v8 {
49 status = "okay";
50};
51
52&reg_sound_3v3 {
53 status = "okay";
54};
55
56&sai2 {
57 status = "okay";
58};
59
60&sound {
61 status = "okay";
62};
63
64&uart5 {
65 status = "okay";
66};
67
68&usbotg1 {
69 status = "okay";
70};
71
72&usbotg2 {
73 status = "okay";
74};
75
76&usdhc1 {
77 status = "okay";
78};
79
80&iomuxc {
81 pinctrl_ecspi3: ecspi3grp {
82 fsl,pins = <
83 MX6UL_PAD_UART2_RTS_B__ECSPI3_MISO 0x10b0
84 MX6UL_PAD_UART2_CTS_B__ECSPI3_MOSI 0x10b0
85 MX6UL_PAD_UART2_RX_DATA__ECSPI3_SCLK 0x10b0
86 MX6UL_PAD_UART2_TX_DATA__GPIO1_IO20 0x10b0
87 >;
88 };
89};
diff --git a/arch/arm/boot/dts/imx6ul-phytec-phyboard-segin.dtsi b/arch/arm/boot/dts/imx6ul-phytec-phyboard-segin.dtsi
new file mode 100644
index 000000000000..7bf439a77d2c
--- /dev/null
+++ b/arch/arm/boot/dts/imx6ul-phytec-phyboard-segin.dtsi
@@ -0,0 +1,329 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright (C) 2016 PHYTEC Messtechnik GmbH
4 * Author: Christian Hemp <c.hemp@phytec.de>
5 */
6
7/ {
8 model = "Phytec phyBOARD-Segin i.MX6 UltraLite";
9 compatible = "phytec,imx6ul-pbacd-10", "phytec,imx6ul-pcl063", "fsl,imx6ul";
10
11 aliases {
12 rtc0 = &i2c_rtc;
13 rtc1 = &snvs_rtc;
14 };
15
16 reg_sound_1v8: regulator-1v8 {
17 compatible = "regulator-fixed";
18 regulator-name = "i2s-audio-1v8";
19 regulator-min-microvolt = <1800000>;
20 regulator-max-microvolt = <1800000>;
21 status = "disabled";
22 };
23
24 reg_sound_3v3: regulator-3v3 {
25 compatible = "regulator-fixed";
26 regulator-name = "i2s-audio-3v3";
27 regulator-min-microvolt = <3300000>;
28 regulator-max-microvolt = <3300000>;
29 status = "disabled";
30 };
31
32 reg_can1_en: regulator-can1 {
33 compatible = "regulator-fixed";
34 pinctrl-names = "default";
35 pinctrl-0 = <&princtrl_flexcan1_en>;
36 regulator-name = "Can";
37 regulator-min-microvolt = <3300000>;
38 regulator-max-microvolt = <3300000>;
39 gpio = <&gpio5 2 GPIO_ACTIVE_HIGH>;
40 enable-active-high;
41 status = "disabled";
42 };
43
44 reg_adc1_vref_3v3: regulator-vref-3v3 {
45 compatible = "regulator-fixed";
46 regulator-name = "vref-3v3";
47 regulator-min-microvolt = <3300000>;
48 regulator-max-microvolt = <3300000>;
49 };
50
51 sound: sound {
52 compatible = "simple-audio-card";
53 simple-audio-card,name = "phyBOARD-Segin-TLV320AIC3007";
54 simple-audio-card,format = "i2s";
55 simple-audio-card,bitclock-master = <&dailink_master>;
56 simple-audio-card,frame-master = <&dailink_master>;
57 simple-audio-card,widgets =
58 "Line", "Line In",
59 "Line", "Line Out",
60 "Speaker", "Speaker";
61 simple-audio-card,routing =
62 "Line Out", "LLOUT",
63 "Line Out", "RLOUT",
64 "Speaker", "SPOP",
65 "Speaker", "SPOM",
66 "LINE1L", "Line In",
67 "LINE1R", "Line In";
68 status = "disabled";
69
70 simple-audio-card,cpu {
71 sound-dai = <&sai2>;
72 };
73
74 dailink_master: simple-audio-card,codec {
75 sound-dai = <&tlv320>;
76 clocks = <&clks IMX6UL_CLK_SAI2>;
77 };
78 };
79
80};
81
82&adc1 {
83 pinctrl-names = "default";
84 pinctrl-0 = <&pinctrl_adc1>;
85 vref-supply = <&reg_adc1_vref_3v3>;
86 /*
87 * driver can not separate a specific channel so we request 4 channels
88 * here - we need only the fourth channel
89 */
90 num-channels = <4>;
91 status = "disabled";
92};
93
94&can1 {
95 pinctrl-names = "default";
96 pinctrl-0 = <&pinctrl_flexcan1>;
97 xceiver-supply = <&reg_can1_en>;
98 status = "disabled";
99};
100
101&clks {
102 assigned-clocks = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
103 assigned-clock-rates = <786432000>;
104};
105
106&fec2 {
107 pinctrl-names = "default";
108 pinctrl-0 = <&pinctrl_enet2>;
109 phy-mode = "rmii";
110 phy-handle = <&ethphy1>;
111 status = "disabled";
112};
113
114&i2c1 {
115 tlv320: codec@18 {
116 compatible = "ti,tlv320aic3007";
117 #sound-dai-cells = <0>;
118 reg = <0x18>;
119 AVDD-supply = <&reg_sound_3v3>;
120 IOVDD-supply = <&reg_sound_3v3>;
121 DRVDD-supply = <&reg_sound_3v3>;
122 DVDD-supply = <&reg_sound_1v8>;
123 status = "disabled";
124 };
125
126 stmpe: touchscreen@44 {
127 compatible = "st,stmpe811";
128 reg = <0x44>;
129 interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
130 interrupt-parent = <&gpio5>;
131 pinctrl-names = "default";
132 pinctrl-0 = <&pinctrl_stmpe>;
133 status = "disabled";
134
135 touchscreen {
136 compatible = "st,stmpe-ts";
137 st,sample-time = <4>;
138 st,mod-12b = <1>;
139 st,ref-sel = <0>;
140 st,adc-freq = <1>;
141 st,ave-ctrl = <1>;
142 st,touch-det-delay = <2>;
143 st,settling = <2>;
144 st,fraction-z = <7>;
145 st,i-drive = <1>;
146 touchscreen-inverted-x = <1>;
147 touchscreen-inverted-y = <1>;
148 };
149 };
150
151 i2c_rtc: rtc@68 {
152 pinctrl-names = "default";
153 pinctrl-0 = <&pinctrl_rtc_int>;
154 compatible = "microcrystal,rv4162";
155 reg = <0x68>;
156 interrupt-parent = <&gpio5>;
157 interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
158 status = "disabled";
159 };
160};
161
162&mdio {
163 ethphy1: ethernet-phy@2 {
164 reg = <2>;
165 micrel,led-mode = <1>;
166 clocks = <&clks IMX6UL_CLK_ENET2_REF>;
167 clock-names = "rmii-ref";
168 };
169};
170
171&pwm3 {
172 pinctrl-names = "default";
173 pinctrl-0 = <&pinctrl_pwm3>;
174 status = "disabled";
175};
176
177&sai2 {
178 pinctrl-names = "default";
179 pinctrl-0 = <&pinctrl_sai2>;
180 assigned-clocks = <&clks IMX6UL_CLK_SAI2_SEL>,
181 <&clks IMX6UL_CLK_SAI2>;
182 assigned-clock-parents = <&clks IMX6UL_CLK_PLL4_AUDIO_DIV>;
183 assigned-clock-rates = <0>, <19200000>;
184 fsl,sai-mclk-direction-output;
185 status = "disabled";
186};
187
188&uart5 {
189 pinctrl-names = "default";
190 pinctrl-0 = <&pinctrl_uart5>;
191 uart-has-rtscts;
192 status = "disabled";
193};
194
195&usbotg1 {
196 pinctrl-names = "default";
197 pinctrl-0 = <&pinctrl_usb_otg1_id>;
198 dr_mode = "otg";
199 status = "disabled";
200};
201
202&usbotg2 {
203 dr_mode = "host";
204 disable-over-current;
205 status = "disabled";
206};
207
208&usdhc1 {
209 pinctrl-names = "default", "state_100mhz", "state_200mhz";
210 pinctrl-0 = <&pinctrl_usdhc1>;
211 pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
212 pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
213 cd-gpios = <&gpio1 19 GPIO_ACTIVE_LOW>;
214 no-1-8-v;
215 keep-power-in-suspend;
216 wakeup-source;
217 status = "disabled";
218};
219
220&iomuxc {
221 pinctrl_adc1: adc1grp {
222 fsl,pins = <
223 MX6UL_PAD_GPIO1_IO03__GPIO1_IO03 0xb0
224 >;
225 };
226
227 pinctrl_enet2: enet2grp {
228 fsl,pins = <
229 MX6UL_PAD_ENET2_RX_EN__ENET2_RX_EN 0x1b0b0
230 MX6UL_PAD_ENET2_RX_ER__ENET2_RX_ER 0x1b0b0
231 MX6UL_PAD_ENET2_RX_DATA0__ENET2_RDATA00 0x1b0b0
232 MX6UL_PAD_ENET2_RX_DATA1__ENET2_RDATA01 0x1b0b0
233 MX6UL_PAD_ENET2_TX_EN__ENET2_TX_EN 0x1b0b0
234 MX6UL_PAD_ENET2_TX_DATA0__ENET2_TDATA00 0x1b0b0
235 MX6UL_PAD_ENET2_TX_DATA1__ENET2_TDATA01 0x1b0b0
236 MX6UL_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 0x4001b031
237 >;
238 };
239
240 pinctrl_flexcan1: flexcan1 {
241 fsl,pins = <
242 MX6UL_PAD_UART3_CTS_B__FLEXCAN1_TX 0x0b0b0
243 MX6UL_PAD_UART3_RTS_B__FLEXCAN1_RX 0x0b0b0
244 >;
245 };
246
247 princtrl_flexcan1_en: flexcan1engrp {
248 fsl,pins = <
249 MX6UL_PAD_SNVS_TAMPER2__GPIO5_IO02 0x17059
250 >;
251 };
252
253 pinctrl_pwm3: pwm3grp {
254 fsl,pins = <
255 MX6UL_PAD_GPIO1_IO04__PWM3_OUT 0x0b0b0
256 >;
257 };
258
259 pinctrl_rtc_int: rtcintgrp {
260 fsl,pins = <
261 MX6UL_PAD_SNVS_TAMPER1__GPIO5_IO01 0x17059
262 >;
263 };
264
265 pinctrl_sai2: sai2grp {
266 fsl,pins = <
267 MX6UL_PAD_JTAG_TDI__SAI2_TX_BCLK 0x17088
268 MX6UL_PAD_JTAG_TDO__SAI2_TX_SYNC 0x17088
269 MX6UL_PAD_JTAG_TRST_B__SAI2_TX_DATA 0x11088
270 MX6UL_PAD_JTAG_TCK__SAI2_RX_DATA 0x11088
271 MX6UL_PAD_JTAG_TMS__SAI2_MCLK 0x17088
272 >;
273 };
274
275 pinctrl_stmpe: stmpegrp {
276 fsl,pins = <
277 MX6UL_PAD_SNVS_TAMPER3__GPIO5_IO03 0x17059
278 >;
279 };
280
281 pinctrl_uart5: uart5grp {
282 fsl,pins = <
283 MX6UL_PAD_UART5_TX_DATA__UART5_DCE_TX 0x1b0b1
284 MX6UL_PAD_UART5_RX_DATA__UART5_DCE_RX 0x1b0b1
285 MX6UL_PAD_GPIO1_IO08__UART5_DCE_RTS 0x1b0b1
286 MX6UL_PAD_GPIO1_IO09__UART5_DCE_CTS 0x1b0b1
287 >;
288 };
289
290 pinctrl_usb_otg1_id: usbotg1idgrp {
291 fsl,pins = <
292 MX6UL_PAD_GPIO1_IO00__ANATOP_OTG1_ID 0x17059
293 >;
294 };
295
296 pinctrl_usdhc1: usdhc1grp {
297 fsl,pins = <
298 MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x17059
299 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x10059
300 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x17059
301 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x17059
302 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x17059
303 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x17059
304 MX6UL_PAD_UART1_RTS_B__GPIO1_IO19 0x17059
305 >;
306 };
307
308 pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
309 fsl,pins = <
310 MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170b9
311 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100b9
312 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170b9
313 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170b9
314 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170b9
315 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170b9
316 >;
317 };
318
319 pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
320 fsl,pins = <
321 MX6UL_PAD_SD1_CMD__USDHC1_CMD 0x170f9
322 MX6UL_PAD_SD1_CLK__USDHC1_CLK 0x100f9
323 MX6UL_PAD_SD1_DATA0__USDHC1_DATA0 0x170f9
324 MX6UL_PAD_SD1_DATA1__USDHC1_DATA1 0x170f9
325 MX6UL_PAD_SD1_DATA2__USDHC1_DATA2 0x170f9
326 MX6UL_PAD_SD1_DATA3__USDHC1_DATA3 0x170f9
327 >;
328 };
329};
diff --git a/arch/arm/boot/dts/imx6ull-colibri.dtsi b/arch/arm/boot/dts/imx6ull-colibri.dtsi
index 6c63a7384611..9ad1da159768 100644
--- a/arch/arm/boot/dts/imx6ull-colibri.dtsi
+++ b/arch/arm/boot/dts/imx6ull-colibri.dtsi
@@ -94,16 +94,16 @@
94 pinctrl-names = "default", "gpio"; 94 pinctrl-names = "default", "gpio";
95 pinctrl-0 = <&pinctrl_i2c1>; 95 pinctrl-0 = <&pinctrl_i2c1>;
96 pinctrl-1 = <&pinctrl_i2c1_gpio>; 96 pinctrl-1 = <&pinctrl_i2c1_gpio>;
97 sda-gpios = <&gpio1 29 GPIO_ACTIVE_LOW>; 97 sda-gpios = <&gpio1 29 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
98 scl-gpios = <&gpio1 28 GPIO_ACTIVE_LOW>; 98 scl-gpios = <&gpio1 28 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
99}; 99};
100 100
101&i2c2 { 101&i2c2 {
102 pinctrl-names = "default", "gpio"; 102 pinctrl-names = "default", "gpio";
103 pinctrl-0 = <&pinctrl_i2c2>; 103 pinctrl-0 = <&pinctrl_i2c2>;
104 pinctrl-1 = <&pinctrl_i2c2_gpio>; 104 pinctrl-1 = <&pinctrl_i2c2_gpio>;
105 sda-gpios = <&gpio1 31 GPIO_ACTIVE_LOW>; 105 sda-gpios = <&gpio1 31 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
106 scl-gpios = <&gpio1 30 GPIO_ACTIVE_LOW>; 106 scl-gpios = <&gpio1 30 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
107 status = "okay"; 107 status = "okay";
108 108
109 ad7879@2c { 109 ad7879@2c {
diff --git a/arch/arm/boot/dts/imx6ull.dtsi b/arch/arm/boot/dts/imx6ull.dtsi
index f3668fe69eac..22e4a307fa59 100644
--- a/arch/arm/boot/dts/imx6ull.dtsi
+++ b/arch/arm/boot/dts/imx6ull.dtsi
@@ -30,6 +30,18 @@
30 >; 30 >;
31}; 31};
32 32
33&ocotp {
34 compatible = "fsl,imx6ull-ocotp", "syscon";
35};
36
37&usdhc1 {
38 compatible = "fsl,imx6ull-usdhc", "fsl,imx6sx-usdhc";
39};
40
41&usdhc2 {
42 compatible = "fsl,imx6ull-usdhc", "fsl,imx6sx-usdhc";
43};
44
33/ { 45/ {
34 soc { 46 soc {
35 aips3: aips-bus@2200000 { 47 aips3: aips-bus@2200000 {
diff --git a/arch/arm/boot/dts/imx7d.dtsi b/arch/arm/boot/dts/imx7d.dtsi
index 6b298e388f4b..6eb98e7c568d 100644
--- a/arch/arm/boot/dts/imx7d.dtsi
+++ b/arch/arm/boot/dts/imx7d.dtsi
@@ -96,6 +96,14 @@
96 }; 96 };
97}; 97};
98 98
99&aips2 {
100 pcie_phy: pcie-phy@306d0000 {
101 compatible = "fsl,imx7d-pcie-phy";
102 reg = <0x306d0000 0x10000>;
103 status = "disabled";
104 };
105};
106
99&aips3 { 107&aips3 {
100 usbotg2: usb@30b20000 { 108 usbotg2: usb@30b20000 {
101 compatible = "fsl,imx7d-usb", "fsl,imx27-usb"; 109 compatible = "fsl,imx7d-usb", "fsl,imx27-usb";
@@ -173,6 +181,7 @@
173 <&src IMX7_RESET_PCIE_CTRL_APPS_EN>, 181 <&src IMX7_RESET_PCIE_CTRL_APPS_EN>,
174 <&src IMX7_RESET_PCIE_CTRL_APPS_TURNOFF>; 182 <&src IMX7_RESET_PCIE_CTRL_APPS_TURNOFF>;
175 reset-names = "pciephy", "apps", "turnoff"; 183 reset-names = "pciephy", "apps", "turnoff";
184 fsl,imx7d-pcie-phy = <&pcie_phy>;
176 status = "disabled"; 185 status = "disabled";
177 }; 186 };
178}; 187};
diff --git a/arch/arm/boot/dts/imx7ulp.dtsi b/arch/arm/boot/dts/imx7ulp.dtsi
index 931b2754b099..fca6e50f37c8 100644
--- a/arch/arm/boot/dts/imx7ulp.dtsi
+++ b/arch/arm/boot/dts/imx7ulp.dtsi
@@ -199,9 +199,13 @@
199 assigned-clock-parents = <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>; 199 assigned-clock-parents = <&scg1 IMX7ULP_CLK_SOSC_BUS_CLK>;
200 }; 200 };
201 201
202 smc1: smc1@40410000 { 202 smc1: clock-controller@40410000 {
203 compatible = "fsl,imx7ulp-smc1"; 203 compatible = "fsl,imx7ulp-smc1";
204 reg = <0x40410000 0x1000>; 204 reg = <0x40410000 0x1000>;
205 #clock-cells = <1>;
206 clocks = <&scg1 IMX7ULP_CLK_CORE_DIV>,
207 <&scg1 IMX7ULP_CLK_HSRUN_CORE_DIV>;
208 clock-names = "divcore", "hsrun_divcore";
205 }; 209 };
206 210
207 pcc3: clock-controller@40b30000 { 211 pcc3: clock-controller@40b30000 {
@@ -343,4 +347,17 @@
343 gpio-ranges = <&iomuxc1 0 96 32>; 347 gpio-ranges = <&iomuxc1 0 96 32>;
344 }; 348 };
345 }; 349 };
350
351 m4aips1: bus@41080000 {
352 compatible = "simple-bus";
353 #address-cells = <1>;
354 #size-cells = <1>;
355 reg = <0x41080000 0x80000>;
356 ranges;
357
358 sim: sim@410a3000 {
359 compatible = "fsl,imx7ulp-sim", "syscon";
360 reg = <0x410a3000 0x1000>;
361 };
362 };
346}; 363};
diff --git a/arch/arm/boot/dts/integrator.dtsi b/arch/arm/boot/dts/integrator.dtsi
index 4d58638d104b..1612a869a4f7 100644
--- a/arch/arm/boot/dts/integrator.dtsi
+++ b/arch/arm/boot/dts/integrator.dtsi
@@ -3,9 +3,15 @@
3 * SoC core Device Tree for the ARM Integrator platforms 3 * SoC core Device Tree for the ARM Integrator platforms
4 */ 4 */
5 5
6/include/ "skeleton.dtsi"
7
8/ { 6/ {
7 #address-cells = <1>;
8 #size-cells = <1>;
9
10 memory {
11 device_type = "memory";
12 reg = <0x0 0x0>;
13 };
14
9 core-module@10000000 { 15 core-module@10000000 {
10 compatible = "arm,core-module-integrator", "syscon", "simple-mfd"; 16 compatible = "arm,core-module-integrator", "syscon", "simple-mfd";
11 reg = <0x10000000 0x200>; 17 reg = <0x10000000 0x200>;
diff --git a/arch/arm/boot/dts/integratorcp.dts b/arch/arm/boot/dts/integratorcp.dts
index a185ab8759fa..01fa229e1bd0 100644
--- a/arch/arm/boot/dts/integratorcp.dts
+++ b/arch/arm/boot/dts/integratorcp.dts
@@ -192,6 +192,43 @@
192 interrupts = <27>; 192 interrupts = <27>;
193 }; 193 };
194 194
195 bridge {
196 compatible = "ti,ths8134a", "ti,ths8134";
197 #address-cells = <1>;
198 #size-cells = <0>;
199
200 ports {
201 #address-cells = <1>;
202 #size-cells = <0>;
203
204 port@0 {
205 reg = <0>;
206
207 vga_bridge_in: endpoint {
208 remote-endpoint = <&clcd_pads_vga_dac>;
209 };
210 };
211
212 port@1 {
213 reg = <1>;
214
215 vga_bridge_out: endpoint {
216 remote-endpoint = <&vga_con_in>;
217 };
218 };
219 };
220 };
221
222 vga {
223 compatible = "vga-connector";
224
225 port {
226 vga_con_in: endpoint {
227 remote-endpoint = <&vga_bridge_out>;
228 };
229 };
230 };
231
195 fpga { 232 fpga {
196 /* 233 /*
197 * These PrimeCells are at the same location and using 234 * These PrimeCells are at the same location and using
@@ -254,39 +291,27 @@
254 interrupts = <22>; 291 interrupts = <22>;
255 clocks = <&auxosc>, <&pclk>; 292 clocks = <&auxosc>, <&pclk>;
256 clock-names = "clcdclk", "apb_pclk"; 293 clock-names = "clcdclk", "apb_pclk";
294 /* 640x480 16bpp @ 25.175MHz is 36827428 bytes/s */
295 max-memory-bandwidth = <40000000>;
257 296
258 port { 297 /*
259 /* 298 * This port is routed through a PLD (Programmable
260 * The VGA connected is implemented with a 299 * Logic Device) that routes the output from the CLCD
261 * THS8134A triple DAC that can be run in 24bit 300 * (after transformations) to the VGA DAC and also an
262 * or 16bit RGB mode. 301 * external panel connector. The PLD is essential for
263 */ 302 * supporting RGB565/BGR565.
264 clcd_pads: endpoint { 303 *
265 remote-endpoint = <&clcd_panel>; 304 * The signals from the port thus reaches two endpoints.
266 arm,pl11x,tft-r0g0b0-pads = <1 7 13>; 305 * The PLD is managed through a few special bits in the
267 }; 306 * FPGA "sysreg".
268 }; 307 *
269 308 * This arrangement can be clearly seen in
270 panel { 309 * ARM DUI 0225D, page 3-41, figure 3-19.
271 compatible = "panel-dpi"; 310 */
272 311 port@0 {
273 port { 312 clcd_pads_vga_dac: endpoint {
274 clcd_panel: endpoint { 313 remote-endpoint = <&vga_bridge_in>;
275 remote-endpoint = <&clcd_pads>; 314 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
276 };
277 };
278
279 /* Standard 640x480 VGA timings */
280 panel-timing {
281 clock-frequency = <25175000>;
282 hactive = <640>;
283 hback-porch = <48>;
284 hfront-porch = <16>;
285 hsync-len = <96>;
286 vactive = <480>;
287 vback-porch = <33>;
288 vfront-porch = <10>;
289 vsync-len = <2>;
290 }; 315 };
291 }; 316 };
292 }; 317 };
diff --git a/arch/arm/boot/dts/kirkwood-dir665.dts b/arch/arm/boot/dts/kirkwood-dir665.dts
index 31ceacd841de..b3ad3f607d31 100644
--- a/arch/arm/boot/dts/kirkwood-dir665.dts
+++ b/arch/arm/boot/dts/kirkwood-dir665.dts
@@ -190,53 +190,6 @@
190 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; 190 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
191 }; 191 };
192 }; 192 };
193
194 dsa {
195 status = "disabled";
196
197 compatible = "marvell,dsa";
198 #address-cells = <2>;
199 #size-cells = <0>;
200
201 dsa,ethernet = <&eth0port>;
202 dsa,mii-bus = <&mdio>;
203
204 switch@0 {
205 #address-cells = <1>;
206 #size-cells = <0>;
207 reg = <0 0>; /* MDIO address 0, switch 0 in tree */
208
209 port@0 {
210 reg = <0>;
211 label = "lan4";
212 };
213
214 port@1 {
215 reg = <1>;
216 label = "lan3";
217 };
218
219 port@2 {
220 reg = <2>;
221 label = "lan2";
222 };
223
224 port@3 {
225 reg = <3>;
226 label = "lan1";
227 };
228
229 port@4 {
230 reg = <4>;
231 label = "wan";
232 };
233
234 port@6 {
235 reg = <6>;
236 label = "cpu";
237 };
238 };
239 };
240}; 193};
241 194
242&mdio { 195&mdio {
diff --git a/arch/arm/boot/dts/kirkwood-dnskw.dtsi b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
index cbaf06f2f78e..eb917462b219 100644
--- a/arch/arm/boot/dts/kirkwood-dnskw.dtsi
+++ b/arch/arm/boot/dts/kirkwood-dnskw.dtsi
@@ -36,8 +36,8 @@
36 compatible = "gpio-fan"; 36 compatible = "gpio-fan";
37 pinctrl-0 = <&pmx_fan_high_speed &pmx_fan_low_speed>; 37 pinctrl-0 = <&pmx_fan_high_speed &pmx_fan_low_speed>;
38 pinctrl-names = "default"; 38 pinctrl-names = "default";
39 gpios = <&gpio1 14 GPIO_ACTIVE_LOW 39 gpios = <&gpio1 14 GPIO_ACTIVE_HIGH
40 &gpio1 13 GPIO_ACTIVE_LOW>; 40 &gpio1 13 GPIO_ACTIVE_HIGH>;
41 gpio-fan,speed-map = <0 0 41 gpio-fan,speed-map = <0 0
42 3000 1 42 3000 1
43 6000 2>; 43 6000 2>;
diff --git a/arch/arm/boot/dts/kirkwood-linksys-viper.dts b/arch/arm/boot/dts/kirkwood-linksys-viper.dts
index a7d659b7145a..2f9660f3b457 100644
--- a/arch/arm/boot/dts/kirkwood-linksys-viper.dts
+++ b/arch/arm/boot/dts/kirkwood-linksys-viper.dts
@@ -66,53 +66,6 @@
66 gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>; 66 gpios = <&gpio0 14 GPIO_ACTIVE_HIGH>;
67 }; 67 };
68 }; 68 };
69
70 dsa {
71 status = "disabled";
72
73 compatible = "marvell,dsa";
74 #address-cells = <2>;
75 #size-cells = <0>;
76
77 dsa,ethernet = <&eth0port>;
78 dsa,mii-bus = <&mdio>;
79
80 switch@16,0 {
81 #address-cells = <1>;
82 #size-cells = <0>;
83 reg = <16 0>; /* MDIO address 16, switch 0 in tree */
84
85 port@0 {
86 reg = <0>;
87 label = "ethernet1";
88 };
89
90 port@1 {
91 reg = <1>;
92 label = "ethernet2";
93 };
94
95 port@2 {
96 reg = <2>;
97 label = "ethernet3";
98 };
99
100 port@3 {
101 reg = <3>;
102 label = "ethernet4";
103 };
104
105 port@4 {
106 reg = <4>;
107 label = "internet";
108 };
109
110 port@5 {
111 reg = <5>;
112 label = "cpu";
113 };
114 };
115 };
116}; 69};
117 70
118&pinctrl { 71&pinctrl {
diff --git a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
index 86d532916d56..2e1a75348908 100644
--- a/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
+++ b/arch/arm/boot/dts/kirkwood-mv88f6281gtw-ge.dts
@@ -107,53 +107,6 @@
107 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>; 107 gpios = <&gpio1 14 GPIO_ACTIVE_LOW>;
108 }; 108 };
109 }; 109 };
110
111 dsa {
112 status = "disabled";
113
114 compatible = "marvell,dsa";
115 #address-cells = <1>;
116 #size-cells = <0>;
117
118 dsa,ethernet = <&eth0port>;
119 dsa,mii-bus = <&mdio>;
120
121 switch@0 {
122 #address-cells = <1>;
123 #size-cells = <0>;
124 reg = <0 0>; /* MDIO address 0, switch 0 in tree */
125
126 port@0 {
127 reg = <0>;
128 label = "lan1";
129 };
130
131 port@1 {
132 reg = <1>;
133 label = "lan2";
134 };
135
136 port@2 {
137 reg = <2>;
138 label = "lan3";
139 };
140
141 port@3 {
142 reg = <3>;
143 label = "lan4";
144 };
145
146 port@4 {
147 reg = <4>;
148 label = "wan";
149 };
150
151 port@5 {
152 reg = <5>;
153 label = "cpu";
154 };
155 };
156 };
157}; 110};
158 111
159&mdio { 112&mdio {
diff --git a/arch/arm/boot/dts/kirkwood-rd88f6281-z0.dts b/arch/arm/boot/dts/kirkwood-rd88f6281-z0.dts
index a9fee2c2bcaf..9d88301daf0e 100644
--- a/arch/arm/boot/dts/kirkwood-rd88f6281-z0.dts
+++ b/arch/arm/boot/dts/kirkwood-rd88f6281-z0.dts
@@ -16,15 +16,6 @@
16 model = "Marvell RD88f6281 Reference design, with Z0 SoC"; 16 model = "Marvell RD88f6281 Reference design, with Z0 SoC";
17 compatible = "marvell,rd88f6281-z0", "marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood"; 17 compatible = "marvell,rd88f6281-z0", "marvell,rd88f6281","marvell,kirkwood-88f6281", "marvell,kirkwood";
18 18
19 dsa {
20 switch@0 {
21 reg = <0 0>; /* MDIO address 0, switch 0 in tree */
22 port@4 {
23 reg = <4>;
24 label = "wan";
25 };
26 };
27 };
28}; 19};
29 20
30&eth1 { 21&eth1 {
diff --git a/arch/arm/boot/dts/kirkwood-rd88f6281.dtsi b/arch/arm/boot/dts/kirkwood-rd88f6281.dtsi
index 0f22f0e6f56b..f1f8eee132e8 100644
--- a/arch/arm/boot/dts/kirkwood-rd88f6281.dtsi
+++ b/arch/arm/boot/dts/kirkwood-rd88f6281.dtsi
@@ -48,47 +48,6 @@
48 cd-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>; 48 cd-gpios = <&gpio0 28 GPIO_ACTIVE_HIGH>;
49 /* No WP GPIO */ 49 /* No WP GPIO */
50 }; 50 };
51 };
52
53 dsa {
54 status = "disabled";
55
56 compatible = "marvell,dsa";
57 #address-cells = <2>;
58 #size-cells = <0>;
59
60 dsa,ethernet = <&eth0port>;
61 dsa,mii-bus = <&mdio>;
62
63 switch@0 {
64 #address-cells = <1>;
65 #size-cells = <0>;
66
67 port@0 {
68 reg = <0>;
69 label = "lan1";
70 };
71
72 port@1 {
73 reg = <1>;
74 label = "lan2";
75 };
76
77 port@2 {
78 reg = <2>;
79 label = "lan3";
80 };
81
82 port@3 {
83 reg = <3>;
84 label = "lan4";
85 };
86
87 port@5 {
88 reg = <5>;
89 label = "cpu";
90 };
91 };
92 }; 51 };
93}; 52};
94 53
diff --git a/arch/arm/boot/dts/kirkwood.dtsi b/arch/arm/boot/dts/kirkwood.dtsi
index 81c7eda2c442..2161e23bd98e 100644
--- a/arch/arm/boot/dts/kirkwood.dtsi
+++ b/arch/arm/boot/dts/kirkwood.dtsi
@@ -1,11 +1,12 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/include/ "skeleton.dtsi"
3#include <dt-bindings/input/input.h> 2#include <dt-bindings/input/input.h>
4#include <dt-bindings/gpio/gpio.h> 3#include <dt-bindings/gpio/gpio.h>
5 4
6#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 5#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
7 6
8/ { 7/ {
8 #address-cells = <1>;
9 #size-cells = <1>;
9 compatible = "marvell,kirkwood"; 10 compatible = "marvell,kirkwood";
10 interrupt-parent = <&intc>; 11 interrupt-parent = <&intc>;
11 12
diff --git a/arch/arm/boot/dts/lpc3250-ea3250.dts b/arch/arm/boot/dts/lpc3250-ea3250.dts
index 58ea0a4e7afa..f46a11827ef6 100644
--- a/arch/arm/boot/dts/lpc3250-ea3250.dts
+++ b/arch/arm/boot/dts/lpc3250-ea3250.dts
@@ -17,64 +17,70 @@
17/ { 17/ {
18 model = "Embedded Artists LPC3250 board based on NXP LPC3250"; 18 model = "Embedded Artists LPC3250 board based on NXP LPC3250";
19 compatible = "ea,ea3250", "nxp,lpc3250"; 19 compatible = "ea,ea3250", "nxp,lpc3250";
20 #address-cells = <1>;
21 #size-cells = <1>;
22 20
23 memory { 21 memory@80000000 {
24 device_type = "memory"; 22 device_type = "memory";
25 reg = <0x80000000 0x4000000>; 23 reg = <0x80000000 0x4000000>;
26 }; 24 };
27 25
28 gpio_keys { 26 gpio-keys {
29 compatible = "gpio-keys"; 27 compatible = "gpio-keys";
30 #address-cells = <1>;
31 #size-cells = <0>;
32 autorepeat; 28 autorepeat;
33 button@21 { 29
30 button {
34 label = "Interrupt Key"; 31 label = "Interrupt Key";
35 linux,code = <103>; 32 linux,code = <103>;
36 gpios = <&gpio 4 1 0>; /* GPI_P3 1 */ 33 gpios = <&gpio 4 1 0>; /* GPI_P3 1 */
37 }; 34 };
35
38 key1 { 36 key1 {
39 label = "KEY1"; 37 label = "KEY1";
40 linux,code = <1>; 38 linux,code = <1>;
41 gpios = <&pca9532 0 0>; 39 gpios = <&pca9532 0 0>;
42 }; 40 };
41
43 key2 { 42 key2 {
44 label = "KEY2"; 43 label = "KEY2";
45 linux,code = <2>; 44 linux,code = <2>;
46 gpios = <&pca9532 1 0>; 45 gpios = <&pca9532 1 0>;
47 }; 46 };
47
48 key3 { 48 key3 {
49 label = "KEY3"; 49 label = "KEY3";
50 linux,code = <3>; 50 linux,code = <3>;
51 gpios = <&pca9532 2 0>; 51 gpios = <&pca9532 2 0>;
52 }; 52 };
53
53 key4 { 54 key4 {
54 label = "KEY4"; 55 label = "KEY4";
55 linux,code = <4>; 56 linux,code = <4>;
56 gpios = <&pca9532 3 0>; 57 gpios = <&pca9532 3 0>;
57 }; 58 };
59
58 joy0 { 60 joy0 {
59 label = "Joystick Key 0"; 61 label = "Joystick Key 0";
60 linux,code = <10>; 62 linux,code = <10>;
61 gpios = <&gpio 2 0 0>; /* P2.0 */ 63 gpios = <&gpio 2 0 0>; /* P2.0 */
62 }; 64 };
65
63 joy1 { 66 joy1 {
64 label = "Joystick Key 1"; 67 label = "Joystick Key 1";
65 linux,code = <11>; 68 linux,code = <11>;
66 gpios = <&gpio 2 1 0>; /* P2.1 */ 69 gpios = <&gpio 2 1 0>; /* P2.1 */
67 }; 70 };
71
68 joy2 { 72 joy2 {
69 label = "Joystick Key 2"; 73 label = "Joystick Key 2";
70 linux,code = <12>; 74 linux,code = <12>;
71 gpios = <&gpio 2 2 0>; /* P2.2 */ 75 gpios = <&gpio 2 2 0>; /* P2.2 */
72 }; 76 };
77
73 joy3 { 78 joy3 {
74 label = "Joystick Key 3"; 79 label = "Joystick Key 3";
75 linux,code = <13>; 80 linux,code = <13>;
76 gpios = <&gpio 2 3 0>; /* P2.3 */ 81 gpios = <&gpio 2 3 0>; /* P2.3 */
77 }; 82 };
83
78 joy4 { 84 joy4 {
79 label = "Joystick Key 4"; 85 label = "Joystick Key 4";
80 linux,code = <14>; 86 linux,code = <14>;
diff --git a/arch/arm/boot/dts/lpc3250-phy3250.dts b/arch/arm/boot/dts/lpc3250-phy3250.dts
index 1e1c2f517a82..ebd19258e22b 100644
--- a/arch/arm/boot/dts/lpc3250-phy3250.dts
+++ b/arch/arm/boot/dts/lpc3250-phy3250.dts
@@ -1,6 +1,7 @@
1/* 1/*
2 * PHYTEC phyCORE-LPC3250 board 2 * PHYTEC phyCORE-LPC3250 board
3 * 3 *
4 * Copyright (C) 2015-2019 Vladimir Zapolskiy <vz@mleia.com>
4 * Copyright 2012 Roland Stigge <stigge@antcom.de> 5 * Copyright 2012 Roland Stigge <stigge@antcom.de>
5 * 6 *
6 * The code contained herein is licensed under the GNU General Public 7 * The code contained herein is licensed under the GNU General Public
@@ -17,45 +18,12 @@
17/ { 18/ {
18 model = "PHYTEC phyCORE-LPC3250 board based on NXP LPC3250"; 19 model = "PHYTEC phyCORE-LPC3250 board based on NXP LPC3250";
19 compatible = "phytec,phy3250", "nxp,lpc3250"; 20 compatible = "phytec,phy3250", "nxp,lpc3250";
20 #address-cells = <1>;
21 #size-cells = <1>;
22 21
23 memory { 22 memory@80000000 {
24 device_type = "memory"; 23 device_type = "memory";
25 reg = <0x80000000 0x4000000>; 24 reg = <0x80000000 0x4000000>;
26 }; 25 };
27 26
28 regulators {
29 backlight_reg: regulator@0 {
30 compatible = "regulator-fixed";
31 regulator-name = "backlight_reg";
32 regulator-min-microvolt = <1800000>;
33 regulator-max-microvolt = <1800000>;
34 gpio = <&gpio 5 4 0>;
35 enable-active-high;
36 regulator-boot-on;
37 };
38
39 lcd_reg: regulator@1 {
40 compatible = "regulator-fixed";
41 regulator-name = "lcd_reg";
42 regulator-min-microvolt = <1800000>;
43 regulator-max-microvolt = <1800000>;
44 gpio = <&gpio 5 0 0>;
45 enable-active-high;
46 regulator-boot-on;
47 };
48
49 sd_reg: regulator@2 {
50 compatible = "regulator-fixed";
51 regulator-name = "sd_reg";
52 regulator-min-microvolt = <1800000>;
53 regulator-max-microvolt = <1800000>;
54 gpio = <&gpio 5 5 0>;
55 enable-active-high;
56 };
57 };
58
59 leds { 27 leds {
60 compatible = "gpio-leds"; 28 compatible = "gpio-leds";
61 29
@@ -69,10 +37,59 @@
69 linux,default-trigger = "heartbeat"; 37 linux,default-trigger = "heartbeat";
70 }; 38 };
71 }; 39 };
40
41 panel: panel {
42 compatible = "sharp,lq035q7db03";
43 power-supply = <&reg_lcd>;
44
45 port {
46 panel_input: endpoint {
47 remote-endpoint = <&cldc_output>;
48 };
49 };
50 };
51
52 reg_backlight: regulator-backlight {
53 compatible = "regulator-fixed";
54 regulator-name = "backlight";
55 regulator-min-microvolt = <1800000>;
56 regulator-max-microvolt = <1800000>;
57 gpio = <&gpio 5 4 0>;
58 enable-active-high;
59 regulator-boot-on;
60 };
61
62 reg_lcd: regulator-lcd {
63 compatible = "regulator-fixed";
64 regulator-name = "lcd";
65 regulator-min-microvolt = <1800000>;
66 regulator-max-microvolt = <1800000>;
67 gpio = <&gpio 5 0 0>;
68 enable-active-high;
69 regulator-boot-on;
70 };
71
72 reg_sd: regulator-sd {
73 compatible = "regulator-fixed";
74 regulator-name = "sd";
75 regulator-min-microvolt = <3300000>;
76 regulator-max-microvolt = <3300000>;
77 gpio = <&gpio 5 5 0>;
78 enable-active-high;
79 regulator-boot-on;
80 };
72}; 81};
73 82
74&clcd { 83&clcd {
84 max-memory-bandwidth = <18710000>;
75 status = "okay"; 85 status = "okay";
86
87 port {
88 cldc_output: endpoint {
89 remote-endpoint = <&panel_input>;
90 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
91 };
92 };
76}; 93};
77 94
78&i2c1 { 95&i2c1 {
@@ -130,7 +147,7 @@
130 cd-gpios = <&gpio 3 1 0>; 147 cd-gpios = <&gpio 3 1 0>;
131 cd-inverted; 148 cd-inverted;
132 bus-width = <4>; 149 bus-width = <4>;
133 vmmc-supply = <&sd_reg>; 150 vmmc-supply = <&reg_sd>;
134 status = "okay"; 151 status = "okay";
135}; 152};
136 153
diff --git a/arch/arm/boot/dts/lpc32xx.dtsi b/arch/arm/boot/dts/lpc32xx.dtsi
index b7303a4e4236..20b38f4ade37 100644
--- a/arch/arm/boot/dts/lpc32xx.dtsi
+++ b/arch/arm/boot/dts/lpc32xx.dtsi
@@ -11,12 +11,12 @@
11 * http://www.gnu.org/copyleft/gpl.html 11 * http://www.gnu.org/copyleft/gpl.html
12 */ 12 */
13 13
14#include "skeleton.dtsi"
15
16#include <dt-bindings/clock/lpc32xx-clock.h> 14#include <dt-bindings/clock/lpc32xx-clock.h>
17#include <dt-bindings/interrupt-controller/irq.h> 15#include <dt-bindings/interrupt-controller/irq.h>
18 16
19/ { 17/ {
18 #address-cells = <1>;
19 #size-cells = <1>;
20 compatible = "nxp,lpc3220"; 20 compatible = "nxp,lpc3220";
21 interrupt-parent = <&mic>; 21 interrupt-parent = <&mic>;
22 22
@@ -139,11 +139,11 @@
139 }; 139 };
140 140
141 clcd: clcd@31040000 { 141 clcd: clcd@31040000 {
142 compatible = "arm,pl110", "arm,primecell"; 142 compatible = "arm,pl111", "arm,primecell";
143 reg = <0x31040000 0x1000>; 143 reg = <0x31040000 0x1000>;
144 interrupts = <14 IRQ_TYPE_LEVEL_HIGH>; 144 interrupts = <14 IRQ_TYPE_LEVEL_HIGH>;
145 clocks = <&clk LPC32XX_CLK_LCD>; 145 clocks = <&clk LPC32XX_CLK_LCD>, <&clk LPC32XX_CLK_LCD>;
146 clock-names = "apb_pclk"; 146 clock-names = "clcdclk", "apb_pclk";
147 status = "disabled"; 147 status = "disabled";
148 }; 148 };
149 149
@@ -230,7 +230,7 @@
230 status = "disabled"; 230 status = "disabled";
231 }; 231 };
232 232
233 i2s1: i2s@2009C000 { 233 i2s1: i2s@2009c000 {
234 compatible = "nxp,lpc3220-i2s"; 234 compatible = "nxp,lpc3220-i2s";
235 reg = <0x2009C000 0x1000>; 235 reg = <0x2009C000 0x1000>;
236 }; 236 };
@@ -273,7 +273,7 @@
273 status = "disabled"; 273 status = "disabled";
274 }; 274 };
275 275
276 i2c1: i2c@400A0000 { 276 i2c1: i2c@400a0000 {
277 compatible = "nxp,pnx-i2c"; 277 compatible = "nxp,pnx-i2c";
278 reg = <0x400A0000 0x100>; 278 reg = <0x400A0000 0x100>;
279 interrupt-parent = <&sic1>; 279 interrupt-parent = <&sic1>;
@@ -284,7 +284,7 @@
284 clocks = <&clk LPC32XX_CLK_I2C1>; 284 clocks = <&clk LPC32XX_CLK_I2C1>;
285 }; 285 };
286 286
287 i2c2: i2c@400A8000 { 287 i2c2: i2c@400a8000 {
288 compatible = "nxp,pnx-i2c"; 288 compatible = "nxp,pnx-i2c";
289 reg = <0x400A8000 0x100>; 289 reg = <0x400A8000 0x100>;
290 interrupt-parent = <&sic1>; 290 interrupt-parent = <&sic1>;
@@ -295,7 +295,7 @@
295 clocks = <&clk LPC32XX_CLK_I2C2>; 295 clocks = <&clk LPC32XX_CLK_I2C2>;
296 }; 296 };
297 297
298 mpwm: mpwm@400E8000 { 298 mpwm: mpwm@400e8000 {
299 compatible = "nxp,lpc3220-motor-pwm"; 299 compatible = "nxp,lpc3220-motor-pwm";
300 reg = <0x400E8000 0x78>; 300 reg = <0x400E8000 0x78>;
301 status = "disabled"; 301 status = "disabled";
@@ -394,7 +394,7 @@
394 #gpio-cells = <3>; /* bank, pin, flags */ 394 #gpio-cells = <3>; /* bank, pin, flags */
395 }; 395 };
396 396
397 timer4: timer@4002C000 { 397 timer4: timer@4002c000 {
398 compatible = "nxp,lpc3220-timer"; 398 compatible = "nxp,lpc3220-timer";
399 reg = <0x4002C000 0x1000>; 399 reg = <0x4002C000 0x1000>;
400 interrupts = <3 IRQ_TYPE_LEVEL_LOW>; 400 interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
@@ -412,7 +412,7 @@
412 status = "disabled"; 412 status = "disabled";
413 }; 413 };
414 414
415 watchdog: watchdog@4003C000 { 415 watchdog: watchdog@4003c000 {
416 compatible = "nxp,pnx4008-wdt"; 416 compatible = "nxp,pnx4008-wdt";
417 reg = <0x4003C000 0x1000>; 417 reg = <0x4003C000 0x1000>;
418 clocks = <&clk LPC32XX_CLK_WDOG>; 418 clocks = <&clk LPC32XX_CLK_WDOG>;
@@ -451,7 +451,7 @@
451 status = "disabled"; 451 status = "disabled";
452 }; 452 };
453 453
454 timer1: timer@4004C000 { 454 timer1: timer@4004c000 {
455 compatible = "nxp,lpc3220-timer"; 455 compatible = "nxp,lpc3220-timer";
456 reg = <0x4004C000 0x1000>; 456 reg = <0x4004C000 0x1000>;
457 interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 457 interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
@@ -462,7 +462,9 @@
462 key: key@40050000 { 462 key: key@40050000 {
463 compatible = "nxp,lpc3220-key"; 463 compatible = "nxp,lpc3220-key";
464 reg = <0x40050000 0x1000>; 464 reg = <0x40050000 0x1000>;
465 interrupts = <54 IRQ_TYPE_LEVEL_HIGH>; 465 clocks = <&clk LPC32XX_CLK_KEY>;
466 interrupt-parent = <&sic1>;
467 interrupts = <22 IRQ_TYPE_LEVEL_HIGH>;
466 status = "disabled"; 468 status = "disabled";
467 }; 469 };
468 470
@@ -475,7 +477,7 @@
475 status = "disabled"; 477 status = "disabled";
476 }; 478 };
477 479
478 pwm1: pwm@4005C000 { 480 pwm1: pwm@4005c000 {
479 compatible = "nxp,lpc3220-pwm"; 481 compatible = "nxp,lpc3220-pwm";
480 reg = <0x4005C000 0x4>; 482 reg = <0x4005C000 0x4>;
481 clocks = <&clk LPC32XX_CLK_PWM1>; 483 clocks = <&clk LPC32XX_CLK_PWM1>;
@@ -484,7 +486,7 @@
484 status = "disabled"; 486 status = "disabled";
485 }; 487 };
486 488
487 pwm2: pwm@4005C004 { 489 pwm2: pwm@4005c004 {
488 compatible = "nxp,lpc3220-pwm"; 490 compatible = "nxp,lpc3220-pwm";
489 reg = <0x4005C004 0x4>; 491 reg = <0x4005C004 0x4>;
490 clocks = <&clk LPC32XX_CLK_PWM2>; 492 clocks = <&clk LPC32XX_CLK_PWM2>;
diff --git a/arch/arm/boot/dts/lpc4350-hitex-eval.dts b/arch/arm/boot/dts/lpc4350-hitex-eval.dts
index 8b973f537d3a..93d0c2e99e7c 100644
--- a/arch/arm/boot/dts/lpc4350-hitex-eval.dts
+++ b/arch/arm/boot/dts/lpc4350-hitex-eval.dts
@@ -40,8 +40,6 @@
40 40
41 pca_buttons { 41 pca_buttons {
42 compatible = "gpio-keys-polled"; 42 compatible = "gpio-keys-polled";
43 #address-cells = <1>;
44 #size-cells = <0>;
45 poll-interval = <100>; 43 poll-interval = <100>;
46 autorepeat; 44 autorepeat;
47 45
diff --git a/arch/arm/boot/dts/lpc4357-ea4357-devkit.dts b/arch/arm/boot/dts/lpc4357-ea4357-devkit.dts
index 02b23fa29d75..224f80a4a31d 100644
--- a/arch/arm/boot/dts/lpc4357-ea4357-devkit.dts
+++ b/arch/arm/boot/dts/lpc4357-ea4357-devkit.dts
@@ -57,8 +57,6 @@
57 compatible = "gpio-keys-polled"; 57 compatible = "gpio-keys-polled";
58 pinctrl-names = "default"; 58 pinctrl-names = "default";
59 pinctrl-0 = <&gpio_joystick_pins>; 59 pinctrl-0 = <&gpio_joystick_pins>;
60 #address-cells = <1>;
61 #size-cells = <0>;
62 poll-interval = <100>; 60 poll-interval = <100>;
63 autorepeat; 61 autorepeat;
64 62
diff --git a/arch/arm/boot/dts/lpc4357-myd-lpc4357.dts b/arch/arm/boot/dts/lpc4357-myd-lpc4357.dts
new file mode 100644
index 000000000000..1f84654df50c
--- /dev/null
+++ b/arch/arm/boot/dts/lpc4357-myd-lpc4357.dts
@@ -0,0 +1,619 @@
1// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
2/*
3 * MYIR Tech MYD-LPC4357 Development Board with 800x480 7" TFT panel
4 *
5 * Copyright (C) 2016-2018 Vladimir Zapolskiy <vz@mleia.com>
6 */
7
8/dts-v1/;
9
10#include "lpc18xx.dtsi"
11#include "lpc4357.dtsi"
12
13#include <dt-bindings/gpio/gpio.h>
14
15/ {
16 model = "MYIR Tech LPC4357 Development Board";
17 compatible = "myir,myd-lpc4357", "nxp,lpc4357";
18
19 chosen {
20 stdout-path = "serial3:115200n8";
21 };
22
23 memory@28000000 {
24 device_type = "memory";
25 reg = <0x28000000 0x2000000>;
26 };
27
28 leds {
29 compatible = "gpio-leds";
30 pinctrl-names = "default";
31 pinctrl-0 = <&led_pins>;
32
33 led1 {
34 gpios = <&gpio LPC_GPIO(6,15) GPIO_ACTIVE_LOW>;
35 default-state = "off";
36 };
37
38 led2 {
39 gpios = <&gpio LPC_GPIO(6,16) GPIO_ACTIVE_LOW>;
40 default-state = "off";
41 };
42
43 led3 {
44 gpios = <&gpio LPC_GPIO(6,17) GPIO_ACTIVE_LOW>;
45 default-state = "off";
46 };
47
48 led4 {
49 gpios = <&gpio LPC_GPIO(6,10) GPIO_ACTIVE_LOW>;
50 default-state = "off";
51 };
52
53 led5 {
54 gpios = <&gpio LPC_GPIO(7,14) GPIO_ACTIVE_LOW>;
55 default-state = "off";
56 };
57
58 led6 {
59 gpios = <&gpio LPC_GPIO(6,14) GPIO_ACTIVE_LOW>;
60 default-state = "off";
61 };
62 };
63
64 panel: panel {
65 compatible = "innolux,at070tn92";
66
67 port {
68 panel_input: endpoint {
69 remote-endpoint = <&lcdc_output>;
70 };
71 };
72 };
73
74 vcc: vcc_fixed {
75 compatible = "regulator-fixed";
76 regulator-name = "vcc-supply";
77 regulator-min-microvolt = <3300000>;
78 regulator-max-microvolt = <3300000>;
79 };
80
81 vmmc: vmmc_fixed {
82 compatible = "regulator-fixed";
83 regulator-name = "vmmc-supply";
84 regulator-min-microvolt = <3300000>;
85 regulator-max-microvolt = <3300000>;
86 };
87};
88
89&pinctrl {
90 can0_pins: can0-pins {
91 can_rd_cfg {
92 pins = "p3_1";
93 function = "can0";
94 input-enable;
95 };
96
97 can_td_cfg {
98 pins = "p3_2";
99 function = "can0";
100 };
101 };
102
103 can1_pins: can1-pins {
104 can_rd_cfg {
105 pins = "pe_1";
106 function = "can1";
107 input-enable;
108 };
109
110 can_td_cfg {
111 pins = "pe_0";
112 function = "can1";
113 };
114 };
115
116 emc_pins: emc-pins {
117 emc_addr0_22_cfg {
118 pins = "p2_9", "p2_10", "p2_11", "p2_12",
119 "p2_13", "p1_0", "p1_1", "p1_2",
120 "p2_8", "p2_7", "p2_6", "p2_2",
121 "p2_1", "p2_0", "p6_8", "p6_7",
122 "pd_16", "pd_15", "pe_0", "pe_1",
123 "pe_2", "pe_3", "pe_4";
124 function = "emc";
125 slew-rate = <1>;
126 bias-disable;
127 };
128
129 emc_data0_15_cfg {
130 pins = "p1_7", "p1_8", "p1_9", "p1_10",
131 "p1_11", "p1_12", "p1_13", "p1_14",
132 "p5_4", "p5_5", "p5_6", "p5_7",
133 "p5_0", "p5_1", "p5_2", "p5_3";
134 function = "emc";
135 input-enable;
136 input-schmitt-disable;
137 slew-rate = <1>;
138 bias-disable;
139 };
140
141 emc_we_oe_cfg {
142 pins = "p1_6", "p1_3";
143 function = "emc";
144 slew-rate = <1>;
145 bias-disable;
146 };
147
148 emc_cs0_cfg {
149 pins = "p1_5";
150 function = "emc";
151 slew-rate = <1>;
152 bias-disable;
153 };
154
155 emc_sdram_dqm0_1_cfg {
156 pins = "p6_12", "p6_10";
157 function = "emc";
158 slew-rate = <1>;
159 bias-disable;
160 };
161
162 emc_sdram_ras_cas_cfg {
163 pins = "p6_5", "p6_4";
164 function = "emc";
165 slew-rate = <1>;
166 bias-disable;
167 };
168
169 emc_sdram_dycs0_cfg {
170 pins = "p6_9";
171 function = "emc";
172 slew-rate = <1>;
173 bias-disable;
174 };
175
176 emc_sdram_cke_cfg {
177 pins = "p6_11";
178 function = "emc";
179 slew-rate = <1>;
180 bias-disable;
181 };
182
183 emc_sdram_clock_cfg {
184 pins = "clk0";
185 function = "emc";
186 input-enable;
187 input-schmitt-disable;
188 slew-rate = <1>;
189 bias-disable;
190 };
191 };
192
193 enet_rmii_pins: enet-rmii-pins {
194 enet_rmii_rxd_cfg {
195 pins = "p1_15", "p0_0";
196 function = "enet";
197 input-enable;
198 input-schmitt-disable;
199 slew-rate = <1>;
200 bias-disable;
201 };
202
203 enet_rmii_txd_cfg {
204 pins = "p1_18", "p1_20";
205 function = "enet";
206 slew-rate = <1>;
207 bias-disable;
208 };
209
210 enet_rmii_rx_dv_cfg {
211 pins = "p1_16";
212 function = "enet";
213 input-enable;
214 input-schmitt-disable;
215 bias-disable;
216 };
217
218 enet_mdio_cfg {
219 pins = "p1_17";
220 function = "enet";
221 input-enable;
222 input-schmitt-disable;
223 bias-disable;
224 };
225
226 enet_mdc_cfg {
227 pins = "pc_1";
228 function = "enet";
229 slew-rate = <1>;
230 bias-disable;
231 };
232
233 enet_rmii_tx_en_cfg {
234 pins = "p0_1";
235 function = "enet";
236 bias-disable;
237 };
238
239 enet_ref_clk_cfg {
240 pins = "p1_19";
241 function = "enet";
242 slew-rate = <1>;
243 input-enable;
244 input-schmitt-disable;
245 bias-disable;
246 };
247 };
248
249 i2c0_pins: i2c0-pins {
250 i2c0_pins_cfg {
251 pins = "i2c0_scl", "i2c0_sda";
252 function = "i2c0";
253 input-enable;
254 };
255 };
256
257 i2c1_pins: i2c1-pins {
258 i2c1_pins_cfg {
259 pins = "pe_15", "pe_13";
260 function = "i2c1";
261 input-enable;
262 };
263 };
264
265 lcd_pins: lcd-pins {
266 lcd_vd0_23_cfg {
267 pins = "p4_1", "p4_4", "p4_3", "p4_2",
268 "p8_7", "p8_6", "p8_5", "p8_4",
269 "p7_5", "p4_8", "p4_10", "p4_9",
270 "p8_3", "pb_6", "pb_5", "pb_4",
271 "p7_4", "p7_3", "p7_2", "p7_1",
272 "pb_3", "pb_2", "pb_1", "pb_0";
273 function = "lcd";
274 };
275
276 lcd_vsync_en_dclk_lp_pwr_cfg {
277 pins = "p4_5", "p4_6", "p4_7", "p7_6", "p7_7";
278 function = "lcd";
279 };
280 };
281
282 led_pins: led-pins {
283 led_1_6_cfg {
284 pins = "pd_1", "pd_2", "pd_3", "pc_11", "pe_14", "pd_0";
285 function = "gpio";
286 bias-pull-down;
287 };
288 };
289
290 sdmmc_pins: sdmmc-pins {
291 sdmmc_clk_cfg {
292 pins = "pc_0";
293 function = "sdmmc";
294 slew-rate = <1>;
295 bias-pull-down;
296 };
297
298 sdmmc_cmd_dat0_3_cfg {
299 pins = "pc_4", "pc_5", "pc_6", "pc_7", "pc_10";
300 function = "sdmmc";
301 input-enable;
302 input-schmitt-disable;
303 slew-rate = <1>;
304 bias-disable;
305 };
306
307 sdmmc_cd_cfg {
308 pins = "pc_8";
309 function = "sdmmc";
310 input-enable;
311 bias-pull-down;
312 };
313 };
314
315 spifi_pins: spifi-pins {
316 spifi_sck_cfg {
317 pins = "p3_3";
318 function = "spifi";
319 input-enable;
320 input-schmitt-disable;
321 slew-rate = <1>;
322 bias-disable;
323 };
324
325 spifi_mosi_miso_sio2_sio3_cfg {
326 pins = "p3_7", "p3_6", "p3_5", "p3_4";
327 function = "spifi";
328 input-enable;
329 input-schmitt-disable;
330 slew-rate = <1>;
331 bias-disable;
332 };
333
334 spifi_cs_cfg {
335 pins = "p3_8";
336 function = "spifi";
337 bias-disable;
338 };
339 };
340
341 ssp1_pins: ssp1-pins {
342 ssp1_sck_cfg {
343 pins = "pf_4";
344 function = "ssp1";
345 slew-rate = <1>;
346 bias-pull-down;
347 };
348
349 ssp1_miso_cfg {
350 pins = "pf_6";
351 function = "ssp1";
352 input-enable;
353 input-schmitt-disable;
354 slew-rate = <1>;
355 bias-pull-down;
356 };
357
358 ssp1_mosi_cfg {
359 pins = "pf_7";
360 function = "ssp1";
361 slew-rate = <1>;
362 bias-pull-down;
363 };
364
365 ssp1_ssel_cfg {
366 pins = "pf_5";
367 function = "gpio";
368 bias-disable;
369 };
370 };
371
372 uart0_pins: uart0-pins {
373 uart0_rxd_cfg {
374 pins = "pf_11";
375 function = "uart0";
376 input-enable;
377 input-schmitt-disable;
378 bias-disable;
379 };
380
381 uart0_clk_dir_txd_cfg {
382 pins = "pf_8", "pf_9", "pf_10";
383 function = "uart0";
384 bias-pull-down;
385 };
386 };
387
388 uart1_pins: uart1-pins {
389 uart1_rxd_cfg {
390 pins = "pc_14";
391 function = "uart1";
392 bias-disable;
393 input-enable;
394 input-schmitt-disable;
395 };
396
397 uart1_dtr_txd_cfg {
398 pins = "pc_12", "pc_13";
399 function = "uart1";
400 bias-pull-down;
401 };
402 };
403
404 uart2_pins: uart2-pins {
405 uart2_rxd_cfg {
406 pins = "pa_2";
407 function = "uart2";
408 bias-disable;
409 input-enable;
410 input-schmitt-disable;
411 };
412
413 uart2_txd_cfg {
414 pins = "pa_1";
415 function = "uart2";
416 bias-pull-down;
417 };
418 };
419
420 uart3_pins: uart3-pins {
421 uart3_rx_cfg {
422 pins = "p2_4";
423 function = "uart3";
424 bias-disable;
425 input-enable;
426 input-schmitt-disable;
427 };
428
429 uart3_tx_cfg {
430 pins = "p2_3";
431 function = "uart3";
432 bias-pull-down;
433 };
434 };
435
436 usb0_pins: usb0-pins {
437 usb0_pwr_enable_cfg {
438 pins = "p6_3";
439 function = "usb0";
440 };
441
442 usb0_pwr_fault_cfg {
443 pins = "p8_0";
444 function = "usb0";
445 bias-disable;
446 input-enable;
447 };
448 };
449};
450
451&adc1 {
452 status = "okay";
453 vref-supply = <&vcc>;
454};
455
456&can0 {
457 status = "okay";
458 pinctrl-names = "default";
459 pinctrl-0 = <&can0_pins>;
460};
461
462/* Pin conflict with EMC, muxed by JP5 and JP6 */
463&can1 {
464 status = "disabled";
465 pinctrl-names = "default";
466 pinctrl-0 = <&can1_pins>;
467};
468
469&emc {
470 status = "okay";
471 pinctrl-names = "default";
472 pinctrl-0 = <&emc_pins>;
473
474 cs0 {
475 #address-cells = <2>;
476 #size-cells = <1>;
477 ranges;
478
479 mpmc,cs = <0>;
480 mpmc,memory-width = <16>;
481 mpmc,byte-lane-low;
482 mpmc,write-enable-delay = <0>;
483 mpmc,output-enable-delay = <0>;
484 mpmc,read-access-delay = <70>;
485 mpmc,page-mode-read-delay = <70>;
486
487 /* SST/Microchip SST39VF1601 */
488 flash@0,0 {
489 compatible = "cfi-flash";
490 reg = <0 0 0x400000>;
491 bank-width = <2>;
492 };
493 };
494};
495
496&enet_tx_clk {
497 clock-frequency = <50000000>;
498};
499
500&i2c0 {
501 status = "okay";
502 pinctrl-names = "default";
503 pinctrl-0 = <&i2c0_pins>;
504 clock-frequency = <400000>;
505};
506
507&i2c1 {
508 status = "okay";
509 pinctrl-names = "default";
510 pinctrl-0 = <&i2c1_pins>;
511 clock-frequency = <400000>;
512
513 sensor@49 {
514 compatible = "lm75";
515 reg = <0x49>;
516 };
517
518 eeprom@50 {
519 compatible = "atmel,24c512";
520 reg = <0x50>;
521 };
522};
523
524&lcdc {
525 status = "okay";
526 pinctrl-names = "default";
527 pinctrl-0 = <&lcd_pins>;
528
529 max-memory-bandwidth = <92240000>;
530
531 port {
532 lcdc_output: endpoint {
533 remote-endpoint = <&panel_input>;
534 arm,pl11x,tft-r0g0b0-pads = <0 8 16>;
535 };
536 };
537};
538
539&mac {
540 status = "okay";
541 phy-mode = "rmii";
542 pinctrl-names = "default";
543 pinctrl-0 = <&enet_rmii_pins>;
544 phy-handle = <&phy1>;
545
546 mdio0 {
547 #address-cells = <1>;
548 #size-cells = <0>;
549 compatible = "snps,dwmac-mdio";
550
551 phy1: ethernet-phy@1 {
552 reg = <1>;
553 };
554 };
555};
556
557&mmcsd {
558 status = "okay";
559 pinctrl-names = "default";
560 pinctrl-0 = <&sdmmc_pins>;
561 bus-width = <4>;
562 vmmc-supply = <&vmmc>;
563};
564
565/* Pin conflict with SSP0, the latter is routed to J17 pin header */
566&spifi {
567 status = "okay";
568 pinctrl-names = "default";
569 pinctrl-0 = <&spifi_pins>;
570
571 /* Atmel AT25DF321A */
572 flash {
573 compatible = "jedec,spi-nor";
574 spi-max-frequency = <51000000>;
575 spi-cpol;
576 spi-cpha;
577 };
578};
579
580&ssp1 {
581 status = "okay";
582 pinctrl-names = "default";
583 pinctrl-0 = <&ssp1_pins>;
584 num-cs = <1>;
585 cs-gpios = <&gpio LPC_GPIO(7,19) GPIO_ACTIVE_LOW>;
586};
587
588/* Routed to J17 pin header */
589&uart0 {
590 status = "okay";
591 pinctrl-names = "default";
592 pinctrl-0 = <&uart0_pins>;
593};
594
595/* RS485 */
596&uart1 {
597 status = "okay";
598 pinctrl-names = "default";
599 pinctrl-0 = <&uart1_pins>;
600};
601
602/* Routed to J17 pin header */
603&uart2 {
604 status = "okay";
605 pinctrl-names = "default";
606 pinctrl-0 = <&uart2_pins>;
607};
608
609&uart3 {
610 status = "okay";
611 pinctrl-names = "default";
612 pinctrl-0 = <&uart3_pins>;
613};
614
615&usb0 {
616 status = "okay";
617 pinctrl-names = "default";
618 pinctrl-0 = <&usb0_pins>;
619};
diff --git a/arch/arm/boot/dts/ls1021a-moxa-uc-8410a.dts b/arch/arm/boot/dts/ls1021a-moxa-uc-8410a.dts
index 6a83f30029ea..ba1ddd93b8f8 100644
--- a/arch/arm/boot/dts/ls1021a-moxa-uc-8410a.dts
+++ b/arch/arm/boot/dts/ls1021a-moxa-uc-8410a.dts
@@ -18,6 +18,7 @@
18 18
19/ { 19/ {
20 model = "Moxa UC-8410A"; 20 model = "Moxa UC-8410A";
21 compatible = "fsl,ls1021a-moxa-uc-8410a", "fsl,ls1021a";
21 22
22 aliases { 23 aliases {
23 enet0_rgmii_phy = &rgmii_phy0; 24 enet0_rgmii_phy = &rgmii_phy0;
diff --git a/arch/arm/boot/dts/ls1021a-qds.dts b/arch/arm/boot/dts/ls1021a-qds.dts
index 923a25760516..ca60730dda40 100644
--- a/arch/arm/boot/dts/ls1021a-qds.dts
+++ b/arch/arm/boot/dts/ls1021a-qds.dts
@@ -51,6 +51,7 @@
51 51
52/ { 52/ {
53 model = "LS1021A QDS Board"; 53 model = "LS1021A QDS Board";
54 compatible = "fsl,ls1021a-qds", "fsl,ls1021a";
54 55
55 aliases { 56 aliases {
56 enet0_rgmii_phy = &rgmii_phy1; 57 enet0_rgmii_phy = &rgmii_phy1;
diff --git a/arch/arm/boot/dts/ls1021a-twr.dts b/arch/arm/boot/dts/ls1021a-twr.dts
index 8b48c3c7cd21..97e1fb7ea932 100644
--- a/arch/arm/boot/dts/ls1021a-twr.dts
+++ b/arch/arm/boot/dts/ls1021a-twr.dts
@@ -51,6 +51,7 @@
51 51
52/ { 52/ {
53 model = "LS1021A TWR Board"; 53 model = "LS1021A TWR Board";
54 compatible = "fsl,ls1021a-twr", "fsl,ls1021a";
54 55
55 aliases { 56 aliases {
56 enet2_rgmii_phy = &rgmii_phy1; 57 enet2_rgmii_phy = &rgmii_phy1;
diff --git a/arch/arm/boot/dts/ls1021a.dtsi b/arch/arm/boot/dts/ls1021a.dtsi
index ed0941292172..b4f2723ecd86 100644
--- a/arch/arm/boot/dts/ls1021a.dtsi
+++ b/arch/arm/boot/dts/ls1021a.dtsi
@@ -45,11 +45,12 @@
45 * OTHER DEALINGS IN THE SOFTWARE. 45 * OTHER DEALINGS IN THE SOFTWARE.
46 */ 46 */
47 47
48#include "skeleton64.dtsi"
49#include <dt-bindings/interrupt-controller/arm-gic.h> 48#include <dt-bindings/interrupt-controller/arm-gic.h>
50#include <dt-bindings/thermal/thermal.h> 49#include <dt-bindings/thermal/thermal.h>
51 50
52/ { 51/ {
52 #address-cells = <2>;
53 #size-cells = <2>;
53 compatible = "fsl,ls1021a"; 54 compatible = "fsl,ls1021a";
54 interrupt-parent = <&gic>; 55 interrupt-parent = <&gic>;
55 56
@@ -88,6 +89,11 @@
88 }; 89 };
89 }; 90 };
90 91
92 memory {
93 device_type = "memory";
94 reg = <0x0 0x0 0x0 0x0>;
95 };
96
91 sysclk: sysclk { 97 sysclk: sysclk {
92 compatible = "fixed-clock"; 98 compatible = "fixed-clock";
93 #clock-cells = <0>; 99 #clock-cells = <0>;
@@ -125,6 +131,13 @@
125 interrupt-parent = <&gic>; 131 interrupt-parent = <&gic>;
126 ranges; 132 ranges;
127 133
134 ddr: memory-controller@1080000 {
135 compatible = "fsl,qoriq-memory-controller";
136 reg = <0x0 0x1080000 0x0 0x1000>;
137 interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
138 big-endian;
139 };
140
128 gic: interrupt-controller@1400000 { 141 gic: interrupt-controller@1400000 {
129 compatible = "arm,gic-400", "arm,cortex-a7-gic"; 142 compatible = "arm,gic-400", "arm,cortex-a7-gic";
130 #interrupt-cells = <3>; 143 #interrupt-cells = <3>;
@@ -706,6 +719,7 @@
706 fsl,tmr-fiper1 = <999999995>; 719 fsl,tmr-fiper1 = <999999995>;
707 fsl,tmr-fiper2 = <99990>; 720 fsl,tmr-fiper2 = <99990>;
708 fsl,max-adj = <499999999>; 721 fsl,max-adj = <499999999>;
722 fsl,extts-fifo;
709 }; 723 };
710 724
711 enet0: ethernet@2d10000 { 725 enet0: ethernet@2d10000 {
@@ -811,6 +825,7 @@
811 dr_mode = "host"; 825 dr_mode = "host";
812 snps,quirk-frame-length-adjustment = <0x20>; 826 snps,quirk-frame-length-adjustment = <0x20>;
813 snps,dis_rxdet_inp3_quirk; 827 snps,dis_rxdet_inp3_quirk;
828 snps,incr-burst-type-adjustment = <1>, <4>, <8>, <16>;
814 }; 829 };
815 830
816 pcie@3400000 { 831 pcie@3400000 {
@@ -824,6 +839,7 @@
824 #size-cells = <2>; 839 #size-cells = <2>;
825 device_type = "pci"; 840 device_type = "pci";
826 num-lanes = <4>; 841 num-lanes = <4>;
842 num-viewport = <6>;
827 bus-range = <0x0 0xff>; 843 bus-range = <0x0 0xff>;
828 ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000 /* downstream I/O */ 844 ranges = <0x81000000 0x0 0x00000000 0x40 0x00010000 0x0 0x00010000 /* downstream I/O */
829 0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */ 845 0x82000000 0x0 0x40000000 0x40 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
@@ -848,6 +864,7 @@
848 #size-cells = <2>; 864 #size-cells = <2>;
849 device_type = "pci"; 865 device_type = "pci";
850 num-lanes = <4>; 866 num-lanes = <4>;
867 num-viewport = <6>;
851 bus-range = <0x0 0xff>; 868 bus-range = <0x0 0xff>;
852 ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000 /* downstream I/O */ 869 ranges = <0x81000000 0x0 0x00000000 0x48 0x00010000 0x0 0x00010000 /* downstream I/O */
853 0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */ 870 0x82000000 0x0 0x40000000 0x48 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
diff --git a/arch/arm/boot/dts/meson.dtsi b/arch/arm/boot/dts/meson.dtsi
index e4645f612712..6f54a8897574 100644
--- a/arch/arm/boot/dts/meson.dtsi
+++ b/arch/arm/boot/dts/meson.dtsi
@@ -47,9 +47,10 @@
47 47
48#include <dt-bindings/interrupt-controller/irq.h> 48#include <dt-bindings/interrupt-controller/irq.h>
49#include <dt-bindings/interrupt-controller/arm-gic.h> 49#include <dt-bindings/interrupt-controller/arm-gic.h>
50/include/ "skeleton.dtsi"
51 50
52/ { 51/ {
52 #address-cells = <1>;
53 #size-cells = <1>;
53 interrupt-parent = <&gic>; 54 interrupt-parent = <&gic>;
54 55
55 L2: l2-cache-controller@c4200000 { 56 L2: l2-cache-controller@c4200000 {
@@ -72,6 +73,13 @@
72 #size-cells = <1>; 73 #size-cells = <1>;
73 ranges = <0x0 0xc1100000 0x200000>; 74 ranges = <0x0 0xc1100000 0x200000>;
74 75
76 hhi: system-controller@4000 {
77 compatible = "amlogic,meson-hhi-sysctrl",
78 "simple-mfd",
79 "syscon";
80 reg = <0x4000 0x400>;
81 };
82
75 assist: assist@7c00 { 83 assist: assist@7c00 {
76 compatible = "amlogic,meson-mx-assist", "syscon"; 84 compatible = "amlogic,meson-mx-assist", "syscon";
77 reg = <0x7c00 0x200>; 85 reg = <0x7c00 0x200>;
@@ -274,7 +282,7 @@
274 compatible = "amlogic,meson6-dwmac", "snps,dwmac"; 282 compatible = "amlogic,meson6-dwmac", "snps,dwmac";
275 reg = <0xc9410000 0x10000 283 reg = <0xc9410000 0x10000
276 0xc1108108 0x4>; 284 0xc1108108 0x4>;
277 interrupts = <GIC_SPI 8 IRQ_TYPE_EDGE_RISING>; 285 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
278 interrupt-names = "macirq"; 286 interrupt-names = "macirq";
279 status = "disabled"; 287 status = "disabled";
280 }; 288 };
diff --git a/arch/arm/boot/dts/meson6-atv1200.dts b/arch/arm/boot/dts/meson6-atv1200.dts
index fc48cff71ddf..997e69c5963e 100644
--- a/arch/arm/boot/dts/meson6-atv1200.dts
+++ b/arch/arm/boot/dts/meson6-atv1200.dts
@@ -61,6 +61,7 @@
61 }; 61 };
62 62
63 memory { 63 memory {
64 device_type = "memory";
64 reg = <0x40000000 0x80000000>; 65 reg = <0x40000000 0x80000000>;
65 }; 66 };
66}; 67};
diff --git a/arch/arm/boot/dts/meson6.dtsi b/arch/arm/boot/dts/meson6.dtsi
index ca978ab952cd..65585255910a 100644
--- a/arch/arm/boot/dts/meson6.dtsi
+++ b/arch/arm/boot/dts/meson6.dtsi
@@ -70,6 +70,14 @@
70 }; 70 };
71 }; 71 };
72 72
73 apb2: bus@d0000000 {
74 compatible = "simple-bus";
75 reg = <0xd0000000 0x40000>;
76 #address-cells = <1>;
77 #size-cells = <1>;
78 ranges = <0x0 0xd0000000 0x40000>;
79 };
80
73 xtal: xtal-clk { 81 xtal: xtal-clk {
74 compatible = "fixed-clock"; 82 compatible = "fixed-clock";
75 clock-frequency = <24000000>; 83 clock-frequency = <24000000>;
diff --git a/arch/arm/boot/dts/meson8-minix-neo-x8.dts b/arch/arm/boot/dts/meson8-minix-neo-x8.dts
index 55fb090a40ef..8686abd5de7f 100644
--- a/arch/arm/boot/dts/meson8-minix-neo-x8.dts
+++ b/arch/arm/boot/dts/meson8-minix-neo-x8.dts
@@ -57,6 +57,7 @@
57 }; 57 };
58 58
59 memory { 59 memory {
60 device_type = "memory";
60 reg = <0x40000000 0x80000000>; 61 reg = <0x40000000 0x80000000>;
61 }; 62 };
62 63
diff --git a/arch/arm/boot/dts/meson8.dtsi b/arch/arm/boot/dts/meson8.dtsi
index e5cd325d7ea8..a9781243453e 100644
--- a/arch/arm/boot/dts/meson8.dtsi
+++ b/arch/arm/boot/dts/meson8.dtsi
@@ -166,6 +166,32 @@
166 }; 166 };
167 }; 167 };
168 168
169 gpu_opp_table: gpu-opp-table {
170 compatible = "operating-points-v2";
171
172 opp-182150000 {
173 opp-hz = /bits/ 64 <182150000>;
174 opp-microvolt = <1150000>;
175 };
176 opp-318750000 {
177 opp-hz = /bits/ 64 <318750000>;
178 opp-microvolt = <1150000>;
179 };
180 opp-425000000 {
181 opp-hz = /bits/ 64 <425000000>;
182 opp-microvolt = <1150000>;
183 };
184 opp-510000000 {
185 opp-hz = /bits/ 64 <510000000>;
186 opp-microvolt = <1150000>;
187 };
188 opp-637500000 {
189 opp-hz = /bits/ 64 <637500000>;
190 opp-microvolt = <1150000>;
191 turbo-mode;
192 };
193 };
194
169 pmu { 195 pmu {
170 compatible = "arm,cortex-a9-pmu"; 196 compatible = "arm,cortex-a9-pmu";
171 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>, 197 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
@@ -201,6 +227,46 @@
201 no-map; 227 no-map;
202 }; 228 };
203 }; 229 };
230
231 apb: bus@d0000000 {
232 compatible = "simple-bus";
233 reg = <0xd0000000 0x200000>;
234 #address-cells = <1>;
235 #size-cells = <1>;
236 ranges = <0x0 0xd0000000 0x200000>;
237
238 mali: gpu@c0000 {
239 compatible = "amlogic,meson8-mali", "arm,mali-450";
240 reg = <0xc0000 0x40000>;
241 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
242 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
243 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
244 <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
245 <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
246 <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
247 <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
248 <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
249 <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
250 <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>,
251 <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>,
252 <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,
253 <GIC_SPI 172 IRQ_TYPE_LEVEL_HIGH>,
254 <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>,
255 <GIC_SPI 174 IRQ_TYPE_LEVEL_HIGH>,
256 <GIC_SPI 175 IRQ_TYPE_LEVEL_HIGH>,
257 <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>,
258 <GIC_SPI 177 IRQ_TYPE_LEVEL_HIGH>;
259 interrupt-names = "gp", "gpmmu", "pp", "pmu",
260 "pp0", "ppmmu0", "pp1", "ppmmu1",
261 "pp2", "ppmmu2", "pp4", "ppmmu4",
262 "pp5", "ppmmu5", "pp6", "ppmmu6";
263 resets = <&reset RESET_MALI>;
264 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
265 clock-names = "bus", "core";
266 operating-points-v2 = <&gpu_opp_table>;
267 switch-delay = <0xffff>;
268 };
269 };
204}; /* end of / */ 270}; /* end of / */
205 271
206&aobus { 272&aobus {
@@ -261,13 +327,6 @@
261}; 327};
262 328
263&cbus { 329&cbus {
264 clkc: clock-controller@4000 {
265 #clock-cells = <1>;
266 #reset-cells = <1>;
267 compatible = "amlogic,meson8-clkc";
268 reg = <0x8000 0x4>, <0x4000 0x400>;
269 };
270
271 reset: reset-controller@4404 { 330 reset: reset-controller@4404 {
272 compatible = "amlogic,meson8b-reset"; 331 compatible = "amlogic,meson8b-reset";
273 reg = <0x4404 0x9c>; 332 reg = <0x4404 0x9c>;
@@ -390,6 +449,11 @@
390 compatible = "amlogic,meson8-efuse"; 449 compatible = "amlogic,meson8-efuse";
391 clocks = <&clkc CLKID_EFUSE>; 450 clocks = <&clkc CLKID_EFUSE>;
392 clock-names = "core"; 451 clock-names = "core";
452
453 temperature_calib: calib@1f4 {
454 /* only the upper two bytes are relevant */
455 reg = <0x1f4 0x4>;
456 };
393}; 457};
394 458
395&ethmac { 459&ethmac {
@@ -402,6 +466,14 @@
402 status = "okay"; 466 status = "okay";
403}; 467};
404 468
469&hhi {
470 clkc: clock-controller {
471 compatible = "amlogic,meson8-clkc";
472 #clock-cells = <1>;
473 #reset-cells = <1>;
474 };
475};
476
405&hwrng { 477&hwrng {
406 compatible = "amlogic,meson8-rng", "amlogic,meson-rng"; 478 compatible = "amlogic,meson8-rng", "amlogic,meson-rng";
407 clocks = <&clkc CLKID_RNG0>; 479 clocks = <&clkc CLKID_RNG0>;
@@ -469,6 +541,9 @@
469 clocks = <&clkc CLKID_XTAL>, 541 clocks = <&clkc CLKID_XTAL>,
470 <&clkc CLKID_SAR_ADC>; 542 <&clkc CLKID_SAR_ADC>;
471 clock-names = "clkin", "core"; 543 clock-names = "clkin", "core";
544 amlogic,hhi-sysctrl = <&hhi>;
545 nvmem-cells = <&temperature_calib>;
546 nvmem-cell-names = "temperature_calib";
472}; 547};
473 548
474&sdio { 549&sdio {
diff --git a/arch/arm/boot/dts/meson8b-ec100.dts b/arch/arm/boot/dts/meson8b-ec100.dts
index 0872f6e3abf5..3ca9638fad09 100644
--- a/arch/arm/boot/dts/meson8b-ec100.dts
+++ b/arch/arm/boot/dts/meson8b-ec100.dts
@@ -23,6 +23,7 @@
23 }; 23 };
24 24
25 memory { 25 memory {
26 device_type = "memory";
26 reg = <0x40000000 0x40000000>; 27 reg = <0x40000000 0x40000000>;
27 }; 28 };
28 29
@@ -64,6 +65,11 @@
64 timeout-ms = <20000>; 65 timeout-ms = <20000>;
65 }; 66 };
66 67
68 iio-hwmon {
69 compatible = "iio-hwmon";
70 io-channels = <&saradc 8>;
71 };
72
67 leds { 73 leds {
68 compatible = "gpio-leds"; 74 compatible = "gpio-leds";
69 75
@@ -83,6 +89,9 @@
83 }; 89 };
84 90
85 usb_vbus: regulator-usb-vbus { 91 usb_vbus: regulator-usb-vbus {
92 /*
93 * Silergy SY6288CCAC-GP 2A Power Distribution Switch.
94 */
86 compatible = "regulator-fixed"; 95 compatible = "regulator-fixed";
87 96
88 regulator-name = "USB_VBUS"; 97 regulator-name = "USB_VBUS";
@@ -90,11 +99,20 @@
90 regulator-min-microvolt = <5000000>; 99 regulator-min-microvolt = <5000000>;
91 regulator-max-microvolt = <5000000>; 100 regulator-max-microvolt = <5000000>;
92 101
102 vin-supply = <&vcc_5v>;
103
104 /*
105 * signal name from the schematics: USB_PWR_EN
106 */
93 gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>; 107 gpio = <&gpio_ao GPIOAO_5 GPIO_ACTIVE_HIGH>;
94 enable-active-high; 108 enable-active-high;
95 }; 109 };
96 110
97 vcc_5v: regulator-vcc5v { 111 vcc_5v: regulator-vcc5v {
112 /*
113 * supplied by the main power input which called PWR_5V_STB
114 * in the schematics
115 */
98 compatible = "regulator-fixed"; 116 compatible = "regulator-fixed";
99 117
100 regulator-name = "VCC5V"; 118 regulator-name = "VCC5V";
@@ -102,6 +120,9 @@
102 regulator-min-microvolt = <5000000>; 120 regulator-min-microvolt = <5000000>;
103 regulator-max-microvolt = <5000000>; 121 regulator-max-microvolt = <5000000>;
104 122
123 /*
124 * signal name from the schematics: 3V3_5V_EN
125 */
105 gpio = <&gpio GPIODV_29 GPIO_ACTIVE_LOW>; 126 gpio = <&gpio GPIODV_29 GPIO_ACTIVE_LOW>;
106 127
107 regulator-boot-on; 128 regulator-boot-on;
@@ -109,12 +130,18 @@
109 }; 130 };
110 131
111 vcck: regulator-vcck { 132 vcck: regulator-vcck {
133 /*
134 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz
135 * Synchronous Step Down Regulator.
136 */
112 compatible = "pwm-regulator"; 137 compatible = "pwm-regulator";
113 138
114 regulator-name = "VCCK"; 139 regulator-name = "VCCK";
115 regulator-min-microvolt = <860000>; 140 regulator-min-microvolt = <860000>;
116 regulator-max-microvolt = <1140000>; 141 regulator-max-microvolt = <1140000>;
117 142
143 vin-supply = <&vcc_5v>;
144
118 pwms = <&pwm_cd 0 1148 0>; 145 pwms = <&pwm_cd 0 1148 0>;
119 pwm-dutycycle-range = <100 0>; 146 pwm-dutycycle-range = <100 0>;
120 147
@@ -123,19 +150,66 @@
123 }; 150 };
124 151
125 vcc_1v8: regulator-vcc1v8 { 152 vcc_1v8: regulator-vcc1v8 {
153 /*
154 * ABLIC S-1339D18-M5001-GP
155 */
126 compatible = "regulator-fixed"; 156 compatible = "regulator-fixed";
127 157
128 regulator-name = "VCC1V8"; 158 regulator-name = "VCC1V8";
129 regulator-min-microvolt = <1800000>; 159 regulator-min-microvolt = <1800000>;
130 regulator-max-microvolt = <1800000>; 160 regulator-max-microvolt = <1800000>;
161
162 vin-supply = <&vcc_3v3>;
131 }; 163 };
132 164
133 vcc_3v3: regulator-vcc3v3 { 165 vcc_3v3: regulator-vcc3v3 {
166 /*
167 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz
168 * Synchronous Step Down Regulator. Also called
169 * VDDIO_AO3.3V in the schematics.
170 */
134 compatible = "regulator-fixed"; 171 compatible = "regulator-fixed";
135 172
136 regulator-name = "VCC3V3"; 173 regulator-name = "VCC3V3";
137 regulator-min-microvolt = <3300000>; 174 regulator-min-microvolt = <3300000>;
138 regulator-max-microvolt = <3300000>; 175 regulator-max-microvolt = <3300000>;
176
177 vin-supply = <&vcc_5v>;
178 };
179
180 vcc_ddr3: regulator-vcc-ddr3 {
181 /*
182 * Silergy SY8089AAC-GP 2A continuous, 3A peak, 1MHz
183 * Synchronous Step Down Regulator. Also called
184 * DDR3_1.5V in the schematics.
185 */
186 compatible = "regulator-fixed";
187
188 regulator-name = "VCC_DDR3_1V5";
189 regulator-min-microvolt = <1500000>;
190 regulator-max-microvolt = <1500000>;
191
192 vin-supply = <&vcc_5v>;
193
194 regulator-boot-on;
195 regulator-always-on;
196 };
197
198 vcc_rtc: regulator-vcc-rtc {
199 /*
200 * Global Mixed-mode Technology Inc. G918T12U-GP
201 */
202 compatible = "regulator-fixed";
203
204 regulator-name = "VCC_RTC";
205 regulator-min-microvolt = <900000>;
206 regulator-max-microvolt = <900000>;
207
208 /*
209 * When the board is powered then the input is VCC3V3,
210 * otherwise power is taken from the coin cell battery.
211 */
212 vin-supply = <&vcc_3v3>;
139 }; 213 };
140}; 214};
141 215
@@ -164,6 +238,10 @@
164 eth_phy0: ethernet-phy@0 { 238 eth_phy0: ethernet-phy@0 {
165 /* IC Plus IP101A/G (0x02430c54) */ 239 /* IC Plus IP101A/G (0x02430c54) */
166 reg = <0>; 240 reg = <0>;
241 icplus,select-interrupt;
242 interrupt-parent = <&gpio_intc>;
243 /* GPIOH_3 */
244 interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
167 }; 245 };
168 }; 246 };
169}; 247};
@@ -205,13 +283,62 @@
205 cap-sd-highspeed; 283 cap-sd-highspeed;
206 disable-wp; 284 disable-wp;
207 285
208 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 286 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
209 cd-inverted;
210 287
211 vmmc-supply = <&vcc_3v3>; 288 vmmc-supply = <&vcc_3v3>;
212 }; 289 };
213}; 290};
214 291
292&gpio_ao {
293 gpio-line-names = "Linux_TX", "Linux_RX",
294 "SLP_S5_N", "USB2_OC_FLAG#",
295 "HUB_RST", "USB_PWR_EN",
296 "I2S_IN", "SLP_S1_N",
297 "TCK", "TMS", "TDI", "TDO",
298 "HDMI_CEC", "5640_IRQ",
299 "MUTE", "S805_TEST#";
300};
301
302&gpio {
303 gpio-line-names = /* Bank GPIOX */
304 "WIFI_SD_D0", "WIFI_SD_D1", "WIFI_SD_D2",
305 "WIFI_SD_D3", "BTPCM_DOUT", "BTPCM_DIN",
306 "BTPCM_SYNC", "BTPCM_CLK", "WIFI_SD_CLK",
307 "WIFI_SD_CMD", "WIFI_32K", "WIFI_PWREN",
308 "UART_B_TX", "UART_B_RX", "UART_B_CTS_N",
309 "UART_B_RTS_N", "BT_EN", "WIFI_WAKE_HOST",
310 /* Bank GPIOY */
311 "", "", "", "", "", "", "", "", "", "",
312 "", "",
313 /* Bank GPIODV */
314 "VCCK_PWM_C", "I2C_SDA_A", "I2C_SCL_A",
315 "I2C_SDA_B", "I2C_SCL_B", "VDDEE_PWM_D",
316 "VDDEE_PWM 3V3_5V_EN",
317 /* Bank GPIOH */
318 "HDMI_HPD", "HDMI_I2C_SDA", "HDMI_I2C_SCL",
319 "RMII_IRQ", "RMII_RST#", "RMII_TXD1",
320 "RMII_TXD0", "AV_select_1", "AV_select_2",
321 "MCU_Control_S",
322 /* Bank CARD */
323 "SD_D1_B", "SD_D0_B", "SD_CLK_8726MX",
324 "SD_CMD_8726MX", "SD_D3_B", "SD_D2_B",
325 "CARD_EN_DET (CARD_DET)",
326 /* Bank BOOT */
327 "NAND_D0 (EMMC)", "NAND_D1 (EMMC)",
328 "NAND_D2 (EMMC)", "NAND_D3 (EMMC)",
329 "NAND_D4 (EMMC)", "NAND_D5 (EMMC)",
330 "NAND_D6 (EMMC)", "NAND_D7 (EMMC)",
331 "NAND_CS1 (EMMC)", "NAND_CS2 iNAND_RS1 (EMMC)",
332 "NAND_nR/B iNAND_CMD (EMMC)", "NAND_ALE (EMMC)",
333 "NAND_CLE (EMMC)", "nRE_S1 NAND_nRE (EMMC)",
334 "nWE_S1 NAND_nWE (EMMC)", "", "", "SPI_CS",
335 /* Bank DIF */
336 "RMII_RXD1", "RMII_RXD0", "RMII_CRS_DV",
337 "RMII_50M_IN", "GPIODIF_4", "GPIODIF_5",
338 "RMII_TXEN", "CPUETH_25MOUT", "RMII_MDC",
339 "RMII_MDIO";
340};
341
215&pwm_cd { 342&pwm_cd {
216 status = "okay"; 343 status = "okay";
217 pinctrl-0 = <&pwm_c1_pins>; 344 pinctrl-0 = <&pwm_c1_pins>;
diff --git a/arch/arm/boot/dts/meson8b-mxq.dts b/arch/arm/boot/dts/meson8b-mxq.dts
index 5c9b76af8d42..08ddd7fb0bf8 100644
--- a/arch/arm/boot/dts/meson8b-mxq.dts
+++ b/arch/arm/boot/dts/meson8b-mxq.dts
@@ -60,6 +60,7 @@
60 }; 60 };
61 61
62 memory { 62 memory {
63 device_type = "memory";
63 reg = <0x40000000 0x40000000>; 64 reg = <0x40000000 0x40000000>;
64 }; 65 };
65}; 66};
diff --git a/arch/arm/boot/dts/meson8b-odroidc1.dts b/arch/arm/boot/dts/meson8b-odroidc1.dts
index 58669abda259..3b0e0f8fbc23 100644
--- a/arch/arm/boot/dts/meson8b-odroidc1.dts
+++ b/arch/arm/boot/dts/meson8b-odroidc1.dts
@@ -62,6 +62,7 @@
62 }; 62 };
63 63
64 memory { 64 memory {
65 device_type = "memory";
65 reg = <0x40000000 0x40000000>; 66 reg = <0x40000000 0x40000000>;
66 }; 67 };
67 68
@@ -118,6 +119,11 @@
118 1800000 1>; 119 1800000 1>;
119 }; 120 };
120 121
122 iio-hwmon {
123 compatible = "iio-hwmon";
124 io-channels = <&saradc 8>;
125 };
126
121 vcc_1v8: regulator-vcc-1v8 { 127 vcc_1v8: regulator-vcc-1v8 {
122 /* 128 /*
123 * RICHTEK RT9179 configured for a fixed output voltage of 129 * RICHTEK RT9179 configured for a fixed output voltage of
@@ -221,7 +227,6 @@
221 /* Realtek RTL8211F (0x001cc916) */ 227 /* Realtek RTL8211F (0x001cc916) */
222 eth_phy: ethernet-phy@0 { 228 eth_phy: ethernet-phy@0 {
223 reg = <0>; 229 reg = <0>;
224 eee-broken-1000t;
225 interrupt-parent = <&gpio_intc>; 230 interrupt-parent = <&gpio_intc>;
226 /* GPIOH_3 */ 231 /* GPIOH_3 */
227 interrupts = <17 IRQ_TYPE_LEVEL_LOW>; 232 interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
@@ -273,8 +278,7 @@
273 cap-sd-highspeed; 278 cap-sd-highspeed;
274 disable-wp; 279 disable-wp;
275 280
276 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 281 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
277 cd-inverted;
278 282
279 vmmc-supply = <&tflash_vdd>; 283 vmmc-supply = <&tflash_vdd>;
280 vqmmc-supply = <&tf_io>; 284 vqmmc-supply = <&tf_io>;
diff --git a/arch/arm/boot/dts/meson8b.dtsi b/arch/arm/boot/dts/meson8b.dtsi
index 22d775460767..fe84a8c3ce81 100644
--- a/arch/arm/boot/dts/meson8b.dtsi
+++ b/arch/arm/boot/dts/meson8b.dtsi
@@ -158,6 +158,32 @@
158 }; 158 };
159 }; 159 };
160 160
161 gpu_opp_table: gpu-opp-table {
162 compatible = "operating-points-v2";
163
164 opp-255000000 {
165 opp-hz = /bits/ 64 <255000000>;
166 opp-microvolt = <1150000>;
167 };
168 opp-364300000 {
169 opp-hz = /bits/ 64 <364300000>;
170 opp-microvolt = <1150000>;
171 };
172 opp-425000000 {
173 opp-hz = /bits/ 64 <425000000>;
174 opp-microvolt = <1150000>;
175 };
176 opp-510000000 {
177 opp-hz = /bits/ 64 <510000000>;
178 opp-microvolt = <1150000>;
179 };
180 opp-637500000 {
181 opp-hz = /bits/ 64 <637500000>;
182 opp-microvolt = <1150000>;
183 turbo-mode;
184 };
185 };
186
161 pmu { 187 pmu {
162 compatible = "arm,cortex-a5-pmu"; 188 compatible = "arm,cortex-a5-pmu";
163 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>, 189 interrupts = <GIC_SPI 137 IRQ_TYPE_LEVEL_HIGH>,
@@ -178,6 +204,34 @@
178 no-map; 204 no-map;
179 }; 205 };
180 }; 206 };
207
208 apb: bus@d0000000 {
209 compatible = "simple-bus";
210 reg = <0xd0000000 0x200000>;
211 #address-cells = <1>;
212 #size-cells = <1>;
213 ranges = <0x0 0xd0000000 0x200000>;
214
215 mali: gpu@c0000 {
216 compatible = "amlogic,meson8b-mali", "arm,mali-450";
217 reg = <0xc0000 0x40000>;
218 interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
219 <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
220 <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
221 <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
222 <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
223 <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
224 <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
225 <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>;
226 interrupt-names = "gp", "gpmmu", "pp", "pmu",
227 "pp0", "ppmmu0", "pp1", "ppmmu1";
228 resets = <&reset RESET_MALI>;
229 clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
230 clock-names = "bus", "core";
231 operating-points-v2 = <&gpu_opp_table>;
232 switch-delay = <0xffff>;
233 };
234 };
181}; /* end of / */ 235}; /* end of / */
182 236
183&aobus { 237&aobus {
@@ -222,13 +276,6 @@
222}; 276};
223 277
224&cbus { 278&cbus {
225 clkc: clock-controller@4000 {
226 #clock-cells = <1>;
227 #reset-cells = <1>;
228 compatible = "amlogic,meson8b-clkc";
229 reg = <0x8000 0x4>, <0x4000 0x400>;
230 };
231
232 reset: reset-controller@4404 { 279 reset: reset-controller@4404 {
233 compatible = "amlogic,meson8b-reset"; 280 compatible = "amlogic,meson8b-reset";
234 reg = <0x4404 0x9c>; 281 reg = <0x4404 0x9c>;
@@ -270,9 +317,7 @@
270 groups = "eth_tx_clk", 317 groups = "eth_tx_clk",
271 "eth_tx_en", 318 "eth_tx_en",
272 "eth_txd1_0", 319 "eth_txd1_0",
273 "eth_txd1_1",
274 "eth_txd0_0", 320 "eth_txd0_0",
275 "eth_txd0_1",
276 "eth_rx_clk", 321 "eth_rx_clk",
277 "eth_rx_dv", 322 "eth_rx_dv",
278 "eth_rxd1", 323 "eth_rxd1",
@@ -281,7 +326,9 @@
281 "eth_mdc", 326 "eth_mdc",
282 "eth_ref_clk", 327 "eth_ref_clk",
283 "eth_txd2", 328 "eth_txd2",
284 "eth_txd3"; 329 "eth_txd3",
330 "eth_rxd3",
331 "eth_rxd2";
285 function = "ethernet"; 332 function = "ethernet";
286 bias-disable; 333 bias-disable;
287 }; 334 };
@@ -360,6 +407,11 @@
360 compatible = "amlogic,meson8b-efuse"; 407 compatible = "amlogic,meson8b-efuse";
361 clocks = <&clkc CLKID_EFUSE>; 408 clocks = <&clkc CLKID_EFUSE>;
362 clock-names = "core"; 409 clock-names = "core";
410
411 temperature_calib: calib@1f4 {
412 /* only the upper two bytes are relevant */
413 reg = <0x1f4 0x4>;
414 };
363}; 415};
364 416
365&ethmac { 417&ethmac {
@@ -383,6 +435,14 @@
383 status = "okay"; 435 status = "okay";
384}; 436};
385 437
438&hhi {
439 clkc: clock-controller {
440 compatible = "amlogic,meson8-clkc";
441 #clock-cells = <1>;
442 #reset-cells = <1>;
443 };
444};
445
386&hwrng { 446&hwrng {
387 compatible = "amlogic,meson8b-rng", "amlogic,meson-rng"; 447 compatible = "amlogic,meson8b-rng", "amlogic,meson-rng";
388 clocks = <&clkc CLKID_RNG0>; 448 clocks = <&clkc CLKID_RNG0>;
@@ -450,6 +510,9 @@
450 clocks = <&clkc CLKID_XTAL>, 510 clocks = <&clkc CLKID_XTAL>,
451 <&clkc CLKID_SAR_ADC>; 511 <&clkc CLKID_SAR_ADC>;
452 clock-names = "clkin", "core"; 512 clock-names = "clkin", "core";
513 amlogic,hhi-sysctrl = <&hhi>;
514 nvmem-cells = <&temperature_calib>;
515 nvmem-cell-names = "temperature_calib";
453}; 516};
454 517
455&sdio { 518&sdio {
diff --git a/arch/arm/boot/dts/meson8m2-mxiii-plus.dts b/arch/arm/boot/dts/meson8m2-mxiii-plus.dts
index f5853610b20b..29d830ae4bf4 100644
--- a/arch/arm/boot/dts/meson8m2-mxiii-plus.dts
+++ b/arch/arm/boot/dts/meson8m2-mxiii-plus.dts
@@ -28,6 +28,7 @@
28 }; 28 };
29 29
30 memory { 30 memory {
31 device_type = "memory";
31 reg = <0x40000000 0x80000000>; 32 reg = <0x40000000 0x80000000>;
32 }; 33 };
33 34
@@ -44,6 +45,11 @@
44 }; 45 };
45 }; 46 };
46 47
48 iio-hwmon {
49 compatible = "iio-hwmon";
50 io-channels = <&saradc 8>;
51 };
52
47 vcc_3v3: regulator-vcc3v3 { 53 vcc_3v3: regulator-vcc3v3 {
48 compatible = "regulator-fixed"; 54 compatible = "regulator-fixed";
49 regulator-name = "VCC3V3"; 55 regulator-name = "VCC3V3";
@@ -206,8 +212,7 @@
206 cap-sd-highspeed; 212 cap-sd-highspeed;
207 disable-wp; 213 disable-wp;
208 214
209 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_HIGH>; 215 cd-gpios = <&gpio CARD_6 GPIO_ACTIVE_LOW>;
210 cd-inverted;
211 216
212 vmmc-supply = <&vcc_3v3>; 217 vmmc-supply = <&vcc_3v3>;
213 }; 218 };
diff --git a/arch/arm/boot/dts/meson8m2.dtsi b/arch/arm/boot/dts/meson8m2.dtsi
index d1a28c2adac5..bb87b251e16d 100644
--- a/arch/arm/boot/dts/meson8m2.dtsi
+++ b/arch/arm/boot/dts/meson8m2.dtsi
@@ -50,6 +50,10 @@
50 }; 50 };
51}; 51};
52 52
53&saradc {
54 compatible = "amlogic,meson8m2-saradc", "amlogic,meson-saradc";
55};
56
53&wdt { 57&wdt {
54 compatible = "amlogic,meson8m2-wdt", "amlogic,meson8b-wdt"; 58 compatible = "amlogic,meson8m2-wdt", "amlogic,meson8b-wdt";
55}; 59};
diff --git a/arch/arm/boot/dts/milbeaut-m10v-evb.dts b/arch/arm/boot/dts/milbeaut-m10v-evb.dts
new file mode 100644
index 000000000000..614f60c6b0a2
--- /dev/null
+++ b/arch/arm/boot/dts/milbeaut-m10v-evb.dts
@@ -0,0 +1,32 @@
1// SPDX-License-Identifier: GPL-2.0
2/* Socionext Milbeaut M10V Evaluation Board */
3/dts-v1/;
4#include "milbeaut-m10v.dtsi"
5
6/ {
7 model = "Socionext M10V EVB";
8 compatible = "socionext,milbeaut-m10v-evb", "socionext,sc2000a";
9
10 aliases {
11 serial0 = &uart1;
12 };
13
14 chosen {
15 bootargs = "rootwait earlycon";
16 stdout-path = "serial0:115200n8";
17 };
18
19 clocks {
20 uclk40xi: uclk40xi {
21 compatible = "fixed-clock";
22 #clock-cells = <0>;
23 clock-frequency = <40000000>;
24 };
25 };
26
27 memory@40000000 {
28 device_type = "memory";
29 reg = <0x40000000 0x80000000>;
30 };
31
32};
diff --git a/arch/arm/boot/dts/milbeaut-m10v.dtsi b/arch/arm/boot/dts/milbeaut-m10v.dtsi
new file mode 100644
index 000000000000..aa7c6caeb750
--- /dev/null
+++ b/arch/arm/boot/dts/milbeaut-m10v.dtsi
@@ -0,0 +1,95 @@
1// SPDX-License-Identifier: GPL-2.0
2#include <dt-bindings/interrupt-controller/irq.h>
3#include <dt-bindings/input/input.h>
4#include <dt-bindings/gpio/gpio.h>
5#include <dt-bindings/interrupt-controller/arm-gic.h>
6
7/ {
8 compatible = "socionext,sc2000a";
9 interrupt-parent = <&gic>;
10 #address-cells = <1>;
11 #size-cells = <1>;
12
13 cpus {
14 #address-cells = <1>;
15 #size-cells = <0>;
16 enable-method = "socionext,milbeaut-m10v-smp";
17 cpu@f00 {
18 device_type = "cpu";
19 compatible = "arm,cortex-a7";
20 reg = <0xf00>;
21 };
22 cpu@f01 {
23 device_type = "cpu";
24 compatible = "arm,cortex-a7";
25 reg = <0xf01>;
26 };
27 cpu@f02 {
28 device_type = "cpu";
29 compatible = "arm,cortex-a7";
30 reg = <0xf02>;
31 };
32 cpu@f03 {
33 device_type = "cpu";
34 compatible = "arm,cortex-a7";
35 reg = <0xf03>;
36 };
37 };
38
39 timer { /* The Generic Timer */
40 compatible = "arm,armv7-timer";
41 interrupts = <GIC_PPI 13
42 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
43 <GIC_PPI 14
44 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
45 <GIC_PPI 11
46 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
47 <GIC_PPI 10
48 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
49 clock-frequency = <40000000>;
50 always-on;
51 };
52
53 soc {
54 compatible = "simple-bus";
55 #address-cells = <1>;
56 #size-cells = <1>;
57 ranges;
58 interrupt-parent = <&gic>;
59
60 gic: interrupt-controller@1d000000 {
61 compatible = "arm,cortex-a7-gic";
62 interrupt-controller;
63 #interrupt-cells = <3>;
64 reg = <0x1d001000 0x1000>,
65 <0x1d002000 0x1000>; /* CPU I/f base and size */
66 };
67
68 timer@1e000050 { /* 32-bit Reload Timers */
69 compatible = "socionext,milbeaut-timer";
70 reg = <0x1e000050 0x20>;
71 interrupts = <0 91 4>;
72 };
73
74 uart1: serial@1e700010 { /* PE4, PE5 */
75 /* Enable this as ttyUSI0 */
76 compatible = "socionext,milbeaut-usio-uart";
77 reg = <0x1e700010 0x10>;
78 interrupts = <0 141 0x4>, <0 149 0x4>;
79 interrupt-names = "rx", "tx";
80 };
81
82 };
83
84 sram@0 {
85 compatible = "mmio-sram";
86 reg = <0x0 0x10000>;
87 #address-cells = <1>;
88 #size-cells = <1>;
89 ranges = <0 0x0 0x10000>;
90 smp-sram@f100 {
91 compatible = "socionext,milbeaut-smp-sram";
92 reg = <0xf100 0x20>;
93 };
94 };
95};
diff --git a/arch/arm/boot/dts/mmp2-brownstone.dts b/arch/arm/boot/dts/mmp2-brownstone.dts
index 350208c5e1ed..3da038ba5733 100644
--- a/arch/arm/boot/dts/mmp2-brownstone.dts
+++ b/arch/arm/boot/dts/mmp2-brownstone.dts
@@ -19,6 +19,7 @@
19 }; 19 };
20 20
21 memory { 21 memory {
22 device_type = "memory";
22 reg = <0x00000000 0x08000000>; 23 reg = <0x00000000 0x08000000>;
23 }; 24 };
24 25
diff --git a/arch/arm/boot/dts/mmp2.dtsi b/arch/arm/boot/dts/mmp2.dtsi
index ee03e0846740..f02fb97f515c 100644
--- a/arch/arm/boot/dts/mmp2.dtsi
+++ b/arch/arm/boot/dts/mmp2.dtsi
@@ -7,10 +7,12 @@
7 * publishhed by the Free Software Foundation. 7 * publishhed by the Free Software Foundation.
8 */ 8 */
9 9
10#include "skeleton.dtsi"
11#include <dt-bindings/clock/marvell,mmp2.h> 10#include <dt-bindings/clock/marvell,mmp2.h>
12 11
13/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15
14 aliases { 16 aliases {
15 serial0 = &uart1; 17 serial0 = &uart1;
16 serial1 = &uart2; 18 serial1 = &uart2;
diff --git a/arch/arm/boot/dts/motorola-cpcap-mapphone.dtsi b/arch/arm/boot/dts/motorola-cpcap-mapphone.dtsi
index ddc7a7bb33c0..f57acf8f66b9 100644
--- a/arch/arm/boot/dts/motorola-cpcap-mapphone.dtsi
+++ b/arch/arm/boot/dts/motorola-cpcap-mapphone.dtsi
@@ -105,7 +105,7 @@
105 interrupts-extended = < 105 interrupts-extended = <
106 &cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0 106 &cpcap 15 0 &cpcap 14 0 &cpcap 28 0 &cpcap 19 0
107 &cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0 107 &cpcap 18 0 &cpcap 17 0 &cpcap 16 0 &cpcap 49 0
108 &cpcap 48 1 108 &cpcap 48 0
109 >; 109 >;
110 interrupt-names = 110 interrupt-names =
111 "id_ground", "id_float", "se0conn", "vbusvld", 111 "id_ground", "id_float", "se0conn", "vbusvld",
diff --git a/arch/arm/boot/dts/moxart.dtsi b/arch/arm/boot/dts/moxart.dtsi
index da7b3237bfe9..cbf17656bcc7 100644
--- a/arch/arm/boot/dts/moxart.dtsi
+++ b/arch/arm/boot/dts/moxart.dtsi
@@ -5,10 +5,11 @@
5 * Licensed under GPLv2 or later. 5 * Licensed under GPLv2 or later.
6 */ 6 */
7 7
8/include/ "skeleton.dtsi"
9#include <dt-bindings/interrupt-controller/irq.h> 8#include <dt-bindings/interrupt-controller/irq.h>
10 9
11/ { 10/ {
11 #address-cells = <1>;
12 #size-cells = <1>;
12 compatible = "moxa,moxart"; 13 compatible = "moxa,moxart";
13 model = "MOXART"; 14 model = "MOXART";
14 interrupt-parent = <&intc>; 15 interrupt-parent = <&intc>;
diff --git a/arch/arm/boot/dts/mps2.dtsi b/arch/arm/boot/dts/mps2.dtsi
index 23467390558d..96fb5a5cf4d3 100644
--- a/arch/arm/boot/dts/mps2.dtsi
+++ b/arch/arm/boot/dts/mps2.dtsi
@@ -171,7 +171,7 @@
171 uart0: serial@4000 { 171 uart0: serial@4000 {
172 compatible = "arm,mps2-uart"; 172 compatible = "arm,mps2-uart";
173 reg = <0x4000 0x1000>; 173 reg = <0x4000 0x1000>;
174 interrupts = <0 1 12>; 174 interrupts = <0>, <1>, <12>;
175 clocks = <&sysclk>; 175 clocks = <&sysclk>;
176 status = "disabled"; 176 status = "disabled";
177 }; 177 };
@@ -179,7 +179,7 @@
179 uart1: serial@5000 { 179 uart1: serial@5000 {
180 compatible = "arm,mps2-uart"; 180 compatible = "arm,mps2-uart";
181 reg = <0x5000 0x1000>; 181 reg = <0x5000 0x1000>;
182 interrupts = <2 3 12>; 182 interrupts = <2>, <3>, <12>;
183 clocks = <&sysclk>; 183 clocks = <&sysclk>;
184 status = "disabled"; 184 status = "disabled";
185 }; 185 };
@@ -187,7 +187,7 @@
187 uart2: serial@6000 { 187 uart2: serial@6000 {
188 compatible = "arm,mps2-uart"; 188 compatible = "arm,mps2-uart";
189 reg = <0x6000 0x1000>; 189 reg = <0x6000 0x1000>;
190 interrupts = <4 5 12>; 190 interrupts = <4>, <5>, <12>;
191 clocks = <&sysclk>; 191 clocks = <&sysclk>;
192 status = "disabled"; 192 status = "disabled";
193 }; 193 };
diff --git a/arch/arm/boot/dts/mt2701-evb.dts b/arch/arm/boot/dts/mt2701-evb.dts
index be0edb3dae6c..88f8fd22302a 100644
--- a/arch/arm/boot/dts/mt2701-evb.dts
+++ b/arch/arm/boot/dts/mt2701-evb.dts
@@ -13,6 +13,7 @@
13 compatible = "mediatek,mt2701-evb", "mediatek,mt2701"; 13 compatible = "mediatek,mt2701-evb", "mediatek,mt2701";
14 14
15 memory { 15 memory {
16 device_type = "memory";
16 reg = <0 0x80000000 0 0x40000000>; 17 reg = <0 0x80000000 0 0x40000000>;
17 }; 18 };
18 19
diff --git a/arch/arm/boot/dts/mt2701.dtsi b/arch/arm/boot/dts/mt2701.dtsi
index 180377e56ef4..51e1305c6471 100644
--- a/arch/arm/boot/dts/mt2701.dtsi
+++ b/arch/arm/boot/dts/mt2701.dtsi
@@ -12,10 +12,11 @@
12#include <dt-bindings/interrupt-controller/arm-gic.h> 12#include <dt-bindings/interrupt-controller/arm-gic.h>
13#include <dt-bindings/memory/mt2701-larb-port.h> 13#include <dt-bindings/memory/mt2701-larb-port.h>
14#include <dt-bindings/reset/mt2701-resets.h> 14#include <dt-bindings/reset/mt2701-resets.h>
15#include "skeleton64.dtsi"
16#include "mt2701-pinfunc.h" 15#include "mt2701-pinfunc.h"
17 16
18/ { 17/ {
18 #address-cells = <2>;
19 #size-cells = <2>;
19 compatible = "mediatek,mt2701"; 20 compatible = "mediatek,mt2701";
20 interrupt-parent = <&cirq>; 21 interrupt-parent = <&cirq>;
21 22
diff --git a/arch/arm/boot/dts/mt6580-evbp1.dts b/arch/arm/boot/dts/mt6580-evbp1.dts
index ca137897ed60..755a0774a8ee 100644
--- a/arch/arm/boot/dts/mt6580-evbp1.dts
+++ b/arch/arm/boot/dts/mt6580-evbp1.dts
@@ -22,6 +22,7 @@
22 }; 22 };
23 23
24 memory { 24 memory {
25 device_type = "memory";
25 reg = <0x80000000 0x20000000>; 26 reg = <0x80000000 0x20000000>;
26 }; 27 };
27}; 28};
diff --git a/arch/arm/boot/dts/mt6580.dtsi b/arch/arm/boot/dts/mt6580.dtsi
index 2bdc5ed12fca..9e17698c0609 100644
--- a/arch/arm/boot/dts/mt6580.dtsi
+++ b/arch/arm/boot/dts/mt6580.dtsi
@@ -7,7 +7,6 @@
7 7
8#include <dt-bindings/interrupt-controller/irq.h> 8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include "skeleton.dtsi"
11 10
12/ { 11/ {
13 compatible = "mediatek,mt6580"; 12 compatible = "mediatek,mt6580";
diff --git a/arch/arm/boot/dts/mt6589-aquaris5.dts b/arch/arm/boot/dts/mt6589-aquaris5.dts
index 7bbaa1279a26..1e7079a3b449 100644
--- a/arch/arm/boot/dts/mt6589-aquaris5.dts
+++ b/arch/arm/boot/dts/mt6589-aquaris5.dts
@@ -18,6 +18,7 @@
18 }; 18 };
19 19
20 memory { 20 memory {
21 device_type = "memory";
21 reg = <0x80000000 0x40000000>; 22 reg = <0x80000000 0x40000000>;
22 }; 23 };
23 24
diff --git a/arch/arm/boot/dts/mt6589.dtsi b/arch/arm/boot/dts/mt6589.dtsi
index 28df8495686a..f3ccb70c0779 100644
--- a/arch/arm/boot/dts/mt6589.dtsi
+++ b/arch/arm/boot/dts/mt6589.dtsi
@@ -7,9 +7,10 @@
7 7
8#include <dt-bindings/interrupt-controller/irq.h> 8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include "skeleton.dtsi"
11 10
12/ { 11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
13 compatible = "mediatek,mt6589"; 14 compatible = "mediatek,mt6589";
14 interrupt-parent = <&sysirq>; 15 interrupt-parent = <&sysirq>;
15 16
diff --git a/arch/arm/boot/dts/mt6592-evb.dts b/arch/arm/boot/dts/mt6592-evb.dts
index 02849f6548e3..5e00c1cca2d1 100644
--- a/arch/arm/boot/dts/mt6592-evb.dts
+++ b/arch/arm/boot/dts/mt6592-evb.dts
@@ -13,7 +13,7 @@
13 compatible = "mediatek,mt6592-evb", "mediatek,mt6592"; 13 compatible = "mediatek,mt6592-evb", "mediatek,mt6592";
14 14
15 memory { 15 memory {
16 device_type = "memory";
16 reg = <0x80000000 0x40000000>; 17 reg = <0x80000000 0x40000000>;
17 }; 18 };
18}; 19};
19
diff --git a/arch/arm/boot/dts/mt6592.dtsi b/arch/arm/boot/dts/mt6592.dtsi
index 8696ac891d60..3716f8db951c 100644
--- a/arch/arm/boot/dts/mt6592.dtsi
+++ b/arch/arm/boot/dts/mt6592.dtsi
@@ -7,9 +7,10 @@
7 7
8#include <dt-bindings/interrupt-controller/irq.h> 8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include "skeleton.dtsi"
11 10
12/ { 11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
13 compatible = "mediatek,mt6592"; 14 compatible = "mediatek,mt6592";
14 interrupt-parent = <&sysirq>; 15 interrupt-parent = <&sysirq>;
15 16
diff --git a/arch/arm/boot/dts/mt7623.dtsi b/arch/arm/boot/dts/mt7623.dtsi
index 98f115966391..a79f0b6c3429 100644
--- a/arch/arm/boot/dts/mt7623.dtsi
+++ b/arch/arm/boot/dts/mt7623.dtsi
@@ -187,17 +187,26 @@
187 cooling-maps { 187 cooling-maps {
188 map0 { 188 map0 {
189 trip = <&cpu_passive>; 189 trip = <&cpu_passive>;
190 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 190 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
191 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
192 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
193 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
191 }; 194 };
192 195
193 map1 { 196 map1 {
194 trip = <&cpu_active>; 197 trip = <&cpu_active>;
195 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 198 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
199 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
200 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
201 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
196 }; 202 };
197 203
198 map2 { 204 map2 {
199 trip = <&cpu_hot>; 205 trip = <&cpu_hot>;
200 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>; 206 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
207 <&cpu1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
208 <&cpu2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
209 <&cpu3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
201 }; 210 };
202 }; 211 };
203 }; 212 };
diff --git a/arch/arm/boot/dts/mt8127-moose.dts b/arch/arm/boot/dts/mt8127-moose.dts
index 308829b2da86..560687af87dc 100644
--- a/arch/arm/boot/dts/mt8127-moose.dts
+++ b/arch/arm/boot/dts/mt8127-moose.dts
@@ -13,6 +13,7 @@
13 compatible = "mediatek,mt8127-moose", "mediatek,mt8127"; 13 compatible = "mediatek,mt8127-moose", "mediatek,mt8127";
14 14
15 memory { 15 memory {
16 device_type = "memory";
16 reg = <0 0x80000000 0 0x40000000>; 17 reg = <0 0x80000000 0 0x40000000>;
17 }; 18 };
18}; 19};
diff --git a/arch/arm/boot/dts/mt8127.dtsi b/arch/arm/boot/dts/mt8127.dtsi
index 3adfc6f7859c..aced173c2a52 100644
--- a/arch/arm/boot/dts/mt8127.dtsi
+++ b/arch/arm/boot/dts/mt8127.dtsi
@@ -7,9 +7,10 @@
7 7
8#include <dt-bindings/interrupt-controller/irq.h> 8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include "skeleton64.dtsi"
11 10
12/ { 11/ {
12 #address-cells = <2>;
13 #size-cells = <2>;
13 compatible = "mediatek,mt8127"; 14 compatible = "mediatek,mt8127";
14 interrupt-parent = <&sysirq>; 15 interrupt-parent = <&sysirq>;
15 16
diff --git a/arch/arm/boot/dts/mt8135-evbp1.dts b/arch/arm/boot/dts/mt8135-evbp1.dts
index 0ace7a40a60d..f6147fe62f41 100644
--- a/arch/arm/boot/dts/mt8135-evbp1.dts
+++ b/arch/arm/boot/dts/mt8135-evbp1.dts
@@ -13,6 +13,7 @@
13 compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135"; 13 compatible = "mediatek,mt8135-evbp1", "mediatek,mt8135";
14 14
15 memory { 15 memory {
16 device_type = "memory";
16 reg = <0 0x80000000 0 0x40000000>; 17 reg = <0 0x80000000 0 0x40000000>;
17 }; 18 };
18}; 19};
diff --git a/arch/arm/boot/dts/mt8135.dtsi b/arch/arm/boot/dts/mt8135.dtsi
index 688069dc1533..0e4e835026db 100644
--- a/arch/arm/boot/dts/mt8135.dtsi
+++ b/arch/arm/boot/dts/mt8135.dtsi
@@ -9,10 +9,11 @@
9#include <dt-bindings/interrupt-controller/irq.h> 9#include <dt-bindings/interrupt-controller/irq.h>
10#include <dt-bindings/interrupt-controller/arm-gic.h> 10#include <dt-bindings/interrupt-controller/arm-gic.h>
11#include <dt-bindings/reset/mt8135-resets.h> 11#include <dt-bindings/reset/mt8135-resets.h>
12#include "skeleton64.dtsi"
13#include "mt8135-pinfunc.h" 12#include "mt8135-pinfunc.h"
14 13
15/ { 14/ {
15 #address-cells = <2>;
16 #size-cells = <2>;
16 compatible = "mediatek,mt8135"; 17 compatible = "mediatek,mt8135";
17 interrupt-parent = <&sysirq>; 18 interrupt-parent = <&sysirq>;
18 19
diff --git a/arch/arm/boot/dts/nspire.dtsi b/arch/arm/boot/dts/nspire.dtsi
index 1a5ae4cd107f..5a3c1f9d1832 100644
--- a/arch/arm/boot/dts/nspire.dtsi
+++ b/arch/arm/boot/dts/nspire.dtsi
@@ -9,9 +9,9 @@
9 * 9 *
10 */ 10 */
11 11
12/include/ "skeleton.dtsi"
13
14/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15 interrupt-parent = <&intc>; 15 interrupt-parent = <&intc>;
16 16
17 cpus { 17 cpus {
diff --git a/arch/arm/boot/dts/omap3-evm-common.dtsi b/arch/arm/boot/dts/omap3-evm-common.dtsi
index 4c1227d1e79b..17c89df6ce6b 100644
--- a/arch/arm/boot/dts/omap3-evm-common.dtsi
+++ b/arch/arm/boot/dts/omap3-evm-common.dtsi
@@ -122,6 +122,7 @@
122}; 122};
123 123
124&mmc2 { 124&mmc2 {
125 interrupts-extended = <&intc 86 &omap3_pmx_core 0x12e>;
125 vmmc-supply = <&wl12xx_vmmc>; 126 vmmc-supply = <&wl12xx_vmmc>;
126 non-removable; 127 non-removable;
127 bus-width = <4>; 128 bus-width = <4>;
@@ -132,8 +133,10 @@
132 wlcore: wlcore@2 { 133 wlcore: wlcore@2 {
133 compatible = "ti,wl1271"; 134 compatible = "ti,wl1271";
134 reg = <2>; 135 reg = <2>;
135 interrupt-parent = <&gpio5>; 136 /* gpio_149 with uart1_rts pad as wakeirq */
136 interrupts = <21 IRQ_TYPE_EDGE_RISING>; /* gpio 149 */ 137 interrupts-extended = <&gpio5 21 IRQ_TYPE_EDGE_RISING>,
138 <&omap3_pmx_core 0x14e>;
139 interrupt-names = "irq", "wakeup";
137 ref-clock-frequency = <38400000>; 140 ref-clock-frequency = <38400000>;
138 }; 141 };
139}; 142};
diff --git a/arch/arm/boot/dts/omap3-evm-processor-common.dtsi b/arch/arm/boot/dts/omap3-evm-processor-common.dtsi
index ce7f42f9448c..b4109f48ec18 100644
--- a/arch/arm/boot/dts/omap3-evm-processor-common.dtsi
+++ b/arch/arm/boot/dts/omap3-evm-processor-common.dtsi
@@ -86,6 +86,10 @@
86 OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */ 86 OMAP3_CORE1_IOPAD(0x215e, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat1.sdmmc2_dat1 */
87 OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */ 87 OMAP3_CORE1_IOPAD(0x2160, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat2.sdmmc2_dat2 */
88 OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */ 88 OMAP3_CORE1_IOPAD(0x2162, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc2_dat3.sdmmc2_dat3 */
89 OMAP3_CORE1_IOPAD(0x2164, PIN_OUTPUT | MUX_MODE1) /* sdmmc2_dat4.sdmmc2_dir_dat0 */
90 OMAP3_CORE1_IOPAD(0x2166, PIN_OUTPUT | MUX_MODE1) /* sdmmc2_dat5.sdmmc2_dir_dat1 */
91 OMAP3_CORE1_IOPAD(0x2168, PIN_OUTPUT | MUX_MODE1) /* sdmmc2_dat6.sdmmc2_dir_cmd */
92 OMAP3_CORE1_IOPAD(0x216a, PIN_INPUT | MUX_MODE1) /* sdmmc2_dat7.sdmmc2_clkin */
89 >; 93 >;
90 }; 94 };
91 95
@@ -127,9 +131,13 @@
127 >; 131 >;
128 }; 132 };
129 133
134 /*
135 * Note that gpio_150 pulled high with internal pull to prevent wlcore
136 * reset on return from off mode in idle.
137 */
130 wl12xx_gpio: pinmux_wl12xx_gpio { 138 wl12xx_gpio: pinmux_wl12xx_gpio {
131 pinctrl-single,pins = < 139 pinctrl-single,pins = <
132 OMAP3_CORE1_IOPAD(0x2180, PIN_OUTPUT | MUX_MODE4) /* uart1_cts.gpio_150 */ 140 OMAP3_CORE1_IOPAD(0x2180, PIN_INPUT_PULLUP | MUX_MODE7) /* uart1_cts.gpio_150 */
133 OMAP3_CORE1_IOPAD(0x217e, PIN_INPUT | MUX_MODE4) /* uart1_rts.gpio_149 */ 141 OMAP3_CORE1_IOPAD(0x217e, PIN_INPUT | MUX_MODE4) /* uart1_rts.gpio_149 */
134 >; 142 >;
135 }; 143 };
diff --git a/arch/arm/boot/dts/omap3-gta04.dtsi b/arch/arm/boot/dts/omap3-gta04.dtsi
index e53d32691308..04f2b53d4d3d 100644
--- a/arch/arm/boot/dts/omap3-gta04.dtsi
+++ b/arch/arm/boot/dts/omap3-gta04.dtsi
@@ -32,6 +32,14 @@
32 display1 = &tv0; 32 display1 = &tv0;
33 }; 33 };
34 34
35 ldo_3v3: fixedregulator {
36 compatible = "regulator-fixed";
37 regulator-name = "ldo_3v3";
38 regulator-min-microvolt = <3300000>;
39 regulator-max-microvolt = <3300000>;
40 regulator-always-on;
41 };
42
35 /* fixed 26MHz oscillator */ 43 /* fixed 26MHz oscillator */
36 hfclk_26m: oscillator { 44 hfclk_26m: oscillator {
37 #clock-cells = <0>; 45 #clock-cells = <0>;
@@ -116,6 +124,7 @@
116 spi-cpol; 124 spi-cpol;
117 spi-cpha; 125 spi-cpha;
118 126
127 backlight= <&backlight>;
119 label = "lcd"; 128 label = "lcd";
120 port { 129 port {
121 lcd_in: endpoint { 130 lcd_in: endpoint {
@@ -125,7 +134,7 @@
125 }; 134 };
126 }; 135 };
127 136
128 backlight { 137 backlight: backlight {
129 compatible = "pwm-backlight"; 138 compatible = "pwm-backlight";
130 pwms = <&pwm11 0 12000000 0>; 139 pwms = <&pwm11 0 12000000 0>;
131 pwm-names = "backlight"; 140 pwm-names = "backlight";
@@ -224,6 +233,15 @@
224 }; 233 };
225}; 234};
226 235
236&omap3_pmx_wkup {
237 gpio1_pins: pinmux_gpio1_pins {
238 pinctrl-single,pins = <
239 OMAP3_WKUP_IOPAD(0x2a14, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE4) /* sys_boot5.gpio_7 */
240 OMAP3_WKUP_IOPAD(0x2a1a, PIN_INPUT | PIN_OFF_WAKEUPENABLE | MUX_MODE4) /* sys_clkout.gpio_10 */
241 >;
242 };
243};
244
227&omap3_pmx_core { 245&omap3_pmx_core {
228 pinctrl-names = "default"; 246 pinctrl-names = "default";
229 pinctrl-0 = < 247 pinctrl-0 = <
@@ -312,6 +330,12 @@
312 >; 330 >;
313 }; 331 };
314 332
333 gps_pins: pinmux_gps_pins {
334 pinctrl-single,pins = <
335 OMAP3_CORE1_IOPAD(0x2176, PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* gpio145 */
336 >;
337 };
338
315 hdq_pins: hdq_pins { 339 hdq_pins: hdq_pins {
316 pinctrl-single,pins = < 340 pinctrl-single,pins = <
317 OMAP3_CORE1_IOPAD(0x21c6, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_sda.hdq */ 341 OMAP3_CORE1_IOPAD(0x21c6, PIN_INPUT_PULLUP | MUX_MODE0) /* i2c3_sda.hdq */
@@ -636,6 +660,11 @@
636 status = "disabled"; 660 status = "disabled";
637}; 661};
638 662
663&gpio1 {
664 pinctrl-names = "default";
665 pinctrl-0 = <&gpio1_pins>;
666};
667
639&uart1 { 668&uart1 {
640 pinctrl-names = "default"; 669 pinctrl-names = "default";
641 pinctrl-0 = <&uart1_pins>; 670 pinctrl-0 = <&uart1_pins>;
@@ -644,6 +673,14 @@
644&uart2 { 673&uart2 {
645 pinctrl-names = "default"; 674 pinctrl-names = "default";
646 pinctrl-0 = <&uart2_pins>; 675 pinctrl-0 = <&uart2_pins>;
676 gnss: gnss {
677 compatible = "wi2wi,w2sg0004";
678 pinctrl-names = "default";
679 pinctrl-0 = <&gps_pins>;
680 sirf,onoff-gpios = <&gpio5 17 GPIO_ACTIVE_HIGH>;
681 lna-supply = <&vsim>;
682 vcc-supply = <&ldo_3v3>;
683 };
647}; 684};
648 685
649&uart3 { 686&uart3 {
@@ -714,11 +751,7 @@
714 751
715 vdda-supply = <&vdac>; 752 vdda-supply = <&vdac>;
716 753
717 #address-cells = <1>;
718 #size-cells = <0>;
719
720 port { 754 port {
721 reg = <0>;
722 venc_out: endpoint { 755 venc_out: endpoint {
723 remote-endpoint = <&opa_in>; 756 remote-endpoint = <&opa_in>;
724 ti,channels = <1>; 757 ti,channels = <1>;
diff --git a/arch/arm/boot/dts/omap3-gta04a5.dts b/arch/arm/boot/dts/omap3-gta04a5.dts
index bd232b1b24cb..223b47ac596e 100644
--- a/arch/arm/boot/dts/omap3-gta04a5.dts
+++ b/arch/arm/boot/dts/omap3-gta04a5.dts
@@ -82,7 +82,7 @@
82 82
83/* 83/*
84 * for WL183x module see 84 * for WL183x module see
85 * http://lxr.free-electrons.com/source/Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt 85 * Documentation/devicetree/bindings/net/wireless/ti,wlcore.txt
86 */ 86 */
87 87
88&wifi_pwrseq { 88&wifi_pwrseq {
diff --git a/arch/arm/boot/dts/omap3-n900.dts b/arch/arm/boot/dts/omap3-n900.dts
index 182a53991c90..826920e6b878 100644
--- a/arch/arm/boot/dts/omap3-n900.dts
+++ b/arch/arm/boot/dts/omap3-n900.dts
@@ -814,7 +814,7 @@
814 /* For debugging, it is often good idea to remove this GPIO. 814 /* For debugging, it is often good idea to remove this GPIO.
815 It means you can remove back cover (to reboot by removing 815 It means you can remove back cover (to reboot by removing
816 battery) and still use the MMC card. */ 816 battery) and still use the MMC card. */
817 cd-gpios = <&gpio6 0 GPIO_ACTIVE_HIGH>; /* 160 */ 817 cd-gpios = <&gpio6 0 GPIO_ACTIVE_LOW>; /* 160 */
818}; 818};
819 819
820/* most boards use vaux3, only some old versions use vmmc2 instead */ 820/* most boards use vaux3, only some old versions use vmmc2 instead */
diff --git a/arch/arm/boot/dts/omap3-n950-n9.dtsi b/arch/arm/boot/dts/omap3-n950-n9.dtsi
index 0d9b85317529..e142e6c70a59 100644
--- a/arch/arm/boot/dts/omap3-n950-n9.dtsi
+++ b/arch/arm/boot/dts/omap3-n950-n9.dtsi
@@ -370,6 +370,19 @@
370 compatible = "ti,omap2-onenand"; 370 compatible = "ti,omap2-onenand";
371 reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */ 371 reg = <0 0 0x20000>; /* CS0, offset 0, IO size 128K */
372 372
373 /*
374 * These timings are based on CONFIG_OMAP_GPMC_DEBUG=y reported
375 * bootloader set values when booted with v4.19 using both N950
376 * and N9 devices (OneNAND Manufacturer: Samsung):
377 *
378 * gpmc cs0 before gpmc_cs_program_settings:
379 * cs0 GPMC_CS_CONFIG1: 0xfd001202
380 * cs0 GPMC_CS_CONFIG2: 0x00181800
381 * cs0 GPMC_CS_CONFIG3: 0x00030300
382 * cs0 GPMC_CS_CONFIG4: 0x18001804
383 * cs0 GPMC_CS_CONFIG5: 0x03171d1d
384 * cs0 GPMC_CS_CONFIG6: 0x97080000
385 */
373 gpmc,sync-read; 386 gpmc,sync-read;
374 gpmc,sync-write; 387 gpmc,sync-write;
375 gpmc,burst-length = <16>; 388 gpmc,burst-length = <16>;
@@ -379,26 +392,27 @@
379 gpmc,device-width = <2>; 392 gpmc,device-width = <2>;
380 gpmc,mux-add-data = <2>; 393 gpmc,mux-add-data = <2>;
381 gpmc,cs-on-ns = <0>; 394 gpmc,cs-on-ns = <0>;
382 gpmc,cs-rd-off-ns = <87>; 395 gpmc,cs-rd-off-ns = <122>;
383 gpmc,cs-wr-off-ns = <87>; 396 gpmc,cs-wr-off-ns = <122>;
384 gpmc,adv-on-ns = <0>; 397 gpmc,adv-on-ns = <0>;
385 gpmc,adv-rd-off-ns = <10>; 398 gpmc,adv-rd-off-ns = <15>;
386 gpmc,adv-wr-off-ns = <10>; 399 gpmc,adv-wr-off-ns = <15>;
387 gpmc,oe-on-ns = <15>; 400 gpmc,oe-on-ns = <20>;
388 gpmc,oe-off-ns = <87>; 401 gpmc,oe-off-ns = <122>;
389 gpmc,we-on-ns = <0>; 402 gpmc,we-on-ns = <0>;
390 gpmc,we-off-ns = <87>; 403 gpmc,we-off-ns = <122>;
391 gpmc,rd-cycle-ns = <112>; 404 gpmc,rd-cycle-ns = <148>;
392 gpmc,wr-cycle-ns = <112>; 405 gpmc,wr-cycle-ns = <148>;
393 gpmc,access-ns = <81>; 406 gpmc,access-ns = <117>;
394 gpmc,page-burst-access-ns = <15>; 407 gpmc,page-burst-access-ns = <15>;
395 gpmc,bus-turnaround-ns = <0>; 408 gpmc,bus-turnaround-ns = <0>;
396 gpmc,cycle2cycle-delay-ns = <0>; 409 gpmc,cycle2cycle-delay-ns = <0>;
397 gpmc,wait-monitoring-ns = <0>; 410 gpmc,wait-monitoring-ns = <0>;
398 gpmc,clk-activation-ns = <5>; 411 gpmc,clk-activation-ns = <10>;
399 gpmc,wr-data-mux-bus-ns = <30>; 412 gpmc,wr-data-mux-bus-ns = <40>;
400 gpmc,wr-access-ns = <81>; 413 gpmc,wr-access-ns = <117>;
401 gpmc,sync-clk-ps = <15000>; 414
415 gpmc,sync-clk-ps = <15000>; /* TBC; Where this value came? */
402 416
403 /* 417 /*
404 * MTD partition table corresponding to Nokia's MeeGo 1.2 418 * MTD partition table corresponding to Nokia's MeeGo 1.2
diff --git a/arch/arm/boot/dts/omap4-droid4-xt894.dts b/arch/arm/boot/dts/omap4-droid4-xt894.dts
index 04758a2a87f0..e21ec929f096 100644
--- a/arch/arm/boot/dts/omap4-droid4-xt894.dts
+++ b/arch/arm/boot/dts/omap4-droid4-xt894.dts
@@ -359,20 +359,24 @@
359 359
360&mmc3 { 360&mmc3 {
361 vmmc-supply = <&wl12xx_vmmc>; 361 vmmc-supply = <&wl12xx_vmmc>;
362 /* uart2_tx.sdmmc3_dat1 pad as wakeirq */
362 interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH 363 interrupts-extended = <&wakeupgen GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH
363 &omap4_pmx_core 0xde>; 364 &omap4_pmx_core 0xde>;
364 365 interrupt-names = "irq", "wakeup";
365 non-removable; 366 non-removable;
366 bus-width = <4>; 367 bus-width = <4>;
367 cap-power-off-card; 368 cap-power-off-card;
369 keep-power-in-suspend;
368 370
369 #address-cells = <1>; 371 #address-cells = <1>;
370 #size-cells = <0>; 372 #size-cells = <0>;
371 wlcore: wlcore@2 { 373 wlcore: wlcore@2 {
372 compatible = "ti,wl1285", "ti,wl1283"; 374 compatible = "ti,wl1285", "ti,wl1283";
373 reg = <2>; 375 reg = <2>;
374 interrupt-parent = <&gpio4>; 376 /* gpio_100 with gpmc_wait2 pad as wakeirq */
375 interrupts = <4 IRQ_TYPE_EDGE_RISING>; /* gpio100 */ 377 interrupts-extended = <&gpio4 4 IRQ_TYPE_EDGE_RISING>,
378 <&omap4_pmx_core 0x4e>;
379 interrupt-names = "irq", "wakeup";
376 ref-clock-frequency = <26000000>; 380 ref-clock-frequency = <26000000>;
377 tcxo-clock-frequency = <26000000>; 381 tcxo-clock-frequency = <26000000>;
378 }; 382 };
@@ -644,6 +648,17 @@
644 }; 648 };
645}; 649};
646 650
651/* Configure pwm clock source for timers 8 & 9 */
652&timer8 {
653 assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
654 assigned-clock-parents = <&sys_clkin_ck>;
655};
656
657&timer9 {
658 assigned-clocks = <&l4_per_clkctrl OMAP4_TIMER9_CLKCTRL 24>;
659 assigned-clock-parents = <&sys_clkin_ck>;
660};
661
647/* 662/*
648 * As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for 663 * As uart1 is wired to mdm6600 with rts and cts, we can use the cts pin for
649 * uart1 wakeirq. 664 * uart1 wakeirq.
diff --git a/arch/arm/boot/dts/omap4-panda-common.dtsi b/arch/arm/boot/dts/omap4-panda-common.dtsi
index 27895c1604b9..926f018823a4 100644
--- a/arch/arm/boot/dts/omap4-panda-common.dtsi
+++ b/arch/arm/boot/dts/omap4-panda-common.dtsi
@@ -485,8 +485,10 @@
485 wlcore: wlcore@2 { 485 wlcore: wlcore@2 {
486 compatible = "ti,wl1271"; 486 compatible = "ti,wl1271";
487 reg = <2>; 487 reg = <2>;
488 interrupt-parent = <&gpio2>; 488 /* gpio_53 with gpmc_ncs3 pad as wakeup */
489 interrupts = <21 IRQ_TYPE_EDGE_RISING>; /* gpio 53 */ 489 interrupts-extended = <&gpio2 21 IRQ_TYPE_EDGE_RISING>,
490 <&omap4_pmx_core 0x3a>;
491 interrupt-names = "irq", "wakeup";
490 ref-clock-frequency = <38400000>; 492 ref-clock-frequency = <38400000>;
491 }; 493 };
492}; 494};
diff --git a/arch/arm/boot/dts/omap4-sdp.dts b/arch/arm/boot/dts/omap4-sdp.dts
index 9dc7ec7655cb..c88817bdcc56 100644
--- a/arch/arm/boot/dts/omap4-sdp.dts
+++ b/arch/arm/boot/dts/omap4-sdp.dts
@@ -26,6 +26,9 @@
26 }; 26 };
27 27
28 vdd_eth: fixedregulator-vdd-eth { 28 vdd_eth: fixedregulator-vdd-eth {
29 pinctrl-names = "default";
30 pinctrl-0 = <&enet_enable_gpio>;
31
29 compatible = "regulator-fixed"; 32 compatible = "regulator-fixed";
30 regulator-name = "VDD_ETH"; 33 regulator-name = "VDD_ETH";
31 regulator-min-microvolt = <3300000>; 34 regulator-min-microvolt = <3300000>;
@@ -352,6 +355,29 @@
352 OMAP4_IOPAD(0x152, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat3.sdmmc5_dat3 */ 355 OMAP4_IOPAD(0x152, PIN_INPUT_PULLUP | MUX_MODE0) /* sdmmc5_dat3.sdmmc5_dat3 */
353 >; 356 >;
354 }; 357 };
358
359 /* gpio_48 for ENET_ENABLE */
360 enet_enable_gpio: pinmux_enet_enable_gpio {
361 pinctrl-single,pins = <
362 OMAP4_IOPAD(0x070, PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* gpmc_a24.gpio_48 */
363 >;
364 };
365
366 ks8851_pins: pinmux_ks8851_pins {
367 pinctrl-single,pins = <
368 /* ENET_INT */
369 OMAP4_IOPAD(0x054, PIN_INPUT_PULLUP | MUX_MODE3) /* gpmc_ad10.gpio_34 */
370 /*
371 * Misterious pin which makes the ethernet working
372 * The legacy board file requested this pin on boot
373 * (ETH_KS8851_QUART) and set it to high, similarly to
374 * the ENET_ENABLE pin.
375 * We could use gpio-hog to keep it high, but let's use
376 * it as a reset GPIO for ks8851.
377 */
378 OMAP4_IOPAD(0x13a, PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcspi1_cs1.gpio_138 */
379 >;
380 };
355}; 381};
356 382
357&i2c1 { 383&i2c1 {
@@ -452,12 +478,16 @@
452 pinctrl-0 = <&mcspi1_pins>; 478 pinctrl-0 = <&mcspi1_pins>;
453 479
454 eth@0 { 480 eth@0 {
481 pinctrl-names = "default";
482 pinctrl-0 = <&ks8851_pins>;
483
455 compatible = "ks8851"; 484 compatible = "ks8851";
456 spi-max-frequency = <24000000>; 485 spi-max-frequency = <24000000>;
457 reg = <0>; 486 reg = <0>;
458 interrupt-parent = <&gpio2>; 487 interrupt-parent = <&gpio2>;
459 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; /* gpio line 34 */ 488 interrupts = <2 IRQ_TYPE_LEVEL_LOW>; /* gpio line 34 */
460 vdd-supply = <&vdd_eth>; 489 vdd-supply = <&vdd_eth>;
490 reset-gpios = <&gpio5 10 GPIO_ACTIVE_HIGH>;
461 }; 491 };
462}; 492};
463 493
diff --git a/arch/arm/boot/dts/omap5-board-common.dtsi b/arch/arm/boot/dts/omap5-board-common.dtsi
index bc853ebeda22..61a06f6add3c 100644
--- a/arch/arm/boot/dts/omap5-board-common.dtsi
+++ b/arch/arm/boot/dts/omap5-board-common.dtsi
@@ -317,7 +317,8 @@
317 317
318 palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins { 318 palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
319 pinctrl-single,pins = < 319 pinctrl-single,pins = <
320 OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0) /* sys_nirq1 */ 320 /* sys_nirq1 is pulled down as the SoC is inverting it for GIC */
321 OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0)
321 >; 322 >;
322 }; 323 };
323 324
@@ -385,7 +386,8 @@
385 386
386 palmas: palmas@48 { 387 palmas: palmas@48 {
387 compatible = "ti,palmas"; 388 compatible = "ti,palmas";
388 interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */ 389 /* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
390 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_LOW>;
389 reg = <0x48>; 391 reg = <0x48>;
390 interrupt-controller; 392 interrupt-controller;
391 #interrupt-cells = <2>; 393 #interrupt-cells = <2>;
@@ -651,7 +653,8 @@
651 pinctrl-names = "default"; 653 pinctrl-names = "default";
652 pinctrl-0 = <&twl6040_pins>; 654 pinctrl-0 = <&twl6040_pins>;
653 655
654 interrupts = <GIC_SPI 119 IRQ_TYPE_NONE>; /* IRQ_SYS_2N cascaded to gic */ 656 /* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
657 interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_LOW>;
655 658
656 /* audpwron gpio defined in the board specific dts */ 659 /* audpwron gpio defined in the board specific dts */
657 660
diff --git a/arch/arm/boot/dts/omap5-cm-t54.dts b/arch/arm/boot/dts/omap5-cm-t54.dts
index 5e21fb430a65..e78d3718f145 100644
--- a/arch/arm/boot/dts/omap5-cm-t54.dts
+++ b/arch/arm/boot/dts/omap5-cm-t54.dts
@@ -181,6 +181,13 @@
181 OMAP5_IOPAD(0x0042, PIN_INPUT_PULLDOWN | MUX_MODE6) /* llib_wakereqin.gpio1_wk15 */ 181 OMAP5_IOPAD(0x0042, PIN_INPUT_PULLDOWN | MUX_MODE6) /* llib_wakereqin.gpio1_wk15 */
182 >; 182 >;
183 }; 183 };
184
185 palmas_sys_nirq_pins: pinmux_palmas_sys_nirq_pins {
186 pinctrl-single,pins = <
187 /* sys_nirq1 is pulled down as the SoC is inverting it for GIC */
188 OMAP5_IOPAD(0x068, PIN_INPUT_PULLUP | MUX_MODE0)
189 >;
190 };
184}; 191};
185 192
186&omap5_pmx_core { 193&omap5_pmx_core {
@@ -414,8 +421,11 @@
414 421
415 palmas: palmas@48 { 422 palmas: palmas@48 {
416 compatible = "ti,palmas"; 423 compatible = "ti,palmas";
417 interrupts = <GIC_SPI 7 IRQ_TYPE_NONE>; /* IRQ_SYS_1N */
418 reg = <0x48>; 424 reg = <0x48>;
425 pinctrl-0 = <&palmas_sys_nirq_pins>;
426 pinctrl-names = "default";
427 /* sys_nirq/ext_sys_irq pins get inverted at mpuss wakeupgen */
428 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_LOW>;
419 interrupt-controller; 429 interrupt-controller;
420 #interrupt-cells = <2>; 430 #interrupt-cells = <2>;
421 ti,system-power-controller; 431 ti,system-power-controller;
diff --git a/arch/arm/boot/dts/omap5-l4.dtsi b/arch/arm/boot/dts/omap5-l4.dtsi
index 9c7e309d9c2c..0960348002ad 100644
--- a/arch/arm/boot/dts/omap5-l4.dtsi
+++ b/arch/arm/boot/dts/omap5-l4.dtsi
@@ -1046,8 +1046,6 @@
1046 <SYSC_IDLE_SMART>, 1046 <SYSC_IDLE_SMART>,
1047 <SYSC_IDLE_SMART_WKUP>; 1047 <SYSC_IDLE_SMART_WKUP>;
1048 ti,syss-mask = <1>; 1048 ti,syss-mask = <1>;
1049 ti,no-reset-on-init;
1050 ti,no-idle-on-init;
1051 /* Domains (V, P, C): core, core_pwrdm, l4per_clkdm */ 1049 /* Domains (V, P, C): core, core_pwrdm, l4per_clkdm */
1052 clocks = <&l4per_clkctrl OMAP5_UART3_CLKCTRL 0>; 1050 clocks = <&l4per_clkctrl OMAP5_UART3_CLKCTRL 0>;
1053 clock-names = "fck"; 1051 clock-names = "fck";
diff --git a/arch/arm/boot/dts/orion5x-lacie-d2-network.dts b/arch/arm/boot/dts/orion5x-lacie-d2-network.dts
index 8c2449da6f00..422958d13d42 100644
--- a/arch/arm/boot/dts/orion5x-lacie-d2-network.dts
+++ b/arch/arm/boot/dts/orion5x-lacie-d2-network.dts
@@ -19,6 +19,7 @@
19 compatible = "lacie,d2-network", "marvell,orion5x-88f5182", "marvell,orion5x"; 19 compatible = "lacie,d2-network", "marvell,orion5x-88f5182", "marvell,orion5x";
20 20
21 memory { 21 memory {
22 device_type = "memory";
22 reg = <0x00000000 0x4000000>; /* 64 MB */ 23 reg = <0x00000000 0x4000000>; /* 64 MB */
23 }; 24 };
24 25
diff --git a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
index b545d0f228a5..0043e0040153 100644
--- a/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
+++ b/arch/arm/boot/dts/orion5x-lacie-ethernet-disk-mini-v2.dts
@@ -25,6 +25,7 @@
25 compatible = "lacie,ethernet-disk-mini-v2", "marvell,orion5x-88f5182", "marvell,orion5x"; 25 compatible = "lacie,ethernet-disk-mini-v2", "marvell,orion5x-88f5182", "marvell,orion5x";
26 26
27 memory { 27 memory {
28 device_type = "memory";
28 reg = <0x00000000 0x4000000>; /* 64 MB */ 29 reg = <0x00000000 0x4000000>; /* 64 MB */
29 }; 30 };
30 31
diff --git a/arch/arm/boot/dts/orion5x-lswsgl.dts b/arch/arm/boot/dts/orion5x-lswsgl.dts
index 0d97ded66257..2fbc17d6dfa4 100644
--- a/arch/arm/boot/dts/orion5x-lswsgl.dts
+++ b/arch/arm/boot/dts/orion5x-lswsgl.dts
@@ -55,6 +55,7 @@
55 compatible = "buffalo,lswsgl", "marvell,orion5x-88f5182", "marvell,orion5x"; 55 compatible = "buffalo,lswsgl", "marvell,orion5x-88f5182", "marvell,orion5x";
56 56
57 memory { 57 memory {
58 device_type = "memory";
58 reg = <0x00000000 0x8000000>; /* 128 MB */ 59 reg = <0x00000000 0x8000000>; /* 128 MB */
59 }; 60 };
60 61
diff --git a/arch/arm/boot/dts/orion5x-maxtor-shared-storage-2.dts b/arch/arm/boot/dts/orion5x-maxtor-shared-storage-2.dts
index 0324cb54939d..0ca6208a267d 100644
--- a/arch/arm/boot/dts/orion5x-maxtor-shared-storage-2.dts
+++ b/arch/arm/boot/dts/orion5x-maxtor-shared-storage-2.dts
@@ -19,6 +19,7 @@
19 compatible = "maxtor,shared-storage-2", "marvell,orion5x-88f5182", "marvell,orion5x"; 19 compatible = "maxtor,shared-storage-2", "marvell,orion5x-88f5182", "marvell,orion5x";
20 20
21 memory { 21 memory {
22 device_type = "memory";
22 reg = <0x00000000 0x4000000>; /* 64 MB */ 23 reg = <0x00000000 0x4000000>; /* 64 MB */
23 }; 24 };
24 25
diff --git a/arch/arm/boot/dts/orion5x-netgear-wnr854t.dts b/arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
index 9f6ae4e1de06..ea081afa469d 100644
--- a/arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
+++ b/arch/arm/boot/dts/orion5x-netgear-wnr854t.dts
@@ -21,6 +21,7 @@
21 }; 21 };
22 22
23 memory { 23 memory {
24 device_type = "memory";
24 reg = <0x00000000 0x2000000>; /* 32 MB */ 25 reg = <0x00000000 0x2000000>; /* 32 MB */
25 }; 26 };
26 27
diff --git a/arch/arm/boot/dts/orion5x-rd88f5182-nas.dts b/arch/arm/boot/dts/orion5x-rd88f5182-nas.dts
index d1817af53e0b..487324f7c54e 100644
--- a/arch/arm/boot/dts/orion5x-rd88f5182-nas.dts
+++ b/arch/arm/boot/dts/orion5x-rd88f5182-nas.dts
@@ -16,6 +16,7 @@
16 compatible = "marvell,rd-88f5182-nas", "marvell,orion5x-88f5182", "marvell,orion5x"; 16 compatible = "marvell,rd-88f5182-nas", "marvell,orion5x-88f5182", "marvell,orion5x";
17 17
18 memory { 18 memory {
19 device_type = "memory";
19 reg = <0x00000000 0x4000000>; /* 64 MB */ 20 reg = <0x00000000 0x4000000>; /* 64 MB */
20 }; 21 };
21 22
diff --git a/arch/arm/boot/dts/orion5x.dtsi b/arch/arm/boot/dts/orion5x.dtsi
index fbccfbbab223..61e631b3fd8b 100644
--- a/arch/arm/boot/dts/orion5x.dtsi
+++ b/arch/arm/boot/dts/orion5x.dtsi
@@ -6,11 +6,11 @@
6 * warranty of any kind, whether express or implied. 6 * warranty of any kind, whether express or implied.
7 */ 7 */
8 8
9#include "skeleton.dtsi"
10
11#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16)) 9#define MBUS_ID(target,attributes) (((target) << 24) | ((attributes) << 16))
12 10
13/ { 11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
14 model = "Marvell Orion5x SoC"; 14 model = "Marvell Orion5x SoC";
15 compatible = "marvell,orion5x"; 15 compatible = "marvell,orion5x";
16 interrupt-parent = <&intc>; 16 interrupt-parent = <&intc>;
diff --git a/arch/arm/boot/dts/ox810se.dtsi b/arch/arm/boot/dts/ox810se.dtsi
index c2b48a1838eb..3a26650de4eb 100644
--- a/arch/arm/boot/dts/ox810se.dtsi
+++ b/arch/arm/boot/dts/ox810se.dtsi
@@ -6,11 +6,12 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10#include <dt-bindings/clock/oxsemi,ox810se.h> 9#include <dt-bindings/clock/oxsemi,ox810se.h>
11#include <dt-bindings/reset/oxsemi,ox810se.h> 10#include <dt-bindings/reset/oxsemi,ox810se.h>
12 11
13/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
14 compatible = "oxsemi,ox810se"; 15 compatible = "oxsemi,ox810se";
15 16
16 cpus { 17 cpus {
@@ -25,6 +26,7 @@
25 }; 26 };
26 27
27 memory { 28 memory {
29 device_type = "memory";
28 /* Max 256MB @ 0x48000000 */ 30 /* Max 256MB @ 0x48000000 */
29 reg = <0x48000000 0x10000000>; 31 reg = <0x48000000 0x10000000>;
30 }; 32 };
diff --git a/arch/arm/boot/dts/ox820.dtsi b/arch/arm/boot/dts/ox820.dtsi
index 085bbd33eadc..f3239586f38d 100644
--- a/arch/arm/boot/dts/ox820.dtsi
+++ b/arch/arm/boot/dts/ox820.dtsi
@@ -6,12 +6,13 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10#include <dt-bindings/interrupt-controller/arm-gic.h> 9#include <dt-bindings/interrupt-controller/arm-gic.h>
11#include <dt-bindings/clock/oxsemi,ox820.h> 10#include <dt-bindings/clock/oxsemi,ox820.h>
12#include <dt-bindings/reset/oxsemi,ox820.h> 11#include <dt-bindings/reset/oxsemi,ox820.h>
13 12
14/ { 13/ {
14 #address-cells = <1>;
15 #size-cells = <1>;
15 compatible = "oxsemi,ox820"; 16 compatible = "oxsemi,ox820";
16 17
17 cpus { 18 cpus {
@@ -35,6 +36,7 @@
35 }; 36 };
36 37
37 memory { 38 memory {
39 device_type = "memory";
38 /* Max 512MB @ 0x60000000 */ 40 /* Max 512MB @ 0x60000000 */
39 reg = <0x60000000 0x20000000>; 41 reg = <0x60000000 0x20000000>;
40 }; 42 };
diff --git a/arch/arm/boot/dts/picoxcell-pc3x2.dtsi b/arch/arm/boot/dts/picoxcell-pc3x2.dtsi
index a1266cf8776c..291a28f34762 100644
--- a/arch/arm/boot/dts/picoxcell-pc3x2.dtsi
+++ b/arch/arm/boot/dts/picoxcell-pc3x2.dtsi
@@ -10,7 +10,6 @@
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details. 11 * GNU General Public License for more details.
12 */ 12 */
13/include/ "skeleton.dtsi"
14/ { 13/ {
15 model = "Picochip picoXcell PC3X2"; 14 model = "Picochip picoXcell PC3X2";
16 compatible = "picochip,pc3x2"; 15 compatible = "picochip,pc3x2";
diff --git a/arch/arm/boot/dts/picoxcell-pc3x3.dtsi b/arch/arm/boot/dts/picoxcell-pc3x3.dtsi
index d78cd207eca1..bf9a39ea76b0 100644
--- a/arch/arm/boot/dts/picoxcell-pc3x3.dtsi
+++ b/arch/arm/boot/dts/picoxcell-pc3x3.dtsi
@@ -10,7 +10,6 @@
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU General Public License for more details. 11 * GNU General Public License for more details.
12 */ 12 */
13/include/ "skeleton.dtsi"
14/ { 13/ {
15 model = "Picochip picoXcell PC3X3"; 14 model = "Picochip picoXcell PC3X3";
16 compatible = "picochip,pc3x3"; 15 compatible = "picochip,pc3x3";
diff --git a/arch/arm/boot/dts/prima2-evb.dts b/arch/arm/boot/dts/prima2-evb.dts
index 57286b4e7b87..55594b3bbc99 100644
--- a/arch/arm/boot/dts/prima2-evb.dts
+++ b/arch/arm/boot/dts/prima2-evb.dts
@@ -15,6 +15,7 @@
15 compatible = "sirf,prima2", "sirf,prima2-cb"; 15 compatible = "sirf,prima2", "sirf,prima2-cb";
16 16
17 memory { 17 memory {
18 device_type = "memory";
18 reg = <0x00000000 0x20000000>; 19 reg = <0x00000000 0x20000000>;
19 }; 20 };
20 21
diff --git a/arch/arm/boot/dts/prima2.dtsi b/arch/arm/boot/dts/prima2.dtsi
index 1ca1a9aa953f..54d4f8850e22 100644
--- a/arch/arm/boot/dts/prima2.dtsi
+++ b/arch/arm/boot/dts/prima2.dtsi
@@ -6,7 +6,6 @@
6 * Licensed under GPLv2 or later. 6 * Licensed under GPLv2 or later.
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10/ { 9/ {
11 compatible = "sirf,prima2"; 10 compatible = "sirf,prima2";
12 #address-cells = <1>; 11 #address-cells = <1>;
diff --git a/arch/arm/boot/dts/pxa168.dtsi b/arch/arm/boot/dts/pxa168.dtsi
index b899e25cbb1b..7137f3550183 100644
--- a/arch/arm/boot/dts/pxa168.dtsi
+++ b/arch/arm/boot/dts/pxa168.dtsi
@@ -7,10 +7,12 @@
7 * publishhed by the Free Software Foundation. 7 * publishhed by the Free Software Foundation.
8 */ 8 */
9 9
10#include "skeleton.dtsi"
11#include <dt-bindings/clock/marvell,pxa168.h> 10#include <dt-bindings/clock/marvell,pxa168.h>
12 11
13/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15
14 aliases { 16 aliases {
15 serial0 = &uart1; 17 serial0 = &uart1;
16 serial1 = &uart2; 18 serial1 = &uart2;
diff --git a/arch/arm/boot/dts/pxa2xx.dtsi b/arch/arm/boot/dts/pxa2xx.dtsi
index e83879d97aea..bd6bf6d9300f 100644
--- a/arch/arm/boot/dts/pxa2xx.dtsi
+++ b/arch/arm/boot/dts/pxa2xx.dtsi
@@ -6,7 +6,6 @@
6 * Licensed under GPLv2 or later. 6 * Licensed under GPLv2 or later.
7 */ 7 */
8 8
9#include "skeleton.dtsi"
10#include "dt-bindings/clock/pxa-clock.h" 9#include "dt-bindings/clock/pxa-clock.h"
11 10
12#define PMGROUP(pin) #pin 11#define PMGROUP(pin) #pin
@@ -29,6 +28,8 @@
29 } 28 }
30 29
31/ { 30/ {
31 #address-cells = <1>;
32 #size-cells = <1>;
32 model = "Marvell PXA2xx family SoC"; 33 model = "Marvell PXA2xx family SoC";
33 compatible = "marvell,pxa2xx"; 34 compatible = "marvell,pxa2xx";
34 interrupt-parent = <&pxairq>; 35 interrupt-parent = <&pxairq>;
diff --git a/arch/arm/boot/dts/pxa910.dtsi b/arch/arm/boot/dts/pxa910.dtsi
index 0868f6729be1..c88553a8ee29 100644
--- a/arch/arm/boot/dts/pxa910.dtsi
+++ b/arch/arm/boot/dts/pxa910.dtsi
@@ -7,10 +7,12 @@
7 * publishhed by the Free Software Foundation. 7 * publishhed by the Free Software Foundation.
8 */ 8 */
9 9
10#include "skeleton.dtsi"
11#include <dt-bindings/clock/marvell,pxa910.h> 10#include <dt-bindings/clock/marvell,pxa910.h>
12 11
13/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15
14 aliases { 16 aliases {
15 serial0 = &uart1; 17 serial0 = &uart1;
16 serial1 = &uart2; 18 serial1 = &uart2;
diff --git a/arch/arm/boot/dts/qcom-apq8060-dragonboard.dts b/arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
index 497bb065eb9d..4e6c50d45cb2 100644
--- a/arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
+++ b/arch/arm/boot/dts/qcom-apq8060-dragonboard.dts
@@ -93,9 +93,8 @@
93 vdd-supply = <&pm8058_l14>; // 2.85V 93 vdd-supply = <&pm8058_l14>; // 2.85V
94 aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>; 94 aset-gpios = <&pm8058_gpio 35 GPIO_ACTIVE_LOW>;
95 capella,aset-resistance-ohms = <100000>; 95 capella,aset-resistance-ohms = <100000>;
96 /* GPIO34 has interrupt 225 on the PM8058 */
97 /* Trig on both edges - getting close or far away */ 96 /* Trig on both edges - getting close or far away */
98 interrupts-extended = <&pm8058 225 IRQ_TYPE_EDGE_BOTH>; 97 interrupts-extended = <&pm8058_gpio 34 IRQ_TYPE_EDGE_BOTH>;
99 /* MPP05 analog input to the XOADC */ 98 /* MPP05 analog input to the XOADC */
100 io-channels = <&xoadc 0x00 0x05>; 99 io-channels = <&xoadc 0x00 0x05>;
101 io-channel-names = "aout"; 100 io-channel-names = "aout";
@@ -515,9 +514,8 @@
515 ak8975@c { 514 ak8975@c {
516 compatible = "asahi-kasei,ak8975"; 515 compatible = "asahi-kasei,ak8975";
517 reg = <0x0c>; 516 reg = <0x0c>;
518 /* FIXME: GPIO33 has interrupt 224 on the PM8058 */ 517 interrupt-parent = <&pm8058_gpio>;
519 interrupt-parent = <&pm8058>; 518 interrupts = <33 IRQ_TYPE_EDGE_RISING>;
520 interrupts = <224 IRQ_TYPE_EDGE_RISING>;
521 pinctrl-names = "default"; 519 pinctrl-names = "default";
522 pinctrl-0 = <&dragon_ak8975_gpios>; 520 pinctrl-0 = <&dragon_ak8975_gpios>;
523 vid-supply = <&pm8058_lvs0>; // 1.8V 521 vid-supply = <&pm8058_lvs0>; // 1.8V
@@ -526,9 +524,8 @@
526 bmp085@77 { 524 bmp085@77 {
527 compatible = "bosch,bmp085"; 525 compatible = "bosch,bmp085";
528 reg = <0x77>; 526 reg = <0x77>;
529 /* FIXME: GPIO16 has interrupt 207 on the PM8058 */ 527 interrupt-parent = <&pm8058_gpio>;
530 interrupt-parent = <&pm8058>; 528 interrupts = <16 IRQ_TYPE_EDGE_RISING>;
531 interrupts = <207 IRQ_TYPE_EDGE_RISING>;
532 reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>; 529 reset-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>;
533 pinctrl-names = "default"; 530 pinctrl-names = "default";
534 pinctrl-0 = <&dragon_bmp085_gpios>; 531 pinctrl-0 = <&dragon_bmp085_gpios>;
@@ -539,12 +536,11 @@
539 compatible = "invensense,mpu3050"; 536 compatible = "invensense,mpu3050";
540 reg = <0x68>; 537 reg = <0x68>;
541 /* 538 /*
542 * GPIO17 has interrupt 208 on the 539 * GPIO17 is pulled high by a 10k
543 * PM8058, it is pulled high by a 10k
544 * resistor to VLOGIC so needs to be 540 * resistor to VLOGIC so needs to be
545 * active low/falling edge. 541 * active low/falling edge.
546 */ 542 */
547 interrupts-extended = <&pm8058 208 IRQ_TYPE_EDGE_FALLING>; 543 interrupts-extended = <&pm8058_gpio 17 IRQ_TYPE_EDGE_FALLING>;
548 pinctrl-names = "default"; 544 pinctrl-names = "default";
549 pinctrl-0 = <&dragon_mpu3050_gpios>; 545 pinctrl-0 = <&dragon_mpu3050_gpios>;
550 vlogic-supply = <&pm8058_lvs0>; // 1.8V 546 vlogic-supply = <&pm8058_lvs0>; // 1.8V
@@ -589,11 +585,10 @@
589 compatible = "smsc,lan9221", "smsc,lan9115"; 585 compatible = "smsc,lan9221", "smsc,lan9115";
590 reg = <2 0x0 0x100>; 586 reg = <2 0x0 0x100>;
591 /* 587 /*
592 * GPIO7 has interrupt 198 on the PM8058
593 * The second interrupt is the PME interrupt 588 * The second interrupt is the PME interrupt
594 * for network wakeup, connected to the TLMM. 589 * for network wakeup, connected to the TLMM.
595 */ 590 */
596 interrupts-extended = <&pm8058 198 IRQ_TYPE_EDGE_FALLING>, 591 interrupts-extended = <&pm8058_gpio 7 IRQ_TYPE_EDGE_FALLING>,
597 <&tlmm 29 IRQ_TYPE_EDGE_RISING>; 592 <&tlmm 29 IRQ_TYPE_EDGE_RISING>;
598 reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>; 593 reset-gpios = <&tlmm 30 GPIO_ACTIVE_LOW>;
599 vdd33a-supply = <&dragon_veth>; 594 vdd33a-supply = <&dragon_veth>;
diff --git a/arch/arm/boot/dts/qcom-apq8064.dtsi b/arch/arm/boot/dts/qcom-apq8064.dtsi
index 48c3cf427610..bd6907db615b 100644
--- a/arch/arm/boot/dts/qcom-apq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8064.dtsi
@@ -1,7 +1,6 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/; 2/dts-v1/;
3 3
4#include "skeleton.dtsi"
5#include <dt-bindings/clock/qcom,gcc-msm8960.h> 4#include <dt-bindings/clock/qcom,gcc-msm8960.h>
6#include <dt-bindings/reset/qcom,gcc-msm8960.h> 5#include <dt-bindings/reset/qcom,gcc-msm8960.h>
7#include <dt-bindings/clock/qcom,mmcc-msm8960.h> 6#include <dt-bindings/clock/qcom,mmcc-msm8960.h>
@@ -10,6 +9,8 @@
10#include <dt-bindings/interrupt-controller/irq.h> 9#include <dt-bindings/interrupt-controller/irq.h>
11#include <dt-bindings/interrupt-controller/arm-gic.h> 10#include <dt-bindings/interrupt-controller/arm-gic.h>
12/ { 11/ {
12 #address-cells = <1>;
13 #size-cells = <1>;
13 model = "Qualcomm APQ8064"; 14 model = "Qualcomm APQ8064";
14 compatible = "qcom,apq8064"; 15 compatible = "qcom,apq8064";
15 interrupt-parent = <&intc>; 16 interrupt-parent = <&intc>;
@@ -94,6 +95,11 @@
94 }; 95 };
95 }; 96 };
96 97
98 memory {
99 device_type = "memory";
100 reg = <0x0 0x0>;
101 };
102
97 thermal-zones { 103 thermal-zones {
98 cpu-thermal0 { 104 cpu-thermal0 {
99 polling-delay-passive = <250>; 105 polling-delay-passive = <250>;
@@ -705,50 +711,8 @@
705 compatible = "qcom,pm8921-gpio", 711 compatible = "qcom,pm8921-gpio",
706 "qcom,ssbi-gpio"; 712 "qcom,ssbi-gpio";
707 reg = <0x150>; 713 reg = <0x150>;
708 interrupts = <192 IRQ_TYPE_NONE>, 714 interrupt-controller;
709 <193 IRQ_TYPE_NONE>, 715 #interrupt-cells = <2>;
710 <194 IRQ_TYPE_NONE>,
711 <195 IRQ_TYPE_NONE>,
712 <196 IRQ_TYPE_NONE>,
713 <197 IRQ_TYPE_NONE>,
714 <198 IRQ_TYPE_NONE>,
715 <199 IRQ_TYPE_NONE>,
716 <200 IRQ_TYPE_NONE>,
717 <201 IRQ_TYPE_NONE>,
718 <202 IRQ_TYPE_NONE>,
719 <203 IRQ_TYPE_NONE>,
720 <204 IRQ_TYPE_NONE>,
721 <205 IRQ_TYPE_NONE>,
722 <206 IRQ_TYPE_NONE>,
723 <207 IRQ_TYPE_NONE>,
724 <208 IRQ_TYPE_NONE>,
725 <209 IRQ_TYPE_NONE>,
726 <210 IRQ_TYPE_NONE>,
727 <211 IRQ_TYPE_NONE>,
728 <212 IRQ_TYPE_NONE>,
729 <213 IRQ_TYPE_NONE>,
730 <214 IRQ_TYPE_NONE>,
731 <215 IRQ_TYPE_NONE>,
732 <216 IRQ_TYPE_NONE>,
733 <217 IRQ_TYPE_NONE>,
734 <218 IRQ_TYPE_NONE>,
735 <219 IRQ_TYPE_NONE>,
736 <220 IRQ_TYPE_NONE>,
737 <221 IRQ_TYPE_NONE>,
738 <222 IRQ_TYPE_NONE>,
739 <223 IRQ_TYPE_NONE>,
740 <224 IRQ_TYPE_NONE>,
741 <225 IRQ_TYPE_NONE>,
742 <226 IRQ_TYPE_NONE>,
743 <227 IRQ_TYPE_NONE>,
744 <228 IRQ_TYPE_NONE>,
745 <229 IRQ_TYPE_NONE>,
746 <230 IRQ_TYPE_NONE>,
747 <231 IRQ_TYPE_NONE>,
748 <232 IRQ_TYPE_NONE>,
749 <233 IRQ_TYPE_NONE>,
750 <234 IRQ_TYPE_NONE>,
751 <235 IRQ_TYPE_NONE>;
752 gpio-controller; 716 gpio-controller;
753 #gpio-cells = <2>; 717 #gpio-cells = <2>;
754 718
diff --git a/arch/arm/boot/dts/qcom-apq8084.dtsi b/arch/arm/boot/dts/qcom-apq8084.dtsi
index 899f28533ed7..0a0fb147ebb9 100644
--- a/arch/arm/boot/dts/qcom-apq8084.dtsi
+++ b/arch/arm/boot/dts/qcom-apq8084.dtsi
@@ -1,12 +1,12 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/; 2/dts-v1/;
3 3
4#include "skeleton.dtsi"
5
6#include <dt-bindings/clock/qcom,gcc-apq8084.h> 4#include <dt-bindings/clock/qcom,gcc-apq8084.h>
7#include <dt-bindings/gpio/gpio.h> 5#include <dt-bindings/gpio/gpio.h>
8 6
9/ { 7/ {
8 #address-cells = <1>;
9 #size-cells = <1>;
10 model = "Qualcomm APQ 8084"; 10 model = "Qualcomm APQ 8084";
11 compatible = "qcom,apq8084"; 11 compatible = "qcom,apq8084";
12 interrupt-parent = <&intc>; 12 interrupt-parent = <&intc>;
@@ -87,6 +87,11 @@
87 }; 87 };
88 }; 88 };
89 89
90 memory {
91 device_type = "memory";
92 reg = <0x0 0x0>;
93 };
94
90 firmware { 95 firmware {
91 scm { 96 scm {
92 compatible = "qcom,scm"; 97 compatible = "qcom,scm";
diff --git a/arch/arm/boot/dts/qcom-ipq4019.dtsi b/arch/arm/boot/dts/qcom-ipq4019.dtsi
index 2d56008d8d6b..9e75f97770ce 100644
--- a/arch/arm/boot/dts/qcom-ipq4019.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq4019.dtsi
@@ -13,12 +13,14 @@
13 13
14/dts-v1/; 14/dts-v1/;
15 15
16#include "skeleton.dtsi"
17#include <dt-bindings/clock/qcom,gcc-ipq4019.h> 16#include <dt-bindings/clock/qcom,gcc-ipq4019.h>
18#include <dt-bindings/interrupt-controller/arm-gic.h> 17#include <dt-bindings/interrupt-controller/arm-gic.h>
19#include <dt-bindings/interrupt-controller/irq.h> 18#include <dt-bindings/interrupt-controller/irq.h>
20 19
21/ { 20/ {
21 #address-cells = <1>;
22 #size-cells = <1>;
23
22 model = "Qualcomm Technologies, Inc. IPQ4019"; 24 model = "Qualcomm Technologies, Inc. IPQ4019";
23 compatible = "qcom,ipq4019"; 25 compatible = "qcom,ipq4019";
24 interrupt-parent = <&intc>; 26 interrupt-parent = <&intc>;
@@ -133,6 +135,11 @@
133 }; 135 };
134 }; 136 };
135 137
138 memory {
139 device_type = "memory";
140 reg = <0x0 0x0>;
141 };
142
136 pmu { 143 pmu {
137 compatible = "arm,cortex-a7-pmu"; 144 compatible = "arm,cortex-a7-pmu";
138 interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) | 145 interrupts = <GIC_PPI 7 (GIC_CPU_MASK_SIMPLE(4) |
@@ -396,7 +403,7 @@
396 ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000 403 ranges = <0x81000000 0 0x40200000 0x40200000 0 0x00100000
397 0x82000000 0 0x40300000 0x40300000 0 0x400000>; 404 0x82000000 0 0x40300000 0x40300000 0 0x400000>;
398 405
399 interrupts = <GIC_SPI 141 IRQ_TYPE_EDGE_RISING>; 406 interrupts = <GIC_SPI 141 IRQ_TYPE_LEVEL_HIGH>;
400 interrupt-names = "msi"; 407 interrupt-names = "msi";
401 #interrupt-cells = <1>; 408 #interrupt-cells = <1>;
402 interrupt-map-mask = <0 0 0 0x7>; 409 interrupt-map-mask = <0 0 0 0x7>;
diff --git a/arch/arm/boot/dts/qcom-ipq8064.dtsi b/arch/arm/boot/dts/qcom-ipq8064.dtsi
index f793cd1ad6d0..16c0da97932c 100644
--- a/arch/arm/boot/dts/qcom-ipq8064.dtsi
+++ b/arch/arm/boot/dts/qcom-ipq8064.dtsi
@@ -1,7 +1,6 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/; 2/dts-v1/;
3 3
4#include "skeleton.dtsi"
5#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
6#include <dt-bindings/clock/qcom,gcc-ipq806x.h> 5#include <dt-bindings/clock/qcom,gcc-ipq806x.h>
7#include <dt-bindings/clock/qcom,lcc-ipq806x.h> 6#include <dt-bindings/clock/qcom,lcc-ipq806x.h>
@@ -11,6 +10,8 @@
11#include <dt-bindings/interrupt-controller/arm-gic.h> 10#include <dt-bindings/interrupt-controller/arm-gic.h>
12 11
13/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
14 model = "Qualcomm IPQ8064"; 15 model = "Qualcomm IPQ8064";
15 compatible = "qcom,ipq8064"; 16 compatible = "qcom,ipq8064";
16 interrupt-parent = <&intc>; 17 interrupt-parent = <&intc>;
@@ -45,6 +46,11 @@
45 }; 46 };
46 }; 47 };
47 48
49 memory {
50 device_type = "memory";
51 reg = <0x0 0x0>;
52 };
53
48 cpu-pmu { 54 cpu-pmu {
49 compatible = "qcom,krait-pmu"; 55 compatible = "qcom,krait-pmu";
50 interrupts = <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | 56 interrupts = <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) |
diff --git a/arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi b/arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi
index 7869898e392d..26b034bd19d2 100644
--- a/arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi
+++ b/arch/arm/boot/dts/qcom-mdm9615-wp8548.dtsi
@@ -50,6 +50,7 @@
50 compatible = "swir,wp8548", "qcom,mdm9615"; 50 compatible = "swir,wp8548", "qcom,mdm9615";
51 51
52 memory { 52 memory {
53 device_type = "memory";
53 reg = <0x48000000 0x7F00000>; 54 reg = <0x48000000 0x7F00000>;
54 }; 55 };
55}; 56};
diff --git a/arch/arm/boot/dts/qcom-mdm9615.dtsi b/arch/arm/boot/dts/qcom-mdm9615.dtsi
index c852b69229c9..02afc6a42005 100644
--- a/arch/arm/boot/dts/qcom-mdm9615.dtsi
+++ b/arch/arm/boot/dts/qcom-mdm9615.dtsi
@@ -45,8 +45,6 @@
45 45
46/dts-v1/; 46/dts-v1/;
47 47
48/include/ "skeleton.dtsi"
49
50#include <dt-bindings/interrupt-controller/arm-gic.h> 48#include <dt-bindings/interrupt-controller/arm-gic.h>
51#include <dt-bindings/clock/qcom,gcc-mdm9615.h> 49#include <dt-bindings/clock/qcom,gcc-mdm9615.h>
52#include <dt-bindings/reset/qcom,gcc-mdm9615.h> 50#include <dt-bindings/reset/qcom,gcc-mdm9615.h>
@@ -54,6 +52,8 @@
54#include <dt-bindings/soc/qcom,gsbi.h> 52#include <dt-bindings/soc/qcom,gsbi.h>
55 53
56/ { 54/ {
55 #address-cells = <1>;
56 #size-cells = <1>;
57 model = "Qualcomm MDM9615"; 57 model = "Qualcomm MDM9615";
58 compatible = "qcom,mdm9615"; 58 compatible = "qcom,mdm9615";
59 interrupt-parent = <&intc>; 59 interrupt-parent = <&intc>;
@@ -323,13 +323,8 @@
323 323
324 pmicgpio: gpio@150 { 324 pmicgpio: gpio@150 {
325 compatible = "qcom,pm8018-gpio", "qcom,ssbi-gpio"; 325 compatible = "qcom,pm8018-gpio", "qcom,ssbi-gpio";
326 interrupt-parent = <&pmicintc>; 326 interrupt-controller;
327 interrupts = <24 IRQ_TYPE_NONE>, 327 #interrupt-cells = <2>;
328 <25 IRQ_TYPE_NONE>,
329 <26 IRQ_TYPE_NONE>,
330 <27 IRQ_TYPE_NONE>,
331 <28 IRQ_TYPE_NONE>,
332 <29 IRQ_TYPE_NONE>;
333 gpio-controller; 328 gpio-controller;
334 #gpio-cells = <2>; 329 #gpio-cells = <2>;
335 }; 330 };
diff --git a/arch/arm/boot/dts/qcom-msm8660.dtsi b/arch/arm/boot/dts/qcom-msm8660.dtsi
index 70698941f64c..65a994f0e09b 100644
--- a/arch/arm/boot/dts/qcom-msm8660.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8660.dtsi
@@ -1,14 +1,14 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/; 2/dts-v1/;
3 3
4/include/ "skeleton.dtsi"
5
6#include <dt-bindings/interrupt-controller/irq.h> 4#include <dt-bindings/interrupt-controller/irq.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h> 5#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/clock/qcom,gcc-msm8660.h> 6#include <dt-bindings/clock/qcom,gcc-msm8660.h>
9#include <dt-bindings/soc/qcom,gsbi.h> 7#include <dt-bindings/soc/qcom,gsbi.h>
10 8
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 model = "Qualcomm MSM8660"; 12 model = "Qualcomm MSM8660";
13 compatible = "qcom,msm8660"; 13 compatible = "qcom,msm8660";
14 interrupt-parent = <&intc>; 14 interrupt-parent = <&intc>;
@@ -39,6 +39,11 @@
39 }; 39 };
40 }; 40 };
41 41
42 memory {
43 device_type = "memory";
44 reg = <0x0 0x0>;
45 };
46
42 cpu-pmu { 47 cpu-pmu {
43 compatible = "qcom,scorpion-mp-pmu"; 48 compatible = "qcom,scorpion-mp-pmu";
44 interrupts = <1 9 0x304>; 49 interrupts = <1 9 0x304>;
@@ -133,6 +138,7 @@
133 #address-cells = <1>; 138 #address-cells = <1>;
134 #size-cells = <1>; 139 #size-cells = <1>;
135 ranges; 140 ranges;
141 status = "disabled";
136 142
137 syscon-tcsr = <&tcsr>; 143 syscon-tcsr = <&tcsr>;
138 144
@@ -140,7 +146,7 @@
140 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 146 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
141 reg = <0x16540000 0x1000>, 147 reg = <0x16540000 0x1000>,
142 <0x16500000 0x1000>; 148 <0x16500000 0x1000>;
143 interrupts = <GIC_SPI 156 IRQ_TYPE_NONE>; 149 interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
144 clocks = <&gcc GSBI6_UART_CLK>, <&gcc GSBI6_H_CLK>; 150 clocks = <&gcc GSBI6_UART_CLK>, <&gcc GSBI6_H_CLK>;
145 clock-names = "core", "iface"; 151 clock-names = "core", "iface";
146 status = "disabled"; 152 status = "disabled";
@@ -149,7 +155,7 @@
149 gsbi6_i2c: i2c@16580000 { 155 gsbi6_i2c: i2c@16580000 {
150 compatible = "qcom,i2c-qup-v1.1.1"; 156 compatible = "qcom,i2c-qup-v1.1.1";
151 reg = <0x16580000 0x1000>; 157 reg = <0x16580000 0x1000>;
152 interrupts = <GIC_SPI 157 IRQ_TYPE_NONE>; 158 interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
153 clocks = <&gcc GSBI6_QUP_CLK>, <&gcc GSBI6_H_CLK>; 159 clocks = <&gcc GSBI6_QUP_CLK>, <&gcc GSBI6_H_CLK>;
154 clock-names = "core", "iface"; 160 clock-names = "core", "iface";
155 #address-cells = <1>; 161 #address-cells = <1>;
@@ -167,6 +173,7 @@
167 #address-cells = <1>; 173 #address-cells = <1>;
168 #size-cells = <1>; 174 #size-cells = <1>;
169 ranges; 175 ranges;
176 status = "disabled";
170 177
171 syscon-tcsr = <&tcsr>; 178 syscon-tcsr = <&tcsr>;
172 179
@@ -174,7 +181,7 @@
174 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 181 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
175 reg = <0x16640000 0x1000>, 182 reg = <0x16640000 0x1000>,
176 <0x16600000 0x1000>; 183 <0x16600000 0x1000>;
177 interrupts = <GIC_SPI 158 IRQ_TYPE_NONE>; 184 interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
178 clocks = <&gcc GSBI7_UART_CLK>, <&gcc GSBI7_H_CLK>; 185 clocks = <&gcc GSBI7_UART_CLK>, <&gcc GSBI7_H_CLK>;
179 clock-names = "core", "iface"; 186 clock-names = "core", "iface";
180 status = "disabled"; 187 status = "disabled";
@@ -183,7 +190,7 @@
183 gsbi7_i2c: i2c@16680000 { 190 gsbi7_i2c: i2c@16680000 {
184 compatible = "qcom,i2c-qup-v1.1.1"; 191 compatible = "qcom,i2c-qup-v1.1.1";
185 reg = <0x16680000 0x1000>; 192 reg = <0x16680000 0x1000>;
186 interrupts = <GIC_SPI 159 IRQ_TYPE_NONE>; 193 interrupts = <GIC_SPI 159 IRQ_TYPE_LEVEL_HIGH>;
187 clocks = <&gcc GSBI7_QUP_CLK>, <&gcc GSBI7_H_CLK>; 194 clocks = <&gcc GSBI7_QUP_CLK>, <&gcc GSBI7_H_CLK>;
188 clock-names = "core", "iface"; 195 clock-names = "core", "iface";
189 #address-cells = <1>; 196 #address-cells = <1>;
@@ -207,7 +214,7 @@
207 gsbi8_i2c: i2c@19880000 { 214 gsbi8_i2c: i2c@19880000 {
208 compatible = "qcom,i2c-qup-v1.1.1"; 215 compatible = "qcom,i2c-qup-v1.1.1";
209 reg = <0x19880000 0x1000>; 216 reg = <0x19880000 0x1000>;
210 interrupts = <GIC_SPI 161 IRQ_TYPE_NONE>; 217 interrupts = <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>;
211 clocks = <&gcc GSBI8_QUP_CLK>, <&gcc GSBI8_H_CLK>; 218 clocks = <&gcc GSBI8_QUP_CLK>, <&gcc GSBI8_H_CLK>;
212 clock-names = "core", "iface"; 219 clock-names = "core", "iface";
213 #address-cells = <1>; 220 #address-cells = <1>;
@@ -232,7 +239,7 @@
232 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm"; 239 compatible = "qcom,msm-uartdm-v1.3", "qcom,msm-uartdm";
233 reg = <0x19c40000 0x1000>, 240 reg = <0x19c40000 0x1000>,
234 <0x19c00000 0x1000>; 241 <0x19c00000 0x1000>;
235 interrupts = <0 195 IRQ_TYPE_NONE>; 242 interrupts = <0 195 IRQ_TYPE_LEVEL_HIGH>;
236 clocks = <&gcc GSBI12_UART_CLK>, <&gcc GSBI12_H_CLK>; 243 clocks = <&gcc GSBI12_UART_CLK>, <&gcc GSBI12_H_CLK>;
237 clock-names = "core", "iface"; 244 clock-names = "core", "iface";
238 status = "disabled"; 245 status = "disabled";
@@ -241,7 +248,7 @@
241 gsbi12_i2c: i2c@19c80000 { 248 gsbi12_i2c: i2c@19c80000 {
242 compatible = "qcom,i2c-qup-v1.1.1"; 249 compatible = "qcom,i2c-qup-v1.1.1";
243 reg = <0x19c80000 0x1000>; 250 reg = <0x19c80000 0x1000>;
244 interrupts = <0 196 IRQ_TYPE_NONE>; 251 interrupts = <0 196 IRQ_TYPE_LEVEL_HIGH>;
245 clocks = <&gcc GSBI12_QUP_CLK>, <&gcc GSBI12_H_CLK>; 252 clocks = <&gcc GSBI12_QUP_CLK>, <&gcc GSBI12_H_CLK>;
246 clock-names = "core", "iface"; 253 clock-names = "core", "iface";
247 #address-cells = <1>; 254 #address-cells = <1>;
@@ -285,51 +292,8 @@
285 compatible = "qcom,pm8058-gpio", 292 compatible = "qcom,pm8058-gpio",
286 "qcom,ssbi-gpio"; 293 "qcom,ssbi-gpio";
287 reg = <0x150>; 294 reg = <0x150>;
288 interrupt-parent = <&pm8058>; 295 interrupt-controller;
289 interrupts = <192 IRQ_TYPE_NONE>, 296 #interrupt-cells = <2>;
290 <193 IRQ_TYPE_NONE>,
291 <194 IRQ_TYPE_NONE>,
292 <195 IRQ_TYPE_NONE>,
293 <196 IRQ_TYPE_NONE>,
294 <197 IRQ_TYPE_NONE>,
295 <198 IRQ_TYPE_NONE>,
296 <199 IRQ_TYPE_NONE>,
297 <200 IRQ_TYPE_NONE>,
298 <201 IRQ_TYPE_NONE>,
299 <202 IRQ_TYPE_NONE>,
300 <203 IRQ_TYPE_NONE>,
301 <204 IRQ_TYPE_NONE>,
302 <205 IRQ_TYPE_NONE>,
303 <206 IRQ_TYPE_NONE>,
304 <207 IRQ_TYPE_NONE>,
305 <208 IRQ_TYPE_NONE>,
306 <209 IRQ_TYPE_NONE>,
307 <210 IRQ_TYPE_NONE>,
308 <211 IRQ_TYPE_NONE>,
309 <212 IRQ_TYPE_NONE>,
310 <213 IRQ_TYPE_NONE>,
311 <214 IRQ_TYPE_NONE>,
312 <215 IRQ_TYPE_NONE>,
313 <216 IRQ_TYPE_NONE>,
314 <217 IRQ_TYPE_NONE>,
315 <218 IRQ_TYPE_NONE>,
316 <219 IRQ_TYPE_NONE>,
317 <220 IRQ_TYPE_NONE>,
318 <221 IRQ_TYPE_NONE>,
319 <222 IRQ_TYPE_NONE>,
320 <223 IRQ_TYPE_NONE>,
321 <224 IRQ_TYPE_NONE>,
322 <225 IRQ_TYPE_NONE>,
323 <226 IRQ_TYPE_NONE>,
324 <227 IRQ_TYPE_NONE>,
325 <228 IRQ_TYPE_NONE>,
326 <229 IRQ_TYPE_NONE>,
327 <230 IRQ_TYPE_NONE>,
328 <231 IRQ_TYPE_NONE>,
329 <232 IRQ_TYPE_NONE>,
330 <233 IRQ_TYPE_NONE>,
331 <234 IRQ_TYPE_NONE>,
332 <235 IRQ_TYPE_NONE>;
333 gpio-controller; 297 gpio-controller;
334 #gpio-cells = <2>; 298 #gpio-cells = <2>;
335 299
diff --git a/arch/arm/boot/dts/qcom-msm8960.dtsi b/arch/arm/boot/dts/qcom-msm8960.dtsi
index 1733d8f40ab1..f2aeaccdc1ad 100644
--- a/arch/arm/boot/dts/qcom-msm8960.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8960.dtsi
@@ -1,14 +1,14 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/; 2/dts-v1/;
3 3
4/include/ "skeleton.dtsi"
5
6#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
7#include <dt-bindings/clock/qcom,gcc-msm8960.h> 5#include <dt-bindings/clock/qcom,gcc-msm8960.h>
8#include <dt-bindings/mfd/qcom-rpm.h> 6#include <dt-bindings/mfd/qcom-rpm.h>
9#include <dt-bindings/soc/qcom,gsbi.h> 7#include <dt-bindings/soc/qcom,gsbi.h>
10 8
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 model = "Qualcomm MSM8960"; 12 model = "Qualcomm MSM8960";
13 compatible = "qcom,msm8960"; 13 compatible = "qcom,msm8960";
14 interrupt-parent = <&intc>; 14 interrupt-parent = <&intc>;
@@ -44,6 +44,11 @@
44 }; 44 };
45 }; 45 };
46 46
47 memory {
48 device_type = "memory";
49 reg = <0x0 0x0>;
50 };
51
47 cpu-pmu { 52 cpu-pmu {
48 compatible = "qcom,krait-pmu"; 53 compatible = "qcom,krait-pmu";
49 interrupts = <1 10 0x304>; 54 interrupts = <1 10 0x304>;
diff --git a/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts b/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
index 51444c53fc72..b3b04736a159 100644
--- a/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
+++ b/arch/arm/boot/dts/qcom-msm8974-lge-nexus5-hammerhead.dts
@@ -220,6 +220,20 @@
220 }; 220 };
221 }; 221 };
222 }; 222 };
223
224 vreg_wlan: wlan-regulator {
225 compatible = "regulator-fixed";
226
227 regulator-name = "wl-reg";
228 regulator-min-microvolt = <3300000>;
229 regulator-max-microvolt = <3300000>;
230
231 gpio = <&msmgpio 26 GPIO_ACTIVE_HIGH>;
232 enable-active-high;
233
234 pinctrl-names = "default";
235 pinctrl-0 = <&wlan_regulator_pin>;
236 };
223}; 237};
224 238
225&soc { 239&soc {
@@ -242,6 +256,30 @@
242 }; 256 };
243 }; 257 };
244 258
259 sdhc2_pin_a: sdhc2-pin-active {
260 clk {
261 pins = "sdc2_clk";
262 drive-strength = <6>;
263 bias-disable;
264 };
265
266 cmd-data {
267 pins = "sdc2_cmd", "sdc2_data";
268 drive-strength = <6>;
269 bias-pull-up;
270 };
271 };
272
273 i2c1_pins: i2c1 {
274 mux {
275 pins = "gpio2", "gpio3";
276 function = "blsp_i2c1";
277
278 drive-strength = <2>;
279 bias-disable;
280 };
281 };
282
245 i2c3_pins: i2c3 { 283 i2c3_pins: i2c3 {
246 mux { 284 mux {
247 pins = "gpio10", "gpio11"; 285 pins = "gpio10", "gpio11";
@@ -283,6 +321,32 @@
283 pinctrl-0 = <&sdhc1_pin_a>; 321 pinctrl-0 = <&sdhc1_pin_a>;
284 }; 322 };
285 323
324 sdhci@f98a4900 {
325 status = "ok";
326
327 max-frequency = <100000000>;
328 bus-width = <4>;
329 non-removable;
330 vmmc-supply = <&vreg_wlan>;
331 vqmmc-supply = <&pm8941_s3>;
332
333 pinctrl-names = "default";
334 pinctrl-0 = <&sdhc2_pin_a>;
335
336 #address-cells = <1>;
337 #size-cells = <0>;
338
339 bcrmf@1 {
340 compatible = "brcm,bcm4339-fmac", "brcm,bcm4329-fmac";
341 reg = <1>;
342
343 brcm,drive-strength = <10>;
344
345 pinctrl-names = "default";
346 pinctrl-0 = <&wlan_sleep_clk_pin>;
347 };
348 };
349
286 gpio-keys { 350 gpio-keys {
287 compatible = "gpio-keys"; 351 compatible = "gpio-keys";
288 input-name = "gpio-keys"; 352 input-name = "gpio-keys";
@@ -342,6 +406,24 @@
342 }; 406 };
343 }; 407 };
344 408
409 i2c@f9923000 {
410 status = "ok";
411 pinctrl-names = "default";
412 pinctrl-0 = <&i2c1_pins>;
413 clock-frequency = <100000>;
414 qcom,src-freq = <50000000>;
415
416 charger: bq24192@6b {
417 compatible = "ti,bq24192";
418 reg = <0x6b>;
419 interrupts-extended = <&spmi_bus 0 0xd5 0 IRQ_TYPE_EDGE_FALLING>;
420
421 omit-battery-class;
422
423 usb_otg_vbus: usb-otg-vbus { };
424 };
425 };
426
345 i2c@f9925000 { 427 i2c@f9925000 {
346 status = "ok"; 428 status = "ok";
347 pinctrl-names = "default"; 429 pinctrl-names = "default";
@@ -359,6 +441,31 @@
359 amstaos,proximity-diodes = <0>; 441 amstaos,proximity-diodes = <0>;
360 }; 442 };
361 }; 443 };
444
445 usb@f9a55000 {
446 status = "ok";
447
448 phys = <&usb_hs1_phy>;
449 phy-select = <&tcsr 0xb000 0>;
450
451 extcon = <&charger>, <&usb_id>;
452 vbus-supply = <&usb_otg_vbus>;
453
454 hnp-disable;
455 srp-disable;
456 adp-disable;
457
458 ulpi {
459 phy@a {
460 status = "ok";
461
462 v1p8-supply = <&pm8941_l6>;
463 v3p3-supply = <&pm8941_l24>;
464
465 qcom,init-seq = /bits/ 8 <0x1 0x64>;
466 };
467 };
468 };
362}; 469};
363 470
364&spmi_bus { 471&spmi_bus {
@@ -371,6 +478,29 @@
371 bias-pull-up; 478 bias-pull-up;
372 power-source = <PM8941_GPIO_S3>; 479 power-source = <PM8941_GPIO_S3>;
373 }; 480 };
481
482 wlan_sleep_clk_pin: wl-sleep-clk {
483 pins = "gpio16";
484 function = "func2";
485
486 output-high;
487 power-source = <PM8941_GPIO_S3>;
488 };
489
490 wlan_regulator_pin: wl-reg-active {
491 pins = "gpio17";
492 function = "normal";
493
494 bias-disable;
495 power-source = <PM8941_GPIO_S3>;
496 };
497
498 otg {
499 gpio-hog;
500 gpios = <35 GPIO_ACTIVE_HIGH>;
501 output-high;
502 line-name = "otg-gpio";
503 };
374 }; 504 };
375 }; 505 };
376}; 506};
diff --git a/arch/arm/boot/dts/qcom-msm8974.dtsi b/arch/arm/boot/dts/qcom-msm8974.dtsi
index ca266a5f021d..45b5c8ef0374 100644
--- a/arch/arm/boot/dts/qcom-msm8974.dtsi
+++ b/arch/arm/boot/dts/qcom-msm8974.dtsi
@@ -6,9 +6,10 @@
6#include <dt-bindings/clock/qcom,rpmcc.h> 6#include <dt-bindings/clock/qcom,rpmcc.h>
7#include <dt-bindings/reset/qcom,gcc-msm8974.h> 7#include <dt-bindings/reset/qcom,gcc-msm8974.h>
8#include <dt-bindings/gpio/gpio.h> 8#include <dt-bindings/gpio/gpio.h>
9#include "skeleton.dtsi"
10 9
11/ { 10/ {
11 #address-cells = <1>;
12 #size-cells = <1>;
12 model = "Qualcomm MSM8974"; 13 model = "Qualcomm MSM8974";
13 compatible = "qcom,msm8974"; 14 compatible = "qcom,msm8974";
14 interrupt-parent = <&intc>; 15 interrupt-parent = <&intc>;
@@ -130,6 +131,11 @@
130 }; 131 };
131 }; 132 };
132 133
134 memory {
135 device_type = "memory";
136 reg = <0x0 0x0>;
137 };
138
133 thermal-zones { 139 thermal-zones {
134 cpu-thermal0 { 140 cpu-thermal0 {
135 polling-delay-passive = <250>; 141 polling-delay-passive = <250>;
@@ -706,6 +712,17 @@
706 interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>; 712 interrupts = <GIC_SPI 208 IRQ_TYPE_LEVEL_HIGH>;
707 }; 713 };
708 714
715 i2c@f9923000 {
716 status = "disabled";
717 compatible = "qcom,i2c-qup-v2.1.1";
718 reg = <0xf9923000 0x1000>;
719 interrupts = <0 95 IRQ_TYPE_LEVEL_HIGH>;
720 clocks = <&gcc GCC_BLSP1_QUP1_I2C_APPS_CLK>, <&gcc GCC_BLSP1_AHB_CLK>;
721 clock-names = "core", "iface";
722 #address-cells = <1>;
723 #size-cells = <0>;
724 };
725
709 i2c@f9924000 { 726 i2c@f9924000 {
710 status = "disabled"; 727 status = "disabled";
711 compatible = "qcom,i2c-qup-v2.1.1"; 728 compatible = "qcom,i2c-qup-v2.1.1";
diff --git a/arch/arm/boot/dts/qcom-pm8941.dtsi b/arch/arm/boot/dts/qcom-pm8941.dtsi
index 2515c5c217ac..f198480c8ef4 100644
--- a/arch/arm/boot/dts/qcom-pm8941.dtsi
+++ b/arch/arm/boot/dts/qcom-pm8941.dtsi
@@ -63,43 +63,10 @@
63 compatible = "qcom,pm8941-gpio", "qcom,spmi-gpio"; 63 compatible = "qcom,pm8941-gpio", "qcom,spmi-gpio";
64 reg = <0xc000>; 64 reg = <0xc000>;
65 gpio-controller; 65 gpio-controller;
66 gpio-ranges = <&pm8941_gpios 0 0 36>;
66 #gpio-cells = <2>; 67 #gpio-cells = <2>;
67 interrupts = <0 0xc0 0 IRQ_TYPE_NONE>, 68 interrupt-controller;
68 <0 0xc1 0 IRQ_TYPE_NONE>, 69 #interrupt-cells = <2>;
69 <0 0xc2 0 IRQ_TYPE_NONE>,
70 <0 0xc3 0 IRQ_TYPE_NONE>,
71 <0 0xc4 0 IRQ_TYPE_NONE>,
72 <0 0xc5 0 IRQ_TYPE_NONE>,
73 <0 0xc6 0 IRQ_TYPE_NONE>,
74 <0 0xc7 0 IRQ_TYPE_NONE>,
75 <0 0xc8 0 IRQ_TYPE_NONE>,
76 <0 0xc9 0 IRQ_TYPE_NONE>,
77 <0 0xca 0 IRQ_TYPE_NONE>,
78 <0 0xcb 0 IRQ_TYPE_NONE>,
79 <0 0xcc 0 IRQ_TYPE_NONE>,
80 <0 0xcd 0 IRQ_TYPE_NONE>,
81 <0 0xce 0 IRQ_TYPE_NONE>,
82 <0 0xcf 0 IRQ_TYPE_NONE>,
83 <0 0xd0 0 IRQ_TYPE_NONE>,
84 <0 0xd1 0 IRQ_TYPE_NONE>,
85 <0 0xd2 0 IRQ_TYPE_NONE>,
86 <0 0xd3 0 IRQ_TYPE_NONE>,
87 <0 0xd4 0 IRQ_TYPE_NONE>,
88 <0 0xd5 0 IRQ_TYPE_NONE>,
89 <0 0xd6 0 IRQ_TYPE_NONE>,
90 <0 0xd7 0 IRQ_TYPE_NONE>,
91 <0 0xd8 0 IRQ_TYPE_NONE>,
92 <0 0xd9 0 IRQ_TYPE_NONE>,
93 <0 0xda 0 IRQ_TYPE_NONE>,
94 <0 0xdb 0 IRQ_TYPE_NONE>,
95 <0 0xdc 0 IRQ_TYPE_NONE>,
96 <0 0xdd 0 IRQ_TYPE_NONE>,
97 <0 0xde 0 IRQ_TYPE_NONE>,
98 <0 0xdf 0 IRQ_TYPE_NONE>,
99 <0 0xe0 0 IRQ_TYPE_NONE>,
100 <0 0xe1 0 IRQ_TYPE_NONE>,
101 <0 0xe2 0 IRQ_TYPE_NONE>,
102 <0 0xe3 0 IRQ_TYPE_NONE>;
103 70
104 boost_bypass_n_pin: boost-bypass { 71 boost_bypass_n_pin: boost-bypass {
105 pins = "gpio21"; 72 pins = "gpio21";
diff --git a/arch/arm/boot/dts/qcom-pma8084.dtsi b/arch/arm/boot/dts/qcom-pma8084.dtsi
index aac7e73b6872..8f5ea7add20f 100644
--- a/arch/arm/boot/dts/qcom-pma8084.dtsi
+++ b/arch/arm/boot/dts/qcom-pma8084.dtsi
@@ -32,28 +32,8 @@
32 reg = <0xc000>; 32 reg = <0xc000>;
33 gpio-controller; 33 gpio-controller;
34 #gpio-cells = <2>; 34 #gpio-cells = <2>;
35 interrupts = <0 0xc0 0 IRQ_TYPE_NONE>, 35 interrupt-controller;
36 <0 0xc1 0 IRQ_TYPE_NONE>, 36 #interrupt-cells = <2>;
37 <0 0xc2 0 IRQ_TYPE_NONE>,
38 <0 0xc3 0 IRQ_TYPE_NONE>,
39 <0 0xc4 0 IRQ_TYPE_NONE>,
40 <0 0xc5 0 IRQ_TYPE_NONE>,
41 <0 0xc6 0 IRQ_TYPE_NONE>,
42 <0 0xc7 0 IRQ_TYPE_NONE>,
43 <0 0xc8 0 IRQ_TYPE_NONE>,
44 <0 0xc9 0 IRQ_TYPE_NONE>,
45 <0 0xca 0 IRQ_TYPE_NONE>,
46 <0 0xcb 0 IRQ_TYPE_NONE>,
47 <0 0xcc 0 IRQ_TYPE_NONE>,
48 <0 0xcd 0 IRQ_TYPE_NONE>,
49 <0 0xce 0 IRQ_TYPE_NONE>,
50 <0 0xcf 0 IRQ_TYPE_NONE>,
51 <0 0xd0 0 IRQ_TYPE_NONE>,
52 <0 0xd1 0 IRQ_TYPE_NONE>,
53 <0 0xd2 0 IRQ_TYPE_NONE>,
54 <0 0xd3 0 IRQ_TYPE_NONE>,
55 <0 0xd4 0 IRQ_TYPE_NONE>,
56 <0 0xd5 0 IRQ_TYPE_NONE>;
57 }; 37 };
58 38
59 pma8084_mpps: mpps@a000 { 39 pma8084_mpps: mpps@a000 {
diff --git a/arch/arm/boot/dts/r7s9210-rza2mevb.dts b/arch/arm/boot/dts/r7s9210-rza2mevb.dts
new file mode 100644
index 000000000000..991e09de1219
--- /dev/null
+++ b/arch/arm/boot/dts/r7s9210-rza2mevb.dts
@@ -0,0 +1,82 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the RZA2MEVB board
4 *
5 * Copyright (C) 2018 Renesas Electronics
6 *
7 */
8
9/dts-v1/;
10#include "r7s9210.dtsi"
11#include <dt-bindings/gpio/gpio.h>
12#include <dt-bindings/pinctrl/r7s9210-pinctrl.h>
13
14/ {
15 model = "RZA2MEVB";
16 compatible = "renesas,rza2mevb", "renesas,r7s9210";
17
18 aliases {
19 serial0 = &scif4;
20 };
21
22 chosen {
23 bootargs = "ignore_loglevel";
24 stdout-path = "serial0:115200n8";
25 };
26
27 memory@40000000 {
28 device_type = "memory";
29 reg = <0x40000000 0x00800000>; /* HyperRAM */
30 };
31
32 lbsc {
33 #address-cells = <1>;
34 #size-cells = <1>;
35 };
36
37 leds {
38 compatible = "gpio-leds";
39
40 red {
41 gpios = <&pinctrl RZA2_PIN(PORT6, 0) GPIO_ACTIVE_HIGH>;
42 };
43 green {
44 gpios = <&pinctrl RZA2_PIN(PORTC, 1) GPIO_ACTIVE_HIGH>;
45 };
46 };
47};
48
49/* EXTAL */
50&extal_clk {
51 clock-frequency = <24000000>; /* 24MHz */
52};
53
54/* RTC_X1 */
55&rtc_x1_clk {
56 clock-frequency = <32768>;
57};
58
59&pinctrl {
60 /* Serial Console */
61 scif4_pins: serial4 {
62 pinmux = <RZA2_PINMUX(PORT9, 0, 4)>, /* TxD4 */
63 <RZA2_PINMUX(PORT9, 1, 4)>; /* RxD4 */
64 };
65};
66
67/* High resolution System tick timers */
68&ostm0 {
69 status = "okay";
70};
71
72&ostm1 {
73 status = "okay";
74};
75
76/* Serial Console */
77&scif4 {
78 pinctrl-names = "default";
79 pinctrl-0 = <&scif4_pins>;
80
81 status = "okay";
82};
diff --git a/arch/arm/boot/dts/r7s9210.dtsi b/arch/arm/boot/dts/r7s9210.dtsi
new file mode 100644
index 000000000000..22baa96f5974
--- /dev/null
+++ b/arch/arm/boot/dts/r7s9210.dtsi
@@ -0,0 +1,218 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Device Tree Source for the R7S9210 SoC
4 *
5 * Copyright (C) 2018 Renesas Electronics Corporation
6 *
7 */
8
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/clock/r7s9210-cpg-mssr.h>
11
12/ {
13 compatible = "renesas,r7s9210";
14 interrupt-parent = <&gic>;
15 #address-cells = <1>;
16 #size-cells = <1>;
17
18 /* External clocks */
19 extal_clk: extal {
20 #clock-cells = <0>;
21 compatible = "fixed-clock";
22 /* Value must be set by board */
23 clock-frequency = <0>;
24 };
25
26 rtc_x1_clk: rtc_x1 {
27 #clock-cells = <0>;
28 compatible = "fixed-clock";
29 /* If clk present, value (32678) must be set by board */
30 clock-frequency = <0>;
31 };
32
33 cpus {
34 #address-cells = <1>;
35 #size-cells = <0>;
36
37 cpu@0 {
38 device_type = "cpu";
39 compatible = "arm,cortex-a9";
40 reg = <0>;
41 clock-frequency = <528000000>;
42 next-level-cache = <&L2>;
43 };
44 };
45
46 soc {
47 compatible = "simple-bus";
48 interrupt-parent = <&gic>;
49
50 #address-cells = <1>;
51 #size-cells = <1>;
52 ranges;
53
54 L2: cache-controller@1f003000 {
55 compatible = "arm,pl310-cache";
56 reg = <0x1f003000 0x1000>;
57 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
58 arm,early-bresp-disable;
59 arm,full-line-zero-disable;
60 cache-unified;
61 cache-level = <2>;
62 };
63
64 scif0: serial@e8007000 {
65 compatible = "renesas,scif-r7s9210";
66 reg = <0xe8007000 0x18>;
67 interrupts = <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
68 <GIC_SPI 266 IRQ_TYPE_LEVEL_HIGH>,
69 <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>,
70 <GIC_SPI 265 IRQ_TYPE_LEVEL_HIGH>,
71 <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>,
72 <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
73 interrupt-names = "eri", "rxi", "txi",
74 "bri", "dri", "tei";
75 clocks = <&cpg CPG_MOD 47>;
76 clock-names = "fck";
77 power-domains = <&cpg>;
78 status = "disabled";
79 };
80
81 scif1: serial@e8007800 {
82 compatible = "renesas,scif-r7s9210";
83 reg = <0xe8007800 0x18>;
84 interrupts = <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
85 <GIC_SPI 272 IRQ_TYPE_LEVEL_HIGH>,
86 <GIC_SPI 273 IRQ_TYPE_LEVEL_HIGH>,
87 <GIC_SPI 271 IRQ_TYPE_LEVEL_HIGH>,
88 <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>,
89 <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH>;
90 interrupt-names = "eri", "rxi", "txi",
91 "bri", "dri", "tei";
92 clocks = <&cpg CPG_MOD 46>;
93 clock-names = "fck";
94 power-domains = <&cpg>;
95 status = "disabled";
96 };
97
98 scif2: serial@e8008000 {
99 compatible = "renesas,scif-r7s9210";
100 reg = <0xe8008000 0x18>;
101 interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>,
102 <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH>,
103 <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH>,
104 <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH>,
105 <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>,
106 <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH>;
107 interrupt-names = "eri", "rxi", "txi",
108 "bri", "dri", "tei";
109 clocks = <&cpg CPG_MOD 45>;
110 clock-names = "fck";
111 power-domains = <&cpg>;
112 status = "disabled";
113 };
114
115 scif3: serial@e8008800 {
116 compatible = "renesas,scif-r7s9210";
117 reg = <0xe8008800 0x18>;
118 interrupts = <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
119 <GIC_SPI 284 IRQ_TYPE_LEVEL_HIGH>,
120 <GIC_SPI 285 IRQ_TYPE_LEVEL_HIGH>,
121 <GIC_SPI 283 IRQ_TYPE_LEVEL_HIGH>,
122 <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>,
123 <GIC_SPI 286 IRQ_TYPE_LEVEL_HIGH>;
124 interrupt-names = "eri", "rxi", "txi",
125 "bri", "dri", "tei";
126 clocks = <&cpg CPG_MOD 44>;
127 clock-names = "fck";
128 power-domains = <&cpg>;
129 status = "disabled";
130 };
131
132 scif4: serial@e8009000 {
133 compatible = "renesas,scif-r7s9210";
134 reg = <0xe8009000 0x18>;
135 interrupts = <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
136 <GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>,
137 <GIC_SPI 291 IRQ_TYPE_LEVEL_HIGH>,
138 <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
139 <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>,
140 <GIC_SPI 292 IRQ_TYPE_LEVEL_HIGH>;
141 interrupt-names = "eri", "rxi", "txi",
142 "bri", "dri", "tei";
143 clocks = <&cpg CPG_MOD 43>;
144 clock-names = "fck";
145 power-domains = <&cpg>;
146 status = "disabled";
147 };
148
149 ostm0: timer@e803b000 {
150 compatible = "renesas,r7s9210-ostm", "renesas,ostm";
151 reg = <0xe803b000 0x30>;
152 interrupts = <GIC_SPI 56 IRQ_TYPE_EDGE_RISING>;
153 clocks = <&cpg CPG_MOD 36>;
154 clock-names = "ostm0";
155 power-domains = <&cpg>;
156 status = "disabled";
157 };
158
159 ostm1: timer@e803c000 {
160 compatible = "renesas,r7s9210-ostm", "renesas,ostm";
161 reg = <0xe803c000 0x30>;
162 interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
163 clocks = <&cpg CPG_MOD 35>;
164 clock-names = "ostm1";
165 power-domains = <&cpg>;
166 status = "disabled";
167 };
168
169 ostm2: timer@e803d000 {
170 compatible = "renesas,r7s9210-ostm", "renesas,ostm";
171 reg = <0xe803d000 0x30>;
172 interrupts = <GIC_SPI 58 IRQ_TYPE_EDGE_RISING>;
173 clocks = <&cpg CPG_MOD 34>;
174 clock-names = "ostm2";
175 power-domains = <&cpg>;
176 status = "disabled";
177 };
178
179 gic: interrupt-controller@e8221000 {
180 compatible = "arm,gic-400";
181 #interrupt-cells = <3>;
182 #address-cells = <0>;
183 interrupt-controller;
184 reg = <0xe8221000 0x1000>,
185 <0xe8222000 0x1000>;
186 };
187
188 cpg: clock-controller@fcfe0010 {
189 compatible = "renesas,r7s9210-cpg-mssr";
190 reg = <0xfcfe0010 0x455>;
191 clocks = <&extal_clk>;
192 clock-names = "extal";
193 #clock-cells = <2>;
194 #power-domain-cells = <0>;
195 };
196
197 wdt: watchdog@fcfe7000 {
198 compatible = "renesas,r7s9210-wdt", "renesas,rza-wdt";
199 reg = <0xfcfe7000 0x26>;
200 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
201 clocks = <&cpg CPG_CORE R7S9210_CLK_P0>;
202 };
203
204 bsid: chipid@fcfe8004 {
205 compatible = "renesas,bsid";
206 reg = <0xfcfe8004 4>;
207 };
208
209 pinctrl: pin-controller@fcffe000 {
210 compatible = "renesas,r7s9210-pinctrl";
211 reg = <0xfcffe000 0x1000>;
212
213 gpio-controller;
214 #gpio-cells = <2>;
215 gpio-ranges = <&pinctrl 0 0 176>;
216 };
217 };
218};
diff --git a/arch/arm/boot/dts/r8a7743.dtsi b/arch/arm/boot/dts/r8a7743.dtsi
index 3cc33f7ff7fe..de981d629bdd 100644
--- a/arch/arm/boot/dts/r8a7743.dtsi
+++ b/arch/arm/boot/dts/r8a7743.dtsi
@@ -15,25 +15,6 @@
15 #address-cells = <2>; 15 #address-cells = <2>;
16 #size-cells = <2>; 16 #size-cells = <2>;
17 17
18 aliases {
19 i2c0 = &i2c0;
20 i2c1 = &i2c1;
21 i2c2 = &i2c2;
22 i2c3 = &i2c3;
23 i2c4 = &i2c4;
24 i2c5 = &i2c5;
25 i2c6 = &iic0;
26 i2c7 = &iic1;
27 i2c8 = &iic3;
28 spi0 = &qspi;
29 spi1 = &msiof0;
30 spi2 = &msiof1;
31 spi3 = &msiof2;
32 vin0 = &vin0;
33 vin1 = &vin1;
34 vin2 = &vin2;
35 };
36
37 /* 18 /*
38 * The external audio clocks are configured as 0 Hz fixed frequency 19 * The external audio clocks are configured as 0 Hz fixed frequency
39 * clocks by default. 20 * clocks by default.
@@ -154,6 +135,16 @@
154 #size-cells = <2>; 135 #size-cells = <2>;
155 ranges; 136 ranges;
156 137
138 rwdt: watchdog@e6020000 {
139 compatible = "renesas,r8a7743-wdt",
140 "renesas,rcar-gen2-wdt";
141 reg = <0 0xe6020000 0 0x0c>;
142 clocks = <&cpg CPG_MOD 402>;
143 power-domains = <&sysc R8A7743_PD_ALWAYS_ON>;
144 resets = <&cpg 402>;
145 status = "disabled";
146 };
147
157 gpio0: gpio@e6050000 { 148 gpio0: gpio@e6050000 {
158 compatible = "renesas,gpio-r8a7743", 149 compatible = "renesas,gpio-r8a7743",
159 "renesas,rcar-gen2-gpio"; 150 "renesas,rcar-gen2-gpio";
@@ -310,16 +301,6 @@
310 reg = <0 0xe6160000 0 0x100>; 301 reg = <0 0xe6160000 0 0x100>;
311 }; 302 };
312 303
313 rwdt: watchdog@e6020000 {
314 compatible = "renesas,r8a7743-wdt",
315 "renesas,rcar-gen2-wdt";
316 reg = <0 0xe6020000 0 0x0c>;
317 clocks = <&cpg CPG_MOD 402>;
318 power-domains = <&sysc R8A7743_PD_ALWAYS_ON>;
319 resets = <&cpg 402>;
320 status = "disabled";
321 };
322
323 sysc: system-controller@e6180000 { 304 sysc: system-controller@e6180000 {
324 compatible = "renesas,r8a7743-sysc"; 305 compatible = "renesas,r8a7743-sysc";
325 reg = <0 0xe6180000 0 0x200>; 306 reg = <0 0xe6180000 0 0x200>;
@@ -564,9 +545,7 @@
564 /* doesn't need pinmux */ 545 /* doesn't need pinmux */
565 #address-cells = <1>; 546 #address-cells = <1>;
566 #size-cells = <0>; 547 #size-cells = <0>;
567 compatible = "renesas,iic-r8a7743", 548 compatible = "renesas,iic-r8a7743";
568 "renesas,rcar-gen2-iic",
569 "renesas,rmobile-iic";
570 reg = <0 0xe60b0000 0 0x425>; 549 reg = <0 0xe60b0000 0 0x425>;
571 interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>; 550 interrupts = <GIC_SPI 173 IRQ_TYPE_LEVEL_HIGH>;
572 clocks = <&cpg CPG_MOD 926>; 551 clocks = <&cpg CPG_MOD 926>;
@@ -1681,15 +1660,12 @@
1681 1660
1682 du: display@feb00000 { 1661 du: display@feb00000 {
1683 compatible = "renesas,du-r8a7743"; 1662 compatible = "renesas,du-r8a7743";
1684 reg = <0 0xfeb00000 0 0x40000>, 1663 reg = <0 0xfeb00000 0 0x40000>;
1685 <0 0xfeb90000 0 0x1c>;
1686 reg-names = "du", "lvds.0";
1687 interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>, 1664 interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
1688 <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>; 1665 <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
1689 clocks = <&cpg CPG_MOD 724>, 1666 clocks = <&cpg CPG_MOD 724>,
1690 <&cpg CPG_MOD 723>, 1667 <&cpg CPG_MOD 723>;
1691 <&cpg CPG_MOD 726>; 1668 clock-names = "du.0", "du.1";
1692 clock-names = "du.0", "du.1", "lvds.0";
1693 status = "disabled"; 1669 status = "disabled";
1694 1670
1695 ports { 1671 ports {
@@ -1704,6 +1680,33 @@
1704 port@1 { 1680 port@1 {
1705 reg = <1>; 1681 reg = <1>;
1706 du_out_lvds0: endpoint { 1682 du_out_lvds0: endpoint {
1683 remote-endpoint = <&lvds0_in>;
1684 };
1685 };
1686 };
1687 };
1688
1689 lvds0: lvds@feb90000 {
1690 compatible = "renesas,r8a7743-lvds";
1691 reg = <0 0xfeb90000 0 0x1c>;
1692 clocks = <&cpg CPG_MOD 726>;
1693 power-domains = <&sysc R8A7743_PD_ALWAYS_ON>;
1694 resets = <&cpg 726>;
1695 status = "disabled";
1696
1697 ports {
1698 #address-cells = <1>;
1699 #size-cells = <0>;
1700
1701 port@0 {
1702 reg = <0>;
1703 lvds0_in: endpoint {
1704 remote-endpoint = <&du_out_lvds0>;
1705 };
1706 };
1707 port@1 {
1708 reg = <1>;
1709 lvds0_out: endpoint {
1707 }; 1710 };
1708 }; 1711 };
1709 }; 1712 };
diff --git a/arch/arm/boot/dts/r8a7744.dtsi b/arch/arm/boot/dts/r8a7744.dtsi
index 04148d608fc4..fa74a262107b 100644
--- a/arch/arm/boot/dts/r8a7744.dtsi
+++ b/arch/arm/boot/dts/r8a7744.dtsi
@@ -998,6 +998,54 @@
998 status = "disabled"; 998 status = "disabled";
999 }; 999 };
1000 1000
1001 msiof0: spi@e6e20000 {
1002 compatible = "renesas,msiof-r8a7744",
1003 "renesas,rcar-gen2-msiof";
1004 reg = <0 0xe6e20000 0 0x0064>;
1005 interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
1006 clocks = <&cpg CPG_MOD 000>;
1007 dmas = <&dmac0 0x51>, <&dmac0 0x52>,
1008 <&dmac1 0x51>, <&dmac1 0x52>;
1009 dma-names = "tx", "rx", "tx", "rx";
1010 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1011 #address-cells = <1>;
1012 #size-cells = <0>;
1013 resets = <&cpg 000>;
1014 status = "disabled";
1015 };
1016
1017 msiof1: spi@e6e10000 {
1018 compatible = "renesas,msiof-r8a7744",
1019 "renesas,rcar-gen2-msiof";
1020 reg = <0 0xe6e10000 0 0x0064>;
1021 interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
1022 clocks = <&cpg CPG_MOD 208>;
1023 dmas = <&dmac0 0x55>, <&dmac0 0x56>,
1024 <&dmac1 0x55>, <&dmac1 0x56>;
1025 dma-names = "tx", "rx", "tx", "rx";
1026 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1027 #address-cells = <1>;
1028 #size-cells = <0>;
1029 resets = <&cpg 208>;
1030 status = "disabled";
1031 };
1032
1033 msiof2: spi@e6e00000 {
1034 compatible = "renesas,msiof-r8a7744",
1035 "renesas,rcar-gen2-msiof";
1036 reg = <0 0xe6e00000 0 0x0064>;
1037 interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
1038 clocks = <&cpg CPG_MOD 205>;
1039 dmas = <&dmac0 0x41>, <&dmac0 0x42>,
1040 <&dmac1 0x41>, <&dmac1 0x42>;
1041 dma-names = "tx", "rx", "tx", "rx";
1042 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1043 #address-cells = <1>;
1044 #size-cells = <0>;
1045 resets = <&cpg 205>;
1046 status = "disabled";
1047 };
1048
1001 pwm0: pwm@e6e30000 { 1049 pwm0: pwm@e6e30000 {
1002 compatible = "renesas,pwm-r8a7744", "renesas,pwm-rcar"; 1050 compatible = "renesas,pwm-r8a7744", "renesas,pwm-rcar";
1003 reg = <0 0xe6e30000 0 0x8>; 1051 reg = <0 0xe6e30000 0 0x8>;
@@ -1068,54 +1116,6 @@
1068 status = "disabled"; 1116 status = "disabled";
1069 }; 1117 };
1070 1118
1071 msiof0: spi@e6e20000 {
1072 compatible = "renesas,msiof-r8a7744",
1073 "renesas,rcar-gen2-msiof";
1074 reg = <0 0xe6e20000 0 0x0064>;
1075 interrupts = <GIC_SPI 156 IRQ_TYPE_LEVEL_HIGH>;
1076 clocks = <&cpg CPG_MOD 000>;
1077 dmas = <&dmac0 0x51>, <&dmac0 0x52>,
1078 <&dmac1 0x51>, <&dmac1 0x52>;
1079 dma-names = "tx", "rx", "tx", "rx";
1080 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1081 #address-cells = <1>;
1082 #size-cells = <0>;
1083 resets = <&cpg 000>;
1084 status = "disabled";
1085 };
1086
1087 msiof1: spi@e6e10000 {
1088 compatible = "renesas,msiof-r8a7744",
1089 "renesas,rcar-gen2-msiof";
1090 reg = <0 0xe6e10000 0 0x0064>;
1091 interrupts = <GIC_SPI 157 IRQ_TYPE_LEVEL_HIGH>;
1092 clocks = <&cpg CPG_MOD 208>;
1093 dmas = <&dmac0 0x55>, <&dmac0 0x56>,
1094 <&dmac1 0x55>, <&dmac1 0x56>;
1095 dma-names = "tx", "rx", "tx", "rx";
1096 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1097 #address-cells = <1>;
1098 #size-cells = <0>;
1099 resets = <&cpg 208>;
1100 status = "disabled";
1101 };
1102
1103 msiof2: spi@e6e00000 {
1104 compatible = "renesas,msiof-r8a7744",
1105 "renesas,rcar-gen2-msiof";
1106 reg = <0 0xe6e00000 0 0x0064>;
1107 interrupts = <GIC_SPI 158 IRQ_TYPE_LEVEL_HIGH>;
1108 clocks = <&cpg CPG_MOD 205>;
1109 dmas = <&dmac0 0x41>, <&dmac0 0x42>,
1110 <&dmac1 0x41>, <&dmac1 0x42>;
1111 dma-names = "tx", "rx", "tx", "rx";
1112 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1113 #address-cells = <1>;
1114 #size-cells = <0>;
1115 resets = <&cpg 205>;
1116 status = "disabled";
1117 };
1118
1119 can0: can@e6e80000 { 1119 can0: can@e6e80000 {
1120 compatible = "renesas,can-r8a7744", 1120 compatible = "renesas,can-r8a7744",
1121 "renesas,rcar-gen2-can"; 1121 "renesas,rcar-gen2-can";
@@ -1589,33 +1589,6 @@
1589 resets = <&cpg 408>; 1589 resets = <&cpg 408>;
1590 }; 1590 };
1591 1591
1592 vsp@fe928000 {
1593 compatible = "renesas,vsp1";
1594 reg = <0 0xfe928000 0 0x8000>;
1595 interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>;
1596 clocks = <&cpg CPG_MOD 131>;
1597 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1598 resets = <&cpg 131>;
1599 };
1600
1601 vsp@fe930000 {
1602 compatible = "renesas,vsp1";
1603 reg = <0 0xfe930000 0 0x8000>;
1604 interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
1605 clocks = <&cpg CPG_MOD 128>;
1606 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1607 resets = <&cpg 128>;
1608 };
1609
1610 vsp@fe938000 {
1611 compatible = "renesas,vsp1";
1612 reg = <0 0xfe938000 0 0x8000>;
1613 interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
1614 clocks = <&cpg CPG_MOD 127>;
1615 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1616 resets = <&cpg 127>;
1617 };
1618
1619 pciec: pcie@fe000000 { 1592 pciec: pcie@fe000000 {
1620 compatible = "renesas,pcie-r8a7744", 1593 compatible = "renesas,pcie-r8a7744",
1621 "renesas,pcie-rcar-gen2"; 1594 "renesas,pcie-rcar-gen2";
@@ -1644,9 +1617,42 @@
1644 status = "disabled"; 1617 status = "disabled";
1645 }; 1618 };
1646 1619
1620 vsp@fe928000 {
1621 compatible = "renesas,vsp1";
1622 reg = <0 0xfe928000 0 0x8000>;
1623 interrupts = <GIC_SPI 267 IRQ_TYPE_LEVEL_HIGH>;
1624 clocks = <&cpg CPG_MOD 131>;
1625 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1626 resets = <&cpg 131>;
1627 };
1628
1629 vsp@fe930000 {
1630 compatible = "renesas,vsp1";
1631 reg = <0 0xfe930000 0 0x8000>;
1632 interrupts = <GIC_SPI 246 IRQ_TYPE_LEVEL_HIGH>;
1633 clocks = <&cpg CPG_MOD 128>;
1634 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1635 resets = <&cpg 128>;
1636 };
1637
1638 vsp@fe938000 {
1639 compatible = "renesas,vsp1";
1640 reg = <0 0xfe938000 0 0x8000>;
1641 interrupts = <GIC_SPI 247 IRQ_TYPE_LEVEL_HIGH>;
1642 clocks = <&cpg CPG_MOD 127>;
1643 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1644 resets = <&cpg 127>;
1645 };
1646
1647 du: display@feb00000 { 1647 du: display@feb00000 {
1648 reg = <0 0xfeb00000 0 0x40000>, 1648 compatible = "renesas,du-r8a7744";
1649 <0 0xfeb90000 0 0x1c>; 1649 reg = <0 0xfeb00000 0 0x40000>;
1650 interrupts = <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH>,
1651 <GIC_SPI 268 IRQ_TYPE_LEVEL_HIGH>;
1652 clocks = <&cpg CPG_MOD 724>,
1653 <&cpg CPG_MOD 723>;
1654 clock-names = "du.0", "du.1";
1655 status = "disabled";
1650 1656
1651 ports { 1657 ports {
1652 #address-cells = <1>; 1658 #address-cells = <1>;
@@ -1660,10 +1666,36 @@
1660 port@1 { 1666 port@1 {
1661 reg = <1>; 1667 reg = <1>;
1662 du_out_lvds0: endpoint { 1668 du_out_lvds0: endpoint {
1669 remote-endpoint = <&lvds0_in>;
1670 };
1671 };
1672 };
1673 };
1674
1675 lvds0: lvds@feb90000 {
1676 compatible = "renesas,r8a7744-lvds";
1677 reg = <0 0xfeb90000 0 0x1c>;
1678 clocks = <&cpg CPG_MOD 726>;
1679 power-domains = <&sysc R8A7744_PD_ALWAYS_ON>;
1680 resets = <&cpg 726>;
1681 status = "disabled";
1682
1683 ports {
1684 #address-cells = <1>;
1685 #size-cells = <0>;
1686
1687 port@0 {
1688 reg = <0>;
1689 lvds0_in: endpoint {
1690 remote-endpoint = <&du_out_lvds0>;
1691 };
1692 };
1693 port@1 {
1694 reg = <1>;
1695 lvds0_out: endpoint {
1663 }; 1696 };
1664 }; 1697 };
1665 }; 1698 };
1666 /* placeholder */
1667 }; 1699 };
1668 1700
1669 prr: chipid@ff000044 { 1701 prr: chipid@ff000044 {
diff --git a/arch/arm/boot/dts/r8a77470-iwg23s-sbc.dts b/arch/arm/boot/dts/r8a77470-iwg23s-sbc.dts
index 40b7f98d6013..77d18242ef59 100644
--- a/arch/arm/boot/dts/r8a77470-iwg23s-sbc.dts
+++ b/arch/arm/boot/dts/r8a77470-iwg23s-sbc.dts
@@ -84,12 +84,30 @@
84 clock-frequency = <20000000>; 84 clock-frequency = <20000000>;
85}; 85};
86 86
87&i2c3 {
88 pinctrl-0 = <&i2c3_pins>;
89 pinctrl-names = "default";
90
91 status = "okay";
92 clock-frequency = <400000>;
93
94 rtc@51 {
95 compatible = "nxp,pcf85263";
96 reg = <0x51>;
97 };
98};
99
87&pfc { 100&pfc {
88 avb_pins: avb { 101 avb_pins: avb {
89 groups = "avb_mdio", "avb_gmii_tx_rx"; 102 groups = "avb_mdio", "avb_gmii_tx_rx";
90 function = "avb"; 103 function = "avb";
91 }; 104 };
92 105
106 i2c3_pins: i2c3 {
107 groups = "i2c3_c";
108 function = "i2c3";
109 };
110
93 mmc_pins_uhs: mmc_uhs { 111 mmc_pins_uhs: mmc_uhs {
94 groups = "mmc_data8", "mmc_ctrl"; 112 groups = "mmc_data8", "mmc_ctrl";
95 function = "mmc"; 113 function = "mmc";
diff --git a/arch/arm/boot/dts/r8a7778.dtsi b/arch/arm/boot/dts/r8a7778.dtsi
index 05db0ccad7a6..10d996d2941f 100644
--- a/arch/arm/boot/dts/r8a7778.dtsi
+++ b/arch/arm/boot/dts/r8a7778.dtsi
@@ -367,6 +367,30 @@
367 status = "disabled"; 367 status = "disabled";
368 }; 368 };
369 369
370 hscif0: serial@ffe48000 {
371 compatible = "renesas,hscif-r8a7778",
372 "renesas,rcar-gen1-hscif", "renesas,hscif";
373 reg = <0xffe48000 96>;
374 interrupts = <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH>;
375 clocks = <&mstp0_clks R8A7778_CLK_HSCIF0>,
376 <&cpg_clocks R8A7778_CLK_S>, <&scif_clk>;
377 clock-names = "fck", "brg_int", "scif_clk";
378 power-domains = <&cpg_clocks>;
379 status = "disabled";
380 };
381
382 hscif1: serial@ffe49000 {
383 compatible = "renesas,hscif-r8a7778",
384 "renesas,rcar-gen1-hscif", "renesas,hscif";
385 reg = <0xffe49000 96>;
386 interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>;
387 clocks = <&mstp0_clks R8A7778_CLK_HSCIF1>,
388 <&cpg_clocks R8A7778_CLK_S>, <&scif_clk>;
389 clock-names = "fck", "brg_int", "scif_clk";
390 power-domains = <&cpg_clocks>;
391 status = "disabled";
392 };
393
370 mmcif: mmc@ffe4e000 { 394 mmcif: mmc@ffe4e000 {
371 compatible = "renesas,mmcif-r8a7778", "renesas,sh-mmcif"; 395 compatible = "renesas,mmcif-r8a7778", "renesas,sh-mmcif";
372 reg = <0xffe4e000 0x100>; 396 reg = <0xffe4e000 0x100>;
@@ -535,6 +559,8 @@
535 <&cpg_clocks R8A7778_CLK_P>, 559 <&cpg_clocks R8A7778_CLK_P>,
536 <&cpg_clocks R8A7778_CLK_P>, 560 <&cpg_clocks R8A7778_CLK_P>,
537 <&cpg_clocks R8A7778_CLK_P>, 561 <&cpg_clocks R8A7778_CLK_P>,
562 <&cpg_clocks R8A7778_CLK_S>,
563 <&cpg_clocks R8A7778_CLK_S>,
538 <&cpg_clocks R8A7778_CLK_P>, 564 <&cpg_clocks R8A7778_CLK_P>,
539 <&cpg_clocks R8A7778_CLK_P>, 565 <&cpg_clocks R8A7778_CLK_P>,
540 <&cpg_clocks R8A7778_CLK_P>, 566 <&cpg_clocks R8A7778_CLK_P>,
@@ -551,6 +577,7 @@
551 R8A7778_CLK_SCIF0 R8A7778_CLK_SCIF1 577 R8A7778_CLK_SCIF0 R8A7778_CLK_SCIF1
552 R8A7778_CLK_SCIF2 R8A7778_CLK_SCIF3 578 R8A7778_CLK_SCIF2 R8A7778_CLK_SCIF3
553 R8A7778_CLK_SCIF4 R8A7778_CLK_SCIF5 579 R8A7778_CLK_SCIF4 R8A7778_CLK_SCIF5
580 R8A7778_CLK_HSCIF0 R8A7778_CLK_HSCIF1
554 R8A7778_CLK_TMU0 R8A7778_CLK_TMU1 581 R8A7778_CLK_TMU0 R8A7778_CLK_TMU1
555 R8A7778_CLK_TMU2 R8A7778_CLK_SSI0 582 R8A7778_CLK_TMU2 R8A7778_CLK_SSI0
556 R8A7778_CLK_SSI1 R8A7778_CLK_SSI2 583 R8A7778_CLK_SSI1 R8A7778_CLK_SSI2
@@ -560,6 +587,7 @@
560 clock-output-names = 587 clock-output-names =
561 "i2c0", "i2c1", "i2c2", "i2c3", "scif0", 588 "i2c0", "i2c1", "i2c2", "i2c3", "scif0",
562 "scif1", "scif2", "scif3", "scif4", "scif5", 589 "scif1", "scif2", "scif3", "scif4", "scif5",
590 "hscif0", "hscif1",
563 "tmu0", "tmu1", "tmu2", "ssi0", "ssi1", 591 "tmu0", "tmu1", "tmu2", "ssi0", "ssi1",
564 "ssi2", "ssi3", "sru", "hspi"; 592 "ssi2", "ssi3", "sru", "hspi";
565 }; 593 };
diff --git a/arch/arm/boot/dts/r8a7779.dtsi b/arch/arm/boot/dts/r8a7779.dtsi
index 3bc133d9489c..3ff259207527 100644
--- a/arch/arm/boot/dts/r8a7779.dtsi
+++ b/arch/arm/boot/dts/r8a7779.dtsi
@@ -287,6 +287,32 @@
287 status = "disabled"; 287 status = "disabled";
288 }; 288 };
289 289
290 hscif0: serial@ffe48000 {
291 compatible = "renesas,hscif-r8a7779",
292 "renesas,rcar-gen1-hscif", "renesas,hscif";
293 reg = <0xffe48000 96>;
294 interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
295 clocks = <&mstp0_clks R8A7779_CLK_HSCIF0>,
296 <&cpg_clocks R8A7779_CLK_S>,
297 <&scif_clk>;
298 clock-names = "fck", "brg_int", "scif_clk";
299 power-domains = <&cpg_clocks>;
300 status = "disabled";
301 };
302
303 hscif1: serial@ffe49000 {
304 compatible = "renesas,hscif-r8a7779",
305 "renesas,rcar-gen1-hscif", "renesas,hscif";
306 reg = <0xffe49000 96>;
307 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
308 clocks = <&mstp0_clks R8A7779_CLK_HSCIF1>,
309 <&cpg_clocks R8A7779_CLK_S>,
310 <&scif_clk>;
311 clock-names = "fck", "brg_int", "scif_clk";
312 power-domains = <&cpg_clocks>;
313 status = "disabled";
314 };
315
290 pfc: pin-controller@fffc0000 { 316 pfc: pin-controller@fffc0000 {
291 compatible = "renesas,pfc-r8a7779"; 317 compatible = "renesas,pfc-r8a7779";
292 reg = <0xfffc0000 0x23c>; 318 reg = <0xfffc0000 0x23c>;
diff --git a/arch/arm/boot/dts/r8a7790-stout.dts b/arch/arm/boot/dts/r8a7790-stout.dts
index 629da4cee1b9..7a7d3b84d1a6 100644
--- a/arch/arm/boot/dts/r8a7790-stout.dts
+++ b/arch/arm/boot/dts/r8a7790-stout.dts
@@ -94,9 +94,8 @@
94 status = "okay"; 94 status = "okay";
95 95
96 clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>, <&cpg CPG_MOD 722>, 96 clocks = <&cpg CPG_MOD 724>, <&cpg CPG_MOD 723>, <&cpg CPG_MOD 722>,
97 <&cpg CPG_MOD 726>, <&cpg CPG_MOD 725>,
98 <&osc1_clk>; 97 <&osc1_clk>;
99 clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1", "dclkin.0"; 98 clock-names = "du.0", "du.1", "du.2", "dclkin.0";
100 99
101 ports { 100 ports {
102 port@0 { 101 port@0 {
@@ -104,11 +103,21 @@
104 remote-endpoint = <&adv7511_in>; 103 remote-endpoint = <&adv7511_in>;
105 }; 104 };
106 }; 105 };
106 };
107};
108
109&lvds0 {
110 ports {
107 port@1 { 111 port@1 {
108 lvds_connector0: endpoint { 112 lvds_connector0: endpoint {
109 }; 113 };
110 }; 114 };
111 port@2 { 115 };
116};
117
118&lvds1 {
119 ports {
120 port@1 {
112 lvds_connector1: endpoint { 121 lvds_connector1: endpoint {
113 }; 122 };
114 }; 123 };
diff --git a/arch/arm/boot/dts/rk3036-kylin.dts b/arch/arm/boot/dts/rk3036-kylin.dts
index 0fd19f9723df..0173eb11ec28 100644
--- a/arch/arm/boot/dts/rk3036-kylin.dts
+++ b/arch/arm/boot/dts/rk3036-kylin.dts
@@ -310,7 +310,6 @@
310}; 310};
311 311
312&i2s { 312&i2s {
313 #sound-dai-cells = <0>;
314 status = "okay"; 313 status = "okay";
315}; 314};
316 315
diff --git a/arch/arm/boot/dts/rk3036.dtsi b/arch/arm/boot/dts/rk3036.dtsi
index d560fc4051c5..59c90863b0e7 100644
--- a/arch/arm/boot/dts/rk3036.dtsi
+++ b/arch/arm/boot/dts/rk3036.dtsi
@@ -289,6 +289,7 @@
289 dma-names = "tx", "rx"; 289 dma-names = "tx", "rx";
290 pinctrl-names = "default"; 290 pinctrl-names = "default";
291 pinctrl-0 = <&i2s_bus>; 291 pinctrl-0 = <&i2s_bus>;
292 #sound-dai-cells = <0>;
292 status = "disabled"; 293 status = "disabled";
293 }; 294 };
294 295
diff --git a/arch/arm/boot/dts/rk3066a-bqcurie2.dts b/arch/arm/boot/dts/rk3066a-bqcurie2.dts
index 1c925f20dba0..0a56a2f1bc4d 100644
--- a/arch/arm/boot/dts/rk3066a-bqcurie2.dts
+++ b/arch/arm/boot/dts/rk3066a-bqcurie2.dts
@@ -171,7 +171,6 @@
171 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus4>; 171 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus4>;
172 172
173 bus-width = <4>; 173 bus-width = <4>;
174 disable-wp;
175}; 174};
176 175
177&pwm3 { 176&pwm3 {
diff --git a/arch/arm/boot/dts/rk3066a-mk808.dts b/arch/arm/boot/dts/rk3066a-mk808.dts
index b6a8a82d219e..9d2216d71f70 100644
--- a/arch/arm/boot/dts/rk3066a-mk808.dts
+++ b/arch/arm/boot/dts/rk3066a-mk808.dts
@@ -101,7 +101,6 @@
101 101
102&mmc1 { 102&mmc1 {
103 bus-width = <4>; 103 bus-width = <4>;
104 disable-wp;
105 non-removable; 104 non-removable;
106 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus4>; 105 pinctrl-0 = <&sd1_clk &sd1_cmd &sd1_bus4>;
107 pinctrl-names = "default"; 106 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/rk3066a-rayeager.dts b/arch/arm/boot/dts/rk3066a-rayeager.dts
index cd126b927ba8..949fa800582d 100644
--- a/arch/arm/boot/dts/rk3066a-rayeager.dts
+++ b/arch/arm/boot/dts/rk3066a-rayeager.dts
@@ -147,7 +147,6 @@
147&emmc { 147&emmc {
148 bus-width = <8>; 148 bus-width = <8>;
149 cap-mmc-highspeed; 149 cap-mmc-highspeed;
150 disable-wp;
151 non-removable; 150 non-removable;
152 pinctrl-names = "default"; 151 pinctrl-names = "default";
153 pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_rst>; 152 pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_rst>;
@@ -309,7 +308,6 @@
309 308
310&mmc1 { 309&mmc1 {
311 bus-width = <4>; 310 bus-width = <4>;
312 disable-wp;
313 non-removable; 311 non-removable;
314 pinctrl-names = "default"; 312 pinctrl-names = "default";
315 pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_bus4>; 313 pinctrl-0 = <&sd1_clk>, <&sd1_cmd>, <&sd1_bus4>;
diff --git a/arch/arm/boot/dts/rk3066a.dtsi b/arch/arm/boot/dts/rk3066a.dtsi
index 30dc8af0bdcb..653127a377fa 100644
--- a/arch/arm/boot/dts/rk3066a.dtsi
+++ b/arch/arm/boot/dts/rk3066a.dtsi
@@ -44,6 +44,11 @@
44 }; 44 };
45 }; 45 };
46 46
47 display-subsystem {
48 compatible = "rockchip,display-subsystem";
49 ports = <&vop0_out>, <&vop1_out>;
50 };
51
47 sram: sram@10080000 { 52 sram: sram@10080000 {
48 compatible = "mmio-sram"; 53 compatible = "mmio-sram";
49 reg = <0x10080000 0x10000>; 54 reg = <0x10080000 0x10000>;
@@ -57,6 +62,48 @@
57 }; 62 };
58 }; 63 };
59 64
65 vop0: vop@1010c000 {
66 compatible = "rockchip,rk3066-vop";
67 reg = <0x1010c000 0x19c>;
68 interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
69 clocks = <&cru ACLK_LCDC0>,
70 <&cru DCLK_LCDC0>,
71 <&cru HCLK_LCDC0>;
72 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
73 power-domains = <&power RK3066_PD_VIO>;
74 resets = <&cru SRST_LCDC0_AXI>,
75 <&cru SRST_LCDC0_AHB>,
76 <&cru SRST_LCDC0_DCLK>;
77 reset-names = "axi", "ahb", "dclk";
78 status = "disabled";
79
80 vop0_out: port {
81 #address-cells = <1>;
82 #size-cells = <0>;
83 };
84 };
85
86 vop1: vop@1010e000 {
87 compatible = "rockchip,rk3066-vop";
88 reg = <0x1010e000 0x19c>;
89 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
90 clocks = <&cru ACLK_LCDC1>,
91 <&cru DCLK_LCDC1>,
92 <&cru HCLK_LCDC1>;
93 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
94 power-domains = <&power RK3066_PD_VIO>;
95 resets = <&cru SRST_LCDC1_AXI>,
96 <&cru SRST_LCDC1_AHB>,
97 <&cru SRST_LCDC1_DCLK>;
98 reset-names = "axi", "ahb", "dclk";
99 status = "disabled";
100
101 vop1_out: port {
102 #address-cells = <1>;
103 #size-cells = <0>;
104 };
105 };
106
60 i2s0: i2s@10118000 { 107 i2s0: i2s@10118000 {
61 compatible = "rockchip,rk3066-i2s"; 108 compatible = "rockchip,rk3066-i2s";
62 reg = <0x10118000 0x2000>; 109 reg = <0x10118000 0x2000>;
@@ -669,6 +716,7 @@
669 <&cru SCLK_CIF0>, 716 <&cru SCLK_CIF0>,
670 <&cru ACLK_CIF0>, 717 <&cru ACLK_CIF0>,
671 <&cru HCLK_CIF0>, 718 <&cru HCLK_CIF0>,
719 <&cru HCLK_HDMI>,
672 <&cru ACLK_IPP>, 720 <&cru ACLK_IPP>,
673 <&cru HCLK_IPP>, 721 <&cru HCLK_IPP>,
674 <&cru ACLK_RGA>, 722 <&cru ACLK_RGA>,
diff --git a/arch/arm/boot/dts/rk3188-bqedison2qc.dts b/arch/arm/boot/dts/rk3188-bqedison2qc.dts
index a7477a09fbe8..c8b62bbd6a4a 100644
--- a/arch/arm/boot/dts/rk3188-bqedison2qc.dts
+++ b/arch/arm/boot/dts/rk3188-bqedison2qc.dts
@@ -227,7 +227,6 @@
227&emmc { 227&emmc {
228 bus-width = <8>; 228 bus-width = <8>;
229 cap-mmc-highspeed; 229 cap-mmc-highspeed;
230 disable-wp;
231 non-removable; 230 non-removable;
232 pinctrl-names = "default"; 231 pinctrl-names = "default";
233 pinctrl-0 = <&emmc_clk &emmc_cmd>; 232 pinctrl-0 = <&emmc_clk &emmc_cmd>;
@@ -408,6 +407,21 @@
408&i2c2 { 407&i2c2 {
409 clock-frequency = <400000>; 408 clock-frequency = <400000>;
410 status = "okay"; 409 status = "okay";
410
411 ft5606: touchscreen@3e {
412 compatible = "edt,edt-ft5506";
413 reg = <0x3e>;
414 interrupt-parent = <&gpio1>;
415 interrupts = <RK_PB7 IRQ_TYPE_EDGE_FALLING>;
416 pinctrl-names = "default";
417 pinctrl-0 = <&tp_int &tp_rst>;
418 reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_LOW>;
419 touchscreen-inverted-y;
420 /* hw ts resolution does not match display */
421 touchscreen-size-y = <1024>;
422 touchscreen-size-x = <768>;
423 touchscreen-swapped-x-y;
424 };
411}; 425};
412 426
413&i2c3 { 427&i2c3 {
@@ -446,7 +460,6 @@
446&mmc1 { 460&mmc1 {
447 bus-width = <4>; 461 bus-width = <4>;
448 cap-sd-highspeed; 462 cap-sd-highspeed;
449 cap-mmc-highspeed;
450 keep-power-in-suspend; 463 keep-power-in-suspend;
451 mmc-pwrseq = <&sdio_pwrseq>; 464 mmc-pwrseq = <&sdio_pwrseq>;
452 non-removable; 465 non-removable;
@@ -526,7 +539,7 @@
526 }; 539 };
527 540
528 cif1_pdn: cif1-pdn { 541 cif1_pdn: cif1-pdn {
529 rockchip,pins = <3 RK_PB4 RK_FUNC_GPIO &pcfg_pull_none>; 542 rockchip,pins = <3 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
530 }; 543 };
531 544
532 cif_avdd_en: cif-avdd-en { 545 cif_avdd_en: cif-avdd-en {
diff --git a/arch/arm/boot/dts/rk3188-px3-evb.dts b/arch/arm/boot/dts/rk3188-px3-evb.dts
index 9ae65c767c90..c0eaa9c5490b 100644
--- a/arch/arm/boot/dts/rk3188-px3-evb.dts
+++ b/arch/arm/boot/dts/rk3188-px3-evb.dts
@@ -62,7 +62,6 @@
62&emmc { 62&emmc {
63 bus-width = <8>; 63 bus-width = <8>;
64 cap-mmc-highspeed; 64 cap-mmc-highspeed;
65 disable-wp;
66 non-removable; 65 non-removable;
67 pinctrl-names = "default"; 66 pinctrl-names = "default";
68 pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_rst>; 67 pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_rst>;
diff --git a/arch/arm/boot/dts/rk3188.dtsi b/arch/arm/boot/dts/rk3188.dtsi
index 4acb501dd3f8..3ed49898f4b2 100644
--- a/arch/arm/boot/dts/rk3188.dtsi
+++ b/arch/arm/boot/dts/rk3188.dtsi
@@ -719,7 +719,6 @@
719 pm_qos = <&qos_lcdc0>, 719 pm_qos = <&qos_lcdc0>,
720 <&qos_lcdc1>, 720 <&qos_lcdc1>,
721 <&qos_cif0>, 721 <&qos_cif0>,
722 <&qos_cif1>,
723 <&qos_ipp>, 722 <&qos_ipp>,
724 <&qos_rga>; 723 <&qos_rga>;
725 }; 724 };
diff --git a/arch/arm/boot/dts/rk3229-evb.dts b/arch/arm/boot/dts/rk3229-evb.dts
index 4df7accc3ad7..350497a3ca86 100644
--- a/arch/arm/boot/dts/rk3229-evb.dts
+++ b/arch/arm/boot/dts/rk3229-evb.dts
@@ -137,7 +137,6 @@
137 137
138&emmc { 138&emmc {
139 cap-mmc-highspeed; 139 cap-mmc-highspeed;
140 disable-wp;
141 non-removable; 140 non-removable;
142 status = "okay"; 141 status = "okay";
143}; 142};
diff --git a/arch/arm/boot/dts/rk3288-fennec.dts b/arch/arm/boot/dts/rk3288-fennec.dts
index b1b56dfdfdba..29af26e6d442 100644
--- a/arch/arm/boot/dts/rk3288-fennec.dts
+++ b/arch/arm/boot/dts/rk3288-fennec.dts
@@ -37,7 +37,6 @@
37&emmc { 37&emmc {
38 bus-width = <8>; 38 bus-width = <8>;
39 cap-mmc-highspeed; 39 cap-mmc-highspeed;
40 disable-wp;
41 non-removable; 40 non-removable;
42 pinctrl-names = "default"; 41 pinctrl-names = "default";
43 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>; 42 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
diff --git a/arch/arm/boot/dts/rk3288-firefly-reload.dts b/arch/arm/boot/dts/rk3288-firefly-reload.dts
index 58ea8bed040a..3a646c5f4fcf 100644
--- a/arch/arm/boot/dts/rk3288-firefly-reload.dts
+++ b/arch/arm/boot/dts/rk3288-firefly-reload.dts
@@ -254,7 +254,6 @@
254 bus-width = <4>; 254 bus-width = <4>;
255 cap-sd-highspeed; 255 cap-sd-highspeed;
256 cap-sdio-irq; 256 cap-sdio-irq;
257 disable-wp;
258 mmc-pwrseq = <&sdio_pwrseq>; 257 mmc-pwrseq = <&sdio_pwrseq>;
259 non-removable; 258 non-removable;
260 pinctrl-names = "default"; 259 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/rk3288-miqi.dts b/arch/arm/boot/dts/rk3288-miqi.dts
index 504ab1177aa7..fb7365b604bb 100644
--- a/arch/arm/boot/dts/rk3288-miqi.dts
+++ b/arch/arm/boot/dts/rk3288-miqi.dts
@@ -87,7 +87,6 @@
87&emmc { 87&emmc {
88 bus-width = <8>; 88 bus-width = <8>;
89 cap-mmc-highspeed; 89 cap-mmc-highspeed;
90 disable-wp;
91 non-removable; 90 non-removable;
92 pinctrl-names = "default"; 91 pinctrl-names = "default";
93 pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>; 92 pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
diff --git a/arch/arm/boot/dts/rk3288-popmetal.dts b/arch/arm/boot/dts/rk3288-popmetal.dts
index 596435e03132..6a51940398b5 100644
--- a/arch/arm/boot/dts/rk3288-popmetal.dts
+++ b/arch/arm/boot/dts/rk3288-popmetal.dts
@@ -109,7 +109,6 @@
109&emmc { 109&emmc {
110 bus-width = <8>; 110 bus-width = <8>;
111 cap-mmc-highspeed; 111 cap-mmc-highspeed;
112 disable-wp;
113 mmc-ddr-1_8v; 112 mmc-ddr-1_8v;
114 mmc-hs200-1_8v; 113 mmc-hs200-1_8v;
115 non-removable; 114 non-removable;
diff --git a/arch/arm/boot/dts/rk3288-rock2-square.dts b/arch/arm/boot/dts/rk3288-rock2-square.dts
index 6a30cadad88a..5b7e1c9e92e1 100644
--- a/arch/arm/boot/dts/rk3288-rock2-square.dts
+++ b/arch/arm/boot/dts/rk3288-rock2-square.dts
@@ -133,7 +133,6 @@
133 bus-width = <4>; 133 bus-width = <4>;
134 cap-sd-highspeed; 134 cap-sd-highspeed;
135 cap-sdio-irq; 135 cap-sdio-irq;
136 disable-wp;
137 mmc-pwrseq = <&sdio_pwrseq>; 136 mmc-pwrseq = <&sdio_pwrseq>;
138 non-removable; 137 non-removable;
139 pinctrl-names = "default"; 138 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/rk3288-tinker-s.dts b/arch/arm/boot/dts/rk3288-tinker-s.dts
index 37093922b482..d97da89bcd51 100644
--- a/arch/arm/boot/dts/rk3288-tinker-s.dts
+++ b/arch/arm/boot/dts/rk3288-tinker-s.dts
@@ -15,7 +15,6 @@
15&emmc { 15&emmc {
16 bus-width = <8>; 16 bus-width = <8>;
17 cap-mmc-highspeed; 17 cap-mmc-highspeed;
18 disable-wp;
19 non-removable; 18 non-removable;
20 pinctrl-names = "default"; 19 pinctrl-names = "default";
21 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>; 20 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
diff --git a/arch/arm/boot/dts/rk3288-veyron.dtsi b/arch/arm/boot/dts/rk3288-veyron.dtsi
index d8bf939a3aff..0bc2409f6903 100644
--- a/arch/arm/boot/dts/rk3288-veyron.dtsi
+++ b/arch/arm/boot/dts/rk3288-veyron.dtsi
@@ -10,6 +10,10 @@
10#include "rk3288.dtsi" 10#include "rk3288.dtsi"
11 11
12/ { 12/ {
13 chosen {
14 stdout-path = "serial2:115200n8";
15 };
16
13 /* 17 /*
14 * The default coreboot on veyron devices ignores memory@0 nodes 18 * The default coreboot on veyron devices ignores memory@0 nodes
15 * and would instead create another memory node. 19 * and would instead create another memory node.
diff --git a/arch/arm/boot/dts/rk3288-vyasa.dts b/arch/arm/boot/dts/rk3288-vyasa.dts
index 4856a9fc0aea..40b232eb5011 100644
--- a/arch/arm/boot/dts/rk3288-vyasa.dts
+++ b/arch/arm/boot/dts/rk3288-vyasa.dts
@@ -121,7 +121,6 @@
121&emmc { 121&emmc {
122 bus-width = <8>; 122 bus-width = <8>;
123 cap-mmc-highspeed; 123 cap-mmc-highspeed;
124 disable-wp;
125 non-removable; 124 non-removable;
126 pinctrl-names = "default"; 125 pinctrl-names = "default";
127 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>; 126 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_pwr &emmc_bus8>;
diff --git a/arch/arm/boot/dts/rv1108-elgin-r1.dts b/arch/arm/boot/dts/rv1108-elgin-r1.dts
new file mode 100644
index 000000000000..1c4507b66fdd
--- /dev/null
+++ b/arch/arm/boot/dts/rv1108-elgin-r1.dts
@@ -0,0 +1,208 @@
1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2
3/*
4 * Copyright (C) 2018 O.S. Systems Software LTDA.
5 */
6
7/dts-v1/;
8
9#include "rv1108.dtsi"
10
11/ {
12 model = "Elgin RV1108 R1 board";
13 compatible = "elgin,rv1108-r1", "rockchip,rv1108";
14
15 memory@60000000 {
16 device_type = "memory";
17 reg = <0x60000000 0x08000000>;
18 };
19
20 chosen {
21 stdout-path = "serial2:1500000n8";
22 };
23
24 vcc_sys: vsys-regulator {
25 compatible = "regulator-fixed";
26 regulator-name = "vsys";
27 regulator-min-microvolt = <5000000>;
28 regulator-max-microvolt = <5000000>;
29 regulator-boot-on;
30 };
31};
32
33&cpu0 {
34 cpu-supply = <&vdd_core>;
35};
36
37&emmc {
38 bus-width = <8>;
39 cap-mmc-highspeed;
40 disable-wp;
41 no-sd;
42 no-sdio;
43 non-removable;
44 mmc-ddr-1_8v;
45 mmc-hs200-1_8v;
46 pinctrl-names = "default";
47 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
48 status = "okay";
49};
50
51&gmac {
52 clock_in_out = "output";
53 pinctrl-names = "default";
54 pinctrl-0 = <&rmii_pins>;
55 snps,reset-gpio = <&gpio1 RK_PC1 GPIO_ACTIVE_LOW>;
56 snps,reset-active-low;
57 status = "okay";
58};
59
60&i2c0 {
61 clock-frequency = <400000>;
62 i2c-scl-rising-time-ns = <275>;
63 i2c-scl-falling-time-ns = <16>;
64 status = "okay";
65
66 rk805: pmic@18 {
67 compatible = "rockchip,rk805";
68 reg = <0x18>;
69 interrupt-parent = <&gpio0>;
70 interrupts = <RK_PB4 IRQ_TYPE_LEVEL_LOW>;
71 rockchip,system-power-controller;
72
73 vcc1-supply = <&vcc_sys>;
74 vcc2-supply = <&vcc_sys>;
75 vcc3-supply = <&vcc_sys>;
76 vcc4-supply = <&vcc_sys>;
77 vcc5-supply = <&vdd_buck2>;
78 vcc6-supply = <&vdd_buck2>;
79
80 regulators {
81 vdd_core: DCDC_REG1 {
82 regulator-name= "vdd_core";
83 regulator-min-microvolt = <700000>;
84 regulator-max-microvolt = <1500000>;
85 regulator-always-on;
86 regulator-boot-on;
87 regulator-state-mem {
88 regulator-on-in-suspend;
89 regulator-suspend-microvolt = <900000>;
90 };
91 };
92
93 vdd_buck2: DCDC_REG2 {
94 regulator-name= "vdd_buck2";
95 regulator-min-microvolt = <2200000>;
96 regulator-max-microvolt = <2200000>;
97 regulator-always-on;
98 regulator-boot-on;
99 regulator-state-mem {
100 regulator-off-in-suspend;
101 };
102 };
103
104 vcc_ddr: DCDC_REG3 {
105 regulator-name= "vcc_ddr";
106 regulator-always-on;
107 regulator-boot-on;
108 regulator-state-mem {
109 regulator-on-in-suspend;
110 };
111 };
112
113 vcc_io: DCDC_REG4 {
114 regulator-name= "vcc_io";
115 regulator-min-microvolt = <3300000>;
116 regulator-max-microvolt = <3300000>;
117 regulator-always-on;
118 regulator-boot-on;
119 regulator-state-mem {
120 regulator-on-in-suspend;
121 regulator-suspend-microvolt = <3300000>;
122 };
123 };
124
125 vdd_10: LDO_REG1 {
126 regulator-name= "vdd_10";
127 regulator-min-microvolt = <1000000>;
128 regulator-max-microvolt = <1000000>;
129 regulator-always-on;
130 regulator-boot-on;
131 regulator-state-mem {
132 regulator-off-in-suspend;
133 };
134 };
135
136 vcc_18: LDO_REG2 {
137 regulator-name= "vcc_18";
138 regulator-min-microvolt = <1800000>;
139 regulator-max-microvolt = <1800000>;
140 regulator-always-on;
141 regulator-boot-on;
142 regulator-state-mem {
143 regulator-off-in-suspend;
144 };
145 };
146
147 vdd10_pmu: LDO_REG3 {
148 regulator-name= "vdd10_pmu";
149 regulator-min-microvolt = <1000000>;
150 regulator-max-microvolt = <1000000>;
151 regulator-always-on;
152 regulator-boot-on;
153 regulator-state-mem {
154 regulator-on-in-suspend;
155 regulator-suspend-microvolt = <1000000>;
156 };
157 };
158 };
159 };
160};
161
162&spi {
163 pinctrl-names = "default";
164 pinctrl-0 = <&spim1_clk &spim1_cs0 &spim1_tx &spim1_rx>;
165 status = "okay";
166
167 dh2228fv: dac@0 {
168 compatible = "rohm,dh2228fv";
169 reg = <0>;
170 spi-max-frequency = <24000000>;
171 spi-cpha;
172 spi-cpol;
173 };
174};
175
176&u2phy {
177 status = "okay";
178
179 u2phy_host: host-port {
180 status = "okay";
181 };
182
183 u2phy_otg: otg-port {
184 status = "okay";
185 };
186};
187
188&uart0 {
189 pinctrl-names = "default";
190 pinctrl-0 = <&uart0_xfer>;
191 status = "okay";
192};
193
194&uart2 {
195 status = "okay";
196};
197
198&usb_host_ehci {
199 status = "okay";
200};
201
202&usb_host_ohci {
203 status = "okay";
204};
205
206&usb_otg {
207 status = "okay";
208};
diff --git a/arch/arm/boot/dts/rv1108-evb.dts b/arch/arm/boot/dts/rv1108-evb.dts
index 203d83e3bbf5..30f3d0470ad9 100644
--- a/arch/arm/boot/dts/rv1108-evb.dts
+++ b/arch/arm/boot/dts/rv1108-evb.dts
@@ -97,8 +97,8 @@
97 regulator-always-on; 97 regulator-always-on;
98 regulator-boot-on; 98 regulator-boot-on;
99 regulator-state-mem { 99 regulator-state-mem {
100 regulator-state-enabled; 100 regulator-on-in-suspend;
101 regulator-state-uv = <900000>; 101 regulator-suspend-microvolt = <900000>;
102 }; 102 };
103 }; 103 };
104 104
@@ -107,7 +107,7 @@
107 regulator-min-microvolt = <700000>; 107 regulator-min-microvolt = <700000>;
108 regulator-max-microvolt = <2000000>; 108 regulator-max-microvolt = <2000000>;
109 regulator-state-mem { 109 regulator-state-mem {
110 regulator-state-disabled; 110 regulator-off-in-suspend;
111 }; 111 };
112 }; 112 };
113 113
@@ -116,7 +116,7 @@
116 regulator-always-on; 116 regulator-always-on;
117 regulator-boot-on; 117 regulator-boot-on;
118 regulator-state-mem { 118 regulator-state-mem {
119 regulator-state-enabled; 119 regulator-on-in-suspend;
120 }; 120 };
121 }; 121 };
122 122
@@ -127,8 +127,8 @@
127 regulator-always-on; 127 regulator-always-on;
128 regulator-boot-on; 128 regulator-boot-on;
129 regulator-state-mem { 129 regulator-state-mem {
130 regulator-state-enabled; 130 regulator-on-in-suspend;
131 regulator-state-uv = <3300000>; 131 regulator-suspend-microvolt = <3300000>;
132 }; 132 };
133 }; 133 };
134 134
@@ -139,7 +139,7 @@
139 regulator-always-on; 139 regulator-always-on;
140 regulator-boot-on; 140 regulator-boot-on;
141 regulator-state-mem { 141 regulator-state-mem {
142 regulator-state-disabled; 142 regulator-off-in-suspend;
143 }; 143 };
144 }; 144 };
145 145
@@ -150,7 +150,7 @@
150 regulator-always-on; 150 regulator-always-on;
151 regulator-boot-on; 151 regulator-boot-on;
152 regulator-state-mem { 152 regulator-state-mem {
153 regulator-state-disabled; 153 regulator-off-in-suspend;
154 }; 154 };
155 }; 155 };
156 156
@@ -161,8 +161,8 @@
161 regulator-always-on; 161 regulator-always-on;
162 regulator-boot-on; 162 regulator-boot-on;
163 regulator-state-mem { 163 regulator-state-mem {
164 regulator-state-enabled; 164 regulator-on-in-suspend;
165 regulator-state-uv = <1000000>; 165 regulator-suspend-microvolt = <1000000>;
166 }; 166 };
167 }; 167 };
168 }; 168 };
diff --git a/arch/arm/boot/dts/rv1108.dtsi b/arch/arm/boot/dts/rv1108.dtsi
index d31370ff28f4..f47ac86d2852 100644
--- a/arch/arm/boot/dts/rv1108.dtsi
+++ b/arch/arm/boot/dts/rv1108.dtsi
@@ -207,6 +207,7 @@
207 clocks = <&cru SCLK_SPI>, <&cru PCLK_SPI>; 207 clocks = <&cru SCLK_SPI>, <&cru PCLK_SPI>;
208 clock-names = "spiclk", "apb_pclk"; 208 clock-names = "spiclk", "apb_pclk";
209 dmas = <&pdma 8>, <&pdma 9>; 209 dmas = <&pdma 8>, <&pdma 9>;
210 dma-names = "tx", "rx";
210 #dma-cells = <2>; 211 #dma-cells = <2>;
211 #address-cells = <1>; 212 #address-cells = <1>;
212 #size-cells = <0>; 213 #size-cells = <0>;
@@ -833,6 +834,42 @@
833 }; 834 };
834 }; 835 };
835 836
837 spim0 {
838 spim0_clk: spim0-clk {
839 rockchip,pins = <1 RK_PD0 RK_FUNC_2 &pcfg_pull_up>;
840 };
841
842 spim0_cs0: spim0-cs0 {
843 rockchip,pins = <1 RK_PD1 RK_FUNC_2 &pcfg_pull_up>;
844 };
845
846 spim0_tx: spim0-tx {
847 rockchip,pins = <1 RK_PD3 RK_FUNC_2 &pcfg_pull_up>;
848 };
849
850 spim0_rx: spim0-rx {
851 rockchip,pins = <1 RK_PD2 RK_FUNC_2 &pcfg_pull_up>;
852 };
853 };
854
855 spim1 {
856 spim1_clk: spim1-clk {
857 rockchip,pins = <0 RK_PA3 RK_FUNC_1 &pcfg_pull_up>;
858 };
859
860 spim1_cs0: spim1-cs0 {
861 rockchip,pins = <0 RK_PA4 RK_FUNC_1 &pcfg_pull_up>;
862 };
863
864 spim1_rx: spim1-rx {
865 rockchip,pins = <0 RK_PB0 RK_FUNC_1 &pcfg_pull_up>;
866 };
867
868 spim1_tx: spim1-tx {
869 rockchip,pins = <0 RK_PA7 RK_FUNC_1 &pcfg_pull_up>;
870 };
871 };
872
836 tsadc { 873 tsadc {
837 otp_out: otp-out { 874 otp_out: otp-out {
838 rockchip,pins = <0 RK_PB7 RK_FUNC_1 &pcfg_pull_none>; 875 rockchip,pins = <0 RK_PB7 RK_FUNC_1 &pcfg_pull_none>;
diff --git a/arch/arm/boot/dts/s3c2416-smdk2416.dts b/arch/arm/boot/dts/s3c2416-smdk2416.dts
index 5164386aff3a..cb371bf72f64 100644
--- a/arch/arm/boot/dts/s3c2416-smdk2416.dts
+++ b/arch/arm/boot/dts/s3c2416-smdk2416.dts
@@ -19,9 +19,12 @@
19 19
20 clocks { 20 clocks {
21 compatible = "simple-bus"; 21 compatible = "simple-bus";
22 #address-cells = <1>;
23 #size-cells = <0>;
22 24
23 xti: xti { 25 xti: xti@0 {
24 compatible = "fixed-clock"; 26 compatible = "fixed-clock";
27 reg = <0>;
25 clock-frequency = <12000000>; 28 clock-frequency = <12000000>;
26 clock-output-names = "xti"; 29 clock-output-names = "xti";
27 #clock-cells = <0>; 30 #clock-cells = <0>;
diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi b/arch/arm/boot/dts/s5pv210-aries.dtsi
index 575094ea7024..8ff70b856334 100644
--- a/arch/arm/boot/dts/s5pv210-aries.dtsi
+++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
@@ -23,6 +23,31 @@
23 0x50000000 0x08000000>; 23 0x50000000 0x08000000>;
24 }; 24 };
25 25
26 reserved-memory {
27 #address-cells = <1>;
28 #size-cells = <1>;
29 ranges;
30
31 mfc_left: region@43000000 {
32 compatible = "shared-dma-pool";
33 no-map;
34 reg = <0x43000000 0x2000000>;
35 };
36
37 mfc_right: region@51000000 {
38 compatible = "shared-dma-pool";
39 no-map;
40 reg = <0x51000000 0x2000000>;
41 };
42 };
43
44 vibrator_pwr: regulator-fixed-0 {
45 compatible = "regulator-fixed";
46 regulator-name = "vibrator-en";
47 enable-active-high;
48 gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
49 };
50
26 wifi_pwrseq: wifi-pwrseq { 51 wifi_pwrseq: wifi-pwrseq {
27 compatible = "mmc-pwrseq-simple"; 52 compatible = "mmc-pwrseq-simple";
28 reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>; 53 reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
@@ -296,6 +321,22 @@
296 reg = <0x36>; 321 reg = <0x36>;
297 }; 322 };
298 }; 323 };
324
325 vibrator: pwm-vibrator {
326 compatible = "pwm-vibrator";
327 pwms = <&pwm 1 44642 0>;
328 pwm-names = "enable";
329 vcc-supply = <&vibrator_pwr>;
330 pinctrl-names = "default";
331 pinctrl-0 = <&pwm1_out>;
332 };
333
334 poweroff: syscon-poweroff {
335 compatible = "syscon-poweroff";
336 regmap = <&pmu_syscon>;
337 offset = <0x681c>; /* PS_HOLD_CONTROL */
338 value = <0x5200>;
339 };
299}; 340};
300 341
301&fimd { 342&fimd {
@@ -329,6 +370,27 @@
329 status = "okay"; 370 status = "okay";
330}; 371};
331 372
373&i2c2 {
374 samsung,i2c-sda-delay = <100>;
375 samsung,i2c-max-bus-freq = <400000>;
376 samsung,i2c-slave-addr = <0x10>;
377 status = "okay";
378
379 touchscreen@4a {
380 compatible = "atmel,maxtouch";
381 reg = <0x4a>;
382 interrupt-parent = <&gpj0>;
383 interrupts = <5 IRQ_TYPE_EDGE_FALLING>;
384 pinctrl-names = "default";
385 pinctrl-0 = <&ts_irq>;
386 reset-gpios = <&gpj1 3 GPIO_ACTIVE_HIGH>;
387 };
388};
389
390&mfc {
391 memory-region = <&mfc_left>, <&mfc_right>;
392};
393
332&pinctrl0 { 394&pinctrl0 {
333 wlan_bt_en: wlan-bt-en { 395 wlan_bt_en: wlan-bt-en {
334 samsung,pins = "gpb-5"; 396 samsung,pins = "gpb-5";
@@ -350,6 +412,13 @@
350 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>; 412 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
351 }; 413 };
352 414
415 bt_host_wake: bt-host-wake {
416 samsung,pins = "gph2-5";
417 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
418 samsung,pin-pud = <S3C64XX_PIN_PULL_DOWN>;
419 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
420 };
421
353 tf_detect: tf-detect { 422 tf_detect: tf-detect {
354 samsung,pins = "gph3-4"; 423 samsung,pins = "gph3-4";
355 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>; 424 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
@@ -362,6 +431,17 @@
362 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>; 431 samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
363 samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>; 432 samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
364 }; 433 };
434
435 ts_irq: ts-irq {
436 samsung,pins = "gpj0-5";
437 samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
438 samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
439 samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
440 };
441};
442
443&pwm {
444 samsung,pwm-outputs = <1>;
365}; 445};
366 446
367&sdhci1 { 447&sdhci1 {
@@ -399,6 +479,16 @@
399 479
400&uart0 { 480&uart0 {
401 status = "okay"; 481 status = "okay";
482
483 bluetooth {
484 compatible = "brcm,bcm43438-bt";
485 max-speed = <115200>;
486 pinctrl-names = "default";
487 pinctrl-0 = <&uart0_data &uart0_fctl &bt_host_wake>;
488 shutdown-gpios = <&gpb 3 GPIO_ACTIVE_HIGH>;
489 device-wakeup-gpios = <&gpg3 4 GPIO_ACTIVE_HIGH>;
490 host-wakeup-gpios = <&gph2 5 GPIO_ACTIVE_HIGH>;
491 };
402}; 492};
403 493
404&uart1 { 494&uart1 {
diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
index ccf761b1babf..07a8d9bbe5b8 100644
--- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
+++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
@@ -11,13 +11,6 @@
11 11
12 chosen { 12 chosen {
13 stdout-path = &uart2; 13 stdout-path = &uart2;
14 /*
15 * It's hard to change those parameters in stock bootloader,
16 * since it requires special hardware/cable.
17 * Let's hardocde bootargs for now, till u-boot port is finished,
18 * with which it should be easier.
19 */
20 bootargs = "root=/dev/mmcblk1p1 rw rootwait ignore_loglevel earlyprintk";
21 }; 14 };
22 15
23 gpio-keys { 16 gpio-keys {
diff --git a/arch/arm/boot/dts/s5pv210-galaxys.dts b/arch/arm/boot/dts/s5pv210-galaxys.dts
index 842276749717..cf161bbfbacf 100644
--- a/arch/arm/boot/dts/s5pv210-galaxys.dts
+++ b/arch/arm/boot/dts/s5pv210-galaxys.dts
@@ -11,13 +11,6 @@
11 11
12 chosen { 12 chosen {
13 stdout-path = &uart2; 13 stdout-path = &uart2;
14 /*
15 * It's hard to change those parameters in stock bootloader,
16 * since it requires special hardware/cable.
17 * Let's hardocde bootargs for now, till u-boot port is finished,
18 * with which it should be easier.
19 */
20 bootargs = "root=/dev/mmcblk2p1 rw rootwait ignore_loglevel earlyprintk";
21 }; 14 };
22 15
23 nand_pwrseq: nand-pwrseq { 16 nand_pwrseq: nand-pwrseq {
diff --git a/arch/arm/boot/dts/s5pv210.dtsi b/arch/arm/boot/dts/s5pv210.dtsi
index 12eac8930eac..a44d5eb56bed 100644
--- a/arch/arm/boot/dts/s5pv210.dtsi
+++ b/arch/arm/boot/dts/s5pv210.dtsi
@@ -25,6 +25,8 @@
25 25
26 aliases { 26 aliases {
27 csis0 = &csis0; 27 csis0 = &csis0;
28 dmc0 = &dmc0;
29 dmc1 = &dmc1;
28 fimc0 = &fimc0; 30 fimc0 = &fimc0;
29 fimc1 = &fimc1; 31 fimc1 = &fimc1;
30 fimc2 = &fimc2; 32 fimc2 = &fimc2;
@@ -78,7 +80,7 @@
78 }; 80 };
79 }; 81 };
80 82
81 onenand: onenand@b0000000 { 83 onenand: onenand@b0600000 {
82 compatible = "samsung,s5pv210-onenand"; 84 compatible = "samsung,s5pv210-onenand";
83 reg = <0xb0600000 0x2000>, 85 reg = <0xb0600000 0x2000>,
84 <0xb0000000 0x20000>, 86 <0xb0000000 0x20000>,
@@ -511,7 +513,7 @@
511 }; 513 };
512 514
513 fimd: fimd@f8000000 { 515 fimd: fimd@f8000000 {
514 compatible = "samsung,exynos4210-fimd"; 516 compatible = "samsung,s5pv210-fimd";
515 interrupt-parent = <&vic2>; 517 interrupt-parent = <&vic2>;
516 reg = <0xf8000000 0x20000>; 518 reg = <0xf8000000 0x20000>;
517 interrupt-names = "fifo", "vsync", "lcd_sys"; 519 interrupt-names = "fifo", "vsync", "lcd_sys";
@@ -521,6 +523,16 @@
521 status = "disabled"; 523 status = "disabled";
522 }; 524 };
523 525
526 dmc0: dmc@f0000000 {
527 compatible = "samsung,s5pv210-dmc";
528 reg = <0xf0000000 0x1000>;
529 };
530
531 dmc1: dmc@f1400000 {
532 compatible = "samsung,s5pv210-dmc";
533 reg = <0xf1400000 0x1000>;
534 };
535
524 g2d: g2d@fa000000 { 536 g2d: g2d@fa000000 {
525 compatible = "samsung,s5pv210-g2d"; 537 compatible = "samsung,s5pv210-g2d";
526 reg = <0xfa000000 0x1000>; 538 reg = <0xfa000000 0x1000>;
@@ -542,6 +554,15 @@
542 #dma-requests = <1>; 554 #dma-requests = <1>;
543 }; 555 };
544 556
557 rotator: rotator@fa300000 {
558 compatible = "samsung,s5pv210-rotator";
559 reg = <0xfa300000 0x1000>;
560 interrupt-parent = <&vic2>;
561 interrupts = <4>;
562 clocks = <&clocks CLK_ROTATOR>;
563 clock-names = "rotator";
564 };
565
545 i2c1: i2c@fab00000 { 566 i2c1: i2c@fab00000 {
546 compatible = "samsung,s3c2440-i2c"; 567 compatible = "samsung,s3c2440-i2c";
547 reg = <0xfab00000 0x1000>; 568 reg = <0xfab00000 0x1000>;
diff --git a/arch/arm/boot/dts/sama5d2.dtsi b/arch/arm/boot/dts/sama5d2.dtsi
index dc2280d9127f..d159ee42ef29 100644
--- a/arch/arm/boot/dts/sama5d2.dtsi
+++ b/arch/arm/boot/dts/sama5d2.dtsi
@@ -43,13 +43,14 @@
43 * OTHER DEALINGS IN THE SOFTWARE. 43 * OTHER DEALINGS IN THE SOFTWARE.
44 */ 44 */
45 45
46#include "skeleton.dtsi"
47#include <dt-bindings/dma/at91.h> 46#include <dt-bindings/dma/at91.h>
48#include <dt-bindings/interrupt-controller/irq.h> 47#include <dt-bindings/interrupt-controller/irq.h>
49#include <dt-bindings/clock/at91.h> 48#include <dt-bindings/clock/at91.h>
50#include <dt-bindings/iio/adc/at91-sama5d2_adc.h> 49#include <dt-bindings/iio/adc/at91-sama5d2_adc.h>
51 50
52/ { 51/ {
52 #address-cells = <1>;
53 #size-cells = <1>;
53 model = "Atmel SAMA5D2 family SoC"; 54 model = "Atmel SAMA5D2 family SoC";
54 compatible = "atmel,sama5d2"; 55 compatible = "atmel,sama5d2";
55 interrupt-parent = <&aic>; 56 interrupt-parent = <&aic>;
@@ -113,6 +114,7 @@
113 }; 114 };
114 115
115 memory { 116 memory {
117 device_type = "memory";
116 reg = <0x20000000 0x20000000>; 118 reg = <0x20000000 0x20000000>;
117 }; 119 };
118 120
diff --git a/arch/arm/boot/dts/sama5d3.dtsi b/arch/arm/boot/dts/sama5d3.dtsi
index 1408fa4a62e4..02198772eb81 100644
--- a/arch/arm/boot/dts/sama5d3.dtsi
+++ b/arch/arm/boot/dts/sama5d3.dtsi
@@ -8,7 +8,6 @@
8 * Licensed under GPLv2 or later. 8 * Licensed under GPLv2 or later.
9 */ 9 */
10 10
11#include "skeleton.dtsi"
12#include <dt-bindings/dma/at91.h> 11#include <dt-bindings/dma/at91.h>
13#include <dt-bindings/pinctrl/at91.h> 12#include <dt-bindings/pinctrl/at91.h>
14#include <dt-bindings/interrupt-controller/irq.h> 13#include <dt-bindings/interrupt-controller/irq.h>
@@ -16,6 +15,8 @@
16#include <dt-bindings/clock/at91.h> 15#include <dt-bindings/clock/at91.h>
17 16
18/ { 17/ {
18 #address-cells = <1>;
19 #size-cells = <1>;
19 model = "Atmel SAMA5D3 family SoC"; 20 model = "Atmel SAMA5D3 family SoC";
20 compatible = "atmel,sama5d3", "atmel,sama5"; 21 compatible = "atmel,sama5d3", "atmel,sama5";
21 interrupt-parent = <&aic>; 22 interrupt-parent = <&aic>;
@@ -56,6 +57,7 @@
56 }; 57 };
57 58
58 memory { 59 memory {
60 device_type = "memory";
59 reg = <0x20000000 0x8000000>; 61 reg = <0x20000000 0x8000000>;
60 }; 62 };
61 63
diff --git a/arch/arm/boot/dts/sama5d4.dtsi b/arch/arm/boot/dts/sama5d4.dtsi
index 2604fd07dd53..6c1e41f94549 100644
--- a/arch/arm/boot/dts/sama5d4.dtsi
+++ b/arch/arm/boot/dts/sama5d4.dtsi
@@ -43,7 +43,6 @@
43 * OTHER DEALINGS IN THE SOFTWARE. 43 * OTHER DEALINGS IN THE SOFTWARE.
44 */ 44 */
45 45
46#include "skeleton.dtsi"
47#include <dt-bindings/clock/at91.h> 46#include <dt-bindings/clock/at91.h>
48#include <dt-bindings/dma/at91.h> 47#include <dt-bindings/dma/at91.h>
49#include <dt-bindings/pinctrl/at91.h> 48#include <dt-bindings/pinctrl/at91.h>
@@ -51,6 +50,8 @@
51#include <dt-bindings/gpio/gpio.h> 50#include <dt-bindings/gpio/gpio.h>
52 51
53/ { 52/ {
53 #address-cells = <1>;
54 #size-cells = <1>;
54 model = "Atmel SAMA5D4 family SoC"; 55 model = "Atmel SAMA5D4 family SoC";
55 compatible = "atmel,sama5d4"; 56 compatible = "atmel,sama5d4";
56 interrupt-parent = <&aic>; 57 interrupt-parent = <&aic>;
@@ -90,6 +91,7 @@
90 }; 91 };
91 92
92 memory { 93 memory {
94 device_type = "memory";
93 reg = <0x20000000 0x20000000>; 95 reg = <0x20000000 0x20000000>;
94 }; 96 };
95 97
diff --git a/arch/arm/boot/dts/skeleton.dtsi b/arch/arm/boot/dts/skeleton.dtsi
deleted file mode 100644
index 34eda68d9ea2..000000000000
--- a/arch/arm/boot/dts/skeleton.dtsi
+++ /dev/null
@@ -1,18 +0,0 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * This file is deprecated, and will be removed once existing users have been
4 * updated. New dts{,i} files should *not* include skeleton.dtsi, and should
5 * instead explicitly provide the below nodes only as required.
6 *
7 * Skeleton device tree; the bare minimum needed to boot; just include and
8 * add a compatible value. The bootloader will typically populate the memory
9 * node.
10 */
11
12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15 chosen { };
16 aliases { };
17 memory { device_type = "memory"; reg = <0 0>; };
18};
diff --git a/arch/arm/boot/dts/skeleton64.dtsi b/arch/arm/boot/dts/skeleton64.dtsi
deleted file mode 100644
index 54e637752b9d..000000000000
--- a/arch/arm/boot/dts/skeleton64.dtsi
+++ /dev/null
@@ -1,14 +0,0 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Skeleton device tree in the 64 bits version; the bare minimum
4 * needed to boot; just include and add a compatible value. The
5 * bootloader will typically populate the memory node.
6 */
7
8/ {
9 #address-cells = <2>;
10 #size-cells = <2>;
11 chosen { };
12 aliases { };
13 memory { device_type = "memory"; reg = <0 0 0 0>; };
14};
diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi
index dcb8fba3d709..ec1966480f2f 100644
--- a/arch/arm/boot/dts/socfpga.dtsi
+++ b/arch/arm/boot/dts/socfpga.dtsi
@@ -84,6 +84,7 @@
84 #dma-requests = <32>; 84 #dma-requests = <32>;
85 clocks = <&l4_main_clk>; 85 clocks = <&l4_main_clk>;
86 clock-names = "apb_pclk"; 86 clock-names = "apb_pclk";
87 resets = <&rst DMA_RESET>;
87 }; 88 };
88 }; 89 };
89 90
@@ -100,6 +101,7 @@
100 reg = <0xffc00000 0x1000>; 101 reg = <0xffc00000 0x1000>;
101 interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>; 102 interrupts = <0 131 4>, <0 132 4>, <0 133 4>, <0 134 4>;
102 clocks = <&can0_clk>; 103 clocks = <&can0_clk>;
104 resets = <&rst CAN0_RESET>;
103 status = "disabled"; 105 status = "disabled";
104 }; 106 };
105 107
@@ -108,6 +110,7 @@
108 reg = <0xffc01000 0x1000>; 110 reg = <0xffc01000 0x1000>;
109 interrupts = <0 135 4>, <0 136 4>, <0 137 4>, <0 138 4>; 111 interrupts = <0 135 4>, <0 136 4>, <0 137 4>, <0 138 4>;
110 clocks = <&can1_clk>; 112 clocks = <&can1_clk>;
113 resets = <&rst CAN1_RESET>;
111 status = "disabled"; 114 status = "disabled";
112 }; 115 };
113 116
@@ -585,6 +588,7 @@
585 compatible = "snps,dw-apb-gpio"; 588 compatible = "snps,dw-apb-gpio";
586 reg = <0xff708000 0x1000>; 589 reg = <0xff708000 0x1000>;
587 clocks = <&l4_mp_clk>; 590 clocks = <&l4_mp_clk>;
591 resets = <&rst GPIO0_RESET>;
588 status = "disabled"; 592 status = "disabled";
589 593
590 porta: gpio-controller@0 { 594 porta: gpio-controller@0 {
@@ -605,6 +609,7 @@
605 compatible = "snps,dw-apb-gpio"; 609 compatible = "snps,dw-apb-gpio";
606 reg = <0xff709000 0x1000>; 610 reg = <0xff709000 0x1000>;
607 clocks = <&l4_mp_clk>; 611 clocks = <&l4_mp_clk>;
612 resets = <&rst GPIO1_RESET>;
608 status = "disabled"; 613 status = "disabled";
609 614
610 portb: gpio-controller@0 { 615 portb: gpio-controller@0 {
@@ -625,6 +630,7 @@
625 compatible = "snps,dw-apb-gpio"; 630 compatible = "snps,dw-apb-gpio";
626 reg = <0xff70a000 0x1000>; 631 reg = <0xff70a000 0x1000>;
627 clocks = <&l4_mp_clk>; 632 clocks = <&l4_mp_clk>;
633 resets = <&rst GPIO2_RESET>;
628 status = "disabled"; 634 status = "disabled";
629 635
630 portc: gpio-controller@0 { 636 portc: gpio-controller@0 {
@@ -735,6 +741,7 @@
735 #size-cells = <0>; 741 #size-cells = <0>;
736 clocks = <&l4_mp_clk>, <&sdmmc_clk_divided>; 742 clocks = <&l4_mp_clk>, <&sdmmc_clk_divided>;
737 clock-names = "biu", "ciu"; 743 clock-names = "biu", "ciu";
744 resets = <&rst SDMMC_RESET>;
738 status = "disabled"; 745 status = "disabled";
739 }; 746 };
740 747
@@ -748,6 +755,7 @@
748 interrupts = <0x0 0x90 0x4>; 755 interrupts = <0x0 0x90 0x4>;
749 clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>; 756 clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
750 clock-names = "nand", "nand_x", "ecc"; 757 clock-names = "nand", "nand_x", "ecc";
758 resets = <&rst NAND_RESET>;
751 status = "disabled"; 759 status = "disabled";
752 }; 760 };
753 761
@@ -767,6 +775,7 @@
767 cdns,fifo-width = <4>; 775 cdns,fifo-width = <4>;
768 cdns,trigger-address = <0x00000000>; 776 cdns,trigger-address = <0x00000000>;
769 clocks = <&qspi_clk>; 777 clocks = <&qspi_clk>;
778 resets = <&rst QSPI_RESET>;
770 status = "disabled"; 779 status = "disabled";
771 }; 780 };
772 781
@@ -785,6 +794,7 @@
785 sdr: sdr@ffc25000 { 794 sdr: sdr@ffc25000 {
786 compatible = "altr,sdr-ctl", "syscon"; 795 compatible = "altr,sdr-ctl", "syscon";
787 reg = <0xffc25000 0x1000>; 796 reg = <0xffc25000 0x1000>;
797 resets = <&rst SDR_RESET>;
788 }; 798 };
789 799
790 sdramedac { 800 sdramedac {
@@ -801,6 +811,7 @@
801 interrupts = <0 154 4>; 811 interrupts = <0 154 4>;
802 num-cs = <4>; 812 num-cs = <4>;
803 clocks = <&spi_m_clk>; 813 clocks = <&spi_m_clk>;
814 resets = <&rst SPIM0_RESET>;
804 status = "disabled"; 815 status = "disabled";
805 }; 816 };
806 817
@@ -812,6 +823,7 @@
812 interrupts = <0 155 4>; 823 interrupts = <0 155 4>;
813 num-cs = <4>; 824 num-cs = <4>;
814 clocks = <&spi_m_clk>; 825 clocks = <&spi_m_clk>;
826 resets = <&rst SPIM1_RESET>;
815 status = "disabled"; 827 status = "disabled";
816 }; 828 };
817 829
@@ -878,6 +890,7 @@
878 dmas = <&pdma 28>, 890 dmas = <&pdma 28>,
879 <&pdma 29>; 891 <&pdma 29>;
880 dma-names = "tx", "rx"; 892 dma-names = "tx", "rx";
893 resets = <&rst UART0_RESET>;
881 }; 894 };
882 895
883 uart1: serial1@ffc03000 { 896 uart1: serial1@ffc03000 {
@@ -890,6 +903,7 @@
890 dmas = <&pdma 30>, 903 dmas = <&pdma 30>,
891 <&pdma 31>; 904 <&pdma 31>;
892 dma-names = "tx", "rx"; 905 dma-names = "tx", "rx";
906 resets = <&rst UART1_RESET>;
893 }; 907 };
894 908
895 usbphy0: usbphy { 909 usbphy0: usbphy {
@@ -929,6 +943,7 @@
929 reg = <0xffd02000 0x1000>; 943 reg = <0xffd02000 0x1000>;
930 interrupts = <0 171 4>; 944 interrupts = <0 171 4>;
931 clocks = <&osc1>; 945 clocks = <&osc1>;
946 resets = <&rst L4WD0_RESET>;
932 status = "disabled"; 947 status = "disabled";
933 }; 948 };
934 949
@@ -937,6 +952,7 @@
937 reg = <0xffd03000 0x1000>; 952 reg = <0xffd03000 0x1000>;
938 interrupts = <0 172 4>; 953 interrupts = <0 172 4>;
939 clocks = <&osc1>; 954 clocks = <&osc1>;
955 resets = <&rst L4WD1_RESET>;
940 status = "disabled"; 956 status = "disabled";
941 }; 957 };
942 }; 958 };
diff --git a/arch/arm/boot/dts/socfpga_arria10.dtsi b/arch/arm/boot/dts/socfpga_arria10.dtsi
index e41fa23481c3..ae24599d5829 100644
--- a/arch/arm/boot/dts/socfpga_arria10.dtsi
+++ b/arch/arm/boot/dts/socfpga_arria10.dtsi
@@ -470,6 +470,7 @@
470 tx-fifo-depth = <4096>; 470 tx-fifo-depth = <4096>;
471 rx-fifo-depth = <16384>; 471 rx-fifo-depth = <16384>;
472 clocks = <&l4_mp_clk>; 472 clocks = <&l4_mp_clk>;
473 resets = <&rst EMAC2_RESET>;
473 clock-names = "stmmaceth"; 474 clock-names = "stmmaceth";
474 snps,axi-config = <&socfpga_axi_setup>; 475 snps,axi-config = <&socfpga_axi_setup>;
475 status = "disabled"; 476 status = "disabled";
@@ -480,6 +481,7 @@
480 #size-cells = <0>; 481 #size-cells = <0>;
481 compatible = "snps,dw-apb-gpio"; 482 compatible = "snps,dw-apb-gpio";
482 reg = <0xffc02900 0x100>; 483 reg = <0xffc02900 0x100>;
484 resets = <&rst GPIO0_RESET>;
483 status = "disabled"; 485 status = "disabled";
484 486
485 porta: gpio-controller@0 { 487 porta: gpio-controller@0 {
@@ -499,6 +501,7 @@
499 #size-cells = <0>; 501 #size-cells = <0>;
500 compatible = "snps,dw-apb-gpio"; 502 compatible = "snps,dw-apb-gpio";
501 reg = <0xffc02a00 0x100>; 503 reg = <0xffc02a00 0x100>;
504 resets = <&rst GPIO1_RESET>;
502 status = "disabled"; 505 status = "disabled";
503 506
504 portb: gpio-controller@0 { 507 portb: gpio-controller@0 {
@@ -518,6 +521,7 @@
518 #size-cells = <0>; 521 #size-cells = <0>;
519 compatible = "snps,dw-apb-gpio"; 522 compatible = "snps,dw-apb-gpio";
520 reg = <0xffc02b00 0x100>; 523 reg = <0xffc02b00 0x100>;
524 resets = <&rst GPIO2_RESET>;
521 status = "disabled"; 525 status = "disabled";
522 526
523 portc: gpio-controller@0 { 527 portc: gpio-controller@0 {
@@ -548,6 +552,7 @@
548 reg = <0xffc02200 0x100>; 552 reg = <0xffc02200 0x100>;
549 interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>; 553 interrupts = <0 105 IRQ_TYPE_LEVEL_HIGH>;
550 clocks = <&l4_sp_clk>; 554 clocks = <&l4_sp_clk>;
555 resets = <&rst I2C0_RESET>;
551 status = "disabled"; 556 status = "disabled";
552 }; 557 };
553 558
@@ -558,6 +563,7 @@
558 reg = <0xffc02300 0x100>; 563 reg = <0xffc02300 0x100>;
559 interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>; 564 interrupts = <0 106 IRQ_TYPE_LEVEL_HIGH>;
560 clocks = <&l4_sp_clk>; 565 clocks = <&l4_sp_clk>;
566 resets = <&rst I2C1_RESET>;
561 status = "disabled"; 567 status = "disabled";
562 }; 568 };
563 569
@@ -568,6 +574,7 @@
568 reg = <0xffc02400 0x100>; 574 reg = <0xffc02400 0x100>;
569 interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>; 575 interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>;
570 clocks = <&l4_sp_clk>; 576 clocks = <&l4_sp_clk>;
577 resets = <&rst I2C2_RESET>;
571 status = "disabled"; 578 status = "disabled";
572 }; 579 };
573 580
@@ -578,6 +585,7 @@
578 reg = <0xffc02500 0x100>; 585 reg = <0xffc02500 0x100>;
579 interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>; 586 interrupts = <0 108 IRQ_TYPE_LEVEL_HIGH>;
580 clocks = <&l4_sp_clk>; 587 clocks = <&l4_sp_clk>;
588 resets = <&rst I2C3_RESET>;
581 status = "disabled"; 589 status = "disabled";
582 }; 590 };
583 591
@@ -588,6 +596,7 @@
588 reg = <0xffc02600 0x100>; 596 reg = <0xffc02600 0x100>;
589 interrupts = <0 109 IRQ_TYPE_LEVEL_HIGH>; 597 interrupts = <0 109 IRQ_TYPE_LEVEL_HIGH>;
590 clocks = <&l4_sp_clk>; 598 clocks = <&l4_sp_clk>;
599 resets = <&rst I2C4_RESET>;
591 status = "disabled"; 600 status = "disabled";
592 }; 601 };
593 602
@@ -600,6 +609,7 @@
600 num-cs = <4>; 609 num-cs = <4>;
601 /*32bit_access;*/ 610 /*32bit_access;*/
602 clocks = <&spi_m_clk>; 611 clocks = <&spi_m_clk>;
612 resets = <&rst SPIM0_RESET>;
603 status = "disabled"; 613 status = "disabled";
604 }; 614 };
605 615
@@ -614,6 +624,7 @@
614 tx-dma-channel = <&pdma 16>; 624 tx-dma-channel = <&pdma 16>;
615 rx-dma-channel = <&pdma 17>; 625 rx-dma-channel = <&pdma 17>;
616 clocks = <&spi_m_clk>; 626 clocks = <&spi_m_clk>;
627 resets = <&rst SPIM1_RESET>;
617 status = "disabled"; 628 status = "disabled";
618 }; 629 };
619 630
@@ -642,6 +653,7 @@
642 fifo-depth = <0x400>; 653 fifo-depth = <0x400>;
643 clocks = <&l4_mp_clk>, <&sdmmc_clk>; 654 clocks = <&l4_mp_clk>, <&sdmmc_clk>;
644 clock-names = "biu", "ciu"; 655 clock-names = "biu", "ciu";
656 resets = <&rst SDMMC_RESET>;
645 status = "disabled"; 657 status = "disabled";
646 }; 658 };
647 659
@@ -655,6 +667,7 @@
655 interrupts = <0 99 4>; 667 interrupts = <0 99 4>;
656 clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>; 668 clocks = <&nand_clk>, <&nand_x_clk>, <&nand_ecc_clk>;
657 clock-names = "nand", "nand_x", "ecc"; 669 clock-names = "nand", "nand_x", "ecc";
670 resets = <&rst NAND_RESET>;
658 status = "disabled"; 671 status = "disabled";
659 }; 672 };
660 673
@@ -739,6 +752,7 @@
739 cdns,fifo-width = <4>; 752 cdns,fifo-width = <4>;
740 cdns,trigger-address = <0x00000000>; 753 cdns,trigger-address = <0x00000000>;
741 clocks = <&qspi_clk>; 754 clocks = <&qspi_clk>;
755 resets = <&rst QSPI_RESET>;
742 status = "disabled"; 756 status = "disabled";
743 }; 757 };
744 758
@@ -815,6 +829,7 @@
815 reg-shift = <2>; 829 reg-shift = <2>;
816 reg-io-width = <4>; 830 reg-io-width = <4>;
817 clocks = <&l4_sp_clk>; 831 clocks = <&l4_sp_clk>;
832 resets = <&rst UART0_RESET>;
818 status = "disabled"; 833 status = "disabled";
819 }; 834 };
820 835
@@ -825,6 +840,7 @@
825 reg-shift = <2>; 840 reg-shift = <2>;
826 reg-io-width = <4>; 841 reg-io-width = <4>;
827 clocks = <&l4_sp_clk>; 842 clocks = <&l4_sp_clk>;
843 resets = <&rst UART1_RESET>;
828 status = "disabled"; 844 status = "disabled";
829 }; 845 };
830 846
@@ -865,6 +881,7 @@
865 reg = <0xffd00200 0x100>; 881 reg = <0xffd00200 0x100>;
866 interrupts = <0 119 IRQ_TYPE_LEVEL_HIGH>; 882 interrupts = <0 119 IRQ_TYPE_LEVEL_HIGH>;
867 clocks = <&l4_sys_free_clk>; 883 clocks = <&l4_sys_free_clk>;
884 resets = <&rst L4WD0_RESET>;
868 status = "disabled"; 885 status = "disabled";
869 }; 886 };
870 887
@@ -873,6 +890,7 @@
873 reg = <0xffd00300 0x100>; 890 reg = <0xffd00300 0x100>;
874 interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>; 891 interrupts = <0 120 IRQ_TYPE_LEVEL_HIGH>;
875 clocks = <&l4_sys_free_clk>; 892 clocks = <&l4_sys_free_clk>;
893 resets = <&rst L4WD1_RESET>;
876 status = "disabled"; 894 status = "disabled";
877 }; 895 };
878 }; 896 };
diff --git a/arch/arm/boot/dts/socfpga_cyclone5_chameleon96.dts b/arch/arm/boot/dts/socfpga_cyclone5_chameleon96.dts
new file mode 100644
index 000000000000..f6561766d83f
--- /dev/null
+++ b/arch/arm/boot/dts/socfpga_cyclone5_chameleon96.dts
@@ -0,0 +1,130 @@
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2/*
3 * Device Tree file for the Chameleon96
4 *
5 * Copyright (c) 2018 Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
6 */
7
8#include <dt-bindings/gpio/gpio.h>
9
10#include "socfpga_cyclone5.dtsi"
11
12/ {
13 model = "Novetech Chameleon96";
14 compatible = "novtech,chameleon96", "altr,socfpga-cyclone5", "altr,socfpga";
15
16 chosen {
17 bootargs = "earlyprintk";
18 stdout-path = "serial0:115200n8";
19 };
20
21 memory@0 {
22 name = "memory";
23 device_type = "memory";
24 reg = <0x0 0x20000000>; /* 512MB */
25 };
26
27 regulator_3_3v: 3-3-v-regulator {
28 compatible = "regulator-fixed";
29 regulator-name = "3.3V";
30 regulator-min-microvolt = <3300000>;
31 regulator-max-microvolt = <3300000>;
32 };
33
34 leds {
35 compatible = "gpio-leds";
36
37 user_led1 {
38 label = "green:user1";
39 gpios = <&porta 14 GPIO_ACTIVE_LOW>;
40 linux,default-trigger = "heartbeat";
41 };
42
43 user_led2 {
44 label = "green:user2";
45 gpios = <&porta 22 GPIO_ACTIVE_LOW>;
46 linux,default-trigger = "mmc0";
47 };
48
49 user_led3 {
50 label = "green:user3";
51 gpios = <&porta 25 GPIO_ACTIVE_LOW>;
52 linux,default-trigger = "none";
53 };
54
55 user_led4 {
56 label = "green:user4";
57 gpios = <&portb 3 GPIO_ACTIVE_LOW>;
58 panic-indicator;
59 linux,default-trigger = "none";
60 };
61 };
62};
63
64&gpio0 {
65 status = "okay";
66};
67
68&gpio1 {
69 status = "okay";
70};
71
72&i2c0 {
73 /* On Low speed expansion */
74 label = "LS-I2C0";
75 status = "okay";
76};
77
78&i2c1 {
79 /* On Low speed expansion */
80 label = "LS-I2C1";
81 status = "okay";
82};
83
84&i2c2 {
85 status = "okay";
86};
87
88&i2c3 {
89 /* On High speed expansion */
90 label = "HS-I2C2";
91 status = "okay";
92};
93
94&mmc0 {
95 vmmc-supply = <&regulator_3_3v>;
96 vqmmc-supply = <&regulator_3_3v>;
97 status = "okay";
98};
99
100&spi0 {
101 /* On High speed expansion */
102 label = "HS-SPI1";
103 status = "okay";
104};
105
106&spi1 {
107 /* On Low speed expansion */
108 label = "LS-SPI0";
109 status = "okay";
110};
111
112&uart0 {
113 /* On Low speed expansion */
114 label = "LS-UART1";
115 status = "okay";
116};
117
118&uart1 {
119 /* On Low speed expansion */
120 label = "LS-UART0";
121 status = "okay";
122};
123
124&usbphy0 {
125 status = "okay";
126};
127
128&usb1 {
129 status = "okay";
130};
diff --git a/arch/arm/boot/dts/spear13xx.dtsi b/arch/arm/boot/dts/spear13xx.dtsi
index 086b4b333249..390df643a174 100644
--- a/arch/arm/boot/dts/spear13xx.dtsi
+++ b/arch/arm/boot/dts/spear13xx.dtsi
@@ -11,9 +11,9 @@
11 * http://www.gnu.org/copyleft/gpl.html 11 * http://www.gnu.org/copyleft/gpl.html
12 */ 12 */
13 13
14/include/ "skeleton.dtsi"
15
16/ { 14/ {
15 #address-cells = <1>;
16 #size-cells = <1>;
17 interrupt-parent = <&gic>; 17 interrupt-parent = <&gic>;
18 18
19 cpus { 19 cpus {
diff --git a/arch/arm/boot/dts/spear3xx.dtsi b/arch/arm/boot/dts/spear3xx.dtsi
index 118135d75899..c47380763cae 100644
--- a/arch/arm/boot/dts/spear3xx.dtsi
+++ b/arch/arm/boot/dts/spear3xx.dtsi
@@ -11,9 +11,9 @@
11 * http://www.gnu.org/copyleft/gpl.html 11 * http://www.gnu.org/copyleft/gpl.html
12 */ 12 */
13 13
14/include/ "skeleton.dtsi"
15
16/ { 14/ {
15 #address-cells = <1>;
16 #size-cells = <1>;
17 interrupt-parent = <&vic>; 17 interrupt-parent = <&vic>;
18 18
19 cpus { 19 cpus {
diff --git a/arch/arm/boot/dts/spear600.dtsi b/arch/arm/boot/dts/spear600.dtsi
index 00166eb9be86..0a634fb07452 100644
--- a/arch/arm/boot/dts/spear600.dtsi
+++ b/arch/arm/boot/dts/spear600.dtsi
@@ -9,9 +9,9 @@
9 * http://www.gnu.org/copyleft/gpl.html 9 * http://www.gnu.org/copyleft/gpl.html
10 */ 10 */
11 11
12/include/ "skeleton.dtsi"
13
14/ { 12/ {
13 #address-cells = <1>;
14 #size-cells = <1>;
15 compatible = "st,spear600"; 15 compatible = "st,spear600";
16 16
17 cpus { 17 cpus {
diff --git a/arch/arm/boot/dts/ste-nomadik-nhk15.dts b/arch/arm/boot/dts/ste-nomadik-nhk15.dts
index 12afdc7467e7..04066f9cb8a3 100644
--- a/arch/arm/boot/dts/ste-nomadik-nhk15.dts
+++ b/arch/arm/boot/dts/ste-nomadik-nhk15.dts
@@ -1,7 +1,6 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/* 2/*
3 * Device Tree for the ST-Ericsson Nomadik S8815 board 3 * Device Tree for the ST Microelectronics Nomadik NHK8815 board
4 * Produced by Calao Systems
5 */ 4 */
6 5
7/dts-v1/; 6/dts-v1/;
@@ -182,43 +181,12 @@
182 pinctrl-names = "default"; 181 pinctrl-names = "default";
183 pinctrl-0 = <&clcd_24bit_mux>; 182 pinctrl-0 = <&clcd_24bit_mux>;
184 port { 183 port {
185 nomadik_clcd_pads: endpoint { 184 nomadik_clcd: endpoint {
186 remote-endpoint = <&nomadik_clcd_panel>; 185 remote-endpoint = <&nomadik_clcd_panel>;
187 arm,pl11x,tft-r0g0b0-pads = <16 8 0>; 186 arm,pl11x,tft-r0g0b0-pads = <16 8 0>;
188 }; 187 };
189 }; 188 };
190 189
191 /*
192 * WVGA connector 21
193 * WVGA (800x480): 4.3" TPG110 TDO43MTEA2 24-bit RGB
194 * with TPO touch screen.
195 */
196 panel {
197 compatible = "tpo,tpg110", "panel-dpi";
198 grestb-gpios = <&stmpe_gpio44 5 GPIO_ACTIVE_LOW>;
199 scen-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
200 scl-gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
201 sda-gpios = <&gpio0 4 GPIO_ACTIVE_HIGH>;
202 backlight = <&bl>;
203
204 port {
205 nomadik_clcd_panel: endpoint {
206 remote-endpoint = <&nomadik_clcd_pads>;
207 };
208 };
209
210 panel-timing {
211 clock-frequency = <33200000>;
212 hactive = <800>;
213 hback-porch = <216>;
214 hfront-porch = <40>;
215 hsync-len = <1>;
216 vactive = <480>;
217 vback-porch = <35>;
218 vfront-porch = <10>;
219 vsync-len = <1>;
220 };
221 };
222 }; 190 };
223 191
224 /* Activate RX/TX and CTS/RTS on UART 0 */ 192 /* Activate RX/TX and CTS/RTS on UART 0 */
@@ -233,6 +201,55 @@
233 }; 201 };
234 }; 202 };
235 203
204 spi {
205 compatible = "spi-gpio";
206 #address-cells = <1>;
207 #size-cells = <0>;
208
209 /*
210 * As we're dealing with 3wire SPI, we only define SCK
211 * and MOSI (in the spec MOSI is called "SDA").
212 */
213 gpio-sck = <&gpio0 5 GPIO_ACTIVE_HIGH>;
214 gpio-mosi = <&gpio0 4 GPIO_ACTIVE_HIGH>;
215 /*
216 * It's not actually active high, but the frameworks assume
217 * the polarity of the passed-in GPIO is "normal" (active
218 * high) then actively drives the line low to select the
219 * chip.
220 */
221 cs-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;
222 num-chipselects = <1>;
223
224 /*
225 * WVGA connector 21
226 * WVGA (800x480): 4.3" TPG110 TDO43MTEA2 24-bit RGB
227 * with TPO touch screen.
228 */
229 panel: display@0 {
230 /*
231 * The TPO display driver is connected to a
232 * 5.7" OSD OSD057VA01CT TFT display.
233 */
234 compatible = "tpo,tpg110";
235 reg = <0>;
236 spi-3wire;
237 /* 320 ns min period ~= 3 MHz */
238 spi-max-frequency = <3000000>;
239 /* Width and height from the OSD data sheet */
240 width-mm = <116>;
241 height-mm = <87>;
242 grestb-gpios = <&stmpe_gpio44 5 GPIO_ACTIVE_LOW>;
243 backlight = <&bl>;
244
245 port {
246 nomadik_clcd_panel: endpoint {
247 remote-endpoint = <&nomadik_clcd>;
248 };
249 };
250 };
251 };
252
236 bl: backlight { 253 bl: backlight {
237 compatible = "pwm-backlight"; 254 compatible = "pwm-backlight";
238 pwms = <&stmpe0_pwm 0 500000>; 255 pwms = <&stmpe0_pwm 0 500000>;
diff --git a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
index fca76a696d9d..f78b4eabd68c 100644
--- a/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
+++ b/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi
@@ -4,13 +4,13 @@
4 */ 4 */
5 5
6#include <dt-bindings/gpio/gpio.h> 6#include <dt-bindings/gpio/gpio.h>
7#include "skeleton.dtsi"
8 7
9/ { 8/ {
10 #address-cells = <1>; 9 #address-cells = <1>;
11 #size-cells = <1>; 10 #size-cells = <1>;
12 11
13 memory { 12 memory {
13 device_type = "memory";
14 reg = <0x00000000 0x04000000>, 14 reg = <0x00000000 0x04000000>,
15 <0x08000000 0x04000000>; 15 <0x08000000 0x04000000>;
16 }; 16 };
diff --git a/arch/arm/boot/dts/ste-u300.dts b/arch/arm/boot/dts/ste-u300.dts
index 1bd1aba3322f..f4e7660fead7 100644
--- a/arch/arm/boot/dts/ste-u300.dts
+++ b/arch/arm/boot/dts/ste-u300.dts
@@ -4,7 +4,6 @@
4 */ 4 */
5 5
6/dts-v1/; 6/dts-v1/;
7/include/ "skeleton.dtsi"
8 7
9/ { 8/ {
10 model = "ST-Ericsson U300"; 9 model = "ST-Ericsson U300";
@@ -22,6 +21,7 @@
22 }; 21 };
23 22
24 memory { 23 memory {
24 device_type = "memory";
25 reg = <0x48000000 0x03c00000>; 25 reg = <0x48000000 0x03c00000>;
26 }; 26 };
27 27
diff --git a/arch/arm/boot/dts/stm32429i-eval.dts b/arch/arm/boot/dts/stm32429i-eval.dts
index ed7d7f46465e..73ea84df7bf4 100644
--- a/arch/arm/boot/dts/stm32429i-eval.dts
+++ b/arch/arm/boot/dts/stm32429i-eval.dts
@@ -61,6 +61,7 @@
61 }; 61 };
62 62
63 memory { 63 memory {
64 device_type = "memory";
64 reg = <0x00000000 0x2000000>; 65 reg = <0x00000000 0x2000000>;
65 }; 66 };
66 67
diff --git a/arch/arm/boot/dts/stm32746g-eval.dts b/arch/arm/boot/dts/stm32746g-eval.dts
index 8c081eaf20fe..d90b0d1e18c7 100644
--- a/arch/arm/boot/dts/stm32746g-eval.dts
+++ b/arch/arm/boot/dts/stm32746g-eval.dts
@@ -55,6 +55,7 @@
55 }; 55 };
56 56
57 memory { 57 memory {
58 device_type = "memory";
58 reg = <0xc0000000 0x2000000>; 59 reg = <0xc0000000 0x2000000>;
59 }; 60 };
60 61
diff --git a/arch/arm/boot/dts/stm32f429-disco.dts b/arch/arm/boot/dts/stm32f429-disco.dts
index 5ceb2cf3777f..e19d0fe7dbda 100644
--- a/arch/arm/boot/dts/stm32f429-disco.dts
+++ b/arch/arm/boot/dts/stm32f429-disco.dts
@@ -60,6 +60,7 @@
60 }; 60 };
61 61
62 memory { 62 memory {
63 device_type = "memory";
63 reg = <0x90000000 0x800000>; 64 reg = <0x90000000 0x800000>;
64 }; 65 };
65 66
diff --git a/arch/arm/boot/dts/stm32f429.dtsi b/arch/arm/boot/dts/stm32f429.dtsi
index 8d6f028ae285..588b6ef94e93 100644
--- a/arch/arm/boot/dts/stm32f429.dtsi
+++ b/arch/arm/boot/dts/stm32f429.dtsi
@@ -45,12 +45,14 @@
45 * OTHER DEALINGS IN THE SOFTWARE. 45 * OTHER DEALINGS IN THE SOFTWARE.
46 */ 46 */
47 47
48#include "skeleton.dtsi"
49#include "armv7-m.dtsi" 48#include "armv7-m.dtsi"
50#include <dt-bindings/clock/stm32fx-clock.h> 49#include <dt-bindings/clock/stm32fx-clock.h>
51#include <dt-bindings/mfd/stm32f4-rcc.h> 50#include <dt-bindings/mfd/stm32f4-rcc.h>
52 51
53/ { 52/ {
53 #address-cells = <1>;
54 #size-cells = <1>;
55
54 clocks { 56 clocks {
55 clk_hse: clk-hse { 57 clk_hse: clk-hse {
56 #clock-cells = <0>; 58 #clock-cells = <0>;
@@ -314,6 +316,26 @@
314 status = "disabled"; 316 status = "disabled";
315 }; 317 };
316 318
319 spi2: spi@40003800 {
320 #address-cells = <1>;
321 #size-cells = <0>;
322 compatible = "st,stm32f4-spi";
323 reg = <0x40003800 0x400>;
324 interrupts = <36>;
325 clocks = <&rcc 0 STM32F4_APB1_CLOCK(SPI2)>;
326 status = "disabled";
327 };
328
329 spi3: spi@40003c00 {
330 #address-cells = <1>;
331 #size-cells = <0>;
332 compatible = "st,stm32f4-spi";
333 reg = <0x40003c00 0x400>;
334 interrupts = <51>;
335 clocks = <&rcc 0 STM32F4_APB1_CLOCK(SPI3)>;
336 status = "disabled";
337 };
338
317 usart2: serial@40004400 { 339 usart2: serial@40004400 {
318 compatible = "st,stm32-uart"; 340 compatible = "st,stm32-uart";
319 reg = <0x40004400 0x400>; 341 reg = <0x40004400 0x400>;
@@ -523,6 +545,26 @@
523 status = "disabled"; 545 status = "disabled";
524 }; 546 };
525 547
548 spi1: spi@40013000 {
549 #address-cells = <1>;
550 #size-cells = <0>;
551 compatible = "st,stm32f4-spi";
552 reg = <0x40013000 0x400>;
553 interrupts = <35>;
554 clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI1)>;
555 status = "disabled";
556 };
557
558 spi4: spi@40013400 {
559 #address-cells = <1>;
560 #size-cells = <0>;
561 compatible = "st,stm32f4-spi";
562 reg = <0x40013400 0x400>;
563 interrupts = <84>;
564 clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI4)>;
565 status = "disabled";
566 };
567
526 syscfg: system-config@40013800 { 568 syscfg: system-config@40013800 {
527 compatible = "syscon"; 569 compatible = "syscon";
528 reg = <0x40013800 0x400>; 570 reg = <0x40013800 0x400>;
@@ -587,6 +629,26 @@
587 }; 629 };
588 }; 630 };
589 631
632 spi5: spi@40015000 {
633 #address-cells = <1>;
634 #size-cells = <0>;
635 compatible = "st,stm32f4-spi";
636 reg = <0x40015000 0x400>;
637 interrupts = <85>;
638 clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI5)>;
639 status = "disabled";
640 };
641
642 spi6: spi@40015400 {
643 #address-cells = <1>;
644 #size-cells = <0>;
645 compatible = "st,stm32f4-spi";
646 reg = <0x40015400 0x400>;
647 interrupts = <86>;
648 clocks = <&rcc 0 STM32F4_APB2_CLOCK(SPI6)>;
649 status = "disabled";
650 };
651
590 pwrcfg: power-config@40007000 { 652 pwrcfg: power-config@40007000 {
591 compatible = "syscon"; 653 compatible = "syscon";
592 reg = <0x40007000 0x400>; 654 reg = <0x40007000 0x400>;
diff --git a/arch/arm/boot/dts/stm32f469-disco.dts b/arch/arm/boot/dts/stm32f469-disco.dts
index 7937b43d7788..a3ff04940aec 100644
--- a/arch/arm/boot/dts/stm32f469-disco.dts
+++ b/arch/arm/boot/dts/stm32f469-disco.dts
@@ -61,6 +61,7 @@
61 }; 61 };
62 62
63 memory { 63 memory {
64 device_type = "memory";
64 reg = <0x00000000 0x1000000>; 65 reg = <0x00000000 0x1000000>;
65 }; 66 };
66 67
diff --git a/arch/arm/boot/dts/stm32f746-disco.dts b/arch/arm/boot/dts/stm32f746-disco.dts
index e3a7bd338d61..0ba9c5b08ab9 100644
--- a/arch/arm/boot/dts/stm32f746-disco.dts
+++ b/arch/arm/boot/dts/stm32f746-disco.dts
@@ -56,6 +56,7 @@
56 }; 56 };
57 57
58 memory { 58 memory {
59 device_type = "memory";
59 reg = <0xC0000000 0x800000>; 60 reg = <0xC0000000 0x800000>;
60 }; 61 };
61 62
diff --git a/arch/arm/boot/dts/stm32f746.dtsi b/arch/arm/boot/dts/stm32f746.dtsi
index f48d06a80d1d..a25b7000a3a1 100644
--- a/arch/arm/boot/dts/stm32f746.dtsi
+++ b/arch/arm/boot/dts/stm32f746.dtsi
@@ -40,12 +40,14 @@
40 * OTHER DEALINGS IN THE SOFTWARE. 40 * OTHER DEALINGS IN THE SOFTWARE.
41 */ 41 */
42 42
43#include "skeleton.dtsi"
44#include "armv7-m.dtsi" 43#include "armv7-m.dtsi"
45#include <dt-bindings/clock/stm32fx-clock.h> 44#include <dt-bindings/clock/stm32fx-clock.h>
46#include <dt-bindings/mfd/stm32f7-rcc.h> 45#include <dt-bindings/mfd/stm32f7-rcc.h>
47 46
48/ { 47/ {
48 #address-cells = <1>;
49 #size-cells = <1>;
50
49 clocks { 51 clocks {
50 clk_hse: clk-hse { 52 clk_hse: clk-hse {
51 #clock-cells = <0>; 53 #clock-cells = <0>;
diff --git a/arch/arm/boot/dts/stm32f769-disco.dts b/arch/arm/boot/dts/stm32f769-disco.dts
index 483d896e2bc1..3c7216844a9b 100644
--- a/arch/arm/boot/dts/stm32f769-disco.dts
+++ b/arch/arm/boot/dts/stm32f769-disco.dts
@@ -56,6 +56,7 @@
56 }; 56 };
57 57
58 memory { 58 memory {
59 device_type = "memory";
59 reg = <0xC0000000 0x1000000>; 60 reg = <0xC0000000 0x1000000>;
60 }; 61 };
61 62
diff --git a/arch/arm/boot/dts/stm32h743-pinctrl.dtsi b/arch/arm/boot/dts/stm32h743-pinctrl.dtsi
index 24be8e63dec8..980b2769caf9 100644
--- a/arch/arm/boot/dts/stm32h743-pinctrl.dtsi
+++ b/arch/arm/boot/dts/stm32h743-pinctrl.dtsi
@@ -173,6 +173,21 @@
173 }; 173 };
174 }; 174 };
175 175
176 ethernet_rmii: rmii@0 {
177 pins {
178 pinmux = <STM32_PINMUX('G', 11, AF11)>,
179 <STM32_PINMUX('G', 13, AF11)>,
180 <STM32_PINMUX('G', 12, AF11)>,
181 <STM32_PINMUX('C', 4, AF11)>,
182 <STM32_PINMUX('C', 5, AF11)>,
183 <STM32_PINMUX('A', 7, AF11)>,
184 <STM32_PINMUX('C', 1, AF11)>,
185 <STM32_PINMUX('A', 2, AF11)>,
186 <STM32_PINMUX('A', 1, AF11)>;
187 slew-rate = <2>;
188 };
189 };
190
176 usart1_pins: usart1@0 { 191 usart1_pins: usart1@0 {
177 pins1 { 192 pins1 {
178 pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */ 193 pinmux = <STM32_PINMUX('B', 14, AF4)>; /* USART1_TX */
diff --git a/arch/arm/boot/dts/stm32h743.dtsi b/arch/arm/boot/dts/stm32h743.dtsi
index cbdd69ca9e7a..5cac79ebebb1 100644
--- a/arch/arm/boot/dts/stm32h743.dtsi
+++ b/arch/arm/boot/dts/stm32h743.dtsi
@@ -40,13 +40,15 @@
40 * OTHER DEALINGS IN THE SOFTWARE. 40 * OTHER DEALINGS IN THE SOFTWARE.
41 */ 41 */
42 42
43#include "skeleton.dtsi"
44#include "armv7-m.dtsi" 43#include "armv7-m.dtsi"
45#include <dt-bindings/clock/stm32h7-clks.h> 44#include <dt-bindings/clock/stm32h7-clks.h>
46#include <dt-bindings/mfd/stm32h7-rcc.h> 45#include <dt-bindings/mfd/stm32h7-rcc.h>
47#include <dt-bindings/interrupt-controller/irq.h> 46#include <dt-bindings/interrupt-controller/irq.h>
48 47
49/ { 48/ {
49 #address-cells = <1>;
50 #size-cells = <1>;
51
50 clocks { 52 clocks {
51 clk_hse: clk-hse { 53 clk_hse: clk-hse {
52 #clock-cells = <0>; 54 #clock-cells = <0>;
@@ -511,6 +513,19 @@
511 status = "disabled"; 513 status = "disabled";
512 }; 514 };
513 }; 515 };
516
517 mac: ethernet@40028000 {
518 compatible = "st,stm32-dwmac", "snps,dwmac-4.10a";
519 reg = <0x40028000 0x8000>;
520 reg-names = "stmmaceth";
521 interrupts = <61>;
522 interrupt-names = "macirq";
523 clock-names = "stmmaceth", "mac-clk-tx", "mac-clk-rx";
524 clocks = <&rcc ETH1MAC_CK>, <&rcc ETH1TX_CK>, <&rcc ETH1RX_CK>;
525 st,syscon = <&syscfg 0x4>;
526 snps,pbl = <8>;
527 status = "disabled";
528 };
514 }; 529 };
515}; 530};
516 531
diff --git a/arch/arm/boot/dts/stm32h743i-disco.dts b/arch/arm/boot/dts/stm32h743i-disco.dts
index 45e088c55741..dd06c8f3d09a 100644
--- a/arch/arm/boot/dts/stm32h743i-disco.dts
+++ b/arch/arm/boot/dts/stm32h743i-disco.dts
@@ -54,6 +54,7 @@
54 }; 54 };
55 55
56 memory { 56 memory {
57 device_type = "memory";
57 reg = <0xd0000000 0x2000000>; 58 reg = <0xd0000000 0x2000000>;
58 }; 59 };
59 60
@@ -66,6 +67,23 @@
66 clock-frequency = <25000000>; 67 clock-frequency = <25000000>;
67}; 68};
68 69
70&mac {
71 status = "disabled";
72 pinctrl-0 = <&ethernet_rmii>;
73 pinctrl-names = "default";
74 phy-mode = "rmii";
75 phy-handle = <&phy0>;
76
77 mdio0 {
78 #address-cells = <1>;
79 #size-cells = <0>;
80 compatible = "snps,dwmac-mdio";
81 phy0: ethernet-phy@0 {
82 reg = <0>;
83 };
84 };
85};
86
69&usart2 { 87&usart2 {
70 pinctrl-0 = <&usart2_pins>; 88 pinctrl-0 = <&usart2_pins>;
71 pinctrl-names = "default"; 89 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/stm32h743i-eval.dts b/arch/arm/boot/dts/stm32h743i-eval.dts
index 3f8e0c4a998d..ebc3f0933f5c 100644
--- a/arch/arm/boot/dts/stm32h743i-eval.dts
+++ b/arch/arm/boot/dts/stm32h743i-eval.dts
@@ -54,6 +54,7 @@
54 }; 54 };
55 55
56 memory { 56 memory {
57 device_type = "memory";
57 reg = <0xd0000000 0x2000000>; 58 reg = <0xd0000000 0x2000000>;
58 }; 59 };
59 60
@@ -104,6 +105,23 @@
104 status = "okay"; 105 status = "okay";
105}; 106};
106 107
108&mac {
109 status = "disabled";
110 pinctrl-0 = <&ethernet_rmii>;
111 pinctrl-names = "default";
112 phy-mode = "rmii";
113 phy-handle = <&phy0>;
114
115 mdio0 {
116 #address-cells = <1>;
117 #size-cells = <0>;
118 compatible = "snps,dwmac-mdio";
119 phy0: ethernet-phy@0 {
120 reg = <0>;
121 };
122 };
123};
124
107&usart1 { 125&usart1 {
108 pinctrl-0 = <&usart1_pins>; 126 pinctrl-0 = <&usart1_pins>;
109 pinctrl-names = "default"; 127 pinctrl-names = "default";
diff --git a/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi b/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
index c4851271e810..9ec4694e93a7 100644
--- a/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
+++ b/arch/arm/boot/dts/stm32mp157-pinctrl.dtsi
@@ -246,6 +246,13 @@
246 }; 246 };
247 }; 247 };
248 248
249 m_can1_sleep_pins_a: m_can1-sleep@0 {
250 pins {
251 pinmux = <STM32_PINMUX('H', 13, ANALOG)>, /* CAN1_TX */
252 <STM32_PINMUX('I', 9, ANALOG)>; /* CAN1_RX */
253 };
254 };
255
249 pwm2_pins_a: pwm2-0 { 256 pwm2_pins_a: pwm2-0 {
250 pins { 257 pins {
251 pinmux = <STM32_PINMUX('A', 3, AF1)>; /* TIM2_CH4 */ 258 pinmux = <STM32_PINMUX('A', 3, AF1)>; /* TIM2_CH4 */
diff --git a/arch/arm/boot/dts/stm32mp157c-ed1.dts b/arch/arm/boot/dts/stm32mp157c-ed1.dts
index f77bea49c079..d66edb0c66cd 100644
--- a/arch/arm/boot/dts/stm32mp157c-ed1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-ed1.dts
@@ -17,6 +17,7 @@
17 }; 17 };
18 18
19 memory@c0000000 { 19 memory@c0000000 {
20 device_type = "memory";
20 reg = <0xC0000000 0x40000000>; 21 reg = <0xC0000000 0x40000000>;
21 }; 22 };
22 23
@@ -49,6 +50,10 @@
49 }; 50 };
50}; 51};
51 52
53&dts {
54 status = "okay";
55};
56
52&i2c4 { 57&i2c4 {
53 pinctrl-names = "default"; 58 pinctrl-names = "default";
54 pinctrl-0 = <&i2c4_pins_a>; 59 pinctrl-0 = <&i2c4_pins_a>;
@@ -72,6 +77,9 @@
72 77
73&timers6 { 78&timers6 {
74 status = "okay"; 79 status = "okay";
80 /* spare dmas for other usage */
81 /delete-property/dmas;
82 /delete-property/dma-names;
75 timer@5 { 83 timer@5 {
76 status = "okay"; 84 status = "okay";
77 }; 85 };
diff --git a/arch/arm/boot/dts/stm32mp157c-ev1.dts b/arch/arm/boot/dts/stm32mp157c-ev1.dts
index 063ee8ac5dcb..b6aca40b9b90 100644
--- a/arch/arm/boot/dts/stm32mp157c-ev1.dts
+++ b/arch/arm/boot/dts/stm32mp157c-ev1.dts
@@ -124,8 +124,9 @@
124}; 124};
125 125
126&m_can1 { 126&m_can1 {
127 pinctrl-names = "default"; 127 pinctrl-names = "default", "sleep";
128 pinctrl-0 = <&m_can1_pins_a>; 128 pinctrl-0 = <&m_can1_pins_a>;
129 pinctrl-1 = <&m_can1_sleep_pins_a>;
129 status = "okay"; 130 status = "okay";
130}; 131};
131 132
@@ -161,6 +162,9 @@
161}; 162};
162 163
163&timers2 { 164&timers2 {
165 /* spare dmas for other usage (un-delete to enable pwm capture) */
166 /delete-property/dmas;
167 /delete-property/dma-names;
164 status = "disabled"; 168 status = "disabled";
165 pwm { 169 pwm {
166 pinctrl-0 = <&pwm2_pins_a>; 170 pinctrl-0 = <&pwm2_pins_a>;
@@ -173,6 +177,8 @@
173}; 177};
174 178
175&timers8 { 179&timers8 {
180 /delete-property/dmas;
181 /delete-property/dma-names;
176 status = "disabled"; 182 status = "disabled";
177 pwm { 183 pwm {
178 pinctrl-0 = <&pwm8_pins_a>; 184 pinctrl-0 = <&pwm8_pins_a>;
@@ -185,6 +191,8 @@
185}; 191};
186 192
187&timers12 { 193&timers12 {
194 /delete-property/dmas;
195 /delete-property/dma-names;
188 status = "disabled"; 196 status = "disabled";
189 pwm { 197 pwm {
190 pinctrl-0 = <&pwm12_pins_a>; 198 pinctrl-0 = <&pwm12_pins_a>;
diff --git a/arch/arm/boot/dts/stm32mp157c.dtsi b/arch/arm/boot/dts/stm32mp157c.dtsi
index 8bf1c17f8cef..f8bbfff5950b 100644
--- a/arch/arm/boot/dts/stm32mp157c.dtsi
+++ b/arch/arm/boot/dts/stm32mp157c.dtsi
@@ -84,6 +84,31 @@
84 }; 84 };
85 }; 85 };
86 86
87 thermal-zones {
88 cpu_thermal: cpu-thermal {
89 polling-delay-passive = <0>;
90 polling-delay = <0>;
91 thermal-sensors = <&dts>;
92
93 trips {
94 cpu_alert1: cpu-alert1 {
95 temperature = <85000>;
96 hysteresis = <0>;
97 type = "passive";
98 };
99
100 cpu-crit {
101 temperature = <120000>;
102 hysteresis = <0>;
103 type = "critical";
104 };
105 };
106
107 cooling-maps {
108 };
109 };
110 };
111
87 soc { 112 soc {
88 compatible = "simple-bus"; 113 compatible = "simple-bus";
89 #address-cells = <1>; 114 #address-cells = <1>;
@@ -98,6 +123,12 @@
98 reg = <0x40000000 0x400>; 123 reg = <0x40000000 0x400>;
99 clocks = <&rcc TIM2_K>; 124 clocks = <&rcc TIM2_K>;
100 clock-names = "int"; 125 clock-names = "int";
126 dmas = <&dmamux1 18 0x400 0x1>,
127 <&dmamux1 19 0x400 0x1>,
128 <&dmamux1 20 0x400 0x1>,
129 <&dmamux1 21 0x400 0x1>,
130 <&dmamux1 22 0x400 0x1>;
131 dma-names = "ch1", "ch2", "ch3", "ch4", "up";
101 status = "disabled"; 132 status = "disabled";
102 133
103 pwm { 134 pwm {
@@ -119,6 +150,13 @@
119 reg = <0x40001000 0x400>; 150 reg = <0x40001000 0x400>;
120 clocks = <&rcc TIM3_K>; 151 clocks = <&rcc TIM3_K>;
121 clock-names = "int"; 152 clock-names = "int";
153 dmas = <&dmamux1 23 0x400 0x1>,
154 <&dmamux1 24 0x400 0x1>,
155 <&dmamux1 25 0x400 0x1>,
156 <&dmamux1 26 0x400 0x1>,
157 <&dmamux1 27 0x400 0x1>,
158 <&dmamux1 28 0x400 0x1>;
159 dma-names = "ch1", "ch2", "ch3", "ch4", "up", "trig";
122 status = "disabled"; 160 status = "disabled";
123 161
124 pwm { 162 pwm {
@@ -140,6 +178,11 @@
140 reg = <0x40002000 0x400>; 178 reg = <0x40002000 0x400>;
141 clocks = <&rcc TIM4_K>; 179 clocks = <&rcc TIM4_K>;
142 clock-names = "int"; 180 clock-names = "int";
181 dmas = <&dmamux1 29 0x400 0x1>,
182 <&dmamux1 30 0x400 0x1>,
183 <&dmamux1 31 0x400 0x1>,
184 <&dmamux1 32 0x400 0x1>;
185 dma-names = "ch1", "ch2", "ch3", "ch4";
143 status = "disabled"; 186 status = "disabled";
144 187
145 pwm { 188 pwm {
@@ -161,6 +204,13 @@
161 reg = <0x40003000 0x400>; 204 reg = <0x40003000 0x400>;
162 clocks = <&rcc TIM5_K>; 205 clocks = <&rcc TIM5_K>;
163 clock-names = "int"; 206 clock-names = "int";
207 dmas = <&dmamux1 55 0x400 0x1>,
208 <&dmamux1 56 0x400 0x1>,
209 <&dmamux1 57 0x400 0x1>,
210 <&dmamux1 58 0x400 0x1>,
211 <&dmamux1 59 0x400 0x1>,
212 <&dmamux1 60 0x400 0x1>;
213 dma-names = "ch1", "ch2", "ch3", "ch4", "up", "trig";
164 status = "disabled"; 214 status = "disabled";
165 215
166 pwm { 216 pwm {
@@ -182,6 +232,8 @@
182 reg = <0x40004000 0x400>; 232 reg = <0x40004000 0x400>;
183 clocks = <&rcc TIM6_K>; 233 clocks = <&rcc TIM6_K>;
184 clock-names = "int"; 234 clock-names = "int";
235 dmas = <&dmamux1 69 0x400 0x1>;
236 dma-names = "up";
185 status = "disabled"; 237 status = "disabled";
186 238
187 timer@5 { 239 timer@5 {
@@ -198,6 +250,8 @@
198 reg = <0x40005000 0x400>; 250 reg = <0x40005000 0x400>;
199 clocks = <&rcc TIM7_K>; 251 clocks = <&rcc TIM7_K>;
200 clock-names = "int"; 252 clock-names = "int";
253 dmas = <&dmamux1 70 0x400 0x1>;
254 dma-names = "up";
201 status = "disabled"; 255 status = "disabled";
202 256
203 timer@6 { 257 timer@6 {
@@ -465,6 +519,15 @@
465 reg = <0x44000000 0x400>; 519 reg = <0x44000000 0x400>;
466 clocks = <&rcc TIM1_K>; 520 clocks = <&rcc TIM1_K>;
467 clock-names = "int"; 521 clock-names = "int";
522 dmas = <&dmamux1 11 0x400 0x1>,
523 <&dmamux1 12 0x400 0x1>,
524 <&dmamux1 13 0x400 0x1>,
525 <&dmamux1 14 0x400 0x1>,
526 <&dmamux1 15 0x400 0x1>,
527 <&dmamux1 16 0x400 0x1>,
528 <&dmamux1 17 0x400 0x1>;
529 dma-names = "ch1", "ch2", "ch3", "ch4",
530 "up", "trig", "com";
468 status = "disabled"; 531 status = "disabled";
469 532
470 pwm { 533 pwm {
@@ -486,6 +549,15 @@
486 reg = <0x44001000 0x400>; 549 reg = <0x44001000 0x400>;
487 clocks = <&rcc TIM8_K>; 550 clocks = <&rcc TIM8_K>;
488 clock-names = "int"; 551 clock-names = "int";
552 dmas = <&dmamux1 47 0x400 0x1>,
553 <&dmamux1 48 0x400 0x1>,
554 <&dmamux1 49 0x400 0x1>,
555 <&dmamux1 50 0x400 0x1>,
556 <&dmamux1 51 0x400 0x1>,
557 <&dmamux1 52 0x400 0x1>,
558 <&dmamux1 53 0x400 0x1>;
559 dma-names = "ch1", "ch2", "ch3", "ch4",
560 "up", "trig", "com";
489 status = "disabled"; 561 status = "disabled";
490 562
491 pwm { 563 pwm {
@@ -543,6 +615,11 @@
543 reg = <0x44006000 0x400>; 615 reg = <0x44006000 0x400>;
544 clocks = <&rcc TIM15_K>; 616 clocks = <&rcc TIM15_K>;
545 clock-names = "int"; 617 clock-names = "int";
618 dmas = <&dmamux1 105 0x400 0x1>,
619 <&dmamux1 106 0x400 0x1>,
620 <&dmamux1 107 0x400 0x1>,
621 <&dmamux1 108 0x400 0x1>;
622 dma-names = "ch1", "up", "trig", "com";
546 status = "disabled"; 623 status = "disabled";
547 624
548 pwm { 625 pwm {
@@ -564,6 +641,9 @@
564 reg = <0x44007000 0x400>; 641 reg = <0x44007000 0x400>;
565 clocks = <&rcc TIM16_K>; 642 clocks = <&rcc TIM16_K>;
566 clock-names = "int"; 643 clock-names = "int";
644 dmas = <&dmamux1 109 0x400 0x1>,
645 <&dmamux1 110 0x400 0x1>;
646 dma-names = "ch1", "up";
567 status = "disabled"; 647 status = "disabled";
568 648
569 pwm { 649 pwm {
@@ -584,6 +664,9 @@
584 reg = <0x44008000 0x400>; 664 reg = <0x44008000 0x400>;
585 clocks = <&rcc TIM17_K>; 665 clocks = <&rcc TIM17_K>;
586 clock-names = "int"; 666 clock-names = "int";
667 dmas = <&dmamux1 111 0x400 0x1>,
668 <&dmamux1 112 0x400 0x1>;
669 dma-names = "ch1", "up";
587 status = "disabled"; 670 status = "disabled";
588 671
589 pwm { 672 pwm {
@@ -684,14 +767,14 @@
684 767
685 m_can1: can@4400e000 { 768 m_can1: can@4400e000 {
686 compatible = "bosch,m_can"; 769 compatible = "bosch,m_can";
687 reg = <0x4400e000 0x400>, <0x44011000 0x2800>; 770 reg = <0x4400e000 0x400>, <0x44011000 0x1400>;
688 reg-names = "m_can", "message_ram"; 771 reg-names = "m_can", "message_ram";
689 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>, 772 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
690 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>; 773 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
691 interrupt-names = "int0", "int1"; 774 interrupt-names = "int0", "int1";
692 clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>; 775 clocks = <&rcc CK_HSE>, <&rcc FDCAN_K>;
693 clock-names = "hclk", "cclk"; 776 clock-names = "hclk", "cclk";
694 bosch,mram-cfg = <0x0 0 0 32 0 0 2 2>; 777 bosch,mram-cfg = <0x1400 0 0 32 0 0 2 2>;
695 status = "disabled"; 778 status = "disabled";
696 }; 779 };
697 780
@@ -908,6 +991,16 @@
908 status = "disabled"; 991 status = "disabled";
909 }; 992 };
910 993
994 dts: thermal@50028000 {
995 compatible = "st,stm32-thermal";
996 reg = <0x50028000 0x100>;
997 interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>;
998 clocks = <&rcc TMPSENS>;
999 clock-names = "pclk";
1000 #thermal-sensor-cells = <0>;
1001 status = "disabled";
1002 };
1003
911 cryp1: cryp@54001000 { 1004 cryp1: cryp@54001000 {
912 compatible = "st,stm32mp1-cryp"; 1005 compatible = "st,stm32mp1-cryp";
913 reg = <0x54001000 0x400>; 1006 reg = <0x54001000 0x400>;
diff --git a/arch/arm/boot/dts/sun4i-a10.dtsi b/arch/arm/boot/dts/sun4i-a10.dtsi
index 5d46bb0139fa..73c3ac42095f 100644
--- a/arch/arm/boot/dts/sun4i-a10.dtsi
+++ b/arch/arm/boot/dts/sun4i-a10.dtsi
@@ -184,6 +184,26 @@
184 status = "disabled"; 184 status = "disabled";
185 }; 185 };
186 186
187 pmu {
188 compatible = "arm,cortex-a8-pmu";
189 interrupts = <3>;
190 };
191
192 reserved-memory {
193 #address-cells = <1>;
194 #size-cells = <1>;
195 ranges;
196
197 /* Address must be kept in the lower 256 MiBs of DRAM for VE. */
198 default-pool {
199 compatible = "shared-dma-pool";
200 size = <0x6000000>;
201 alloc-ranges = <0x4a000000 0x6000000>;
202 reusable;
203 linux,cma-default;
204 };
205 };
206
187 soc { 207 soc {
188 compatible = "simple-bus"; 208 compatible = "simple-bus";
189 #address-cells = <1>; 209 #address-cells = <1>;
@@ -224,6 +244,19 @@
224 status = "disabled"; 244 status = "disabled";
225 }; 245 };
226 }; 246 };
247
248 sram_c: sram@1d00000 {
249 compatible = "mmio-sram";
250 reg = <0x01d00000 0xd0000>;
251 #address-cells = <1>;
252 #size-cells = <1>;
253 ranges = <0 0x01d00000 0xd0000>;
254
255 ve_sram: sram-section@0 {
256 compatible = "allwinner,sun4i-a10-sram-c1";
257 reg = <0x000000 0x80000>;
258 };
259 };
227 }; 260 };
228 261
229 dma: dma-controller@1c02000 { 262 dma: dma-controller@1c02000 {
@@ -394,6 +427,17 @@
394 }; 427 };
395 }; 428 };
396 429
430 video-codec@1c0e000 {
431 compatible = "allwinner,sun4i-a10-video-engine";
432 reg = <0x01c0e000 0x1000>;
433 clocks = <&ccu CLK_AHB_VE>, <&ccu CLK_VE>,
434 <&ccu CLK_DRAM_VE>;
435 clock-names = "ahb", "mod", "ram";
436 resets = <&ccu RST_VE>;
437 interrupts = <53>;
438 allwinner,sram = <&ve_sram 1>;
439 };
440
397 mmc0: mmc@1c0f000 { 441 mmc0: mmc@1c0f000 {
398 compatible = "allwinner,sun4i-a10-mmc"; 442 compatible = "allwinner,sun4i-a10-mmc";
399 reg = <0x01c0f000 0x1000>; 443 reg = <0x01c0f000 0x1000>;
diff --git a/arch/arm/boot/dts/sun5i-a13-q8-tablet.dts b/arch/arm/boot/dts/sun5i-a13-q8-tablet.dts
index a89f29fa3e40..7257f39b31ce 100644
--- a/arch/arm/boot/dts/sun5i-a13-q8-tablet.dts
+++ b/arch/arm/boot/dts/sun5i-a13-q8-tablet.dts
@@ -49,14 +49,15 @@
49 compatible = "allwinner,q8-a13", "allwinner,sun5i-a13"; 49 compatible = "allwinner,q8-a13", "allwinner,sun5i-a13";
50 50
51 panel: panel { 51 panel: panel {
52 compatible = "urt,umsh-8596md-t", "simple-panel"; 52 compatible = "bananapi,s070wv20-ct16", "simple-panel";
53 power-supply = <&reg_vcc3v3>;
54 enable-gpios = <&axp_gpio 0 GPIO_ACTIVE_HIGH>; /* AXP GPIO0 */
55 backlight = <&backlight>;
53 #address-cells = <1>; 56 #address-cells = <1>;
54 #size-cells = <0>; 57 #size-cells = <0>;
55 58
56 port@0 { 59 port@0 {
57 reg = <0>; 60 reg = <0>;
58 /* TODO: lcd panel uses axp gpio0 as enable pin */
59 backlight = <&backlight>;
60 #address-cells = <1>; 61 #address-cells = <1>;
61 #size-cells = <0>; 62 #size-cells = <0>;
62 63
diff --git a/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi b/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
index 6202aabedbfe..5b1f0e198eb6 100644
--- a/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
+++ b/arch/arm/boot/dts/sun5i-reference-design-tablet.dtsi
@@ -54,7 +54,7 @@
54 pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>; 54 pwms = <&pwm 0 50000 PWM_POLARITY_INVERTED>;
55 brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>; 55 brightness-levels = <0 10 20 30 40 50 60 70 80 90 100>;
56 default-brightness-level = <8>; 56 default-brightness-level = <8>;
57 /* TODO: backlight uses axp gpio1 as enable pin */ 57 enable-gpios = <&axp_gpio 1 GPIO_ACTIVE_HIGH>; /* AXP GPIO1 */
58 }; 58 };
59 59
60 chosen { 60 chosen {
diff --git a/arch/arm/boot/dts/sun6i-a31.dtsi b/arch/arm/boot/dts/sun6i-a31.dtsi
index 353d90f99b40..13304b8c5139 100644
--- a/arch/arm/boot/dts/sun6i-a31.dtsi
+++ b/arch/arm/boot/dts/sun6i-a31.dtsi
@@ -216,6 +216,7 @@
216 #clock-cells = <0>; 216 #clock-cells = <0>;
217 compatible = "fixed-clock"; 217 compatible = "fixed-clock";
218 clock-frequency = <24000000>; 218 clock-frequency = <24000000>;
219 clock-output-names = "osc24M";
219 }; 220 };
220 221
221 osc32k: clk-32k { 222 osc32k: clk-32k {
diff --git a/arch/arm/boot/dts/sun7i-a20-bananapi.dts b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
index 556b1b591c5d..81bc85d398c1 100644
--- a/arch/arm/boot/dts/sun7i-a20-bananapi.dts
+++ b/arch/arm/boot/dts/sun7i-a20-bananapi.dts
@@ -191,6 +191,11 @@
191}; 191};
192 192
193&pio { 193&pio {
194 vcc-pa-supply = <&reg_vcc3v3>;
195 vcc-pc-supply = <&reg_vcc3v3>;
196 vcc-pe-supply = <&reg_vcc3v3>;
197 vcc-pf-supply = <&reg_vcc3v3>;
198 vcc-pg-supply = <&reg_vcc3v3>;
194 gpio-line-names = 199 gpio-line-names =
195 /* PA */ 200 /* PA */
196 "ERXD3", "ERXD2", "ERXD1", "ERXD0", "ETXD3", 201 "ERXD3", "ERXD2", "ERXD1", "ERXD0", "ETXD3",
diff --git a/arch/arm/boot/dts/sun8i-a23-a33.dtsi b/arch/arm/boot/dts/sun8i-a23-a33.dtsi
index a9c123de5d2c..43fe215e83ea 100644
--- a/arch/arm/boot/dts/sun8i-a23-a33.dtsi
+++ b/arch/arm/boot/dts/sun8i-a23-a33.dtsi
@@ -68,6 +68,12 @@
68 }; 68 };
69 }; 69 };
70 70
71 de: display-engine {
72 /* compatible gets set in SoC specific dtsi file */
73 allwinner,pipelines = <&fe0>;
74 status = "disabled";
75 };
76
71 timer { 77 timer {
72 compatible = "arm,armv7-timer"; 78 compatible = "arm,armv7-timer";
73 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 79 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
@@ -155,6 +161,55 @@
155 #dma-cells = <1>; 161 #dma-cells = <1>;
156 }; 162 };
157 163
164 nfc: nand@1c03000 {
165 compatible = "allwinner,sun4i-a10-nand";
166 reg = <0x01c03000 0x1000>;
167 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
168 clocks = <&ccu CLK_BUS_NAND>, <&ccu CLK_NAND>;
169 clock-names = "ahb", "mod";
170 resets = <&ccu RST_BUS_NAND>;
171 reset-names = "ahb";
172 status = "disabled";
173 #address-cells = <1>;
174 #size-cells = <0>;
175 };
176
177 tcon0: lcd-controller@1c0c000 {
178 /* compatible gets set in SoC specific dtsi file */
179 reg = <0x01c0c000 0x1000>;
180 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
181 clocks = <&ccu CLK_BUS_LCD>,
182 <&ccu CLK_LCD_CH0>;
183 clock-names = "ahb",
184 "tcon-ch0";
185 clock-output-names = "tcon-pixel-clock";
186 resets = <&ccu RST_BUS_LCD>;
187 reset-names = "lcd";
188 status = "disabled";
189
190 ports {
191 #address-cells = <1>;
192 #size-cells = <0>;
193
194 tcon0_in: port@0 {
195 #address-cells = <1>;
196 #size-cells = <0>;
197 reg = <0>;
198
199 tcon0_in_drc0: endpoint@0 {
200 reg = <0>;
201 remote-endpoint = <&drc0_out_tcon0>;
202 };
203 };
204
205 tcon0_out: port@1 {
206 #address-cells = <1>;
207 #size-cells = <0>;
208 reg = <1>;
209 };
210 };
211 };
212
158 mmc0: mmc@1c0f000 { 213 mmc0: mmc@1c0f000 {
159 compatible = "allwinner,sun7i-a20-mmc"; 214 compatible = "allwinner,sun7i-a20-mmc";
160 reg = <0x01c0f000 0x1000>; 215 reg = <0x01c0f000 0x1000>;
@@ -214,21 +269,6 @@
214 #size-cells = <0>; 269 #size-cells = <0>;
215 }; 270 };
216 271
217 nfc: nand@1c03000 {
218 compatible = "allwinner,sun4i-a10-nand";
219 reg = <0x01c03000 0x1000>;
220 interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
221 clocks = <&ccu CLK_BUS_NAND>, <&ccu CLK_NAND>;
222 clock-names = "ahb", "mod";
223 resets = <&ccu RST_BUS_NAND>;
224 reset-names = "ahb";
225 pinctrl-names = "default";
226 pinctrl-0 = <&nand_pins &nand_pins_cs0 &nand_pins_rb0>;
227 status = "disabled";
228 #address-cells = <1>;
229 #size-cells = <0>;
230 };
231
232 usb_otg: usb@1c19000 { 272 usb_otg: usb@1c19000 {
233 /* compatible gets set in SoC specific dtsi file */ 273 /* compatible gets set in SoC specific dtsi file */
234 reg = <0x01c19000 0x0400>; 274 reg = <0x01c19000 0x0400>;
@@ -572,6 +612,111 @@
572 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 612 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
573 }; 613 };
574 614
615 fe0: display-frontend@1e00000 {
616 /* compatible gets set in SoC specific dtsi file */
617 reg = <0x01e00000 0x20000>;
618 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
619 clocks = <&ccu CLK_BUS_DE_FE>, <&ccu CLK_DE_FE>,
620 <&ccu CLK_DRAM_DE_FE>;
621 clock-names = "ahb", "mod",
622 "ram";
623 resets = <&ccu RST_BUS_DE_FE>;
624
625 ports {
626 #address-cells = <1>;
627 #size-cells = <0>;
628
629 fe0_out: port@1 {
630 #address-cells = <1>;
631 #size-cells = <0>;
632 reg = <1>;
633
634 fe0_out_be0: endpoint@0 {
635 reg = <0>;
636 remote-endpoint = <&be0_in_fe0>;
637 };
638 };
639 };
640 };
641
642 be0: display-backend@1e60000 {
643 /* compatible gets set in SoC specific dtsi file */
644 reg = <0x01e60000 0x10000>;
645 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
646 clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
647 <&ccu CLK_DRAM_DE_BE>;
648 clock-names = "ahb", "mod",
649 "ram";
650 resets = <&ccu RST_BUS_DE_BE>;
651
652 ports {
653 #address-cells = <1>;
654 #size-cells = <0>;
655
656 be0_in: port@0 {
657 #address-cells = <1>;
658 #size-cells = <0>;
659 reg = <0>;
660
661 be0_in_fe0: endpoint@0 {
662 reg = <0>;
663 remote-endpoint = <&fe0_out_be0>;
664 };
665 };
666
667 be0_out: port@1 {
668 #address-cells = <1>;
669 #size-cells = <0>;
670 reg = <1>;
671
672 be0_out_drc0: endpoint@0 {
673 reg = <0>;
674 remote-endpoint = <&drc0_in_be0>;
675 };
676 };
677 };
678 };
679
680 drc0: drc@1e70000 {
681 /* compatible gets set in SoC specific dtsi file */
682 reg = <0x01e70000 0x10000>;
683 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
684 clocks = <&ccu CLK_BUS_DRC>, <&ccu CLK_DRC>,
685 <&ccu CLK_DRAM_DRC>;
686 clock-names = "ahb", "mod", "ram";
687 resets = <&ccu RST_BUS_DRC>;
688
689 assigned-clocks = <&ccu CLK_DRC>;
690 assigned-clock-rates = <300000000>;
691
692 ports {
693 #address-cells = <1>;
694 #size-cells = <0>;
695
696 drc0_in: port@0 {
697 #address-cells = <1>;
698 #size-cells = <0>;
699 reg = <0>;
700
701 drc0_in_be0: endpoint@0 {
702 reg = <0>;
703 remote-endpoint = <&be0_out_drc0>;
704 };
705 };
706
707 drc0_out: port@1 {
708 #address-cells = <1>;
709 #size-cells = <0>;
710 reg = <1>;
711
712 drc0_out_tcon0: endpoint@0 {
713 reg = <0>;
714 remote-endpoint = <&tcon0_in_drc0>;
715 };
716 };
717 };
718 };
719
575 rtc: rtc@1f00000 { 720 rtc: rtc@1f00000 {
576 compatible = "allwinner,sun8i-a23-rtc"; 721 compatible = "allwinner,sun8i-a23-rtc";
577 reg = <0x01f00000 0x400>; 722 reg = <0x01f00000 0x400>;
diff --git a/arch/arm/boot/dts/sun8i-a23-q8-tablet.dts b/arch/arm/boot/dts/sun8i-a23-q8-tablet.dts
index b6958e8f2f01..d4dab7c28398 100644
--- a/arch/arm/boot/dts/sun8i-a23-q8-tablet.dts
+++ b/arch/arm/boot/dts/sun8i-a23-q8-tablet.dts
@@ -61,3 +61,7 @@
61 "Headset Mic", "HBIAS"; 61 "Headset Mic", "HBIAS";
62 status = "okay"; 62 status = "okay";
63}; 63};
64
65&panel {
66 compatible = "bananapi,s070wv20-ct16", "simple-panel";
67};
diff --git a/arch/arm/boot/dts/sun8i-a23.dtsi b/arch/arm/boot/dts/sun8i-a23.dtsi
index d00055e9eef5..a5e884a8b2ae 100644
--- a/arch/arm/boot/dts/sun8i-a23.dtsi
+++ b/arch/arm/boot/dts/sun8i-a23.dtsi
@@ -62,10 +62,26 @@
62 }; 62 };
63}; 63};
64 64
65&be0 {
66 compatible = "allwinner,sun8i-a23-display-backend";
67};
68
65&ccu { 69&ccu {
66 compatible = "allwinner,sun8i-a23-ccu"; 70 compatible = "allwinner,sun8i-a23-ccu";
67}; 71};
68 72
73&de {
74 compatible = "allwinner,sun8i-a23-display-engine";
75};
76
77&drc0 {
78 compatible = "allwinner,sun8i-a23-drc";
79};
80
81&fe0 {
82 compatible = "allwinner,sun8i-a23-display-frontend";
83};
84
69&pio { 85&pio {
70 compatible = "allwinner,sun8i-a23-pinctrl"; 86 compatible = "allwinner,sun8i-a23-pinctrl";
71 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, 87 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
@@ -73,6 +89,10 @@
73 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 89 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
74}; 90};
75 91
92&tcon0 {
93 compatible = "allwinner,sun8i-a23-tcon";
94};
95
76&usb_otg { 96&usb_otg {
77 compatible = "allwinner,sun6i-a31-musb"; 97 compatible = "allwinner,sun6i-a31-musb";
78}; 98};
diff --git a/arch/arm/boot/dts/sun8i-a33.dtsi b/arch/arm/boot/dts/sun8i-a33.dtsi
index 626152c30f50..1111a6498102 100644
--- a/arch/arm/boot/dts/sun8i-a33.dtsi
+++ b/arch/arm/boot/dts/sun8i-a33.dtsi
@@ -159,12 +159,6 @@
159 }; 159 };
160 }; 160 };
161 161
162 de: display-engine {
163 compatible = "allwinner,sun8i-a33-display-engine";
164 allwinner,pipelines = <&fe0>;
165 status = "disabled";
166 };
167
168 iio-hwmon { 162 iio-hwmon {
169 compatible = "iio-hwmon"; 163 compatible = "iio-hwmon";
170 io-channels = <&ths>; 164 io-channels = <&ths>;
@@ -209,47 +203,6 @@
209 }; 203 };
210 204
211 soc { 205 soc {
212 tcon0: lcd-controller@1c0c000 {
213 compatible = "allwinner,sun8i-a33-tcon";
214 reg = <0x01c0c000 0x1000>;
215 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
216 clocks = <&ccu CLK_BUS_LCD>,
217 <&ccu CLK_LCD_CH0>;
218 clock-names = "ahb",
219 "tcon-ch0";
220 clock-output-names = "tcon-pixel-clock";
221 resets = <&ccu RST_BUS_LCD>;
222 reset-names = "lcd";
223 status = "disabled";
224
225 ports {
226 #address-cells = <1>;
227 #size-cells = <0>;
228
229 tcon0_in: port@0 {
230 #address-cells = <1>;
231 #size-cells = <0>;
232 reg = <0>;
233
234 tcon0_in_drc0: endpoint@0 {
235 reg = <0>;
236 remote-endpoint = <&drc0_out_tcon0>;
237 };
238 };
239
240 tcon0_out: port@1 {
241 #address-cells = <1>;
242 #size-cells = <0>;
243 reg = <1>;
244
245 tcon0_out_dsi: endpoint@1 {
246 reg = <1>;
247 remote-endpoint = <&dsi_in_tcon0>;
248 };
249 };
250 };
251 };
252
253 video-codec@1c0e000 { 206 video-codec@1c0e000 {
254 compatible = "allwinner,sun8i-a33-video-engine"; 207 compatible = "allwinner,sun8i-a33-video-engine";
255 reg = <0x01c0e000 0x1000>; 208 reg = <0x01c0e000 0x1000>;
@@ -339,115 +292,6 @@
339 status = "disabled"; 292 status = "disabled";
340 #phy-cells = <0>; 293 #phy-cells = <0>;
341 }; 294 };
342
343 fe0: display-frontend@1e00000 {
344 compatible = "allwinner,sun8i-a33-display-frontend";
345 reg = <0x01e00000 0x20000>;
346 interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
347 clocks = <&ccu CLK_BUS_DE_FE>, <&ccu CLK_DE_FE>,
348 <&ccu CLK_DRAM_DE_FE>;
349 clock-names = "ahb", "mod",
350 "ram";
351 resets = <&ccu RST_BUS_DE_FE>;
352
353 ports {
354 #address-cells = <1>;
355 #size-cells = <0>;
356
357 fe0_out: port@1 {
358 #address-cells = <1>;
359 #size-cells = <0>;
360 reg = <1>;
361
362 fe0_out_be0: endpoint@0 {
363 reg = <0>;
364 remote-endpoint = <&be0_in_fe0>;
365 };
366 };
367 };
368 };
369
370 be0: display-backend@1e60000 {
371 compatible = "allwinner,sun8i-a33-display-backend";
372 reg = <0x01e60000 0x10000>, <0x01e80000 0x1000>;
373 reg-names = "be", "sat";
374 interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
375 clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
376 <&ccu CLK_DRAM_DE_BE>, <&ccu CLK_BUS_SAT>;
377 clock-names = "ahb", "mod",
378 "ram", "sat";
379 resets = <&ccu RST_BUS_DE_BE>, <&ccu RST_BUS_SAT>;
380 reset-names = "be", "sat";
381 assigned-clocks = <&ccu CLK_DE_BE>;
382 assigned-clock-rates = <300000000>;
383
384 ports {
385 #address-cells = <1>;
386 #size-cells = <0>;
387
388 be0_in: port@0 {
389 #address-cells = <1>;
390 #size-cells = <0>;
391 reg = <0>;
392
393 be0_in_fe0: endpoint@0 {
394 reg = <0>;
395 remote-endpoint = <&fe0_out_be0>;
396 };
397 };
398
399 be0_out: port@1 {
400 #address-cells = <1>;
401 #size-cells = <0>;
402 reg = <1>;
403
404 be0_out_drc0: endpoint@0 {
405 reg = <0>;
406 remote-endpoint = <&drc0_in_be0>;
407 };
408 };
409 };
410 };
411
412 drc0: drc@1e70000 {
413 compatible = "allwinner,sun8i-a33-drc";
414 reg = <0x01e70000 0x10000>;
415 interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
416 clocks = <&ccu CLK_BUS_DRC>, <&ccu CLK_DRC>,
417 <&ccu CLK_DRAM_DRC>;
418 clock-names = "ahb", "mod", "ram";
419 resets = <&ccu RST_BUS_DRC>;
420
421 assigned-clocks = <&ccu CLK_DRC>;
422 assigned-clock-rates = <300000000>;
423
424 ports {
425 #address-cells = <1>;
426 #size-cells = <0>;
427
428 drc0_in: port@0 {
429 #address-cells = <1>;
430 #size-cells = <0>;
431 reg = <0>;
432
433 drc0_in_be0: endpoint@0 {
434 reg = <0>;
435 remote-endpoint = <&be0_out_drc0>;
436 };
437 };
438
439 drc0_out: port@1 {
440 #address-cells = <1>;
441 #size-cells = <0>;
442 reg = <1>;
443
444 drc0_out_tcon0: endpoint@0 {
445 reg = <0>;
446 remote-endpoint = <&tcon0_in_drc0>;
447 };
448 };
449 };
450 };
451 }; 295 };
452 296
453 thermal-zones { 297 thermal-zones {
@@ -524,10 +368,37 @@
524 }; 368 };
525}; 369};
526 370
371&be0 {
372 compatible = "allwinner,sun8i-a33-display-backend";
373 /* A33 has an extra "SAT" module packed inside the display backend */
374 reg = <0x01e60000 0x10000>, <0x01e80000 0x1000>;
375 reg-names = "be", "sat";
376 clocks = <&ccu CLK_BUS_DE_BE>, <&ccu CLK_DE_BE>,
377 <&ccu CLK_DRAM_DE_BE>, <&ccu CLK_BUS_SAT>;
378 clock-names = "ahb", "mod",
379 "ram", "sat";
380 resets = <&ccu RST_BUS_DE_BE>, <&ccu RST_BUS_SAT>;
381 reset-names = "be", "sat";
382 assigned-clocks = <&ccu CLK_DE_BE>;
383 assigned-clock-rates = <300000000>;
384};
385
527&ccu { 386&ccu {
528 compatible = "allwinner,sun8i-a33-ccu"; 387 compatible = "allwinner,sun8i-a33-ccu";
529}; 388};
530 389
390&de {
391 compatible = "allwinner,sun8i-a33-display-engine";
392};
393
394&drc0 {
395 compatible = "allwinner,sun8i-a33-drc";
396};
397
398&fe0 {
399 compatible = "allwinner,sun8i-a33-display-frontend";
400};
401
531&mali { 402&mali {
532 operating-points-v2 = <&mali_opp_table>; 403 operating-points-v2 = <&mali_opp_table>;
533}; 404};
@@ -544,6 +415,17 @@
544 415
545}; 416};
546 417
418&tcon0 {
419 compatible = "allwinner,sun8i-a33-tcon";
420};
421
422&tcon0_out {
423 tcon0_out_dsi: endpoint@1 {
424 reg = <1>;
425 remote-endpoint = <&dsi_in_tcon0>;
426 };
427};
428
547&usb_otg { 429&usb_otg {
548 compatible = "allwinner,sun8i-a33-musb"; 430 compatible = "allwinner,sun8i-a33-musb";
549}; 431};
diff --git a/arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts b/arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
index 1c012a4def16..9c006fc18821 100644
--- a/arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
+++ b/arch/arm/boot/dts/sun8i-a83t-allwinner-h8homlet-v2.dts
@@ -154,6 +154,10 @@
154 154
155#include "axp81x.dtsi" 155#include "axp81x.dtsi"
156 156
157&ac_power_supply {
158 status = "okay";
159};
160
157&reg_aldo1 { 161&reg_aldo1 {
158 regulator-always-on; 162 regulator-always-on;
159 regulator-min-microvolt = <1800000>; 163 regulator-min-microvolt = <1800000>;
diff --git a/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts b/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts
index 7d30d3e530fb..838be7b3715f 100644
--- a/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts
+++ b/arch/arm/boot/dts/sun8i-a83t-bananapi-m3.dts
@@ -237,6 +237,14 @@
237 237
238#include "axp81x.dtsi" 238#include "axp81x.dtsi"
239 239
240&ac_power_supply {
241 status = "okay";
242};
243
244&battery_power_supply {
245 status = "okay";
246};
247
240&reg_aldo1 { 248&reg_aldo1 {
241 regulator-always-on; 249 regulator-always-on;
242 regulator-min-microvolt = <1800000>; 250 regulator-min-microvolt = <1800000>;
diff --git a/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts b/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts
index a5a9f5a0603e..fcbec3d7ccd7 100644
--- a/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts
+++ b/arch/arm/boot/dts/sun8i-a83t-cubietruck-plus.dts
@@ -247,6 +247,14 @@
247 247
248#include "axp81x.dtsi" 248#include "axp81x.dtsi"
249 249
250&ac_power_supply {
251 status = "okay";
252};
253
254&battery_power_supply {
255 status = "okay";
256};
257
250&reg_aldo1 { 258&reg_aldo1 {
251 regulator-always-on; 259 regulator-always-on;
252 regulator-min-microvolt = <1800000>; 260 regulator-min-microvolt = <1800000>;
diff --git a/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts b/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts
index 5d23667dc2d2..25540b7694d5 100644
--- a/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts
+++ b/arch/arm/boot/dts/sun8i-h3-beelink-x2.dts
@@ -53,7 +53,7 @@
53 53
54 aliases { 54 aliases {
55 serial0 = &uart0; 55 serial0 = &uart0;
56 /* ethernet0 is the H3 emac, defined in sun8i-h3.dtsi */ 56 ethernet0 = &emac;
57 ethernet1 = &sdiowifi; 57 ethernet1 = &sdiowifi;
58 }; 58 };
59 59
diff --git a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
index 65cba1050802..4ec94d72f021 100644
--- a/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
+++ b/arch/arm/boot/dts/sun8i-h3-nanopi-m1-plus.dts
@@ -67,6 +67,21 @@
67 pinctrl-names = "default"; 67 pinctrl-names = "default";
68 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */ 68 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
69 }; 69 };
70
71 connector {
72 compatible = "hdmi-connector";
73 type = "a";
74
75 port {
76 hdmi_con_in: endpoint {
77 remote-endpoint = <&hdmi_out_con>;
78 };
79 };
80 };
81};
82
83&de {
84 status = "okay";
70}; 85};
71 86
72&ehci1 { 87&ehci1 {
@@ -94,6 +109,16 @@
94 }; 109 };
95}; 110};
96 111
112&hdmi {
113 status = "okay";
114};
115
116&hdmi_out {
117 hdmi_out_con: endpoint {
118 remote-endpoint = <&hdmi_con_in>;
119 };
120};
121
97&ir { 122&ir {
98 pinctrl-names = "default"; 123 pinctrl-names = "default";
99 pinctrl-0 = <&ir_pins_a>; 124 pinctrl-0 = <&ir_pins_a>;
diff --git a/arch/arm/boot/dts/sun8i-q8-common.dtsi b/arch/arm/boot/dts/sun8i-q8-common.dtsi
index 719ad769b837..53104f4ccacc 100644
--- a/arch/arm/boot/dts/sun8i-q8-common.dtsi
+++ b/arch/arm/boot/dts/sun8i-q8-common.dtsi
@@ -49,6 +49,26 @@
49 ethernet0 = &sdio_wifi; 49 ethernet0 = &sdio_wifi;
50 }; 50 };
51 51
52 panel: panel {
53 /* Tablet dts should provide panel compatible */
54 backlight = <&backlight>;
55 enable-gpios = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */
56 power-supply = <&reg_dc1sw>;
57 #address-cells = <1>;
58 #size-cells = <0>;
59
60 port@0 {
61 reg = <0>;
62 #address-cells = <1>;
63 #size-cells = <0>;
64
65 panel_input: endpoint@0 {
66 reg = <0>;
67 remote-endpoint = <&tcon0_out_lcd>;
68 };
69 };
70 };
71
52 wifi_pwrseq: wifi_pwrseq { 72 wifi_pwrseq: wifi_pwrseq {
53 compatible = "mmc-pwrseq-simple"; 73 compatible = "mmc-pwrseq-simple";
54 /* 74 /*
@@ -64,6 +84,10 @@
64 }; 84 };
65}; 85};
66 86
87&de {
88 status = "okay";
89};
90
67&ehci0 { 91&ehci0 {
68 status = "okay"; 92 status = "okay";
69}; 93};
@@ -90,6 +114,19 @@
90 }; 114 };
91}; 115};
92 116
117&tcon0 {
118 pinctrl-names = "default";
119 pinctrl-0 = <&lcd_rgb666_pins>;
120 status = "okay";
121};
122
123&tcon0_out {
124 tcon0_out_lcd: endpoint@0 {
125 reg = <0>;
126 remote-endpoint = <&panel_input>;
127 };
128};
129
93&usbphy { 130&usbphy {
94 usb1_vbus-supply = <&reg_dldo1>; 131 usb1_vbus-supply = <&reg_dldo1>;
95}; 132};
diff --git a/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts b/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
index 438b7b44dab3..c488aaacbd68 100644
--- a/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
+++ b/arch/arm/boot/dts/sun8i-r40-bananapi-m2-ultra.dts
@@ -102,6 +102,8 @@
102 wifi_pwrseq: wifi_pwrseq { 102 wifi_pwrseq: wifi_pwrseq {
103 compatible = "mmc-pwrseq-simple"; 103 compatible = "mmc-pwrseq-simple";
104 reset-gpios = <&pio 6 10 GPIO_ACTIVE_LOW>; /* PG10 WIFI_EN */ 104 reset-gpios = <&pio 6 10 GPIO_ACTIVE_LOW>; /* PG10 WIFI_EN */
105 clocks = <&ccu CLK_OUTA>;
106 clock-names = "ext_clock";
105 }; 107 };
106}; 108};
107 109
@@ -196,6 +198,11 @@
196 status = "okay"; 198 status = "okay";
197}; 199};
198 200
201&pio {
202 pinctrl-names = "default";
203 pinctrl-0 = <&clk_out_a_pin>;
204};
205
199&reg_aldo2 { 206&reg_aldo2 {
200 regulator-always-on; 207 regulator-always-on;
201 regulator-min-microvolt = <2500000>; 208 regulator-min-microvolt = <2500000>;
@@ -250,12 +257,27 @@
250 regulator-name = "vcc-wifi-io"; 257 regulator-name = "vcc-wifi-io";
251}; 258};
252 259
260/*
261 * Our WiFi chip needs both DLDO2 and DLDO3 to be powered at the same
262 * time, with the two being in sync, to be able to meet maximum power
263 * consumption during transmits. Since this is not really supported
264 * right now, just use the two as always on, and we will fix it later.
265 */
266
253&reg_dldo2 { 267&reg_dldo2 {
268 regulator-always-on;
254 regulator-min-microvolt = <3300000>; 269 regulator-min-microvolt = <3300000>;
255 regulator-max-microvolt = <3300000>; 270 regulator-max-microvolt = <3300000>;
256 regulator-name = "vcc-wifi"; 271 regulator-name = "vcc-wifi";
257}; 272};
258 273
274&reg_dldo3 {
275 regulator-always-on;
276 regulator-min-microvolt = <3300000>;
277 regulator-max-microvolt = <3300000>;
278 regulator-name = "vcc-wifi-2";
279};
280
259&reg_dldo4 { 281&reg_dldo4 {
260 regulator-min-microvolt = <2500000>; 282 regulator-min-microvolt = <2500000>;
261 regulator-max-microvolt = <2500000>; 283 regulator-max-microvolt = <2500000>;
@@ -278,6 +300,25 @@
278 status = "okay"; 300 status = "okay";
279}; 301};
280 302
303&uart3 {
304 pinctrl-names = "default";
305 pinctrl-0 = <&uart3_pg_pins>, <&uart3_rts_cts_pg_pins>;
306 uart-has-rtscts;
307 status = "okay";
308
309 bluetooth {
310 compatible = "brcm,bcm43438-bt";
311 clocks = <&ccu CLK_OUTA>;
312 clock-names = "lpo";
313 vbat-supply = <&reg_dldo2>;
314 vddio-supply = <&reg_dldo1>;
315 device-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
316 /* TODO host wake line connected to PMIC GPIO pins */
317 shutdown-gpios = <&pio 7 12 GPIO_ACTIVE_HIGH>; /* PH12 */
318 max-speed = <1500000>;
319 };
320};
321
281&usbphy { 322&usbphy {
282 usb1_vbus-supply = <&reg_vcc5v0>; 323 usb1_vbus-supply = <&reg_vcc5v0>;
283 usb2_vbus-supply = <&reg_vcc5v0>; 324 usb2_vbus-supply = <&reg_vcc5v0>;
diff --git a/arch/arm/boot/dts/sun8i-r40.dtsi b/arch/arm/boot/dts/sun8i-r40.dtsi
index 89762dbefe42..06b685869f52 100644
--- a/arch/arm/boot/dts/sun8i-r40.dtsi
+++ b/arch/arm/boot/dts/sun8i-r40.dtsi
@@ -342,6 +342,11 @@
342 #interrupt-cells = <3>; 342 #interrupt-cells = <3>;
343 #gpio-cells = <3>; 343 #gpio-cells = <3>;
344 344
345 clk_out_a_pin: clk-out-a-pin {
346 pins = "PI12";
347 function = "clk_out_a";
348 };
349
345 gmac_rgmii_pins: gmac-rgmii-pins { 350 gmac_rgmii_pins: gmac-rgmii-pins {
346 pins = "PA0", "PA1", "PA2", "PA3", 351 pins = "PA0", "PA1", "PA2", "PA3",
347 "PA4", "PA5", "PA6", "PA7", 352 "PA4", "PA5", "PA6", "PA7",
@@ -389,6 +394,16 @@
389 pins = "PB22", "PB23"; 394 pins = "PB22", "PB23";
390 function = "uart0"; 395 function = "uart0";
391 }; 396 };
397
398 uart3_pg_pins: uart3-pg-pins {
399 pins = "PG6", "PG7";
400 function = "uart3";
401 };
402
403 uart3_rts_cts_pg_pins: uart3-rts-cts-pg-pins {
404 pins = "PG8", "PG9";
405 function = "uart3";
406 };
392 }; 407 };
393 408
394 wdt: watchdog@1c20c90 { 409 wdt: watchdog@1c20c90 {
diff --git a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
index 85da85faf869..28c034928d67 100644
--- a/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
+++ b/arch/arm/boot/dts/sun9i-a80-cubieboard4.dts
@@ -133,6 +133,19 @@
133 status = "okay"; 133 status = "okay";
134}; 134};
135 135
136&gmac {
137 pinctrl-names = "default";
138 pinctrl-0 = <&gmac_rgmii_pins>;
139 phy = <&phy1>;
140 phy-mode = "rgmii";
141 phy-supply = <&reg_cldo1>;
142 status = "okay";
143
144 phy1: ethernet-phy@1 {
145 reg = <1>;
146 };
147};
148
136&i2c3 { 149&i2c3 {
137 pinctrl-names = "default"; 150 pinctrl-names = "default";
138 pinctrl-0 = <&i2c3_pins>; 151 pinctrl-0 = <&i2c3_pins>;
@@ -183,10 +196,26 @@
183 clocks = <&ac100_rtc 0>; 196 clocks = <&ac100_rtc 0>;
184}; 197};
185 198
199&pio {
200 vcc-pa-supply = <&reg_ldo_io1>;
201 vcc-pb-supply = <&reg_aldo2>;
202 vcc-pc-supply = <&reg_dcdc1>;
203 vcc-pd-supply = <&reg_dc1sw>;
204 vcc-pe-supply = <&reg_eldo2>;
205 vcc-pf-supply = <&reg_dcdc1>;
206 vcc-pg-supply = <&reg_ldo_io0>;
207 vcc-ph-supply = <&reg_dcdc1>;
208};
209
186&r_ir { 210&r_ir {
187 status = "okay"; 211 status = "okay";
188}; 212};
189 213
214&r_pio {
215 vcc-pl-supply = <&reg_dldo2>;
216 vcc-pm-supply = <&reg_eldo3>;
217};
218
190&r_rsb { 219&r_rsb {
191 status = "okay"; 220 status = "okay";
192 221
@@ -217,6 +246,10 @@
217 /* unused */ 246 /* unused */
218 }; 247 };
219 248
249 reg_dc1sw: dc1sw {
250 regulator-name = "vcc-pd";
251 };
252
220 reg_dc5ldo: dc5ldo { 253 reg_dc5ldo: dc5ldo {
221 regulator-always-on; 254 regulator-always-on;
222 regulator-min-microvolt = <800000>; 255 regulator-min-microvolt = <800000>;
@@ -271,7 +304,6 @@
271 }; 304 };
272 305
273 reg_dldo2: dldo2 { 306 reg_dldo2: dldo2 {
274 regulator-always-on;
275 regulator-min-microvolt = <3000000>; 307 regulator-min-microvolt = <3000000>;
276 regulator-max-microvolt = <3000000>; 308 regulator-max-microvolt = <3000000>;
277 regulator-name = "vcc-pl"; 309 regulator-name = "vcc-pl";
@@ -290,14 +322,12 @@
290 }; 322 };
291 323
292 reg_eldo3: eldo3 { 324 reg_eldo3: eldo3 {
293 regulator-always-on;
294 regulator-min-microvolt = <3000000>; 325 regulator-min-microvolt = <3000000>;
295 regulator-max-microvolt = <3000000>; 326 regulator-max-microvolt = <3000000>;
296 regulator-name = "vcc-pm-codec-io1"; 327 regulator-name = "vcc-pm-codec-io1";
297 }; 328 };
298 329
299 reg_ldo_io0: ldo_io0 { 330 reg_ldo_io0: ldo_io0 {
300 regulator-always-on;
301 regulator-min-microvolt = <3000000>; 331 regulator-min-microvolt = <3000000>;
302 regulator-max-microvolt = <3000000>; 332 regulator-max-microvolt = <3000000>;
303 regulator-name = "vcc-pg"; 333 regulator-name = "vcc-pg";
@@ -385,6 +415,14 @@
385 */ 415 */
386 regulator-min-microvolt = <3300000>; 416 regulator-min-microvolt = <3300000>;
387 regulator-max-microvolt = <3300000>; 417 regulator-max-microvolt = <3300000>;
418 /*
419 * The PHY requires 20ms after all voltages
420 * are applied until core logic is ready and
421 * 30ms after the reset pin is de-asserted.
422 * Set a 100ms delay to account for PMIC
423 * ramp time and board traces.
424 */
425 regulator-enable-ramp-delay = <100000>;
388 regulator-name = "vcc-gmac-phy"; 426 regulator-name = "vcc-gmac-phy";
389 }; 427 };
390 428
diff --git a/arch/arm/boot/dts/sun9i-a80-optimus.dts b/arch/arm/boot/dts/sun9i-a80-optimus.dts
index 58a199b0e494..864715ec3cb0 100644
--- a/arch/arm/boot/dts/sun9i-a80-optimus.dts
+++ b/arch/arm/boot/dts/sun9i-a80-optimus.dts
@@ -120,6 +120,19 @@
120 status = "okay"; 120 status = "okay";
121}; 121};
122 122
123&gmac {
124 pinctrl-names = "default";
125 pinctrl-0 = <&gmac_rgmii_pins>;
126 phy = <&phy1>;
127 phy-mode = "rgmii";
128 phy-supply = <&reg_cldo1>;
129 status = "okay";
130
131 phy1: ethernet-phy@1 {
132 reg = <1>;
133 };
134};
135
123&mmc0 { 136&mmc0 {
124 pinctrl-names = "default"; 137 pinctrl-names = "default";
125 pinctrl-0 = <&mmc0_pins>; 138 pinctrl-0 = <&mmc0_pins>;
@@ -172,10 +185,26 @@
172 clocks = <&ac100_rtc 0>; 185 clocks = <&ac100_rtc 0>;
173}; 186};
174 187
188&pio {
189 vcc-pa-supply = <&reg_ldo_io1>;
190 vcc-pb-supply = <&reg_aldo2>;
191 vcc-pc-supply = <&reg_dcdc1>;
192 vcc-pd-supply = <&reg_dcdc1>;
193 vcc-pe-supply = <&reg_eldo2>;
194 vcc-pf-supply = <&reg_dcdc1>;
195 vcc-pg-supply = <&reg_ldo_io0>;
196 vcc-ph-supply = <&reg_dcdc1>;
197};
198
175&r_ir { 199&r_ir {
176 status = "okay"; 200 status = "okay";
177}; 201};
178 202
203&r_pio {
204 vcc-pl-supply = <&reg_dldo2>;
205 vcc-pm-supply = <&reg_eldo3>;
206};
207
179&r_rsb { 208&r_rsb {
180 status = "okay"; 209 status = "okay";
181 210
@@ -213,6 +242,10 @@
213 regulator-name = "vdd-cpus-09-usbh"; 242 regulator-name = "vdd-cpus-09-usbh";
214 }; 243 };
215 244
245 dc1sw {
246 /* unused */
247 };
248
216 reg_dcdc1: dcdc1 { 249 reg_dcdc1: dcdc1 {
217 regulator-always-on; 250 regulator-always-on;
218 regulator-min-microvolt = <3000000>; 251 regulator-min-microvolt = <3000000>;
@@ -260,7 +293,6 @@
260 }; 293 };
261 294
262 reg_dldo2: dldo2 { 295 reg_dldo2: dldo2 {
263 regulator-always-on;
264 regulator-min-microvolt = <3000000>; 296 regulator-min-microvolt = <3000000>;
265 regulator-max-microvolt = <3000000>; 297 regulator-max-microvolt = <3000000>;
266 regulator-name = "vcc-pl"; 298 regulator-name = "vcc-pl";
@@ -279,14 +311,12 @@
279 }; 311 };
280 312
281 reg_eldo3: eldo3 { 313 reg_eldo3: eldo3 {
282 regulator-always-on;
283 regulator-min-microvolt = <3000000>; 314 regulator-min-microvolt = <3000000>;
284 regulator-max-microvolt = <3000000>; 315 regulator-max-microvolt = <3000000>;
285 regulator-name = "vcc-pm-codec-io1"; 316 regulator-name = "vcc-pm-codec-io1";
286 }; 317 };
287 318
288 reg_ldo_io0: ldo_io0 { 319 reg_ldo_io0: ldo_io0 {
289 regulator-always-on;
290 regulator-min-microvolt = <3000000>; 320 regulator-min-microvolt = <3000000>;
291 regulator-max-microvolt = <3000000>; 321 regulator-max-microvolt = <3000000>;
292 regulator-name = "vcc-pg"; 322 regulator-name = "vcc-pg";
@@ -374,6 +404,14 @@
374 */ 404 */
375 regulator-min-microvolt = <3300000>; 405 regulator-min-microvolt = <3300000>;
376 regulator-max-microvolt = <3300000>; 406 regulator-max-microvolt = <3300000>;
407 /*
408 * The PHY requires 20ms after all voltages
409 * are applied until core logic is ready and
410 * 30ms after the reset pin is de-asserted.
411 * Set a 100ms delay to account for PMIC
412 * ramp time and board traces.
413 */
414 regulator-enable-ramp-delay = <100000>;
377 regulator-name = "vcc-gmac-phy"; 415 regulator-name = "vcc-gmac-phy";
378 }; 416 };
379 417
diff --git a/arch/arm/boot/dts/sun9i-a80.dtsi b/arch/arm/boot/dts/sun9i-a80.dtsi
index d9532fb1ef65..6fb292e0b662 100644
--- a/arch/arm/boot/dts/sun9i-a80.dtsi
+++ b/arch/arm/boot/dts/sun9i-a80.dtsi
@@ -56,6 +56,10 @@
56 #size-cells = <2>; 56 #size-cells = <2>;
57 interrupt-parent = <&gic>; 57 interrupt-parent = <&gic>;
58 58
59 aliases {
60 ethernet0 = &gmac;
61 };
62
59 cpus { 63 cpus {
60 #address-cells = <1>; 64 #address-cells = <1>;
61 #size-cells = <0>; 65 #size-cells = <0>;
@@ -183,6 +187,37 @@
183 clock-output-names = "osc32k"; 187 clock-output-names = "osc32k";
184 }; 188 };
185 189
190 /*
191 * The following two are dummy clocks, placeholders
192 * used in the gmac_tx clock. The gmac driver will
193 * choose one parent depending on the PHY interface
194 * mode, using clk_set_rate auto-reparenting.
195 *
196 * The actual TX clock rate is not controlled by the
197 * gmac_tx clock.
198 */
199 mii_phy_tx_clk: mii_phy_tx_clk {
200 #clock-cells = <0>;
201 compatible = "fixed-clock";
202 clock-frequency = <25000000>;
203 clock-output-names = "mii_phy_tx";
204 };
205
206 gmac_int_tx_clk: gmac_int_tx_clk {
207 #clock-cells = <0>;
208 compatible = "fixed-clock";
209 clock-frequency = <125000000>;
210 clock-output-names = "gmac_int_tx";
211 };
212
213 gmac_tx_clk: clk@800030 {
214 #clock-cells = <0>;
215 compatible = "allwinner,sun7i-a20-gmac-clk";
216 reg = <0x00800030 0x4>;
217 clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
218 clock-output-names = "gmac_tx";
219 };
220
186 cpus_clk: clk@8001410 { 221 cpus_clk: clk@8001410 {
187 compatible = "allwinner,sun9i-a80-cpus-clk"; 222 compatible = "allwinner,sun9i-a80-cpus-clk";
188 reg = <0x08001410 0x4>; 223 reg = <0x08001410 0x4>;
@@ -283,6 +318,23 @@
283 }; 318 };
284 }; 319 };
285 320
321 gmac: ethernet@830000 {
322 compatible = "allwinner,sun7i-a20-gmac";
323 reg = <0x00830000 0x1054>;
324 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
325 interrupt-names = "macirq";
326 clocks = <&ccu CLK_BUS_GMAC>, <&gmac_tx_clk>;
327 clock-names = "stmmaceth", "allwinner_gmac_tx";
328 resets = <&ccu RST_BUS_GMAC>;
329 reset-names = "stmmaceth";
330 snps,pbl = <2>;
331 snps,fixed-burst;
332 snps,force_sf_dma_mode;
333 status = "disabled";
334 #address-cells = <1>;
335 #size-cells = <0>;
336 };
337
286 ehci0: usb@a00000 { 338 ehci0: usb@a00000 {
287 compatible = "allwinner,sun9i-a80-ehci", "generic-ehci"; 339 compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
288 reg = <0x00a00000 0x100>; 340 reg = <0x00a00000 0x100>;
@@ -948,6 +1000,19 @@
948 #size-cells = <0>; 1000 #size-cells = <0>;
949 #gpio-cells = <3>; 1001 #gpio-cells = <3>;
950 1002
1003 gmac_rgmii_pins: gmac-rgmii-pins {
1004 allwinner,pins = "PA0", "PA1", "PA2", "PA3",
1005 "PA4", "PA5", "PA7", "PA8",
1006 "PA9", "PA10", "PA12", "PA13",
1007 "PA15", "PA16", "PA17";
1008 allwinner,function = "gmac";
1009 /*
1010 * data lines in RGMII mode use DDR mode
1011 * and need a higher signal drive strength
1012 */
1013 drive-strength = <40>;
1014 };
1015
951 i2c3_pins: i2c3-pins { 1016 i2c3_pins: i2c3-pins {
952 pins = "PG10", "PG11"; 1017 pins = "PG10", "PG11";
953 function = "i2c3"; 1018 function = "i2c3";
diff --git a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
index b3283aeb5b7d..3bed375b9c03 100644
--- a/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
+++ b/arch/arm/boot/dts/sunxi-bananapi-m2-plus.dtsi
@@ -103,6 +103,8 @@
103 compatible = "mmc-pwrseq-simple"; 103 compatible = "mmc-pwrseq-simple";
104 pinctrl-names = "default"; 104 pinctrl-names = "default";
105 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */ 105 reset-gpios = <&r_pio 0 7 GPIO_ACTIVE_LOW>; /* PL7 */
106 clocks = <&rtc 1>;
107 clock-names = "ext_clock";
106 }; 108 };
107}; 109};
108 110
@@ -215,7 +217,19 @@
215&uart1 { 217&uart1 {
216 pinctrl-names = "default"; 218 pinctrl-names = "default";
217 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; 219 pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
218 status = "okay"; 220 uart-has-rtscts;
221 status = "okay";
222
223 bluetooth {
224 compatible = "brcm,bcm43438-bt";
225 clocks = <&rtc 1>;
226 clock-names = "lpo";
227 vbat-supply = <&reg_vcc3v3>;
228 vddio-supply = <&reg_vcc3v3>;
229 device-wakeup-gpios = <&pio 6 13 GPIO_ACTIVE_HIGH>; /* PG13 */
230 host-wakeup-gpios = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
231 shutdown-gpios = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
232 };
219}; 233};
220 234
221&usb_otg { 235&usb_otg {
diff --git a/arch/arm/boot/dts/sunxi-h3-h5.dtsi b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
index a4c757c0b741..d74a6cbbfdf4 100644
--- a/arch/arm/boot/dts/sunxi-h3-h5.dtsi
+++ b/arch/arm/boot/dts/sunxi-h3-h5.dtsi
@@ -740,8 +740,7 @@
740 }; 740 };
741 741
742 csi: camera@1cb0000 { 742 csi: camera@1cb0000 {
743 compatible = "allwinner,sun8i-h3-csi", 743 compatible = "allwinner,sun8i-h3-csi";
744 "allwinner,sun6i-a31-csi";
745 reg = <0x01cb0000 0x1000>; 744 reg = <0x01cb0000 0x1000>;
746 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>; 745 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
747 clocks = <&ccu CLK_BUS_CSI>, 746 clocks = <&ccu CLK_BUS_CSI>,
diff --git a/arch/arm/boot/dts/tegra114-dalmore.dts b/arch/arm/boot/dts/tegra114-dalmore.dts
index 1788556b4977..97a5c3504bbe 100644
--- a/arch/arm/boot/dts/tegra114-dalmore.dts
+++ b/arch/arm/boot/dts/tegra114-dalmore.dts
@@ -1087,7 +1087,7 @@
1087 status = "okay"; 1087 status = "okay";
1088 spi-max-frequency = <25000000>; 1088 spi-max-frequency = <25000000>;
1089 spi-flash@0 { 1089 spi-flash@0 {
1090 compatible = "winbond,w25q32dw"; 1090 compatible = "winbond,w25q32dw", "jedec,spi-nor";
1091 reg = <0>; 1091 reg = <0>;
1092 spi-max-frequency = <20000000>; 1092 spi-max-frequency = <20000000>;
1093 }; 1093 };
diff --git a/arch/arm/boot/dts/tegra124-jetson-tk1.dts b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
index 9151b3ebb839..33bbb1c5285d 100644
--- a/arch/arm/boot/dts/tegra124-jetson-tk1.dts
+++ b/arch/arm/boot/dts/tegra124-jetson-tk1.dts
@@ -1656,7 +1656,7 @@
1656 status = "okay"; 1656 status = "okay";
1657 spi-max-frequency = <25000000>; 1657 spi-max-frequency = <25000000>;
1658 spi-flash@0 { 1658 spi-flash@0 {
1659 compatible = "winbond,w25q32dw"; 1659 compatible = "winbond,w25q32dw", "jedec,spi-nor";
1660 reg = <0>; 1660 reg = <0>;
1661 spi-max-frequency = <20000000>; 1661 spi-max-frequency = <20000000>;
1662 }; 1662 };
diff --git a/arch/arm/boot/dts/tegra124-nyan.dtsi b/arch/arm/boot/dts/tegra124-nyan.dtsi
index d5f11d6d987e..a1acd872bcf2 100644
--- a/arch/arm/boot/dts/tegra124-nyan.dtsi
+++ b/arch/arm/boot/dts/tegra124-nyan.dtsi
@@ -13,10 +13,25 @@
13 stdout-path = "serial0:115200n8"; 13 stdout-path = "serial0:115200n8";
14 }; 14 };
15 15
16 memory@80000000 { 16 /*
17 * Note that recent version of the device tree compiler (starting with
18 * version 1.4.2) warn about this node containing a reg property, but
19 * missing a unit-address. However, the bootloader on these Chromebook
20 * devices relies on the full name of this node to be exactly /memory.
21 * Adding the unit-address causes the bootloader to create a /memory
22 * node and write the memory bank configuration to that node, which in
23 * turn leads the kernel to believe that the device has 2 GiB of
24 * memory instead of the amount detected by the bootloader.
25 *
26 * The name of this node is effectively ABI and must not be changed.
27 */
28 memory {
29 device_type = "memory";
17 reg = <0x0 0x80000000 0x0 0x80000000>; 30 reg = <0x0 0x80000000 0x0 0x80000000>;
18 }; 31 };
19 32
33 /delete-node/ memory@80000000;
34
20 host1x@50000000 { 35 host1x@50000000 {
21 hdmi@54280000 { 36 hdmi@54280000 {
22 status = "okay"; 37 status = "okay";
@@ -355,7 +370,7 @@
355 spi-max-frequency = <25000000>; 370 spi-max-frequency = <25000000>;
356 371
357 flash@0 { 372 flash@0 {
358 compatible = "winbond,w25q32dw"; 373 compatible = "winbond,w25q32dw", "jedec,spi-nor";
359 spi-max-frequency = <25000000>; 374 spi-max-frequency = <25000000>;
360 reg = <0>; 375 reg = <0>;
361 }; 376 };
diff --git a/arch/arm/boot/dts/tegra124-venice2.dts b/arch/arm/boot/dts/tegra124-venice2.dts
index 82d139648ef1..4882b61fb680 100644
--- a/arch/arm/boot/dts/tegra124-venice2.dts
+++ b/arch/arm/boot/dts/tegra124-venice2.dts
@@ -879,7 +879,7 @@
879 status = "okay"; 879 status = "okay";
880 spi-max-frequency = <25000000>; 880 spi-max-frequency = <25000000>;
881 spi-flash@0 { 881 spi-flash@0 {
882 compatible = "winbond,w25q32dw"; 882 compatible = "winbond,w25q32dw", "jedec,spi-nor";
883 reg = <0>; 883 reg = <0>;
884 spi-max-frequency = <20000000>; 884 spi-max-frequency = <20000000>;
885 }; 885 };
diff --git a/arch/arm/boot/dts/tegra20-trimslice.dts b/arch/arm/boot/dts/tegra20-trimslice.dts
index 9eb26dc15f6b..3e5ac096d85e 100644
--- a/arch/arm/boot/dts/tegra20-trimslice.dts
+++ b/arch/arm/boot/dts/tegra20-trimslice.dts
@@ -287,7 +287,7 @@
287 status = "okay"; 287 status = "okay";
288 spi-max-frequency = <48000000>; 288 spi-max-frequency = <48000000>;
289 spi-flash@0 { 289 spi-flash@0 {
290 compatible = "winbond,w25q80bl"; 290 compatible = "winbond,w25q80bl", "jedec,spi-nor";
291 reg = <0>; 291 reg = <0>;
292 spi-max-frequency = <48000000>; 292 spi-max-frequency = <48000000>;
293 }; 293 };
diff --git a/arch/arm/boot/dts/tegra20.dtsi b/arch/arm/boot/dts/tegra20.dtsi
index dcad6d6128cf..8c942e60703e 100644
--- a/arch/arm/boot/dts/tegra20.dtsi
+++ b/arch/arm/boot/dts/tegra20.dtsi
@@ -616,17 +616,14 @@
616 }; 616 };
617 617
618 mc: memory-controller@7000f000 { 618 mc: memory-controller@7000f000 {
619 compatible = "nvidia,tegra20-mc"; 619 compatible = "nvidia,tegra20-mc-gart";
620 reg = <0x7000f000 0x024 620 reg = <0x7000f000 0x400 /* controller registers */
621 0x7000f03c 0x3c4>; 621 0x58000000 0x02000000>; /* GART aperture */
622 clocks = <&tegra_car TEGRA20_CLK_MC>;
623 clock-names = "mc";
622 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 624 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
623 #reset-cells = <1>; 625 #reset-cells = <1>;
624 }; 626 #iommu-cells = <0>;
625
626 iommu@7000f024 {
627 compatible = "nvidia,tegra20-gart";
628 reg = <0x7000f024 0x00000018 /* controller registers */
629 0x58000000 0x02000000>; /* GART aperture */
630 }; 627 };
631 628
632 memory-controller@7000f400 { 629 memory-controller@7000f400 {
diff --git a/arch/arm/boot/dts/tegra30-beaver.dts b/arch/arm/boot/dts/tegra30-beaver.dts
index b0d40ac8ac6e..a3b0f3555cd2 100644
--- a/arch/arm/boot/dts/tegra30-beaver.dts
+++ b/arch/arm/boot/dts/tegra30-beaver.dts
@@ -1886,7 +1886,7 @@
1886 status = "okay"; 1886 status = "okay";
1887 spi-max-frequency = <25000000>; 1887 spi-max-frequency = <25000000>;
1888 spi-flash@1 { 1888 spi-flash@1 {
1889 compatible = "winbond,w25q32"; 1889 compatible = "winbond,w25q32", "jedec,spi-nor";
1890 reg = <1>; 1890 reg = <1>;
1891 spi-max-frequency = <20000000>; 1891 spi-max-frequency = <20000000>;
1892 }; 1892 };
diff --git a/arch/arm/boot/dts/tegra30-cardhu.dtsi b/arch/arm/boot/dts/tegra30-cardhu.dtsi
index fb9222b479d2..7ce61edd52f5 100644
--- a/arch/arm/boot/dts/tegra30-cardhu.dtsi
+++ b/arch/arm/boot/dts/tegra30-cardhu.dtsi
@@ -360,7 +360,7 @@
360 status = "okay"; 360 status = "okay";
361 spi-max-frequency = <25000000>; 361 spi-max-frequency = <25000000>;
362 spi-flash@1 { 362 spi-flash@1 {
363 compatible = "winbond,w25q32"; 363 compatible = "winbond,w25q32", "jedec,spi-nor";
364 reg = <1>; 364 reg = <1>;
365 spi-max-frequency = <20000000>; 365 spi-max-frequency = <20000000>;
366 }; 366 };
diff --git a/arch/arm/boot/dts/versatile-ab.dts b/arch/arm/boot/dts/versatile-ab.dts
index 6f4f60ba5429..269e6bf99ccb 100644
--- a/arch/arm/boot/dts/versatile-ab.dts
+++ b/arch/arm/boot/dts/versatile-ab.dts
@@ -1,6 +1,5 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2/dts-v1/; 2/dts-v1/;
3/include/ "skeleton.dtsi"
4 3
5/ { 4/ {
6 model = "ARM Versatile AB"; 5 model = "ARM Versatile AB";
@@ -21,6 +20,7 @@
21 }; 20 };
22 21
23 memory { 22 memory {
23 device_type = "memory";
24 reg = <0x0 0x08000000>; 24 reg = <0x0 0x08000000>;
25 }; 25 };
26 26
diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
index a9569d15de41..d3963e9eaf48 100644
--- a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
+++ b/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
@@ -133,7 +133,7 @@
133 mmci@50000 { 133 mmci@50000 {
134 compatible = "arm,pl180", "arm,primecell"; 134 compatible = "arm,pl180", "arm,primecell";
135 reg = <0x050000 0x1000>; 135 reg = <0x050000 0x1000>;
136 interrupts = <9 10>; 136 interrupts = <9>, <10>;
137 cd-gpios = <&v2m_mmc_gpios 0 0>; 137 cd-gpios = <&v2m_mmc_gpios 0 0>;
138 wp-gpios = <&v2m_mmc_gpios 1 0>; 138 wp-gpios = <&v2m_mmc_gpios 1 0>;
139 max-frequency = <12000000>; 139 max-frequency = <12000000>;
diff --git a/arch/arm/boot/dts/vexpress-v2m.dtsi b/arch/arm/boot/dts/vexpress-v2m.dtsi
index fd42e1194179..798c97aff7fa 100644
--- a/arch/arm/boot/dts/vexpress-v2m.dtsi
+++ b/arch/arm/boot/dts/vexpress-v2m.dtsi
@@ -133,7 +133,7 @@
133 mmci@5000 { 133 mmci@5000 {
134 compatible = "arm,pl180", "arm,primecell"; 134 compatible = "arm,pl180", "arm,primecell";
135 reg = <0x05000 0x1000>; 135 reg = <0x05000 0x1000>;
136 interrupts = <9 10>; 136 interrupts = <9>, <10>;
137 cd-gpios = <&v2m_mmc_gpios 0 0>; 137 cd-gpios = <&v2m_mmc_gpios 0 0>;
138 wp-gpios = <&v2m_mmc_gpios 1 0>; 138 wp-gpios = <&v2m_mmc_gpios 1 0>;
139 max-frequency = <12000000>; 139 max-frequency = <12000000>;
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
index a2ccacd07f4f..00cd9f5bef2e 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
@@ -42,6 +42,7 @@
42 cci-control-port = <&cci_control1>; 42 cci-control-port = <&cci_control1>;
43 cpu-idle-states = <&CLUSTER_SLEEP_BIG>; 43 cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
44 capacity-dmips-mhz = <1024>; 44 capacity-dmips-mhz = <1024>;
45 dynamic-power-coefficient = <990>;
45 }; 46 };
46 47
47 cpu1: cpu@1 { 48 cpu1: cpu@1 {
@@ -51,6 +52,7 @@
51 cci-control-port = <&cci_control1>; 52 cci-control-port = <&cci_control1>;
52 cpu-idle-states = <&CLUSTER_SLEEP_BIG>; 53 cpu-idle-states = <&CLUSTER_SLEEP_BIG>;
53 capacity-dmips-mhz = <1024>; 54 capacity-dmips-mhz = <1024>;
55 dynamic-power-coefficient = <990>;
54 }; 56 };
55 57
56 cpu2: cpu@2 { 58 cpu2: cpu@2 {
@@ -60,6 +62,7 @@
60 cci-control-port = <&cci_control2>; 62 cci-control-port = <&cci_control2>;
61 cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; 63 cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
62 capacity-dmips-mhz = <516>; 64 capacity-dmips-mhz = <516>;
65 dynamic-power-coefficient = <133>;
63 }; 66 };
64 67
65 cpu3: cpu@3 { 68 cpu3: cpu@3 {
@@ -69,6 +72,7 @@
69 cci-control-port = <&cci_control2>; 72 cci-control-port = <&cci_control2>;
70 cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; 73 cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
71 capacity-dmips-mhz = <516>; 74 capacity-dmips-mhz = <516>;
75 dynamic-power-coefficient = <133>;
72 }; 76 };
73 77
74 cpu4: cpu@4 { 78 cpu4: cpu@4 {
@@ -78,6 +82,7 @@
78 cci-control-port = <&cci_control2>; 82 cci-control-port = <&cci_control2>;
79 cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>; 83 cpu-idle-states = <&CLUSTER_SLEEP_LITTLE>;
80 capacity-dmips-mhz = <516>; 84 capacity-dmips-mhz = <516>;
85 dynamic-power-coefficient = <133>;
81 }; 86 };
82 87
83 idle-states { 88 idle-states {
diff --git a/arch/arm/boot/dts/vf610-bk4.dts b/arch/arm/boot/dts/vf610-bk4.dts
index 689c8930dce3..3fa0cbe456db 100644
--- a/arch/arm/boot/dts/vf610-bk4.dts
+++ b/arch/arm/boot/dts/vf610-bk4.dts
@@ -60,6 +60,29 @@
60 regulator-min-microvolt = <3300000>; 60 regulator-min-microvolt = <3300000>;
61 regulator-max-microvolt = <3300000>; 61 regulator-max-microvolt = <3300000>;
62 }; 62 };
63
64 spi-gpio {
65 compatible = "spi-gpio";
66 pinctrl-0 = <&pinctrl_gpio_spi>;
67 pinctrl-names = "default";
68 #address-cells = <1>;
69 #size-cells = <0>;
70 /* PTD12 ->RPIO[91] */
71 sck-gpios = <&gpio2 27 GPIO_ACTIVE_LOW>;
72 /* PTD10 ->RPIO[89] */
73 miso-gpios = <&gpio2 25 GPIO_ACTIVE_HIGH>;
74 num-chipselects = <0>;
75
76 gpio@0 {
77 compatible = "pisosr-gpio";
78 reg = <0>;
79 gpio-controller;
80 #gpio-cells = <2>;
81 /* PTB18 -> RGPIO[40] */
82 load-gpios = <&gpio1 8 GPIO_ACTIVE_LOW>;
83 spi-max-frequency = <100000>;
84 };
85 };
63}; 86};
64 87
65&adc0 { 88&adc0 {
@@ -110,11 +133,11 @@
110 bus-num = <3>; 133 bus-num = <3>;
111 status = "okay"; 134 status = "okay";
112 spi-slave; 135 spi-slave;
136 #address-cells = <0>;
113 137
114 slave@0 { 138 slave {
115 compatible = "lwn,bk4"; 139 compatible = "lwn,bk4";
116 spi-max-frequency = <30000000>; 140 spi-max-frequency = <30000000>;
117 reg = <0>;
118 }; 141 };
119}; 142};
120 143
@@ -431,6 +454,14 @@
431 >; 454 >;
432 }; 455 };
433 456
457 pinctrl_gpio_spi: pinctrl-gpio-spi {
458 fsl,pins = <
459 VF610_PAD_PTB18__GPIO_40 0x1183
460 VF610_PAD_PTD10__GPIO_89 0x1183
461 VF610_PAD_PTD12__GPIO_91 0x1183
462 >;
463 };
464
434 pinctrl_i2c2: i2c2grp { 465 pinctrl_i2c2: i2c2grp {
435 fsl,pins = < 466 fsl,pins = <
436 VF610_PAD_PTA22__I2C2_SCL 0x34df 467 VF610_PAD_PTA22__I2C2_SCL 0x34df
diff --git a/arch/arm/boot/dts/vf610-zii-cfu1.dts b/arch/arm/boot/dts/vf610-zii-cfu1.dts
index 7cdcc5fe8282..445c7dc306b2 100644
--- a/arch/arm/boot/dts/vf610-zii-cfu1.dts
+++ b/arch/arm/boot/dts/vf610-zii-cfu1.dts
@@ -207,7 +207,7 @@
207}; 207};
208 208
209&i2c0 { 209&i2c0 {
210 clock-frequency = <100000>; 210 clock-frequency = <400000>;
211 pinctrl-names = "default"; 211 pinctrl-names = "default";
212 pinctrl-0 = <&pinctrl_i2c0>; 212 pinctrl-0 = <&pinctrl_i2c0>;
213 status = "okay"; 213 status = "okay";
diff --git a/arch/arm/boot/dts/vf610-zii-ssmb-dtu.dts b/arch/arm/boot/dts/vf610-zii-ssmb-dtu.dts
new file mode 100644
index 000000000000..2b10672fadbd
--- /dev/null
+++ b/arch/arm/boot/dts/vf610-zii-ssmb-dtu.dts
@@ -0,0 +1,311 @@
1// SPDX-License-Identifier: (GPL-2.0 OR MIT)
2
3/*
4 * Device tree file for ZII's SSMB DTU board
5 *
6 * SSMB - SPU3 Switch Management Board
7 * DTU - Digital Tapping Unit
8 *
9 * Copyright (C) 2015-2019 Zodiac Inflight Innovations
10 *
11 * Based on an original 'vf610-twr.dts' which is Copyright 2015,
12 * Freescale Semiconductor, Inc.
13 */
14
15/dts-v1/;
16#include "vf610.dtsi"
17
18/ {
19 model = "ZII VF610 SSMB DTU Board";
20 compatible = "zii,vf610dtu", "zii,vf610dev", "fsl,vf610";
21
22 chosen {
23 stdout-path = &uart0;
24 };
25
26 memory@80000000 {
27 device_type = "memory";
28 reg = <0x80000000 0x20000000>;
29 };
30
31 gpio-leds {
32 compatible = "gpio-leds";
33 pinctrl-0 = <&pinctrl_leds_debug>;
34 pinctrl-names = "default";
35
36 led-debug {
37 label = "zii:green:debug1";
38 gpios = <&gpio2 18 GPIO_ACTIVE_HIGH>;
39 linux,default-trigger = "heartbeat";
40 max-brightness = <1>;
41 };
42 };
43
44 reg_vcc_3v3_mcu: regulator {
45 compatible = "regulator-fixed";
46 regulator-name = "vcc_3v3_mcu";
47 regulator-min-microvolt = <3300000>;
48 regulator-max-microvolt = <3300000>;
49 };
50};
51
52&adc0 {
53 vref-supply = <&reg_vcc_3v3_mcu>;
54 status = "okay";
55};
56
57&adc1 {
58 vref-supply = <&reg_vcc_3v3_mcu>;
59 status = "okay";
60};
61
62&edma0 {
63 status = "okay";
64};
65
66&edma1 {
67 status = "okay";
68};
69
70&esdhc0 {
71 pinctrl-names = "default";
72 pinctrl-0 = <&pinctrl_esdhc0>;
73 bus-width = <8>;
74 non-removable;
75 no-1-8-v;
76 keep-power-in-suspend;
77 status = "okay";
78};
79
80&esdhc1 {
81 pinctrl-names = "default";
82 pinctrl-0 = <&pinctrl_esdhc1>;
83 bus-width = <4>;
84 status = "okay";
85};
86
87&fec1 {
88 phy-mode = "rmii";
89 pinctrl-names = "default";
90 pinctrl-0 = <&pinctrl_fec1>;
91 status = "okay";
92
93 fixed-link {
94 speed = <100>;
95 full-duplex;
96 };
97
98 mdio1: mdio {
99 #address-cells = <1>;
100 #size-cells = <0>;
101 status = "okay";
102
103 switch0: switch0@0 {
104 compatible = "marvell,mv88e6190";
105 pinctrl-0 = <&pinctrl_gpio_switch0>;
106 pinctrl-names = "default";
107 reg = <0>;
108 eeprom-length = <65536>;
109 reset-gpios = <&gpio3 11 GPIO_ACTIVE_LOW>;
110 interrupt-parent = <&gpio3>;
111 interrupts = <2 IRQ_TYPE_LEVEL_LOW>;
112 interrupt-controller;
113 #interrupt-cells = <2>;
114
115 ports {
116 #address-cells = <1>;
117 #size-cells = <0>;
118
119 port@0 {
120 reg = <0>;
121 label = "cpu";
122 ethernet = <&fec1>;
123
124 fixed-link {
125 speed = <100>;
126 full-duplex;
127 };
128 };
129
130 port@1 {
131 reg = <1>;
132 label = "eth_cu_100_3";
133 };
134
135 port@5 {
136 reg = <5>;
137 label = "eth_cu_1000_4";
138 };
139
140 port@6 {
141 reg = <6>;
142 label = "eth_cu_1000_5";
143 };
144
145 port@8 {
146 reg = <8>;
147 label = "eth_cu_1000_1";
148 };
149
150 port@9 {
151 reg = <9>;
152 label = "eth_cu_1000_2";
153 phy-handle = <&phy9>;
154 phy-mode = "sgmii";
155 managed = "in-band-status";
156 };
157 };
158
159 mdio1 {
160 compatible = "marvell,mv88e6xxx-mdio-external";
161 #address-cells = <1>;
162 #size-cells = <0>;
163
164 phy9: phy9@0 {
165 compatible = "ethernet-phy-ieee802.3-c45";
166 pinctrl-0 = <&pinctrl_gpio_phy9>;
167 pinctrl-names = "default";
168 interrupt-parent = <&gpio2>;
169 interrupts = <30 IRQ_TYPE_LEVEL_LOW>;
170 reg = <0>;
171 };
172 };
173 };
174 };
175};
176
177&i2c0 {
178 clock-frequency = <100000>;
179 pinctrl-names = "default";
180 pinctrl-0 = <&pinctrl_i2c0>;
181 status = "okay";
182
183 gpio6: gpio-expander@22 {
184 compatible = "nxp,pca9554";
185 reg = <0x22>;
186 gpio-controller;
187 #gpio-cells = <2>;
188 };
189
190 /* On SSMB */
191 temperature-sensor@48 {
192 compatible = "national,lm75";
193 reg = <0x48>;
194 };
195
196 /* On DSB */
197 temperature-sensor@4d {
198 compatible = "national,lm75";
199 reg = <0x4d>;
200 };
201
202 eeprom@50 {
203 compatible = "atmel,24c04";
204 reg = <0x50>;
205 label = "nameplate";
206 };
207
208 eeprom@52 {
209 compatible = "atmel,24c04";
210 reg = <0x52>;
211 };
212};
213
214&uart0 {
215 pinctrl-names = "default";
216 pinctrl-0 = <&pinctrl_uart0>;
217 status = "okay";
218};
219
220&iomuxc {
221 pinctrl_dspi1: dspi1grp {
222 fsl,pins = <
223 VF610_PAD_PTD5__DSPI1_CS0 0x1182
224 VF610_PAD_PTD4__DSPI1_CS1 0x1182
225 VF610_PAD_PTC6__DSPI1_SIN 0x1181
226 VF610_PAD_PTC7__DSPI1_SOUT 0x1182
227 VF610_PAD_PTC8__DSPI1_SCK 0x1182
228 >;
229 };
230
231 pinctrl_esdhc0: esdhc0grp {
232 fsl,pins = <
233 VF610_PAD_PTC0__ESDHC0_CLK 0x31ef
234 VF610_PAD_PTC1__ESDHC0_CMD 0x31ef
235 VF610_PAD_PTC2__ESDHC0_DAT0 0x31ef
236 VF610_PAD_PTC3__ESDHC0_DAT1 0x31ef
237 VF610_PAD_PTC4__ESDHC0_DAT2 0x31ef
238 VF610_PAD_PTC5__ESDHC0_DAT3 0x31ef
239 VF610_PAD_PTD23__ESDHC0_DAT4 0x31ef
240 VF610_PAD_PTD22__ESDHC0_DAT5 0x31ef
241 VF610_PAD_PTD21__ESDHC0_DAT6 0x31ef
242 VF610_PAD_PTD20__ESDHC0_DAT7 0x31ef
243 >;
244 };
245
246 pinctrl_esdhc1: esdhc1grp {
247 fsl,pins = <
248 VF610_PAD_PTA24__ESDHC1_CLK 0x31ef
249 VF610_PAD_PTA25__ESDHC1_CMD 0x31ef
250 VF610_PAD_PTA26__ESDHC1_DAT0 0x31ef
251 VF610_PAD_PTA27__ESDHC1_DAT1 0x31ef
252 VF610_PAD_PTA28__ESDHC1_DATA2 0x31ef
253 VF610_PAD_PTA29__ESDHC1_DAT3 0x31ef
254 >;
255 };
256
257 pinctrl_fec1: fec1grp {
258 fsl,pins = <
259 VF610_PAD_PTA6__RMII_CLKIN 0x30d1
260 VF610_PAD_PTC9__ENET_RMII1_MDC 0x30d2
261 VF610_PAD_PTC10__ENET_RMII1_MDIO 0x30d3
262 VF610_PAD_PTC11__ENET_RMII1_CRS 0x30d1
263 VF610_PAD_PTC12__ENET_RMII1_RXD1 0x30d1
264 VF610_PAD_PTC13__ENET_RMII1_RXD0 0x30d1
265 VF610_PAD_PTC14__ENET_RMII1_RXER 0x30d1
266 VF610_PAD_PTC15__ENET_RMII1_TXD1 0x30d2
267 VF610_PAD_PTC16__ENET_RMII1_TXD0 0x30d2
268 VF610_PAD_PTC17__ENET_RMII1_TXEN 0x30d2
269 >;
270 };
271
272 pinctrl_gpio_phy9: pinctrl-gpio-phy9 {
273 fsl,pins = <
274 VF610_PAD_PTB24__GPIO_94 0x219d
275 >;
276 };
277
278 pinctrl_gpio_switch0: pinctrl-gpio-switch0 {
279 fsl,pins = <
280 VF610_PAD_PTE2__GPIO_107 0x31c2
281 VF610_PAD_PTB28__GPIO_98 0x219d
282 >;
283 };
284
285 pinctrl_i2c0: i2c0grp {
286 fsl,pins = <
287 VF610_PAD_PTB14__I2C0_SCL 0x37ff
288 VF610_PAD_PTB15__I2C0_SDA 0x37ff
289 >;
290 };
291
292 pinctrl_i2c1: i2c1grp {
293 fsl,pins = <
294 VF610_PAD_PTB16__I2C1_SCL 0x37ff
295 VF610_PAD_PTB17__I2C1_SDA 0x37ff
296 >;
297 };
298
299 pinctrl_leds_debug: pinctrl-leds-debug {
300 fsl,pins = <
301 VF610_PAD_PTD3__GPIO_82 0x31c2
302 >;
303 };
304
305 pinctrl_uart0: uart0grp {
306 fsl,pins = <
307 VF610_PAD_PTB10__UART0_TX 0x21a2
308 VF610_PAD_PTB11__UART0_RX 0x21a1
309 >;
310 };
311};
diff --git a/arch/arm/boot/dts/vf610-zii-ssmb-spu3.dts b/arch/arm/boot/dts/vf610-zii-ssmb-spu3.dts
index 757af56e8ee7..0d9fe5ac83a3 100644
--- a/arch/arm/boot/dts/vf610-zii-ssmb-spu3.dts
+++ b/arch/arm/boot/dts/vf610-zii-ssmb-spu3.dts
@@ -99,6 +99,8 @@
99 non-removable; 99 non-removable;
100 no-1-8-v; 100 no-1-8-v;
101 keep-power-in-suspend; 101 keep-power-in-suspend;
102 no-sdio;
103 no-sd;
102 status = "okay"; 104 status = "okay";
103}; 105};
104 106
@@ -106,6 +108,7 @@
106 pinctrl-names = "default"; 108 pinctrl-names = "default";
107 pinctrl-0 = <&pinctrl_esdhc1>; 109 pinctrl-0 = <&pinctrl_esdhc1>;
108 bus-width = <4>; 110 bus-width = <4>;
111 no-sdio;
109 status = "okay"; 112 status = "okay";
110}; 113};
111 114
diff --git a/arch/arm/boot/dts/vt8500.dtsi b/arch/arm/boot/dts/vt8500.dtsi
index 1929ad390d88..8b5af039b072 100644
--- a/arch/arm/boot/dts/vt8500.dtsi
+++ b/arch/arm/boot/dts/vt8500.dtsi
@@ -6,9 +6,9 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 compatible = "via,vt8500"; 12 compatible = "via,vt8500";
13 13
14 cpus { 14 cpus {
@@ -21,6 +21,11 @@
21 }; 21 };
22 }; 22 };
23 23
24 memory {
25 device_type = "memory";
26 reg = <0x0 0x0>;
27 };
28
24 aliases { 29 aliases {
25 serial0 = &uart0; 30 serial0 = &uart0;
26 serial1 = &uart1; 31 serial1 = &uart1;
diff --git a/arch/arm/boot/dts/wm8505.dtsi b/arch/arm/boot/dts/wm8505.dtsi
index e9ef539e13d3..cca6747304c4 100644
--- a/arch/arm/boot/dts/wm8505.dtsi
+++ b/arch/arm/boot/dts/wm8505.dtsi
@@ -6,9 +6,9 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 compatible = "wm,wm8505"; 12 compatible = "wm,wm8505";
13 13
14 cpus { 14 cpus {
@@ -21,6 +21,11 @@
21 }; 21 };
22 }; 22 };
23 23
24 memory {
25 device_type = "memory";
26 reg = <0x0 0x0>;
27 };
28
24 aliases { 29 aliases {
25 serial0 = &uart0; 30 serial0 = &uart0;
26 serial1 = &uart1; 31 serial1 = &uart1;
diff --git a/arch/arm/boot/dts/wm8650.dtsi b/arch/arm/boot/dts/wm8650.dtsi
index e12213d16693..00d01769a68f 100644
--- a/arch/arm/boot/dts/wm8650.dtsi
+++ b/arch/arm/boot/dts/wm8650.dtsi
@@ -6,9 +6,9 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 compatible = "wm,wm8650"; 12 compatible = "wm,wm8650";
13 13
14 cpus { 14 cpus {
@@ -21,6 +21,11 @@
21 }; 21 };
22 }; 22 };
23 23
24 memory {
25 device_type = "memory";
26 reg = <0x0 0x0>;
27 };
28
24 aliases { 29 aliases {
25 serial0 = &uart0; 30 serial0 = &uart0;
26 serial1 = &uart1; 31 serial1 = &uart1;
diff --git a/arch/arm/boot/dts/wm8750.dtsi b/arch/arm/boot/dts/wm8750.dtsi
index 46d076d7302b..54d8f7d9bb33 100644
--- a/arch/arm/boot/dts/wm8750.dtsi
+++ b/arch/arm/boot/dts/wm8750.dtsi
@@ -6,9 +6,9 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 compatible = "wm,wm8750"; 12 compatible = "wm,wm8750";
13 13
14 cpus { 14 cpus {
@@ -21,6 +21,11 @@
21 }; 21 };
22 }; 22 };
23 23
24 memory {
25 device_type = "memory";
26 reg = <0x0 0x0>;
27 };
28
24 aliases { 29 aliases {
25 serial0 = &uart0; 30 serial0 = &uart0;
26 serial1 = &uart1; 31 serial1 = &uart1;
diff --git a/arch/arm/boot/dts/wm8850.dtsi b/arch/arm/boot/dts/wm8850.dtsi
index 8fbccfbe75f3..c572d777077f 100644
--- a/arch/arm/boot/dts/wm8850.dtsi
+++ b/arch/arm/boot/dts/wm8850.dtsi
@@ -6,9 +6,9 @@
6 * Licensed under GPLv2 or later 6 * Licensed under GPLv2 or later
7 */ 7 */
8 8
9/include/ "skeleton.dtsi"
10
11/ { 9/ {
10 #address-cells = <1>;
11 #size-cells = <1>;
12 compatible = "wm,wm8850"; 12 compatible = "wm,wm8850";
13 13
14 cpus { 14 cpus {
@@ -22,6 +22,11 @@
22 }; 22 };
23 }; 23 };
24 24
25 memory {
26 device_type = "memory";
27 reg = <0x0 0x0>;
28 };
29
25 aliases { 30 aliases {
26 serial0 = &uart0; 31 serial0 = &uart0;
27 serial1 = &uart1; 32 serial1 = &uart1;
diff --git a/arch/arm/boot/dts/zx296702-ad1.dts b/arch/arm/boot/dts/zx296702-ad1.dts
index eedd3fcbc002..bd9400840023 100644
--- a/arch/arm/boot/dts/zx296702-ad1.dts
+++ b/arch/arm/boot/dts/zx296702-ad1.dts
@@ -14,6 +14,7 @@
14 }; 14 };
15 15
16 memory { 16 memory {
17 device_type = "memory";
17 reg = <0x50000000 0x20000000>; 18 reg = <0x50000000 0x20000000>;
18 }; 19 };
19}; 20};
diff --git a/arch/arm/boot/dts/zx296702.dtsi b/arch/arm/boot/dts/zx296702.dtsi
index 240e7a23d81f..afd98de029be 100644
--- a/arch/arm/boot/dts/zx296702.dtsi
+++ b/arch/arm/boot/dts/zx296702.dtsi
@@ -1,10 +1,12 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2 2
3#include "skeleton.dtsi"
4#include <dt-bindings/clock/zx296702-clock.h> 3#include <dt-bindings/clock/zx296702-clock.h>
5#include <dt-bindings/interrupt-controller/arm-gic.h> 4#include <dt-bindings/interrupt-controller/arm-gic.h>
6 5
7/ { 6/ {
7 #address-cells = <1>;
8 #size-cells = <1>;
9
8 cpus { 10 cpus {
9 #address-cells = <1>; 11 #address-cells = <1>;
10 #size-cells = <0>; 12 #size-cells = <0>;
diff --git a/arch/arm/boot/dts/zynq-zturn.dts b/arch/arm/boot/dts/zynq-zturn.dts
index b38704657960..5ec616ebca08 100644
--- a/arch/arm/boot/dts/zynq-zturn.dts
+++ b/arch/arm/boot/dts/zynq-zturn.dts
@@ -54,7 +54,7 @@
54 label = "K1"; 54 label = "K1";
55 gpios = <&gpio0 0x32 0x1>; 55 gpios = <&gpio0 0x32 0x1>;
56 linux,code = <0x66>; 56 linux,code = <0x66>;
57 gpio-key,wakeup; 57 wakeup-source;
58 autorepeat; 58 autorepeat;
59 }; 59 };
60 }; 60 };
diff --git a/arch/arm/common/mcpm_entry.c b/arch/arm/common/mcpm_entry.c
index ad574d20415c..1b1b82b37ce0 100644
--- a/arch/arm/common/mcpm_entry.c
+++ b/arch/arm/common/mcpm_entry.c
@@ -381,7 +381,7 @@ static int __init nocache_trampoline(unsigned long _arg)
381 unsigned int cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1); 381 unsigned int cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
382 phys_reset_t phys_reset; 382 phys_reset_t phys_reset;
383 383
384 mcpm_set_entry_vector(cpu, cluster, cpu_resume); 384 mcpm_set_entry_vector(cpu, cluster, cpu_resume_no_hyp);
385 setup_mm_for_reboot(); 385 setup_mm_for_reboot();
386 386
387 __mcpm_cpu_going_down(cpu, cluster); 387 __mcpm_cpu_going_down(cpu, cluster);
diff --git a/arch/arm/configs/axm55xx_defconfig b/arch/arm/configs/axm55xx_defconfig
index 8e17e7ed1f02..53864316bee1 100644
--- a/arch/arm/configs/axm55xx_defconfig
+++ b/arch/arm/configs/axm55xx_defconfig
@@ -155,10 +155,6 @@ CONFIG_PMBUS=y
155CONFIG_SENSORS_LTC2978=y 155CONFIG_SENSORS_LTC2978=y
156CONFIG_WATCHDOG=y 156CONFIG_WATCHDOG=y
157CONFIG_ARM_SP805_WATCHDOG=y 157CONFIG_ARM_SP805_WATCHDOG=y
158CONFIG_FB=y
159CONFIG_FB_ARMCLCD=y
160CONFIG_FRAMEBUFFER_CONSOLE=y
161CONFIG_LOGO=y
162# CONFIG_LOGO_LINUX_MONO is not set 158# CONFIG_LOGO_LINUX_MONO is not set
163# CONFIG_LOGO_LINUX_VGA16 is not set 159# CONFIG_LOGO_LINUX_VGA16 is not set
164CONFIG_HID_A4TECH=y 160CONFIG_HID_A4TECH=y
diff --git a/arch/arm/configs/bcm2835_defconfig b/arch/arm/configs/bcm2835_defconfig
index bb6a35fb1dd7..dcf7610cfe55 100644
--- a/arch/arm/configs/bcm2835_defconfig
+++ b/arch/arm/configs/bcm2835_defconfig
@@ -91,6 +91,8 @@ CONFIG_THERMAL=y
91CONFIG_BCM2835_THERMAL=y 91CONFIG_BCM2835_THERMAL=y
92CONFIG_WATCHDOG=y 92CONFIG_WATCHDOG=y
93CONFIG_BCM2835_WDT=y 93CONFIG_BCM2835_WDT=y
94CONFIG_MEDIA_SUPPORT=y
95CONFIG_MEDIA_CAMERA_SUPPORT=y
94CONFIG_DRM=y 96CONFIG_DRM=y
95CONFIG_DRM_VC4=y 97CONFIG_DRM_VC4=y
96CONFIG_FB_SIMPLE=y 98CONFIG_FB_SIMPLE=y
@@ -129,6 +131,7 @@ CONFIG_DMADEVICES=y
129CONFIG_DMA_BCM2835=y 131CONFIG_DMA_BCM2835=y
130CONFIG_STAGING=y 132CONFIG_STAGING=y
131CONFIG_SND_BCM2835=m 133CONFIG_SND_BCM2835=m
134CONFIG_VIDEO_BCM2835=m
132CONFIG_MAILBOX=y 135CONFIG_MAILBOX=y
133CONFIG_BCM2835_MBOX=y 136CONFIG_BCM2835_MBOX=y
134# CONFIG_IOMMU_SUPPORT is not set 137# CONFIG_IOMMU_SUPPORT is not set
@@ -158,7 +161,6 @@ CONFIG_PRINTK_TIME=y
158CONFIG_BOOT_PRINTK_DELAY=y 161CONFIG_BOOT_PRINTK_DELAY=y
159CONFIG_DYNAMIC_DEBUG=y 162CONFIG_DYNAMIC_DEBUG=y
160CONFIG_DEBUG_INFO=y 163CONFIG_DEBUG_INFO=y
161# CONFIG_ENABLE_WARN_DEPRECATED is not set
162# CONFIG_ENABLE_MUST_CHECK is not set 164# CONFIG_ENABLE_MUST_CHECK is not set
163CONFIG_UNUSED_SYMBOLS=y 165CONFIG_UNUSED_SYMBOLS=y
164CONFIG_DEBUG_MEMORY_INIT=y 166CONFIG_DEBUG_MEMORY_INIT=y
diff --git a/arch/arm/configs/cns3420vb_defconfig b/arch/arm/configs/cns3420vb_defconfig
index c6dcd6e4f4e6..419b73564f29 100644
--- a/arch/arm/configs/cns3420vb_defconfig
+++ b/arch/arm/configs/cns3420vb_defconfig
@@ -60,7 +60,6 @@ CONFIG_EXT2_FS_XATTR=y
60CONFIG_AUTOFS4_FS=y 60CONFIG_AUTOFS4_FS=y
61CONFIG_FSCACHE=y 61CONFIG_FSCACHE=y
62CONFIG_TMPFS=y 62CONFIG_TMPFS=y
63# CONFIG_ENABLE_WARN_DEPRECATED is not set
64# CONFIG_ENABLE_MUST_CHECK is not set 63# CONFIG_ENABLE_MUST_CHECK is not set
65CONFIG_DEBUG_FS=y 64CONFIG_DEBUG_FS=y
66# CONFIG_ARM_UNWIND is not set 65# CONFIG_ARM_UNWIND is not set
diff --git a/arch/arm/configs/efm32_defconfig b/arch/arm/configs/efm32_defconfig
index 860d27138e6f..ee42158f41ec 100644
--- a/arch/arm/configs/efm32_defconfig
+++ b/arch/arm/configs/efm32_defconfig
@@ -94,7 +94,6 @@ CONFIG_ROMFS_BACKED_BY_MTD=y
94# CONFIG_NETWORK_FILESYSTEMS is not set 94# CONFIG_NETWORK_FILESYSTEMS is not set
95CONFIG_PRINTK_TIME=y 95CONFIG_PRINTK_TIME=y
96CONFIG_DEBUG_INFO=y 96CONFIG_DEBUG_INFO=y
97# CONFIG_ENABLE_WARN_DEPRECATED is not set
98# CONFIG_ENABLE_MUST_CHECK is not set 97# CONFIG_ENABLE_MUST_CHECK is not set
99CONFIG_MAGIC_SYSRQ=y 98CONFIG_MAGIC_SYSRQ=y
100# CONFIG_SCHED_DEBUG is not set 99# CONFIG_SCHED_DEBUG is not set
diff --git a/arch/arm/configs/eseries_pxa_defconfig b/arch/arm/configs/eseries_pxa_defconfig
index cd27d651463c..eabb784cf7da 100644
--- a/arch/arm/configs/eseries_pxa_defconfig
+++ b/arch/arm/configs/eseries_pxa_defconfig
@@ -103,7 +103,6 @@ CONFIG_NFS_V3=y
103CONFIG_PARTITION_ADVANCED=y 103CONFIG_PARTITION_ADVANCED=y
104CONFIG_NLS_CODEPAGE_437=y 104CONFIG_NLS_CODEPAGE_437=y
105CONFIG_NLS_ISO8859_1=y 105CONFIG_NLS_ISO8859_1=y
106# CONFIG_ENABLE_WARN_DEPRECATED is not set
107# CONFIG_ENABLE_MUST_CHECK is not set 106# CONFIG_ENABLE_MUST_CHECK is not set
108CONFIG_CRYPTO_CBC=m 107CONFIG_CRYPTO_CBC=m
109CONFIG_CRYPTO_PCBC=m 108CONFIG_CRYPTO_PCBC=m
diff --git a/arch/arm/configs/gemini_defconfig b/arch/arm/configs/gemini_defconfig
index 553777ac2814..ef9aae89907d 100644
--- a/arch/arm/configs/gemini_defconfig
+++ b/arch/arm/configs/gemini_defconfig
@@ -87,6 +87,5 @@ CONFIG_TMPFS_POSIX_ACL=y
87CONFIG_ROMFS_FS=y 87CONFIG_ROMFS_FS=y
88CONFIG_NLS_CODEPAGE_437=y 88CONFIG_NLS_CODEPAGE_437=y
89CONFIG_NLS_ISO8859_1=y 89CONFIG_NLS_ISO8859_1=y
90# CONFIG_ENABLE_WARN_DEPRECATED is not set
91# CONFIG_ENABLE_MUST_CHECK is not set 90# CONFIG_ENABLE_MUST_CHECK is not set
92CONFIG_DEBUG_FS=y 91CONFIG_DEBUG_FS=y
diff --git a/arch/arm/configs/integrator_defconfig b/arch/arm/configs/integrator_defconfig
index 69cb8f1efcea..747550c7af2f 100644
--- a/arch/arm/configs/integrator_defconfig
+++ b/arch/arm/configs/integrator_defconfig
@@ -27,6 +27,7 @@ CONFIG_CPU_FREQ_GOV_POWERSAVE=y
27CONFIG_CPU_FREQ_GOV_USERSPACE=y 27CONFIG_CPU_FREQ_GOV_USERSPACE=y
28CONFIG_CPU_FREQ_GOV_ONDEMAND=y 28CONFIG_CPU_FREQ_GOV_ONDEMAND=y
29CONFIG_CPUFREQ_DT=y 29CONFIG_CPUFREQ_DT=y
30CONFIG_CMA=y
30CONFIG_NET=y 31CONFIG_NET=y
31CONFIG_PACKET=y 32CONFIG_PACKET=y
32CONFIG_UNIX=y 33CONFIG_UNIX=y
@@ -53,13 +54,17 @@ CONFIG_E100=y
53CONFIG_SMC91X=y 54CONFIG_SMC91X=y
54# CONFIG_KEYBOARD_ATKBD is not set 55# CONFIG_KEYBOARD_ATKBD is not set
55# CONFIG_SERIO_SERPORT is not set 56# CONFIG_SERIO_SERPORT is not set
56CONFIG_FB=y 57CONFIG_DRM=y
58CONFIG_DRM_DUMB_VGA_DAC=y
59CONFIG_DRM_PL111=y
57CONFIG_FB_MODE_HELPERS=y 60CONFIG_FB_MODE_HELPERS=y
58CONFIG_FB_ARMCLCD=y
59CONFIG_FB_MATROX=y 61CONFIG_FB_MATROX=y
60CONFIG_FB_MATROX_MILLENIUM=y 62CONFIG_FB_MATROX_MILLENIUM=y
61CONFIG_FB_MATROX_MYSTIQUE=y 63CONFIG_FB_MATROX_MYSTIQUE=y
64CONFIG_BACKLIGHT_LCD_SUPPORT=y
65CONFIG_BACKLIGHT_CLASS_DEVICE=y
62# CONFIG_VGA_CONSOLE is not set 66# CONFIG_VGA_CONSOLE is not set
67CONFIG_LOGO=y
63CONFIG_MMC=y 68CONFIG_MMC=y
64CONFIG_MMC_ARMMMCI=y 69CONFIG_MMC_ARMMMCI=y
65CONFIG_NEW_LEDS=y 70CONFIG_NEW_LEDS=y
diff --git a/arch/arm/configs/lpc18xx_defconfig b/arch/arm/configs/lpc18xx_defconfig
index 23df2518203d..e3d5e15d66d1 100644
--- a/arch/arm/configs/lpc18xx_defconfig
+++ b/arch/arm/configs/lpc18xx_defconfig
@@ -1,5 +1,6 @@
1CONFIG_CROSS_COMPILE="arm-linux-gnueabihf-" 1CONFIG_CROSS_COMPILE="arm-linux-gnueabihf-"
2CONFIG_HIGH_RES_TIMERS=y 2CONFIG_HIGH_RES_TIMERS=y
3CONFIG_PREEMPT=y
3CONFIG_BLK_DEV_INITRD=y 4CONFIG_BLK_DEV_INITRD=y
4# CONFIG_RD_BZIP2 is not set 5# CONFIG_RD_BZIP2 is not set
5# CONFIG_RD_LZMA is not set 6# CONFIG_RD_LZMA is not set
@@ -17,22 +18,20 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
17CONFIG_EMBEDDED=y 18CONFIG_EMBEDDED=y
18# CONFIG_VM_EVENT_COUNTERS is not set 19# CONFIG_VM_EVENT_COUNTERS is not set
19# CONFIG_SLUB_DEBUG is not set 20# CONFIG_SLUB_DEBUG is not set
20# CONFIG_LBDAF is not set
21# CONFIG_BLK_DEV_BSG is not set
22# CONFIG_IOSCHED_DEADLINE is not set
23# CONFIG_IOSCHED_CFQ is not set
24# CONFIG_MMU is not set 21# CONFIG_MMU is not set
25CONFIG_ARM_SINGLE_ARMV7M=y
26CONFIG_ARCH_LPC18XX=y 22CONFIG_ARCH_LPC18XX=y
27CONFIG_SET_MEM_PARAM=y 23CONFIG_SET_MEM_PARAM=y
28CONFIG_DRAM_BASE=0x28000000 24CONFIG_DRAM_BASE=0x28000000
29CONFIG_DRAM_SIZE=0x02000000 25CONFIG_DRAM_SIZE=0x02000000
30CONFIG_FLASH_MEM_BASE=0x1b000000 26CONFIG_FLASH_MEM_BASE=0x1b000000
31CONFIG_FLASH_SIZE=0x00080000 27CONFIG_FLASH_SIZE=0x00080000
32CONFIG_PREEMPT=y
33CONFIG_ZBOOT_ROM_TEXT=0x0 28CONFIG_ZBOOT_ROM_TEXT=0x0
34CONFIG_ZBOOT_ROM_BSS=0x0 29CONFIG_ZBOOT_ROM_BSS=0x0
35CONFIG_ARM_APPENDED_DTB=y 30CONFIG_ARM_APPENDED_DTB=y
31# CONFIG_LBDAF is not set
32# CONFIG_BLK_DEV_BSG is not set
33# CONFIG_IOSCHED_DEADLINE is not set
34# CONFIG_IOSCHED_CFQ is not set
36CONFIG_BINFMT_FLAT=y 35CONFIG_BINFMT_FLAT=y
37CONFIG_BINFMT_ZFLAT=y 36CONFIG_BINFMT_ZFLAT=y
38CONFIG_BINFMT_SHARED_FLAT=y 37CONFIG_BINFMT_SHARED_FLAT=y
@@ -69,7 +68,6 @@ CONFIG_BLK_DEV_SD=y
69# CONFIG_SCSI_LOWLEVEL is not set 68# CONFIG_SCSI_LOWLEVEL is not set
70CONFIG_NETDEVICES=y 69CONFIG_NETDEVICES=y
71# CONFIG_NET_VENDOR_ARC is not set 70# CONFIG_NET_VENDOR_ARC is not set
72# CONFIG_NET_CADENCE is not set
73# CONFIG_NET_VENDOR_BROADCOM is not set 71# CONFIG_NET_VENDOR_BROADCOM is not set
74# CONFIG_NET_VENDOR_CIRRUS is not set 72# CONFIG_NET_VENDOR_CIRRUS is not set
75# CONFIG_NET_VENDOR_FARADAY is not set 73# CONFIG_NET_VENDOR_FARADAY is not set
@@ -90,7 +88,6 @@ CONFIG_STMMAC_ETH=y
90CONFIG_SMSC_PHY=y 88CONFIG_SMSC_PHY=y
91# CONFIG_USB_NET_DRIVERS is not set 89# CONFIG_USB_NET_DRIVERS is not set
92# CONFIG_WLAN is not set 90# CONFIG_WLAN is not set
93# CONFIG_INPUT_MOUSEDEV is not set
94CONFIG_INPUT_EVDEV=y 91CONFIG_INPUT_EVDEV=y
95# CONFIG_KEYBOARD_ATKBD is not set 92# CONFIG_KEYBOARD_ATKBD is not set
96CONFIG_KEYBOARD_GPIO=y 93CONFIG_KEYBOARD_GPIO=y
@@ -101,13 +98,11 @@ CONFIG_KEYBOARD_GPIO_POLLED=y
101# CONFIG_UNIX98_PTYS is not set 98# CONFIG_UNIX98_PTYS is not set
102# CONFIG_LEGACY_PTYS is not set 99# CONFIG_LEGACY_PTYS is not set
103CONFIG_SERIAL_NONSTANDARD=y 100CONFIG_SERIAL_NONSTANDARD=y
104# CONFIG_DEVKMEM is not set
105CONFIG_SERIAL_8250=y 101CONFIG_SERIAL_8250=y
106# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set 102# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set
107CONFIG_SERIAL_8250_CONSOLE=y 103CONFIG_SERIAL_8250_CONSOLE=y
108CONFIG_SERIAL_OF_PLATFORM=y 104CONFIG_SERIAL_OF_PLATFORM=y
109# CONFIG_HW_RANDOM is not set 105# CONFIG_HW_RANDOM is not set
110CONFIG_I2C=y
111CONFIG_I2C_LPC2K=y 106CONFIG_I2C_LPC2K=y
112CONFIG_SPI=y 107CONFIG_SPI=y
113CONFIG_SPI_PL022=y 108CONFIG_SPI_PL022=y
@@ -121,8 +116,10 @@ CONFIG_WATCHDOG=y
121CONFIG_LPC18XX_WATCHDOG=y 116CONFIG_LPC18XX_WATCHDOG=y
122CONFIG_REGULATOR=y 117CONFIG_REGULATOR=y
123CONFIG_REGULATOR_FIXED_VOLTAGE=y 118CONFIG_REGULATOR_FIXED_VOLTAGE=y
124CONFIG_FB=y 119CONFIG_DRM=y
125CONFIG_FB_ARMCLCD=y 120CONFIG_DRM_PL111=y
121CONFIG_FB_MODE_HELPERS=y
122CONFIG_BACKLIGHT_LCD_SUPPORT=y
126CONFIG_USB=y 123CONFIG_USB=y
127CONFIG_USB_EHCI_HCD=y 124CONFIG_USB_EHCI_HCD=y
128CONFIG_USB_EHCI_ROOT_HUB_TT=y 125CONFIG_USB_EHCI_ROOT_HUB_TT=y
@@ -144,15 +141,14 @@ CONFIG_AMBA_PL08X=y
144CONFIG_LPC18XX_DMAMUX=y 141CONFIG_LPC18XX_DMAMUX=y
145CONFIG_MEMORY=y 142CONFIG_MEMORY=y
146CONFIG_ARM_PL172_MPMC=y 143CONFIG_ARM_PL172_MPMC=y
147CONFIG_PWM=y
148CONFIG_PWM_LPC18XX_SCT=y
149CONFIG_IIO=y 144CONFIG_IIO=y
150CONFIG_MMA7455_I2C=y 145CONFIG_MMA7455_I2C=y
151CONFIG_LPC18XX_ADC=y 146CONFIG_LPC18XX_ADC=y
152CONFIG_LPC18XX_DAC=y 147CONFIG_LPC18XX_DAC=y
153CONFIG_IIO_SYSFS_TRIGGER=y 148CONFIG_IIO_SYSFS_TRIGGER=y
149CONFIG_PWM=y
150CONFIG_PWM_LPC18XX_SCT=y
154CONFIG_PHY_LPC18XX_USB_OTG=y 151CONFIG_PHY_LPC18XX_USB_OTG=y
155CONFIG_NVMEM=y
156CONFIG_NVMEM_LPC18XX_EEPROM=y 152CONFIG_NVMEM_LPC18XX_EEPROM=y
157CONFIG_EXT2_FS=y 153CONFIG_EXT2_FS=y
158# CONFIG_FILE_LOCKING is not set 154# CONFIG_FILE_LOCKING is not set
@@ -160,9 +156,10 @@ CONFIG_EXT2_FS=y
160# CONFIG_INOTIFY_USER is not set 156# CONFIG_INOTIFY_USER is not set
161CONFIG_JFFS2_FS=y 157CONFIG_JFFS2_FS=y
162# CONFIG_NETWORK_FILESYSTEMS is not set 158# CONFIG_NETWORK_FILESYSTEMS is not set
159CONFIG_CRC_ITU_T=y
160CONFIG_CRC7=y
163CONFIG_PRINTK_TIME=y 161CONFIG_PRINTK_TIME=y
164CONFIG_DEBUG_INFO=y 162CONFIG_DEBUG_INFO=y
165# CONFIG_ENABLE_WARN_DEPRECATED is not set
166# CONFIG_ENABLE_MUST_CHECK is not set 163# CONFIG_ENABLE_MUST_CHECK is not set
167CONFIG_DEBUG_FS=y 164CONFIG_DEBUG_FS=y
168CONFIG_MAGIC_SYSRQ=y 165CONFIG_MAGIC_SYSRQ=y
@@ -170,5 +167,3 @@ CONFIG_MAGIC_SYSRQ=y
170# CONFIG_DEBUG_BUGVERBOSE is not set 167# CONFIG_DEBUG_BUGVERBOSE is not set
171CONFIG_DEBUG_LL=y 168CONFIG_DEBUG_LL=y
172CONFIG_EARLY_PRINTK=y 169CONFIG_EARLY_PRINTK=y
173CONFIG_CRC_ITU_T=y
174CONFIG_CRC7=y
diff --git a/arch/arm/configs/lpc32xx_defconfig b/arch/arm/configs/lpc32xx_defconfig
index 0b54b4024e51..e752fb704df0 100644
--- a/arch/arm/configs/lpc32xx_defconfig
+++ b/arch/arm/configs/lpc32xx_defconfig
@@ -1,6 +1,7 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y 2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y 3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_PREEMPT=y
4CONFIG_IKCONFIG=y 5CONFIG_IKCONFIG=y
5CONFIG_IKCONFIG_PROC=y 6CONFIG_IKCONFIG_PROC=y
6CONFIG_LOG_BUF_SHIFT=16 7CONFIG_LOG_BUF_SHIFT=16
@@ -11,13 +12,7 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
11CONFIG_SYSCTL_SYSCALL=y 12CONFIG_SYSCTL_SYSCALL=y
12CONFIG_EMBEDDED=y 13CONFIG_EMBEDDED=y
13CONFIG_SLAB=y 14CONFIG_SLAB=y
14CONFIG_JUMP_LABEL=y
15CONFIG_MODULES=y
16CONFIG_MODULE_UNLOAD=y
17# CONFIG_BLK_DEV_BSG is not set
18CONFIG_PARTITION_ADVANCED=y
19CONFIG_ARCH_LPC32XX=y 15CONFIG_ARCH_LPC32XX=y
20CONFIG_PREEMPT=y
21CONFIG_AEABI=y 16CONFIG_AEABI=y
22CONFIG_ZBOOT_ROM_TEXT=0x0 17CONFIG_ZBOOT_ROM_TEXT=0x0
23CONFIG_ZBOOT_ROM_BSS=0x0 18CONFIG_ZBOOT_ROM_BSS=0x0
@@ -26,6 +21,11 @@ CONFIG_ARM_ATAG_DTB_COMPAT=y
26CONFIG_CMDLINE="console=ttyS0,115200n81 root=/dev/ram0" 21CONFIG_CMDLINE="console=ttyS0,115200n81 root=/dev/ram0"
27CONFIG_CPU_IDLE=y 22CONFIG_CPU_IDLE=y
28CONFIG_VFP=y 23CONFIG_VFP=y
24CONFIG_JUMP_LABEL=y
25CONFIG_MODULES=y
26CONFIG_MODULE_UNLOAD=y
27# CONFIG_BLK_DEV_BSG is not set
28CONFIG_PARTITION_ADVANCED=y
29# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 29# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
30CONFIG_NET=y 30CONFIG_NET=y
31CONFIG_PACKET=y 31CONFIG_PACKET=y
@@ -56,6 +56,7 @@ CONFIG_BLK_DEV_CRYPTOLOOP=y
56CONFIG_BLK_DEV_RAM=y 56CONFIG_BLK_DEV_RAM=y
57CONFIG_BLK_DEV_RAM_COUNT=1 57CONFIG_BLK_DEV_RAM_COUNT=1
58CONFIG_BLK_DEV_RAM_SIZE=16384 58CONFIG_BLK_DEV_RAM_SIZE=16384
59CONFIG_SRAM=y
59CONFIG_EEPROM_AT24=y 60CONFIG_EEPROM_AT24=y
60CONFIG_EEPROM_AT25=y 61CONFIG_EEPROM_AT25=y
61CONFIG_SCSI=y 62CONFIG_SCSI=y
@@ -75,9 +76,6 @@ CONFIG_LPC_ENET=y
75# CONFIG_NET_VENDOR_STMICRO is not set 76# CONFIG_NET_VENDOR_STMICRO is not set
76CONFIG_SMSC_PHY=y 77CONFIG_SMSC_PHY=y
77# CONFIG_WLAN is not set 78# CONFIG_WLAN is not set
78# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
79CONFIG_INPUT_MOUSEDEV_SCREEN_X=240
80CONFIG_INPUT_MOUSEDEV_SCREEN_Y=320
81CONFIG_INPUT_EVDEV=y 79CONFIG_INPUT_EVDEV=y
82# CONFIG_KEYBOARD_ATKBD is not set 80# CONFIG_KEYBOARD_ATKBD is not set
83CONFIG_KEYBOARD_GPIO=y 81CONFIG_KEYBOARD_GPIO=y
@@ -92,48 +90,39 @@ CONFIG_SERIAL_8250=y
92CONFIG_SERIAL_8250_CONSOLE=y 90CONFIG_SERIAL_8250_CONSOLE=y
93CONFIG_SERIAL_OF_PLATFORM=y 91CONFIG_SERIAL_OF_PLATFORM=y
94CONFIG_SERIAL_HS_LPC32XX=y 92CONFIG_SERIAL_HS_LPC32XX=y
93CONFIG_SERIAL_HS_LPC32XX_CONSOLE=y
95# CONFIG_HW_RANDOM is not set 94# CONFIG_HW_RANDOM is not set
96CONFIG_I2C=y
97CONFIG_I2C_CHARDEV=y 95CONFIG_I2C_CHARDEV=y
98CONFIG_I2C_PNX=y 96CONFIG_I2C_PNX=y
99CONFIG_SPI=y 97CONFIG_SPI=y
100CONFIG_SPI_PL022=y 98CONFIG_SPI_PL022=y
101CONFIG_GPIO_SYSFS=y 99CONFIG_GPIO_SYSFS=y
102CONFIG_GPIO_EM=y
103CONFIG_GPIO_GENERIC_PLATFORM=y 100CONFIG_GPIO_GENERIC_PLATFORM=y
104CONFIG_GPIO_PL061=y
105CONFIG_GPIO_ADP5588=y
106CONFIG_GPIO_ADNP=y
107CONFIG_GPIO_MAX7300=y
108CONFIG_GPIO_MAX732X=y
109CONFIG_GPIO_PCA953X=y 101CONFIG_GPIO_PCA953X=y
110CONFIG_GPIO_PCF857X=y 102CONFIG_GPIO_PCF857X=y
111CONFIG_GPIO_74X164=y
112CONFIG_GPIO_MAX7301=y
113CONFIG_GPIO_MC33880=y
114CONFIG_PINCTRL_MCP23S08=y
115CONFIG_PINCTRL_SX150X=y
116CONFIG_SENSORS_DS620=y 103CONFIG_SENSORS_DS620=y
117CONFIG_SENSORS_MAX6639=y 104CONFIG_SENSORS_MAX6639=y
118CONFIG_WATCHDOG=y 105CONFIG_WATCHDOG=y
119CONFIG_PNX4008_WATCHDOG=y 106CONFIG_PNX4008_WATCHDOG=y
120CONFIG_FB=y 107CONFIG_REGULATOR=y
121CONFIG_FB_ARMCLCD=y 108CONFIG_REGULATOR_FIXED_VOLTAGE=y
109CONFIG_DRM=y
110CONFIG_DRM_PANEL_SIMPLE=y
111CONFIG_DRM_PL111=y
112CONFIG_FB_MODE_HELPERS=y
113CONFIG_BACKLIGHT_LCD_SUPPORT=y
114CONFIG_BACKLIGHT_CLASS_DEVICE=y
122CONFIG_FRAMEBUFFER_CONSOLE=y 115CONFIG_FRAMEBUFFER_CONSOLE=y
123CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY=y
124CONFIG_LOGO=y 116CONFIG_LOGO=y
125# CONFIG_LOGO_LINUX_MONO is not set 117# CONFIG_LOGO_LINUX_MONO is not set
126# CONFIG_LOGO_LINUX_VGA16 is not set 118# CONFIG_LOGO_LINUX_VGA16 is not set
127CONFIG_SOUND=y 119CONFIG_SOUND=y
128CONFIG_SND=y 120CONFIG_SND=y
129CONFIG_SND_SEQUENCER=y
130CONFIG_SND_MIXER_OSS=y
131CONFIG_SND_PCM_OSS=y
132CONFIG_SND_SEQUENCER_OSS=y
133# CONFIG_SND_SUPPORT_OLD_API is not set 121# CONFIG_SND_SUPPORT_OLD_API is not set
134# CONFIG_SND_VERBOSE_PROCFS is not set 122# CONFIG_SND_VERBOSE_PROCFS is not set
135CONFIG_SND_DEBUG=y 123CONFIG_SND_DEBUG=y
136CONFIG_SND_DEBUG_VERBOSE=y 124CONFIG_SND_DEBUG_VERBOSE=y
125CONFIG_SND_SEQUENCER=y
137# CONFIG_SND_DRIVERS is not set 126# CONFIG_SND_DRIVERS is not set
138# CONFIG_SND_ARM is not set 127# CONFIG_SND_ARM is not set
139# CONFIG_SND_SPI is not set 128# CONFIG_SND_SPI is not set
@@ -146,7 +135,6 @@ CONFIG_USB_LPC32XX=y
146CONFIG_USB_MASS_STORAGE=m 135CONFIG_USB_MASS_STORAGE=m
147CONFIG_USB_G_SERIAL=m 136CONFIG_USB_G_SERIAL=m
148CONFIG_MMC=y 137CONFIG_MMC=y
149# CONFIG_MMC_BLOCK_BOUNCE is not set
150CONFIG_MMC_ARMMMCI=y 138CONFIG_MMC_ARMMMCI=y
151CONFIG_MMC_SPI=y 139CONFIG_MMC_SPI=y
152CONFIG_NEW_LEDS=y 140CONFIG_NEW_LEDS=y
@@ -169,10 +157,10 @@ CONFIG_RTC_DRV_LPC32XX=y
169CONFIG_DMADEVICES=y 157CONFIG_DMADEVICES=y
170CONFIG_AMBA_PL08X=y 158CONFIG_AMBA_PL08X=y
171CONFIG_STAGING=y 159CONFIG_STAGING=y
172CONFIG_LPC32XX_ADC=y
173CONFIG_MEMORY=y 160CONFIG_MEMORY=y
174CONFIG_ARM_PL172_MPMC=y 161CONFIG_ARM_PL172_MPMC=y
175CONFIG_IIO=y 162CONFIG_IIO=y
163CONFIG_LPC32XX_ADC=y
176CONFIG_MAX517=y 164CONFIG_MAX517=y
177CONFIG_PWM=y 165CONFIG_PWM=y
178CONFIG_PWM_LPC32XX=y 166CONFIG_PWM_LPC32XX=y
@@ -186,18 +174,27 @@ CONFIG_JFFS2_FS_WBUF_VERIFY=y
186CONFIG_UBIFS_FS=y 174CONFIG_UBIFS_FS=y
187CONFIG_CRAMFS=y 175CONFIG_CRAMFS=y
188CONFIG_NFS_FS=y 176CONFIG_NFS_FS=y
177CONFIG_NFS_V4=y
178CONFIG_NFS_V4_1=y
179CONFIG_NFS_V4_2=y
189CONFIG_ROOT_NFS=y 180CONFIG_ROOT_NFS=y
190CONFIG_NLS_CODEPAGE_437=y 181CONFIG_NLS_CODEPAGE_437=y
191CONFIG_NLS_ASCII=y 182CONFIG_NLS_ASCII=y
192CONFIG_NLS_ISO8859_1=y 183CONFIG_NLS_ISO8859_1=y
193CONFIG_NLS_UTF8=y 184CONFIG_NLS_UTF8=y
185CONFIG_CRYPTO_ANSI_CPRNG=y
186# CONFIG_CRYPTO_HW is not set
187CONFIG_CRC_CCITT=y
188CONFIG_PRINTK_TIME=y
189CONFIG_DYNAMIC_DEBUG=y
194CONFIG_DEBUG_INFO=y 190CONFIG_DEBUG_INFO=y
191CONFIG_GDB_SCRIPTS=y
192CONFIG_DEBUG_FS=y
193CONFIG_MAGIC_SYSRQ=y
194CONFIG_PANIC_ON_OOPS=y
195CONFIG_PANIC_TIMEOUT=5
195# CONFIG_SCHED_DEBUG is not set 196# CONFIG_SCHED_DEBUG is not set
196# CONFIG_DEBUG_PREEMPT is not set 197# CONFIG_DEBUG_PREEMPT is not set
197# CONFIG_FTRACE is not set 198# CONFIG_FTRACE is not set
198# CONFIG_ARM_UNWIND is not set
199CONFIG_DEBUG_LL=y 199CONFIG_DEBUG_LL=y
200CONFIG_EARLY_PRINTK=y 200CONFIG_EARLY_PRINTK=y
201CONFIG_CRYPTO_ANSI_CPRNG=y
202# CONFIG_CRYPTO_HW is not set
203CONFIG_CRC_CCITT=y
diff --git a/arch/arm/configs/milbeaut_m10v_defconfig b/arch/arm/configs/milbeaut_m10v_defconfig
new file mode 100644
index 000000000000..7c07f9893a0f
--- /dev/null
+++ b/arch/arm/configs/milbeaut_m10v_defconfig
@@ -0,0 +1,119 @@
1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_CGROUPS=y
5CONFIG_BLK_DEV_INITRD=y
6CONFIG_EMBEDDED=y
7CONFIG_PERF_EVENTS=y
8CONFIG_ARCH_MILBEAUT=y
9CONFIG_ARCH_MILBEAUT_M10V=y
10CONFIG_ARM_THUMBEE=y
11# CONFIG_VDSO is not set
12# CONFIG_CACHE_L2X0 is not set
13CONFIG_ARM_ERRATA_430973=y
14CONFIG_ARM_ERRATA_720789=y
15CONFIG_ARM_ERRATA_754322=y
16CONFIG_ARM_ERRATA_754327=y
17CONFIG_ARM_ERRATA_764369=y
18CONFIG_ARM_ERRATA_775420=y
19CONFIG_ARM_ERRATA_798181=y
20CONFIG_SMP=y
21# CONFIG_SMP_ON_UP is not set
22# CONFIG_ARM_CPU_TOPOLOGY is not set
23CONFIG_HAVE_ARM_ARCH_TIMER=y
24CONFIG_NR_CPUS=16
25CONFIG_THUMB2_KERNEL=y
26# CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11 is not set
27# CONFIG_ARM_PATCH_IDIV is not set
28CONFIG_HIGHMEM=y
29CONFIG_FORCE_MAX_ZONEORDER=12
30CONFIG_SECCOMP=y
31CONFIG_KEXEC=y
32CONFIG_EFI=y
33CONFIG_CPU_FREQ=y
34CONFIG_CPU_FREQ_STAT=y
35CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
36CONFIG_CPU_FREQ_GOV_POWERSAVE=m
37CONFIG_CPU_FREQ_GOV_USERSPACE=m
38CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
39CONFIG_CPU_FREQ_GOV_SCHEDUTIL=y
40CONFIG_CPUFREQ_DT=y
41CONFIG_QORIQ_CPUFREQ=y
42CONFIG_CPU_IDLE=y
43CONFIG_ARM_CPUIDLE=y
44CONFIG_VFP=y
45CONFIG_NEON=y
46CONFIG_KERNEL_MODE_NEON=y
47CONFIG_EFI_VARS=m
48CONFIG_EFI_CAPSULE_LOADER=m
49CONFIG_ARM_CRYPTO=y
50CONFIG_CRYPTO_SHA1_ARM_NEON=m
51CONFIG_CRYPTO_SHA1_ARM_CE=m
52CONFIG_CRYPTO_SHA2_ARM_CE=m
53CONFIG_CRYPTO_SHA512_ARM=m
54CONFIG_CRYPTO_AES_ARM=m
55CONFIG_CRYPTO_AES_ARM_BS=m
56CONFIG_CRYPTO_AES_ARM_CE=m
57CONFIG_CRYPTO_GHASH_ARM_CE=m
58CONFIG_CRYPTO_CRC32_ARM_CE=m
59CONFIG_CRYPTO_CHACHA20_NEON=m
60CONFIG_MODULES=y
61CONFIG_MODULE_UNLOAD=y
62CONFIG_PARTITION_ADVANCED=y
63CONFIG_CMDLINE_PARTITION=y
64CONFIG_CMA=y
65CONFIG_DEVTMPFS=y
66CONFIG_DEVTMPFS_MOUNT=y
67CONFIG_DMA_CMA=y
68CONFIG_CMA_SIZE_MBYTES=64
69CONFIG_OF_OVERLAY=y
70CONFIG_BLK_DEV_LOOP=y
71CONFIG_BLK_DEV_RAM=y
72CONFIG_BLK_DEV_RAM_SIZE=65536
73CONFIG_SRAM=y
74CONFIG_INPUT_FF_MEMLESS=m
75CONFIG_INPUT_MATRIXKMAP=y
76# CONFIG_INPUT_KEYBOARD is not set
77# CONFIG_INPUT_MOUSE is not set
78CONFIG_SERIO_LIBPS2=y
79CONFIG_VT_HW_CONSOLE_BINDING=y
80CONFIG_SERIAL_DEV_BUS=y
81# CONFIG_HW_RANDOM is not set
82CONFIG_GPIOLIB=y
83CONFIG_GPIO_GENERIC_PLATFORM=y
84# CONFIG_HWMON is not set
85CONFIG_MEDIA_SUPPORT=m
86CONFIG_MEDIA_CAMERA_SUPPORT=y
87CONFIG_MEDIA_CONTROLLER=y
88# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set
89# CONFIG_HID is not set
90# CONFIG_USB_SUPPORT is not set
91CONFIG_SYNC_FILE=y
92# CONFIG_VIRTIO_MENU is not set
93# CONFIG_IOMMU_SUPPORT is not set
94CONFIG_SOC_BRCMSTB=y
95CONFIG_MEMORY=y
96# CONFIG_ARM_PMU is not set
97CONFIG_EXT4_FS=y
98CONFIG_AUTOFS4_FS=y
99CONFIG_MSDOS_FS=y
100CONFIG_VFAT_FS=y
101CONFIG_NTFS_FS=y
102CONFIG_TMPFS=y
103CONFIG_TMPFS_POSIX_ACL=y
104CONFIG_CONFIGFS_FS=y
105# CONFIG_MISC_FILESYSTEMS is not set
106CONFIG_NLS_CODEPAGE_437=y
107CONFIG_NLS_ISO8859_1=y
108CONFIG_NLS_UTF8=y
109CONFIG_KEYS=y
110CONFIG_CRYPTO_MANAGER=y
111# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
112CONFIG_CRYPTO_SEQIV=m
113# CONFIG_CRYPTO_ECHAINIV is not set
114CONFIG_CRYPTO_AES=y
115# CONFIG_CRYPTO_HW is not set
116CONFIG_CRC_CCITT=m
117CONFIG_CRC_ITU_T=m
118CONFIG_PRINTK_TIME=y
119CONFIG_MAGIC_SYSRQ=y
diff --git a/arch/arm/configs/mini2440_defconfig b/arch/arm/configs/mini2440_defconfig
index 88ea02e7ba19..d95a8059d30b 100644
--- a/arch/arm/configs/mini2440_defconfig
+++ b/arch/arm/configs/mini2440_defconfig
@@ -298,7 +298,6 @@ CONFIG_NLS_KOI8_R=m
298CONFIG_NLS_KOI8_U=m 298CONFIG_NLS_KOI8_U=m
299CONFIG_NLS_UTF8=m 299CONFIG_NLS_UTF8=m
300CONFIG_DEBUG_INFO=y 300CONFIG_DEBUG_INFO=y
301# CONFIG_ENABLE_WARN_DEPRECATED is not set
302# CONFIG_ENABLE_MUST_CHECK is not set 301# CONFIG_ENABLE_MUST_CHECK is not set
303CONFIG_STRIP_ASM_SYMS=y 302CONFIG_STRIP_ASM_SYMS=y
304CONFIG_DEBUG_FS=y 303CONFIG_DEBUG_FS=y
diff --git a/arch/arm/configs/moxart_defconfig b/arch/arm/configs/moxart_defconfig
index 2da0d9ee2107..078228a19339 100644
--- a/arch/arm/configs/moxart_defconfig
+++ b/arch/arm/configs/moxart_defconfig
@@ -125,7 +125,6 @@ CONFIG_CONFIGFS_FS=y
125CONFIG_JFFS2_FS=y 125CONFIG_JFFS2_FS=y
126CONFIG_PRINTK_TIME=y 126CONFIG_PRINTK_TIME=y
127CONFIG_DEBUG_INFO=y 127CONFIG_DEBUG_INFO=y
128# CONFIG_ENABLE_WARN_DEPRECATED is not set
129# CONFIG_ENABLE_MUST_CHECK is not set 128# CONFIG_ENABLE_MUST_CHECK is not set
130CONFIG_DEBUG_PAGEALLOC=y 129CONFIG_DEBUG_PAGEALLOC=y
131CONFIG_DEBUG_OBJECTS=y 130CONFIG_DEBUG_OBJECTS=y
diff --git a/arch/arm/configs/mps2_defconfig b/arch/arm/configs/mps2_defconfig
index 0bcdec7cc169..1d923dbb9928 100644
--- a/arch/arm/configs/mps2_defconfig
+++ b/arch/arm/configs/mps2_defconfig
@@ -100,7 +100,6 @@ CONFIG_ROOT_NFS=y
100CONFIG_NLS=y 100CONFIG_NLS=y
101CONFIG_PRINTK_TIME=y 101CONFIG_PRINTK_TIME=y
102CONFIG_DEBUG_INFO=y 102CONFIG_DEBUG_INFO=y
103# CONFIG_ENABLE_WARN_DEPRECATED is not set
104# CONFIG_ENABLE_MUST_CHECK is not set 103# CONFIG_ENABLE_MUST_CHECK is not set
105CONFIG_DEBUG_FS=y 104CONFIG_DEBUG_FS=y
106# CONFIG_SCHED_DEBUG is not set 105# CONFIG_SCHED_DEBUG is not set
diff --git a/arch/arm/configs/multi_v7_defconfig b/arch/arm/configs/multi_v7_defconfig
index 5bee34a7ff2e..c75051b9392c 100644
--- a/arch/arm/configs/multi_v7_defconfig
+++ b/arch/arm/configs/multi_v7_defconfig
@@ -54,6 +54,8 @@ CONFIG_SOC_VF610=y
54CONFIG_ARCH_KEYSTONE=y 54CONFIG_ARCH_KEYSTONE=y
55CONFIG_ARCH_MEDIATEK=y 55CONFIG_ARCH_MEDIATEK=y
56CONFIG_ARCH_MESON=y 56CONFIG_ARCH_MESON=y
57CONFIG_ARCH_MILBEAUT=y
58CONFIG_ARCH_MILBEAUT_M10V=y
57CONFIG_ARCH_MVEBU=y 59CONFIG_ARCH_MVEBU=y
58CONFIG_MACH_ARMADA_370=y 60CONFIG_MACH_ARMADA_370=y
59CONFIG_MACH_ARMADA_375=y 61CONFIG_MACH_ARMADA_375=y
@@ -76,6 +78,7 @@ CONFIG_ARCH_ROCKCHIP=y
76CONFIG_ARCH_RENESAS=y 78CONFIG_ARCH_RENESAS=y
77CONFIG_ARCH_EMEV2=y 79CONFIG_ARCH_EMEV2=y
78CONFIG_ARCH_R7S72100=y 80CONFIG_ARCH_R7S72100=y
81CONFIG_ARCH_R7S9210=y
79CONFIG_ARCH_R8A73A4=y 82CONFIG_ARCH_R8A73A4=y
80CONFIG_ARCH_R8A7740=y 83CONFIG_ARCH_R8A7740=y
81CONFIG_ARCH_R8A7743=y 84CONFIG_ARCH_R8A7743=y
@@ -404,6 +407,7 @@ CONFIG_SPI_XILINX=y
404CONFIG_SPI_SPIDEV=y 407CONFIG_SPI_SPIDEV=y
405CONFIG_SPMI=y 408CONFIG_SPMI=y
406CONFIG_PINCTRL_AS3722=y 409CONFIG_PINCTRL_AS3722=y
410CONFIG_PINCTRL_RZA2=y
407CONFIG_PINCTRL_PALMAS=y 411CONFIG_PINCTRL_PALMAS=y
408CONFIG_PINCTRL_APQ8064=y 412CONFIG_PINCTRL_APQ8064=y
409CONFIG_PINCTRL_APQ8084=y 413CONFIG_PINCTRL_APQ8084=y
@@ -631,6 +635,7 @@ CONFIG_DRM_PANEL_SAMSUNG_S6E8AA0=m
631CONFIG_DRM_DUMB_VGA_DAC=m 635CONFIG_DRM_DUMB_VGA_DAC=m
632CONFIG_DRM_NXP_PTN3460=m 636CONFIG_DRM_NXP_PTN3460=m
633CONFIG_DRM_PARADE_PS8622=m 637CONFIG_DRM_PARADE_PS8622=m
638CONFIG_DRM_SII902X=m
634CONFIG_DRM_SII9234=m 639CONFIG_DRM_SII9234=m
635CONFIG_DRM_TOSHIBA_TC358764=m 640CONFIG_DRM_TOSHIBA_TC358764=m
636CONFIG_DRM_I2C_ADV7511=m 641CONFIG_DRM_I2C_ADV7511=m
@@ -641,7 +646,7 @@ CONFIG_DRM_STM_DSI=m
641CONFIG_DRM_VC4=m 646CONFIG_DRM_VC4=m
642CONFIG_DRM_ETNAVIV=m 647CONFIG_DRM_ETNAVIV=m
643CONFIG_DRM_MXSFB=m 648CONFIG_DRM_MXSFB=m
644CONFIG_FB_ARMCLCD=y 649CONFIG_DRM_PL111=m
645CONFIG_FB_EFI=y 650CONFIG_FB_EFI=y
646CONFIG_FB_WM8505=y 651CONFIG_FB_WM8505=y
647CONFIG_FB_SH_MOBILE_LCDC=y 652CONFIG_FB_SH_MOBILE_LCDC=y
@@ -826,6 +831,7 @@ CONFIG_RTC_DRV_MAX8997=m
826CONFIG_RTC_DRV_MAX77686=y 831CONFIG_RTC_DRV_MAX77686=y
827CONFIG_RTC_DRV_RK808=m 832CONFIG_RTC_DRV_RK808=m
828CONFIG_RTC_DRV_RS5C372=m 833CONFIG_RTC_DRV_RS5C372=m
834CONFIG_RTC_DRV_PCF85363=m
829CONFIG_RTC_DRV_BQ32K=m 835CONFIG_RTC_DRV_BQ32K=m
830CONFIG_RTC_DRV_TWL4030=y 836CONFIG_RTC_DRV_TWL4030=y
831CONFIG_RTC_DRV_PALMAS=y 837CONFIG_RTC_DRV_PALMAS=y
@@ -1028,3 +1034,5 @@ CONFIG_CRYPTO_AES_ARM_CE=m
1028CONFIG_CRYPTO_GHASH_ARM_CE=m 1034CONFIG_CRYPTO_GHASH_ARM_CE=m
1029CONFIG_CRYPTO_CRC32_ARM_CE=m 1035CONFIG_CRYPTO_CRC32_ARM_CE=m
1030CONFIG_CRYPTO_CHACHA20_NEON=m 1036CONFIG_CRYPTO_CHACHA20_NEON=m
1037CONFIG_GCC_PLUGINS=y
1038CONFIG_GCC_PLUGIN_STRUCTLEAK=y
diff --git a/arch/arm/configs/nhk8815_defconfig b/arch/arm/configs/nhk8815_defconfig
index 0ac44acd5bc4..5f4c6aaa07f6 100644
--- a/arch/arm/configs/nhk8815_defconfig
+++ b/arch/arm/configs/nhk8815_defconfig
@@ -3,6 +3,7 @@
3CONFIG_SYSVIPC=y 3CONFIG_SYSVIPC=y
4CONFIG_NO_HZ_IDLE=y 4CONFIG_NO_HZ_IDLE=y
5CONFIG_HIGH_RES_TIMERS=y 5CONFIG_HIGH_RES_TIMERS=y
6CONFIG_PREEMPT=y
6CONFIG_IKCONFIG=y 7CONFIG_IKCONFIG=y
7CONFIG_IKCONFIG_PROC=y 8CONFIG_IKCONFIG_PROC=y
8CONFIG_LOG_BUF_SHIFT=14 9CONFIG_LOG_BUF_SHIFT=14
@@ -10,16 +11,16 @@ CONFIG_BLK_DEV_INITRD=y
10CONFIG_EXPERT=y 11CONFIG_EXPERT=y
11CONFIG_KALLSYMS_ALL=y 12CONFIG_KALLSYMS_ALL=y
12CONFIG_SLAB=y 13CONFIG_SLAB=y
13CONFIG_MODULES=y
14CONFIG_MODULE_UNLOAD=y
15# CONFIG_BLK_DEV_BSG is not set
16# CONFIG_ARCH_MULTI_V7 is not set 14# CONFIG_ARCH_MULTI_V7 is not set
17CONFIG_ARCH_NOMADIK=y 15CONFIG_ARCH_NOMADIK=y
18CONFIG_MACH_NOMADIK_8815NHK=y 16CONFIG_MACH_NOMADIK_8815NHK=y
19CONFIG_PREEMPT=y
20CONFIG_AEABI=y 17CONFIG_AEABI=y
21CONFIG_ZBOOT_ROM_TEXT=0x0 18CONFIG_ZBOOT_ROM_TEXT=0x0
22CONFIG_ZBOOT_ROM_BSS=0x0 19CONFIG_ZBOOT_ROM_BSS=0x0
20CONFIG_MODULES=y
21CONFIG_MODULE_UNLOAD=y
22# CONFIG_BLK_DEV_BSG is not set
23CONFIG_CMA=y
23CONFIG_NET=y 24CONFIG_NET=y
24CONFIG_PACKET=y 25CONFIG_PACKET=y
25CONFIG_UNIX=y 26CONFIG_UNIX=y
@@ -49,12 +50,12 @@ CONFIG_MTD=y
49CONFIG_MTD_TESTS=m 50CONFIG_MTD_TESTS=m
50CONFIG_MTD_CMDLINE_PARTS=y 51CONFIG_MTD_CMDLINE_PARTS=y
51CONFIG_MTD_BLOCK=y 52CONFIG_MTD_BLOCK=y
52CONFIG_MTD_NAND_ECC_SMC=y
53CONFIG_MTD_NAND=y
54CONFIG_MTD_NAND_FSMC=y
55CONFIG_MTD_ONENAND=y 53CONFIG_MTD_ONENAND=y
56CONFIG_MTD_ONENAND_VERIFY_WRITE=y 54CONFIG_MTD_ONENAND_VERIFY_WRITE=y
57CONFIG_MTD_ONENAND_GENERIC=y 55CONFIG_MTD_ONENAND_GENERIC=y
56CONFIG_MTD_NAND_ECC_SMC=y
57CONFIG_MTD_NAND=y
58CONFIG_MTD_NAND_FSMC=y
58CONFIG_BLK_DEV_LOOP=y 59CONFIG_BLK_DEV_LOOP=y
59CONFIG_BLK_DEV_CRYPTOLOOP=y 60CONFIG_BLK_DEV_CRYPTOLOOP=y
60CONFIG_BLK_DEV_RAM=y 61CONFIG_BLK_DEV_RAM=y
@@ -75,7 +76,6 @@ CONFIG_PPP_MPPE=m
75CONFIG_PPPOE=m 76CONFIG_PPPOE=m
76CONFIG_PPP_ASYNC=m 77CONFIG_PPP_ASYNC=m
77CONFIG_PPP_SYNC_TTY=m 78CONFIG_PPP_SYNC_TTY=m
78# CONFIG_INPUT_MOUSEDEV is not set
79CONFIG_INPUT_EVDEV=y 79CONFIG_INPUT_EVDEV=y
80# CONFIG_KEYBOARD_ATKBD is not set 80# CONFIG_KEYBOARD_ATKBD is not set
81CONFIG_KEYBOARD_GPIO=y 81CONFIG_KEYBOARD_GPIO=y
@@ -88,13 +88,22 @@ CONFIG_SERIAL_AMBA_PL011_CONSOLE=y
88CONFIG_HW_RANDOM=y 88CONFIG_HW_RANDOM=y
89CONFIG_I2C_CHARDEV=y 89CONFIG_I2C_CHARDEV=y
90CONFIG_I2C_GPIO=y 90CONFIG_I2C_GPIO=y
91CONFIG_DEBUG_GPIO=y 91CONFIG_SPI=y
92CONFIG_SPI_GPIO=y
92CONFIG_GPIO_STMPE=y 93CONFIG_GPIO_STMPE=y
93# CONFIG_HWMON is not set 94# CONFIG_HWMON is not set
94CONFIG_MFD_STMPE=y 95CONFIG_MFD_STMPE=y
96CONFIG_MFD_STW481X=y
95CONFIG_REGULATOR=y 97CONFIG_REGULATOR=y
98CONFIG_DRM=y
99CONFIG_DRM_PANEL_TPO_TPG110=y
100CONFIG_DRM_PL111=y
101CONFIG_BACKLIGHT_LCD_SUPPORT=y
102CONFIG_BACKLIGHT_CLASS_DEVICE=y
103CONFIG_BACKLIGHT_PWM=y
104CONFIG_FRAMEBUFFER_CONSOLE=y
105CONFIG_LOGO=y
96CONFIG_MMC=y 106CONFIG_MMC=y
97# CONFIG_MMC_BLOCK_BOUNCE is not set
98CONFIG_MMC_ARMMMCI=y 107CONFIG_MMC_ARMMMCI=y
99CONFIG_NEW_LEDS=y 108CONFIG_NEW_LEDS=y
100CONFIG_LEDS_CLASS=y 109CONFIG_LEDS_CLASS=y
@@ -105,6 +114,11 @@ CONFIG_RTC_CLASS=y
105CONFIG_RTC_DRV_PL031=y 114CONFIG_RTC_DRV_PL031=y
106CONFIG_DMADEVICES=y 115CONFIG_DMADEVICES=y
107CONFIG_AMBA_PL08X=y 116CONFIG_AMBA_PL08X=y
117CONFIG_IIO=y
118CONFIG_IIO_BUFFER=y
119CONFIG_IIO_ST_ACCEL_3AXIS=y
120CONFIG_PWM=y
121CONFIG_PWM_STMPE=y
108CONFIG_EXT2_FS=y 122CONFIG_EXT2_FS=y
109CONFIG_EXT3_FS=y 123CONFIG_EXT3_FS=y
110CONFIG_FUSE_FS=y 124CONFIG_FUSE_FS=y
@@ -121,13 +135,12 @@ CONFIG_NLS_CODEPAGE_437=y
121CONFIG_NLS_ASCII=y 135CONFIG_NLS_ASCII=y
122CONFIG_NLS_ISO8859_1=y 136CONFIG_NLS_ISO8859_1=y
123CONFIG_NLS_ISO8859_15=y 137CONFIG_NLS_ISO8859_15=y
138CONFIG_CRYPTO_MD5=y
139CONFIG_CRYPTO_SHA1=y
140CONFIG_CRYPTO_DES=y
124CONFIG_DEBUG_INFO=y 141CONFIG_DEBUG_INFO=y
125# CONFIG_ENABLE_MUST_CHECK is not set 142# CONFIG_ENABLE_MUST_CHECK is not set
126CONFIG_DEBUG_FS=y 143CONFIG_DEBUG_FS=y
127# CONFIG_SCHED_DEBUG is not set 144# CONFIG_SCHED_DEBUG is not set
128# CONFIG_DEBUG_PREEMPT is not set 145# CONFIG_DEBUG_PREEMPT is not set
129# CONFIG_DEBUG_BUGVERBOSE is not set 146# CONFIG_DEBUG_BUGVERBOSE is not set
130CONFIG_CRYPTO_MD5=y
131CONFIG_CRYPTO_SHA1=y
132CONFIG_CRYPTO_DES=y
133# CONFIG_CRYPTO_ANSI_CPRNG is not set
diff --git a/arch/arm/configs/nuc910_defconfig b/arch/arm/configs/nuc910_defconfig
index a72653645f9d..c0d152c02fba 100644
--- a/arch/arm/configs/nuc910_defconfig
+++ b/arch/arm/configs/nuc910_defconfig
@@ -47,7 +47,6 @@ CONFIG_ROMFS_FS=y
47CONFIG_PARTITION_ADVANCED=y 47CONFIG_PARTITION_ADVANCED=y
48CONFIG_NLS_CODEPAGE_437=y 48CONFIG_NLS_CODEPAGE_437=y
49CONFIG_NLS_ISO8859_1=y 49CONFIG_NLS_ISO8859_1=y
50# CONFIG_ENABLE_WARN_DEPRECATED is not set
51# CONFIG_ENABLE_MUST_CHECK is not set 50# CONFIG_ENABLE_MUST_CHECK is not set
52CONFIG_DEBUG_FS=y 51CONFIG_DEBUG_FS=y
53# CONFIG_CRC32 is not set 52# CONFIG_CRC32 is not set
diff --git a/arch/arm/configs/nuc950_defconfig b/arch/arm/configs/nuc950_defconfig
index 614a0a28d0b4..8dde1186c2ef 100644
--- a/arch/arm/configs/nuc950_defconfig
+++ b/arch/arm/configs/nuc950_defconfig
@@ -64,6 +64,5 @@ CONFIG_ROMFS_FS=y
64CONFIG_PARTITION_ADVANCED=y 64CONFIG_PARTITION_ADVANCED=y
65CONFIG_NLS_CODEPAGE_437=y 65CONFIG_NLS_CODEPAGE_437=y
66CONFIG_NLS_ISO8859_1=y 66CONFIG_NLS_ISO8859_1=y
67# CONFIG_ENABLE_WARN_DEPRECATED is not set
68# CONFIG_ENABLE_MUST_CHECK is not set 67# CONFIG_ENABLE_MUST_CHECK is not set
69CONFIG_DEBUG_FS=y 68CONFIG_DEBUG_FS=y
diff --git a/arch/arm/configs/nuc960_defconfig b/arch/arm/configs/nuc960_defconfig
index b84bbd216153..6bb784f8eb5b 100644
--- a/arch/arm/configs/nuc960_defconfig
+++ b/arch/arm/configs/nuc960_defconfig
@@ -53,7 +53,6 @@ CONFIG_ROMFS_FS=y
53CONFIG_PARTITION_ADVANCED=y 53CONFIG_PARTITION_ADVANCED=y
54CONFIG_NLS_CODEPAGE_437=y 54CONFIG_NLS_CODEPAGE_437=y
55CONFIG_NLS_ISO8859_1=y 55CONFIG_NLS_ISO8859_1=y
56# CONFIG_ENABLE_WARN_DEPRECATED is not set
57# CONFIG_ENABLE_MUST_CHECK is not set 56# CONFIG_ENABLE_MUST_CHECK is not set
58CONFIG_DEBUG_FS=y 57CONFIG_DEBUG_FS=y
59# CONFIG_CRC32 is not set 58# CONFIG_CRC32 is not set
diff --git a/arch/arm/configs/omap2plus_defconfig b/arch/arm/configs/omap2plus_defconfig
index 9c6f436d1b12..3f03ec6d2644 100644
--- a/arch/arm/configs/omap2plus_defconfig
+++ b/arch/arm/configs/omap2plus_defconfig
@@ -25,16 +25,6 @@ CONFIG_BLK_DEV_INITRD=y
25CONFIG_EXPERT=y 25CONFIG_EXPERT=y
26CONFIG_SLAB=y 26CONFIG_SLAB=y
27CONFIG_PROFILING=y 27CONFIG_PROFILING=y
28CONFIG_OPROFILE=y
29CONFIG_KPROBES=y
30CONFIG_MODULES=y
31CONFIG_MODULE_FORCE_LOAD=y
32CONFIG_MODULE_UNLOAD=y
33CONFIG_MODULE_FORCE_UNLOAD=y
34CONFIG_MODVERSIONS=y
35CONFIG_MODULE_SRCVERSION_ALL=y
36# CONFIG_BLK_DEV_BSG is not set
37CONFIG_PARTITION_ADVANCED=y
38CONFIG_ARCH_MULTI_V6=y 28CONFIG_ARCH_MULTI_V6=y
39CONFIG_POWER_AVS_OMAP=y 29CONFIG_POWER_AVS_OMAP=y
40CONFIG_POWER_AVS_OMAP_CLASS3=y 30CONFIG_POWER_AVS_OMAP_CLASS3=y
@@ -48,15 +38,8 @@ CONFIG_SOC_AM43XX=y
48CONFIG_SOC_DRA7XX=y 38CONFIG_SOC_DRA7XX=y
49CONFIG_ARM_THUMBEE=y 39CONFIG_ARM_THUMBEE=y
50CONFIG_ARM_ERRATA_411920=y 40CONFIG_ARM_ERRATA_411920=y
51CONFIG_PCI=y
52CONFIG_PCI_MSI=y
53CONFIG_PCI_DRA7XX_EP=y
54CONFIG_PCI_ENDPOINT=y
55CONFIG_PCI_ENDPOINT_CONFIGFS=y
56CONFIG_PCI_EPF_TEST=m
57CONFIG_SMP=y 41CONFIG_SMP=y
58CONFIG_NR_CPUS=2 42CONFIG_NR_CPUS=2
59CONFIG_CMA=y
60CONFIG_SECCOMP=y 43CONFIG_SECCOMP=y
61CONFIG_ZBOOT_ROM_TEXT=0x0 44CONFIG_ZBOOT_ROM_TEXT=0x0
62CONFIG_ZBOOT_ROM_BSS=0x0 45CONFIG_ZBOOT_ROM_BSS=0x0
@@ -74,8 +57,27 @@ CONFIG_CPUFREQ_DT=m
74CONFIG_ARM_TI_CPUFREQ=y 57CONFIG_ARM_TI_CPUFREQ=y
75CONFIG_CPU_IDLE=y 58CONFIG_CPU_IDLE=y
76CONFIG_KERNEL_MODE_NEON=y 59CONFIG_KERNEL_MODE_NEON=y
77CONFIG_BINFMT_MISC=y
78CONFIG_PM_DEBUG=y 60CONFIG_PM_DEBUG=y
61CONFIG_ARM_CRYPTO=y
62CONFIG_CRYPTO_SHA1_ARM_NEON=m
63CONFIG_CRYPTO_SHA256_ARM=m
64CONFIG_CRYPTO_SHA512_ARM=m
65CONFIG_CRYPTO_AES_ARM=m
66CONFIG_CRYPTO_AES_ARM_BS=m
67CONFIG_CRYPTO_GHASH_ARM_CE=m
68CONFIG_CRYPTO_CHACHA20_NEON=m
69CONFIG_OPROFILE=y
70CONFIG_KPROBES=y
71CONFIG_MODULES=y
72CONFIG_MODULE_FORCE_LOAD=y
73CONFIG_MODULE_UNLOAD=y
74CONFIG_MODULE_FORCE_UNLOAD=y
75CONFIG_MODVERSIONS=y
76CONFIG_MODULE_SRCVERSION_ALL=y
77# CONFIG_BLK_DEV_BSG is not set
78CONFIG_PARTITION_ADVANCED=y
79CONFIG_BINFMT_MISC=y
80CONFIG_CMA=y
79CONFIG_NET=y 81CONFIG_NET=y
80CONFIG_PACKET=y 82CONFIG_PACKET=y
81CONFIG_UNIX=y 83CONFIG_UNIX=y
@@ -118,6 +120,12 @@ CONFIG_AF_RXRPC=m
118CONFIG_RXKAD=y 120CONFIG_RXKAD=y
119CONFIG_CFG80211=m 121CONFIG_CFG80211=m
120CONFIG_MAC80211=m 122CONFIG_MAC80211=m
123CONFIG_PCI=y
124CONFIG_PCI_MSI=y
125CONFIG_PCI_DRA7XX_EP=y
126CONFIG_PCI_ENDPOINT=y
127CONFIG_PCI_ENDPOINT_CONFIGFS=y
128CONFIG_PCI_EPF_TEST=m
121CONFIG_DEVTMPFS=y 129CONFIG_DEVTMPFS=y
122CONFIG_DEVTMPFS_MOUNT=y 130CONFIG_DEVTMPFS_MOUNT=y
123CONFIG_DMA_CMA=y 131CONFIG_DMA_CMA=y
@@ -132,13 +140,13 @@ CONFIG_MTD_CFI_INTELEXT=y
132CONFIG_MTD_PHYSMAP=y 140CONFIG_MTD_PHYSMAP=y
133CONFIG_MTD_PHYSMAP_OF=y 141CONFIG_MTD_PHYSMAP_OF=y
134CONFIG_MTD_M25P80=m 142CONFIG_MTD_M25P80=m
143CONFIG_MTD_ONENAND=y
144CONFIG_MTD_ONENAND_VERIFY_WRITE=y
145CONFIG_MTD_ONENAND_OMAP2=y
135CONFIG_MTD_NAND=y 146CONFIG_MTD_NAND=y
136CONFIG_MTD_NAND_ECC_BCH=y 147CONFIG_MTD_NAND_ECC_BCH=y
137CONFIG_MTD_NAND_OMAP2=y 148CONFIG_MTD_NAND_OMAP2=y
138CONFIG_MTD_NAND_OMAP_BCH=y 149CONFIG_MTD_NAND_OMAP_BCH=y
139CONFIG_MTD_ONENAND=y
140CONFIG_MTD_ONENAND_VERIFY_WRITE=y
141CONFIG_MTD_ONENAND_OMAP2=y
142CONFIG_MTD_SPI_NOR=m 150CONFIG_MTD_SPI_NOR=m
143CONFIG_MTD_UBI=y 151CONFIG_MTD_UBI=y
144CONFIG_BLK_DEV_LOOP=y 152CONFIG_BLK_DEV_LOOP=y
@@ -155,7 +163,6 @@ CONFIG_SATA_AHCI_PLATFORM=y
155CONFIG_AHCI_DM816=m 163CONFIG_AHCI_DM816=m
156CONFIG_NETDEVICES=y 164CONFIG_NETDEVICES=y
157# CONFIG_NET_VENDOR_ARC is not set 165# CONFIG_NET_VENDOR_ARC is not set
158# CONFIG_NET_CADENCE is not set
159# CONFIG_NET_VENDOR_BROADCOM is not set 166# CONFIG_NET_VENDOR_BROADCOM is not set
160# CONFIG_NET_VENDOR_CIRRUS is not set 167# CONFIG_NET_VENDOR_CIRRUS is not set
161CONFIG_DM9000=y 168CONFIG_DM9000=y
@@ -283,11 +290,9 @@ CONFIG_HWMON=m
283CONFIG_SENSORS_GPIO_FAN=m 290CONFIG_SENSORS_GPIO_FAN=m
284CONFIG_SENSORS_LM75=m 291CONFIG_SENSORS_LM75=m
285CONFIG_SENSORS_TMP102=m 292CONFIG_SENSORS_TMP102=m
286CONFIG_THERMAL=m
287CONFIG_THERMAL_GOV_FAIR_SHARE=y 293CONFIG_THERMAL_GOV_FAIR_SHARE=y
288CONFIG_THERMAL_GOV_USER_SPACE=y 294CONFIG_THERMAL_GOV_USER_SPACE=y
289CONFIG_CPU_THERMAL=y 295CONFIG_CPU_THERMAL=y
290CONFIG_TI_SOC_THERMAL=m
291CONFIG_TI_THERMAL=y 296CONFIG_TI_THERMAL=y
292CONFIG_OMAP4_THERMAL=y 297CONFIG_OMAP4_THERMAL=y
293CONFIG_OMAP5_THERMAL=y 298CONFIG_OMAP5_THERMAL=y
@@ -381,13 +386,12 @@ CONFIG_SND_VERBOSE_PRINTK=y
381CONFIG_SND_DEBUG=y 386CONFIG_SND_DEBUG=y
382CONFIG_SND_USB_AUDIO=m 387CONFIG_SND_USB_AUDIO=m
383CONFIG_SND_SOC=m 388CONFIG_SND_SOC=m
384CONFIG_SND_SOC_TLV320AIC3X=m
385CONFIG_SND_SOC_DAVINCI_MCASP=m 389CONFIG_SND_SOC_DAVINCI_MCASP=m
386CONFIG_SND_SOC_NOKIA_RX51=m 390CONFIG_SND_SOC_NOKIA_RX51=m
387CONFIG_SND_SOC_OMAP_HDMI=m
388CONFIG_SND_SOC_OMAP_ABE_TWL6040=m
389CONFIG_SND_SOC_OMAP3_PANDORA=m 391CONFIG_SND_SOC_OMAP3_PANDORA=m
390CONFIG_SND_SOC_OMAP3_TWL4030=m 392CONFIG_SND_SOC_OMAP3_TWL4030=m
393CONFIG_SND_SOC_OMAP_ABE_TWL6040=m
394CONFIG_SND_SOC_OMAP_HDMI=m
391CONFIG_SND_SOC_CPCAP=m 395CONFIG_SND_SOC_CPCAP=m
392CONFIG_SND_SOC_TLV320AIC23_I2C=m 396CONFIG_SND_SOC_TLV320AIC23_I2C=m
393CONFIG_SND_SIMPLE_CARD=m 397CONFIG_SND_SIMPLE_CARD=m
@@ -475,8 +479,6 @@ CONFIG_RTC_DRV_PALMAS=m
475CONFIG_RTC_DRV_OMAP=m 479CONFIG_RTC_DRV_OMAP=m
476CONFIG_RTC_DRV_CPCAP=m 480CONFIG_RTC_DRV_CPCAP=m
477CONFIG_DMADEVICES=y 481CONFIG_DMADEVICES=y
478CONFIG_DMA_OMAP=y
479CONFIG_TI_EDMA=y
480CONFIG_OMAP_IOMMU=y 482CONFIG_OMAP_IOMMU=y
481CONFIG_REMOTEPROC=m 483CONFIG_REMOTEPROC=m
482CONFIG_OMAP_REMOTEPROC=m 484CONFIG_OMAP_REMOTEPROC=m
@@ -531,24 +533,8 @@ CONFIG_NFS_V4=y
531CONFIG_ROOT_NFS=y 533CONFIG_ROOT_NFS=y
532CONFIG_NLS_CODEPAGE_437=y 534CONFIG_NLS_CODEPAGE_437=y
533CONFIG_NLS_ISO8859_1=y 535CONFIG_NLS_ISO8859_1=y
534CONFIG_PRINTK_TIME=y
535CONFIG_DEBUG_INFO=y
536CONFIG_DEBUG_INFO_SPLIT=y
537CONFIG_DEBUG_INFO_DWARF4=y
538CONFIG_MAGIC_SYSRQ=y
539CONFIG_SCHEDSTATS=y
540CONFIG_PROVE_LOCKING=y
541# CONFIG_DEBUG_BUGVERBOSE is not set
542CONFIG_SECURITY=y 536CONFIG_SECURITY=y
543CONFIG_CRYPTO_MICHAEL_MIC=y 537CONFIG_CRYPTO_MICHAEL_MIC=y
544CONFIG_ARM_CRYPTO=y
545CONFIG_CRYPTO_SHA1_ARM_NEON=m
546CONFIG_CRYPTO_SHA256_ARM=m
547CONFIG_CRYPTO_SHA512_ARM=m
548CONFIG_CRYPTO_AES_ARM=m
549CONFIG_CRYPTO_AES_ARM_BS=m
550CONFIG_CRYPTO_GHASH_ARM_CE=m
551CONFIG_CRYPTO_CHACHA20_NEON=m
552CONFIG_CRC_CCITT=y 538CONFIG_CRC_CCITT=y
553CONFIG_CRC_T10DIF=y 539CONFIG_CRC_T10DIF=y
554CONFIG_CRC_ITU_T=y 540CONFIG_CRC_ITU_T=y
@@ -557,3 +543,10 @@ CONFIG_LIBCRC32C=y
557CONFIG_FONTS=y 543CONFIG_FONTS=y
558CONFIG_FONT_8x8=y 544CONFIG_FONT_8x8=y
559CONFIG_FONT_8x16=y 545CONFIG_FONT_8x16=y
546CONFIG_PRINTK_TIME=y
547CONFIG_DEBUG_INFO=y
548CONFIG_DEBUG_INFO_SPLIT=y
549CONFIG_DEBUG_INFO_DWARF4=y
550CONFIG_MAGIC_SYSRQ=y
551CONFIG_SCHEDSTATS=y
552# CONFIG_DEBUG_BUGVERBOSE is not set
diff --git a/arch/arm/configs/pxa_defconfig b/arch/arm/configs/pxa_defconfig
index 6bb506edb1f5..d4654755b09c 100644
--- a/arch/arm/configs/pxa_defconfig
+++ b/arch/arm/configs/pxa_defconfig
@@ -66,9 +66,6 @@ CONFIG_MACH_MIOA701=y
66CONFIG_PXA_EZX=y 66CONFIG_PXA_EZX=y
67CONFIG_MACH_MP900C=y 67CONFIG_MACH_MP900C=y
68CONFIG_ARCH_PXA_PALM=y 68CONFIG_ARCH_PXA_PALM=y
69CONFIG_MACH_RAUMFELD_RC=y
70CONFIG_MACH_RAUMFELD_CONNECTOR=y
71CONFIG_MACH_RAUMFELD_SPEAKER=y
72CONFIG_PXA_SHARPSL=y 69CONFIG_PXA_SHARPSL=y
73CONFIG_MACH_POODLE=y 70CONFIG_MACH_POODLE=y
74CONFIG_MACH_CORGI=y 71CONFIG_MACH_CORGI=y
@@ -482,7 +479,6 @@ CONFIG_SND_PCM_OSS=m
482CONFIG_SND_DYNAMIC_MINORS=y 479CONFIG_SND_DYNAMIC_MINORS=y
483CONFIG_SND_VERBOSE_PRINTK=y 480CONFIG_SND_VERBOSE_PRINTK=y
484CONFIG_SND_DEBUG=y 481CONFIG_SND_DEBUG=y
485CONFIG_SND_PXA2XX_AC97=m
486CONFIG_SND_USB_AUDIO=m 482CONFIG_SND_USB_AUDIO=m
487CONFIG_SND_SOC=m 483CONFIG_SND_SOC=m
488CONFIG_SND_ATMEL_SOC=m 484CONFIG_SND_ATMEL_SOC=m
@@ -498,7 +494,6 @@ CONFIG_SND_PXA2XX_SOC_E800=m
498CONFIG_SND_PXA2XX_SOC_EM_X270=m 494CONFIG_SND_PXA2XX_SOC_EM_X270=m
499CONFIG_SND_PXA2XX_SOC_PALM27X=y 495CONFIG_SND_PXA2XX_SOC_PALM27X=y
500CONFIG_SND_SOC_ZYLONITE=m 496CONFIG_SND_SOC_ZYLONITE=m
501CONFIG_SND_SOC_RAUMFELD=m
502CONFIG_SND_PXA2XX_SOC_HX4700=m 497CONFIG_SND_PXA2XX_SOC_HX4700=m
503CONFIG_SND_PXA2XX_SOC_MAGICIAN=m 498CONFIG_SND_PXA2XX_SOC_MAGICIAN=m
504CONFIG_SND_PXA2XX_SOC_MIOA701=m 499CONFIG_SND_PXA2XX_SOC_MIOA701=m
diff --git a/arch/arm/configs/raumfeld_defconfig b/arch/arm/configs/raumfeld_defconfig
deleted file mode 100644
index 2dd56e9a484e..000000000000
--- a/arch/arm/configs/raumfeld_defconfig
+++ /dev/null
@@ -1,197 +0,0 @@
1# CONFIG_LOCALVERSION_AUTO is not set
2# CONFIG_SWAP is not set
3CONFIG_MODULES=y
4CONFIG_MODULE_UNLOAD=y
5# CONFIG_LBDAF is not set
6# CONFIG_BLK_DEV_BSG is not set
7CONFIG_ARCH_PXA=y
8CONFIG_MACH_RAUMFELD_RC=y
9CONFIG_MACH_RAUMFELD_CONNECTOR=y
10CONFIG_MACH_RAUMFELD_SPEAKER=y
11CONFIG_NO_HZ=y
12CONFIG_AEABI=y
13# CONFIG_OABI_COMPAT is not set
14CONFIG_CMDLINE="console=ttyS0,115200 rw"
15CONFIG_CPU_FREQ=y
16CONFIG_CPU_IDLE=y
17CONFIG_PM=y
18CONFIG_APM_EMULATION=y
19CONFIG_NET=y
20CONFIG_PACKET=y
21CONFIG_UNIX=y
22CONFIG_INET=y
23CONFIG_IP_MULTICAST=y
24CONFIG_IP_PNP=y
25CONFIG_SYN_COOKIES=y
26CONFIG_IPV6=y
27CONFIG_CFG80211=y
28CONFIG_MAC80211=y
29CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
30CONFIG_MTD=y
31CONFIG_MTD_BLOCK=y
32CONFIG_NFTL=y
33CONFIG_NFTL_RW=y
34CONFIG_MTD_BLOCK2MTD=y
35CONFIG_MTD_NAND=y
36CONFIG_MTD_NAND_MARVELL=y
37CONFIG_MTD_UBI=y
38CONFIG_BLK_DEV_LOOP=y
39CONFIG_ISL29003=y
40CONFIG_IIO=y
41CONFIG_AD5446=y
42CONFIG_SCSI=y
43CONFIG_BLK_DEV_SD=y
44CONFIG_CHR_DEV_SG=y
45CONFIG_NETDEVICES=y
46CONFIG_NET_ETHERNET=y
47CONFIG_SMSC911X=y
48CONFIG_LIBERTAS=y
49CONFIG_LIBERTAS_SDIO=m
50CONFIG_USB_USBNET=y
51# CONFIG_USB_NET_AX8817X is not set
52# CONFIG_USB_NET_NET1080 is not set
53CONFIG_USB_NET_MCS7830=y
54# CONFIG_USB_NET_CDC_SUBSET is not set
55# CONFIG_USB_NET_ZAURUS is not set
56CONFIG_INPUT_EVDEV=y
57CONFIG_KEYBOARD_GPIO=y
58# CONFIG_INPUT_MOUSE is not set
59CONFIG_INPUT_TOUCHSCREEN=y
60CONFIG_TOUCHSCREEN_EETI=m
61CONFIG_INPUT_MISC=y
62CONFIG_INPUT_GPIO_ROTARY_ENCODER=y
63CONFIG_SERIAL_PXA=y
64CONFIG_SERIAL_PXA_CONSOLE=y
65CONFIG_HW_RANDOM=y
66CONFIG_I2C=y
67CONFIG_I2C_CHARDEV=y
68CONFIG_I2C_PXA=y
69CONFIG_SPI=y
70CONFIG_SPI_DEBUG=y
71CONFIG_SPI_GPIO=y
72CONFIG_SPI_SPIDEV=y
73CONFIG_DEBUG_GPIO=y
74CONFIG_W1_MASTER_GPIO=m
75CONFIG_POWER_SUPPLY=y
76CONFIG_PDA_POWER=y
77CONFIG_BATTERY_DS2760=m
78CONFIG_SENSORS_LIS3_SPI=y
79CONFIG_REGULATOR=y
80CONFIG_REGULATOR_DEBUG=y
81CONFIG_REGULATOR_FIXED_VOLTAGE=y
82CONFIG_REGULATOR_MAX8660=y
83CONFIG_FB=y
84CONFIG_FB_PXA=y
85CONFIG_BACKLIGHT_LCD_SUPPORT=y
86# CONFIG_LCD_CLASS_DEVICE is not set
87CONFIG_BACKLIGHT_CLASS_DEVICE=y
88# CONFIG_BACKLIGHT_GENERIC is not set
89CONFIG_BACKLIGHT_PWM=y
90# CONFIG_VGA_CONSOLE is not set
91CONFIG_FRAMEBUFFER_CONSOLE=y
92CONFIG_LOGO=y
93# CONFIG_LOGO_LINUX_MONO is not set
94# CONFIG_LOGO_LINUX_VGA16 is not set
95# CONFIG_LOGO_LINUX_CLUT224 is not set
96CONFIG_SOUND=y
97CONFIG_SND=y
98# CONFIG_SND_DRIVERS is not set
99# CONFIG_SND_USB is not set
100CONFIG_SND_SOC=y
101CONFIG_SND_PXA2XX_SOC=y
102CONFIG_SND_SOC_RAUMFELD=y
103CONFIG_HID_DRAGONRISE=y
104CONFIG_HID_GYRATION=y
105CONFIG_HID_TWINHAN=y
106CONFIG_HID_NTRIG=y
107CONFIG_HID_PANTHERLORD=y
108CONFIG_HID_PETALYNX=y
109CONFIG_HID_SAMSUNG=y
110CONFIG_HID_SONY=y
111CONFIG_HID_SUNPLUS=y
112CONFIG_HID_GREENASIA=y
113CONFIG_HID_SMARTJOYPLUS=y
114CONFIG_HID_TOPSEED=y
115CONFIG_HID_THRUSTMASTER=y
116CONFIG_HID_ZEROPLUS=y
117CONFIG_USB=y
118CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
119CONFIG_USB_MON=y
120CONFIG_USB_OHCI_HCD=y
121CONFIG_USB_STORAGE=y
122CONFIG_USB_STORAGE_FREECOM=y
123CONFIG_USB_STORAGE_ISD200=y
124CONFIG_USB_STORAGE_USBAT=y
125CONFIG_USB_STORAGE_SDDR09=y
126CONFIG_USB_STORAGE_SDDR55=y
127CONFIG_MMC=y
128CONFIG_MMC_PXA=m
129CONFIG_NEW_LEDS=y
130CONFIG_LEDS_CLASS=y
131CONFIG_LEDS_GPIO=y
132CONFIG_LEDS_LT3593=y
133CONFIG_LEDS_TRIGGERS=y
134CONFIG_LEDS_TRIGGER_BACKLIGHT=y
135CONFIG_RTC_CLASS=y
136CONFIG_RTC_DRV_PXA=y
137CONFIG_DMADEVICES=y
138CONFIG_UIO=y
139CONFIG_EXT2_FS=y
140CONFIG_EXT2_FS_XIP=y
141CONFIG_EXT3_FS=y
142CONFIG_FSCACHE=y
143CONFIG_FSCACHE_STATS=y
144CONFIG_CACHEFILES=y
145CONFIG_MSDOS_FS=y
146CONFIG_VFAT_FS=y
147CONFIG_TMPFS=y
148CONFIG_UBIFS_FS=y
149CONFIG_NFS_FS=y
150CONFIG_NFS_V3=y
151CONFIG_ROOT_NFS=y
152CONFIG_NFS_FSCACHE=y
153CONFIG_NLS_CODEPAGE_437=y
154CONFIG_NLS_CODEPAGE_737=y
155CONFIG_NLS_CODEPAGE_775=y
156CONFIG_NLS_CODEPAGE_850=y
157CONFIG_NLS_CODEPAGE_852=y
158CONFIG_NLS_CODEPAGE_855=y
159CONFIG_NLS_CODEPAGE_857=y
160CONFIG_NLS_CODEPAGE_860=y
161CONFIG_NLS_CODEPAGE_861=y
162CONFIG_NLS_CODEPAGE_862=y
163CONFIG_NLS_CODEPAGE_863=y
164CONFIG_NLS_CODEPAGE_864=y
165CONFIG_NLS_CODEPAGE_865=y
166CONFIG_NLS_CODEPAGE_866=y
167CONFIG_NLS_CODEPAGE_869=y
168CONFIG_NLS_CODEPAGE_936=y
169CONFIG_NLS_CODEPAGE_950=y
170CONFIG_NLS_CODEPAGE_932=y
171CONFIG_NLS_CODEPAGE_949=y
172CONFIG_NLS_CODEPAGE_874=y
173CONFIG_NLS_ISO8859_8=y
174CONFIG_NLS_CODEPAGE_1250=y
175CONFIG_NLS_CODEPAGE_1251=y
176CONFIG_NLS_ASCII=y
177CONFIG_NLS_ISO8859_1=y
178CONFIG_NLS_ISO8859_2=y
179CONFIG_NLS_ISO8859_3=y
180CONFIG_NLS_ISO8859_4=y
181CONFIG_NLS_ISO8859_5=y
182CONFIG_NLS_ISO8859_6=y
183CONFIG_NLS_ISO8859_7=y
184CONFIG_NLS_ISO8859_9=y
185CONFIG_NLS_ISO8859_13=y
186CONFIG_NLS_ISO8859_14=y
187CONFIG_NLS_ISO8859_15=y
188CONFIG_NLS_KOI8_R=y
189CONFIG_NLS_KOI8_U=y
190CONFIG_NLS_UTF8=y
191CONFIG_PRINTK_TIME=y
192CONFIG_DEBUG_KERNEL=y
193CONFIG_DEBUG_INFO=y
194CONFIG_DEBUG_USER=y
195CONFIG_DEBUG_LL=y
196# CONFIG_CRYPTO_ANSI_CPRNG is not set
197# CONFIG_CRYPTO_HW is not set
diff --git a/arch/arm/configs/s5pv210_defconfig b/arch/arm/configs/s5pv210_defconfig
index a077597369f1..fd4f28aabda6 100644
--- a/arch/arm/configs/s5pv210_defconfig
+++ b/arch/arm/configs/s5pv210_defconfig
@@ -1,24 +1,30 @@
1CONFIG_SYSVIPC=y 1CONFIG_SYSVIPC=y
2CONFIG_NO_HZ=y 2CONFIG_NO_HZ=y
3CONFIG_HIGH_RES_TIMERS=y 3CONFIG_HIGH_RES_TIMERS=y
4CONFIG_PREEMPT=y
4CONFIG_CGROUPS=y 5CONFIG_CGROUPS=y
5CONFIG_SYSFS_DEPRECATED=y 6CONFIG_SYSFS_DEPRECATED=y
6CONFIG_SYSFS_DEPRECATED_V2=y 7CONFIG_SYSFS_DEPRECATED_V2=y
7CONFIG_BLK_DEV_INITRD=y 8CONFIG_BLK_DEV_INITRD=y
8CONFIG_KALLSYMS_ALL=y 9CONFIG_KALLSYMS_ALL=y
9CONFIG_MODULES=y
10CONFIG_MODULE_UNLOAD=y
11# CONFIG_BLK_DEV_BSG is not set
12CONFIG_PARTITION_ADVANCED=y
13CONFIG_BSD_DISKLABEL=y
14CONFIG_SOLARIS_X86_PARTITION=y
15CONFIG_ARCH_S5PV210=y 10CONFIG_ARCH_S5PV210=y
16CONFIG_VMSPLIT_2G=y 11CONFIG_VMSPLIT_2G=y
17CONFIG_PREEMPT=y
18CONFIG_ARM_APPENDED_DTB=y 12CONFIG_ARM_APPENDED_DTB=y
19CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc" 13CONFIG_CMDLINE="root=/dev/ram0 rw ramdisk=8192 initrd=0x20800000,8M console=ttySAC1,115200 init=/linuxrc"
14CONFIG_CPU_FREQ=y
15CONFIG_CPU_FREQ_STAT=y
16CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
17CONFIG_CPU_FREQ_GOV_POWERSAVE=m
18CONFIG_CPU_FREQ_GOV_USERSPACE=m
19CONFIG_CPU_FREQ_GOV_CONSERVATIVE=m
20CONFIG_VFP=y 20CONFIG_VFP=y
21CONFIG_NEON=y 21CONFIG_NEON=y
22CONFIG_MODULES=y
23CONFIG_MODULE_UNLOAD=y
24# CONFIG_BLK_DEV_BSG is not set
25CONFIG_PARTITION_ADVANCED=y
26CONFIG_BSD_DISKLABEL=y
27CONFIG_SOLARIS_X86_PARTITION=y
22CONFIG_NET=y 28CONFIG_NET=y
23CONFIG_PACKET=y 29CONFIG_PACKET=y
24CONFIG_UNIX=y 30CONFIG_UNIX=y
@@ -27,6 +33,11 @@ CONFIG_IP_PNP=y
27CONFIG_IP_PNP_DHCP=y 33CONFIG_IP_PNP_DHCP=y
28CONFIG_IP_PNP_BOOTP=y 34CONFIG_IP_PNP_BOOTP=y
29CONFIG_IP_PNP_RARP=y 35CONFIG_IP_PNP_RARP=y
36CONFIG_BT=m
37CONFIG_BT_RFCOMM=y
38CONFIG_BT_BNEP=y
39CONFIG_BT_HCIUART=m
40CONFIG_BT_HCIUART_BCM=y
30CONFIG_CFG80211=m 41CONFIG_CFG80211=m
31CONFIG_MAC80211=m 42CONFIG_MAC80211=m
32CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 43CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
@@ -44,21 +55,35 @@ CONFIG_INPUT_EVDEV=y
44CONFIG_KEYBOARD_GPIO=y 55CONFIG_KEYBOARD_GPIO=y
45# CONFIG_INPUT_MOUSE is not set 56# CONFIG_INPUT_MOUSE is not set
46CONFIG_INPUT_TOUCHSCREEN=y 57CONFIG_INPUT_TOUCHSCREEN=y
58CONFIG_TOUCHSCREEN_ATMEL_MXT=m
59CONFIG_INPUT_MISC=y
60CONFIG_INPUT_PWM_VIBRA=m
47CONFIG_SERIAL_8250=y 61CONFIG_SERIAL_8250=y
48CONFIG_SERIAL_SAMSUNG=y 62CONFIG_SERIAL_SAMSUNG=y
49CONFIG_SERIAL_SAMSUNG_CONSOLE=y 63CONFIG_SERIAL_SAMSUNG_CONSOLE=y
64CONFIG_SERIAL_DEV_BUS=y
50CONFIG_HW_RANDOM=y 65CONFIG_HW_RANDOM=y
51CONFIG_I2C_GPIO=y 66CONFIG_I2C_GPIO=y
67CONFIG_I2C_S3C2410=y
68CONFIG_POWER_RESET=y
69CONFIG_POWER_RESET_SYSCON_POWEROFF=y
52CONFIG_POWER_SUPPLY=y 70CONFIG_POWER_SUPPLY=y
53CONFIG_BATTERY_MAX17040=y 71CONFIG_BATTERY_MAX17040=y
54# CONFIG_HWMON is not set 72# CONFIG_HWMON is not set
55CONFIG_MFD_MAX8998=y 73CONFIG_MFD_MAX8998=y
56CONFIG_REGULATOR=y 74CONFIG_REGULATOR=y
75CONFIG_REGULATOR_FIXED_VOLTAGE=y
57CONFIG_REGULATOR_MAX8998=y 76CONFIG_REGULATOR_MAX8998=y
77CONFIG_MEDIA_SUPPORT=m
78CONFIG_MEDIA_CAMERA_SUPPORT=y
79CONFIG_V4L_MEM2MEM_DRIVERS=y
80CONFIG_VIDEO_SAMSUNG_S5P_JPEG=m
81CONFIG_VIDEO_SAMSUNG_S5P_MFC=m
58CONFIG_DRM=y 82CONFIG_DRM=y
59CONFIG_DRM_EXYNOS=y 83CONFIG_DRM_EXYNOS=y
60CONFIG_DRM_EXYNOS_FIMD=y 84CONFIG_DRM_EXYNOS_FIMD=y
61CONFIG_DRM_EXYNOS_DPI=y 85CONFIG_DRM_EXYNOS_DPI=y
86CONFIG_DRM_EXYNOS_ROTATOR=y
62CONFIG_USB=y 87CONFIG_USB=y
63CONFIG_USB_OTG=y 88CONFIG_USB_OTG=y
64CONFIG_USB_EHCI_HCD=y 89CONFIG_USB_EHCI_HCD=y
@@ -72,6 +97,9 @@ CONFIG_MMC_SDHCI_S3C=y
72CONFIG_MMC_SDHCI_S3C_DMA=y 97CONFIG_MMC_SDHCI_S3C_DMA=y
73CONFIG_RTC_CLASS=y 98CONFIG_RTC_CLASS=y
74CONFIG_RTC_DRV_MAX8998=m 99CONFIG_RTC_DRV_MAX8998=m
100CONFIG_DMADEVICES=y
101CONFIG_PWM=y
102CONFIG_PWM_SAMSUNG=y
75CONFIG_PHY_SAMSUNG_USB2=m 103CONFIG_PHY_SAMSUNG_USB2=m
76CONFIG_PHY_S5PV210_USB2=y 104CONFIG_PHY_S5PV210_USB2=y
77CONFIG_EXT2_FS=y 105CONFIG_EXT2_FS=y
@@ -87,6 +115,7 @@ CONFIG_NLS_CODEPAGE_437=y
87CONFIG_NLS_ASCII=y 115CONFIG_NLS_ASCII=y
88CONFIG_NLS_ISO8859_1=y 116CONFIG_NLS_ISO8859_1=y
89CONFIG_NLS_UTF8=y 117CONFIG_NLS_UTF8=y
118CONFIG_CRC_CCITT=y
90CONFIG_DEBUG_INFO=y 119CONFIG_DEBUG_INFO=y
91CONFIG_MAGIC_SYSRQ=y 120CONFIG_MAGIC_SYSRQ=y
92CONFIG_DEBUG_KERNEL=y 121CONFIG_DEBUG_KERNEL=y
@@ -96,7 +125,3 @@ CONFIG_DEBUG_SPINLOCK=y
96CONFIG_DEBUG_MUTEXES=y 125CONFIG_DEBUG_MUTEXES=y
97CONFIG_DEBUG_ATOMIC_SLEEP=y 126CONFIG_DEBUG_ATOMIC_SLEEP=y
98CONFIG_DEBUG_USER=y 127CONFIG_DEBUG_USER=y
99CONFIG_DEBUG_LL=y
100CONFIG_DEBUG_S3C_UART1=y
101CONFIG_EARLY_PRINTK=y
102CONFIG_CRC_CCITT=y
diff --git a/arch/arm/configs/shmobile_defconfig b/arch/arm/configs/shmobile_defconfig
index 9e5a5ade6cab..9b0efac101ab 100644
--- a/arch/arm/configs/shmobile_defconfig
+++ b/arch/arm/configs/shmobile_defconfig
@@ -8,29 +8,8 @@ CONFIG_CC_OPTIMIZE_FOR_SIZE=y
8CONFIG_PERF_EVENTS=y 8CONFIG_PERF_EVENTS=y
9CONFIG_SLAB=y 9CONFIG_SLAB=y
10CONFIG_ARCH_RENESAS=y 10CONFIG_ARCH_RENESAS=y
11CONFIG_ARCH_EMEV2=y
12CONFIG_ARCH_R7S72100=y
13CONFIG_ARCH_R8A73A4=y
14CONFIG_ARCH_R8A7740=y
15CONFIG_ARCH_R8A7743=y
16CONFIG_ARCH_R8A7744=y
17CONFIG_ARCH_R8A7745=y
18CONFIG_ARCH_R8A77470=y
19CONFIG_ARCH_R8A7778=y
20CONFIG_ARCH_R8A7779=y
21CONFIG_ARCH_R8A7790=y
22CONFIG_ARCH_R8A7791=y
23CONFIG_ARCH_R8A7792=y
24CONFIG_ARCH_R8A7793=y
25CONFIG_ARCH_R8A7794=y
26CONFIG_ARCH_R9A06G032=y
27CONFIG_ARCH_SH73A0=y
28CONFIG_PL310_ERRATA_588369=y 11CONFIG_PL310_ERRATA_588369=y
29CONFIG_ARM_ERRATA_754322=y 12CONFIG_ARM_ERRATA_754322=y
30CONFIG_PCI=y
31CONFIG_PCI_MSI=y
32CONFIG_PCI_RCAR_GEN2=y
33CONFIG_PCIE_RCAR=y
34CONFIG_SMP=y 13CONFIG_SMP=y
35CONFIG_SCHED_MC=y 14CONFIG_SCHED_MC=y
36CONFIG_NR_CPUS=8 15CONFIG_NR_CPUS=8
@@ -58,6 +37,10 @@ CONFIG_IP_PNP=y
58CONFIG_IP_PNP_DHCP=y 37CONFIG_IP_PNP_DHCP=y
59CONFIG_CAN=y 38CONFIG_CAN=y
60CONFIG_CAN_RCAR=y 39CONFIG_CAN_RCAR=y
40CONFIG_PCI=y
41CONFIG_PCI_MSI=y
42CONFIG_PCI_RCAR_GEN2=y
43CONFIG_PCIE_RCAR=y
61CONFIG_DEVTMPFS=y 44CONFIG_DEVTMPFS=y
62CONFIG_DEVTMPFS_MOUNT=y 45CONFIG_DEVTMPFS_MOUNT=y
63CONFIG_DMA_CMA=y 46CONFIG_DMA_CMA=y
@@ -91,7 +74,6 @@ CONFIG_SERIAL_8250_DW=y
91CONFIG_SERIAL_8250_EM=y 74CONFIG_SERIAL_8250_EM=y
92CONFIG_SERIAL_SH_SCI=y 75CONFIG_SERIAL_SH_SCI=y
93CONFIG_I2C_CHARDEV=y 76CONFIG_I2C_CHARDEV=y
94CONFIG_I2C_MUX=y
95CONFIG_I2C_DEMUX_PINCTRL=y 77CONFIG_I2C_DEMUX_PINCTRL=y
96CONFIG_I2C_EMEV2=y 78CONFIG_I2C_EMEV2=y
97CONFIG_I2C_GPIO=y 79CONFIG_I2C_GPIO=y
@@ -104,6 +86,7 @@ CONFIG_SPI_RSPI=y
104CONFIG_SPI_SH_MSIOF=y 86CONFIG_SPI_SH_MSIOF=y
105CONFIG_SPI_SH_HSPI=y 87CONFIG_SPI_SH_HSPI=y
106CONFIG_PINCTRL_RZA1=y 88CONFIG_PINCTRL_RZA1=y
89CONFIG_PINCTRL_RZA2=y
107CONFIG_GPIO_EM=y 90CONFIG_GPIO_EM=y
108CONFIG_GPIO_RCAR=y 91CONFIG_GPIO_RCAR=y
109CONFIG_GPIO_PCF857X=y 92CONFIG_GPIO_PCF857X=y
@@ -177,17 +160,35 @@ CONFIG_LEDS_CLASS=y
177CONFIG_LEDS_GPIO=y 160CONFIG_LEDS_GPIO=y
178CONFIG_RTC_CLASS=y 161CONFIG_RTC_CLASS=y
179CONFIG_RTC_DRV_RS5C372=y 162CONFIG_RTC_DRV_RS5C372=y
163CONFIG_RTC_DRV_PCF85363=y
180CONFIG_RTC_DRV_BQ32K=y 164CONFIG_RTC_DRV_BQ32K=y
181CONFIG_RTC_DRV_S35390A=y 165CONFIG_RTC_DRV_S35390A=y
182CONFIG_RTC_DRV_RX8581=y 166CONFIG_RTC_DRV_RX8581=y
183CONFIG_RTC_DRV_DA9063=y 167CONFIG_RTC_DRV_DA9063=y
184CONFIG_DMADEVICES=y 168CONFIG_DMADEVICES=y
185CONFIG_SH_DMAE=y
186CONFIG_RCAR_DMAC=y 169CONFIG_RCAR_DMAC=y
187CONFIG_RENESAS_USB_DMAC=y 170CONFIG_RENESAS_USB_DMAC=y
188CONFIG_STAGING=y 171CONFIG_STAGING=y
189CONFIG_STAGING_BOARD=y 172CONFIG_STAGING_BOARD=y
190# CONFIG_IOMMU_SUPPORT is not set 173# CONFIG_IOMMU_SUPPORT is not set
174CONFIG_ARCH_EMEV2=y
175CONFIG_ARCH_R7S72100=y
176CONFIG_ARCH_R7S9210=y
177CONFIG_ARCH_R8A73A4=y
178CONFIG_ARCH_R8A7740=y
179CONFIG_ARCH_R8A7743=y
180CONFIG_ARCH_R8A7744=y
181CONFIG_ARCH_R8A7745=y
182CONFIG_ARCH_R8A77470=y
183CONFIG_ARCH_R8A7778=y
184CONFIG_ARCH_R8A7779=y
185CONFIG_ARCH_R8A7790=y
186CONFIG_ARCH_R8A7791=y
187CONFIG_ARCH_R8A7792=y
188CONFIG_ARCH_R8A7793=y
189CONFIG_ARCH_R8A7794=y
190CONFIG_ARCH_R9A06G032=y
191CONFIG_ARCH_SH73A0=y
191CONFIG_IIO=y 192CONFIG_IIO=y
192CONFIG_AK8975=y 193CONFIG_AK8975=y
193CONFIG_PWM=y 194CONFIG_PWM=y
@@ -211,4 +212,3 @@ CONFIG_NLS_ISO8859_1=y
211CONFIG_PRINTK_TIME=y 212CONFIG_PRINTK_TIME=y
212# CONFIG_ENABLE_MUST_CHECK is not set 213# CONFIG_ENABLE_MUST_CHECK is not set
213CONFIG_DEBUG_KERNEL=y 214CONFIG_DEBUG_KERNEL=y
214# CONFIG_ARM_UNWIND is not set
diff --git a/arch/arm/configs/socfpga_defconfig b/arch/arm/configs/socfpga_defconfig
index 371fca4e1ab7..08d1b3e11d68 100644
--- a/arch/arm/configs/socfpga_defconfig
+++ b/arch/arm/configs/socfpga_defconfig
@@ -9,27 +9,20 @@ CONFIG_NAMESPACES=y
9CONFIG_BLK_DEV_INITRD=y 9CONFIG_BLK_DEV_INITRD=y
10CONFIG_EMBEDDED=y 10CONFIG_EMBEDDED=y
11CONFIG_PROFILING=y 11CONFIG_PROFILING=y
12CONFIG_OPROFILE=y
13CONFIG_MODULES=y
14CONFIG_MODULE_UNLOAD=y
15# CONFIG_LBDAF is not set
16# CONFIG_BLK_DEV_BSG is not set
17# CONFIG_IOSCHED_DEADLINE is not set
18# CONFIG_IOSCHED_CFQ is not set
19CONFIG_ARCH_SOCFPGA=y 12CONFIG_ARCH_SOCFPGA=y
20CONFIG_ARM_THUMBEE=y 13CONFIG_ARM_THUMBEE=y
21CONFIG_PCI=y
22CONFIG_PCI_MSI=y
23CONFIG_PCIE_ALTERA=y
24CONFIG_PCIE_ALTERA_MSI=y
25CONFIG_SMP=y 14CONFIG_SMP=y
26CONFIG_NR_CPUS=2 15CONFIG_NR_CPUS=2
27CONFIG_AEABI=y
28CONFIG_HIGHMEM=y 16CONFIG_HIGHMEM=y
29CONFIG_ZBOOT_ROM_TEXT=0x0 17CONFIG_ZBOOT_ROM_TEXT=0x0
30CONFIG_ZBOOT_ROM_BSS=0x0 18CONFIG_ZBOOT_ROM_BSS=0x0
31CONFIG_VFP=y 19CONFIG_VFP=y
32CONFIG_NEON=y 20CONFIG_NEON=y
21CONFIG_OPROFILE=y
22CONFIG_MODULES=y
23CONFIG_MODULE_UNLOAD=y
24# CONFIG_LBDAF is not set
25# CONFIG_BLK_DEV_BSG is not set
33CONFIG_NET=y 26CONFIG_NET=y
34CONFIG_PACKET=y 27CONFIG_PACKET=y
35CONFIG_UNIX=y 28CONFIG_UNIX=y
@@ -48,6 +41,10 @@ CONFIG_CAN=y
48CONFIG_CAN_C_CAN=y 41CONFIG_CAN_C_CAN=y
49CONFIG_CAN_C_CAN_PLATFORM=y 42CONFIG_CAN_C_CAN_PLATFORM=y
50CONFIG_CAN_DEBUG_DEVICES=y 43CONFIG_CAN_DEBUG_DEVICES=y
44CONFIG_PCI=y
45CONFIG_PCI_MSI=y
46CONFIG_PCIE_ALTERA=y
47CONFIG_PCIE_ALTERA_MSI=y
51CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 48CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
52CONFIG_DEVTMPFS=y 49CONFIG_DEVTMPFS=y
53CONFIG_DEVTMPFS_MOUNT=y 50CONFIG_DEVTMPFS_MOUNT=y
@@ -60,7 +57,7 @@ CONFIG_MTD_SPI_NOR=y
60# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set 57# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set
61CONFIG_SPI_CADENCE_QUADSPI=y 58CONFIG_SPI_CADENCE_QUADSPI=y
62CONFIG_OF_OVERLAY=y 59CONFIG_OF_OVERLAY=y
63CONFIG_OF_CONFIGFS=y 60CONFIG_BLK_DEV_LOOP=y
64CONFIG_BLK_DEV_RAM=y 61CONFIG_BLK_DEV_RAM=y
65CONFIG_BLK_DEV_RAM_COUNT=2 62CONFIG_BLK_DEV_RAM_COUNT=2
66CONFIG_BLK_DEV_RAM_SIZE=8192 63CONFIG_BLK_DEV_RAM_SIZE=8192
@@ -131,12 +128,12 @@ CONFIG_DMADEVICES=y
131CONFIG_PL330_DMA=y 128CONFIG_PL330_DMA=y
132CONFIG_DMATEST=m 129CONFIG_DMATEST=m
133CONFIG_FPGA=y 130CONFIG_FPGA=y
134CONFIG_FPGA_REGION=y
135CONFIG_FPGA_MGR_SOCFPGA=y 131CONFIG_FPGA_MGR_SOCFPGA=y
136CONFIG_FPGA_MGR_SOCFPGA_A10=y 132CONFIG_FPGA_MGR_SOCFPGA_A10=y
137CONFIG_FPGA_BRIDGE=y 133CONFIG_FPGA_BRIDGE=y
138CONFIG_SOCFPGA_FPGA_BRIDGE=y 134CONFIG_SOCFPGA_FPGA_BRIDGE=y
139CONFIG_ALTERA_FREEZE_BRIDGE=y 135CONFIG_ALTERA_FREEZE_BRIDGE=y
136CONFIG_FPGA_REGION=y
140CONFIG_EXT2_FS=y 137CONFIG_EXT2_FS=y
141CONFIG_EXT2_FS_XATTR=y 138CONFIG_EXT2_FS_XATTR=y
142CONFIG_EXT2_FS_POSIX_ACL=y 139CONFIG_EXT2_FS_POSIX_ACL=y
diff --git a/arch/arm/configs/spear3xx_defconfig b/arch/arm/configs/spear3xx_defconfig
index 2c5e8df33191..f1b52fb3461b 100644
--- a/arch/arm/configs/spear3xx_defconfig
+++ b/arch/arm/configs/spear3xx_defconfig
@@ -52,8 +52,10 @@ CONFIG_GPIO_PL061=y
52# CONFIG_HWMON is not set 52# CONFIG_HWMON is not set
53CONFIG_WATCHDOG=y 53CONFIG_WATCHDOG=y
54CONFIG_ARM_SP805_WATCHDOG=y 54CONFIG_ARM_SP805_WATCHDOG=y
55CONFIG_FB=y 55CONFIG_DRM=y
56CONFIG_FB_ARMCLCD=y 56CONFIG_DRM_PL111=y
57CONFIG_BACKLIGHT_LCD_SUPPORT=y
58CONFIG_BACKLIGHT_CLASS_DEVICE=y
57CONFIG_USB=y 59CONFIG_USB=y
58CONFIG_USB_EHCI_HCD=y 60CONFIG_USB_EHCI_HCD=y
59CONFIG_USB_OHCI_HCD=y 61CONFIG_USB_OHCI_HCD=y
diff --git a/arch/arm/configs/stm32_defconfig b/arch/arm/configs/stm32_defconfig
index ba805b757a8d..0258ba891376 100644
--- a/arch/arm/configs/stm32_defconfig
+++ b/arch/arm/configs/stm32_defconfig
@@ -80,7 +80,6 @@ CONFIG_EXT3_FS=y
80CONFIG_NLS=y 80CONFIG_NLS=y
81CONFIG_PRINTK_TIME=y 81CONFIG_PRINTK_TIME=y
82CONFIG_DEBUG_INFO=y 82CONFIG_DEBUG_INFO=y
83# CONFIG_ENABLE_WARN_DEPRECATED is not set
84# CONFIG_ENABLE_MUST_CHECK is not set 83# CONFIG_ENABLE_MUST_CHECK is not set
85CONFIG_MAGIC_SYSRQ=y 84CONFIG_MAGIC_SYSRQ=y
86# CONFIG_SCHED_DEBUG is not set 85# CONFIG_SCHED_DEBUG is not set
diff --git a/arch/arm/crypto/aes-ce-core.S b/arch/arm/crypto/aes-ce-core.S
index ba8e6a32fdc9..bc53bcaa772e 100644
--- a/arch/arm/crypto/aes-ce-core.S
+++ b/arch/arm/crypto/aes-ce-core.S
@@ -317,25 +317,27 @@ ENTRY(ce_aes_ctr_encrypt)
317.Lctrloop: 317.Lctrloop:
318 vmov q0, q6 318 vmov q0, q6
319 bl aes_encrypt 319 bl aes_encrypt
320 subs r4, r4, #1
321 bmi .Lctrtailblock @ blocks < 0 means tail block
322 vld1.8 {q3}, [r1]!
323 veor q3, q0, q3
324 vst1.8 {q3}, [r0]!
325 320
326 adds r6, r6, #1 @ increment BE ctr 321 adds r6, r6, #1 @ increment BE ctr
327 rev ip, r6 322 rev ip, r6
328 vmov s27, ip 323 vmov s27, ip
329 bcs .Lctrcarry 324 bcs .Lctrcarry
330 teq r4, #0 325
326.Lctrcarrydone:
327 subs r4, r4, #1
328 bmi .Lctrtailblock @ blocks < 0 means tail block
329 vld1.8 {q3}, [r1]!
330 veor q3, q0, q3
331 vst1.8 {q3}, [r0]!
331 bne .Lctrloop 332 bne .Lctrloop
333
332.Lctrout: 334.Lctrout:
333 vst1.8 {q6}, [r5] 335 vst1.8 {q6}, [r5] @ return next CTR value
334 pop {r4-r6, pc} 336 pop {r4-r6, pc}
335 337
336.Lctrtailblock: 338.Lctrtailblock:
337 vst1.8 {q0}, [r0, :64] @ return just the key stream 339 vst1.8 {q0}, [r0, :64] @ return the key stream
338 pop {r4-r6, pc} 340 b .Lctrout
339 341
340.Lctrcarry: 342.Lctrcarry:
341 .irp sreg, s26, s25, s24 343 .irp sreg, s26, s25, s24
@@ -344,11 +346,9 @@ ENTRY(ce_aes_ctr_encrypt)
344 adds ip, ip, #1 346 adds ip, ip, #1
345 rev ip, ip 347 rev ip, ip
346 vmov \sreg, ip 348 vmov \sreg, ip
347 bcc 0f 349 bcc .Lctrcarrydone
348 .endr 350 .endr
3490: teq r4, #0 351 b .Lctrcarrydone
350 beq .Lctrout
351 b .Lctrloop
352ENDPROC(ce_aes_ctr_encrypt) 352ENDPROC(ce_aes_ctr_encrypt)
353 353
354 /* 354 /*
diff --git a/arch/arm/crypto/crct10dif-ce-core.S b/arch/arm/crypto/crct10dif-ce-core.S
index ce45ba0c0687..86be258a803f 100644
--- a/arch/arm/crypto/crct10dif-ce-core.S
+++ b/arch/arm/crypto/crct10dif-ce-core.S
@@ -2,12 +2,14 @@
2// Accelerated CRC-T10DIF using ARM NEON and Crypto Extensions instructions 2// Accelerated CRC-T10DIF using ARM NEON and Crypto Extensions instructions
3// 3//
4// Copyright (C) 2016 Linaro Ltd <ard.biesheuvel@linaro.org> 4// Copyright (C) 2016 Linaro Ltd <ard.biesheuvel@linaro.org>
5// Copyright (C) 2019 Google LLC <ebiggers@google.com>
5// 6//
6// This program is free software; you can redistribute it and/or modify 7// This program is free software; you can redistribute it and/or modify
7// it under the terms of the GNU General Public License version 2 as 8// it under the terms of the GNU General Public License version 2 as
8// published by the Free Software Foundation. 9// published by the Free Software Foundation.
9// 10//
10 11
12// Derived from the x86 version:
11// 13//
12// Implement fast CRC-T10DIF computation with SSE and PCLMULQDQ instructions 14// Implement fast CRC-T10DIF computation with SSE and PCLMULQDQ instructions
13// 15//
@@ -54,19 +56,11 @@
54// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 56// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
55// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 57// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
56// 58//
57// Function API:
58// UINT16 crc_t10dif_pcl(
59// UINT16 init_crc, //initial CRC value, 16 bits
60// const unsigned char *buf, //buffer pointer to calculate CRC on
61// UINT64 len //buffer length in bytes (64-bit data)
62// );
63//
64// Reference paper titled "Fast CRC Computation for Generic 59// Reference paper titled "Fast CRC Computation for Generic
65// Polynomials Using PCLMULQDQ Instruction" 60// Polynomials Using PCLMULQDQ Instruction"
66// URL: http://www.intel.com/content/dam/www/public/us/en/documents 61// URL: http://www.intel.com/content/dam/www/public/us/en/documents
67// /white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf 62// /white-papers/fast-crc-computation-generic-polynomials-pclmulqdq-paper.pdf
68// 63//
69//
70 64
71#include <linux/linkage.h> 65#include <linux/linkage.h>
72#include <asm/assembler.h> 66#include <asm/assembler.h>
@@ -78,13 +72,14 @@
78#endif 72#endif
79 73
80 .text 74 .text
75 .arch armv7-a
81 .fpu crypto-neon-fp-armv8 76 .fpu crypto-neon-fp-armv8
82 77
83 arg1_low32 .req r0 78 init_crc .req r0
84 arg2 .req r1 79 buf .req r1
85 arg3 .req r2 80 len .req r2
86 81
87 qzr .req q13 82 fold_consts_ptr .req ip
88 83
89 q0l .req d0 84 q0l .req d0
90 q0h .req d1 85 q0h .req d1
@@ -102,82 +97,35 @@
102 q6h .req d13 97 q6h .req d13
103 q7l .req d14 98 q7l .req d14
104 q7h .req d15 99 q7h .req d15
105 100 q8l .req d16
106ENTRY(crc_t10dif_pmull) 101 q8h .req d17
107 vmov.i8 qzr, #0 // init zero register 102 q9l .req d18
108 103 q9h .req d19
109 // adjust the 16-bit initial_crc value, scale it to 32 bits 104 q10l .req d20
110 lsl arg1_low32, arg1_low32, #16 105 q10h .req d21
111 106 q11l .req d22
112 // check if smaller than 256 107 q11h .req d23
113 cmp arg3, #256 108 q12l .req d24
114 109 q12h .req d25
115 // for sizes less than 128, we can't fold 64B at a time... 110
116 blt _less_than_128 111 FOLD_CONSTS .req q10
117 112 FOLD_CONST_L .req q10l
118 // load the initial crc value 113 FOLD_CONST_H .req q10h
119 // crc value does not need to be byte-reflected, but it needs 114
120 // to be moved to the high part of the register. 115 // Fold reg1, reg2 into the next 32 data bytes, storing the result back
121 // because data will be byte-reflected and will align with 116 // into reg1, reg2.
122 // initial crc at correct place. 117 .macro fold_32_bytes, reg1, reg2
123 vmov s0, arg1_low32 // initial crc 118 vld1.64 {q11-q12}, [buf]!
124 vext.8 q10, qzr, q0, #4 119
125 120 vmull.p64 q8, \reg1\()h, FOLD_CONST_H
126 // receive the initial 64B data, xor the initial crc value 121 vmull.p64 \reg1, \reg1\()l, FOLD_CONST_L
127 vld1.64 {q0-q1}, [arg2, :128]! 122 vmull.p64 q9, \reg2\()h, FOLD_CONST_H
128 vld1.64 {q2-q3}, [arg2, :128]! 123 vmull.p64 \reg2, \reg2\()l, FOLD_CONST_L
129 vld1.64 {q4-q5}, [arg2, :128]! 124
130 vld1.64 {q6-q7}, [arg2, :128]! 125CPU_LE( vrev64.8 q11, q11 )
131CPU_LE( vrev64.8 q0, q0 ) 126CPU_LE( vrev64.8 q12, q12 )
132CPU_LE( vrev64.8 q1, q1 ) 127 vswp q11l, q11h
133CPU_LE( vrev64.8 q2, q2 ) 128 vswp q12l, q12h
134CPU_LE( vrev64.8 q3, q3 )
135CPU_LE( vrev64.8 q4, q4 )
136CPU_LE( vrev64.8 q5, q5 )
137CPU_LE( vrev64.8 q6, q6 )
138CPU_LE( vrev64.8 q7, q7 )
139
140 vswp d0, d1
141 vswp d2, d3
142 vswp d4, d5
143 vswp d6, d7
144 vswp d8, d9
145 vswp d10, d11
146 vswp d12, d13
147 vswp d14, d15
148
149 // XOR the initial_crc value
150 veor.8 q0, q0, q10
151
152 adr ip, rk3
153 vld1.64 {q10}, [ip, :128] // xmm10 has rk3 and rk4
154
155 //
156 // we subtract 256 instead of 128 to save one instruction from the loop
157 //
158 sub arg3, arg3, #256
159
160 // at this section of the code, there is 64*x+y (0<=y<64) bytes of
161 // buffer. The _fold_64_B_loop will fold 64B at a time
162 // until we have 64+y Bytes of buffer
163
164
165 // fold 64B at a time. This section of the code folds 4 vector
166 // registers in parallel
167_fold_64_B_loop:
168
169 .macro fold64, reg1, reg2
170 vld1.64 {q11-q12}, [arg2, :128]!
171
172 vmull.p64 q8, \reg1\()h, d21
173 vmull.p64 \reg1, \reg1\()l, d20
174 vmull.p64 q9, \reg2\()h, d21
175 vmull.p64 \reg2, \reg2\()l, d20
176
177CPU_LE( vrev64.8 q11, q11 )
178CPU_LE( vrev64.8 q12, q12 )
179 vswp d22, d23
180 vswp d24, d25
181 129
182 veor.8 \reg1, \reg1, q8 130 veor.8 \reg1, \reg1, q8
183 veor.8 \reg2, \reg2, q9 131 veor.8 \reg2, \reg2, q9
@@ -185,242 +133,248 @@ CPU_LE( vrev64.8 q12, q12 )
185 veor.8 \reg2, \reg2, q12 133 veor.8 \reg2, \reg2, q12
186 .endm 134 .endm
187 135
188 fold64 q0, q1 136 // Fold src_reg into dst_reg, optionally loading the next fold constants
189 fold64 q2, q3 137 .macro fold_16_bytes, src_reg, dst_reg, load_next_consts
190 fold64 q4, q5 138 vmull.p64 q8, \src_reg\()l, FOLD_CONST_L
191 fold64 q6, q7 139 vmull.p64 \src_reg, \src_reg\()h, FOLD_CONST_H
192 140 .ifnb \load_next_consts
193 subs arg3, arg3, #128 141 vld1.64 {FOLD_CONSTS}, [fold_consts_ptr, :128]!
194
195 // check if there is another 64B in the buffer to be able to fold
196 bge _fold_64_B_loop
197
198 // at this point, the buffer pointer is pointing at the last y Bytes
199 // of the buffer the 64B of folded data is in 4 of the vector
200 // registers: v0, v1, v2, v3
201
202 // fold the 8 vector registers to 1 vector register with different
203 // constants
204
205 adr ip, rk9
206 vld1.64 {q10}, [ip, :128]!
207
208 .macro fold16, reg, rk
209 vmull.p64 q8, \reg\()l, d20
210 vmull.p64 \reg, \reg\()h, d21
211 .ifnb \rk
212 vld1.64 {q10}, [ip, :128]!
213 .endif 142 .endif
214 veor.8 q7, q7, q8 143 veor.8 \dst_reg, \dst_reg, q8
215 veor.8 q7, q7, \reg 144 veor.8 \dst_reg, \dst_reg, \src_reg
216 .endm 145 .endm
217 146
218 fold16 q0, rk11 147 .macro __adrl, out, sym
219 fold16 q1, rk13 148 movw \out, #:lower16:\sym
220 fold16 q2, rk15 149 movt \out, #:upper16:\sym
221 fold16 q3, rk17 150 .endm
222 fold16 q4, rk19
223 fold16 q5, rk1
224 fold16 q6
225
226 // instead of 64, we add 48 to the loop counter to save 1 instruction
227 // from the loop instead of a cmp instruction, we use the negative
228 // flag with the jl instruction
229 adds arg3, arg3, #(128-16)
230 blt _final_reduction_for_128
231
232 // now we have 16+y bytes left to reduce. 16 Bytes is in register v7
233 // and the rest is in memory. We can fold 16 bytes at a time if y>=16
234 // continue folding 16B at a time
235
236_16B_reduction_loop:
237 vmull.p64 q8, d14, d20
238 vmull.p64 q7, d15, d21
239 veor.8 q7, q7, q8
240 151
241 vld1.64 {q0}, [arg2, :128]! 152//
242CPU_LE( vrev64.8 q0, q0 ) 153// u16 crc_t10dif_pmull(u16 init_crc, const u8 *buf, size_t len);
243 vswp d0, d1 154//
244 veor.8 q7, q7, q0 155// Assumes len >= 16.
245 subs arg3, arg3, #16 156//
246 157ENTRY(crc_t10dif_pmull)
247 // instead of a cmp instruction, we utilize the flags with the 158
248 // jge instruction equivalent of: cmp arg3, 16-16 159 // For sizes less than 256 bytes, we can't fold 128 bytes at a time.
249 // check if there is any more 16B in the buffer to be able to fold 160 cmp len, #256
250 bge _16B_reduction_loop 161 blt .Lless_than_256_bytes
251 162
252 // now we have 16+z bytes left to reduce, where 0<= z < 16. 163 __adrl fold_consts_ptr, .Lfold_across_128_bytes_consts
253 // first, we reduce the data in the xmm7 register 164
254 165 // Load the first 128 data bytes. Byte swapping is necessary to make
255_final_reduction_for_128: 166 // the bit order match the polynomial coefficient order.
256 // check if any more data to fold. If not, compute the CRC of 167 vld1.64 {q0-q1}, [buf]!
257 // the final 128 bits 168 vld1.64 {q2-q3}, [buf]!
258 adds arg3, arg3, #16 169 vld1.64 {q4-q5}, [buf]!
259 beq _128_done 170 vld1.64 {q6-q7}, [buf]!
260 171CPU_LE( vrev64.8 q0, q0 )
261 // here we are getting data that is less than 16 bytes. 172CPU_LE( vrev64.8 q1, q1 )
262 // since we know that there was data before the pointer, we can 173CPU_LE( vrev64.8 q2, q2 )
263 // offset the input pointer before the actual point, to receive 174CPU_LE( vrev64.8 q3, q3 )
264 // exactly 16 bytes. after that the registers need to be adjusted. 175CPU_LE( vrev64.8 q4, q4 )
265_get_last_two_regs: 176CPU_LE( vrev64.8 q5, q5 )
266 add arg2, arg2, arg3 177CPU_LE( vrev64.8 q6, q6 )
267 sub arg2, arg2, #16 178CPU_LE( vrev64.8 q7, q7 )
268 vld1.64 {q1}, [arg2] 179 vswp q0l, q0h
269CPU_LE( vrev64.8 q1, q1 ) 180 vswp q1l, q1h
270 vswp d2, d3 181 vswp q2l, q2h
271 182 vswp q3l, q3h
272 // get rid of the extra data that was loaded before 183 vswp q4l, q4h
273 // load the shift constant 184 vswp q5l, q5h
274 adr ip, tbl_shf_table + 16 185 vswp q6l, q6h
275 sub ip, ip, arg3 186 vswp q7l, q7h
276 vld1.8 {q0}, [ip] 187
277 188 // XOR the first 16 data *bits* with the initial CRC value.
278 // shift v2 to the left by arg3 bytes 189 vmov.i8 q8h, #0
279 vtbl.8 d4, {d14-d15}, d0 190 vmov.u16 q8h[3], init_crc
280 vtbl.8 d5, {d14-d15}, d1 191 veor q0h, q0h, q8h
281 192
282 // shift v7 to the right by 16-arg3 bytes 193 // Load the constants for folding across 128 bytes.
283 vmov.i8 q9, #0x80 194 vld1.64 {FOLD_CONSTS}, [fold_consts_ptr, :128]!
284 veor.8 q0, q0, q9 195
285 vtbl.8 d18, {d14-d15}, d0 196 // Subtract 128 for the 128 data bytes just consumed. Subtract another
286 vtbl.8 d19, {d14-d15}, d1 197 // 128 to simplify the termination condition of the following loop.
287 198 sub len, len, #256
288 // blend 199
289 vshr.s8 q0, q0, #7 // convert to 8-bit mask 200 // While >= 128 data bytes remain (not counting q0-q7), fold the 128
290 vbsl.8 q0, q2, q1 201 // bytes q0-q7 into them, storing the result back into q0-q7.
291 202.Lfold_128_bytes_loop:
292 // fold 16 Bytes 203 fold_32_bytes q0, q1
293 vmull.p64 q8, d18, d20 204 fold_32_bytes q2, q3
294 vmull.p64 q7, d19, d21 205 fold_32_bytes q4, q5
206 fold_32_bytes q6, q7
207 subs len, len, #128
208 bge .Lfold_128_bytes_loop
209
210 // Now fold the 112 bytes in q0-q6 into the 16 bytes in q7.
211
212 // Fold across 64 bytes.
213 vld1.64 {FOLD_CONSTS}, [fold_consts_ptr, :128]!
214 fold_16_bytes q0, q4
215 fold_16_bytes q1, q5
216 fold_16_bytes q2, q6
217 fold_16_bytes q3, q7, 1
218 // Fold across 32 bytes.
219 fold_16_bytes q4, q6
220 fold_16_bytes q5, q7, 1
221 // Fold across 16 bytes.
222 fold_16_bytes q6, q7
223
224 // Add 128 to get the correct number of data bytes remaining in 0...127
225 // (not counting q7), following the previous extra subtraction by 128.
226 // Then subtract 16 to simplify the termination condition of the
227 // following loop.
228 adds len, len, #(128-16)
229
230 // While >= 16 data bytes remain (not counting q7), fold the 16 bytes q7
231 // into them, storing the result back into q7.
232 blt .Lfold_16_bytes_loop_done
233.Lfold_16_bytes_loop:
234 vmull.p64 q8, q7l, FOLD_CONST_L
235 vmull.p64 q7, q7h, FOLD_CONST_H
295 veor.8 q7, q7, q8 236 veor.8 q7, q7, q8
237 vld1.64 {q0}, [buf]!
238CPU_LE( vrev64.8 q0, q0 )
239 vswp q0l, q0h
296 veor.8 q7, q7, q0 240 veor.8 q7, q7, q0
297 241 subs len, len, #16
298_128_done: 242 bge .Lfold_16_bytes_loop
299 // compute crc of a 128-bit value 243
300 vldr d20, rk5 244.Lfold_16_bytes_loop_done:
301 vldr d21, rk6 // rk5 and rk6 in xmm10 245 // Add 16 to get the correct number of data bytes remaining in 0...15
302 246 // (not counting q7), following the previous extra subtraction by 16.
303 // 64b fold 247 adds len, len, #16
304 vext.8 q0, qzr, q7, #8 248 beq .Lreduce_final_16_bytes
305 vmull.p64 q7, d15, d20 249
250.Lhandle_partial_segment:
251 // Reduce the last '16 + len' bytes where 1 <= len <= 15 and the first
252 // 16 bytes are in q7 and the rest are the remaining data in 'buf'. To
253 // do this without needing a fold constant for each possible 'len',
254 // redivide the bytes into a first chunk of 'len' bytes and a second
255 // chunk of 16 bytes, then fold the first chunk into the second.
256
257 // q0 = last 16 original data bytes
258 add buf, buf, len
259 sub buf, buf, #16
260 vld1.64 {q0}, [buf]
261CPU_LE( vrev64.8 q0, q0 )
262 vswp q0l, q0h
263
264 // q1 = high order part of second chunk: q7 left-shifted by 'len' bytes.
265 __adrl r3, .Lbyteshift_table + 16
266 sub r3, r3, len
267 vld1.8 {q2}, [r3]
268 vtbl.8 q1l, {q7l-q7h}, q2l
269 vtbl.8 q1h, {q7l-q7h}, q2h
270
271 // q3 = first chunk: q7 right-shifted by '16-len' bytes.
272 vmov.i8 q3, #0x80
273 veor.8 q2, q2, q3
274 vtbl.8 q3l, {q7l-q7h}, q2l
275 vtbl.8 q3h, {q7l-q7h}, q2h
276
277 // Convert to 8-bit masks: 'len' 0x00 bytes, then '16-len' 0xff bytes.
278 vshr.s8 q2, q2, #7
279
280 // q2 = second chunk: 'len' bytes from q0 (low-order bytes),
281 // then '16-len' bytes from q1 (high-order bytes).
282 vbsl.8 q2, q1, q0
283
284 // Fold the first chunk into the second chunk, storing the result in q7.
285 vmull.p64 q0, q3l, FOLD_CONST_L
286 vmull.p64 q7, q3h, FOLD_CONST_H
306 veor.8 q7, q7, q0 287 veor.8 q7, q7, q0
288 veor.8 q7, q7, q2
289
290.Lreduce_final_16_bytes:
291 // Reduce the 128-bit value M(x), stored in q7, to the final 16-bit CRC.
292
293 // Load 'x^48 * (x^48 mod G(x))' and 'x^48 * (x^80 mod G(x))'.
294 vld1.64 {FOLD_CONSTS}, [fold_consts_ptr, :128]!
295
296 // Fold the high 64 bits into the low 64 bits, while also multiplying by
297 // x^64. This produces a 128-bit value congruent to x^64 * M(x) and
298 // whose low 48 bits are 0.
299 vmull.p64 q0, q7h, FOLD_CONST_H // high bits * x^48 * (x^80 mod G(x))
300 veor.8 q0h, q0h, q7l // + low bits * x^64
301
302 // Fold the high 32 bits into the low 96 bits. This produces a 96-bit
303 // value congruent to x^64 * M(x) and whose low 48 bits are 0.
304 vmov.i8 q1, #0
305 vmov s4, s3 // extract high 32 bits
306 vmov s3, s5 // zero high 32 bits
307 vmull.p64 q1, q1l, FOLD_CONST_L // high 32 bits * x^48 * (x^48 mod G(x))
308 veor.8 q0, q0, q1 // + low bits
309
310 // Load G(x) and floor(x^48 / G(x)).
311 vld1.64 {FOLD_CONSTS}, [fold_consts_ptr, :128]
312
313 // Use Barrett reduction to compute the final CRC value.
314 vmull.p64 q1, q0h, FOLD_CONST_H // high 32 bits * floor(x^48 / G(x))
315 vshr.u64 q1l, q1l, #32 // /= x^32
316 vmull.p64 q1, q1l, FOLD_CONST_L // *= G(x)
317 vshr.u64 q0l, q0l, #48
318 veor.8 q0l, q0l, q1l // + low 16 nonzero bits
319 // Final CRC value (x^16 * M(x)) mod G(x) is in low 16 bits of q0.
320
321 vmov.u16 r0, q0l[0]
322 bx lr
307 323
308 // 32b fold 324.Lless_than_256_bytes:
309 vext.8 q0, q7, qzr, #12 325 // Checksumming a buffer of length 16...255 bytes
310 vmov s31, s3
311 vmull.p64 q0, d0, d21
312 veor.8 q7, q0, q7
313
314 // barrett reduction
315_barrett:
316 vldr d20, rk7
317 vldr d21, rk8
318
319 vmull.p64 q0, d15, d20
320 vext.8 q0, qzr, q0, #12
321 vmull.p64 q0, d1, d21
322 vext.8 q0, qzr, q0, #12
323 veor.8 q7, q7, q0
324 vmov r0, s29
325 326
326_cleanup: 327 __adrl fold_consts_ptr, .Lfold_across_16_bytes_consts
327 // scale the result back to 16 bits
328 lsr r0, r0, #16
329 bx lr
330 328
331_less_than_128: 329 // Load the first 16 data bytes.
332 teq arg3, #0 330 vld1.64 {q7}, [buf]!
333 beq _cleanup 331CPU_LE( vrev64.8 q7, q7 )
332 vswp q7l, q7h
334 333
335 vmov.i8 q0, #0 334 // XOR the first 16 data *bits* with the initial CRC value.
336 vmov s3, arg1_low32 // get the initial crc value 335 vmov.i8 q0h, #0
336 vmov.u16 q0h[3], init_crc
337 veor.8 q7h, q7h, q0h
337 338
338 vld1.64 {q7}, [arg2, :128]! 339 // Load the fold-across-16-bytes constants.
339CPU_LE( vrev64.8 q7, q7 ) 340 vld1.64 {FOLD_CONSTS}, [fold_consts_ptr, :128]!
340 vswp d14, d15
341 veor.8 q7, q7, q0
342 341
343 cmp arg3, #16 342 cmp len, #16
344 beq _128_done // exactly 16 left 343 beq .Lreduce_final_16_bytes // len == 16
345 blt _less_than_16_left 344 subs len, len, #32
346 345 addlt len, len, #16
347 // now if there is, load the constants 346 blt .Lhandle_partial_segment // 17 <= len <= 31
348 vldr d20, rk1 347 b .Lfold_16_bytes_loop // 32 <= len <= 255
349 vldr d21, rk2 // rk1 and rk2 in xmm10
350
351 // check if there is enough buffer to be able to fold 16B at a time
352 subs arg3, arg3, #32
353 addlt arg3, arg3, #16
354 blt _get_last_two_regs
355 b _16B_reduction_loop
356
357_less_than_16_left:
358 // shl r9, 4
359 adr ip, tbl_shf_table + 16
360 sub ip, ip, arg3
361 vld1.8 {q0}, [ip]
362 vmov.i8 q9, #0x80
363 veor.8 q0, q0, q9
364 vtbl.8 d18, {d14-d15}, d0
365 vtbl.8 d15, {d14-d15}, d1
366 vmov d14, d18
367 b _128_done
368ENDPROC(crc_t10dif_pmull) 348ENDPROC(crc_t10dif_pmull)
369 349
370// precomputed constants 350 .section ".rodata", "a"
371// these constants are precomputed from the poly:
372// 0x8bb70000 (0x8bb7 scaled to 32 bits)
373 .align 4 351 .align 4
374// Q = 0x18BB70000
375// rk1 = 2^(32*3) mod Q << 32
376// rk2 = 2^(32*5) mod Q << 32
377// rk3 = 2^(32*15) mod Q << 32
378// rk4 = 2^(32*17) mod Q << 32
379// rk5 = 2^(32*3) mod Q << 32
380// rk6 = 2^(32*2) mod Q << 32
381// rk7 = floor(2^64/Q)
382// rk8 = Q
383
384rk3: .quad 0x9d9d000000000000
385rk4: .quad 0x7cf5000000000000
386rk5: .quad 0x2d56000000000000
387rk6: .quad 0x1368000000000000
388rk7: .quad 0x00000001f65a57f8
389rk8: .quad 0x000000018bb70000
390rk9: .quad 0xceae000000000000
391rk10: .quad 0xbfd6000000000000
392rk11: .quad 0x1e16000000000000
393rk12: .quad 0x713c000000000000
394rk13: .quad 0xf7f9000000000000
395rk14: .quad 0x80a6000000000000
396rk15: .quad 0x044c000000000000
397rk16: .quad 0xe658000000000000
398rk17: .quad 0xad18000000000000
399rk18: .quad 0xa497000000000000
400rk19: .quad 0x6ee3000000000000
401rk20: .quad 0xe7b5000000000000
402rk1: .quad 0x2d56000000000000
403rk2: .quad 0x06df000000000000
404
405tbl_shf_table:
406// use these values for shift constants for the tbl/tbx instruction
407// different alignments result in values as shown:
408// DDQ 0x008f8e8d8c8b8a898887868584838281 # shl 15 (16-1) / shr1
409// DDQ 0x01008f8e8d8c8b8a8988878685848382 # shl 14 (16-3) / shr2
410// DDQ 0x0201008f8e8d8c8b8a89888786858483 # shl 13 (16-4) / shr3
411// DDQ 0x030201008f8e8d8c8b8a898887868584 # shl 12 (16-4) / shr4
412// DDQ 0x04030201008f8e8d8c8b8a8988878685 # shl 11 (16-5) / shr5
413// DDQ 0x0504030201008f8e8d8c8b8a89888786 # shl 10 (16-6) / shr6
414// DDQ 0x060504030201008f8e8d8c8b8a898887 # shl 9 (16-7) / shr7
415// DDQ 0x07060504030201008f8e8d8c8b8a8988 # shl 8 (16-8) / shr8
416// DDQ 0x0807060504030201008f8e8d8c8b8a89 # shl 7 (16-9) / shr9
417// DDQ 0x090807060504030201008f8e8d8c8b8a # shl 6 (16-10) / shr10
418// DDQ 0x0a090807060504030201008f8e8d8c8b # shl 5 (16-11) / shr11
419// DDQ 0x0b0a090807060504030201008f8e8d8c # shl 4 (16-12) / shr12
420// DDQ 0x0c0b0a090807060504030201008f8e8d # shl 3 (16-13) / shr13
421// DDQ 0x0d0c0b0a090807060504030201008f8e # shl 2 (16-14) / shr14
422// DDQ 0x0e0d0c0b0a090807060504030201008f # shl 1 (16-15) / shr15
423 352
353// Fold constants precomputed from the polynomial 0x18bb7
354// G(x) = x^16 + x^15 + x^11 + x^9 + x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0
355.Lfold_across_128_bytes_consts:
356 .quad 0x0000000000006123 // x^(8*128) mod G(x)
357 .quad 0x0000000000002295 // x^(8*128+64) mod G(x)
358// .Lfold_across_64_bytes_consts:
359 .quad 0x0000000000001069 // x^(4*128) mod G(x)
360 .quad 0x000000000000dd31 // x^(4*128+64) mod G(x)
361// .Lfold_across_32_bytes_consts:
362 .quad 0x000000000000857d // x^(2*128) mod G(x)
363 .quad 0x0000000000007acc // x^(2*128+64) mod G(x)
364.Lfold_across_16_bytes_consts:
365 .quad 0x000000000000a010 // x^(1*128) mod G(x)
366 .quad 0x0000000000001faa // x^(1*128+64) mod G(x)
367// .Lfinal_fold_consts:
368 .quad 0x1368000000000000 // x^48 * (x^48 mod G(x))
369 .quad 0x2d56000000000000 // x^48 * (x^80 mod G(x))
370// .Lbarrett_reduction_consts:
371 .quad 0x0000000000018bb7 // G(x)
372 .quad 0x00000001f65a57f8 // floor(x^48 / G(x))
373
374// For 1 <= len <= 15, the 16-byte vector beginning at &byteshift_table[16 -
375// len] is the index vector to shift left by 'len' bytes, and is also {0x80,
376// ..., 0x80} XOR the index vector to shift right by '16 - len' bytes.
377.Lbyteshift_table:
424 .byte 0x0, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87 378 .byte 0x0, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87
425 .byte 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f 379 .byte 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f
426 .byte 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7 380 .byte 0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7
diff --git a/arch/arm/crypto/crct10dif-ce-glue.c b/arch/arm/crypto/crct10dif-ce-glue.c
index d428355cf38d..3d6b800b8396 100644
--- a/arch/arm/crypto/crct10dif-ce-glue.c
+++ b/arch/arm/crypto/crct10dif-ce-glue.c
@@ -21,7 +21,7 @@
21 21
22#define CRC_T10DIF_PMULL_CHUNK_SIZE 16U 22#define CRC_T10DIF_PMULL_CHUNK_SIZE 16U
23 23
24asmlinkage u16 crc_t10dif_pmull(u16 init_crc, const u8 buf[], u32 len); 24asmlinkage u16 crc_t10dif_pmull(u16 init_crc, const u8 *buf, size_t len);
25 25
26static int crct10dif_init(struct shash_desc *desc) 26static int crct10dif_init(struct shash_desc *desc)
27{ 27{
@@ -35,26 +35,15 @@ static int crct10dif_update(struct shash_desc *desc, const u8 *data,
35 unsigned int length) 35 unsigned int length)
36{ 36{
37 u16 *crc = shash_desc_ctx(desc); 37 u16 *crc = shash_desc_ctx(desc);
38 unsigned int l;
39 38
40 if (!may_use_simd()) { 39 if (length >= CRC_T10DIF_PMULL_CHUNK_SIZE && may_use_simd()) {
41 *crc = crc_t10dif_generic(*crc, data, length); 40 kernel_neon_begin();
41 *crc = crc_t10dif_pmull(*crc, data, length);
42 kernel_neon_end();
42 } else { 43 } else {
43 if (unlikely((u32)data % CRC_T10DIF_PMULL_CHUNK_SIZE)) { 44 *crc = crc_t10dif_generic(*crc, data, length);
44 l = min_t(u32, length, CRC_T10DIF_PMULL_CHUNK_SIZE -
45 ((u32)data % CRC_T10DIF_PMULL_CHUNK_SIZE));
46
47 *crc = crc_t10dif_generic(*crc, data, l);
48
49 length -= l;
50 data += l;
51 }
52 if (length > 0) {
53 kernel_neon_begin();
54 *crc = crc_t10dif_pmull(*crc, data, length);
55 kernel_neon_end();
56 }
57 } 45 }
46
58 return 0; 47 return 0;
59} 48}
60 49
diff --git a/arch/arm/crypto/sha256-armv4.pl b/arch/arm/crypto/sha256-armv4.pl
index b9ec44060ed3..a03cf4dfb781 100644
--- a/arch/arm/crypto/sha256-armv4.pl
+++ b/arch/arm/crypto/sha256-armv4.pl
@@ -212,10 +212,11 @@ K256:
212.global sha256_block_data_order 212.global sha256_block_data_order
213.type sha256_block_data_order,%function 213.type sha256_block_data_order,%function
214sha256_block_data_order: 214sha256_block_data_order:
215.Lsha256_block_data_order:
215#if __ARM_ARCH__<7 216#if __ARM_ARCH__<7
216 sub r3,pc,#8 @ sha256_block_data_order 217 sub r3,pc,#8 @ sha256_block_data_order
217#else 218#else
218 adr r3,sha256_block_data_order 219 adr r3,.Lsha256_block_data_order
219#endif 220#endif
220#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) 221#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
221 ldr r12,.LOPENSSL_armcap 222 ldr r12,.LOPENSSL_armcap
diff --git a/arch/arm/crypto/sha256-core.S_shipped b/arch/arm/crypto/sha256-core.S_shipped
index 3b58300d611c..054aae0edfce 100644
--- a/arch/arm/crypto/sha256-core.S_shipped
+++ b/arch/arm/crypto/sha256-core.S_shipped
@@ -93,10 +93,11 @@ K256:
93.global sha256_block_data_order 93.global sha256_block_data_order
94.type sha256_block_data_order,%function 94.type sha256_block_data_order,%function
95sha256_block_data_order: 95sha256_block_data_order:
96.Lsha256_block_data_order:
96#if __ARM_ARCH__<7 97#if __ARM_ARCH__<7
97 sub r3,pc,#8 @ sha256_block_data_order 98 sub r3,pc,#8 @ sha256_block_data_order
98#else 99#else
99 adr r3,sha256_block_data_order 100 adr r3,.Lsha256_block_data_order
100#endif 101#endif
101#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) 102#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
102 ldr r12,.LOPENSSL_armcap 103 ldr r12,.LOPENSSL_armcap
diff --git a/arch/arm/crypto/sha512-armv4.pl b/arch/arm/crypto/sha512-armv4.pl
index fb5d15048c0b..788c17b56ecc 100644
--- a/arch/arm/crypto/sha512-armv4.pl
+++ b/arch/arm/crypto/sha512-armv4.pl
@@ -274,10 +274,11 @@ WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817)
274.global sha512_block_data_order 274.global sha512_block_data_order
275.type sha512_block_data_order,%function 275.type sha512_block_data_order,%function
276sha512_block_data_order: 276sha512_block_data_order:
277.Lsha512_block_data_order:
277#if __ARM_ARCH__<7 278#if __ARM_ARCH__<7
278 sub r3,pc,#8 @ sha512_block_data_order 279 sub r3,pc,#8 @ sha512_block_data_order
279#else 280#else
280 adr r3,sha512_block_data_order 281 adr r3,.Lsha512_block_data_order
281#endif 282#endif
282#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) 283#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
283 ldr r12,.LOPENSSL_armcap 284 ldr r12,.LOPENSSL_armcap
diff --git a/arch/arm/crypto/sha512-core.S_shipped b/arch/arm/crypto/sha512-core.S_shipped
index b1c334a49cda..710ea309769e 100644
--- a/arch/arm/crypto/sha512-core.S_shipped
+++ b/arch/arm/crypto/sha512-core.S_shipped
@@ -141,10 +141,11 @@ WORD64(0x5fcb6fab,0x3ad6faec, 0x6c44198c,0x4a475817)
141.global sha512_block_data_order 141.global sha512_block_data_order
142.type sha512_block_data_order,%function 142.type sha512_block_data_order,%function
143sha512_block_data_order: 143sha512_block_data_order:
144.Lsha512_block_data_order:
144#if __ARM_ARCH__<7 145#if __ARM_ARCH__<7
145 sub r3,pc,#8 @ sha512_block_data_order 146 sub r3,pc,#8 @ sha512_block_data_order
146#else 147#else
147 adr r3,sha512_block_data_order 148 adr r3,.Lsha512_block_data_order
148#endif 149#endif
149#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__) 150#if __ARM_MAX_ARCH__>=7 && !defined(__KERNEL__)
150 ldr r12,.LOPENSSL_armcap 151 ldr r12,.LOPENSSL_armcap
diff --git a/arch/arm/include/asm/arch_gicv3.h b/arch/arm/include/asm/arch_gicv3.h
index 0bd530702118..d15b8c99f1b3 100644
--- a/arch/arm/include/asm/arch_gicv3.h
+++ b/arch/arm/include/asm/arch_gicv3.h
@@ -34,6 +34,7 @@
34#define ICC_SRE __ACCESS_CP15(c12, 0, c12, 5) 34#define ICC_SRE __ACCESS_CP15(c12, 0, c12, 5)
35#define ICC_IGRPEN1 __ACCESS_CP15(c12, 0, c12, 7) 35#define ICC_IGRPEN1 __ACCESS_CP15(c12, 0, c12, 7)
36#define ICC_BPR1 __ACCESS_CP15(c12, 0, c12, 3) 36#define ICC_BPR1 __ACCESS_CP15(c12, 0, c12, 3)
37#define ICC_RPR __ACCESS_CP15(c12, 0, c11, 3)
37 38
38#define __ICC_AP0Rx(x) __ACCESS_CP15(c12, 0, c8, 4 | x) 39#define __ICC_AP0Rx(x) __ACCESS_CP15(c12, 0, c8, 4 | x)
39#define ICC_AP0R0 __ICC_AP0Rx(0) 40#define ICC_AP0R0 __ICC_AP0Rx(0)
@@ -54,7 +55,7 @@
54#define ICH_VTR __ACCESS_CP15(c12, 4, c11, 1) 55#define ICH_VTR __ACCESS_CP15(c12, 4, c11, 1)
55#define ICH_MISR __ACCESS_CP15(c12, 4, c11, 2) 56#define ICH_MISR __ACCESS_CP15(c12, 4, c11, 2)
56#define ICH_EISR __ACCESS_CP15(c12, 4, c11, 3) 57#define ICH_EISR __ACCESS_CP15(c12, 4, c11, 3)
57#define ICH_ELSR __ACCESS_CP15(c12, 4, c11, 5) 58#define ICH_ELRSR __ACCESS_CP15(c12, 4, c11, 5)
58#define ICH_VMCR __ACCESS_CP15(c12, 4, c11, 7) 59#define ICH_VMCR __ACCESS_CP15(c12, 4, c11, 7)
59 60
60#define __LR0(x) __ACCESS_CP15(c12, 4, c12, x) 61#define __LR0(x) __ACCESS_CP15(c12, 4, c12, x)
@@ -151,7 +152,7 @@ CPUIF_MAP(ICH_HCR, ICH_HCR_EL2)
151CPUIF_MAP(ICH_VTR, ICH_VTR_EL2) 152CPUIF_MAP(ICH_VTR, ICH_VTR_EL2)
152CPUIF_MAP(ICH_MISR, ICH_MISR_EL2) 153CPUIF_MAP(ICH_MISR, ICH_MISR_EL2)
153CPUIF_MAP(ICH_EISR, ICH_EISR_EL2) 154CPUIF_MAP(ICH_EISR, ICH_EISR_EL2)
154CPUIF_MAP(ICH_ELSR, ICH_ELSR_EL2) 155CPUIF_MAP(ICH_ELRSR, ICH_ELRSR_EL2)
155CPUIF_MAP(ICH_VMCR, ICH_VMCR_EL2) 156CPUIF_MAP(ICH_VMCR, ICH_VMCR_EL2)
156CPUIF_MAP(ICH_AP0R3, ICH_AP0R3_EL2) 157CPUIF_MAP(ICH_AP0R3, ICH_AP0R3_EL2)
157CPUIF_MAP(ICH_AP0R2, ICH_AP0R2_EL2) 158CPUIF_MAP(ICH_AP0R2, ICH_AP0R2_EL2)
@@ -245,6 +246,21 @@ static inline void gic_write_bpr1(u32 val)
245 write_sysreg(val, ICC_BPR1); 246 write_sysreg(val, ICC_BPR1);
246} 247}
247 248
249static inline u32 gic_read_pmr(void)
250{
251 return read_sysreg(ICC_PMR);
252}
253
254static inline void gic_write_pmr(u32 val)
255{
256 write_sysreg(val, ICC_PMR);
257}
258
259static inline u32 gic_read_rpr(void)
260{
261 return read_sysreg(ICC_RPR);
262}
263
248/* 264/*
249 * Even in 32bit systems that use LPAE, there is no guarantee that the I/O 265 * Even in 32bit systems that use LPAE, there is no guarantee that the I/O
250 * interface provides true 64bit atomic accesses, so using strd/ldrd doesn't 266 * interface provides true 64bit atomic accesses, so using strd/ldrd doesn't
@@ -347,5 +363,22 @@ static inline void gits_write_vpendbaser(u64 val, void * __iomem addr)
347 363
348#define gits_read_vpendbaser(c) __gic_readq_nonatomic(c) 364#define gits_read_vpendbaser(c) __gic_readq_nonatomic(c)
349 365
366static inline bool gic_prio_masking_enabled(void)
367{
368 return false;
369}
370
371static inline void gic_pmr_mask_irqs(void)
372{
373 /* Should not get called. */
374 WARN_ON_ONCE(true);
375}
376
377static inline void gic_arch_enable_irqs(void)
378{
379 /* Should not get called. */
380 WARN_ON_ONCE(true);
381}
382
350#endif /* !__ASSEMBLY__ */ 383#endif /* !__ASSEMBLY__ */
351#endif /* !__ASM_ARCH_GICV3_H */ 384#endif /* !__ASM_ARCH_GICV3_H */
diff --git a/arch/arm/include/asm/assembler.h b/arch/arm/include/asm/assembler.h
index 28a48e0d4cca..b59921a560da 100644
--- a/arch/arm/include/asm/assembler.h
+++ b/arch/arm/include/asm/assembler.h
@@ -376,9 +376,9 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
376 .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER() 376 .macro usraccoff, instr, reg, ptr, inc, off, cond, abort, t=TUSER()
3779999: 3779999:
378 .if \inc == 1 378 .if \inc == 1
379 \instr\cond\()b\()\t\().w \reg, [\ptr, #\off] 379 \instr\()b\t\cond\().w \reg, [\ptr, #\off]
380 .elseif \inc == 4 380 .elseif \inc == 4
381 \instr\cond\()\t\().w \reg, [\ptr, #\off] 381 \instr\t\cond\().w \reg, [\ptr, #\off]
382 .else 382 .else
383 .error "Unsupported inc macro argument" 383 .error "Unsupported inc macro argument"
384 .endif 384 .endif
@@ -417,9 +417,9 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
417 .rept \rept 417 .rept \rept
4189999: 4189999:
419 .if \inc == 1 419 .if \inc == 1
420 \instr\cond\()b\()\t \reg, [\ptr], #\inc 420 \instr\()b\t\cond \reg, [\ptr], #\inc
421 .elseif \inc == 4 421 .elseif \inc == 4
422 \instr\cond\()\t \reg, [\ptr], #\inc 422 \instr\t\cond \reg, [\ptr], #\inc
423 .else 423 .else
424 .error "Unsupported inc macro argument" 424 .error "Unsupported inc macro argument"
425 .endif 425 .endif
@@ -460,7 +460,7 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
460 .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req 460 .macro check_uaccess, addr:req, size:req, limit:req, tmp:req, bad:req
461#ifndef CONFIG_CPU_USE_DOMAINS 461#ifndef CONFIG_CPU_USE_DOMAINS
462 adds \tmp, \addr, #\size - 1 462 adds \tmp, \addr, #\size - 1
463 sbcccs \tmp, \tmp, \limit 463 sbcscc \tmp, \tmp, \limit
464 bcs \bad 464 bcs \bad
465#ifdef CONFIG_CPU_SPECTRE 465#ifdef CONFIG_CPU_SPECTRE
466 movcs \addr, #0 466 movcs \addr, #0
@@ -474,7 +474,7 @@ THUMB( orr \reg , \reg , #PSR_T_BIT )
474 sub \tmp, \limit, #1 474 sub \tmp, \limit, #1
475 subs \tmp, \tmp, \addr @ tmp = limit - 1 - addr 475 subs \tmp, \tmp, \addr @ tmp = limit - 1 - addr
476 addhs \tmp, \tmp, #1 @ if (tmp >= 0) { 476 addhs \tmp, \tmp, #1 @ if (tmp >= 0) {
477 subhss \tmp, \tmp, \size @ tmp = limit - (addr + size) } 477 subshs \tmp, \tmp, \size @ tmp = limit - (addr + size) }
478 movlo \addr, #0 @ if (tmp < 0) addr = NULL 478 movlo \addr, #0 @ if (tmp < 0) addr = NULL
479 csdb 479 csdb
480#endif 480#endif
diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h
index 69772e742a0a..83ae97c049d9 100644
--- a/arch/arm/include/asm/barrier.h
+++ b/arch/arm/include/asm/barrier.h
@@ -11,6 +11,8 @@
11#define sev() __asm__ __volatile__ ("sev" : : : "memory") 11#define sev() __asm__ __volatile__ ("sev" : : : "memory")
12#define wfe() __asm__ __volatile__ ("wfe" : : : "memory") 12#define wfe() __asm__ __volatile__ ("wfe" : : : "memory")
13#define wfi() __asm__ __volatile__ ("wfi" : : : "memory") 13#define wfi() __asm__ __volatile__ ("wfi" : : : "memory")
14#else
15#define wfe() do { } while (0)
14#endif 16#endif
15 17
16#if __LINUX_ARM_ARCH__ >= 7 18#if __LINUX_ARM_ARCH__ >= 7
diff --git a/arch/arm/include/asm/dma-mapping.h b/arch/arm/include/asm/dma-mapping.h
index 31d3b96f0f4b..03ba90ffc0f8 100644
--- a/arch/arm/include/asm/dma-mapping.h
+++ b/arch/arm/include/asm/dma-mapping.h
@@ -96,15 +96,6 @@ static inline unsigned long dma_max_pfn(struct device *dev)
96} 96}
97#define dma_max_pfn(dev) dma_max_pfn(dev) 97#define dma_max_pfn(dev) dma_max_pfn(dev)
98 98
99#define arch_setup_dma_ops arch_setup_dma_ops
100extern void arch_setup_dma_ops(struct device *dev, u64 dma_base, u64 size,
101 const struct iommu_ops *iommu, bool coherent);
102
103#ifdef CONFIG_MMU
104#define arch_teardown_dma_ops arch_teardown_dma_ops
105extern void arch_teardown_dma_ops(struct device *dev);
106#endif
107
108/* do not use this function in a driver */ 99/* do not use this function in a driver */
109static inline bool is_device_dma_coherent(struct device *dev) 100static inline bool is_device_dma_coherent(struct device *dev)
110{ 101{
diff --git a/arch/arm/include/asm/hardware/entry-macro-iomd.S b/arch/arm/include/asm/hardware/entry-macro-iomd.S
index 8c215acd9b57..f7692731e514 100644
--- a/arch/arm/include/asm/hardware/entry-macro-iomd.S
+++ b/arch/arm/include/asm/hardware/entry-macro-iomd.S
@@ -16,25 +16,25 @@
16 ldr \tmp, =irq_prio_h 16 ldr \tmp, =irq_prio_h
17 teq \irqstat, #0 17 teq \irqstat, #0
18#ifdef IOMD_BASE 18#ifdef IOMD_BASE
19 ldreqb \irqstat, [\base, #IOMD_DMAREQ] @ get dma 19 ldrbeq \irqstat, [\base, #IOMD_DMAREQ] @ get dma
20 addeq \tmp, \tmp, #256 @ irq_prio_h table size 20 addeq \tmp, \tmp, #256 @ irq_prio_h table size
21 teqeq \irqstat, #0 21 teqeq \irqstat, #0
22 bne 2406f 22 bne 2406f
23#endif 23#endif
24 ldreqb \irqstat, [\base, #IOMD_IRQREQA] @ get low priority 24 ldrbeq \irqstat, [\base, #IOMD_IRQREQA] @ get low priority
25 addeq \tmp, \tmp, #256 @ irq_prio_d table size 25 addeq \tmp, \tmp, #256 @ irq_prio_d table size
26 teqeq \irqstat, #0 26 teqeq \irqstat, #0
27#ifdef IOMD_IRQREQC 27#ifdef IOMD_IRQREQC
28 ldreqb \irqstat, [\base, #IOMD_IRQREQC] 28 ldrbeq \irqstat, [\base, #IOMD_IRQREQC]
29 addeq \tmp, \tmp, #256 @ irq_prio_l table size 29 addeq \tmp, \tmp, #256 @ irq_prio_l table size
30 teqeq \irqstat, #0 30 teqeq \irqstat, #0
31#endif 31#endif
32#ifdef IOMD_IRQREQD 32#ifdef IOMD_IRQREQD
33 ldreqb \irqstat, [\base, #IOMD_IRQREQD] 33 ldrbeq \irqstat, [\base, #IOMD_IRQREQD]
34 addeq \tmp, \tmp, #256 @ irq_prio_lc table size 34 addeq \tmp, \tmp, #256 @ irq_prio_lc table size
35 teqeq \irqstat, #0 35 teqeq \irqstat, #0
36#endif 36#endif
372406: ldrneb \irqnr, [\tmp, \irqstat] @ get IRQ number 372406: ldrbne \irqnr, [\tmp, \irqstat] @ get IRQ number
38 .endm 38 .endm
39 39
40/* 40/*
diff --git a/arch/arm/include/asm/irq.h b/arch/arm/include/asm/irq.h
index c883fcbe93b6..46d41140df27 100644
--- a/arch/arm/include/asm/irq.h
+++ b/arch/arm/include/asm/irq.h
@@ -25,7 +25,6 @@
25#ifndef __ASSEMBLY__ 25#ifndef __ASSEMBLY__
26struct irqaction; 26struct irqaction;
27struct pt_regs; 27struct pt_regs;
28extern void migrate_irqs(void);
29 28
30extern void asm_do_IRQ(unsigned int, struct pt_regs *); 29extern void asm_do_IRQ(unsigned int, struct pt_regs *);
31void handle_IRQ(unsigned int, struct pt_regs *); 30void handle_IRQ(unsigned int, struct pt_regs *);
diff --git a/arch/arm/include/asm/kvm_emulate.h b/arch/arm/include/asm/kvm_emulate.h
index 77121b713bef..8927cae7c966 100644
--- a/arch/arm/include/asm/kvm_emulate.h
+++ b/arch/arm/include/asm/kvm_emulate.h
@@ -265,6 +265,14 @@ static inline bool kvm_vcpu_dabt_isextabt(struct kvm_vcpu *vcpu)
265 } 265 }
266} 266}
267 267
268static inline bool kvm_is_write_fault(struct kvm_vcpu *vcpu)
269{
270 if (kvm_vcpu_trap_is_iabt(vcpu))
271 return false;
272
273 return kvm_vcpu_dabt_iswrite(vcpu);
274}
275
268static inline u32 kvm_vcpu_hvc_get_imm(struct kvm_vcpu *vcpu) 276static inline u32 kvm_vcpu_hvc_get_imm(struct kvm_vcpu *vcpu)
269{ 277{
270 return kvm_vcpu_get_hsr(vcpu) & HSR_HVC_IMM_MASK; 278 return kvm_vcpu_get_hsr(vcpu) & HSR_HVC_IMM_MASK;
diff --git a/arch/arm/include/asm/kvm_host.h b/arch/arm/include/asm/kvm_host.h
index ca56537b61bc..770d73257ad9 100644
--- a/arch/arm/include/asm/kvm_host.h
+++ b/arch/arm/include/asm/kvm_host.h
@@ -26,6 +26,7 @@
26#include <asm/kvm_asm.h> 26#include <asm/kvm_asm.h>
27#include <asm/kvm_mmio.h> 27#include <asm/kvm_mmio.h>
28#include <asm/fpstate.h> 28#include <asm/fpstate.h>
29#include <asm/smp_plat.h>
29#include <kvm/arm_arch_timer.h> 30#include <kvm/arm_arch_timer.h>
30 31
31#define __KVM_HAVE_ARCH_INTC_INITIALIZED 32#define __KVM_HAVE_ARCH_INTC_INITIALIZED
@@ -48,6 +49,7 @@
48#define KVM_REQ_SLEEP \ 49#define KVM_REQ_SLEEP \
49 KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP) 50 KVM_ARCH_REQ_FLAGS(0, KVM_REQUEST_WAIT | KVM_REQUEST_NO_WAKEUP)
50#define KVM_REQ_IRQ_PENDING KVM_ARCH_REQ(1) 51#define KVM_REQ_IRQ_PENDING KVM_ARCH_REQ(1)
52#define KVM_REQ_VCPU_RESET KVM_ARCH_REQ(2)
51 53
52DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use); 54DECLARE_STATIC_KEY_FALSE(userspace_irqchip_in_use);
53 55
@@ -56,10 +58,13 @@ int __attribute_const__ kvm_target_cpu(void);
56int kvm_reset_vcpu(struct kvm_vcpu *vcpu); 58int kvm_reset_vcpu(struct kvm_vcpu *vcpu);
57void kvm_reset_coprocs(struct kvm_vcpu *vcpu); 59void kvm_reset_coprocs(struct kvm_vcpu *vcpu);
58 60
59struct kvm_arch { 61struct kvm_vmid {
60 /* VTTBR value associated with below pgd and vmid */ 62 /* The VMID generation used for the virt. memory system */
61 u64 vttbr; 63 u64 vmid_gen;
64 u32 vmid;
65};
62 66
67struct kvm_arch {
63 /* The last vcpu id that ran on each physical CPU */ 68 /* The last vcpu id that ran on each physical CPU */
64 int __percpu *last_vcpu_ran; 69 int __percpu *last_vcpu_ran;
65 70
@@ -69,11 +74,11 @@ struct kvm_arch {
69 */ 74 */
70 75
71 /* The VMID generation used for the virt. memory system */ 76 /* The VMID generation used for the virt. memory system */
72 u64 vmid_gen; 77 struct kvm_vmid vmid;
73 u32 vmid;
74 78
75 /* Stage-2 page table */ 79 /* Stage-2 page table */
76 pgd_t *pgd; 80 pgd_t *pgd;
81 phys_addr_t pgd_phys;
77 82
78 /* Interrupt controller */ 83 /* Interrupt controller */
79 struct vgic_dist vgic; 84 struct vgic_dist vgic;
@@ -147,6 +152,20 @@ struct kvm_cpu_context {
147 152
148typedef struct kvm_cpu_context kvm_cpu_context_t; 153typedef struct kvm_cpu_context kvm_cpu_context_t;
149 154
155static inline void kvm_init_host_cpu_context(kvm_cpu_context_t *cpu_ctxt,
156 int cpu)
157{
158 /* The host's MPIDR is immutable, so let's set it up at boot time */
159 cpu_ctxt->cp15[c0_MPIDR] = cpu_logical_map(cpu);
160}
161
162struct vcpu_reset_state {
163 unsigned long pc;
164 unsigned long r0;
165 bool be;
166 bool reset;
167};
168
150struct kvm_vcpu_arch { 169struct kvm_vcpu_arch {
151 struct kvm_cpu_context ctxt; 170 struct kvm_cpu_context ctxt;
152 171
@@ -186,6 +205,8 @@ struct kvm_vcpu_arch {
186 /* Cache some mmu pages needed inside spinlock regions */ 205 /* Cache some mmu pages needed inside spinlock regions */
187 struct kvm_mmu_memory_cache mmu_page_cache; 206 struct kvm_mmu_memory_cache mmu_page_cache;
188 207
208 struct vcpu_reset_state reset_state;
209
189 /* Detect first run of a vcpu */ 210 /* Detect first run of a vcpu */
190 bool has_run_once; 211 bool has_run_once;
191}; 212};
@@ -214,7 +235,35 @@ unsigned long kvm_arm_num_regs(struct kvm_vcpu *vcpu);
214int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices); 235int kvm_arm_copy_reg_indices(struct kvm_vcpu *vcpu, u64 __user *indices);
215int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); 236int kvm_arm_get_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg);
216int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg); 237int kvm_arm_set_reg(struct kvm_vcpu *vcpu, const struct kvm_one_reg *reg);
217unsigned long kvm_call_hyp(void *hypfn, ...); 238
239unsigned long __kvm_call_hyp(void *hypfn, ...);
240
241/*
242 * The has_vhe() part doesn't get emitted, but is used for type-checking.
243 */
244#define kvm_call_hyp(f, ...) \
245 do { \
246 if (has_vhe()) { \
247 f(__VA_ARGS__); \
248 } else { \
249 __kvm_call_hyp(kvm_ksym_ref(f), ##__VA_ARGS__); \
250 } \
251 } while(0)
252
253#define kvm_call_hyp_ret(f, ...) \
254 ({ \
255 typeof(f(__VA_ARGS__)) ret; \
256 \
257 if (has_vhe()) { \
258 ret = f(__VA_ARGS__); \
259 } else { \
260 ret = __kvm_call_hyp(kvm_ksym_ref(f), \
261 ##__VA_ARGS__); \
262 } \
263 \
264 ret; \
265 })
266
218void force_vm_exit(const cpumask_t *mask); 267void force_vm_exit(const cpumask_t *mask);
219int __kvm_arm_vcpu_get_events(struct kvm_vcpu *vcpu, 268int __kvm_arm_vcpu_get_events(struct kvm_vcpu *vcpu,
220 struct kvm_vcpu_events *events); 269 struct kvm_vcpu_events *events);
@@ -265,7 +314,7 @@ static inline void __cpu_init_hyp_mode(phys_addr_t pgd_ptr,
265 * compliant with the PCS!). 314 * compliant with the PCS!).
266 */ 315 */
267 316
268 kvm_call_hyp((void*)hyp_stack_ptr, vector_ptr, pgd_ptr); 317 __kvm_call_hyp((void*)hyp_stack_ptr, vector_ptr, pgd_ptr);
269} 318}
270 319
271static inline void __cpu_init_stage2(void) 320static inline void __cpu_init_stage2(void)
diff --git a/arch/arm/include/asm/kvm_hyp.h b/arch/arm/include/asm/kvm_hyp.h
index e93a0cac9add..87bcd18df8d5 100644
--- a/arch/arm/include/asm/kvm_hyp.h
+++ b/arch/arm/include/asm/kvm_hyp.h
@@ -40,6 +40,7 @@
40#define TTBR1 __ACCESS_CP15_64(1, c2) 40#define TTBR1 __ACCESS_CP15_64(1, c2)
41#define VTTBR __ACCESS_CP15_64(6, c2) 41#define VTTBR __ACCESS_CP15_64(6, c2)
42#define PAR __ACCESS_CP15_64(0, c7) 42#define PAR __ACCESS_CP15_64(0, c7)
43#define CNTP_CVAL __ACCESS_CP15_64(2, c14)
43#define CNTV_CVAL __ACCESS_CP15_64(3, c14) 44#define CNTV_CVAL __ACCESS_CP15_64(3, c14)
44#define CNTVOFF __ACCESS_CP15_64(4, c14) 45#define CNTVOFF __ACCESS_CP15_64(4, c14)
45 46
@@ -85,6 +86,7 @@
85#define TID_PRIV __ACCESS_CP15(c13, 0, c0, 4) 86#define TID_PRIV __ACCESS_CP15(c13, 0, c0, 4)
86#define HTPIDR __ACCESS_CP15(c13, 4, c0, 2) 87#define HTPIDR __ACCESS_CP15(c13, 4, c0, 2)
87#define CNTKCTL __ACCESS_CP15(c14, 0, c1, 0) 88#define CNTKCTL __ACCESS_CP15(c14, 0, c1, 0)
89#define CNTP_CTL __ACCESS_CP15(c14, 0, c2, 1)
88#define CNTV_CTL __ACCESS_CP15(c14, 0, c3, 1) 90#define CNTV_CTL __ACCESS_CP15(c14, 0, c3, 1)
89#define CNTHCTL __ACCESS_CP15(c14, 4, c1, 0) 91#define CNTHCTL __ACCESS_CP15(c14, 4, c1, 0)
90 92
@@ -94,6 +96,8 @@
94#define read_sysreg_el0(r) read_sysreg(r##_el0) 96#define read_sysreg_el0(r) read_sysreg(r##_el0)
95#define write_sysreg_el0(v, r) write_sysreg(v, r##_el0) 97#define write_sysreg_el0(v, r) write_sysreg(v, r##_el0)
96 98
99#define cntp_ctl_el0 CNTP_CTL
100#define cntp_cval_el0 CNTP_CVAL
97#define cntv_ctl_el0 CNTV_CTL 101#define cntv_ctl_el0 CNTV_CTL
98#define cntv_cval_el0 CNTV_CVAL 102#define cntv_cval_el0 CNTV_CVAL
99#define cntvoff_el2 CNTVOFF 103#define cntvoff_el2 CNTVOFF
diff --git a/arch/arm/include/asm/kvm_mmu.h b/arch/arm/include/asm/kvm_mmu.h
index 3a875fc1b63c..2de96a180166 100644
--- a/arch/arm/include/asm/kvm_mmu.h
+++ b/arch/arm/include/asm/kvm_mmu.h
@@ -421,9 +421,14 @@ static inline int hyp_map_aux_data(void)
421 421
422static inline void kvm_set_ipa_limit(void) {} 422static inline void kvm_set_ipa_limit(void) {}
423 423
424static inline bool kvm_cpu_has_cnp(void) 424static __always_inline u64 kvm_get_vttbr(struct kvm *kvm)
425{ 425{
426 return false; 426 struct kvm_vmid *vmid = &kvm->arch.vmid;
427 u64 vmid_field, baddr;
428
429 baddr = kvm->arch.pgd_phys;
430 vmid_field = (u64)vmid->vmid << VTTBR_VMID_SHIFT;
431 return kvm_phys_to_vttbr(baddr) | vmid_field;
427} 432}
428 433
429#endif /* !__ASSEMBLY__ */ 434#endif /* !__ASSEMBLY__ */
diff --git a/arch/arm/include/asm/kvm_ras.h b/arch/arm/include/asm/kvm_ras.h
new file mode 100644
index 000000000000..e9577292dfe4
--- /dev/null
+++ b/arch/arm/include/asm/kvm_ras.h
@@ -0,0 +1,14 @@
1/* SPDX-License-Identifier: GPL-2.0 */
2/* Copyright (C) 2018 - Arm Ltd */
3
4#ifndef __ARM_KVM_RAS_H__
5#define __ARM_KVM_RAS_H__
6
7#include <linux/types.h>
8
9static inline int kvm_handle_guest_sea(phys_addr_t addr, unsigned int esr)
10{
11 return -1;
12}
13
14#endif /* __ARM_KVM_RAS_H__ */
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h
index a757401129f9..48ce1b19069b 100644
--- a/arch/arm/include/asm/pgtable.h
+++ b/arch/arm/include/asm/pgtable.h
@@ -125,6 +125,9 @@ extern pgprot_t pgprot_s2_device;
125#define pgprot_stronglyordered(prot) \ 125#define pgprot_stronglyordered(prot) \
126 __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED) 126 __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_UNCACHED)
127 127
128#define pgprot_device(prot) \
129 __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_DEV_SHARED | L_PTE_SHARED | L_PTE_DIRTY | L_PTE_XN)
130
128#ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE 131#ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE
129#define pgprot_dmacoherent(prot) \ 132#define pgprot_dmacoherent(prot) \
130 __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE | L_PTE_XN) 133 __pgprot_modify(prot, L_PTE_MT_MASK, L_PTE_MT_BUFFERABLE | L_PTE_XN)
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h
index 120f4c9bbfde..57fe73ea0f72 100644
--- a/arch/arm/include/asm/processor.h
+++ b/arch/arm/include/asm/processor.h
@@ -89,7 +89,11 @@ extern void release_thread(struct task_struct *);
89unsigned long get_wchan(struct task_struct *p); 89unsigned long get_wchan(struct task_struct *p);
90 90
91#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327) 91#if __LINUX_ARM_ARCH__ == 6 || defined(CONFIG_ARM_ERRATA_754327)
92#define cpu_relax() smp_mb() 92#define cpu_relax() \
93 do { \
94 smp_mb(); \
95 __asm__ __volatile__("nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"); \
96 } while (0)
93#else 97#else
94#define cpu_relax() barrier() 98#define cpu_relax() barrier()
95#endif 99#endif
diff --git a/arch/arm/include/asm/smp.h b/arch/arm/include/asm/smp.h
index 709a55989cb0..451ae684aaf4 100644
--- a/arch/arm/include/asm/smp.h
+++ b/arch/arm/include/asm/smp.h
@@ -67,7 +67,6 @@ struct secondary_data {
67 void *stack; 67 void *stack;
68}; 68};
69extern struct secondary_data secondary_data; 69extern struct secondary_data secondary_data;
70extern volatile int pen_release;
71extern void secondary_startup(void); 70extern void secondary_startup(void);
72extern void secondary_startup_arm(void); 71extern void secondary_startup_arm(void);
73 72
diff --git a/arch/arm/include/asm/smp_twd.h b/arch/arm/include/asm/smp_twd.h
index 312784ee9936..c729d2113a24 100644
--- a/arch/arm/include/asm/smp_twd.h
+++ b/arch/arm/include/asm/smp_twd.h
@@ -19,20 +19,4 @@
19#define TWD_TIMER_CONTROL_PERIODIC (1 << 1) 19#define TWD_TIMER_CONTROL_PERIODIC (1 << 1)
20#define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2) 20#define TWD_TIMER_CONTROL_IT_ENABLE (1 << 2)
21 21
22#include <linux/ioport.h>
23
24struct twd_local_timer {
25 struct resource res[2];
26};
27
28#define DEFINE_TWD_LOCAL_TIMER(name,base,irq) \
29struct twd_local_timer name __initdata = { \
30 .res = { \
31 DEFINE_RES_MEM(base, 0x10), \
32 DEFINE_RES_IRQ(irq), \
33 }, \
34};
35
36int twd_local_timer_register(struct twd_local_timer *);
37
38#endif 22#endif
diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h
index 099c78fcf62d..8f009e788ad4 100644
--- a/arch/arm/include/asm/spinlock.h
+++ b/arch/arm/include/asm/spinlock.h
@@ -210,11 +210,12 @@ static inline void arch_read_lock(arch_rwlock_t *rw)
210 210
211 prefetchw(&rw->lock); 211 prefetchw(&rw->lock);
212 __asm__ __volatile__( 212 __asm__ __volatile__(
213" .syntax unified\n"
213"1: ldrex %0, [%2]\n" 214"1: ldrex %0, [%2]\n"
214" adds %0, %0, #1\n" 215" adds %0, %0, #1\n"
215" strexpl %1, %0, [%2]\n" 216" strexpl %1, %0, [%2]\n"
216 WFE("mi") 217 WFE("mi")
217" rsbpls %0, %1, #0\n" 218" rsbspl %0, %1, #0\n"
218" bmi 1b" 219" bmi 1b"
219 : "=&r" (tmp), "=&r" (tmp2) 220 : "=&r" (tmp), "=&r" (tmp2)
220 : "r" (&rw->lock) 221 : "r" (&rw->lock)
diff --git a/arch/arm/include/asm/stage2_pgtable.h b/arch/arm/include/asm/stage2_pgtable.h
index c4b1d4fb1797..de2089501b8b 100644
--- a/arch/arm/include/asm/stage2_pgtable.h
+++ b/arch/arm/include/asm/stage2_pgtable.h
@@ -76,4 +76,9 @@ static inline bool kvm_stage2_has_pud(struct kvm *kvm)
76#define S2_PMD_MASK PMD_MASK 76#define S2_PMD_MASK PMD_MASK
77#define S2_PMD_SIZE PMD_SIZE 77#define S2_PMD_SIZE PMD_SIZE
78 78
79static inline bool kvm_stage2_has_pmd(struct kvm *kvm)
80{
81 return true;
82}
83
79#endif /* __ARM_S2_PGTABLE_H_ */ 84#endif /* __ARM_S2_PGTABLE_H_ */
diff --git a/arch/arm/include/asm/suspend.h b/arch/arm/include/asm/suspend.h
index 452bbdcbcc83..506314265c6f 100644
--- a/arch/arm/include/asm/suspend.h
+++ b/arch/arm/include/asm/suspend.h
@@ -10,6 +10,7 @@ struct sleep_save_sp {
10}; 10};
11 11
12extern void cpu_resume(void); 12extern void cpu_resume(void);
13extern void cpu_resume_no_hyp(void);
13extern void cpu_resume_arm(void); 14extern void cpu_resume_arm(void);
14extern int cpu_suspend(unsigned long, int (*)(unsigned long)); 15extern int cpu_suspend(unsigned long, int (*)(unsigned long));
15 16
diff --git a/arch/arm/include/asm/system_misc.h b/arch/arm/include/asm/system_misc.h
index 8e76db83c498..66f6a3ae68d2 100644
--- a/arch/arm/include/asm/system_misc.h
+++ b/arch/arm/include/asm/system_misc.h
@@ -38,11 +38,6 @@ static inline void harden_branch_predictor(void)
38 38
39extern unsigned int user_debug; 39extern unsigned int user_debug;
40 40
41static inline int handle_guest_sea(phys_addr_t addr, unsigned int esr)
42{
43 return -1;
44}
45
46#endif /* !__ASSEMBLY__ */ 41#endif /* !__ASSEMBLY__ */
47 42
48#endif /* __ASM_ARM_SYSTEM_MISC_H */ 43#endif /* __ASM_ARM_SYSTEM_MISC_H */
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h
index 42aa4a22803c..dff49845eb87 100644
--- a/arch/arm/include/asm/uaccess.h
+++ b/arch/arm/include/asm/uaccess.h
@@ -59,7 +59,6 @@ extern int __put_user_bad(void);
59 * Note that this is actually 0x1,0000,0000 59 * Note that this is actually 0x1,0000,0000
60 */ 60 */
61#define KERNEL_DS 0x00000000 61#define KERNEL_DS 0x00000000
62#define get_ds() (KERNEL_DS)
63 62
64#ifdef CONFIG_MMU 63#ifdef CONFIG_MMU
65 64
@@ -86,7 +85,8 @@ static inline void set_fs(mm_segment_t fs)
86#define __range_ok(addr, size) ({ \ 85#define __range_ok(addr, size) ({ \
87 unsigned long flag, roksum; \ 86 unsigned long flag, roksum; \
88 __chk_user_ptr(addr); \ 87 __chk_user_ptr(addr); \
89 __asm__("adds %1, %2, %3; sbcccs %1, %1, %0; movcc %0, #0" \ 88 __asm__(".syntax unified\n" \
89 "adds %1, %2, %3; sbcscc %1, %1, %0; movcc %0, #0" \
90 : "=&r" (flag), "=&r" (roksum) \ 90 : "=&r" (flag), "=&r" (roksum) \
91 : "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \ 91 : "r" (addr), "Ir" (size), "0" (current_thread_info()->addr_limit) \
92 : "cc"); \ 92 : "cc"); \
diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 88ef2ce1f69a..7a39e77984ef 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -26,10 +26,10 @@
26#define __ARCH_WANT_SYS_SIGPROCMASK 26#define __ARCH_WANT_SYS_SIGPROCMASK
27#define __ARCH_WANT_SYS_OLD_MMAP 27#define __ARCH_WANT_SYS_OLD_MMAP
28#define __ARCH_WANT_SYS_OLD_SELECT 28#define __ARCH_WANT_SYS_OLD_SELECT
29#define __ARCH_WANT_SYS_UTIME 29#define __ARCH_WANT_SYS_UTIME32
30 30
31#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT) 31#if !defined(CONFIG_AEABI) || defined(CONFIG_OABI_COMPAT)
32#define __ARCH_WANT_SYS_TIME 32#define __ARCH_WANT_SYS_TIME32
33#define __ARCH_WANT_SYS_IPC 33#define __ARCH_WANT_SYS_IPC
34#define __ARCH_WANT_SYS_OLDUMOUNT 34#define __ARCH_WANT_SYS_OLDUMOUNT
35#define __ARCH_WANT_SYS_ALARM 35#define __ARCH_WANT_SYS_ALARM
@@ -45,7 +45,6 @@
45 * Unimplemented (or alternatively implemented) syscalls 45 * Unimplemented (or alternatively implemented) syscalls
46 */ 46 */
47#define __IGNORE_fadvise64_64 47#define __IGNORE_fadvise64_64
48#define __IGNORE_migrate_pages
49 48
50#ifdef __ARM_EABI__ 49#ifdef __ARM_EABI__
51/* 50/*
diff --git a/arch/arm/include/asm/v7m.h b/arch/arm/include/asm/v7m.h
index 187ccf6496ad..2cb00d15831b 100644
--- a/arch/arm/include/asm/v7m.h
+++ b/arch/arm/include/asm/v7m.h
@@ -49,7 +49,7 @@
49 * (0 -> msp; 1 -> psp). Bits [1:0] are fixed to 0b01. 49 * (0 -> msp; 1 -> psp). Bits [1:0] are fixed to 0b01.
50 */ 50 */
51#define EXC_RET_STACK_MASK 0x00000004 51#define EXC_RET_STACK_MASK 0x00000004
52#define EXC_RET_THREADMODE_PROCESSSTACK 0xfffffffd 52#define EXC_RET_THREADMODE_PROCESSSTACK (3 << 2)
53 53
54/* Cache related definitions */ 54/* Cache related definitions */
55 55
diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h
index ef5dfedacd8d..628c336e8e3b 100644
--- a/arch/arm/include/asm/vfpmacros.h
+++ b/arch/arm/include/asm/vfpmacros.h
@@ -29,13 +29,13 @@
29 ldr \tmp, =elf_hwcap @ may not have MVFR regs 29 ldr \tmp, =elf_hwcap @ may not have MVFR regs
30 ldr \tmp, [\tmp, #0] 30 ldr \tmp, [\tmp, #0]
31 tst \tmp, #HWCAP_VFPD32 31 tst \tmp, #HWCAP_VFPD32
32 ldcnel p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} 32 ldclne p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
33 addeq \base, \base, #32*4 @ step over unused register space 33 addeq \base, \base, #32*4 @ step over unused register space
34#else 34#else
35 VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 35 VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0
36 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field 36 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field
37 cmp \tmp, #2 @ 32 x 64bit registers? 37 cmp \tmp, #2 @ 32 x 64bit registers?
38 ldceql p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31} 38 ldcleq p11, cr0, [\base],#32*4 @ FLDMIAD \base!, {d16-d31}
39 addne \base, \base, #32*4 @ step over unused register space 39 addne \base, \base, #32*4 @ step over unused register space
40#endif 40#endif
41#endif 41#endif
@@ -53,13 +53,13 @@
53 ldr \tmp, =elf_hwcap @ may not have MVFR regs 53 ldr \tmp, =elf_hwcap @ may not have MVFR regs
54 ldr \tmp, [\tmp, #0] 54 ldr \tmp, [\tmp, #0]
55 tst \tmp, #HWCAP_VFPD32 55 tst \tmp, #HWCAP_VFPD32
56 stcnel p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} 56 stclne p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
57 addeq \base, \base, #32*4 @ step over unused register space 57 addeq \base, \base, #32*4 @ step over unused register space
58#else 58#else
59 VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0 59 VFPFMRX \tmp, MVFR0 @ Media and VFP Feature Register 0
60 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field 60 and \tmp, \tmp, #MVFR0_A_SIMD_MASK @ A_SIMD field
61 cmp \tmp, #2 @ 32 x 64bit registers? 61 cmp \tmp, #2 @ 32 x 64bit registers?
62 stceql p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31} 62 stcleq p11, cr0, [\base],#32*4 @ FSTMIAD \base!, {d16-d31}
63 addne \base, \base, #32*4 @ step over unused register space 63 addne \base, \base, #32*4 @ step over unused register space
64#endif 64#endif
65#endif 65#endif
diff --git a/arch/arm/include/asm/xen/page-coherent.h b/arch/arm/include/asm/xen/page-coherent.h
index b3ef061d8b74..2c403e7c782d 100644
--- a/arch/arm/include/asm/xen/page-coherent.h
+++ b/arch/arm/include/asm/xen/page-coherent.h
@@ -1 +1,95 @@
1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ASM_ARM_XEN_PAGE_COHERENT_H
3#define _ASM_ARM_XEN_PAGE_COHERENT_H
4
5#include <linux/dma-mapping.h>
6#include <asm/page.h>
1#include <xen/arm/page-coherent.h> 7#include <xen/arm/page-coherent.h>
8
9static inline const struct dma_map_ops *xen_get_dma_ops(struct device *dev)
10{
11 if (dev && dev->archdata.dev_dma_ops)
12 return dev->archdata.dev_dma_ops;
13 return get_arch_dma_ops(NULL);
14}
15
16static inline void *xen_alloc_coherent_pages(struct device *hwdev, size_t size,
17 dma_addr_t *dma_handle, gfp_t flags, unsigned long attrs)
18{
19 return xen_get_dma_ops(hwdev)->alloc(hwdev, size, dma_handle, flags, attrs);
20}
21
22static inline void xen_free_coherent_pages(struct device *hwdev, size_t size,
23 void *cpu_addr, dma_addr_t dma_handle, unsigned long attrs)
24{
25 xen_get_dma_ops(hwdev)->free(hwdev, size, cpu_addr, dma_handle, attrs);
26}
27
28static inline void xen_dma_map_page(struct device *hwdev, struct page *page,
29 dma_addr_t dev_addr, unsigned long offset, size_t size,
30 enum dma_data_direction dir, unsigned long attrs)
31{
32 unsigned long page_pfn = page_to_xen_pfn(page);
33 unsigned long dev_pfn = XEN_PFN_DOWN(dev_addr);
34 unsigned long compound_pages =
35 (1<<compound_order(page)) * XEN_PFN_PER_PAGE;
36 bool local = (page_pfn <= dev_pfn) &&
37 (dev_pfn - page_pfn < compound_pages);
38
39 /*
40 * Dom0 is mapped 1:1, while the Linux page can span across
41 * multiple Xen pages, it's not possible for it to contain a
42 * mix of local and foreign Xen pages. So if the first xen_pfn
43 * == mfn the page is local otherwise it's a foreign page
44 * grant-mapped in dom0. If the page is local we can safely
45 * call the native dma_ops function, otherwise we call the xen
46 * specific function.
47 */
48 if (local)
49 xen_get_dma_ops(hwdev)->map_page(hwdev, page, offset, size, dir, attrs);
50 else
51 __xen_dma_map_page(hwdev, page, dev_addr, offset, size, dir, attrs);
52}
53
54static inline void xen_dma_unmap_page(struct device *hwdev, dma_addr_t handle,
55 size_t size, enum dma_data_direction dir, unsigned long attrs)
56{
57 unsigned long pfn = PFN_DOWN(handle);
58 /*
59 * Dom0 is mapped 1:1, while the Linux page can be spanned accross
60 * multiple Xen page, it's not possible to have a mix of local and
61 * foreign Xen page. Dom0 is mapped 1:1, so calling pfn_valid on a
62 * foreign mfn will always return false. If the page is local we can
63 * safely call the native dma_ops function, otherwise we call the xen
64 * specific function.
65 */
66 if (pfn_valid(pfn)) {
67 if (xen_get_dma_ops(hwdev)->unmap_page)
68 xen_get_dma_ops(hwdev)->unmap_page(hwdev, handle, size, dir, attrs);
69 } else
70 __xen_dma_unmap_page(hwdev, handle, size, dir, attrs);
71}
72
73static inline void xen_dma_sync_single_for_cpu(struct device *hwdev,
74 dma_addr_t handle, size_t size, enum dma_data_direction dir)
75{
76 unsigned long pfn = PFN_DOWN(handle);
77 if (pfn_valid(pfn)) {
78 if (xen_get_dma_ops(hwdev)->sync_single_for_cpu)
79 xen_get_dma_ops(hwdev)->sync_single_for_cpu(hwdev, handle, size, dir);
80 } else
81 __xen_dma_sync_single_for_cpu(hwdev, handle, size, dir);
82}
83
84static inline void xen_dma_sync_single_for_device(struct device *hwdev,
85 dma_addr_t handle, size_t size, enum dma_data_direction dir)
86{
87 unsigned long pfn = PFN_DOWN(handle);
88 if (pfn_valid(pfn)) {
89 if (xen_get_dma_ops(hwdev)->sync_single_for_device)
90 xen_get_dma_ops(hwdev)->sync_single_for_device(hwdev, handle, size, dir);
91 } else
92 __xen_dma_sync_single_for_device(hwdev, handle, size, dir);
93}
94
95#endif /* _ASM_ARM_XEN_PAGE_COHERENT_H */
diff --git a/arch/arm/include/debug/tegra.S b/arch/arm/include/debug/tegra.S
index 3bc80599c022..4a5a645c76e2 100644
--- a/arch/arm/include/debug/tegra.S
+++ b/arch/arm/include/debug/tegra.S
@@ -173,7 +173,7 @@
173 173
174 .macro senduart, rd, rx 174 .macro senduart, rd, rx
175 cmp \rx, #0 175 cmp \rx, #0
176 strneb \rd, [\rx, #UART_TX << UART_SHIFT] 176 strbne \rd, [\rx, #UART_TX << UART_SHIFT]
1771001: 1771001:
178 .endm 178 .endm
179 179
diff --git a/arch/arm/kernel/debug.S b/arch/arm/kernel/debug.S
index b795dc2408c0..b9f94e03d916 100644
--- a/arch/arm/kernel/debug.S
+++ b/arch/arm/kernel/debug.S
@@ -86,7 +86,7 @@ hexbuf_rel: .long hexbuf_addr - .
86ENTRY(printascii) 86ENTRY(printascii)
87 addruart_current r3, r1, r2 87 addruart_current r3, r1, r2
881: teq r0, #0 881: teq r0, #0
89 ldrneb r1, [r0], #1 89 ldrbne r1, [r0], #1
90 teqne r1, #0 90 teqne r1, #0
91 reteq lr 91 reteq lr
922: teq r1, #'\n' 922: teq r1, #'\n'
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S
index e85a3af9ddeb..ce4aea57130a 100644
--- a/arch/arm/kernel/entry-armv.S
+++ b/arch/arm/kernel/entry-armv.S
@@ -636,7 +636,7 @@ call_fpe:
636 @ Test if we need to give access to iWMMXt coprocessors 636 @ Test if we need to give access to iWMMXt coprocessors
637 ldr r5, [r10, #TI_FLAGS] 637 ldr r5, [r10, #TI_FLAGS]
638 rsbs r7, r8, #(1 << 8) @ CP 0 or 1 only 638 rsbs r7, r8, #(1 << 8) @ CP 0 or 1 only
639 movcss r7, r5, lsr #(TIF_USING_IWMMXT + 1) 639 movscs r7, r5, lsr #(TIF_USING_IWMMXT + 1)
640 bcs iwmmxt_task_enable 640 bcs iwmmxt_task_enable
641#endif 641#endif
642 ARM( add pc, pc, r8, lsr #6 ) 642 ARM( add pc, pc, r8, lsr #6 )
@@ -872,7 +872,7 @@ __kuser_cmpxchg64: @ 0xffff0f60
872 smp_dmb arm 872 smp_dmb arm
8731: ldrexd r0, r1, [r2] @ load current val 8731: ldrexd r0, r1, [r2] @ load current val
874 eors r3, r0, r4 @ compare with oldval (1) 874 eors r3, r0, r4 @ compare with oldval (1)
875 eoreqs r3, r1, r5 @ compare with oldval (2) 875 eorseq r3, r1, r5 @ compare with oldval (2)
876 strexdeq r3, r6, r7, [r2] @ store newval if eq 876 strexdeq r3, r6, r7, [r2] @ store newval if eq
877 teqeq r3, #1 @ success? 877 teqeq r3, #1 @ success?
878 beq 1b @ if no then retry 878 beq 1b @ if no then retry
@@ -896,8 +896,8 @@ __kuser_cmpxchg64: @ 0xffff0f60
896 ldmia r1, {r6, lr} @ load new val 896 ldmia r1, {r6, lr} @ load new val
8971: ldmia r2, {r0, r1} @ load current val 8971: ldmia r2, {r0, r1} @ load current val
898 eors r3, r0, r4 @ compare with oldval (1) 898 eors r3, r0, r4 @ compare with oldval (1)
899 eoreqs r3, r1, r5 @ compare with oldval (2) 899 eorseq r3, r1, r5 @ compare with oldval (2)
9002: stmeqia r2, {r6, lr} @ store newval if eq 9002: stmiaeq r2, {r6, lr} @ store newval if eq
901 rsbs r0, r3, #0 @ set return val and C flag 901 rsbs r0, r3, #0 @ set return val and C flag
902 ldmfd sp!, {r4, r5, r6, pc} 902 ldmfd sp!, {r4, r5, r6, pc}
903 903
@@ -911,7 +911,7 @@ kuser_cmpxchg64_fixup:
911 mov r7, #0xffff0fff 911 mov r7, #0xffff0fff
912 sub r7, r7, #(0xffff0fff - (0xffff0f60 + (1b - __kuser_cmpxchg64))) 912 sub r7, r7, #(0xffff0fff - (0xffff0f60 + (1b - __kuser_cmpxchg64)))
913 subs r8, r4, r7 913 subs r8, r4, r7
914 rsbcss r8, r8, #(2b - 1b) 914 rsbscs r8, r8, #(2b - 1b)
915 strcs r7, [sp, #S_PC] 915 strcs r7, [sp, #S_PC]
916#if __LINUX_ARM_ARCH__ < 6 916#if __LINUX_ARM_ARCH__ < 6
917 bcc kuser_cmpxchg32_fixup 917 bcc kuser_cmpxchg32_fixup
@@ -969,7 +969,7 @@ kuser_cmpxchg32_fixup:
969 mov r7, #0xffff0fff 969 mov r7, #0xffff0fff
970 sub r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg))) 970 sub r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg)))
971 subs r8, r4, r7 971 subs r8, r4, r7
972 rsbcss r8, r8, #(2b - 1b) 972 rsbscs r8, r8, #(2b - 1b)
973 strcs r7, [sp, #S_PC] 973 strcs r7, [sp, #S_PC]
974 ret lr 974 ret lr
975 .previous 975 .previous
diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
index 0465d65d23de..f7649adef505 100644
--- a/arch/arm/kernel/entry-common.S
+++ b/arch/arm/kernel/entry-common.S
@@ -373,7 +373,7 @@ sys_syscall:
373 movhs scno, #0 373 movhs scno, #0
374 csdb 374 csdb
375#endif 375#endif
376 stmloia sp, {r5, r6} @ shuffle args 376 stmialo sp, {r5, r6} @ shuffle args
377 movlo r0, r1 377 movlo r0, r1
378 movlo r1, r2 378 movlo r1, r2
379 movlo r2, r3 379 movlo r2, r3
diff --git a/arch/arm/kernel/entry-header.S b/arch/arm/kernel/entry-header.S
index 773424843d6e..32051ec5b33f 100644
--- a/arch/arm/kernel/entry-header.S
+++ b/arch/arm/kernel/entry-header.S
@@ -127,7 +127,8 @@
127 */ 127 */
128 .macro v7m_exception_slow_exit ret_r0 128 .macro v7m_exception_slow_exit ret_r0
129 cpsid i 129 cpsid i
130 ldr lr, =EXC_RET_THREADMODE_PROCESSSTACK 130 ldr lr, =exc_ret
131 ldr lr, [lr]
131 132
132 @ read original r12, sp, lr, pc and xPSR 133 @ read original r12, sp, lr, pc and xPSR
133 add r12, sp, #S_IP 134 add r12, sp, #S_IP
@@ -387,8 +388,8 @@
387 badr lr, \ret @ return address 388 badr lr, \ret @ return address
388 .if \reload 389 .if \reload
389 add r1, sp, #S_R0 + S_OFF @ pointer to regs 390 add r1, sp, #S_R0 + S_OFF @ pointer to regs
390 ldmccia r1, {r0 - r6} @ reload r0-r6 391 ldmiacc r1, {r0 - r6} @ reload r0-r6
391 stmccia sp, {r4, r5} @ update stack arguments 392 stmiacc sp, {r4, r5} @ update stack arguments
392 .endif 393 .endif
393 ldrcc pc, [\table, \tmp, lsl #2] @ call sys_* routine 394 ldrcc pc, [\table, \tmp, lsl #2] @ call sys_* routine
394#else 395#else
@@ -396,8 +397,8 @@
396 badr lr, \ret @ return address 397 badr lr, \ret @ return address
397 .if \reload 398 .if \reload
398 add r1, sp, #S_R0 + S_OFF @ pointer to regs 399 add r1, sp, #S_R0 + S_OFF @ pointer to regs
399 ldmccia r1, {r0 - r6} @ reload r0-r6 400 ldmiacc r1, {r0 - r6} @ reload r0-r6
400 stmccia sp, {r4, r5} @ update stack arguments 401 stmiacc sp, {r4, r5} @ update stack arguments
401 .endif 402 .endif
402 ldrcc pc, [\table, \nr, lsl #2] @ call sys_* routine 403 ldrcc pc, [\table, \nr, lsl #2] @ call sys_* routine
403#endif 404#endif
diff --git a/arch/arm/kernel/entry-v7m.S b/arch/arm/kernel/entry-v7m.S
index abcf47848525..19d2dcd6530d 100644
--- a/arch/arm/kernel/entry-v7m.S
+++ b/arch/arm/kernel/entry-v7m.S
@@ -146,3 +146,7 @@ ENTRY(vector_table)
146 .rept CONFIG_CPU_V7M_NUM_IRQ 146 .rept CONFIG_CPU_V7M_NUM_IRQ
147 .long __irq_entry @ External Interrupts 147 .long __irq_entry @ External Interrupts
148 .endr 148 .endr
149 .align 2
150 .globl exc_ret
151exc_ret:
152 .space 4
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S
index ec29de250076..c08d2d890f7b 100644
--- a/arch/arm/kernel/head-nommu.S
+++ b/arch/arm/kernel/head-nommu.S
@@ -439,8 +439,8 @@ M_CLASS(str r6, [r12, #PMSAv8_RLAR_A(3)])
439 str r5, [r12, #PMSAv8_RBAR_A(0)] 439 str r5, [r12, #PMSAv8_RBAR_A(0)]
440 str r6, [r12, #PMSAv8_RLAR_A(0)] 440 str r6, [r12, #PMSAv8_RLAR_A(0)]
441#else 441#else
442 mcr p15, 0, r5, c6, c10, 1 @ PRBAR4 442 mcr p15, 0, r5, c6, c10, 0 @ PRBAR4
443 mcr p15, 0, r6, c6, c10, 2 @ PRLAR4 443 mcr p15, 0, r6, c6, c10, 1 @ PRLAR4
444#endif 444#endif
445#endif 445#endif
446 ret lr 446 ret lr
diff --git a/arch/arm/kernel/hyp-stub.S b/arch/arm/kernel/hyp-stub.S
index 60146e32619a..82a942894fc0 100644
--- a/arch/arm/kernel/hyp-stub.S
+++ b/arch/arm/kernel/hyp-stub.S
@@ -180,8 +180,8 @@ ARM_BE8(orr r7, r7, #(1 << 25)) @ HSCTLR.EE
180 @ Check whether GICv3 system registers are available 180 @ Check whether GICv3 system registers are available
181 mrc p15, 0, r7, c0, c1, 1 @ ID_PFR1 181 mrc p15, 0, r7, c0, c1, 1 @ ID_PFR1
182 ubfx r7, r7, #28, #4 182 ubfx r7, r7, #28, #4
183 cmp r7, #1 183 teq r7, #0
184 bne 2f 184 beq 2f
185 185
186 @ Enable system register accesses 186 @ Enable system register accesses
187 mrc p15, 4, r7, c12, c9, 5 @ ICC_HSRE 187 mrc p15, 4, r7, c12, c9, 5 @ ICC_HSRE
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c
index 9908dacf9229..844861368cd5 100644
--- a/arch/arm/kernel/irq.c
+++ b/arch/arm/kernel/irq.c
@@ -31,7 +31,6 @@
31#include <linux/smp.h> 31#include <linux/smp.h>
32#include <linux/init.h> 32#include <linux/init.h>
33#include <linux/seq_file.h> 33#include <linux/seq_file.h>
34#include <linux/ratelimit.h>
35#include <linux/errno.h> 34#include <linux/errno.h>
36#include <linux/list.h> 35#include <linux/list.h>
37#include <linux/kallsyms.h> 36#include <linux/kallsyms.h>
@@ -109,64 +108,3 @@ int __init arch_probe_nr_irqs(void)
109 return nr_irqs; 108 return nr_irqs;
110} 109}
111#endif 110#endif
112
113#ifdef CONFIG_HOTPLUG_CPU
114static bool migrate_one_irq(struct irq_desc *desc)
115{
116 struct irq_data *d = irq_desc_get_irq_data(desc);
117 const struct cpumask *affinity = irq_data_get_affinity_mask(d);
118 struct irq_chip *c;
119 bool ret = false;
120
121 /*
122 * If this is a per-CPU interrupt, or the affinity does not
123 * include this CPU, then we have nothing to do.
124 */
125 if (irqd_is_per_cpu(d) || !cpumask_test_cpu(smp_processor_id(), affinity))
126 return false;
127
128 if (cpumask_any_and(affinity, cpu_online_mask) >= nr_cpu_ids) {
129 affinity = cpu_online_mask;
130 ret = true;
131 }
132
133 c = irq_data_get_irq_chip(d);
134 if (!c->irq_set_affinity)
135 pr_debug("IRQ%u: unable to set affinity\n", d->irq);
136 else if (c->irq_set_affinity(d, affinity, false) == IRQ_SET_MASK_OK && ret)
137 cpumask_copy(irq_data_get_affinity_mask(d), affinity);
138
139 return ret;
140}
141
142/*
143 * The current CPU has been marked offline. Migrate IRQs off this CPU.
144 * If the affinity settings do not allow other CPUs, force them onto any
145 * available CPU.
146 *
147 * Note: we must iterate over all IRQs, whether they have an attached
148 * action structure or not, as we need to get chained interrupts too.
149 */
150void migrate_irqs(void)
151{
152 unsigned int i;
153 struct irq_desc *desc;
154 unsigned long flags;
155
156 local_irq_save(flags);
157
158 for_each_irq_desc(i, desc) {
159 bool affinity_broken;
160
161 raw_spin_lock(&desc->lock);
162 affinity_broken = migrate_one_irq(desc);
163 raw_spin_unlock(&desc->lock);
164
165 if (affinity_broken)
166 pr_warn_ratelimited("IRQ%u no longer affine to CPU%u\n",
167 i, smp_processor_id());
168 }
169
170 local_irq_restore(flags);
171}
172#endif /* CONFIG_HOTPLUG_CPU */
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c
index dd2eb5f76b9f..76300f3813e8 100644
--- a/arch/arm/kernel/machine_kexec.c
+++ b/arch/arm/kernel/machine_kexec.c
@@ -91,8 +91,11 @@ void machine_crash_nonpanic_core(void *unused)
91 91
92 set_cpu_online(smp_processor_id(), false); 92 set_cpu_online(smp_processor_id(), false);
93 atomic_dec(&waiting_for_crash_ipi); 93 atomic_dec(&waiting_for_crash_ipi);
94 while (1) 94
95 while (1) {
95 cpu_relax(); 96 cpu_relax();
97 wfe();
98 }
96} 99}
97 100
98void crash_smp_send_stop(void) 101void crash_smp_send_stop(void)
diff --git a/arch/arm/kernel/patch.c b/arch/arm/kernel/patch.c
index a50dc00d79a2..d0a05a3bdb96 100644
--- a/arch/arm/kernel/patch.c
+++ b/arch/arm/kernel/patch.c
@@ -16,7 +16,7 @@ struct patch {
16 unsigned int insn; 16 unsigned int insn;
17}; 17};
18 18
19static DEFINE_SPINLOCK(patch_lock); 19static DEFINE_RAW_SPINLOCK(patch_lock);
20 20
21static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags) 21static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags)
22 __acquires(&patch_lock) 22 __acquires(&patch_lock)
@@ -33,7 +33,7 @@ static void __kprobes *patch_map(void *addr, int fixmap, unsigned long *flags)
33 return addr; 33 return addr;
34 34
35 if (flags) 35 if (flags)
36 spin_lock_irqsave(&patch_lock, *flags); 36 raw_spin_lock_irqsave(&patch_lock, *flags);
37 else 37 else
38 __acquire(&patch_lock); 38 __acquire(&patch_lock);
39 39
@@ -48,7 +48,7 @@ static void __kprobes patch_unmap(int fixmap, unsigned long *flags)
48 clear_fixmap(fixmap); 48 clear_fixmap(fixmap);
49 49
50 if (flags) 50 if (flags)
51 spin_unlock_irqrestore(&patch_lock, *flags); 51 raw_spin_unlock_irqrestore(&patch_lock, *flags);
52 else 52 else
53 __release(&patch_lock); 53 __release(&patch_lock);
54} 54}
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c
index 16601d1442d1..72cc0862a30e 100644
--- a/arch/arm/kernel/process.c
+++ b/arch/arm/kernel/process.c
@@ -150,7 +150,7 @@ void __show_regs(struct pt_regs *regs)
150 if ((domain & domain_mask(DOMAIN_USER)) == 150 if ((domain & domain_mask(DOMAIN_USER)) ==
151 domain_val(DOMAIN_USER, DOMAIN_NOACCESS)) 151 domain_val(DOMAIN_USER, DOMAIN_NOACCESS))
152 segment = "none"; 152 segment = "none";
153 else if (fs == get_ds()) 153 else if (fs == KERNEL_DS)
154 segment = "kernel"; 154 segment = "kernel";
155 else 155 else
156 segment = "user"; 156 segment = "user";
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
index 375b13f7e780..5d78b6ac0429 100644
--- a/arch/arm/kernel/setup.c
+++ b/arch/arm/kernel/setup.c
@@ -867,6 +867,9 @@ static void __init request_standard_resources(const struct machine_desc *mdesc)
867 boot_alias_start = phys_to_idmap(start); 867 boot_alias_start = phys_to_idmap(start);
868 if (arm_has_idmap_alias() && boot_alias_start != IDMAP_INVALID_ADDR) { 868 if (arm_has_idmap_alias() && boot_alias_start != IDMAP_INVALID_ADDR) {
869 res = memblock_alloc(sizeof(*res), SMP_CACHE_BYTES); 869 res = memblock_alloc(sizeof(*res), SMP_CACHE_BYTES);
870 if (!res)
871 panic("%s: Failed to allocate %zu bytes\n",
872 __func__, sizeof(*res));
870 res->name = "System RAM (boot alias)"; 873 res->name = "System RAM (boot alias)";
871 res->start = boot_alias_start; 874 res->start = boot_alias_start;
872 res->end = phys_to_idmap(end); 875 res->end = phys_to_idmap(end);
@@ -875,6 +878,9 @@ static void __init request_standard_resources(const struct machine_desc *mdesc)
875 } 878 }
876 879
877 res = memblock_alloc(sizeof(*res), SMP_CACHE_BYTES); 880 res = memblock_alloc(sizeof(*res), SMP_CACHE_BYTES);
881 if (!res)
882 panic("%s: Failed to allocate %zu bytes\n", __func__,
883 sizeof(*res));
878 res->name = "System RAM"; 884 res->name = "System RAM";
879 res->start = start; 885 res->start = start;
880 res->end = end; 886 res->end = end;
diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S
index a8257fc9cf2a..5dc8b80bb693 100644
--- a/arch/arm/kernel/sleep.S
+++ b/arch/arm/kernel/sleep.S
@@ -120,6 +120,14 @@ ENDPROC(cpu_resume_after_mmu)
120 .text 120 .text
121 .align 121 .align
122 122
123#ifdef CONFIG_MCPM
124 .arm
125THUMB( .thumb )
126ENTRY(cpu_resume_no_hyp)
127ARM_BE8(setend be) @ ensure we are in BE mode
128 b no_hyp
129#endif
130
123#ifdef CONFIG_MMU 131#ifdef CONFIG_MMU
124 .arm 132 .arm
125ENTRY(cpu_resume_arm) 133ENTRY(cpu_resume_arm)
@@ -135,6 +143,7 @@ ARM_BE8(setend be) @ ensure we are in BE mode
135 bl __hyp_stub_install_secondary 143 bl __hyp_stub_install_secondary
136#endif 144#endif
137 safe_svcmode_maskall r1 145 safe_svcmode_maskall r1
146no_hyp:
138 mov r1, #0 147 mov r1, #0
139 ALT_SMP(mrc p15, 0, r0, c0, c0, 5) 148 ALT_SMP(mrc p15, 0, r0, c0, c0, 5)
140 ALT_UP_B(1f) 149 ALT_UP_B(1f)
@@ -164,6 +173,9 @@ ENDPROC(cpu_resume)
164#ifdef CONFIG_MMU 173#ifdef CONFIG_MMU
165ENDPROC(cpu_resume_arm) 174ENDPROC(cpu_resume_arm)
166#endif 175#endif
176#ifdef CONFIG_MCPM
177ENDPROC(cpu_resume_no_hyp)
178#endif
167 179
168 .align 2 180 .align 2
169_sleep_save_sp: 181_sleep_save_sp:
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c
index 3bf82232b1be..facd4240ca02 100644
--- a/arch/arm/kernel/smp.c
+++ b/arch/arm/kernel/smp.c
@@ -62,12 +62,6 @@
62 */ 62 */
63struct secondary_data secondary_data; 63struct secondary_data secondary_data;
64 64
65/*
66 * control for which core is the next to come out of the secondary
67 * boot "holding pen"
68 */
69volatile int pen_release = -1;
70
71enum ipi_msg_type { 65enum ipi_msg_type {
72 IPI_WAKEUP, 66 IPI_WAKEUP,
73 IPI_TIMER, 67 IPI_TIMER,
@@ -254,7 +248,7 @@ int __cpu_disable(void)
254 /* 248 /*
255 * OK - migrate IRQs away from this CPU 249 * OK - migrate IRQs away from this CPU
256 */ 250 */
257 migrate_irqs(); 251 irq_migrate_all_off_this_cpu();
258 252
259 /* 253 /*
260 * Flush user cache and TLB mappings, and then remove this CPU 254 * Flush user cache and TLB mappings, and then remove this CPU
@@ -604,8 +598,10 @@ static void ipi_cpu_stop(unsigned int cpu)
604 local_fiq_disable(); 598 local_fiq_disable();
605 local_irq_disable(); 599 local_irq_disable();
606 600
607 while (1) 601 while (1) {
608 cpu_relax(); 602 cpu_relax();
603 wfe();
604 }
609} 605}
610 606
611static DEFINE_PER_CPU(struct completion *, cpu_completion); 607static DEFINE_PER_CPU(struct completion *, cpu_completion);
diff --git a/arch/arm/kernel/smp_twd.c b/arch/arm/kernel/smp_twd.c
index b30eafeef096..3cdc399b9fc3 100644
--- a/arch/arm/kernel/smp_twd.c
+++ b/arch/arm/kernel/smp_twd.c
@@ -100,8 +100,6 @@ static void twd_timer_stop(void)
100 disable_percpu_irq(clk->irq); 100 disable_percpu_irq(clk->irq);
101} 101}
102 102
103#ifdef CONFIG_COMMON_CLK
104
105/* 103/*
106 * Updates clockevent frequency when the cpu frequency changes. 104 * Updates clockevent frequency when the cpu frequency changes.
107 * Called on the cpu that is changing frequency with interrupts disabled. 105 * Called on the cpu that is changing frequency with interrupts disabled.
@@ -143,54 +141,6 @@ static int twd_clk_init(void)
143} 141}
144core_initcall(twd_clk_init); 142core_initcall(twd_clk_init);
145 143
146#elif defined (CONFIG_CPU_FREQ)
147
148#include <linux/cpufreq.h>
149
150/*
151 * Updates clockevent frequency when the cpu frequency changes.
152 * Called on the cpu that is changing frequency with interrupts disabled.
153 */
154static void twd_update_frequency(void *data)
155{
156 twd_timer_rate = clk_get_rate(twd_clk);
157
158 clockevents_update_freq(raw_cpu_ptr(twd_evt), twd_timer_rate);
159}
160
161static int twd_cpufreq_transition(struct notifier_block *nb,
162 unsigned long state, void *data)
163{
164 struct cpufreq_freqs *freqs = data;
165
166 /*
167 * The twd clock events must be reprogrammed to account for the new
168 * frequency. The timer is local to a cpu, so cross-call to the
169 * changing cpu.
170 */
171 if (state == CPUFREQ_POSTCHANGE)
172 smp_call_function_single(freqs->cpu, twd_update_frequency,
173 NULL, 1);
174
175 return NOTIFY_OK;
176}
177
178static struct notifier_block twd_cpufreq_nb = {
179 .notifier_call = twd_cpufreq_transition,
180};
181
182static int twd_cpufreq_init(void)
183{
184 if (twd_evt && raw_cpu_ptr(twd_evt) && !IS_ERR(twd_clk))
185 return cpufreq_register_notifier(&twd_cpufreq_nb,
186 CPUFREQ_TRANSITION_NOTIFIER);
187
188 return 0;
189}
190core_initcall(twd_cpufreq_init);
191
192#endif
193
194static void twd_calibrate_rate(void) 144static void twd_calibrate_rate(void)
195{ 145{
196 unsigned long count; 146 unsigned long count;
@@ -366,21 +316,6 @@ out_free:
366 return err; 316 return err;
367} 317}
368 318
369int __init twd_local_timer_register(struct twd_local_timer *tlt)
370{
371 if (twd_base || twd_evt)
372 return -EBUSY;
373
374 twd_ppi = tlt->res[1].start;
375
376 twd_base = ioremap(tlt->res[0].start, resource_size(&tlt->res[0]));
377 if (!twd_base)
378 return -ENOMEM;
379
380 return twd_local_timer_common_register(NULL);
381}
382
383#ifdef CONFIG_OF
384static int __init twd_local_timer_of_register(struct device_node *np) 319static int __init twd_local_timer_of_register(struct device_node *np)
385{ 320{
386 int err; 321 int err;
@@ -406,4 +341,3 @@ out:
406TIMER_OF_DECLARE(arm_twd_a9, "arm,cortex-a9-twd-timer", twd_local_timer_of_register); 341TIMER_OF_DECLARE(arm_twd_a9, "arm,cortex-a9-twd-timer", twd_local_timer_of_register);
407TIMER_OF_DECLARE(arm_twd_a5, "arm,cortex-a5-twd-timer", twd_local_timer_of_register); 342TIMER_OF_DECLARE(arm_twd_a5, "arm,cortex-a5-twd-timer", twd_local_timer_of_register);
408TIMER_OF_DECLARE(arm_twd_11mp, "arm,arm11mp-twd-timer", twd_local_timer_of_register); 343TIMER_OF_DECLARE(arm_twd_11mp, "arm,arm11mp-twd-timer", twd_local_timer_of_register);
409#endif
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index 92ab36f38795..acd054a42ba2 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -317,10 +317,10 @@ struct oabi_sembuf {
317asmlinkage long sys_oabi_semtimedop(int semid, 317asmlinkage long sys_oabi_semtimedop(int semid,
318 struct oabi_sembuf __user *tsops, 318 struct oabi_sembuf __user *tsops,
319 unsigned nsops, 319 unsigned nsops,
320 const struct timespec __user *timeout) 320 const struct old_timespec32 __user *timeout)
321{ 321{
322 struct sembuf *sops; 322 struct sembuf *sops;
323 struct timespec local_timeout; 323 struct old_timespec32 local_timeout;
324 long err; 324 long err;
325 int i; 325 int i;
326 326
@@ -350,7 +350,7 @@ asmlinkage long sys_oabi_semtimedop(int semid,
350 } else { 350 } else {
351 mm_segment_t fs = get_fs(); 351 mm_segment_t fs = get_fs();
352 set_fs(KERNEL_DS); 352 set_fs(KERNEL_DS);
353 err = sys_semtimedop(semid, sops, nsops, timeout); 353 err = sys_semtimedop_time32(semid, sops, nsops, timeout);
354 set_fs(fs); 354 set_fs(fs);
355 } 355 }
356 kfree(sops); 356 kfree(sops);
@@ -375,7 +375,7 @@ asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
375 return sys_oabi_semtimedop(first, 375 return sys_oabi_semtimedop(first,
376 (struct oabi_sembuf __user *)ptr, 376 (struct oabi_sembuf __user *)ptr,
377 second, 377 second,
378 (const struct timespec __user *)fifth); 378 (const struct old_timespec32 __user *)fifth);
379 default: 379 default:
380 return sys_ipc(call, first, second, third, ptr, fifth); 380 return sys_ipc(call, first, second, third, ptr, fifth);
381 } 381 }
diff --git a/arch/arm/kernel/unwind.c b/arch/arm/kernel/unwind.c
index 0bee233fef9a..314cfb232a63 100644
--- a/arch/arm/kernel/unwind.c
+++ b/arch/arm/kernel/unwind.c
@@ -93,7 +93,7 @@ extern const struct unwind_idx __start_unwind_idx[];
93static const struct unwind_idx *__origin_unwind_idx; 93static const struct unwind_idx *__origin_unwind_idx;
94extern const struct unwind_idx __stop_unwind_idx[]; 94extern const struct unwind_idx __stop_unwind_idx[];
95 95
96static DEFINE_SPINLOCK(unwind_lock); 96static DEFINE_RAW_SPINLOCK(unwind_lock);
97static LIST_HEAD(unwind_tables); 97static LIST_HEAD(unwind_tables);
98 98
99/* Convert a prel31 symbol to an absolute address */ 99/* Convert a prel31 symbol to an absolute address */
@@ -201,7 +201,7 @@ static const struct unwind_idx *unwind_find_idx(unsigned long addr)
201 /* module unwind tables */ 201 /* module unwind tables */
202 struct unwind_table *table; 202 struct unwind_table *table;
203 203
204 spin_lock_irqsave(&unwind_lock, flags); 204 raw_spin_lock_irqsave(&unwind_lock, flags);
205 list_for_each_entry(table, &unwind_tables, list) { 205 list_for_each_entry(table, &unwind_tables, list) {
206 if (addr >= table->begin_addr && 206 if (addr >= table->begin_addr &&
207 addr < table->end_addr) { 207 addr < table->end_addr) {
@@ -213,7 +213,7 @@ static const struct unwind_idx *unwind_find_idx(unsigned long addr)
213 break; 213 break;
214 } 214 }
215 } 215 }
216 spin_unlock_irqrestore(&unwind_lock, flags); 216 raw_spin_unlock_irqrestore(&unwind_lock, flags);
217 } 217 }
218 218
219 pr_debug("%s: idx = %p\n", __func__, idx); 219 pr_debug("%s: idx = %p\n", __func__, idx);
@@ -529,9 +529,9 @@ struct unwind_table *unwind_table_add(unsigned long start, unsigned long size,
529 tab->begin_addr = text_addr; 529 tab->begin_addr = text_addr;
530 tab->end_addr = text_addr + text_size; 530 tab->end_addr = text_addr + text_size;
531 531
532 spin_lock_irqsave(&unwind_lock, flags); 532 raw_spin_lock_irqsave(&unwind_lock, flags);
533 list_add_tail(&tab->list, &unwind_tables); 533 list_add_tail(&tab->list, &unwind_tables);
534 spin_unlock_irqrestore(&unwind_lock, flags); 534 raw_spin_unlock_irqrestore(&unwind_lock, flags);
535 535
536 return tab; 536 return tab;
537} 537}
@@ -543,9 +543,9 @@ void unwind_table_del(struct unwind_table *tab)
543 if (!tab) 543 if (!tab)
544 return; 544 return;
545 545
546 spin_lock_irqsave(&unwind_lock, flags); 546 raw_spin_lock_irqsave(&unwind_lock, flags);
547 list_del(&tab->list); 547 list_del(&tab->list);
548 spin_unlock_irqrestore(&unwind_lock, flags); 548 raw_spin_unlock_irqrestore(&unwind_lock, flags);
549 549
550 kfree(tab); 550 kfree(tab);
551} 551}
diff --git a/arch/arm/kvm/Makefile b/arch/arm/kvm/Makefile
index 48de846f2246..531e59f5be9c 100644
--- a/arch/arm/kvm/Makefile
+++ b/arch/arm/kvm/Makefile
@@ -8,9 +8,8 @@ ifeq ($(plus_virt),+virt)
8 plus_virt_def := -DREQUIRES_VIRT=1 8 plus_virt_def := -DREQUIRES_VIRT=1
9endif 9endif
10 10
11ccflags-y += -Iarch/arm/kvm -Ivirt/kvm/arm/vgic 11ccflags-y += -I $(srctree)/$(src) -I $(srctree)/virt/kvm/arm/vgic
12CFLAGS_arm.o := -I. $(plus_virt_def) 12CFLAGS_arm.o := $(plus_virt_def)
13CFLAGS_mmu.o := -I.
14 13
15AFLAGS_init.o := -Wa,-march=armv7-a$(plus_virt) 14AFLAGS_init.o := -Wa,-march=armv7-a$(plus_virt)
16AFLAGS_interrupts.o := -Wa,-march=armv7-a$(plus_virt) 15AFLAGS_interrupts.o := -Wa,-march=armv7-a$(plus_virt)
diff --git a/arch/arm/kvm/coproc.c b/arch/arm/kvm/coproc.c
index 222c1635bc7a..14915c78bd99 100644
--- a/arch/arm/kvm/coproc.c
+++ b/arch/arm/kvm/coproc.c
@@ -293,15 +293,16 @@ static bool access_cntp_tval(struct kvm_vcpu *vcpu,
293 const struct coproc_params *p, 293 const struct coproc_params *p,
294 const struct coproc_reg *r) 294 const struct coproc_reg *r)
295{ 295{
296 u64 now = kvm_phys_timer_read(); 296 u32 val;
297 u64 val;
298 297
299 if (p->is_write) { 298 if (p->is_write) {
300 val = *vcpu_reg(vcpu, p->Rt1); 299 val = *vcpu_reg(vcpu, p->Rt1);
301 kvm_arm_timer_set_reg(vcpu, KVM_REG_ARM_PTIMER_CVAL, val + now); 300 kvm_arm_timer_write_sysreg(vcpu,
301 TIMER_PTIMER, TIMER_REG_TVAL, val);
302 } else { 302 } else {
303 val = kvm_arm_timer_get_reg(vcpu, KVM_REG_ARM_PTIMER_CVAL); 303 val = kvm_arm_timer_read_sysreg(vcpu,
304 *vcpu_reg(vcpu, p->Rt1) = val - now; 304 TIMER_PTIMER, TIMER_REG_TVAL);
305 *vcpu_reg(vcpu, p->Rt1) = val;
305 } 306 }
306 307
307 return true; 308 return true;
@@ -315,9 +316,11 @@ static bool access_cntp_ctl(struct kvm_vcpu *vcpu,
315 316
316 if (p->is_write) { 317 if (p->is_write) {
317 val = *vcpu_reg(vcpu, p->Rt1); 318 val = *vcpu_reg(vcpu, p->Rt1);
318 kvm_arm_timer_set_reg(vcpu, KVM_REG_ARM_PTIMER_CTL, val); 319 kvm_arm_timer_write_sysreg(vcpu,
320 TIMER_PTIMER, TIMER_REG_CTL, val);
319 } else { 321 } else {
320 val = kvm_arm_timer_get_reg(vcpu, KVM_REG_ARM_PTIMER_CTL); 322 val = kvm_arm_timer_read_sysreg(vcpu,
323 TIMER_PTIMER, TIMER_REG_CTL);
321 *vcpu_reg(vcpu, p->Rt1) = val; 324 *vcpu_reg(vcpu, p->Rt1) = val;
322 } 325 }
323 326
@@ -333,9 +336,11 @@ static bool access_cntp_cval(struct kvm_vcpu *vcpu,
333 if (p->is_write) { 336 if (p->is_write) {
334 val = (u64)*vcpu_reg(vcpu, p->Rt2) << 32; 337 val = (u64)*vcpu_reg(vcpu, p->Rt2) << 32;
335 val |= *vcpu_reg(vcpu, p->Rt1); 338 val |= *vcpu_reg(vcpu, p->Rt1);
336 kvm_arm_timer_set_reg(vcpu, KVM_REG_ARM_PTIMER_CVAL, val); 339 kvm_arm_timer_write_sysreg(vcpu,
340 TIMER_PTIMER, TIMER_REG_CVAL, val);
337 } else { 341 } else {
338 val = kvm_arm_timer_get_reg(vcpu, KVM_REG_ARM_PTIMER_CVAL); 342 val = kvm_arm_timer_read_sysreg(vcpu,
343 TIMER_PTIMER, TIMER_REG_CVAL);
339 *vcpu_reg(vcpu, p->Rt1) = val; 344 *vcpu_reg(vcpu, p->Rt1) = val;
340 *vcpu_reg(vcpu, p->Rt2) = val >> 32; 345 *vcpu_reg(vcpu, p->Rt2) = val >> 32;
341 } 346 }
@@ -1450,6 +1455,6 @@ void kvm_reset_coprocs(struct kvm_vcpu *vcpu)
1450 reset_coproc_regs(vcpu, table, num); 1455 reset_coproc_regs(vcpu, table, num);
1451 1456
1452 for (num = 1; num < NR_CP15_REGS; num++) 1457 for (num = 1; num < NR_CP15_REGS; num++)
1453 if (vcpu_cp15(vcpu, num) == 0x42424242) 1458 WARN(vcpu_cp15(vcpu, num) == 0x42424242,
1454 panic("Didn't reset vcpu_cp15(vcpu, %zi)", num); 1459 "Didn't reset vcpu_cp15(vcpu, %zi)", num);
1455} 1460}
diff --git a/arch/arm/kvm/hyp/cp15-sr.c b/arch/arm/kvm/hyp/cp15-sr.c
index c4782812714c..8bf895ec6e04 100644
--- a/arch/arm/kvm/hyp/cp15-sr.c
+++ b/arch/arm/kvm/hyp/cp15-sr.c
@@ -27,7 +27,6 @@ static u64 *cp15_64(struct kvm_cpu_context *ctxt, int idx)
27 27
28void __hyp_text __sysreg_save_state(struct kvm_cpu_context *ctxt) 28void __hyp_text __sysreg_save_state(struct kvm_cpu_context *ctxt)
29{ 29{
30 ctxt->cp15[c0_MPIDR] = read_sysreg(VMPIDR);
31 ctxt->cp15[c0_CSSELR] = read_sysreg(CSSELR); 30 ctxt->cp15[c0_CSSELR] = read_sysreg(CSSELR);
32 ctxt->cp15[c1_SCTLR] = read_sysreg(SCTLR); 31 ctxt->cp15[c1_SCTLR] = read_sysreg(SCTLR);
33 ctxt->cp15[c1_CPACR] = read_sysreg(CPACR); 32 ctxt->cp15[c1_CPACR] = read_sysreg(CPACR);
diff --git a/arch/arm/kvm/hyp/hyp-entry.S b/arch/arm/kvm/hyp/hyp-entry.S
index aa3f9a9837ac..6ed3cf23fe89 100644
--- a/arch/arm/kvm/hyp/hyp-entry.S
+++ b/arch/arm/kvm/hyp/hyp-entry.S
@@ -176,7 +176,7 @@ THUMB( orr lr, lr, #PSR_T_BIT )
176 msr spsr_cxsf, lr 176 msr spsr_cxsf, lr
177 ldr lr, =panic 177 ldr lr, =panic
178 msr ELR_hyp, lr 178 msr ELR_hyp, lr
179 ldr lr, =kvm_call_hyp 179 ldr lr, =__kvm_call_hyp
180 clrex 180 clrex
181 eret 181 eret
182ENDPROC(__hyp_do_panic) 182ENDPROC(__hyp_do_panic)
diff --git a/arch/arm/kvm/hyp/switch.c b/arch/arm/kvm/hyp/switch.c
index acf1c37fa49c..3b058a5d7c5f 100644
--- a/arch/arm/kvm/hyp/switch.c
+++ b/arch/arm/kvm/hyp/switch.c
@@ -77,7 +77,7 @@ static void __hyp_text __deactivate_traps(struct kvm_vcpu *vcpu)
77static void __hyp_text __activate_vm(struct kvm_vcpu *vcpu) 77static void __hyp_text __activate_vm(struct kvm_vcpu *vcpu)
78{ 78{
79 struct kvm *kvm = kern_hyp_va(vcpu->kvm); 79 struct kvm *kvm = kern_hyp_va(vcpu->kvm);
80 write_sysreg(kvm->arch.vttbr, VTTBR); 80 write_sysreg(kvm_get_vttbr(kvm), VTTBR);
81 write_sysreg(vcpu->arch.midr, VPIDR); 81 write_sysreg(vcpu->arch.midr, VPIDR);
82} 82}
83 83
diff --git a/arch/arm/kvm/hyp/tlb.c b/arch/arm/kvm/hyp/tlb.c
index c0edd450e104..8e4afba73635 100644
--- a/arch/arm/kvm/hyp/tlb.c
+++ b/arch/arm/kvm/hyp/tlb.c
@@ -41,7 +41,7 @@ void __hyp_text __kvm_tlb_flush_vmid(struct kvm *kvm)
41 41
42 /* Switch to requested VMID */ 42 /* Switch to requested VMID */
43 kvm = kern_hyp_va(kvm); 43 kvm = kern_hyp_va(kvm);
44 write_sysreg(kvm->arch.vttbr, VTTBR); 44 write_sysreg(kvm_get_vttbr(kvm), VTTBR);
45 isb(); 45 isb();
46 46
47 write_sysreg(0, TLBIALLIS); 47 write_sysreg(0, TLBIALLIS);
@@ -61,7 +61,7 @@ void __hyp_text __kvm_tlb_flush_local_vmid(struct kvm_vcpu *vcpu)
61 struct kvm *kvm = kern_hyp_va(kern_hyp_va(vcpu)->kvm); 61 struct kvm *kvm = kern_hyp_va(kern_hyp_va(vcpu)->kvm);
62 62
63 /* Switch to requested VMID */ 63 /* Switch to requested VMID */
64 write_sysreg(kvm->arch.vttbr, VTTBR); 64 write_sysreg(kvm_get_vttbr(kvm), VTTBR);
65 isb(); 65 isb();
66 66
67 write_sysreg(0, TLBIALL); 67 write_sysreg(0, TLBIALL);
diff --git a/arch/arm/kvm/interrupts.S b/arch/arm/kvm/interrupts.S
index 80a1d6cd261c..a08e6419ebe9 100644
--- a/arch/arm/kvm/interrupts.S
+++ b/arch/arm/kvm/interrupts.S
@@ -42,7 +42,7 @@
42 * r12: caller save 42 * r12: caller save
43 * rest: callee save 43 * rest: callee save
44 */ 44 */
45ENTRY(kvm_call_hyp) 45ENTRY(__kvm_call_hyp)
46 hvc #0 46 hvc #0
47 bx lr 47 bx lr
48ENDPROC(kvm_call_hyp) 48ENDPROC(__kvm_call_hyp)
diff --git a/arch/arm/kvm/reset.c b/arch/arm/kvm/reset.c
index 5ed0c3ee33d6..e53327912adc 100644
--- a/arch/arm/kvm/reset.c
+++ b/arch/arm/kvm/reset.c
@@ -26,6 +26,7 @@
26#include <asm/cputype.h> 26#include <asm/cputype.h>
27#include <asm/kvm_arm.h> 27#include <asm/kvm_arm.h>
28#include <asm/kvm_coproc.h> 28#include <asm/kvm_coproc.h>
29#include <asm/kvm_emulate.h>
29 30
30#include <kvm/arm_arch_timer.h> 31#include <kvm/arm_arch_timer.h>
31 32
@@ -69,6 +70,29 @@ int kvm_reset_vcpu(struct kvm_vcpu *vcpu)
69 /* Reset CP15 registers */ 70 /* Reset CP15 registers */
70 kvm_reset_coprocs(vcpu); 71 kvm_reset_coprocs(vcpu);
71 72
73 /*
74 * Additional reset state handling that PSCI may have imposed on us.
75 * Must be done after all the sys_reg reset.
76 */
77 if (READ_ONCE(vcpu->arch.reset_state.reset)) {
78 unsigned long target_pc = vcpu->arch.reset_state.pc;
79
80 /* Gracefully handle Thumb2 entry point */
81 if (target_pc & 1) {
82 target_pc &= ~1UL;
83 vcpu_set_thumb(vcpu);
84 }
85
86 /* Propagate caller endianness */
87 if (vcpu->arch.reset_state.be)
88 kvm_vcpu_set_be(vcpu);
89
90 *vcpu_pc(vcpu) = target_pc;
91 vcpu_set_reg(vcpu, 0, vcpu->arch.reset_state.r0);
92
93 vcpu->arch.reset_state.reset = false;
94 }
95
72 /* Reset arch_timer context */ 96 /* Reset arch_timer context */
73 return kvm_timer_vcpu_reset(vcpu); 97 return kvm_timer_vcpu_reset(vcpu);
74} 98}
diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile
index ad25fd1872c7..0bff0176db2c 100644
--- a/arch/arm/lib/Makefile
+++ b/arch/arm/lib/Makefile
@@ -39,7 +39,7 @@ $(obj)/csumpartialcopy.o: $(obj)/csumpartialcopygeneric.S
39$(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S 39$(obj)/csumpartialcopyuser.o: $(obj)/csumpartialcopygeneric.S
40 40
41ifeq ($(CONFIG_KERNEL_MODE_NEON),y) 41ifeq ($(CONFIG_KERNEL_MODE_NEON),y)
42 NEON_FLAGS := -mfloat-abi=softfp -mfpu=neon 42 NEON_FLAGS := -march=armv7-a -mfloat-abi=softfp -mfpu=neon
43 CFLAGS_xor-neon.o += $(NEON_FLAGS) 43 CFLAGS_xor-neon.o += $(NEON_FLAGS)
44 obj-$(CONFIG_XOR_BLOCKS) += xor-neon.o 44 obj-$(CONFIG_XOR_BLOCKS) += xor-neon.o
45endif 45endif
diff --git a/arch/arm/lib/bitops.h b/arch/arm/lib/bitops.h
index 93cddab73072..95bd35991288 100644
--- a/arch/arm/lib/bitops.h
+++ b/arch/arm/lib/bitops.h
@@ -7,7 +7,7 @@
7ENTRY( \name ) 7ENTRY( \name )
8UNWIND( .fnstart ) 8UNWIND( .fnstart )
9 ands ip, r1, #3 9 ands ip, r1, #3
10 strneb r1, [ip] @ assert word-aligned 10 strbne r1, [ip] @ assert word-aligned
11 mov r2, #1 11 mov r2, #1
12 and r3, r0, #31 @ Get bit offset 12 and r3, r0, #31 @ Get bit offset
13 mov r0, r0, lsr #5 13 mov r0, r0, lsr #5
@@ -32,7 +32,7 @@ ENDPROC(\name )
32ENTRY( \name ) 32ENTRY( \name )
33UNWIND( .fnstart ) 33UNWIND( .fnstart )
34 ands ip, r1, #3 34 ands ip, r1, #3
35 strneb r1, [ip] @ assert word-aligned 35 strbne r1, [ip] @ assert word-aligned
36 mov r2, #1 36 mov r2, #1
37 and r3, r0, #31 @ Get bit offset 37 and r3, r0, #31 @ Get bit offset
38 mov r0, r0, lsr #5 38 mov r0, r0, lsr #5
@@ -62,7 +62,7 @@ ENDPROC(\name )
62ENTRY( \name ) 62ENTRY( \name )
63UNWIND( .fnstart ) 63UNWIND( .fnstart )
64 ands ip, r1, #3 64 ands ip, r1, #3
65 strneb r1, [ip] @ assert word-aligned 65 strbne r1, [ip] @ assert word-aligned
66 and r2, r0, #31 66 and r2, r0, #31
67 mov r0, r0, lsr #5 67 mov r0, r0, lsr #5
68 mov r3, #1 68 mov r3, #1
@@ -89,7 +89,7 @@ ENDPROC(\name )
89ENTRY( \name ) 89ENTRY( \name )
90UNWIND( .fnstart ) 90UNWIND( .fnstart )
91 ands ip, r1, #3 91 ands ip, r1, #3
92 strneb r1, [ip] @ assert word-aligned 92 strbne r1, [ip] @ assert word-aligned
93 and r3, r0, #31 93 and r3, r0, #31
94 mov r0, r0, lsr #5 94 mov r0, r0, lsr #5
95 save_and_disable_irqs ip 95 save_and_disable_irqs ip
diff --git a/arch/arm/lib/clear_user.S b/arch/arm/lib/clear_user.S
index e936352ccb00..55946e3fa2ba 100644
--- a/arch/arm/lib/clear_user.S
+++ b/arch/arm/lib/clear_user.S
@@ -44,7 +44,7 @@ UNWIND(.save {r1, lr})
44 strusr r2, r0, 1, ne, rept=2 44 strusr r2, r0, 1, ne, rept=2
45 tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1 45 tst r1, #1 @ x1 x0 x1 x0 x1 x0 x1
46 it ne @ explicit IT needed for the label 46 it ne @ explicit IT needed for the label
47USER( strnebt r2, [r0]) 47USER( strbtne r2, [r0])
48 mov r0, #0 48 mov r0, #0
49 ldmfd sp!, {r1, pc} 49 ldmfd sp!, {r1, pc}
50UNWIND(.fnend) 50UNWIND(.fnend)
diff --git a/arch/arm/lib/copy_from_user.S b/arch/arm/lib/copy_from_user.S
index 0d4c189c7f4f..6a3419e2c6d8 100644
--- a/arch/arm/lib/copy_from_user.S
+++ b/arch/arm/lib/copy_from_user.S
@@ -91,7 +91,7 @@
91 .endm 91 .endm
92 92
93 .macro str1b ptr reg cond=al abort 93 .macro str1b ptr reg cond=al abort
94 str\cond\()b \reg, [\ptr], #1 94 strb\cond \reg, [\ptr], #1
95 .endm 95 .endm
96 96
97 .macro enter reg1 reg2 97 .macro enter reg1 reg2
diff --git a/arch/arm/lib/copy_page.S b/arch/arm/lib/copy_page.S
index 6ee2f6706f86..b84ce1792043 100644
--- a/arch/arm/lib/copy_page.S
+++ b/arch/arm/lib/copy_page.S
@@ -39,9 +39,9 @@ ENTRY(copy_page)
39 .endr 39 .endr
40 subs r2, r2, #1 @ 1 40 subs r2, r2, #1 @ 1
41 stmia r0!, {r3, r4, ip, lr} @ 4 41 stmia r0!, {r3, r4, ip, lr} @ 4
42 ldmgtia r1!, {r3, r4, ip, lr} @ 4 42 ldmiagt r1!, {r3, r4, ip, lr} @ 4
43 bgt 1b @ 1 43 bgt 1b @ 1
44 PLD( ldmeqia r1!, {r3, r4, ip, lr} ) 44 PLD( ldmiaeq r1!, {r3, r4, ip, lr} )
45 PLD( beq 2b ) 45 PLD( beq 2b )
46 ldmfd sp!, {r4, pc} @ 3 46 ldmfd sp!, {r4, pc} @ 3
47ENDPROC(copy_page) 47ENDPROC(copy_page)
diff --git a/arch/arm/lib/copy_template.S b/arch/arm/lib/copy_template.S
index 652e4d98cd47..a11f2c25e03a 100644
--- a/arch/arm/lib/copy_template.S
+++ b/arch/arm/lib/copy_template.S
@@ -99,7 +99,7 @@
99 99
100 CALGN( ands ip, r0, #31 ) 100 CALGN( ands ip, r0, #31 )
101 CALGN( rsb r3, ip, #32 ) 101 CALGN( rsb r3, ip, #32 )
102 CALGN( sbcnes r4, r3, r2 ) @ C is always set here 102 CALGN( sbcsne r4, r3, r2 ) @ C is always set here
103 CALGN( bcs 2f ) 103 CALGN( bcs 2f )
104 CALGN( adr r4, 6f ) 104 CALGN( adr r4, 6f )
105 CALGN( subs r2, r2, r3 ) @ C gets set 105 CALGN( subs r2, r2, r3 ) @ C gets set
@@ -204,7 +204,7 @@
204 204
205 CALGN( ands ip, r0, #31 ) 205 CALGN( ands ip, r0, #31 )
206 CALGN( rsb ip, ip, #32 ) 206 CALGN( rsb ip, ip, #32 )
207 CALGN( sbcnes r4, ip, r2 ) @ C is always set here 207 CALGN( sbcsne r4, ip, r2 ) @ C is always set here
208 CALGN( subcc r2, r2, ip ) 208 CALGN( subcc r2, r2, ip )
209 CALGN( bcc 15f ) 209 CALGN( bcc 15f )
210 210
@@ -241,7 +241,7 @@
241 orr r9, r9, ip, lspush #\push 241 orr r9, r9, ip, lspush #\push
242 mov ip, ip, lspull #\pull 242 mov ip, ip, lspull #\pull
243 orr ip, ip, lr, lspush #\push 243 orr ip, ip, lr, lspush #\push
244 str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, , abort=19f 244 str8w r0, r3, r4, r5, r6, r7, r8, r9, ip, abort=19f
245 bge 12b 245 bge 12b
246 PLD( cmn r2, #96 ) 246 PLD( cmn r2, #96 )
247 PLD( bge 13b ) 247 PLD( bge 13b )
diff --git a/arch/arm/lib/copy_to_user.S b/arch/arm/lib/copy_to_user.S
index 97a6ff4b7e3c..c7d08096e354 100644
--- a/arch/arm/lib/copy_to_user.S
+++ b/arch/arm/lib/copy_to_user.S
@@ -49,7 +49,7 @@
49 .endm 49 .endm
50 50
51 .macro ldr1b ptr reg cond=al abort 51 .macro ldr1b ptr reg cond=al abort
52 ldr\cond\()b \reg, [\ptr], #1 52 ldrb\cond \reg, [\ptr], #1
53 .endm 53 .endm
54 54
55#ifdef CONFIG_CPU_USE_DOMAINS 55#ifdef CONFIG_CPU_USE_DOMAINS
diff --git a/arch/arm/lib/csumpartial.S b/arch/arm/lib/csumpartial.S
index 984e0f29d548..bd84e2db353b 100644
--- a/arch/arm/lib/csumpartial.S
+++ b/arch/arm/lib/csumpartial.S
@@ -40,9 +40,9 @@ td3 .req lr
40 /* we must have at least one byte. */ 40 /* we must have at least one byte. */
41 tst buf, #1 @ odd address? 41 tst buf, #1 @ odd address?
42 movne sum, sum, ror #8 42 movne sum, sum, ror #8
43 ldrneb td0, [buf], #1 43 ldrbne td0, [buf], #1
44 subne len, len, #1 44 subne len, len, #1
45 adcnes sum, sum, td0, put_byte_1 45 adcsne sum, sum, td0, put_byte_1
46 46
47.Lless4: tst len, #6 47.Lless4: tst len, #6
48 beq .Lless8_byte 48 beq .Lless8_byte
@@ -68,8 +68,8 @@ td3 .req lr
68 bne .Lless8_wordlp 68 bne .Lless8_wordlp
69 69
70.Lless8_byte: tst len, #1 @ odd number of bytes 70.Lless8_byte: tst len, #1 @ odd number of bytes
71 ldrneb td0, [buf], #1 @ include last byte 71 ldrbne td0, [buf], #1 @ include last byte
72 adcnes sum, sum, td0, put_byte_0 @ update checksum 72 adcsne sum, sum, td0, put_byte_0 @ update checksum
73 73
74.Ldone: adc r0, sum, #0 @ collect up the last carry 74.Ldone: adc r0, sum, #0 @ collect up the last carry
75 ldr td0, [sp], #4 75 ldr td0, [sp], #4
@@ -78,17 +78,17 @@ td3 .req lr
78 ldr pc, [sp], #4 @ return 78 ldr pc, [sp], #4 @ return
79 79
80.Lnot_aligned: tst buf, #1 @ odd address 80.Lnot_aligned: tst buf, #1 @ odd address
81 ldrneb td0, [buf], #1 @ make even 81 ldrbne td0, [buf], #1 @ make even
82 subne len, len, #1 82 subne len, len, #1
83 adcnes sum, sum, td0, put_byte_1 @ update checksum 83 adcsne sum, sum, td0, put_byte_1 @ update checksum
84 84
85 tst buf, #2 @ 32-bit aligned? 85 tst buf, #2 @ 32-bit aligned?
86#if __LINUX_ARM_ARCH__ >= 4 86#if __LINUX_ARM_ARCH__ >= 4
87 ldrneh td0, [buf], #2 @ make 32-bit aligned 87 ldrhne td0, [buf], #2 @ make 32-bit aligned
88 subne len, len, #2 88 subne len, len, #2
89#else 89#else
90 ldrneb td0, [buf], #1 90 ldrbne td0, [buf], #1
91 ldrneb ip, [buf], #1 91 ldrbne ip, [buf], #1
92 subne len, len, #2 92 subne len, len, #2
93#ifndef __ARMEB__ 93#ifndef __ARMEB__
94 orrne td0, td0, ip, lsl #8 94 orrne td0, td0, ip, lsl #8
@@ -96,7 +96,7 @@ td3 .req lr
96 orrne td0, ip, td0, lsl #8 96 orrne td0, ip, td0, lsl #8
97#endif 97#endif
98#endif 98#endif
99 adcnes sum, sum, td0 @ update checksum 99 adcsne sum, sum, td0 @ update checksum
100 ret lr 100 ret lr
101 101
102ENTRY(csum_partial) 102ENTRY(csum_partial)
diff --git a/arch/arm/lib/csumpartialcopygeneric.S b/arch/arm/lib/csumpartialcopygeneric.S
index 10b45909610c..08e17758cbea 100644
--- a/arch/arm/lib/csumpartialcopygeneric.S
+++ b/arch/arm/lib/csumpartialcopygeneric.S
@@ -148,9 +148,9 @@ FN_ENTRY
148 strb r5, [dst], #1 148 strb r5, [dst], #1
149 mov r5, r4, get_byte_2 149 mov r5, r4, get_byte_2
150.Lexit: tst len, #1 150.Lexit: tst len, #1
151 strneb r5, [dst], #1 151 strbne r5, [dst], #1
152 andne r5, r5, #255 152 andne r5, r5, #255
153 adcnes sum, sum, r5, put_byte_0 153 adcsne sum, sum, r5, put_byte_0
154 154
155 /* 155 /*
156 * If the dst pointer was not 16-bit aligned, we 156 * If the dst pointer was not 16-bit aligned, we
diff --git a/arch/arm/lib/csumpartialcopyuser.S b/arch/arm/lib/csumpartialcopyuser.S
index b83fdc06286a..f4716d98e0b4 100644
--- a/arch/arm/lib/csumpartialcopyuser.S
+++ b/arch/arm/lib/csumpartialcopyuser.S
@@ -95,7 +95,7 @@
95 add r2, r2, r1 95 add r2, r2, r1
96 mov r0, #0 @ zero the buffer 96 mov r0, #0 @ zero the buffer
979002: teq r2, r1 979002: teq r2, r1
98 strneb r0, [r1], #1 98 strbne r0, [r1], #1
99 bne 9002b 99 bne 9002b
100 load_regs 100 load_regs
101 .popsection 101 .popsection
diff --git a/arch/arm/lib/div64.S b/arch/arm/lib/div64.S
index a9eafe4981eb..4d80f690c48b 100644
--- a/arch/arm/lib/div64.S
+++ b/arch/arm/lib/div64.S
@@ -88,8 +88,8 @@ UNWIND(.fnstart)
88 @ Break out early if dividend reaches 0. 88 @ Break out early if dividend reaches 0.
892: cmp xh, yl 892: cmp xh, yl
90 orrcs yh, yh, ip 90 orrcs yh, yh, ip
91 subcss xh, xh, yl 91 subscs xh, xh, yl
92 movnes ip, ip, lsr #1 92 movsne ip, ip, lsr #1
93 mov yl, yl, lsr #1 93 mov yl, yl, lsr #1
94 bne 2b 94 bne 2b
95 95
diff --git a/arch/arm/lib/floppydma.S b/arch/arm/lib/floppydma.S
index 617150b1baef..de68d3b343e3 100644
--- a/arch/arm/lib/floppydma.S
+++ b/arch/arm/lib/floppydma.S
@@ -14,8 +14,8 @@
14 .global floppy_fiqin_end 14 .global floppy_fiqin_end
15ENTRY(floppy_fiqin_start) 15ENTRY(floppy_fiqin_start)
16 subs r9, r9, #1 16 subs r9, r9, #1
17 ldrgtb r12, [r11, #-4] 17 ldrbgt r12, [r11, #-4]
18 ldrleb r12, [r11], #0 18 ldrble r12, [r11], #0
19 strb r12, [r10], #1 19 strb r12, [r10], #1
20 subs pc, lr, #4 20 subs pc, lr, #4
21floppy_fiqin_end: 21floppy_fiqin_end:
@@ -23,10 +23,10 @@ floppy_fiqin_end:
23 .global floppy_fiqout_end 23 .global floppy_fiqout_end
24ENTRY(floppy_fiqout_start) 24ENTRY(floppy_fiqout_start)
25 subs r9, r9, #1 25 subs r9, r9, #1
26 ldrgeb r12, [r10], #1 26 ldrbge r12, [r10], #1
27 movlt r12, #0 27 movlt r12, #0
28 strleb r12, [r11], #0 28 strble r12, [r11], #0
29 subles pc, lr, #4 29 subsle pc, lr, #4
30 strb r12, [r11, #-4] 30 strb r12, [r11, #-4]
31 subs pc, lr, #4 31 subs pc, lr, #4
32floppy_fiqout_end: 32floppy_fiqout_end:
diff --git a/arch/arm/lib/io-readsb.S b/arch/arm/lib/io-readsb.S
index c31b2f3153f1..91038a0a77b5 100644
--- a/arch/arm/lib/io-readsb.S
+++ b/arch/arm/lib/io-readsb.S
@@ -16,10 +16,10 @@
16 cmp ip, #2 16 cmp ip, #2
17 ldrb r3, [r0] 17 ldrb r3, [r0]
18 strb r3, [r1], #1 18 strb r3, [r1], #1
19 ldrgeb r3, [r0] 19 ldrbge r3, [r0]
20 strgeb r3, [r1], #1 20 strbge r3, [r1], #1
21 ldrgtb r3, [r0] 21 ldrbgt r3, [r0]
22 strgtb r3, [r1], #1 22 strbgt r3, [r1], #1
23 subs r2, r2, ip 23 subs r2, r2, ip
24 bne .Linsb_aligned 24 bne .Linsb_aligned
25 25
@@ -72,7 +72,7 @@ ENTRY(__raw_readsb)
72 bpl .Linsb_16_lp 72 bpl .Linsb_16_lp
73 73
74 tst r2, #15 74 tst r2, #15
75 ldmeqfd sp!, {r4 - r6, pc} 75 ldmfdeq sp!, {r4 - r6, pc}
76 76
77.Linsb_no_16: tst r2, #8 77.Linsb_no_16: tst r2, #8
78 beq .Linsb_no_8 78 beq .Linsb_no_8
@@ -109,15 +109,15 @@ ENTRY(__raw_readsb)
109 str r3, [r1], #4 109 str r3, [r1], #4
110 110
111.Linsb_no_4: ands r2, r2, #3 111.Linsb_no_4: ands r2, r2, #3
112 ldmeqfd sp!, {r4 - r6, pc} 112 ldmfdeq sp!, {r4 - r6, pc}
113 113
114 cmp r2, #2 114 cmp r2, #2
115 ldrb r3, [r0] 115 ldrb r3, [r0]
116 strb r3, [r1], #1 116 strb r3, [r1], #1
117 ldrgeb r3, [r0] 117 ldrbge r3, [r0]
118 strgeb r3, [r1], #1 118 strbge r3, [r1], #1
119 ldrgtb r3, [r0] 119 ldrbgt r3, [r0]
120 strgtb r3, [r1] 120 strbgt r3, [r1]
121 121
122 ldmfd sp!, {r4 - r6, pc} 122 ldmfd sp!, {r4 - r6, pc}
123ENDPROC(__raw_readsb) 123ENDPROC(__raw_readsb)
diff --git a/arch/arm/lib/io-readsl.S b/arch/arm/lib/io-readsl.S
index 2ed86fa5465f..f2e2064318d2 100644
--- a/arch/arm/lib/io-readsl.S
+++ b/arch/arm/lib/io-readsl.S
@@ -30,7 +30,7 @@ ENTRY(__raw_readsl)
302: movs r2, r2, lsl #31 302: movs r2, r2, lsl #31
31 ldrcs r3, [r0, #0] 31 ldrcs r3, [r0, #0]
32 ldrcs ip, [r0, #0] 32 ldrcs ip, [r0, #0]
33 stmcsia r1!, {r3, ip} 33 stmiacs r1!, {r3, ip}
34 ldrne r3, [r0, #0] 34 ldrne r3, [r0, #0]
35 strne r3, [r1, #0] 35 strne r3, [r1, #0]
36 ret lr 36 ret lr
diff --git a/arch/arm/lib/io-readsw-armv3.S b/arch/arm/lib/io-readsw-armv3.S
index 413da9914529..8b25b69c516e 100644
--- a/arch/arm/lib/io-readsw-armv3.S
+++ b/arch/arm/lib/io-readsw-armv3.S
@@ -68,7 +68,7 @@ ENTRY(__raw_readsw)
68 bpl .Linsw_8_lp 68 bpl .Linsw_8_lp
69 69
70 tst r2, #7 70 tst r2, #7
71 ldmeqfd sp!, {r4, r5, r6, pc} 71 ldmfdeq sp!, {r4, r5, r6, pc}
72 72
73.Lno_insw_8: tst r2, #4 73.Lno_insw_8: tst r2, #4
74 beq .Lno_insw_4 74 beq .Lno_insw_4
@@ -97,9 +97,9 @@ ENTRY(__raw_readsw)
97 97
98.Lno_insw_2: tst r2, #1 98.Lno_insw_2: tst r2, #1
99 ldrne r3, [r0] 99 ldrne r3, [r0]
100 strneb r3, [r1], #1 100 strbne r3, [r1], #1
101 movne r3, r3, lsr #8 101 movne r3, r3, lsr #8
102 strneb r3, [r1] 102 strbne r3, [r1]
103 103
104 ldmfd sp!, {r4, r5, r6, pc} 104 ldmfd sp!, {r4, r5, r6, pc}
105 105
diff --git a/arch/arm/lib/io-readsw-armv4.S b/arch/arm/lib/io-readsw-armv4.S
index d9a45e9692ae..5efdd66f5dcd 100644
--- a/arch/arm/lib/io-readsw-armv4.S
+++ b/arch/arm/lib/io-readsw-armv4.S
@@ -76,8 +76,8 @@ ENTRY(__raw_readsw)
76 pack r3, r3, ip 76 pack r3, r3, ip
77 str r3, [r1], #4 77 str r3, [r1], #4
78 78
79.Lno_insw_2: ldrneh r3, [r0] 79.Lno_insw_2: ldrhne r3, [r0]
80 strneh r3, [r1] 80 strhne r3, [r1]
81 81
82 ldmfd sp!, {r4, r5, pc} 82 ldmfd sp!, {r4, r5, pc}
83 83
@@ -94,7 +94,7 @@ ENTRY(__raw_readsw)
94#endif 94#endif
95 95
96.Linsw_noalign: stmfd sp!, {r4, lr} 96.Linsw_noalign: stmfd sp!, {r4, lr}
97 ldrccb ip, [r1, #-1]! 97 ldrbcc ip, [r1, #-1]!
98 bcc 1f 98 bcc 1f
99 99
100 ldrh ip, [r0] 100 ldrh ip, [r0]
@@ -121,11 +121,11 @@ ENTRY(__raw_readsw)
121 121
1223: tst r2, #1 1223: tst r2, #1
123 strb ip, [r1], #1 123 strb ip, [r1], #1
124 ldrneh ip, [r0] 124 ldrhne ip, [r0]
125 _BE_ONLY_( movne ip, ip, ror #8 ) 125 _BE_ONLY_( movne ip, ip, ror #8 )
126 strneb ip, [r1], #1 126 strbne ip, [r1], #1
127 _LE_ONLY_( movne ip, ip, lsr #8 ) 127 _LE_ONLY_( movne ip, ip, lsr #8 )
128 _BE_ONLY_( movne ip, ip, lsr #24 ) 128 _BE_ONLY_( movne ip, ip, lsr #24 )
129 strneb ip, [r1] 129 strbne ip, [r1]
130 ldmfd sp!, {r4, pc} 130 ldmfd sp!, {r4, pc}
131ENDPROC(__raw_readsw) 131ENDPROC(__raw_readsw)
diff --git a/arch/arm/lib/io-writesb.S b/arch/arm/lib/io-writesb.S
index a46bbc9b168b..7d2881a2381e 100644
--- a/arch/arm/lib/io-writesb.S
+++ b/arch/arm/lib/io-writesb.S
@@ -36,10 +36,10 @@
36 cmp ip, #2 36 cmp ip, #2
37 ldrb r3, [r1], #1 37 ldrb r3, [r1], #1
38 strb r3, [r0] 38 strb r3, [r0]
39 ldrgeb r3, [r1], #1 39 ldrbge r3, [r1], #1
40 strgeb r3, [r0] 40 strbge r3, [r0]
41 ldrgtb r3, [r1], #1 41 ldrbgt r3, [r1], #1
42 strgtb r3, [r0] 42 strbgt r3, [r0]
43 subs r2, r2, ip 43 subs r2, r2, ip
44 bne .Loutsb_aligned 44 bne .Loutsb_aligned
45 45
@@ -64,7 +64,7 @@ ENTRY(__raw_writesb)
64 bpl .Loutsb_16_lp 64 bpl .Loutsb_16_lp
65 65
66 tst r2, #15 66 tst r2, #15
67 ldmeqfd sp!, {r4, r5, pc} 67 ldmfdeq sp!, {r4, r5, pc}
68 68
69.Loutsb_no_16: tst r2, #8 69.Loutsb_no_16: tst r2, #8
70 beq .Loutsb_no_8 70 beq .Loutsb_no_8
@@ -80,15 +80,15 @@ ENTRY(__raw_writesb)
80 outword r3 80 outword r3
81 81
82.Loutsb_no_4: ands r2, r2, #3 82.Loutsb_no_4: ands r2, r2, #3
83 ldmeqfd sp!, {r4, r5, pc} 83 ldmfdeq sp!, {r4, r5, pc}
84 84
85 cmp r2, #2 85 cmp r2, #2
86 ldrb r3, [r1], #1 86 ldrb r3, [r1], #1
87 strb r3, [r0] 87 strb r3, [r0]
88 ldrgeb r3, [r1], #1 88 ldrbge r3, [r1], #1
89 strgeb r3, [r0] 89 strbge r3, [r0]
90 ldrgtb r3, [r1] 90 ldrbgt r3, [r1]
91 strgtb r3, [r0] 91 strbgt r3, [r0]
92 92
93 ldmfd sp!, {r4, r5, pc} 93 ldmfd sp!, {r4, r5, pc}
94ENDPROC(__raw_writesb) 94ENDPROC(__raw_writesb)
diff --git a/arch/arm/lib/io-writesl.S b/arch/arm/lib/io-writesl.S
index 4ea2435988c1..7596ac0c90b0 100644
--- a/arch/arm/lib/io-writesl.S
+++ b/arch/arm/lib/io-writesl.S
@@ -28,7 +28,7 @@ ENTRY(__raw_writesl)
28 bpl 1b 28 bpl 1b
29 ldmfd sp!, {r4, lr} 29 ldmfd sp!, {r4, lr}
302: movs r2, r2, lsl #31 302: movs r2, r2, lsl #31
31 ldmcsia r1!, {r3, ip} 31 ldmiacs r1!, {r3, ip}
32 strcs r3, [r0, #0] 32 strcs r3, [r0, #0]
33 ldrne r3, [r1, #0] 33 ldrne r3, [r1, #0]
34 strcs ip, [r0, #0] 34 strcs ip, [r0, #0]
diff --git a/arch/arm/lib/io-writesw-armv3.S b/arch/arm/lib/io-writesw-armv3.S
index 121789eb6802..cb94b9b49405 100644
--- a/arch/arm/lib/io-writesw-armv3.S
+++ b/arch/arm/lib/io-writesw-armv3.S
@@ -79,7 +79,7 @@ ENTRY(__raw_writesw)
79 bpl .Loutsw_8_lp 79 bpl .Loutsw_8_lp
80 80
81 tst r2, #7 81 tst r2, #7
82 ldmeqfd sp!, {r4, r5, r6, pc} 82 ldmfdeq sp!, {r4, r5, r6, pc}
83 83
84.Lno_outsw_8: tst r2, #4 84.Lno_outsw_8: tst r2, #4
85 beq .Lno_outsw_4 85 beq .Lno_outsw_4
diff --git a/arch/arm/lib/io-writesw-armv4.S b/arch/arm/lib/io-writesw-armv4.S
index 269f90c51ad2..e6645b2f249e 100644
--- a/arch/arm/lib/io-writesw-armv4.S
+++ b/arch/arm/lib/io-writesw-armv4.S
@@ -61,8 +61,8 @@ ENTRY(__raw_writesw)
61 ldr r3, [r1], #4 61 ldr r3, [r1], #4
62 outword r3 62 outword r3
63 63
64.Lno_outsw_2: ldrneh r3, [r1] 64.Lno_outsw_2: ldrhne r3, [r1]
65 strneh r3, [r0] 65 strhne r3, [r0]
66 66
67 ldmfd sp!, {r4, r5, pc} 67 ldmfd sp!, {r4, r5, pc}
68 68
@@ -95,6 +95,6 @@ ENTRY(__raw_writesw)
95 95
96 tst r2, #1 96 tst r2, #1
973: movne ip, r3, lsr #8 973: movne ip, r3, lsr #8
98 strneh ip, [r0] 98 strhne ip, [r0]
99 ret lr 99 ret lr
100ENDPROC(__raw_writesw) 100ENDPROC(__raw_writesw)
diff --git a/arch/arm/lib/lib1funcs.S b/arch/arm/lib/lib1funcs.S
index 9397b2e532af..c23f9d9e2970 100644
--- a/arch/arm/lib/lib1funcs.S
+++ b/arch/arm/lib/lib1funcs.S
@@ -96,7 +96,7 @@ Boston, MA 02111-1307, USA. */
96 subhs \dividend, \dividend, \divisor, lsr #3 96 subhs \dividend, \dividend, \divisor, lsr #3
97 orrhs \result, \result, \curbit, lsr #3 97 orrhs \result, \result, \curbit, lsr #3
98 cmp \dividend, #0 @ Early termination? 98 cmp \dividend, #0 @ Early termination?
99 movnes \curbit, \curbit, lsr #4 @ No, any more bits to do? 99 movsne \curbit, \curbit, lsr #4 @ No, any more bits to do?
100 movne \divisor, \divisor, lsr #4 100 movne \divisor, \divisor, lsr #4
101 bne 1b 101 bne 1b
102 102
@@ -182,7 +182,7 @@ Boston, MA 02111-1307, USA. */
182 subhs \dividend, \dividend, \divisor, lsr #3 182 subhs \dividend, \dividend, \divisor, lsr #3
183 cmp \dividend, #1 183 cmp \dividend, #1
184 mov \divisor, \divisor, lsr #4 184 mov \divisor, \divisor, lsr #4
185 subges \order, \order, #4 185 subsge \order, \order, #4
186 bge 1b 186 bge 1b
187 187
188 tst \order, #3 188 tst \order, #3
diff --git a/arch/arm/lib/memcpy.S b/arch/arm/lib/memcpy.S
index 64111bd4440b..4a6997bb4404 100644
--- a/arch/arm/lib/memcpy.S
+++ b/arch/arm/lib/memcpy.S
@@ -30,7 +30,7 @@
30 .endm 30 .endm
31 31
32 .macro ldr1b ptr reg cond=al abort 32 .macro ldr1b ptr reg cond=al abort
33 ldr\cond\()b \reg, [\ptr], #1 33 ldrb\cond \reg, [\ptr], #1
34 .endm 34 .endm
35 35
36 .macro str1w ptr reg abort 36 .macro str1w ptr reg abort
@@ -42,7 +42,7 @@
42 .endm 42 .endm
43 43
44 .macro str1b ptr reg cond=al abort 44 .macro str1b ptr reg cond=al abort
45 str\cond\()b \reg, [\ptr], #1 45 strb\cond \reg, [\ptr], #1
46 .endm 46 .endm
47 47
48 .macro enter reg1 reg2 48 .macro enter reg1 reg2
diff --git a/arch/arm/lib/memmove.S b/arch/arm/lib/memmove.S
index 69a9d47fc5ab..d70304cb2cd0 100644
--- a/arch/arm/lib/memmove.S
+++ b/arch/arm/lib/memmove.S
@@ -59,7 +59,7 @@ ENTRY(memmove)
59 blt 5f 59 blt 5f
60 60
61 CALGN( ands ip, r0, #31 ) 61 CALGN( ands ip, r0, #31 )
62 CALGN( sbcnes r4, ip, r2 ) @ C is always set here 62 CALGN( sbcsne r4, ip, r2 ) @ C is always set here
63 CALGN( bcs 2f ) 63 CALGN( bcs 2f )
64 CALGN( adr r4, 6f ) 64 CALGN( adr r4, 6f )
65 CALGN( subs r2, r2, ip ) @ C is set here 65 CALGN( subs r2, r2, ip ) @ C is set here
@@ -114,20 +114,20 @@ ENTRY(memmove)
114 UNWIND( .save {r0, r4, lr} ) @ still in first stmfd block 114 UNWIND( .save {r0, r4, lr} ) @ still in first stmfd block
115 115
1168: movs r2, r2, lsl #31 1168: movs r2, r2, lsl #31
117 ldrneb r3, [r1, #-1]! 117 ldrbne r3, [r1, #-1]!
118 ldrcsb r4, [r1, #-1]! 118 ldrbcs r4, [r1, #-1]!
119 ldrcsb ip, [r1, #-1] 119 ldrbcs ip, [r1, #-1]
120 strneb r3, [r0, #-1]! 120 strbne r3, [r0, #-1]!
121 strcsb r4, [r0, #-1]! 121 strbcs r4, [r0, #-1]!
122 strcsb ip, [r0, #-1] 122 strbcs ip, [r0, #-1]
123 ldmfd sp!, {r0, r4, pc} 123 ldmfd sp!, {r0, r4, pc}
124 124
1259: cmp ip, #2 1259: cmp ip, #2
126 ldrgtb r3, [r1, #-1]! 126 ldrbgt r3, [r1, #-1]!
127 ldrgeb r4, [r1, #-1]! 127 ldrbge r4, [r1, #-1]!
128 ldrb lr, [r1, #-1]! 128 ldrb lr, [r1, #-1]!
129 strgtb r3, [r0, #-1]! 129 strbgt r3, [r0, #-1]!
130 strgeb r4, [r0, #-1]! 130 strbge r4, [r0, #-1]!
131 subs r2, r2, ip 131 subs r2, r2, ip
132 strb lr, [r0, #-1]! 132 strb lr, [r0, #-1]!
133 blt 8b 133 blt 8b
@@ -150,7 +150,7 @@ ENTRY(memmove)
150 blt 14f 150 blt 14f
151 151
152 CALGN( ands ip, r0, #31 ) 152 CALGN( ands ip, r0, #31 )
153 CALGN( sbcnes r4, ip, r2 ) @ C is always set here 153 CALGN( sbcsne r4, ip, r2 ) @ C is always set here
154 CALGN( subcc r2, r2, ip ) 154 CALGN( subcc r2, r2, ip )
155 CALGN( bcc 15f ) 155 CALGN( bcc 15f )
156 156
diff --git a/arch/arm/lib/memset.S b/arch/arm/lib/memset.S
index ed6d35d9cdb5..5593a45e0a8c 100644
--- a/arch/arm/lib/memset.S
+++ b/arch/arm/lib/memset.S
@@ -44,20 +44,20 @@ UNWIND( .save {r8, lr} )
44 mov lr, r3 44 mov lr, r3
45 45
462: subs r2, r2, #64 462: subs r2, r2, #64
47 stmgeia ip!, {r1, r3, r8, lr} @ 64 bytes at a time. 47 stmiage ip!, {r1, r3, r8, lr} @ 64 bytes at a time.
48 stmgeia ip!, {r1, r3, r8, lr} 48 stmiage ip!, {r1, r3, r8, lr}
49 stmgeia ip!, {r1, r3, r8, lr} 49 stmiage ip!, {r1, r3, r8, lr}
50 stmgeia ip!, {r1, r3, r8, lr} 50 stmiage ip!, {r1, r3, r8, lr}
51 bgt 2b 51 bgt 2b
52 ldmeqfd sp!, {r8, pc} @ Now <64 bytes to go. 52 ldmfdeq sp!, {r8, pc} @ Now <64 bytes to go.
53/* 53/*
54 * No need to correct the count; we're only testing bits from now on 54 * No need to correct the count; we're only testing bits from now on
55 */ 55 */
56 tst r2, #32 56 tst r2, #32
57 stmneia ip!, {r1, r3, r8, lr} 57 stmiane ip!, {r1, r3, r8, lr}
58 stmneia ip!, {r1, r3, r8, lr} 58 stmiane ip!, {r1, r3, r8, lr}
59 tst r2, #16 59 tst r2, #16
60 stmneia ip!, {r1, r3, r8, lr} 60 stmiane ip!, {r1, r3, r8, lr}
61 ldmfd sp!, {r8, lr} 61 ldmfd sp!, {r8, lr}
62UNWIND( .fnend ) 62UNWIND( .fnend )
63 63
@@ -87,22 +87,22 @@ UNWIND( .save {r4-r8, lr} )
87 rsb r8, r8, #32 87 rsb r8, r8, #32
88 sub r2, r2, r8 88 sub r2, r2, r8
89 movs r8, r8, lsl #(32 - 4) 89 movs r8, r8, lsl #(32 - 4)
90 stmcsia ip!, {r4, r5, r6, r7} 90 stmiacs ip!, {r4, r5, r6, r7}
91 stmmiia ip!, {r4, r5} 91 stmiami ip!, {r4, r5}
92 tst r8, #(1 << 30) 92 tst r8, #(1 << 30)
93 mov r8, r1 93 mov r8, r1
94 strne r1, [ip], #4 94 strne r1, [ip], #4
95 95
963: subs r2, r2, #64 963: subs r2, r2, #64
97 stmgeia ip!, {r1, r3-r8, lr} 97 stmiage ip!, {r1, r3-r8, lr}
98 stmgeia ip!, {r1, r3-r8, lr} 98 stmiage ip!, {r1, r3-r8, lr}
99 bgt 3b 99 bgt 3b
100 ldmeqfd sp!, {r4-r8, pc} 100 ldmfdeq sp!, {r4-r8, pc}
101 101
102 tst r2, #32 102 tst r2, #32
103 stmneia ip!, {r1, r3-r8, lr} 103 stmiane ip!, {r1, r3-r8, lr}
104 tst r2, #16 104 tst r2, #16
105 stmneia ip!, {r4-r7} 105 stmiane ip!, {r4-r7}
106 ldmfd sp!, {r4-r8, lr} 106 ldmfd sp!, {r4-r8, lr}
107UNWIND( .fnend ) 107UNWIND( .fnend )
108 108
@@ -110,7 +110,7 @@ UNWIND( .fnend )
110 110
111UNWIND( .fnstart ) 111UNWIND( .fnstart )
1124: tst r2, #8 1124: tst r2, #8
113 stmneia ip!, {r1, r3} 113 stmiane ip!, {r1, r3}
114 tst r2, #4 114 tst r2, #4
115 strne r1, [ip], #4 115 strne r1, [ip], #4
116/* 116/*
@@ -118,17 +118,17 @@ UNWIND( .fnstart )
118 * may have an unaligned pointer as well. 118 * may have an unaligned pointer as well.
119 */ 119 */
1205: tst r2, #2 1205: tst r2, #2
121 strneb r1, [ip], #1 121 strbne r1, [ip], #1
122 strneb r1, [ip], #1 122 strbne r1, [ip], #1
123 tst r2, #1 123 tst r2, #1
124 strneb r1, [ip], #1 124 strbne r1, [ip], #1
125 ret lr 125 ret lr
126 126
1276: subs r2, r2, #4 @ 1 do we have enough 1276: subs r2, r2, #4 @ 1 do we have enough
128 blt 5b @ 1 bytes to align with? 128 blt 5b @ 1 bytes to align with?
129 cmp r3, #2 @ 1 129 cmp r3, #2 @ 1
130 strltb r1, [ip], #1 @ 1 130 strblt r1, [ip], #1 @ 1
131 strleb r1, [ip], #1 @ 1 131 strble r1, [ip], #1 @ 1
132 strb r1, [ip], #1 @ 1 132 strb r1, [ip], #1 @ 1
133 add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3)) 133 add r2, r2, r3 @ 1 (r2 = r2 - (4 - r3))
134 b 1b 134 b 1b
diff --git a/arch/arm/lib/xor-neon.c b/arch/arm/lib/xor-neon.c
index 2c40aeab3eaa..c691b901092f 100644
--- a/arch/arm/lib/xor-neon.c
+++ b/arch/arm/lib/xor-neon.c
@@ -14,7 +14,7 @@
14MODULE_LICENSE("GPL"); 14MODULE_LICENSE("GPL");
15 15
16#ifndef __ARM_NEON__ 16#ifndef __ARM_NEON__
17#error You should compile this file with '-mfloat-abi=softfp -mfpu=neon' 17#error You should compile this file with '-march=armv7-a -mfloat-abi=softfp -mfpu=neon'
18#endif 18#endif
19 19
20/* 20/*
diff --git a/arch/arm/mach-actions/platsmp.c b/arch/arm/mach-actions/platsmp.c
index 3efaa10efc43..4fd479c948e6 100644
--- a/arch/arm/mach-actions/platsmp.c
+++ b/arch/arm/mach-actions/platsmp.c
@@ -39,10 +39,6 @@ static void __iomem *sps_base_addr;
39static void __iomem *timer_base_addr; 39static void __iomem *timer_base_addr;
40static int ncores; 40static int ncores;
41 41
42static DEFINE_SPINLOCK(boot_lock);
43
44void owl_secondary_startup(void);
45
46static int s500_wakeup_secondary(unsigned int cpu) 42static int s500_wakeup_secondary(unsigned int cpu)
47{ 43{
48 int ret; 44 int ret;
@@ -84,7 +80,6 @@ static int s500_wakeup_secondary(unsigned int cpu)
84 80
85static int s500_smp_boot_secondary(unsigned int cpu, struct task_struct *idle) 81static int s500_smp_boot_secondary(unsigned int cpu, struct task_struct *idle)
86{ 82{
87 unsigned long timeout;
88 int ret; 83 int ret;
89 84
90 ret = s500_wakeup_secondary(cpu); 85 ret = s500_wakeup_secondary(cpu);
@@ -93,21 +88,11 @@ static int s500_smp_boot_secondary(unsigned int cpu, struct task_struct *idle)
93 88
94 udelay(10); 89 udelay(10);
95 90
96 spin_lock(&boot_lock);
97
98 smp_send_reschedule(cpu); 91 smp_send_reschedule(cpu);
99 92
100 timeout = jiffies + (1 * HZ);
101 while (time_before(jiffies, timeout)) {
102 if (pen_release == -1)
103 break;
104 }
105
106 writel(0, timer_base_addr + OWL_CPU1_ADDR + (cpu - 1) * 4); 93 writel(0, timer_base_addr + OWL_CPU1_ADDR + (cpu - 1) * 4);
107 writel(0, timer_base_addr + OWL_CPU1_FLAG + (cpu - 1) * 4); 94 writel(0, timer_base_addr + OWL_CPU1_FLAG + (cpu - 1) * 4);
108 95
109 spin_unlock(&boot_lock);
110
111 return 0; 96 return 0;
112} 97}
113 98
diff --git a/arch/arm/mach-bcm/Kconfig b/arch/arm/mach-bcm/Kconfig
index a067adf9f1ee..4ef1e55f4a0b 100644
--- a/arch/arm/mach-bcm/Kconfig
+++ b/arch/arm/mach-bcm/Kconfig
@@ -167,6 +167,7 @@ config ARCH_BCM2835
167 select BCM2835_TIMER 167 select BCM2835_TIMER
168 select PINCTRL 168 select PINCTRL
169 select PINCTRL_BCM2835 169 select PINCTRL_BCM2835
170 select MFD_CORE
170 help 171 help
171 This enables support for the Broadcom BCM2835 and BCM2836 SoCs. 172 This enables support for the Broadcom BCM2835 and BCM2836 SoCs.
172 This SoC is used in the Raspberry Pi and Roku 2 devices. 173 This SoC is used in the Raspberry Pi and Roku 2 devices.
diff --git a/arch/arm/mach-cns3xxx/pcie.c b/arch/arm/mach-cns3xxx/pcie.c
index 318394ed5c7a..95a11d5b3587 100644
--- a/arch/arm/mach-cns3xxx/pcie.c
+++ b/arch/arm/mach-cns3xxx/pcie.c
@@ -83,7 +83,7 @@ static void __iomem *cns3xxx_pci_map_bus(struct pci_bus *bus,
83 } else /* remote PCI bus */ 83 } else /* remote PCI bus */
84 base = cnspci->cfg1_regs + ((busno & 0xf) << 20); 84 base = cnspci->cfg1_regs + ((busno & 0xf) << 20);
85 85
86 return base + (where & 0xffc) + (devfn << 12); 86 return base + where + (devfn << 12);
87} 87}
88 88
89static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn, 89static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
@@ -93,7 +93,7 @@ static int cns3xxx_pci_read_config(struct pci_bus *bus, unsigned int devfn,
93 u32 mask = (0x1ull << (size * 8)) - 1; 93 u32 mask = (0x1ull << (size * 8)) - 1;
94 int shift = (where % 4) * 8; 94 int shift = (where % 4) * 8;
95 95
96 ret = pci_generic_config_read32(bus, devfn, where, size, val); 96 ret = pci_generic_config_read(bus, devfn, where, size, val);
97 97
98 if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn && 98 if (ret == PCIBIOS_SUCCESSFUL && !bus->number && !devfn &&
99 (where & 0xffc) == PCI_CLASS_REVISION) 99 (where & 0xffc) == PCI_CLASS_REVISION)
diff --git a/arch/arm/mach-davinci/Kconfig b/arch/arm/mach-davinci/Kconfig
index da8a039d65f9..5a59cebc7d0a 100644
--- a/arch/arm/mach-davinci/Kconfig
+++ b/arch/arm/mach-davinci/Kconfig
@@ -1,13 +1,6 @@
1# SPDX-License-Identifier: GPL-2.0 1# SPDX-License-Identifier: GPL-2.0
2if ARCH_DAVINCI 2if ARCH_DAVINCI
3 3
4config AINTC
5 bool
6
7config CP_INTC
8 bool
9 select IRQ_DOMAIN
10
11config ARCH_DAVINCI_DMx 4config ARCH_DAVINCI_DMx
12 bool 5 bool
13 6
@@ -17,17 +10,17 @@ comment "DaVinci Core Type"
17 10
18config ARCH_DAVINCI_DM644x 11config ARCH_DAVINCI_DM644x
19 bool "DaVinci 644x based system" 12 bool "DaVinci 644x based system"
20 select AINTC 13 select DAVINCI_AINTC
21 select ARCH_DAVINCI_DMx 14 select ARCH_DAVINCI_DMx
22 15
23config ARCH_DAVINCI_DM355 16config ARCH_DAVINCI_DM355
24 bool "DaVinci 355 based system" 17 bool "DaVinci 355 based system"
25 select AINTC 18 select DAVINCI_AINTC
26 select ARCH_DAVINCI_DMx 19 select ARCH_DAVINCI_DMx
27 20
28config ARCH_DAVINCI_DM646x 21config ARCH_DAVINCI_DM646x
29 bool "DaVinci 646x based system" 22 bool "DaVinci 646x based system"
30 select AINTC 23 select DAVINCI_AINTC
31 select ARCH_DAVINCI_DMx 24 select ARCH_DAVINCI_DMx
32 25
33config ARCH_DAVINCI_DA830 26config ARCH_DAVINCI_DA830
@@ -36,20 +29,20 @@ config ARCH_DAVINCI_DA830
36 select ARCH_DAVINCI_DA8XX 29 select ARCH_DAVINCI_DA8XX
37 # needed on silicon revs 1.0, 1.1: 30 # needed on silicon revs 1.0, 1.1:
38 select CPU_DCACHE_WRITETHROUGH if !CPU_DCACHE_DISABLE 31 select CPU_DCACHE_WRITETHROUGH if !CPU_DCACHE_DISABLE
39 select CP_INTC 32 select DAVINCI_CP_INTC
40 33
41config ARCH_DAVINCI_DA850 34config ARCH_DAVINCI_DA850
42 bool "DA850/OMAP-L138/AM18x based system" 35 bool "DA850/OMAP-L138/AM18x based system"
43 depends on !ARCH_DAVINCI_DMx || (AUTO_ZRELADDR && ARM_PATCH_PHYS_VIRT) 36 depends on !ARCH_DAVINCI_DMx || (AUTO_ZRELADDR && ARM_PATCH_PHYS_VIRT)
44 select ARCH_DAVINCI_DA8XX 37 select ARCH_DAVINCI_DA8XX
45 select CP_INTC 38 select DAVINCI_CP_INTC
46 39
47config ARCH_DAVINCI_DA8XX 40config ARCH_DAVINCI_DA8XX
48 bool 41 bool
49 42
50config ARCH_DAVINCI_DM365 43config ARCH_DAVINCI_DM365
51 bool "DaVinci 365 based system" 44 bool "DaVinci 365 based system"
52 select AINTC 45 select DAVINCI_AINTC
53 select ARCH_DAVINCI_DMx 46 select ARCH_DAVINCI_DMx
54 47
55comment "DaVinci Board Type" 48comment "DaVinci Board Type"
diff --git a/arch/arm/mach-davinci/Makefile b/arch/arm/mach-davinci/Makefile
index 93d271b4d84b..f76a8482784f 100644
--- a/arch/arm/mach-davinci/Makefile
+++ b/arch/arm/mach-davinci/Makefile
@@ -18,9 +18,6 @@ obj-$(CONFIG_ARCH_DAVINCI_DM365) += dm365.o devices.o
18obj-$(CONFIG_ARCH_DAVINCI_DA830) += da830.o devices-da8xx.o usb-da8xx.o 18obj-$(CONFIG_ARCH_DAVINCI_DA830) += da830.o devices-da8xx.o usb-da8xx.o
19obj-$(CONFIG_ARCH_DAVINCI_DA850) += da850.o devices-da8xx.o usb-da8xx.o 19obj-$(CONFIG_ARCH_DAVINCI_DA850) += da850.o devices-da8xx.o usb-da8xx.o
20 20
21obj-$(CONFIG_AINTC) += irq.o
22obj-$(CONFIG_CP_INTC) += cp_intc.o
23
24# Board specific 21# Board specific
25obj-$(CONFIG_MACH_DA8XX_DT) += da8xx-dt.o pdata-quirks.o 22obj-$(CONFIG_MACH_DA8XX_DT) += da8xx-dt.o pdata-quirks.o
26obj-$(CONFIG_MACH_DAVINCI_EVM) += board-dm644x-evm.o 23obj-$(CONFIG_MACH_DAVINCI_EVM) += board-dm644x-evm.o
diff --git a/arch/arm/mach-davinci/asp.h b/arch/arm/mach-davinci/asp.h
index 495aa6907cbc..d0ecd1d0f084 100644
--- a/arch/arm/mach-davinci/asp.h
+++ b/arch/arm/mach-davinci/asp.h
@@ -49,9 +49,9 @@
49#define DAVINCI_DA830_DMA_MCASP2_AXEVT 5 49#define DAVINCI_DA830_DMA_MCASP2_AXEVT 5
50 50
51/* Interrupts */ 51/* Interrupts */
52#define DAVINCI_ASP0_RX_INT IRQ_MBRINT 52#define DAVINCI_ASP0_RX_INT DAVINCI_INTC_IRQ(IRQ_MBRINT)
53#define DAVINCI_ASP0_TX_INT IRQ_MBXINT 53#define DAVINCI_ASP0_TX_INT DAVINCI_INTC_IRQ(IRQ_MBXINT)
54#define DAVINCI_ASP1_RX_INT IRQ_MBRINT 54#define DAVINCI_ASP1_RX_INT DAVINCI_INTC_IRQ(IRQ_MBRINT)
55#define DAVINCI_ASP1_TX_INT IRQ_MBXINT 55#define DAVINCI_ASP1_TX_INT DAVINCI_INTC_IRQ(IRQ_MBXINT)
56 56
57#endif /* __ASM_ARCH_DAVINCI_ASP_H */ 57#endif /* __ASM_ARCH_DAVINCI_ASP_H */
diff --git a/arch/arm/mach-davinci/board-da830-evm.c b/arch/arm/mach-davinci/board-da830-evm.c
index e52ec1619b70..ff097ecfa451 100644
--- a/arch/arm/mach-davinci/board-da830-evm.c
+++ b/arch/arm/mach-davinci/board-da830-evm.c
@@ -18,7 +18,7 @@
18#include <linux/platform_device.h> 18#include <linux/platform_device.h>
19#include <linux/i2c.h> 19#include <linux/i2c.h>
20#include <linux/platform_data/pcf857x.h> 20#include <linux/platform_data/pcf857x.h>
21#include <linux/platform_data/at24.h> 21#include <linux/property.h>
22#include <linux/mtd/mtd.h> 22#include <linux/mtd/mtd.h>
23#include <linux/mtd/partitions.h> 23#include <linux/mtd/partitions.h>
24#include <linux/spi/spi.h> 24#include <linux/spi/spi.h>
@@ -36,10 +36,11 @@
36#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
37 37
38#include <mach/common.h> 38#include <mach/common.h>
39#include "cp_intc.h"
40#include <mach/mux.h> 39#include <mach/mux.h>
41#include <mach/da8xx.h> 40#include <mach/da8xx.h>
42 41
42#include "irqs.h"
43
43#define DA830_EVM_PHY_ID "" 44#define DA830_EVM_PHY_ID ""
44/* 45/*
45 * USB1 VBUS is controlled by GPIO1[15], over-current is reported on GPIO2[4]. 46 * USB1 VBUS is controlled by GPIO1[15], over-current is reported on GPIO2[4].
@@ -52,62 +53,19 @@ static const short da830_evm_usb11_pins[] = {
52 -1 53 -1
53}; 54};
54 55
55static da8xx_ocic_handler_t da830_evm_usb_ocic_handler; 56static struct gpiod_lookup_table da830_evm_usb_gpio_lookup = {
56 57 .dev_id = "ohci-da8xx",
57static int da830_evm_usb_set_power(unsigned port, int on) 58 .table = {
58{ 59 GPIO_LOOKUP("davinci_gpio", ON_BD_USB_DRV, "vbus", 0),
59 gpio_set_value(ON_BD_USB_DRV, on); 60 GPIO_LOOKUP("davinci_gpio", ON_BD_USB_OVC, "oc", 0),
60 return 0; 61 },
61} 62};
62
63static int da830_evm_usb_get_power(unsigned port)
64{
65 return gpio_get_value(ON_BD_USB_DRV);
66}
67
68static int da830_evm_usb_get_oci(unsigned port)
69{
70 return !gpio_get_value(ON_BD_USB_OVC);
71}
72
73static irqreturn_t da830_evm_usb_ocic_irq(int, void *);
74
75static int da830_evm_usb_ocic_notify(da8xx_ocic_handler_t handler)
76{
77 int irq = gpio_to_irq(ON_BD_USB_OVC);
78 int error = 0;
79
80 if (handler != NULL) {
81 da830_evm_usb_ocic_handler = handler;
82
83 error = request_irq(irq, da830_evm_usb_ocic_irq,
84 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
85 "OHCI over-current indicator", NULL);
86 if (error)
87 pr_err("%s: could not request IRQ to watch over-current indicator changes\n",
88 __func__);
89 } else
90 free_irq(irq, NULL);
91
92 return error;
93}
94 63
95static struct da8xx_ohci_root_hub da830_evm_usb11_pdata = { 64static struct da8xx_ohci_root_hub da830_evm_usb11_pdata = {
96 .set_power = da830_evm_usb_set_power,
97 .get_power = da830_evm_usb_get_power,
98 .get_oci = da830_evm_usb_get_oci,
99 .ocic_notify = da830_evm_usb_ocic_notify,
100
101 /* TPS2065 switch @ 5V */ 65 /* TPS2065 switch @ 5V */
102 .potpgt = (3 + 1) / 2, /* 3 ms max */ 66 .potpgt = (3 + 1) / 2, /* 3 ms max */
103}; 67};
104 68
105static irqreturn_t da830_evm_usb_ocic_irq(int irq, void *dev_id)
106{
107 da830_evm_usb_ocic_handler(&da830_evm_usb11_pdata, 1);
108 return IRQ_HANDLED;
109}
110
111static __init void da830_evm_usb_init(void) 69static __init void da830_evm_usb_init(void)
112{ 70{
113 int ret; 71 int ret;
@@ -142,21 +100,7 @@ static __init void da830_evm_usb_init(void)
142 return; 100 return;
143 } 101 }
144 102
145 ret = gpio_request(ON_BD_USB_DRV, "ON_BD_USB_DRV"); 103 gpiod_add_lookup_table(&da830_evm_usb_gpio_lookup);
146 if (ret) {
147 pr_err("%s: failed to request GPIO for USB 1.1 port power control: %d\n",
148 __func__, ret);
149 return;
150 }
151 gpio_direction_output(ON_BD_USB_DRV, 0);
152
153 ret = gpio_request(ON_BD_USB_OVC, "ON_BD_USB_OVC");
154 if (ret) {
155 pr_err("%s: failed to request GPIO for USB 1.1 port over-current indicator: %d\n",
156 __func__, ret);
157 return;
158 }
159 gpio_direction_input(ON_BD_USB_OVC);
160 104
161 ret = da8xx_register_usb11(&da830_evm_usb11_pdata); 105 ret = da8xx_register_usb11(&da830_evm_usb11_pdata);
162 if (ret) 106 if (ret)
@@ -208,9 +152,9 @@ static struct gpiod_lookup_table mmc_gpios_table = {
208 .dev_id = "da830-mmc.0", 152 .dev_id = "da830-mmc.0",
209 .table = { 153 .table = {
210 /* gpio chip 1 contains gpio range 32-63 */ 154 /* gpio chip 1 contains gpio range 32-63 */
211 GPIO_LOOKUP("davinci_gpio.0", DA830_MMCSD_CD_PIN, "cd", 155 GPIO_LOOKUP("davinci_gpio", DA830_MMCSD_CD_PIN, "cd",
212 GPIO_ACTIVE_LOW), 156 GPIO_ACTIVE_LOW),
213 GPIO_LOOKUP("davinci_gpio.0", DA830_MMCSD_WP_PIN, "wp", 157 GPIO_LOOKUP("davinci_gpio", DA830_MMCSD_WP_PIN, "wp",
214 GPIO_ACTIVE_LOW), 158 GPIO_ACTIVE_LOW),
215 }, 159 },
216}; 160};
@@ -457,12 +401,9 @@ static struct nvmem_cell_lookup da830_evm_nvmem_cell_lookup = {
457 .con_id = "mac-address", 401 .con_id = "mac-address",
458}; 402};
459 403
460static struct at24_platform_data da830_evm_i2c_eeprom_info = { 404static const struct property_entry da830_evm_i2c_eeprom_properties[] = {
461 .byte_len = SZ_256K / 8, 405 PROPERTY_ENTRY_U32("pagesize", 64),
462 .page_size = 64, 406 { }
463 .flags = AT24_FLAG_ADDR16,
464 .setup = davinci_get_mac_addr,
465 .context = (void *)0x7f00,
466}; 407};
467 408
468static int __init da830_evm_ui_expander_setup(struct i2c_client *client, 409static int __init da830_evm_ui_expander_setup(struct i2c_client *client,
@@ -496,7 +437,7 @@ static struct pcf857x_platform_data __initdata da830_evm_ui_expander_info = {
496static struct i2c_board_info __initdata da830_evm_i2c_devices[] = { 437static struct i2c_board_info __initdata da830_evm_i2c_devices[] = {
497 { 438 {
498 I2C_BOARD_INFO("24c256", 0x50), 439 I2C_BOARD_INFO("24c256", 0x50),
499 .platform_data = &da830_evm_i2c_eeprom_info, 440 .properties = da830_evm_i2c_eeprom_properties,
500 }, 441 },
501 { 442 {
502 I2C_BOARD_INFO("tlv320aic3x", 0x18), 443 I2C_BOARD_INFO("tlv320aic3x", 0x18),
@@ -693,7 +634,7 @@ static void __init da830_evm_map_io(void)
693MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM") 634MACHINE_START(DAVINCI_DA830_EVM, "DaVinci DA830/OMAP-L137/AM17x EVM")
694 .atag_offset = 0x100, 635 .atag_offset = 0x100,
695 .map_io = da830_evm_map_io, 636 .map_io = da830_evm_map_io,
696 .init_irq = cp_intc_init, 637 .init_irq = da830_init_irq,
697 .init_time = da830_init_time, 638 .init_time = da830_init_time,
698 .init_machine = da830_evm_init, 639 .init_machine = da830_evm_init,
699 .init_late = davinci_init_late, 640 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c
index 6a29baf0a289..1fdc9283a8c5 100644
--- a/arch/arm/mach-davinci/board-da850-evm.c
+++ b/arch/arm/mach-davinci/board-da850-evm.c
@@ -43,9 +43,10 @@
43#include <linux/spi/flash.h> 43#include <linux/spi/flash.h>
44 44
45#include <mach/common.h> 45#include <mach/common.h>
46#include "cp_intc.h"
47#include <mach/da8xx.h> 46#include <mach/da8xx.h>
48#include <mach/mux.h> 47#include <mach/mux.h>
48
49#include "irqs.h"
49#include "sram.h" 50#include "sram.h"
50 51
51#include <asm/mach-types.h> 52#include <asm/mach-types.h>
@@ -150,32 +151,6 @@ static struct spi_board_info da850evm_spi_info[] = {
150 }, 151 },
151}; 152};
152 153
153#ifdef CONFIG_MTD
154static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
155{
156 char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
157 size_t retlen;
158
159 if (!strcmp(mtd->name, "MAC-Address")) {
160 mtd_read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
161 if (retlen == ETH_ALEN)
162 pr_info("Read MAC addr from SPI Flash: %pM\n",
163 mac_addr);
164 }
165}
166
167static struct mtd_notifier da850evm_spi_notifier = {
168 .add = da850_evm_m25p80_notify_add,
169};
170
171static void da850_evm_setup_mac_addr(void)
172{
173 register_mtd_user(&da850evm_spi_notifier);
174}
175#else
176static void da850_evm_setup_mac_addr(void) { }
177#endif
178
179static struct mtd_partition da850_evm_norflash_partition[] = { 154static struct mtd_partition da850_evm_norflash_partition[] = {
180 { 155 {
181 .name = "bootloaders + env", 156 .name = "bootloaders + env",
@@ -805,9 +780,9 @@ static struct gpiod_lookup_table mmc_gpios_table = {
805 .dev_id = "da830-mmc.0", 780 .dev_id = "da830-mmc.0",
806 .table = { 781 .table = {
807 /* gpio chip 2 contains gpio range 64-95 */ 782 /* gpio chip 2 contains gpio range 64-95 */
808 GPIO_LOOKUP("davinci_gpio.0", DA850_MMCSD_CD_PIN, "cd", 783 GPIO_LOOKUP("davinci_gpio", DA850_MMCSD_CD_PIN, "cd",
809 GPIO_ACTIVE_LOW), 784 GPIO_ACTIVE_LOW),
810 GPIO_LOOKUP("davinci_gpio.0", DA850_MMCSD_WP_PIN, "wp", 785 GPIO_LOOKUP("davinci_gpio", DA850_MMCSD_WP_PIN, "wp",
811 GPIO_ACTIVE_HIGH), 786 GPIO_ACTIVE_HIGH),
812 }, 787 },
813}; 788};
@@ -1064,6 +1039,17 @@ static const short da850_evm_rmii_pins[] = {
1064 -1 1039 -1
1065}; 1040};
1066 1041
1042static struct gpiod_hog da850_evm_emac_gpio_hogs[] = {
1043 {
1044 .chip_label = "davinci_gpio",
1045 .chip_hwnum = DA850_MII_MDIO_CLKEN_PIN,
1046 .line_name = "mdio_clk_en",
1047 .lflags = 0,
1048 /* dflags set in da850_evm_config_emac() */
1049 },
1050 { }
1051};
1052
1067static int __init da850_evm_config_emac(void) 1053static int __init da850_evm_config_emac(void)
1068{ 1054{
1069 void __iomem *cfg_chip3_base; 1055 void __iomem *cfg_chip3_base;
@@ -1102,14 +1088,9 @@ static int __init da850_evm_config_emac(void)
1102 if (ret) 1088 if (ret)
1103 pr_warn("%s:GPIO(2,6) mux setup failed\n", __func__); 1089 pr_warn("%s:GPIO(2,6) mux setup failed\n", __func__);
1104 1090
1105 ret = gpio_request(DA850_MII_MDIO_CLKEN_PIN, "mdio_clk_en"); 1091 da850_evm_emac_gpio_hogs[0].dflags = rmii_en ? GPIOD_OUT_HIGH
1106 if (ret) { 1092 : GPIOD_OUT_LOW;
1107 pr_warn("Cannot open GPIO %d\n", DA850_MII_MDIO_CLKEN_PIN); 1093 gpiod_add_hogs(da850_evm_emac_gpio_hogs);
1108 return ret;
1109 }
1110
1111 /* Enable/Disable MII MDIO clock */
1112 gpio_direction_output(DA850_MII_MDIO_CLKEN_PIN, rmii_en);
1113 1094
1114 soc_info->emac_pdata->phy_id = DA850_EVM_PHY_ID; 1095 soc_info->emac_pdata->phy_id = DA850_EVM_PHY_ID;
1115 1096
@@ -1494,8 +1475,6 @@ static __init void da850_evm_init(void)
1494 if (ret) 1475 if (ret)
1495 pr_warn("%s: SATA registration failed: %d\n", __func__, ret); 1476 pr_warn("%s: SATA registration failed: %d\n", __func__, ret);
1496 1477
1497 da850_evm_setup_mac_addr();
1498
1499 ret = da8xx_register_rproc(); 1478 ret = da8xx_register_rproc();
1500 if (ret) 1479 if (ret)
1501 pr_warn("%s: dsp/rproc registration failed: %d\n", 1480 pr_warn("%s: dsp/rproc registration failed: %d\n",
@@ -1521,7 +1500,7 @@ static void __init da850_evm_map_io(void)
1521MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM") 1500MACHINE_START(DAVINCI_DA850_EVM, "DaVinci DA850/OMAP-L138/AM18x EVM")
1522 .atag_offset = 0x100, 1501 .atag_offset = 0x100,
1523 .map_io = da850_evm_map_io, 1502 .map_io = da850_evm_map_io,
1524 .init_irq = cp_intc_init, 1503 .init_irq = da850_init_irq,
1525 .init_time = da850_init_time, 1504 .init_time = da850_init_time,
1526 .init_machine = da850_evm_init, 1505 .init_machine = da850_evm_init,
1527 .init_late = davinci_init_late, 1506 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-dm355-evm.c b/arch/arm/mach-davinci/board-dm355-evm.c
index f53a461a606f..64d81fc86f14 100644
--- a/arch/arm/mach-davinci/board-dm355-evm.c
+++ b/arch/arm/mach-davinci/board-dm355-evm.c
@@ -117,9 +117,9 @@ static struct platform_device davinci_nand_device = {
117static struct gpiod_lookup_table i2c_recovery_gpiod_table = { 117static struct gpiod_lookup_table i2c_recovery_gpiod_table = {
118 .dev_id = "i2c_davinci.1", 118 .dev_id = "i2c_davinci.1",
119 .table = { 119 .table = {
120 GPIO_LOOKUP("davinci_gpio.0", DM355_I2C_SDA_PIN, "sda", 120 GPIO_LOOKUP("davinci_gpio", DM355_I2C_SDA_PIN, "sda",
121 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), 121 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
122 GPIO_LOOKUP("davinci_gpio.0", DM355_I2C_SCL_PIN, "scl", 122 GPIO_LOOKUP("davinci_gpio", DM355_I2C_SCL_PIN, "scl",
123 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), 123 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
124 }, 124 },
125}; 125};
@@ -438,7 +438,7 @@ static __init void dm355_evm_init(void)
438MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM") 438MACHINE_START(DAVINCI_DM355_EVM, "DaVinci DM355 EVM")
439 .atag_offset = 0x100, 439 .atag_offset = 0x100,
440 .map_io = dm355_evm_map_io, 440 .map_io = dm355_evm_map_io,
441 .init_irq = davinci_irq_init, 441 .init_irq = dm355_init_irq,
442 .init_time = dm355_init_time, 442 .init_time = dm355_init_time,
443 .init_machine = dm355_evm_init, 443 .init_machine = dm355_evm_init,
444 .init_late = davinci_init_late, 444 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-dm355-leopard.c b/arch/arm/mach-davinci/board-dm355-leopard.c
index 0fdf1d03eb11..b9e9950dd300 100644
--- a/arch/arm/mach-davinci/board-dm355-leopard.c
+++ b/arch/arm/mach-davinci/board-dm355-leopard.c
@@ -273,7 +273,7 @@ static __init void dm355_leopard_init(void)
273MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard") 273MACHINE_START(DM355_LEOPARD, "DaVinci DM355 leopard")
274 .atag_offset = 0x100, 274 .atag_offset = 0x100,
275 .map_io = dm355_leopard_map_io, 275 .map_io = dm355_leopard_map_io,
276 .init_irq = davinci_irq_init, 276 .init_irq = dm355_init_irq,
277 .init_time = dm355_init_time, 277 .init_time = dm355_init_time,
278 .init_machine = dm355_leopard_init, 278 .init_machine = dm355_leopard_init,
279 .init_late = davinci_init_late, 279 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-davinci/board-dm365-evm.c
index e3b0b701e395..150a36f333df 100644
--- a/arch/arm/mach-davinci/board-dm365-evm.c
+++ b/arch/arm/mach-davinci/board-dm365-evm.c
@@ -18,7 +18,7 @@
18#include <linux/i2c.h> 18#include <linux/i2c.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/clk.h> 20#include <linux/clk.h>
21#include <linux/platform_data/at24.h> 21#include <linux/property.h>
22#include <linux/leds.h> 22#include <linux/leds.h>
23#include <linux/mtd/mtd.h> 23#include <linux/mtd/mtd.h>
24#include <linux/mtd/partitions.h> 24#include <linux/mtd/partitions.h>
@@ -225,18 +225,15 @@ static struct nvmem_cell_lookup davinci_nvmem_cell_lookup = {
225 .con_id = "mac-address", 225 .con_id = "mac-address",
226}; 226};
227 227
228static struct at24_platform_data eeprom_info = { 228static const struct property_entry eeprom_properties[] = {
229 .byte_len = (256*1024) / 8, 229 PROPERTY_ENTRY_U32("pagesize", 64),
230 .page_size = 64, 230 { }
231 .flags = AT24_FLAG_ADDR16,
232 .setup = davinci_get_mac_addr,
233 .context = (void *)0x7f00,
234}; 231};
235 232
236static struct i2c_board_info i2c_info[] = { 233static struct i2c_board_info i2c_info[] = {
237 { 234 {
238 I2C_BOARD_INFO("24c256", 0x50), 235 I2C_BOARD_INFO("24c256", 0x50),
239 .platform_data = &eeprom_info, 236 .properties = eeprom_properties,
240 }, 237 },
241 { 238 {
242 I2C_BOARD_INFO("tlv320aic3x", 0x18), 239 I2C_BOARD_INFO("tlv320aic3x", 0x18),
@@ -834,7 +831,7 @@ static __init void dm365_evm_init(void)
834MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM") 831MACHINE_START(DAVINCI_DM365_EVM, "DaVinci DM365 EVM")
835 .atag_offset = 0x100, 832 .atag_offset = 0x100,
836 .map_io = dm365_evm_map_io, 833 .map_io = dm365_evm_map_io,
837 .init_irq = davinci_irq_init, 834 .init_irq = dm365_init_irq,
838 .init_time = dm365_init_time, 835 .init_time = dm365_init_time,
839 .init_machine = dm365_evm_init, 836 .init_machine = dm365_evm_init,
840 .init_late = davinci_init_late, 837 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-dm644x-evm.c b/arch/arm/mach-davinci/board-dm644x-evm.c
index e1428115067f..de15f782816e 100644
--- a/arch/arm/mach-davinci/board-dm644x-evm.c
+++ b/arch/arm/mach-davinci/board-dm644x-evm.c
@@ -16,8 +16,8 @@
16#include <linux/gpio/machine.h> 16#include <linux/gpio/machine.h>
17#include <linux/i2c.h> 17#include <linux/i2c.h>
18#include <linux/platform_data/pcf857x.h> 18#include <linux/platform_data/pcf857x.h>
19#include <linux/platform_data/at24.h>
20#include <linux/platform_data/gpio-davinci.h> 19#include <linux/platform_data/gpio-davinci.h>
20#include <linux/property.h>
21#include <linux/mtd/mtd.h> 21#include <linux/mtd/mtd.h>
22#include <linux/mtd/rawnand.h> 22#include <linux/mtd/rawnand.h>
23#include <linux/mtd/partitions.h> 23#include <linux/mtd/partitions.h>
@@ -36,9 +36,10 @@
36#include <asm/mach/arch.h> 36#include <asm/mach/arch.h>
37 37
38#include <mach/common.h> 38#include <mach/common.h>
39#include <linux/platform_data/i2c-davinci.h>
40#include <mach/serial.h>
41#include <mach/mux.h> 39#include <mach/mux.h>
40#include <mach/serial.h>
41
42#include <linux/platform_data/i2c-davinci.h>
42#include <linux/platform_data/mtd-davinci.h> 43#include <linux/platform_data/mtd-davinci.h>
43#include <linux/platform_data/mmc-davinci.h> 44#include <linux/platform_data/mmc-davinci.h>
44#include <linux/platform_data/usb-davinci.h> 45#include <linux/platform_data/usb-davinci.h>
@@ -46,6 +47,7 @@
46#include <linux/platform_data/ti-aemif.h> 47#include <linux/platform_data/ti-aemif.h>
47 48
48#include "davinci.h" 49#include "davinci.h"
50#include "irqs.h"
49 51
50#define DM644X_EVM_PHY_ID "davinci_mdio-0:01" 52#define DM644X_EVM_PHY_ID "davinci_mdio-0:01"
51#define LXT971_PHY_ID (0x001378e2) 53#define LXT971_PHY_ID (0x001378e2)
@@ -532,12 +534,9 @@ static struct nvmem_cell_lookup dm644evm_nvmem_cell_lookup = {
532 .con_id = "mac-address", 534 .con_id = "mac-address",
533}; 535};
534 536
535static struct at24_platform_data eeprom_info = { 537static const struct property_entry eeprom_properties[] = {
536 .byte_len = (256*1024) / 8, 538 PROPERTY_ENTRY_U32("pagesize", 64),
537 .page_size = 64, 539 { }
538 .flags = AT24_FLAG_ADDR16,
539 .setup = davinci_get_mac_addr,
540 .context = (void *)0x7f00,
541}; 540};
542 541
543/* 542/*
@@ -647,7 +646,7 @@ static struct i2c_board_info __initdata i2c_info[] = {
647 }, 646 },
648 { 647 {
649 I2C_BOARD_INFO("24c256", 0x50), 648 I2C_BOARD_INFO("24c256", 0x50),
650 .platform_data = &eeprom_info, 649 .properties = eeprom_properties,
651 }, 650 },
652 { 651 {
653 I2C_BOARD_INFO("tlv320aic33", 0x1b), 652 I2C_BOARD_INFO("tlv320aic33", 0x1b),
@@ -660,9 +659,9 @@ static struct i2c_board_info __initdata i2c_info[] = {
660static struct gpiod_lookup_table i2c_recovery_gpiod_table = { 659static struct gpiod_lookup_table i2c_recovery_gpiod_table = {
661 .dev_id = "i2c_davinci.1", 660 .dev_id = "i2c_davinci.1",
662 .table = { 661 .table = {
663 GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SDA_PIN, "sda", 662 GPIO_LOOKUP("davinci_gpio", DM644X_I2C_SDA_PIN, "sda",
664 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), 663 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
665 GPIO_LOOKUP("davinci_gpio.0", DM644X_I2C_SCL_PIN, "scl", 664 GPIO_LOOKUP("davinci_gpio", DM644X_I2C_SCL_PIN, "scl",
666 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN), 665 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
667 }, 666 },
668}; 667};
@@ -889,7 +888,7 @@ MACHINE_START(DAVINCI_EVM, "DaVinci DM644x EVM")
889 /* Maintainer: MontaVista Software <source@mvista.com> */ 888 /* Maintainer: MontaVista Software <source@mvista.com> */
890 .atag_offset = 0x100, 889 .atag_offset = 0x100,
891 .map_io = davinci_evm_map_io, 890 .map_io = davinci_evm_map_io,
892 .init_irq = davinci_irq_init, 891 .init_irq = dm644x_init_irq,
893 .init_time = dm644x_init_time, 892 .init_time = dm644x_init_time,
894 .init_machine = davinci_evm_init, 893 .init_machine = davinci_evm_init,
895 .init_late = davinci_init_late, 894 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-dm646x-evm.c b/arch/arm/mach-davinci/board-dm646x-evm.c
index 8d5be6dd2019..4600b617f9b4 100644
--- a/arch/arm/mach-davinci/board-dm646x-evm.c
+++ b/arch/arm/mach-davinci/board-dm646x-evm.c
@@ -22,7 +22,7 @@
22#include <linux/gpio.h> 22#include <linux/gpio.h>
23#include <linux/platform_device.h> 23#include <linux/platform_device.h>
24#include <linux/i2c.h> 24#include <linux/i2c.h>
25#include <linux/platform_data/at24.h> 25#include <linux/property.h>
26#include <linux/platform_data/pcf857x.h> 26#include <linux/platform_data/pcf857x.h>
27#include <linux/platform_data/ti-aemif.h> 27#include <linux/platform_data/ti-aemif.h>
28 28
@@ -44,10 +44,10 @@
44#include <asm/mach/arch.h> 44#include <asm/mach/arch.h>
45 45
46#include <mach/common.h> 46#include <mach/common.h>
47#include <mach/irqs.h>
48#include <mach/serial.h> 47#include <mach/serial.h>
49 48
50#include "davinci.h" 49#include "davinci.h"
50#include "irqs.h"
51 51
52#define NAND_BLOCK_SIZE SZ_128K 52#define NAND_BLOCK_SIZE SZ_128K
53 53
@@ -364,12 +364,9 @@ static struct nvmem_cell_lookup dm646x_evm_nvmem_cell_lookup = {
364 .con_id = "mac-address", 364 .con_id = "mac-address",
365}; 365};
366 366
367static struct at24_platform_data eeprom_info = { 367static const struct property_entry eeprom_properties[] = {
368 .byte_len = (256*1024) / 8, 368 PROPERTY_ENTRY_U32("pagesize", 64),
369 .page_size = 64, 369 { }
370 .flags = AT24_FLAG_ADDR16,
371 .setup = davinci_get_mac_addr,
372 .context = (void *)0x7f00,
373}; 370};
374#endif 371#endif
375 372
@@ -440,7 +437,7 @@ static void evm_init_cpld(void)
440static struct i2c_board_info __initdata i2c_info[] = { 437static struct i2c_board_info __initdata i2c_info[] = {
441 { 438 {
442 I2C_BOARD_INFO("24c256", 0x50), 439 I2C_BOARD_INFO("24c256", 0x50),
443 .platform_data = &eeprom_info, 440 .properties = eeprom_properties,
444 }, 441 },
445 { 442 {
446 I2C_BOARD_INFO("pcf8574a", 0x38), 443 I2C_BOARD_INFO("pcf8574a", 0x38),
@@ -863,7 +860,7 @@ static __init void evm_init(void)
863MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM") 860MACHINE_START(DAVINCI_DM6467_EVM, "DaVinci DM646x EVM")
864 .atag_offset = 0x100, 861 .atag_offset = 0x100,
865 .map_io = davinci_map_io, 862 .map_io = davinci_map_io,
866 .init_irq = davinci_irq_init, 863 .init_irq = dm646x_init_irq,
867 .init_time = dm646x_evm_init_time, 864 .init_time = dm646x_evm_init_time,
868 .init_machine = evm_init, 865 .init_machine = evm_init,
869 .init_late = davinci_init_late, 866 .init_late = davinci_init_late,
@@ -873,7 +870,7 @@ MACHINE_END
873MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM") 870MACHINE_START(DAVINCI_DM6467TEVM, "DaVinci DM6467T EVM")
874 .atag_offset = 0x100, 871 .atag_offset = 0x100,
875 .map_io = davinci_map_io, 872 .map_io = davinci_map_io,
876 .init_irq = davinci_irq_init, 873 .init_irq = dm646x_init_irq,
877 .init_time = dm6467t_evm_init_time, 874 .init_time = dm6467t_evm_init_time,
878 .init_machine = evm_init, 875 .init_machine = evm_init,
879 .init_late = davinci_init_late, 876 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-mityomapl138.c b/arch/arm/mach-davinci/board-mityomapl138.c
index 8df16e81b69e..dfce421c0579 100644
--- a/arch/arm/mach-davinci/board-mityomapl138.c
+++ b/arch/arm/mach-davinci/board-mityomapl138.c
@@ -14,11 +14,13 @@
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/console.h> 15#include <linux/console.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/property.h>
17#include <linux/mtd/partitions.h> 18#include <linux/mtd/partitions.h>
19#include <linux/notifier.h>
20#include <linux/nvmem-consumer.h>
18#include <linux/nvmem-provider.h> 21#include <linux/nvmem-provider.h>
19#include <linux/regulator/machine.h> 22#include <linux/regulator/machine.h>
20#include <linux/i2c.h> 23#include <linux/i2c.h>
21#include <linux/platform_data/at24.h>
22#include <linux/etherdevice.h> 24#include <linux/etherdevice.h>
23#include <linux/spi/spi.h> 25#include <linux/spi/spi.h>
24#include <linux/spi/flash.h> 26#include <linux/spi/flash.h>
@@ -27,7 +29,6 @@
27#include <asm/mach-types.h> 29#include <asm/mach-types.h>
28#include <asm/mach/arch.h> 30#include <asm/mach/arch.h>
29#include <mach/common.h> 31#include <mach/common.h>
30#include "cp_intc.h"
31#include <mach/da8xx.h> 32#include <mach/da8xx.h>
32#include <linux/platform_data/mtd-davinci.h> 33#include <linux/platform_data/mtd-davinci.h>
33#include <linux/platform_data/mtd-davinci-aemif.h> 34#include <linux/platform_data/mtd-davinci-aemif.h>
@@ -117,11 +118,15 @@ static void mityomapl138_cpufreq_init(const char *partnum)
117static void mityomapl138_cpufreq_init(const char *partnum) { } 118static void mityomapl138_cpufreq_init(const char *partnum) { }
118#endif 119#endif
119 120
120static void read_factory_config(struct nvmem_device *nvmem, void *context) 121static int read_factory_config(struct notifier_block *nb,
122 unsigned long event, void *data)
121{ 123{
122 int ret; 124 int ret;
123 const char *partnum = NULL; 125 const char *partnum = NULL;
124 struct davinci_soc_info *soc_info = &davinci_soc_info; 126 struct nvmem_device *nvmem = data;
127
128 if (strcmp(nvmem_dev_name(nvmem), "1-00500") != 0)
129 return NOTIFY_DONE;
125 130
126 if (!IS_BUILTIN(CONFIG_NVMEM)) { 131 if (!IS_BUILTIN(CONFIG_NVMEM)) {
127 pr_warn("Factory Config not available without CONFIG_NVMEM\n"); 132 pr_warn("Factory Config not available without CONFIG_NVMEM\n");
@@ -147,21 +152,20 @@ static void read_factory_config(struct nvmem_device *nvmem, void *context)
147 goto bad_config; 152 goto bad_config;
148 } 153 }
149 154
150 pr_info("Found MAC = %pM\n", factory_config.mac);
151 if (is_valid_ether_addr(factory_config.mac))
152 memcpy(soc_info->emac_pdata->mac_addr,
153 factory_config.mac, ETH_ALEN);
154 else
155 pr_warn("Invalid MAC found in factory config block\n");
156
157 partnum = factory_config.partnum; 155 partnum = factory_config.partnum;
158 pr_info("Part Number = %s\n", partnum); 156 pr_info("Part Number = %s\n", partnum);
159 157
160bad_config: 158bad_config:
161 /* default maximum speed is valid for all platforms */ 159 /* default maximum speed is valid for all platforms */
162 mityomapl138_cpufreq_init(partnum); 160 mityomapl138_cpufreq_init(partnum);
161
162 return NOTIFY_STOP;
163} 163}
164 164
165static struct notifier_block mityomapl138_nvmem_notifier = {
166 .notifier_call = read_factory_config,
167};
168
165/* 169/*
166 * We don't define a cell for factory config as it will be accessed from the 170 * We don't define a cell for factory config as it will be accessed from the
167 * board file using the nvmem notifier chain. 171 * board file using the nvmem notifier chain.
@@ -187,12 +191,10 @@ static struct nvmem_cell_lookup mityomapl138_nvmem_cell_lookup = {
187 .con_id = "mac-address", 191 .con_id = "mac-address",
188}; 192};
189 193
190static struct at24_platform_data mityomapl138_fd_chip = { 194static const struct property_entry mityomapl138_fd_chip_properties[] = {
191 .byte_len = 256, 195 PROPERTY_ENTRY_U32("pagesize", 8),
192 .page_size = 8, 196 PROPERTY_ENTRY_BOOL("read-only"),
193 .flags = AT24_FLAG_READONLY | AT24_FLAG_IRUGO, 197 { }
194 .setup = read_factory_config,
195 .context = NULL,
196}; 198};
197 199
198static struct davinci_i2c_platform_data mityomap_i2c_0_pdata = { 200static struct davinci_i2c_platform_data mityomap_i2c_0_pdata = {
@@ -321,7 +323,7 @@ static struct i2c_board_info __initdata mityomap_tps65023_info[] = {
321 }, 323 },
322 { 324 {
323 I2C_BOARD_INFO("24c02", 0x50), 325 I2C_BOARD_INFO("24c02", 0x50),
324 .platform_data = &mityomapl138_fd_chip, 326 .properties = mityomapl138_fd_chip_properties,
325 }, 327 },
326}; 328};
327 329
@@ -569,6 +571,7 @@ static void __init mityomapl138_init(void)
569 571
570 davinci_serial_init(da8xx_serial_device); 572 davinci_serial_init(da8xx_serial_device);
571 573
574 nvmem_register_notifier(&mityomapl138_nvmem_notifier);
572 nvmem_add_cell_table(&mityomapl138_nvmem_cell_table); 575 nvmem_add_cell_table(&mityomapl138_nvmem_cell_table);
573 nvmem_add_cell_lookups(&mityomapl138_nvmem_cell_lookup, 1); 576 nvmem_add_cell_lookups(&mityomapl138_nvmem_cell_lookup, 1);
574 577
@@ -624,7 +627,7 @@ static void __init mityomapl138_map_io(void)
624MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808") 627MACHINE_START(MITYOMAPL138, "MityDSP-L138/MityARM-1808")
625 .atag_offset = 0x100, 628 .atag_offset = 0x100,
626 .map_io = mityomapl138_map_io, 629 .map_io = mityomapl138_map_io,
627 .init_irq = cp_intc_init, 630 .init_irq = da850_init_irq,
628 .init_time = da850_init_time, 631 .init_time = da850_init_time,
629 .init_machine = mityomapl138_init, 632 .init_machine = mityomapl138_init,
630 .init_late = davinci_init_late, 633 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-neuros-osd2.c b/arch/arm/mach-davinci/board-neuros-osd2.c
index efdaa27241c5..ce99f782811a 100644
--- a/arch/arm/mach-davinci/board-neuros-osd2.c
+++ b/arch/arm/mach-davinci/board-neuros-osd2.c
@@ -231,7 +231,7 @@ MACHINE_START(NEUROS_OSD2, "Neuros OSD2")
231 /* Maintainer: Neuros Technologies <neuros@groups.google.com> */ 231 /* Maintainer: Neuros Technologies <neuros@groups.google.com> */
232 .atag_offset = 0x100, 232 .atag_offset = 0x100,
233 .map_io = davinci_ntosd2_map_io, 233 .map_io = davinci_ntosd2_map_io,
234 .init_irq = davinci_irq_init, 234 .init_irq = dm644x_init_irq,
235 .init_time = dm644x_init_time, 235 .init_time = dm644x_init_time,
236 .init_machine = davinci_ntosd2_init, 236 .init_machine = davinci_ntosd2_init,
237 .init_late = davinci_init_late, 237 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-omapl138-hawk.c b/arch/arm/mach-davinci/board-omapl138-hawk.c
index 8e8d51f4a276..0896af2bed24 100644
--- a/arch/arm/mach-davinci/board-omapl138-hawk.c
+++ b/arch/arm/mach-davinci/board-omapl138-hawk.c
@@ -27,7 +27,6 @@
27#include <asm/mach/arch.h> 27#include <asm/mach/arch.h>
28 28
29#include <mach/common.h> 29#include <mach/common.h>
30#include "cp_intc.h"
31#include <mach/da8xx.h> 30#include <mach/da8xx.h>
32#include <mach/mux.h> 31#include <mach/mux.h>
33 32
@@ -134,9 +133,9 @@ static const short hawk_mmcsd0_pins[] = {
134static struct gpiod_lookup_table mmc_gpios_table = { 133static struct gpiod_lookup_table mmc_gpios_table = {
135 .dev_id = "da830-mmc.0", 134 .dev_id = "da830-mmc.0",
136 .table = { 135 .table = {
137 GPIO_LOOKUP("davinci_gpio.0", DA850_HAWK_MMCSD_CD_PIN, "cd", 136 GPIO_LOOKUP("davinci_gpio", DA850_HAWK_MMCSD_CD_PIN, "cd",
138 GPIO_ACTIVE_LOW), 137 GPIO_ACTIVE_LOW),
139 GPIO_LOOKUP("davinci_gpio.0", DA850_HAWK_MMCSD_WP_PIN, "wp", 138 GPIO_LOOKUP("davinci_gpio", DA850_HAWK_MMCSD_WP_PIN, "wp",
140 GPIO_ACTIVE_LOW), 139 GPIO_ACTIVE_LOW),
141 }, 140 },
142}; 141};
@@ -294,66 +293,24 @@ static int omapl138_hawk_register_aemif(void)
294 return platform_device_register(&omapl138_hawk_aemif_device); 293 return platform_device_register(&omapl138_hawk_aemif_device);
295} 294}
296 295
297static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id);
298static da8xx_ocic_handler_t hawk_usb_ocic_handler;
299
300static const short da850_hawk_usb11_pins[] = { 296static const short da850_hawk_usb11_pins[] = {
301 DA850_GPIO2_4, DA850_GPIO6_13, 297 DA850_GPIO2_4, DA850_GPIO6_13,
302 -1 298 -1
303}; 299};
304 300
305static int hawk_usb_set_power(unsigned port, int on) 301static struct gpiod_lookup_table hawk_usb_gpio_lookup = {
306{ 302 .dev_id = "ohci-da8xx",
307 gpio_set_value(DA850_USB1_VBUS_PIN, on); 303 .table = {
308 return 0; 304 GPIO_LOOKUP("davinci_gpio", DA850_USB1_VBUS_PIN, "vbus", 0),
309} 305 GPIO_LOOKUP("davinci_gpio", DA850_USB1_OC_PIN, "oc", 0),
310 306 },
311static int hawk_usb_get_power(unsigned port) 307};
312{
313 return gpio_get_value(DA850_USB1_VBUS_PIN);
314}
315
316static int hawk_usb_get_oci(unsigned port)
317{
318 return !gpio_get_value(DA850_USB1_OC_PIN);
319}
320
321static int hawk_usb_ocic_notify(da8xx_ocic_handler_t handler)
322{
323 int irq = gpio_to_irq(DA850_USB1_OC_PIN);
324 int error = 0;
325
326 if (handler != NULL) {
327 hawk_usb_ocic_handler = handler;
328
329 error = request_irq(irq, omapl138_hawk_usb_ocic_irq,
330 IRQF_TRIGGER_RISING |
331 IRQF_TRIGGER_FALLING,
332 "OHCI over-current indicator", NULL);
333 if (error)
334 pr_err("%s: could not request IRQ to watch "
335 "over-current indicator changes\n", __func__);
336 } else {
337 free_irq(irq, NULL);
338 }
339 return error;
340}
341 308
342static struct da8xx_ohci_root_hub omapl138_hawk_usb11_pdata = { 309static struct da8xx_ohci_root_hub omapl138_hawk_usb11_pdata = {
343 .set_power = hawk_usb_set_power,
344 .get_power = hawk_usb_get_power,
345 .get_oci = hawk_usb_get_oci,
346 .ocic_notify = hawk_usb_ocic_notify,
347 /* TPS2087 switch @ 5V */ 310 /* TPS2087 switch @ 5V */
348 .potpgt = (3 + 1) / 2, /* 3 ms max */ 311 .potpgt = (3 + 1) / 2, /* 3 ms max */
349}; 312};
350 313
351static irqreturn_t omapl138_hawk_usb_ocic_irq(int irq, void *dev_id)
352{
353 hawk_usb_ocic_handler(&omapl138_hawk_usb11_pdata, 1);
354 return IRQ_HANDLED;
355}
356
357static __init void omapl138_hawk_usb_init(void) 314static __init void omapl138_hawk_usb_init(void)
358{ 315{
359 int ret; 316 int ret;
@@ -374,34 +331,13 @@ static __init void omapl138_hawk_usb_init(void)
374 pr_warn("%s: USB PHY registration failed: %d\n", 331 pr_warn("%s: USB PHY registration failed: %d\n",
375 __func__, ret); 332 __func__, ret);
376 333
377 ret = gpio_request_one(DA850_USB1_VBUS_PIN, 334 gpiod_add_lookup_table(&hawk_usb_gpio_lookup);
378 GPIOF_DIR_OUT, "USB1 VBUS");
379 if (ret < 0) {
380 pr_err("%s: failed to request GPIO for USB 1.1 port "
381 "power control: %d\n", __func__, ret);
382 return;
383 }
384
385 ret = gpio_request_one(DA850_USB1_OC_PIN,
386 GPIOF_DIR_IN, "USB1 OC");
387 if (ret < 0) {
388 pr_err("%s: failed to request GPIO for USB 1.1 port "
389 "over-current indicator: %d\n", __func__, ret);
390 goto usb11_setup_oc_fail;
391 }
392 335
393 ret = da8xx_register_usb11(&omapl138_hawk_usb11_pdata); 336 ret = da8xx_register_usb11(&omapl138_hawk_usb11_pdata);
394 if (ret) { 337 if (ret)
395 pr_warn("%s: USB 1.1 registration failed: %d\n", __func__, ret); 338 pr_warn("%s: USB 1.1 registration failed: %d\n", __func__, ret);
396 goto usb11_setup_fail;
397 }
398 339
399 return; 340 return;
400
401usb11_setup_fail:
402 gpio_free(DA850_USB1_OC_PIN);
403usb11_setup_oc_fail:
404 gpio_free(DA850_USB1_VBUS_PIN);
405} 341}
406 342
407static __init void omapl138_hawk_init(void) 343static __init void omapl138_hawk_init(void)
@@ -462,7 +398,7 @@ static void __init omapl138_hawk_map_io(void)
462MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard") 398MACHINE_START(OMAPL138_HAWKBOARD, "AM18x/OMAP-L138 Hawkboard")
463 .atag_offset = 0x100, 399 .atag_offset = 0x100,
464 .map_io = omapl138_hawk_map_io, 400 .map_io = omapl138_hawk_map_io,
465 .init_irq = cp_intc_init, 401 .init_irq = da850_init_irq,
466 .init_time = da850_init_time, 402 .init_time = da850_init_time,
467 .init_machine = omapl138_hawk_init, 403 .init_machine = omapl138_hawk_init,
468 .init_late = davinci_init_late, 404 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/board-sffsdr.c b/arch/arm/mach-davinci/board-sffsdr.c
index 792bb84d5011..bcdefde2f401 100644
--- a/arch/arm/mach-davinci/board-sffsdr.c
+++ b/arch/arm/mach-davinci/board-sffsdr.c
@@ -26,7 +26,7 @@
26#include <linux/init.h> 26#include <linux/init.h>
27#include <linux/platform_device.h> 27#include <linux/platform_device.h>
28#include <linux/i2c.h> 28#include <linux/i2c.h>
29#include <linux/platform_data/at24.h> 29#include <linux/property.h>
30#include <linux/mtd/mtd.h> 30#include <linux/mtd/mtd.h>
31#include <linux/mtd/rawnand.h> 31#include <linux/mtd/rawnand.h>
32#include <linux/mtd/partitions.h> 32#include <linux/mtd/partitions.h>
@@ -92,16 +92,15 @@ static struct platform_device davinci_sffsdr_nandflash_device = {
92 .resource = davinci_sffsdr_nandflash_resource, 92 .resource = davinci_sffsdr_nandflash_resource,
93}; 93};
94 94
95static struct at24_platform_data eeprom_info = { 95static const struct property_entry eeprom_properties[] = {
96 .byte_len = (64*1024) / 8, 96 PROPERTY_ENTRY_U32("pagesize", 32),
97 .page_size = 32, 97 { }
98 .flags = AT24_FLAG_ADDR16,
99}; 98};
100 99
101static struct i2c_board_info __initdata i2c_info[] = { 100static struct i2c_board_info __initdata i2c_info[] = {
102 { 101 {
103 I2C_BOARD_INFO("24lc64", 0x50), 102 I2C_BOARD_INFO("24c64", 0x50),
104 .platform_data = &eeprom_info, 103 .properties = eeprom_properties,
105 }, 104 },
106 /* Other I2C devices: 105 /* Other I2C devices:
107 * MSP430, addr 0x23 (not used) 106 * MSP430, addr 0x23 (not used)
@@ -153,7 +152,7 @@ static __init void davinci_sffsdr_init(void)
153MACHINE_START(SFFSDR, "Lyrtech SFFSDR") 152MACHINE_START(SFFSDR, "Lyrtech SFFSDR")
154 .atag_offset = 0x100, 153 .atag_offset = 0x100,
155 .map_io = davinci_sffsdr_map_io, 154 .map_io = davinci_sffsdr_map_io,
156 .init_irq = davinci_irq_init, 155 .init_irq = dm644x_init_irq,
157 .init_time = dm644x_init_time, 156 .init_time = dm644x_init_time,
158 .init_machine = davinci_sffsdr_init, 157 .init_machine = davinci_sffsdr_init,
159 .init_late = davinci_init_late, 158 .init_late = davinci_init_late,
diff --git a/arch/arm/mach-davinci/common.c b/arch/arm/mach-davinci/common.c
index e1d0f0d841ff..ae61d19f9b3a 100644
--- a/arch/arm/mach-davinci/common.c
+++ b/arch/arm/mach-davinci/common.c
@@ -23,24 +23,6 @@
23struct davinci_soc_info davinci_soc_info; 23struct davinci_soc_info davinci_soc_info;
24EXPORT_SYMBOL(davinci_soc_info); 24EXPORT_SYMBOL(davinci_soc_info);
25 25
26void __iomem *davinci_intc_base;
27int davinci_intc_type;
28
29void davinci_get_mac_addr(struct nvmem_device *nvmem, void *context)
30{
31 char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
32 off_t offset = (off_t)context;
33
34 if (!IS_BUILTIN(CONFIG_NVMEM)) {
35 pr_warn("Cannot read MAC addr from EEPROM without CONFIG_NVMEM\n");
36 return;
37 }
38
39 /* Read MAC addr from EEPROM */
40 if (nvmem_device_read(nvmem, offset, ETH_ALEN, mac_addr) == ETH_ALEN)
41 pr_info("Read MAC addr from EEPROM: %pM\n", mac_addr);
42}
43
44static int __init davinci_init_id(struct davinci_soc_info *soc_info) 26static int __init davinci_init_id(struct davinci_soc_info *soc_info)
45{ 27{
46 int i; 28 int i;
diff --git a/arch/arm/mach-davinci/cp_intc.c b/arch/arm/mach-davinci/cp_intc.c
deleted file mode 100644
index 94085d21018e..000000000000
--- a/arch/arm/mach-davinci/cp_intc.c
+++ /dev/null
@@ -1,215 +0,0 @@
1/*
2 * TI Common Platform Interrupt Controller (cp_intc) driver
3 *
4 * Author: Steve Chen <schen@mvista.com>
5 * Copyright (C) 2008-2009, MontaVista Software, Inc. <source@mvista.com>
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2. This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11
12#include <linux/export.h>
13#include <linux/init.h>
14#include <linux/irq.h>
15#include <linux/irqchip.h>
16#include <linux/irqdomain.h>
17#include <linux/io.h>
18#include <linux/of.h>
19#include <linux/of_address.h>
20#include <linux/of_irq.h>
21
22#include <mach/common.h>
23#include "cp_intc.h"
24
25static inline unsigned int cp_intc_read(unsigned offset)
26{
27 return __raw_readl(davinci_intc_base + offset);
28}
29
30static inline void cp_intc_write(unsigned long value, unsigned offset)
31{
32 __raw_writel(value, davinci_intc_base + offset);
33}
34
35static void cp_intc_ack_irq(struct irq_data *d)
36{
37 cp_intc_write(d->hwirq, CP_INTC_SYS_STAT_IDX_CLR);
38}
39
40/* Disable interrupt */
41static void cp_intc_mask_irq(struct irq_data *d)
42{
43 /* XXX don't know why we need to disable nIRQ here... */
44 cp_intc_write(1, CP_INTC_HOST_ENABLE_IDX_CLR);
45 cp_intc_write(d->hwirq, CP_INTC_SYS_ENABLE_IDX_CLR);
46 cp_intc_write(1, CP_INTC_HOST_ENABLE_IDX_SET);
47}
48
49/* Enable interrupt */
50static void cp_intc_unmask_irq(struct irq_data *d)
51{
52 cp_intc_write(d->hwirq, CP_INTC_SYS_ENABLE_IDX_SET);
53}
54
55static int cp_intc_set_irq_type(struct irq_data *d, unsigned int flow_type)
56{
57 unsigned reg = BIT_WORD(d->hwirq);
58 unsigned mask = BIT_MASK(d->hwirq);
59 unsigned polarity = cp_intc_read(CP_INTC_SYS_POLARITY(reg));
60 unsigned type = cp_intc_read(CP_INTC_SYS_TYPE(reg));
61
62 switch (flow_type) {
63 case IRQ_TYPE_EDGE_RISING:
64 polarity |= mask;
65 type |= mask;
66 break;
67 case IRQ_TYPE_EDGE_FALLING:
68 polarity &= ~mask;
69 type |= mask;
70 break;
71 case IRQ_TYPE_LEVEL_HIGH:
72 polarity |= mask;
73 type &= ~mask;
74 break;
75 case IRQ_TYPE_LEVEL_LOW:
76 polarity &= ~mask;
77 type &= ~mask;
78 break;
79 default:
80 return -EINVAL;
81 }
82
83 cp_intc_write(polarity, CP_INTC_SYS_POLARITY(reg));
84 cp_intc_write(type, CP_INTC_SYS_TYPE(reg));
85
86 return 0;
87}
88
89static struct irq_chip cp_intc_irq_chip = {
90 .name = "cp_intc",
91 .irq_ack = cp_intc_ack_irq,
92 .irq_mask = cp_intc_mask_irq,
93 .irq_unmask = cp_intc_unmask_irq,
94 .irq_set_type = cp_intc_set_irq_type,
95 .flags = IRQCHIP_SKIP_SET_WAKE,
96};
97
98static struct irq_domain *cp_intc_domain;
99
100static int cp_intc_host_map(struct irq_domain *h, unsigned int virq,
101 irq_hw_number_t hw)
102{
103 pr_debug("cp_intc_host_map(%d, 0x%lx)\n", virq, hw);
104
105 irq_set_chip(virq, &cp_intc_irq_chip);
106 irq_set_probe(virq);
107 irq_set_handler(virq, handle_edge_irq);
108 return 0;
109}
110
111static const struct irq_domain_ops cp_intc_host_ops = {
112 .map = cp_intc_host_map,
113 .xlate = irq_domain_xlate_onetwocell,
114};
115
116int __init cp_intc_of_init(struct device_node *node, struct device_node *parent)
117{
118 u32 num_irq = davinci_soc_info.intc_irq_num;
119 u8 *irq_prio = davinci_soc_info.intc_irq_prios;
120 u32 *host_map = davinci_soc_info.intc_host_map;
121 unsigned num_reg = BITS_TO_LONGS(num_irq);
122 int i, irq_base;
123
124 davinci_intc_type = DAVINCI_INTC_TYPE_CP_INTC;
125 if (node) {
126 davinci_intc_base = of_iomap(node, 0);
127 if (of_property_read_u32(node, "ti,intc-size", &num_irq))
128 pr_warn("unable to get intc-size, default to %d\n",
129 num_irq);
130 } else {
131 davinci_intc_base = ioremap(davinci_soc_info.intc_base, SZ_8K);
132 }
133 if (WARN_ON(!davinci_intc_base))
134 return -EINVAL;
135
136 cp_intc_write(0, CP_INTC_GLOBAL_ENABLE);
137
138 /* Disable all host interrupts */
139 cp_intc_write(0, CP_INTC_HOST_ENABLE(0));
140
141 /* Disable system interrupts */
142 for (i = 0; i < num_reg; i++)
143 cp_intc_write(~0, CP_INTC_SYS_ENABLE_CLR(i));
144
145 /* Set to normal mode, no nesting, no priority hold */
146 cp_intc_write(0, CP_INTC_CTRL);
147 cp_intc_write(0, CP_INTC_HOST_CTRL);
148
149 /* Clear system interrupt status */
150 for (i = 0; i < num_reg; i++)
151 cp_intc_write(~0, CP_INTC_SYS_STAT_CLR(i));
152
153 /* Enable nIRQ (what about nFIQ?) */
154 cp_intc_write(1, CP_INTC_HOST_ENABLE_IDX_SET);
155
156 /*
157 * Priority is determined by host channel: lower channel number has
158 * higher priority i.e. channel 0 has highest priority and channel 31
159 * had the lowest priority.
160 */
161 num_reg = (num_irq + 3) >> 2; /* 4 channels per register */
162 if (irq_prio) {
163 unsigned j, k;
164 u32 val;
165
166 for (k = i = 0; i < num_reg; i++) {
167 for (val = j = 0; j < 4; j++, k++) {
168 val >>= 8;
169 if (k < num_irq)
170 val |= irq_prio[k] << 24;
171 }
172
173 cp_intc_write(val, CP_INTC_CHAN_MAP(i));
174 }
175 } else {
176 /*
177 * Default everything to channel 15 if priority not specified.
178 * Note that channel 0-1 are mapped to nFIQ and channels 2-31
179 * are mapped to nIRQ.
180 */
181 for (i = 0; i < num_reg; i++)
182 cp_intc_write(0x0f0f0f0f, CP_INTC_CHAN_MAP(i));
183 }
184
185 if (host_map)
186 for (i = 0; host_map[i] != -1; i++)
187 cp_intc_write(host_map[i], CP_INTC_HOST_MAP(i));
188
189 irq_base = irq_alloc_descs(-1, 0, num_irq, 0);
190 if (irq_base < 0) {
191 pr_warn("Couldn't allocate IRQ numbers\n");
192 irq_base = 0;
193 }
194
195 /* create a legacy host */
196 cp_intc_domain = irq_domain_add_legacy(node, num_irq,
197 irq_base, 0, &cp_intc_host_ops, NULL);
198
199 if (!cp_intc_domain) {
200 pr_err("cp_intc: failed to allocate irq host!\n");
201 return -EINVAL;
202 }
203
204 /* Enable global interrupt */
205 cp_intc_write(1, CP_INTC_GLOBAL_ENABLE);
206
207 return 0;
208}
209
210void __init cp_intc_init(void)
211{
212 cp_intc_of_init(NULL, NULL);
213}
214
215IRQCHIP_DECLARE(cp_intc, "ti,cp-intc", cp_intc_of_init);
diff --git a/arch/arm/mach-davinci/cp_intc.h b/arch/arm/mach-davinci/cp_intc.h
deleted file mode 100644
index 827bbe9baed4..000000000000
--- a/arch/arm/mach-davinci/cp_intc.h
+++ /dev/null
@@ -1,57 +0,0 @@
1/*
2 * TI Common Platform Interrupt Controller (cp_intc) definitions
3 *
4 * Author: Steve Chen <schen@mvista.com>
5 * Copyright (C) 2008-2009, MontaVista Software, Inc. <source@mvista.com>
6 *
7 * This file is licensed under the terms of the GNU General Public License
8 * version 2. This program is licensed "as is" without any warranty of any
9 * kind, whether express or implied.
10 */
11#ifndef __ASM_HARDWARE_CP_INTC_H
12#define __ASM_HARDWARE_CP_INTC_H
13
14#define CP_INTC_REV 0x00
15#define CP_INTC_CTRL 0x04
16#define CP_INTC_HOST_CTRL 0x0C
17#define CP_INTC_GLOBAL_ENABLE 0x10
18#define CP_INTC_GLOBAL_NESTING_LEVEL 0x1C
19#define CP_INTC_SYS_STAT_IDX_SET 0x20
20#define CP_INTC_SYS_STAT_IDX_CLR 0x24
21#define CP_INTC_SYS_ENABLE_IDX_SET 0x28
22#define CP_INTC_SYS_ENABLE_IDX_CLR 0x2C
23#define CP_INTC_GLOBAL_WAKEUP_ENABLE 0x30
24#define CP_INTC_HOST_ENABLE_IDX_SET 0x34
25#define CP_INTC_HOST_ENABLE_IDX_CLR 0x38
26#define CP_INTC_PACING_PRESCALE 0x40
27#define CP_INTC_VECTOR_BASE 0x50
28#define CP_INTC_VECTOR_SIZE 0x54
29#define CP_INTC_VECTOR_NULL 0x58
30#define CP_INTC_PRIO_IDX 0x80
31#define CP_INTC_PRIO_VECTOR 0x84
32#define CP_INTC_SECURE_ENABLE 0x90
33#define CP_INTC_SECURE_PRIO_IDX 0x94
34#define CP_INTC_PACING_PARAM(n) (0x0100 + (n << 4))
35#define CP_INTC_PACING_DEC(n) (0x0104 + (n << 4))
36#define CP_INTC_PACING_MAP(n) (0x0108 + (n << 4))
37#define CP_INTC_SYS_RAW_STAT(n) (0x0200 + (n << 2))
38#define CP_INTC_SYS_STAT_CLR(n) (0x0280 + (n << 2))
39#define CP_INTC_SYS_ENABLE_SET(n) (0x0300 + (n << 2))
40#define CP_INTC_SYS_ENABLE_CLR(n) (0x0380 + (n << 2))
41#define CP_INTC_CHAN_MAP(n) (0x0400 + (n << 2))
42#define CP_INTC_HOST_MAP(n) (0x0800 + (n << 2))
43#define CP_INTC_HOST_PRIO_IDX(n) (0x0900 + (n << 2))
44#define CP_INTC_SYS_POLARITY(n) (0x0D00 + (n << 2))
45#define CP_INTC_SYS_TYPE(n) (0x0D80 + (n << 2))
46#define CP_INTC_WAKEUP_ENABLE(n) (0x0E00 + (n << 2))
47#define CP_INTC_DEBUG_SELECT(n) (0x0F00 + (n << 2))
48#define CP_INTC_SYS_SECURE_ENABLE(n) (0x1000 + (n << 2))
49#define CP_INTC_HOST_NESTING_LEVEL(n) (0x1100 + (n << 2))
50#define CP_INTC_HOST_ENABLE(n) (0x1500 + (n << 2))
51#define CP_INTC_HOST_PRIO_VECTOR(n) (0x1600 + (n << 2))
52#define CP_INTC_VECTOR_ADDR(n) (0x2000 + (n << 2))
53
54void cp_intc_init(void);
55int cp_intc_of_init(struct device_node *, struct device_node *);
56
57#endif /* __ASM_HARDWARE_CP_INTC_H */
diff --git a/arch/arm/mach-davinci/da830.c b/arch/arm/mach-davinci/da830.c
index 2cc9fe4c3a91..63511f638ce4 100644
--- a/arch/arm/mach-davinci/da830.c
+++ b/arch/arm/mach-davinci/da830.c
@@ -12,6 +12,7 @@
12#include <linux/clk/davinci.h> 12#include <linux/clk/davinci.h>
13#include <linux/gpio.h> 13#include <linux/gpio.h>
14#include <linux/init.h> 14#include <linux/init.h>
15#include <linux/irqchip/irq-davinci-cp-intc.h>
15#include <linux/platform_data/gpio-davinci.h> 16#include <linux/platform_data/gpio-davinci.h>
16 17
17#include <asm/mach/map.h> 18#include <asm/mach/map.h>
@@ -19,9 +20,9 @@
19#include <mach/common.h> 20#include <mach/common.h>
20#include <mach/cputype.h> 21#include <mach/cputype.h>
21#include <mach/da8xx.h> 22#include <mach/da8xx.h>
22#include <mach/irqs.h>
23#include <mach/time.h> 23#include <mach/time.h>
24 24
25#include "irqs.h"
25#include "mux.h" 26#include "mux.h"
26 27
27/* Offsets of the 8 compare registers on the da830 */ 28/* Offsets of the 8 compare registers on the da830 */
@@ -623,101 +624,6 @@ const short da830_eqep1_pins[] __initconst = {
623 -1 624 -1
624}; 625};
625 626
626/* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */
627static u8 da830_default_priorities[DA830_N_CP_INTC_IRQ] = {
628 [IRQ_DA8XX_COMMTX] = 7,
629 [IRQ_DA8XX_COMMRX] = 7,
630 [IRQ_DA8XX_NINT] = 7,
631 [IRQ_DA8XX_EVTOUT0] = 7,
632 [IRQ_DA8XX_EVTOUT1] = 7,
633 [IRQ_DA8XX_EVTOUT2] = 7,
634 [IRQ_DA8XX_EVTOUT3] = 7,
635 [IRQ_DA8XX_EVTOUT4] = 7,
636 [IRQ_DA8XX_EVTOUT5] = 7,
637 [IRQ_DA8XX_EVTOUT6] = 7,
638 [IRQ_DA8XX_EVTOUT7] = 7,
639 [IRQ_DA8XX_CCINT0] = 7,
640 [IRQ_DA8XX_CCERRINT] = 7,
641 [IRQ_DA8XX_TCERRINT0] = 7,
642 [IRQ_DA8XX_AEMIFINT] = 7,
643 [IRQ_DA8XX_I2CINT0] = 7,
644 [IRQ_DA8XX_MMCSDINT0] = 7,
645 [IRQ_DA8XX_MMCSDINT1] = 7,
646 [IRQ_DA8XX_ALLINT0] = 7,
647 [IRQ_DA8XX_RTC] = 7,
648 [IRQ_DA8XX_SPINT0] = 7,
649 [IRQ_DA8XX_TINT12_0] = 7,
650 [IRQ_DA8XX_TINT34_0] = 7,
651 [IRQ_DA8XX_TINT12_1] = 7,
652 [IRQ_DA8XX_TINT34_1] = 7,
653 [IRQ_DA8XX_UARTINT0] = 7,
654 [IRQ_DA8XX_KEYMGRINT] = 7,
655 [IRQ_DA830_MPUERR] = 7,
656 [IRQ_DA8XX_CHIPINT0] = 7,
657 [IRQ_DA8XX_CHIPINT1] = 7,
658 [IRQ_DA8XX_CHIPINT2] = 7,
659 [IRQ_DA8XX_CHIPINT3] = 7,
660 [IRQ_DA8XX_TCERRINT1] = 7,
661 [IRQ_DA8XX_C0_RX_THRESH_PULSE] = 7,
662 [IRQ_DA8XX_C0_RX_PULSE] = 7,
663 [IRQ_DA8XX_C0_TX_PULSE] = 7,
664 [IRQ_DA8XX_C0_MISC_PULSE] = 7,
665 [IRQ_DA8XX_C1_RX_THRESH_PULSE] = 7,
666 [IRQ_DA8XX_C1_RX_PULSE] = 7,
667 [IRQ_DA8XX_C1_TX_PULSE] = 7,
668 [IRQ_DA8XX_C1_MISC_PULSE] = 7,
669 [IRQ_DA8XX_MEMERR] = 7,
670 [IRQ_DA8XX_GPIO0] = 7,
671 [IRQ_DA8XX_GPIO1] = 7,
672 [IRQ_DA8XX_GPIO2] = 7,
673 [IRQ_DA8XX_GPIO3] = 7,
674 [IRQ_DA8XX_GPIO4] = 7,
675 [IRQ_DA8XX_GPIO5] = 7,
676 [IRQ_DA8XX_GPIO6] = 7,
677 [IRQ_DA8XX_GPIO7] = 7,
678 [IRQ_DA8XX_GPIO8] = 7,
679 [IRQ_DA8XX_I2CINT1] = 7,
680 [IRQ_DA8XX_LCDINT] = 7,
681 [IRQ_DA8XX_UARTINT1] = 7,
682 [IRQ_DA8XX_MCASPINT] = 7,
683 [IRQ_DA8XX_ALLINT1] = 7,
684 [IRQ_DA8XX_SPINT1] = 7,
685 [IRQ_DA8XX_UHPI_INT1] = 7,
686 [IRQ_DA8XX_USB_INT] = 7,
687 [IRQ_DA8XX_IRQN] = 7,
688 [IRQ_DA8XX_RWAKEUP] = 7,
689 [IRQ_DA8XX_UARTINT2] = 7,
690 [IRQ_DA8XX_DFTSSINT] = 7,
691 [IRQ_DA8XX_EHRPWM0] = 7,
692 [IRQ_DA8XX_EHRPWM0TZ] = 7,
693 [IRQ_DA8XX_EHRPWM1] = 7,
694 [IRQ_DA8XX_EHRPWM1TZ] = 7,
695 [IRQ_DA830_EHRPWM2] = 7,
696 [IRQ_DA830_EHRPWM2TZ] = 7,
697 [IRQ_DA8XX_ECAP0] = 7,
698 [IRQ_DA8XX_ECAP1] = 7,
699 [IRQ_DA8XX_ECAP2] = 7,
700 [IRQ_DA830_EQEP0] = 7,
701 [IRQ_DA830_EQEP1] = 7,
702 [IRQ_DA830_T12CMPINT0_0] = 7,
703 [IRQ_DA830_T12CMPINT1_0] = 7,
704 [IRQ_DA830_T12CMPINT2_0] = 7,
705 [IRQ_DA830_T12CMPINT3_0] = 7,
706 [IRQ_DA830_T12CMPINT4_0] = 7,
707 [IRQ_DA830_T12CMPINT5_0] = 7,
708 [IRQ_DA830_T12CMPINT6_0] = 7,
709 [IRQ_DA830_T12CMPINT7_0] = 7,
710 [IRQ_DA830_T12CMPINT0_1] = 7,
711 [IRQ_DA830_T12CMPINT1_1] = 7,
712 [IRQ_DA830_T12CMPINT2_1] = 7,
713 [IRQ_DA830_T12CMPINT3_1] = 7,
714 [IRQ_DA830_T12CMPINT4_1] = 7,
715 [IRQ_DA830_T12CMPINT5_1] = 7,
716 [IRQ_DA830_T12CMPINT6_1] = 7,
717 [IRQ_DA830_T12CMPINT7_1] = 7,
718 [IRQ_DA8XX_ARMCLKSTOPREQ] = 7,
719};
720
721static struct map_desc da830_io_desc[] = { 627static struct map_desc da830_io_desc[] = {
722 { 628 {
723 .virtual = IO_VIRT, 629 .virtual = IO_VIRT,
@@ -772,17 +678,17 @@ int __init da830_register_gpio(void)
772static struct davinci_timer_instance da830_timer_instance[2] = { 678static struct davinci_timer_instance da830_timer_instance[2] = {
773 { 679 {
774 .base = DA8XX_TIMER64P0_BASE, 680 .base = DA8XX_TIMER64P0_BASE,
775 .bottom_irq = IRQ_DA8XX_TINT12_0, 681 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT12_0),
776 .top_irq = IRQ_DA8XX_TINT34_0, 682 .top_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT34_0),
777 .cmp_off = DA830_CMP12_0, 683 .cmp_off = DA830_CMP12_0,
778 .cmp_irq = IRQ_DA830_T12CMPINT0_0, 684 .cmp_irq = DAVINCI_INTC_IRQ(IRQ_DA830_T12CMPINT0_0),
779 }, 685 },
780 { 686 {
781 .base = DA8XX_TIMER64P1_BASE, 687 .base = DA8XX_TIMER64P1_BASE,
782 .bottom_irq = IRQ_DA8XX_TINT12_1, 688 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT12_1),
783 .top_irq = IRQ_DA8XX_TINT34_1, 689 .top_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT34_1),
784 .cmp_off = DA830_CMP12_0, 690 .cmp_off = DA830_CMP12_0,
785 .cmp_irq = IRQ_DA830_T12CMPINT0_1, 691 .cmp_irq = DAVINCI_INTC_IRQ(IRQ_DA830_T12CMPINT0_1),
786 }, 692 },
787}; 693};
788 694
@@ -806,10 +712,6 @@ static const struct davinci_soc_info davinci_soc_info_da830 = {
806 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120, 712 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120,
807 .pinmux_pins = da830_pins, 713 .pinmux_pins = da830_pins,
808 .pinmux_pins_num = ARRAY_SIZE(da830_pins), 714 .pinmux_pins_num = ARRAY_SIZE(da830_pins),
809 .intc_base = DA8XX_CP_INTC_BASE,
810 .intc_type = DAVINCI_INTC_TYPE_CP_INTC,
811 .intc_irq_prios = da830_default_priorities,
812 .intc_irq_num = DA830_N_CP_INTC_IRQ,
813 .timer_info = &da830_timer_info, 715 .timer_info = &da830_timer_info,
814 .emac_pdata = &da8xx_emac_pdata, 716 .emac_pdata = &da8xx_emac_pdata,
815}; 717};
@@ -822,6 +724,20 @@ void __init da830_init(void)
822 WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module"); 724 WARN(!da8xx_syscfg0_base, "Unable to map syscfg0 module");
823} 725}
824 726
727static const struct davinci_cp_intc_config da830_cp_intc_config = {
728 .reg = {
729 .start = DA8XX_CP_INTC_BASE,
730 .end = DA8XX_CP_INTC_BASE + SZ_8K - 1,
731 .flags = IORESOURCE_MEM,
732 },
733 .num_irqs = DA830_N_CP_INTC_IRQ,
734};
735
736void __init da830_init_irq(void)
737{
738 davinci_cp_intc_init(&da830_cp_intc_config);
739}
740
825void __init da830_init_time(void) 741void __init da830_init_time(void)
826{ 742{
827 void __iomem *pll; 743 void __iomem *pll;
diff --git a/arch/arm/mach-davinci/da850.c b/arch/arm/mach-davinci/da850.c
index e7b78df2bfef..67ab71ba3ad3 100644
--- a/arch/arm/mach-davinci/da850.c
+++ b/arch/arm/mach-davinci/da850.c
@@ -18,9 +18,11 @@
18#include <linux/cpufreq.h> 18#include <linux/cpufreq.h>
19#include <linux/gpio.h> 19#include <linux/gpio.h>
20#include <linux/init.h> 20#include <linux/init.h>
21#include <linux/irqchip/irq-davinci-cp-intc.h>
21#include <linux/mfd/da8xx-cfgchip.h> 22#include <linux/mfd/da8xx-cfgchip.h>
22#include <linux/platform_data/clk-da8xx-cfgchip.h> 23#include <linux/platform_data/clk-da8xx-cfgchip.h>
23#include <linux/platform_data/clk-davinci-pll.h> 24#include <linux/platform_data/clk-davinci-pll.h>
25#include <linux/platform_data/davinci-cpufreq.h>
24#include <linux/platform_data/gpio-davinci.h> 26#include <linux/platform_data/gpio-davinci.h>
25#include <linux/platform_device.h> 27#include <linux/platform_device.h>
26#include <linux/regmap.h> 28#include <linux/regmap.h>
@@ -29,13 +31,12 @@
29#include <asm/mach/map.h> 31#include <asm/mach/map.h>
30 32
31#include <mach/common.h> 33#include <mach/common.h>
32#include <mach/cpufreq.h>
33#include <mach/cputype.h> 34#include <mach/cputype.h>
34#include <mach/da8xx.h> 35#include <mach/da8xx.h>
35#include <mach/irqs.h>
36#include <mach/pm.h> 36#include <mach/pm.h>
37#include <mach/time.h> 37#include <mach/time.h>
38 38
39#include "irqs.h"
39#include "mux.h" 40#include "mux.h"
40 41
41#define DA850_PLL1_BASE 0x01e1a000 42#define DA850_PLL1_BASE 0x01e1a000
@@ -298,111 +299,6 @@ const short da850_vpif_display_pins[] __initconst = {
298 -1 299 -1
299}; 300};
300 301
301/* FIQ are pri 0-1; otherwise 2-7, with 7 lowest priority */
302static u8 da850_default_priorities[DA850_N_CP_INTC_IRQ] = {
303 [IRQ_DA8XX_COMMTX] = 7,
304 [IRQ_DA8XX_COMMRX] = 7,
305 [IRQ_DA8XX_NINT] = 7,
306 [IRQ_DA8XX_EVTOUT0] = 7,
307 [IRQ_DA8XX_EVTOUT1] = 7,
308 [IRQ_DA8XX_EVTOUT2] = 7,
309 [IRQ_DA8XX_EVTOUT3] = 7,
310 [IRQ_DA8XX_EVTOUT4] = 7,
311 [IRQ_DA8XX_EVTOUT5] = 7,
312 [IRQ_DA8XX_EVTOUT6] = 7,
313 [IRQ_DA8XX_EVTOUT7] = 7,
314 [IRQ_DA8XX_CCINT0] = 7,
315 [IRQ_DA8XX_CCERRINT] = 7,
316 [IRQ_DA8XX_TCERRINT0] = 7,
317 [IRQ_DA8XX_AEMIFINT] = 7,
318 [IRQ_DA8XX_I2CINT0] = 7,
319 [IRQ_DA8XX_MMCSDINT0] = 7,
320 [IRQ_DA8XX_MMCSDINT1] = 7,
321 [IRQ_DA8XX_ALLINT0] = 7,
322 [IRQ_DA8XX_RTC] = 7,
323 [IRQ_DA8XX_SPINT0] = 7,
324 [IRQ_DA8XX_TINT12_0] = 7,
325 [IRQ_DA8XX_TINT34_0] = 7,
326 [IRQ_DA8XX_TINT12_1] = 7,
327 [IRQ_DA8XX_TINT34_1] = 7,
328 [IRQ_DA8XX_UARTINT0] = 7,
329 [IRQ_DA8XX_KEYMGRINT] = 7,
330 [IRQ_DA850_MPUADDRERR0] = 7,
331 [IRQ_DA8XX_CHIPINT0] = 7,
332 [IRQ_DA8XX_CHIPINT1] = 7,
333 [IRQ_DA8XX_CHIPINT2] = 7,
334 [IRQ_DA8XX_CHIPINT3] = 7,
335 [IRQ_DA8XX_TCERRINT1] = 7,
336 [IRQ_DA8XX_C0_RX_THRESH_PULSE] = 7,
337 [IRQ_DA8XX_C0_RX_PULSE] = 7,
338 [IRQ_DA8XX_C0_TX_PULSE] = 7,
339 [IRQ_DA8XX_C0_MISC_PULSE] = 7,
340 [IRQ_DA8XX_C1_RX_THRESH_PULSE] = 7,
341 [IRQ_DA8XX_C1_RX_PULSE] = 7,
342 [IRQ_DA8XX_C1_TX_PULSE] = 7,
343 [IRQ_DA8XX_C1_MISC_PULSE] = 7,
344 [IRQ_DA8XX_MEMERR] = 7,
345 [IRQ_DA8XX_GPIO0] = 7,
346 [IRQ_DA8XX_GPIO1] = 7,
347 [IRQ_DA8XX_GPIO2] = 7,
348 [IRQ_DA8XX_GPIO3] = 7,
349 [IRQ_DA8XX_GPIO4] = 7,
350 [IRQ_DA8XX_GPIO5] = 7,
351 [IRQ_DA8XX_GPIO6] = 7,
352 [IRQ_DA8XX_GPIO7] = 7,
353 [IRQ_DA8XX_GPIO8] = 7,
354 [IRQ_DA8XX_I2CINT1] = 7,
355 [IRQ_DA8XX_LCDINT] = 7,
356 [IRQ_DA8XX_UARTINT1] = 7,
357 [IRQ_DA8XX_MCASPINT] = 7,
358 [IRQ_DA8XX_ALLINT1] = 7,
359 [IRQ_DA8XX_SPINT1] = 7,
360 [IRQ_DA8XX_UHPI_INT1] = 7,
361 [IRQ_DA8XX_USB_INT] = 7,
362 [IRQ_DA8XX_IRQN] = 7,
363 [IRQ_DA8XX_RWAKEUP] = 7,
364 [IRQ_DA8XX_UARTINT2] = 7,
365 [IRQ_DA8XX_DFTSSINT] = 7,
366 [IRQ_DA8XX_EHRPWM0] = 7,
367 [IRQ_DA8XX_EHRPWM0TZ] = 7,
368 [IRQ_DA8XX_EHRPWM1] = 7,
369 [IRQ_DA8XX_EHRPWM1TZ] = 7,
370 [IRQ_DA850_SATAINT] = 7,
371 [IRQ_DA850_TINTALL_2] = 7,
372 [IRQ_DA8XX_ECAP0] = 7,
373 [IRQ_DA8XX_ECAP1] = 7,
374 [IRQ_DA8XX_ECAP2] = 7,
375 [IRQ_DA850_MMCSDINT0_1] = 7,
376 [IRQ_DA850_MMCSDINT1_1] = 7,
377 [IRQ_DA850_T12CMPINT0_2] = 7,
378 [IRQ_DA850_T12CMPINT1_2] = 7,
379 [IRQ_DA850_T12CMPINT2_2] = 7,
380 [IRQ_DA850_T12CMPINT3_2] = 7,
381 [IRQ_DA850_T12CMPINT4_2] = 7,
382 [IRQ_DA850_T12CMPINT5_2] = 7,
383 [IRQ_DA850_T12CMPINT6_2] = 7,
384 [IRQ_DA850_T12CMPINT7_2] = 7,
385 [IRQ_DA850_T12CMPINT0_3] = 7,
386 [IRQ_DA850_T12CMPINT1_3] = 7,
387 [IRQ_DA850_T12CMPINT2_3] = 7,
388 [IRQ_DA850_T12CMPINT3_3] = 7,
389 [IRQ_DA850_T12CMPINT4_3] = 7,
390 [IRQ_DA850_T12CMPINT5_3] = 7,
391 [IRQ_DA850_T12CMPINT6_3] = 7,
392 [IRQ_DA850_T12CMPINT7_3] = 7,
393 [IRQ_DA850_RPIINT] = 7,
394 [IRQ_DA850_VPIFINT] = 7,
395 [IRQ_DA850_CCINT1] = 7,
396 [IRQ_DA850_CCERRINT1] = 7,
397 [IRQ_DA850_TCERRINT2] = 7,
398 [IRQ_DA850_TINTALL_3] = 7,
399 [IRQ_DA850_MCBSP0RINT] = 7,
400 [IRQ_DA850_MCBSP0XINT] = 7,
401 [IRQ_DA850_MCBSP1RINT] = 7,
402 [IRQ_DA850_MCBSP1XINT] = 7,
403 [IRQ_DA8XX_ARMCLKSTOPREQ] = 7,
404};
405
406static struct map_desc da850_io_desc[] = { 302static struct map_desc da850_io_desc[] = {
407 { 303 {
408 .virtual = IO_VIRT, 304 .virtual = IO_VIRT,
@@ -439,23 +335,23 @@ static struct davinci_id da850_ids[] = {
439static struct davinci_timer_instance da850_timer_instance[4] = { 335static struct davinci_timer_instance da850_timer_instance[4] = {
440 { 336 {
441 .base = DA8XX_TIMER64P0_BASE, 337 .base = DA8XX_TIMER64P0_BASE,
442 .bottom_irq = IRQ_DA8XX_TINT12_0, 338 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT12_0),
443 .top_irq = IRQ_DA8XX_TINT34_0, 339 .top_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT34_0),
444 }, 340 },
445 { 341 {
446 .base = DA8XX_TIMER64P1_BASE, 342 .base = DA8XX_TIMER64P1_BASE,
447 .bottom_irq = IRQ_DA8XX_TINT12_1, 343 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT12_1),
448 .top_irq = IRQ_DA8XX_TINT34_1, 344 .top_irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_TINT34_1),
449 }, 345 },
450 { 346 {
451 .base = DA850_TIMER64P2_BASE, 347 .base = DA850_TIMER64P2_BASE,
452 .bottom_irq = IRQ_DA850_TINT12_2, 348 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_DA850_TINT12_2),
453 .top_irq = IRQ_DA850_TINT34_2, 349 .top_irq = DAVINCI_INTC_IRQ(IRQ_DA850_TINT34_2),
454 }, 350 },
455 { 351 {
456 .base = DA850_TIMER64P3_BASE, 352 .base = DA850_TIMER64P3_BASE,
457 .bottom_irq = IRQ_DA850_TINT12_3, 353 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_DA850_TINT12_3),
458 .top_irq = IRQ_DA850_TINT34_3, 354 .top_irq = DAVINCI_INTC_IRQ(IRQ_DA850_TINT34_3),
459 }, 355 },
460}; 356};
461 357
@@ -658,8 +554,8 @@ static struct platform_device da850_vpif_dev = {
658 554
659static struct resource da850_vpif_display_resource[] = { 555static struct resource da850_vpif_display_resource[] = {
660 { 556 {
661 .start = IRQ_DA850_VPIFINT, 557 .start = DAVINCI_INTC_IRQ(IRQ_DA850_VPIFINT),
662 .end = IRQ_DA850_VPIFINT, 558 .end = DAVINCI_INTC_IRQ(IRQ_DA850_VPIFINT),
663 .flags = IORESOURCE_IRQ, 559 .flags = IORESOURCE_IRQ,
664 }, 560 },
665}; 561};
@@ -677,13 +573,13 @@ static struct platform_device da850_vpif_display_dev = {
677 573
678static struct resource da850_vpif_capture_resource[] = { 574static struct resource da850_vpif_capture_resource[] = {
679 { 575 {
680 .start = IRQ_DA850_VPIFINT, 576 .start = DAVINCI_INTC_IRQ(IRQ_DA850_VPIFINT),
681 .end = IRQ_DA850_VPIFINT, 577 .end = DAVINCI_INTC_IRQ(IRQ_DA850_VPIFINT),
682 .flags = IORESOURCE_IRQ, 578 .flags = IORESOURCE_IRQ,
683 }, 579 },
684 { 580 {
685 .start = IRQ_DA850_VPIFINT, 581 .start = DAVINCI_INTC_IRQ(IRQ_DA850_VPIFINT),
686 .end = IRQ_DA850_VPIFINT, 582 .end = DAVINCI_INTC_IRQ(IRQ_DA850_VPIFINT),
687 .flags = IORESOURCE_IRQ, 583 .flags = IORESOURCE_IRQ,
688 }, 584 },
689}; 585};
@@ -738,10 +634,6 @@ static const struct davinci_soc_info davinci_soc_info_da850 = {
738 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120, 634 .pinmux_base = DA8XX_SYSCFG0_BASE + 0x120,
739 .pinmux_pins = da850_pins, 635 .pinmux_pins = da850_pins,
740 .pinmux_pins_num = ARRAY_SIZE(da850_pins), 636 .pinmux_pins_num = ARRAY_SIZE(da850_pins),
741 .intc_base = DA8XX_CP_INTC_BASE,
742 .intc_type = DAVINCI_INTC_TYPE_CP_INTC,
743 .intc_irq_prios = da850_default_priorities,
744 .intc_irq_num = DA850_N_CP_INTC_IRQ,
745 .timer_info = &da850_timer_info, 637 .timer_info = &da850_timer_info,
746 .emac_pdata = &da8xx_emac_pdata, 638 .emac_pdata = &da8xx_emac_pdata,
747 .sram_dma = DA8XX_SHARED_RAM_BASE, 639 .sram_dma = DA8XX_SHARED_RAM_BASE,
@@ -760,6 +652,20 @@ void __init da850_init(void)
760 WARN(!da8xx_syscfg1_base, "Unable to map syscfg1 module"); 652 WARN(!da8xx_syscfg1_base, "Unable to map syscfg1 module");
761} 653}
762 654
655static const struct davinci_cp_intc_config da850_cp_intc_config = {
656 .reg = {
657 .start = DA8XX_CP_INTC_BASE,
658 .end = DA8XX_CP_INTC_BASE + SZ_8K - 1,
659 .flags = IORESOURCE_MEM,
660 },
661 .num_irqs = DA850_N_CP_INTC_IRQ,
662};
663
664void __init da850_init_irq(void)
665{
666 davinci_cp_intc_init(&da850_cp_intc_config);
667}
668
763void __init da850_init_time(void) 669void __init da850_init_time(void)
764{ 670{
765 void __iomem *pll0; 671 void __iomem *pll0;
diff --git a/arch/arm/mach-davinci/davinci.h b/arch/arm/mach-davinci/davinci.h
index db4c95ef4d5c..56c1835c42e5 100644
--- a/arch/arm/mach-davinci/davinci.h
+++ b/arch/arm/mach-davinci/davinci.h
@@ -88,6 +88,7 @@ int davinci_init_wdt(void);
88/* DM355 function declarations */ 88/* DM355 function declarations */
89void dm355_init(void); 89void dm355_init(void);
90void dm355_init_time(void); 90void dm355_init_time(void);
91void dm355_init_irq(void);
91void dm355_register_clocks(void); 92void dm355_register_clocks(void);
92void dm355_init_spi0(unsigned chipselect_mask, 93void dm355_init_spi0(unsigned chipselect_mask,
93 const struct spi_board_info *info, unsigned len); 94 const struct spi_board_info *info, unsigned len);
@@ -97,6 +98,7 @@ int dm355_gpio_register(void);
97 98
98/* DM365 function declarations */ 99/* DM365 function declarations */
99void dm365_init(void); 100void dm365_init(void);
101void dm365_init_irq(void);
100void dm365_init_time(void); 102void dm365_init_time(void);
101void dm365_register_clocks(void); 103void dm365_register_clocks(void);
102void dm365_init_asp(void); 104void dm365_init_asp(void);
@@ -110,6 +112,7 @@ int dm365_gpio_register(void);
110 112
111/* DM644x function declarations */ 113/* DM644x function declarations */
112void dm644x_init(void); 114void dm644x_init(void);
115void dm644x_init_irq(void);
113void dm644x_init_devices(void); 116void dm644x_init_devices(void);
114void dm644x_init_time(void); 117void dm644x_init_time(void);
115void dm644x_register_clocks(void); 118void dm644x_register_clocks(void);
@@ -119,6 +122,7 @@ int dm644x_gpio_register(void);
119 122
120/* DM646x function declarations */ 123/* DM646x function declarations */
121void dm646x_init(void); 124void dm646x_init(void);
125void dm646x_init_irq(void);
122void dm646x_init_time(unsigned long ref_clk_rate, unsigned long aux_clkin_rate); 126void dm646x_init_time(unsigned long ref_clk_rate, unsigned long aux_clkin_rate);
123void dm646x_register_clocks(void); 127void dm646x_register_clocks(void);
124void dm646x_init_mcasp0(struct snd_platform_data *pdata); 128void dm646x_init_mcasp0(struct snd_platform_data *pdata);
diff --git a/arch/arm/mach-davinci/devices-da8xx.c b/arch/arm/mach-davinci/devices-da8xx.c
index cf78da5ab054..b8dc674e06bc 100644
--- a/arch/arm/mach-davinci/devices-da8xx.c
+++ b/arch/arm/mach-davinci/devices-da8xx.c
@@ -28,6 +28,7 @@
28 28
29#include "asp.h" 29#include "asp.h"
30#include "cpuidle.h" 30#include "cpuidle.h"
31#include "irqs.h"
31#include "sram.h" 32#include "sram.h"
32 33
33#define DA8XX_TPCC_BASE 0x01c00000 34#define DA8XX_TPCC_BASE 0x01c00000
@@ -64,7 +65,7 @@ void __iomem *da8xx_syscfg1_base;
64static struct plat_serial8250_port da8xx_serial0_pdata[] = { 65static struct plat_serial8250_port da8xx_serial0_pdata[] = {
65 { 66 {
66 .mapbase = DA8XX_UART0_BASE, 67 .mapbase = DA8XX_UART0_BASE,
67 .irq = IRQ_DA8XX_UARTINT0, 68 .irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_UARTINT0),
68 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 69 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
69 UPF_IOREMAP, 70 UPF_IOREMAP,
70 .iotype = UPIO_MEM, 71 .iotype = UPIO_MEM,
@@ -77,7 +78,7 @@ static struct plat_serial8250_port da8xx_serial0_pdata[] = {
77static struct plat_serial8250_port da8xx_serial1_pdata[] = { 78static struct plat_serial8250_port da8xx_serial1_pdata[] = {
78 { 79 {
79 .mapbase = DA8XX_UART1_BASE, 80 .mapbase = DA8XX_UART1_BASE,
80 .irq = IRQ_DA8XX_UARTINT1, 81 .irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_UARTINT1),
81 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 82 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
82 UPF_IOREMAP, 83 UPF_IOREMAP,
83 .iotype = UPIO_MEM, 84 .iotype = UPIO_MEM,
@@ -90,7 +91,7 @@ static struct plat_serial8250_port da8xx_serial1_pdata[] = {
90static struct plat_serial8250_port da8xx_serial2_pdata[] = { 91static struct plat_serial8250_port da8xx_serial2_pdata[] = {
91 { 92 {
92 .mapbase = DA8XX_UART2_BASE, 93 .mapbase = DA8XX_UART2_BASE,
93 .irq = IRQ_DA8XX_UARTINT2, 94 .irq = DAVINCI_INTC_IRQ(IRQ_DA8XX_UARTINT2),
94 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 95 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
95 UPF_IOREMAP, 96 UPF_IOREMAP,
96 .iotype = UPIO_MEM, 97 .iotype = UPIO_MEM,
@@ -171,12 +172,12 @@ static struct resource da8xx_edma0_resources[] = {
171 }, 172 },
172 { 173 {
173 .name = "edma3_ccint", 174 .name = "edma3_ccint",
174 .start = IRQ_DA8XX_CCINT0, 175 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_CCINT0),
175 .flags = IORESOURCE_IRQ, 176 .flags = IORESOURCE_IRQ,
176 }, 177 },
177 { 178 {
178 .name = "edma3_ccerrint", 179 .name = "edma3_ccerrint",
179 .start = IRQ_DA8XX_CCERRINT, 180 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_CCERRINT),
180 .flags = IORESOURCE_IRQ, 181 .flags = IORESOURCE_IRQ,
181 }, 182 },
182}; 183};
@@ -196,12 +197,12 @@ static struct resource da850_edma1_resources[] = {
196 }, 197 },
197 { 198 {
198 .name = "edma3_ccint", 199 .name = "edma3_ccint",
199 .start = IRQ_DA850_CCINT1, 200 .start = DAVINCI_INTC_IRQ(IRQ_DA850_CCINT1),
200 .flags = IORESOURCE_IRQ, 201 .flags = IORESOURCE_IRQ,
201 }, 202 },
202 { 203 {
203 .name = "edma3_ccerrint", 204 .name = "edma3_ccerrint",
204 .start = IRQ_DA850_CCERRINT1, 205 .start = DAVINCI_INTC_IRQ(IRQ_DA850_CCERRINT1),
205 .flags = IORESOURCE_IRQ, 206 .flags = IORESOURCE_IRQ,
206 }, 207 },
207}; 208};
@@ -306,8 +307,8 @@ static struct resource da8xx_i2c_resources0[] = {
306 .flags = IORESOURCE_MEM, 307 .flags = IORESOURCE_MEM,
307 }, 308 },
308 { 309 {
309 .start = IRQ_DA8XX_I2CINT0, 310 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_I2CINT0),
310 .end = IRQ_DA8XX_I2CINT0, 311 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_I2CINT0),
311 .flags = IORESOURCE_IRQ, 312 .flags = IORESOURCE_IRQ,
312 }, 313 },
313}; 314};
@@ -326,8 +327,8 @@ static struct resource da8xx_i2c_resources1[] = {
326 .flags = IORESOURCE_MEM, 327 .flags = IORESOURCE_MEM,
327 }, 328 },
328 { 329 {
329 .start = IRQ_DA8XX_I2CINT1, 330 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_I2CINT1),
330 .end = IRQ_DA8XX_I2CINT1, 331 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_I2CINT1),
331 .flags = IORESOURCE_IRQ, 332 .flags = IORESOURCE_IRQ,
332 }, 333 },
333}; 334};
@@ -382,23 +383,23 @@ static struct resource da8xx_emac_resources[] = {
382 .flags = IORESOURCE_MEM, 383 .flags = IORESOURCE_MEM,
383 }, 384 },
384 { 385 {
385 .start = IRQ_DA8XX_C0_RX_THRESH_PULSE, 386 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_RX_THRESH_PULSE),
386 .end = IRQ_DA8XX_C0_RX_THRESH_PULSE, 387 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_RX_THRESH_PULSE),
387 .flags = IORESOURCE_IRQ, 388 .flags = IORESOURCE_IRQ,
388 }, 389 },
389 { 390 {
390 .start = IRQ_DA8XX_C0_RX_PULSE, 391 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_RX_PULSE),
391 .end = IRQ_DA8XX_C0_RX_PULSE, 392 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_RX_PULSE),
392 .flags = IORESOURCE_IRQ, 393 .flags = IORESOURCE_IRQ,
393 }, 394 },
394 { 395 {
395 .start = IRQ_DA8XX_C0_TX_PULSE, 396 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_TX_PULSE),
396 .end = IRQ_DA8XX_C0_TX_PULSE, 397 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_TX_PULSE),
397 .flags = IORESOURCE_IRQ, 398 .flags = IORESOURCE_IRQ,
398 }, 399 },
399 { 400 {
400 .start = IRQ_DA8XX_C0_MISC_PULSE, 401 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_MISC_PULSE),
401 .end = IRQ_DA8XX_C0_MISC_PULSE, 402 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_C0_MISC_PULSE),
402 .flags = IORESOURCE_IRQ, 403 .flags = IORESOURCE_IRQ,
403 }, 404 },
404}; 405};
@@ -470,7 +471,7 @@ static struct resource da830_mcasp1_resources[] = {
470 }, 471 },
471 { 472 {
472 .name = "common", 473 .name = "common",
473 .start = IRQ_DA8XX_MCASPINT, 474 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_MCASPINT),
474 .flags = IORESOURCE_IRQ, 475 .flags = IORESOURCE_IRQ,
475 }, 476 },
476}; 477};
@@ -505,7 +506,7 @@ static struct resource da830_mcasp2_resources[] = {
505 }, 506 },
506 { 507 {
507 .name = "common", 508 .name = "common",
508 .start = IRQ_DA8XX_MCASPINT, 509 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_MCASPINT),
509 .flags = IORESOURCE_IRQ, 510 .flags = IORESOURCE_IRQ,
510 }, 511 },
511}; 512};
@@ -540,7 +541,7 @@ static struct resource da850_mcasp_resources[] = {
540 }, 541 },
541 { 542 {
542 .name = "common", 543 .name = "common",
543 .start = IRQ_DA8XX_MCASPINT, 544 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_MCASPINT),
544 .flags = IORESOURCE_IRQ, 545 .flags = IORESOURCE_IRQ,
545 }, 546 },
546}; 547};
@@ -588,43 +589,43 @@ static struct resource da8xx_pruss_resources[] = {
588 .flags = IORESOURCE_MEM, 589 .flags = IORESOURCE_MEM,
589 }, 590 },
590 { 591 {
591 .start = IRQ_DA8XX_EVTOUT0, 592 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT0),
592 .end = IRQ_DA8XX_EVTOUT0, 593 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT0),
593 .flags = IORESOURCE_IRQ, 594 .flags = IORESOURCE_IRQ,
594 }, 595 },
595 { 596 {
596 .start = IRQ_DA8XX_EVTOUT1, 597 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT1),
597 .end = IRQ_DA8XX_EVTOUT1, 598 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT1),
598 .flags = IORESOURCE_IRQ, 599 .flags = IORESOURCE_IRQ,
599 }, 600 },
600 { 601 {
601 .start = IRQ_DA8XX_EVTOUT2, 602 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT2),
602 .end = IRQ_DA8XX_EVTOUT2, 603 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT2),
603 .flags = IORESOURCE_IRQ, 604 .flags = IORESOURCE_IRQ,
604 }, 605 },
605 { 606 {
606 .start = IRQ_DA8XX_EVTOUT3, 607 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT3),
607 .end = IRQ_DA8XX_EVTOUT3, 608 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT3),
608 .flags = IORESOURCE_IRQ, 609 .flags = IORESOURCE_IRQ,
609 }, 610 },
610 { 611 {
611 .start = IRQ_DA8XX_EVTOUT4, 612 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT4),
612 .end = IRQ_DA8XX_EVTOUT4, 613 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT4),
613 .flags = IORESOURCE_IRQ, 614 .flags = IORESOURCE_IRQ,
614 }, 615 },
615 { 616 {
616 .start = IRQ_DA8XX_EVTOUT5, 617 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT5),
617 .end = IRQ_DA8XX_EVTOUT5, 618 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT5),
618 .flags = IORESOURCE_IRQ, 619 .flags = IORESOURCE_IRQ,
619 }, 620 },
620 { 621 {
621 .start = IRQ_DA8XX_EVTOUT6, 622 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT6),
622 .end = IRQ_DA8XX_EVTOUT6, 623 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT6),
623 .flags = IORESOURCE_IRQ, 624 .flags = IORESOURCE_IRQ,
624 }, 625 },
625 { 626 {
626 .start = IRQ_DA8XX_EVTOUT7, 627 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT7),
627 .end = IRQ_DA8XX_EVTOUT7, 628 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_EVTOUT7),
628 .flags = IORESOURCE_IRQ, 629 .flags = IORESOURCE_IRQ,
629 }, 630 },
630}; 631};
@@ -674,8 +675,8 @@ static struct resource da8xx_lcdc_resources[] = {
674 .flags = IORESOURCE_MEM, 675 .flags = IORESOURCE_MEM,
675 }, 676 },
676 [1] = { /* interrupt */ 677 [1] = { /* interrupt */
677 .start = IRQ_DA8XX_LCDINT, 678 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_LCDINT),
678 .end = IRQ_DA8XX_LCDINT, 679 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_LCDINT),
679 .flags = IORESOURCE_IRQ, 680 .flags = IORESOURCE_IRQ,
680 }, 681 },
681}; 682};
@@ -700,48 +701,48 @@ static struct resource da8xx_gpio_resources[] = {
700 .flags = IORESOURCE_MEM, 701 .flags = IORESOURCE_MEM,
701 }, 702 },
702 { /* interrupt */ 703 { /* interrupt */
703 .start = IRQ_DA8XX_GPIO0, 704 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO0),
704 .end = IRQ_DA8XX_GPIO0, 705 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO0),
705 .flags = IORESOURCE_IRQ, 706 .flags = IORESOURCE_IRQ,
706 }, 707 },
707 { 708 {
708 .start = IRQ_DA8XX_GPIO1, 709 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO1),
709 .end = IRQ_DA8XX_GPIO1, 710 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO1),
710 .flags = IORESOURCE_IRQ, 711 .flags = IORESOURCE_IRQ,
711 }, 712 },
712 { 713 {
713 .start = IRQ_DA8XX_GPIO2, 714 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO2),
714 .end = IRQ_DA8XX_GPIO2, 715 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO2),
715 .flags = IORESOURCE_IRQ, 716 .flags = IORESOURCE_IRQ,
716 }, 717 },
717 { 718 {
718 .start = IRQ_DA8XX_GPIO3, 719 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO3),
719 .end = IRQ_DA8XX_GPIO3, 720 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO3),
720 .flags = IORESOURCE_IRQ, 721 .flags = IORESOURCE_IRQ,
721 }, 722 },
722 { 723 {
723 .start = IRQ_DA8XX_GPIO4, 724 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO4),
724 .end = IRQ_DA8XX_GPIO4, 725 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO4),
725 .flags = IORESOURCE_IRQ, 726 .flags = IORESOURCE_IRQ,
726 }, 727 },
727 { 728 {
728 .start = IRQ_DA8XX_GPIO5, 729 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO5),
729 .end = IRQ_DA8XX_GPIO5, 730 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO5),
730 .flags = IORESOURCE_IRQ, 731 .flags = IORESOURCE_IRQ,
731 }, 732 },
732 { 733 {
733 .start = IRQ_DA8XX_GPIO6, 734 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO6),
734 .end = IRQ_DA8XX_GPIO6, 735 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO6),
735 .flags = IORESOURCE_IRQ, 736 .flags = IORESOURCE_IRQ,
736 }, 737 },
737 { 738 {
738 .start = IRQ_DA8XX_GPIO7, 739 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO7),
739 .end = IRQ_DA8XX_GPIO7, 740 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO7),
740 .flags = IORESOURCE_IRQ, 741 .flags = IORESOURCE_IRQ,
741 }, 742 },
742 { 743 {
743 .start = IRQ_DA8XX_GPIO8, 744 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO8),
744 .end = IRQ_DA8XX_GPIO8, 745 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_GPIO8),
745 .flags = IORESOURCE_IRQ, 746 .flags = IORESOURCE_IRQ,
746 }, 747 },
747}; 748};
@@ -766,8 +767,8 @@ static struct resource da8xx_mmcsd0_resources[] = {
766 .flags = IORESOURCE_MEM, 767 .flags = IORESOURCE_MEM,
767 }, 768 },
768 { /* interrupt */ 769 { /* interrupt */
769 .start = IRQ_DA8XX_MMCSDINT0, 770 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_MMCSDINT0),
770 .end = IRQ_DA8XX_MMCSDINT0, 771 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_MMCSDINT0),
771 .flags = IORESOURCE_IRQ, 772 .flags = IORESOURCE_IRQ,
772 }, 773 },
773}; 774};
@@ -793,8 +794,8 @@ static struct resource da850_mmcsd1_resources[] = {
793 .flags = IORESOURCE_MEM, 794 .flags = IORESOURCE_MEM,
794 }, 795 },
795 { /* interrupt */ 796 { /* interrupt */
796 .start = IRQ_DA850_MMCSDINT0_1, 797 .start = DAVINCI_INTC_IRQ(IRQ_DA850_MMCSDINT0_1),
797 .end = IRQ_DA850_MMCSDINT0_1, 798 .end = DAVINCI_INTC_IRQ(IRQ_DA850_MMCSDINT0_1),
798 .flags = IORESOURCE_IRQ, 799 .flags = IORESOURCE_IRQ,
799 }, 800 },
800}; 801};
@@ -845,8 +846,8 @@ static struct resource da8xx_rproc_resources[] = {
845 .flags = IORESOURCE_MEM, 846 .flags = IORESOURCE_MEM,
846 }, 847 },
847 { /* dsp irq */ 848 { /* dsp irq */
848 .start = IRQ_DA8XX_CHIPINT0, 849 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_CHIPINT0),
849 .end = IRQ_DA8XX_CHIPINT0, 850 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_CHIPINT0),
850 .flags = IORESOURCE_IRQ, 851 .flags = IORESOURCE_IRQ,
851 }, 852 },
852}; 853};
@@ -936,13 +937,13 @@ static struct resource da8xx_rtc_resources[] = {
936 .flags = IORESOURCE_MEM, 937 .flags = IORESOURCE_MEM,
937 }, 938 },
938 { /* timer irq */ 939 { /* timer irq */
939 .start = IRQ_DA8XX_RTC, 940 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_RTC),
940 .end = IRQ_DA8XX_RTC, 941 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_RTC),
941 .flags = IORESOURCE_IRQ, 942 .flags = IORESOURCE_IRQ,
942 }, 943 },
943 { /* alarm irq */ 944 { /* alarm irq */
944 .start = IRQ_DA8XX_RTC, 945 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_RTC),
945 .end = IRQ_DA8XX_RTC, 946 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_RTC),
946 .flags = IORESOURCE_IRQ, 947 .flags = IORESOURCE_IRQ,
947 }, 948 },
948}; 949};
@@ -1009,8 +1010,8 @@ static struct resource da8xx_spi0_resources[] = {
1009 .flags = IORESOURCE_MEM, 1010 .flags = IORESOURCE_MEM,
1010 }, 1011 },
1011 [1] = { 1012 [1] = {
1012 .start = IRQ_DA8XX_SPINT0, 1013 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_SPINT0),
1013 .end = IRQ_DA8XX_SPINT0, 1014 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_SPINT0),
1014 .flags = IORESOURCE_IRQ, 1015 .flags = IORESOURCE_IRQ,
1015 }, 1016 },
1016}; 1017};
@@ -1022,8 +1023,8 @@ static struct resource da8xx_spi1_resources[] = {
1022 .flags = IORESOURCE_MEM, 1023 .flags = IORESOURCE_MEM,
1023 }, 1024 },
1024 [1] = { 1025 [1] = {
1025 .start = IRQ_DA8XX_SPINT1, 1026 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_SPINT1),
1026 .end = IRQ_DA8XX_SPINT1, 1027 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_SPINT1),
1027 .flags = IORESOURCE_IRQ, 1028 .flags = IORESOURCE_IRQ,
1028 }, 1029 },
1029}; 1030};
@@ -1103,7 +1104,7 @@ static struct resource da850_sata_resources[] = {
1103 .flags = IORESOURCE_MEM, 1104 .flags = IORESOURCE_MEM,
1104 }, 1105 },
1105 { 1106 {
1106 .start = IRQ_DA850_SATAINT, 1107 .start = DAVINCI_INTC_IRQ(IRQ_DA850_SATAINT),
1107 .flags = IORESOURCE_IRQ, 1108 .flags = IORESOURCE_IRQ,
1108 }, 1109 },
1109}; 1110};
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index e8dbbb7479ab..40bd8029e457 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -11,21 +11,20 @@
11 11
12#include <linux/init.h> 12#include <linux/init.h>
13#include <linux/platform_device.h> 13#include <linux/platform_device.h>
14#include <linux/platform_data/i2c-davinci.h>
15#include <linux/platform_data/mmc-davinci.h>
16#include <linux/platform_data/edma.h>
14#include <linux/dma-mapping.h> 17#include <linux/dma-mapping.h>
15#include <linux/io.h> 18#include <linux/io.h>
16#include <linux/reboot.h> 19#include <linux/reboot.h>
17 20
18#include <mach/hardware.h> 21#include <mach/hardware.h>
19#include <linux/platform_data/i2c-davinci.h>
20#include <mach/irqs.h>
21#include <mach/cputype.h> 22#include <mach/cputype.h>
22#include <mach/mux.h> 23#include <mach/mux.h>
23#include <linux/platform_data/mmc-davinci.h>
24#include <mach/time.h> 24#include <mach/time.h>
25#include <linux/platform_data/edma.h>
26
27 25
28#include "davinci.h" 26#include "davinci.h"
27#include "irqs.h"
29 28
30#define DAVINCI_I2C_BASE 0x01C21000 29#define DAVINCI_I2C_BASE 0x01C21000
31#define DAVINCI_ATA_BASE 0x01C66000 30#define DAVINCI_ATA_BASE 0x01C66000
@@ -56,7 +55,7 @@ static struct resource i2c_resources[] = {
56 .flags = IORESOURCE_MEM, 55 .flags = IORESOURCE_MEM,
57 }, 56 },
58 { 57 {
59 .start = IRQ_I2C, 58 .start = DAVINCI_INTC_IRQ(IRQ_I2C),
60 .flags = IORESOURCE_IRQ, 59 .flags = IORESOURCE_IRQ,
61 }, 60 },
62}; 61};
@@ -84,8 +83,8 @@ static struct resource ide_resources[] = {
84 .flags = IORESOURCE_MEM, 83 .flags = IORESOURCE_MEM,
85 }, 84 },
86 { 85 {
87 .start = IRQ_IDE, 86 .start = DAVINCI_INTC_IRQ(IRQ_IDE),
88 .end = IRQ_IDE, 87 .end = DAVINCI_INTC_IRQ(IRQ_IDE),
89 .flags = IORESOURCE_IRQ, 88 .flags = IORESOURCE_IRQ,
90 }, 89 },
91}; 90};
@@ -133,11 +132,11 @@ static struct resource mmcsd0_resources[] = {
133 }, 132 },
134 /* IRQs: MMC/SD, then SDIO */ 133 /* IRQs: MMC/SD, then SDIO */
135 { 134 {
136 .start = IRQ_MMCINT, 135 .start = DAVINCI_INTC_IRQ(IRQ_MMCINT),
137 .flags = IORESOURCE_IRQ, 136 .flags = IORESOURCE_IRQ,
138 }, { 137 }, {
139 /* different on dm355 */ 138 /* different on dm355 */
140 .start = IRQ_SDIOINT, 139 .start = DAVINCI_INTC_IRQ(IRQ_SDIOINT),
141 .flags = IORESOURCE_IRQ, 140 .flags = IORESOURCE_IRQ,
142 }, 141 },
143}; 142};
@@ -163,10 +162,10 @@ static struct resource mmcsd1_resources[] = {
163 }, 162 },
164 /* IRQs: MMC/SD, then SDIO */ 163 /* IRQs: MMC/SD, then SDIO */
165 { 164 {
166 .start = IRQ_DM355_MMCINT1, 165 .start = DAVINCI_INTC_IRQ(IRQ_DM355_MMCINT1),
167 .flags = IORESOURCE_IRQ, 166 .flags = IORESOURCE_IRQ,
168 }, { 167 }, {
169 .start = IRQ_DM355_SDIOINT1, 168 .start = DAVINCI_INTC_IRQ(IRQ_DM355_SDIOINT1),
170 .flags = IORESOURCE_IRQ, 169 .flags = IORESOURCE_IRQ,
171 }, 170 },
172}; 171};
@@ -219,7 +218,8 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config)
219 mmcsd1_resources[0].start = DM365_MMCSD1_BASE; 218 mmcsd1_resources[0].start = DM365_MMCSD1_BASE;
220 mmcsd1_resources[0].end = DM365_MMCSD1_BASE + 219 mmcsd1_resources[0].end = DM365_MMCSD1_BASE +
221 SZ_4K - 1; 220 SZ_4K - 1;
222 mmcsd1_resources[2].start = IRQ_DM365_SDIOINT1; 221 mmcsd1_resources[2].start = DAVINCI_INTC_IRQ(
222 IRQ_DM365_SDIOINT1);
223 davinci_mmcsd1_device.name = "da830-mmc"; 223 davinci_mmcsd1_device.name = "da830-mmc";
224 } else 224 } else
225 break; 225 break;
@@ -230,7 +230,8 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config)
230 if (cpu_is_davinci_dm355()) { 230 if (cpu_is_davinci_dm355()) {
231 mmcsd0_resources[0].start = DM355_MMCSD0_BASE; 231 mmcsd0_resources[0].start = DM355_MMCSD0_BASE;
232 mmcsd0_resources[0].end = DM355_MMCSD0_BASE + SZ_4K - 1; 232 mmcsd0_resources[0].end = DM355_MMCSD0_BASE + SZ_4K - 1;
233 mmcsd0_resources[2].start = IRQ_DM355_SDIOINT0; 233 mmcsd0_resources[2].start = DAVINCI_INTC_IRQ(
234 IRQ_DM355_SDIOINT0);
234 235
235 /* expose all 6 MMC0 signals: CLK, CMD, DATA[0..3] */ 236 /* expose all 6 MMC0 signals: CLK, CMD, DATA[0..3] */
236 davinci_cfg_reg(DM355_MMCSD0); 237 davinci_cfg_reg(DM355_MMCSD0);
@@ -241,7 +242,8 @@ void __init davinci_setup_mmc(int module, struct davinci_mmc_config *config)
241 mmcsd0_resources[0].start = DM365_MMCSD0_BASE; 242 mmcsd0_resources[0].start = DM365_MMCSD0_BASE;
242 mmcsd0_resources[0].end = DM365_MMCSD0_BASE + 243 mmcsd0_resources[0].end = DM365_MMCSD0_BASE +
243 SZ_4K - 1; 244 SZ_4K - 1;
244 mmcsd0_resources[2].start = IRQ_DM365_SDIOINT0; 245 mmcsd0_resources[2].start = DAVINCI_INTC_IRQ(
246 IRQ_DM365_SDIOINT0);
245 davinci_mmcsd0_device.name = "da830-mmc"; 247 davinci_mmcsd0_device.name = "da830-mmc";
246 } else if (cpu_is_davinci_dm644x()) { 248 } else if (cpu_is_davinci_dm644x()) {
247 /* REVISIT: should this be in board-init code? */ 249 /* REVISIT: should this be in board-init code? */
@@ -313,13 +315,13 @@ int davinci_gpio_register(struct resource *res, int size, void *pdata)
313struct davinci_timer_instance davinci_timer_instance[2] = { 315struct davinci_timer_instance davinci_timer_instance[2] = {
314 { 316 {
315 .base = DAVINCI_TIMER0_BASE, 317 .base = DAVINCI_TIMER0_BASE,
316 .bottom_irq = IRQ_TINT0_TINT12, 318 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_TINT0_TINT12),
317 .top_irq = IRQ_TINT0_TINT34, 319 .top_irq = DAVINCI_INTC_IRQ(IRQ_TINT0_TINT34),
318 }, 320 },
319 { 321 {
320 .base = DAVINCI_TIMER1_BASE, 322 .base = DAVINCI_TIMER1_BASE,
321 .bottom_irq = IRQ_TINT1_TINT12, 323 .bottom_irq = DAVINCI_INTC_IRQ(IRQ_TINT1_TINT12),
322 .top_irq = IRQ_TINT1_TINT34, 324 .top_irq = DAVINCI_INTC_IRQ(IRQ_TINT1_TINT34),
323 }, 325 },
324}; 326};
325 327
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
index 4c6e0bef4509..4a482445b9a2 100644
--- a/arch/arm/mach-davinci/dm355.c
+++ b/arch/arm/mach-davinci/dm355.c
@@ -15,6 +15,7 @@
15#include <linux/dma-mapping.h> 15#include <linux/dma-mapping.h>
16#include <linux/dmaengine.h> 16#include <linux/dmaengine.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/irqchip/irq-davinci-aintc.h>
18#include <linux/platform_data/edma.h> 19#include <linux/platform_data/edma.h>
19#include <linux/platform_data/gpio-davinci.h> 20#include <linux/platform_data/gpio-davinci.h>
20#include <linux/platform_data/spi-davinci.h> 21#include <linux/platform_data/spi-davinci.h>
@@ -26,13 +27,13 @@
26 27
27#include <mach/common.h> 28#include <mach/common.h>
28#include <mach/cputype.h> 29#include <mach/cputype.h>
29#include <mach/irqs.h>
30#include <mach/mux.h> 30#include <mach/mux.h>
31#include <mach/serial.h> 31#include <mach/serial.h>
32#include <mach/time.h> 32#include <mach/time.h>
33 33
34#include "asp.h" 34#include "asp.h"
35#include "davinci.h" 35#include "davinci.h"
36#include "irqs.h"
36#include "mux.h" 37#include "mux.h"
37 38
38#define DM355_UART2_BASE (IO_PHYS + 0x206000) 39#define DM355_UART2_BASE (IO_PHYS + 0x206000)
@@ -53,7 +54,7 @@ static struct resource dm355_spi0_resources[] = {
53 .flags = IORESOURCE_MEM, 54 .flags = IORESOURCE_MEM,
54 }, 55 },
55 { 56 {
56 .start = IRQ_DM355_SPINT0_0, 57 .start = DAVINCI_INTC_IRQ(IRQ_DM355_SPINT0_0),
57 .flags = IORESOURCE_IRQ, 58 .flags = IORESOURCE_IRQ,
58 }, 59 },
59}; 60};
@@ -273,12 +274,12 @@ static struct resource edma_resources[] = {
273 }, 274 },
274 { 275 {
275 .name = "edma3_ccint", 276 .name = "edma3_ccint",
276 .start = IRQ_CCINT0, 277 .start = DAVINCI_INTC_IRQ(IRQ_CCINT0),
277 .flags = IORESOURCE_IRQ, 278 .flags = IORESOURCE_IRQ,
278 }, 279 },
279 { 280 {
280 .name = "edma3_ccerrint", 281 .name = "edma3_ccerrint",
281 .start = IRQ_CCERRINT, 282 .start = DAVINCI_INTC_IRQ(IRQ_CCERRINT),
282 .flags = IORESOURCE_IRQ, 283 .flags = IORESOURCE_IRQ,
283 }, 284 },
284 /* not using (or muxing) TC*_ERR */ 285 /* not using (or muxing) TC*_ERR */
@@ -358,13 +359,13 @@ static struct platform_device dm355_vpss_device = {
358 359
359static struct resource vpfe_resources[] = { 360static struct resource vpfe_resources[] = {
360 { 361 {
361 .start = IRQ_VDINT0, 362 .start = DAVINCI_INTC_IRQ(IRQ_VDINT0),
362 .end = IRQ_VDINT0, 363 .end = DAVINCI_INTC_IRQ(IRQ_VDINT0),
363 .flags = IORESOURCE_IRQ, 364 .flags = IORESOURCE_IRQ,
364 }, 365 },
365 { 366 {
366 .start = IRQ_VDINT1, 367 .start = DAVINCI_INTC_IRQ(IRQ_VDINT1),
367 .end = IRQ_VDINT1, 368 .end = DAVINCI_INTC_IRQ(IRQ_VDINT1),
368 .flags = IORESOURCE_IRQ, 369 .flags = IORESOURCE_IRQ,
369 }, 370 },
370}; 371};
@@ -422,8 +423,8 @@ static struct platform_device dm355_osd_dev = {
422 423
423static struct resource dm355_venc_resources[] = { 424static struct resource dm355_venc_resources[] = {
424 { 425 {
425 .start = IRQ_VENCINT, 426 .start = DAVINCI_INTC_IRQ(IRQ_VENCINT),
426 .end = IRQ_VENCINT, 427 .end = DAVINCI_INTC_IRQ(IRQ_VENCINT),
427 .flags = IORESOURCE_IRQ, 428 .flags = IORESOURCE_IRQ,
428 }, 429 },
429 /* venc registers io space */ 430 /* venc registers io space */
@@ -442,8 +443,8 @@ static struct resource dm355_venc_resources[] = {
442 443
443static struct resource dm355_v4l2_disp_resources[] = { 444static struct resource dm355_v4l2_disp_resources[] = {
444 { 445 {
445 .start = IRQ_VENCINT, 446 .start = DAVINCI_INTC_IRQ(IRQ_VENCINT),
446 .end = IRQ_VENCINT, 447 .end = DAVINCI_INTC_IRQ(IRQ_VENCINT),
447 .flags = IORESOURCE_IRQ, 448 .flags = IORESOURCE_IRQ,
448 }, 449 },
449 /* venc registers io space */ 450 /* venc registers io space */
@@ -547,38 +548,38 @@ static struct resource dm355_gpio_resources[] = {
547 .flags = IORESOURCE_MEM, 548 .flags = IORESOURCE_MEM,
548 }, 549 },
549 { /* interrupt */ 550 { /* interrupt */
550 .start = IRQ_DM355_GPIOBNK0, 551 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK0),
551 .end = IRQ_DM355_GPIOBNK0, 552 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK0),
552 .flags = IORESOURCE_IRQ, 553 .flags = IORESOURCE_IRQ,
553 }, 554 },
554 { 555 {
555 .start = IRQ_DM355_GPIOBNK1, 556 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK1),
556 .end = IRQ_DM355_GPIOBNK1, 557 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK1),
557 .flags = IORESOURCE_IRQ, 558 .flags = IORESOURCE_IRQ,
558 }, 559 },
559 { 560 {
560 .start = IRQ_DM355_GPIOBNK2, 561 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK2),
561 .end = IRQ_DM355_GPIOBNK2, 562 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK2),
562 .flags = IORESOURCE_IRQ, 563 .flags = IORESOURCE_IRQ,
563 }, 564 },
564 { 565 {
565 .start = IRQ_DM355_GPIOBNK3, 566 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK3),
566 .end = IRQ_DM355_GPIOBNK3, 567 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK3),
567 .flags = IORESOURCE_IRQ, 568 .flags = IORESOURCE_IRQ,
568 }, 569 },
569 { 570 {
570 .start = IRQ_DM355_GPIOBNK4, 571 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK4),
571 .end = IRQ_DM355_GPIOBNK4, 572 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK4),
572 .flags = IORESOURCE_IRQ, 573 .flags = IORESOURCE_IRQ,
573 }, 574 },
574 { 575 {
575 .start = IRQ_DM355_GPIOBNK5, 576 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK5),
576 .end = IRQ_DM355_GPIOBNK5, 577 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK5),
577 .flags = IORESOURCE_IRQ, 578 .flags = IORESOURCE_IRQ,
578 }, 579 },
579 { 580 {
580 .start = IRQ_DM355_GPIOBNK6, 581 .start = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK6),
581 .end = IRQ_DM355_GPIOBNK6, 582 .end = DAVINCI_INTC_IRQ(IRQ_DM355_GPIOBNK6),
582 .flags = IORESOURCE_IRQ, 583 .flags = IORESOURCE_IRQ,
583 }, 584 },
584}; 585};
@@ -632,7 +633,7 @@ static struct davinci_timer_info dm355_timer_info = {
632static struct plat_serial8250_port dm355_serial0_platform_data[] = { 633static struct plat_serial8250_port dm355_serial0_platform_data[] = {
633 { 634 {
634 .mapbase = DAVINCI_UART0_BASE, 635 .mapbase = DAVINCI_UART0_BASE,
635 .irq = IRQ_UARTINT0, 636 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT0),
636 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 637 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
637 UPF_IOREMAP, 638 UPF_IOREMAP,
638 .iotype = UPIO_MEM, 639 .iotype = UPIO_MEM,
@@ -645,7 +646,7 @@ static struct plat_serial8250_port dm355_serial0_platform_data[] = {
645static struct plat_serial8250_port dm355_serial1_platform_data[] = { 646static struct plat_serial8250_port dm355_serial1_platform_data[] = {
646 { 647 {
647 .mapbase = DAVINCI_UART1_BASE, 648 .mapbase = DAVINCI_UART1_BASE,
648 .irq = IRQ_UARTINT1, 649 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT1),
649 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 650 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
650 UPF_IOREMAP, 651 UPF_IOREMAP,
651 .iotype = UPIO_MEM, 652 .iotype = UPIO_MEM,
@@ -658,7 +659,7 @@ static struct plat_serial8250_port dm355_serial1_platform_data[] = {
658static struct plat_serial8250_port dm355_serial2_platform_data[] = { 659static struct plat_serial8250_port dm355_serial2_platform_data[] = {
659 { 660 {
660 .mapbase = DM355_UART2_BASE, 661 .mapbase = DM355_UART2_BASE,
661 .irq = IRQ_DM355_UARTINT2, 662 .irq = DAVINCI_INTC_IRQ(IRQ_DM355_UARTINT2),
662 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 663 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
663 UPF_IOREMAP, 664 UPF_IOREMAP,
664 .iotype = UPIO_MEM, 665 .iotype = UPIO_MEM,
@@ -704,10 +705,6 @@ static const struct davinci_soc_info davinci_soc_info_dm355 = {
704 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 705 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
705 .pinmux_pins = dm355_pins, 706 .pinmux_pins = dm355_pins,
706 .pinmux_pins_num = ARRAY_SIZE(dm355_pins), 707 .pinmux_pins_num = ARRAY_SIZE(dm355_pins),
707 .intc_base = DAVINCI_ARM_INTC_BASE,
708 .intc_type = DAVINCI_INTC_TYPE_AINTC,
709 .intc_irq_prios = dm355_default_priorities,
710 .intc_irq_num = DAVINCI_N_AINTC_IRQ,
711 .timer_info = &dm355_timer_info, 708 .timer_info = &dm355_timer_info,
712 .sram_dma = 0x00010000, 709 .sram_dma = 0x00010000,
713 .sram_len = SZ_32K, 710 .sram_len = SZ_32K,
@@ -793,6 +790,21 @@ int __init dm355_init_video(struct vpfe_config *vpfe_cfg,
793 return 0; 790 return 0;
794} 791}
795 792
793static const struct davinci_aintc_config dm355_aintc_config = {
794 .reg = {
795 .start = DAVINCI_ARM_INTC_BASE,
796 .end = DAVINCI_ARM_INTC_BASE + SZ_4K - 1,
797 .flags = IORESOURCE_MEM,
798 },
799 .num_irqs = 64,
800 .prios = dm355_default_priorities,
801};
802
803void __init dm355_init_irq(void)
804{
805 davinci_aintc_init(&dm355_aintc_config);
806}
807
796static int __init dm355_init_devices(void) 808static int __init dm355_init_devices(void)
797{ 809{
798 struct platform_device *edma_pdev; 810 struct platform_device *edma_pdev;
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
index 01fb2b0c82de..8e0a77315add 100644
--- a/arch/arm/mach-davinci/dm365.c
+++ b/arch/arm/mach-davinci/dm365.c
@@ -19,6 +19,7 @@
19#include <linux/dma-mapping.h> 19#include <linux/dma-mapping.h>
20#include <linux/dmaengine.h> 20#include <linux/dmaengine.h>
21#include <linux/init.h> 21#include <linux/init.h>
22#include <linux/irqchip/irq-davinci-aintc.h>
22#include <linux/platform_data/edma.h> 23#include <linux/platform_data/edma.h>
23#include <linux/platform_data/gpio-davinci.h> 24#include <linux/platform_data/gpio-davinci.h>
24#include <linux/platform_data/keyscan-davinci.h> 25#include <linux/platform_data/keyscan-davinci.h>
@@ -31,13 +32,13 @@
31 32
32#include <mach/common.h> 33#include <mach/common.h>
33#include <mach/cputype.h> 34#include <mach/cputype.h>
34#include <mach/irqs.h>
35#include <mach/mux.h> 35#include <mach/mux.h>
36#include <mach/serial.h> 36#include <mach/serial.h>
37#include <mach/time.h> 37#include <mach/time.h>
38 38
39#include "asp.h" 39#include "asp.h"
40#include "davinci.h" 40#include "davinci.h"
41#include "irqs.h"
41#include "mux.h" 42#include "mux.h"
42 43
43#define DM365_REF_FREQ 24000000 /* 24 MHz on the DM365 EVM */ 44#define DM365_REF_FREQ 24000000 /* 24 MHz on the DM365 EVM */
@@ -224,7 +225,7 @@ static struct resource dm365_spi0_resources[] = {
224 .flags = IORESOURCE_MEM, 225 .flags = IORESOURCE_MEM,
225 }, 226 },
226 { 227 {
227 .start = IRQ_DM365_SPIINT0_0, 228 .start = DAVINCI_INTC_IRQ(IRQ_DM365_SPIINT0_0),
228 .flags = IORESOURCE_IRQ, 229 .flags = IORESOURCE_IRQ,
229 }, 230 },
230}; 231};
@@ -266,43 +267,43 @@ static struct resource dm365_gpio_resources[] = {
266 .flags = IORESOURCE_MEM, 267 .flags = IORESOURCE_MEM,
267 }, 268 },
268 { /* interrupt */ 269 { /* interrupt */
269 .start = IRQ_DM365_GPIO0, 270 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO0),
270 .end = IRQ_DM365_GPIO0, 271 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO0),
271 .flags = IORESOURCE_IRQ, 272 .flags = IORESOURCE_IRQ,
272 }, 273 },
273 { 274 {
274 .start = IRQ_DM365_GPIO1, 275 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO1),
275 .end = IRQ_DM365_GPIO1, 276 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO1),
276 .flags = IORESOURCE_IRQ, 277 .flags = IORESOURCE_IRQ,
277 }, 278 },
278 { 279 {
279 .start = IRQ_DM365_GPIO2, 280 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO2),
280 .end = IRQ_DM365_GPIO2, 281 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO2),
281 .flags = IORESOURCE_IRQ, 282 .flags = IORESOURCE_IRQ,
282 }, 283 },
283 { 284 {
284 .start = IRQ_DM365_GPIO3, 285 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO3),
285 .end = IRQ_DM365_GPIO3, 286 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO3),
286 .flags = IORESOURCE_IRQ, 287 .flags = IORESOURCE_IRQ,
287 }, 288 },
288 { 289 {
289 .start = IRQ_DM365_GPIO4, 290 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO4),
290 .end = IRQ_DM365_GPIO4, 291 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO4),
291 .flags = IORESOURCE_IRQ, 292 .flags = IORESOURCE_IRQ,
292 }, 293 },
293 { 294 {
294 .start = IRQ_DM365_GPIO5, 295 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO5),
295 .end = IRQ_DM365_GPIO5, 296 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO5),
296 .flags = IORESOURCE_IRQ, 297 .flags = IORESOURCE_IRQ,
297 }, 298 },
298 { 299 {
299 .start = IRQ_DM365_GPIO6, 300 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO6),
300 .end = IRQ_DM365_GPIO6, 301 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO6),
301 .flags = IORESOURCE_IRQ, 302 .flags = IORESOURCE_IRQ,
302 }, 303 },
303 { 304 {
304 .start = IRQ_DM365_GPIO7, 305 .start = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO7),
305 .end = IRQ_DM365_GPIO7, 306 .end = DAVINCI_INTC_IRQ(IRQ_DM365_GPIO7),
306 .flags = IORESOURCE_IRQ, 307 .flags = IORESOURCE_IRQ,
307 }, 308 },
308}; 309};
@@ -336,23 +337,23 @@ static struct resource dm365_emac_resources[] = {
336 .flags = IORESOURCE_MEM, 337 .flags = IORESOURCE_MEM,
337 }, 338 },
338 { 339 {
339 .start = IRQ_DM365_EMAC_RXTHRESH, 340 .start = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_RXTHRESH),
340 .end = IRQ_DM365_EMAC_RXTHRESH, 341 .end = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_RXTHRESH),
341 .flags = IORESOURCE_IRQ, 342 .flags = IORESOURCE_IRQ,
342 }, 343 },
343 { 344 {
344 .start = IRQ_DM365_EMAC_RXPULSE, 345 .start = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_RXPULSE),
345 .end = IRQ_DM365_EMAC_RXPULSE, 346 .end = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_RXPULSE),
346 .flags = IORESOURCE_IRQ, 347 .flags = IORESOURCE_IRQ,
347 }, 348 },
348 { 349 {
349 .start = IRQ_DM365_EMAC_TXPULSE, 350 .start = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_TXPULSE),
350 .end = IRQ_DM365_EMAC_TXPULSE, 351 .end = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_TXPULSE),
351 .flags = IORESOURCE_IRQ, 352 .flags = IORESOURCE_IRQ,
352 }, 353 },
353 { 354 {
354 .start = IRQ_DM365_EMAC_MISCPULSE, 355 .start = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_MISCPULSE),
355 .end = IRQ_DM365_EMAC_MISCPULSE, 356 .end = DAVINCI_INTC_IRQ(IRQ_DM365_EMAC_MISCPULSE),
356 .flags = IORESOURCE_IRQ, 357 .flags = IORESOURCE_IRQ,
357 }, 358 },
358}; 359};
@@ -518,12 +519,12 @@ static struct resource edma_resources[] = {
518 }, 519 },
519 { 520 {
520 .name = "edma3_ccint", 521 .name = "edma3_ccint",
521 .start = IRQ_CCINT0, 522 .start = DAVINCI_INTC_IRQ(IRQ_CCINT0),
522 .flags = IORESOURCE_IRQ, 523 .flags = IORESOURCE_IRQ,
523 }, 524 },
524 { 525 {
525 .name = "edma3_ccerrint", 526 .name = "edma3_ccerrint",
526 .start = IRQ_CCERRINT, 527 .start = DAVINCI_INTC_IRQ(IRQ_CCERRINT),
527 .flags = IORESOURCE_IRQ, 528 .flags = IORESOURCE_IRQ,
528 }, 529 },
529 /* not using TC*_ERR */ 530 /* not using TC*_ERR */
@@ -597,7 +598,7 @@ static struct resource dm365_rtc_resources[] = {
597 .flags = IORESOURCE_MEM, 598 .flags = IORESOURCE_MEM,
598 }, 599 },
599 { 600 {
600 .start = IRQ_DM365_RTCINT, 601 .start = DAVINCI_INTC_IRQ(IRQ_DM365_RTCINT),
601 .flags = IORESOURCE_IRQ, 602 .flags = IORESOURCE_IRQ,
602 }, 603 },
603}; 604};
@@ -627,8 +628,8 @@ static struct resource dm365_ks_resources[] = {
627 }, 628 },
628 { 629 {
629 /* interrupt */ 630 /* interrupt */
630 .start = IRQ_DM365_KEYINT, 631 .start = DAVINCI_INTC_IRQ(IRQ_DM365_KEYINT),
631 .end = IRQ_DM365_KEYINT, 632 .end = DAVINCI_INTC_IRQ(IRQ_DM365_KEYINT),
632 .flags = IORESOURCE_IRQ, 633 .flags = IORESOURCE_IRQ,
633 }, 634 },
634}; 635};
@@ -669,7 +670,7 @@ static struct davinci_timer_info dm365_timer_info = {
669static struct plat_serial8250_port dm365_serial0_platform_data[] = { 670static struct plat_serial8250_port dm365_serial0_platform_data[] = {
670 { 671 {
671 .mapbase = DAVINCI_UART0_BASE, 672 .mapbase = DAVINCI_UART0_BASE,
672 .irq = IRQ_UARTINT0, 673 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT0),
673 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 674 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
674 UPF_IOREMAP, 675 UPF_IOREMAP,
675 .iotype = UPIO_MEM, 676 .iotype = UPIO_MEM,
@@ -682,7 +683,7 @@ static struct plat_serial8250_port dm365_serial0_platform_data[] = {
682static struct plat_serial8250_port dm365_serial1_platform_data[] = { 683static struct plat_serial8250_port dm365_serial1_platform_data[] = {
683 { 684 {
684 .mapbase = DM365_UART1_BASE, 685 .mapbase = DM365_UART1_BASE,
685 .irq = IRQ_UARTINT1, 686 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT1),
686 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 687 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
687 UPF_IOREMAP, 688 UPF_IOREMAP,
688 .iotype = UPIO_MEM, 689 .iotype = UPIO_MEM,
@@ -721,10 +722,6 @@ static const struct davinci_soc_info davinci_soc_info_dm365 = {
721 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 722 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
722 .pinmux_pins = dm365_pins, 723 .pinmux_pins = dm365_pins,
723 .pinmux_pins_num = ARRAY_SIZE(dm365_pins), 724 .pinmux_pins_num = ARRAY_SIZE(dm365_pins),
724 .intc_base = DAVINCI_ARM_INTC_BASE,
725 .intc_type = DAVINCI_INTC_TYPE_AINTC,
726 .intc_irq_prios = dm365_default_priorities,
727 .intc_irq_num = DAVINCI_N_AINTC_IRQ,
728 .timer_info = &dm365_timer_info, 725 .timer_info = &dm365_timer_info,
729 .emac_pdata = &dm365_emac_pdata, 726 .emac_pdata = &dm365_emac_pdata,
730 .sram_dma = 0x00010000, 727 .sram_dma = 0x00010000,
@@ -822,13 +819,13 @@ static struct platform_device dm365_vpss_device = {
822 819
823static struct resource vpfe_resources[] = { 820static struct resource vpfe_resources[] = {
824 { 821 {
825 .start = IRQ_VDINT0, 822 .start = DAVINCI_INTC_IRQ(IRQ_VDINT0),
826 .end = IRQ_VDINT0, 823 .end = DAVINCI_INTC_IRQ(IRQ_VDINT0),
827 .flags = IORESOURCE_IRQ, 824 .flags = IORESOURCE_IRQ,
828 }, 825 },
829 { 826 {
830 .start = IRQ_VDINT1, 827 .start = DAVINCI_INTC_IRQ(IRQ_VDINT1),
831 .end = IRQ_VDINT1, 828 .end = DAVINCI_INTC_IRQ(IRQ_VDINT1),
832 .flags = IORESOURCE_IRQ, 829 .flags = IORESOURCE_IRQ,
833 }, 830 },
834}; 831};
@@ -909,8 +906,8 @@ static struct platform_device dm365_osd_dev = {
909 906
910static struct resource dm365_venc_resources[] = { 907static struct resource dm365_venc_resources[] = {
911 { 908 {
912 .start = IRQ_VENCINT, 909 .start = DAVINCI_INTC_IRQ(IRQ_VENCINT),
913 .end = IRQ_VENCINT, 910 .end = DAVINCI_INTC_IRQ(IRQ_VENCINT),
914 .flags = IORESOURCE_IRQ, 911 .flags = IORESOURCE_IRQ,
915 }, 912 },
916 /* venc registers io space */ 913 /* venc registers io space */
@@ -929,8 +926,8 @@ static struct resource dm365_venc_resources[] = {
929 926
930static struct resource dm365_v4l2_disp_resources[] = { 927static struct resource dm365_v4l2_disp_resources[] = {
931 { 928 {
932 .start = IRQ_VENCINT, 929 .start = DAVINCI_INTC_IRQ(IRQ_VENCINT),
933 .end = IRQ_VENCINT, 930 .end = DAVINCI_INTC_IRQ(IRQ_VENCINT),
934 .flags = IORESOURCE_IRQ, 931 .flags = IORESOURCE_IRQ,
935 }, 932 },
936 /* venc registers io space */ 933 /* venc registers io space */
@@ -1052,6 +1049,21 @@ int __init dm365_init_video(struct vpfe_config *vpfe_cfg,
1052 return 0; 1049 return 0;
1053} 1050}
1054 1051
1052static const struct davinci_aintc_config dm365_aintc_config = {
1053 .reg = {
1054 .start = DAVINCI_ARM_INTC_BASE,
1055 .end = DAVINCI_ARM_INTC_BASE + SZ_4K - 1,
1056 .flags = IORESOURCE_MEM,
1057 },
1058 .num_irqs = 64,
1059 .prios = dm365_default_priorities,
1060};
1061
1062void __init dm365_init_irq(void)
1063{
1064 davinci_aintc_init(&dm365_aintc_config);
1065}
1066
1055static int __init dm365_init_devices(void) 1067static int __init dm365_init_devices(void)
1056{ 1068{
1057 struct platform_device *edma_pdev; 1069 struct platform_device *edma_pdev;
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
index 38f92b7d413e..cecc7ceb8d34 100644
--- a/arch/arm/mach-davinci/dm644x.c
+++ b/arch/arm/mach-davinci/dm644x.c
@@ -14,6 +14,7 @@
14#include <linux/clkdev.h> 14#include <linux/clkdev.h>
15#include <linux/dmaengine.h> 15#include <linux/dmaengine.h>
16#include <linux/init.h> 16#include <linux/init.h>
17#include <linux/irqchip/irq-davinci-aintc.h>
17#include <linux/platform_data/edma.h> 18#include <linux/platform_data/edma.h>
18#include <linux/platform_data/gpio-davinci.h> 19#include <linux/platform_data/gpio-davinci.h>
19#include <linux/platform_device.h> 20#include <linux/platform_device.h>
@@ -23,13 +24,13 @@
23 24
24#include <mach/common.h> 25#include <mach/common.h>
25#include <mach/cputype.h> 26#include <mach/cputype.h>
26#include <mach/irqs.h>
27#include <mach/mux.h> 27#include <mach/mux.h>
28#include <mach/serial.h> 28#include <mach/serial.h>
29#include <mach/time.h> 29#include <mach/time.h>
30 30
31#include "asp.h" 31#include "asp.h"
32#include "davinci.h" 32#include "davinci.h"
33#include "irqs.h"
33#include "mux.h" 34#include "mux.h"
34 35
35/* 36/*
@@ -59,8 +60,8 @@ static struct resource dm644x_emac_resources[] = {
59 .flags = IORESOURCE_MEM, 60 .flags = IORESOURCE_MEM,
60 }, 61 },
61 { 62 {
62 .start = IRQ_EMACINT, 63 .start = DAVINCI_INTC_IRQ(IRQ_EMACINT),
63 .end = IRQ_EMACINT, 64 .end = DAVINCI_INTC_IRQ(IRQ_EMACINT),
64 .flags = IORESOURCE_IRQ, 65 .flags = IORESOURCE_IRQ,
65 }, 66 },
66}; 67};
@@ -260,12 +261,12 @@ static struct resource edma_resources[] = {
260 }, 261 },
261 { 262 {
262 .name = "edma3_ccint", 263 .name = "edma3_ccint",
263 .start = IRQ_CCINT0, 264 .start = DAVINCI_INTC_IRQ(IRQ_CCINT0),
264 .flags = IORESOURCE_IRQ, 265 .flags = IORESOURCE_IRQ,
265 }, 266 },
266 { 267 {
267 .name = "edma3_ccerrint", 268 .name = "edma3_ccerrint",
268 .start = IRQ_CCERRINT, 269 .start = DAVINCI_INTC_IRQ(IRQ_CCERRINT),
269 .flags = IORESOURCE_IRQ, 270 .flags = IORESOURCE_IRQ,
270 }, 271 },
271 /* not using TC*_ERR */ 272 /* not using TC*_ERR */
@@ -330,13 +331,13 @@ static struct platform_device dm644x_vpss_device = {
330 331
331static struct resource dm644x_vpfe_resources[] = { 332static struct resource dm644x_vpfe_resources[] = {
332 { 333 {
333 .start = IRQ_VDINT0, 334 .start = DAVINCI_INTC_IRQ(IRQ_VDINT0),
334 .end = IRQ_VDINT0, 335 .end = DAVINCI_INTC_IRQ(IRQ_VDINT0),
335 .flags = IORESOURCE_IRQ, 336 .flags = IORESOURCE_IRQ,
336 }, 337 },
337 { 338 {
338 .start = IRQ_VDINT1, 339 .start = DAVINCI_INTC_IRQ(IRQ_VDINT1),
339 .end = IRQ_VDINT1, 340 .end = DAVINCI_INTC_IRQ(IRQ_VDINT1),
340 .flags = IORESOURCE_IRQ, 341 .flags = IORESOURCE_IRQ,
341 }, 342 },
342}; 343};
@@ -442,8 +443,8 @@ static int dm644x_venc_setup_clock(enum vpbe_enc_timings_type type,
442 443
443static struct resource dm644x_v4l2_disp_resources[] = { 444static struct resource dm644x_v4l2_disp_resources[] = {
444 { 445 {
445 .start = IRQ_VENCINT, 446 .start = DAVINCI_INTC_IRQ(IRQ_VENCINT),
446 .end = IRQ_VENCINT, 447 .end = DAVINCI_INTC_IRQ(IRQ_VENCINT),
447 .flags = IORESOURCE_IRQ, 448 .flags = IORESOURCE_IRQ,
448 }, 449 },
449}; 450};
@@ -491,28 +492,28 @@ static struct resource dm644_gpio_resources[] = {
491 .flags = IORESOURCE_MEM, 492 .flags = IORESOURCE_MEM,
492 }, 493 },
493 { /* interrupt */ 494 { /* interrupt */
494 .start = IRQ_GPIOBNK0, 495 .start = DAVINCI_INTC_IRQ(IRQ_GPIOBNK0),
495 .end = IRQ_GPIOBNK0, 496 .end = DAVINCI_INTC_IRQ(IRQ_GPIOBNK0),
496 .flags = IORESOURCE_IRQ, 497 .flags = IORESOURCE_IRQ,
497 }, 498 },
498 { 499 {
499 .start = IRQ_GPIOBNK1, 500 .start = DAVINCI_INTC_IRQ(IRQ_GPIOBNK1),
500 .end = IRQ_GPIOBNK1, 501 .end = DAVINCI_INTC_IRQ(IRQ_GPIOBNK1),
501 .flags = IORESOURCE_IRQ, 502 .flags = IORESOURCE_IRQ,
502 }, 503 },
503 { 504 {
504 .start = IRQ_GPIOBNK2, 505 .start = DAVINCI_INTC_IRQ(IRQ_GPIOBNK2),
505 .end = IRQ_GPIOBNK2, 506 .end = DAVINCI_INTC_IRQ(IRQ_GPIOBNK2),
506 .flags = IORESOURCE_IRQ, 507 .flags = IORESOURCE_IRQ,
507 }, 508 },
508 { 509 {
509 .start = IRQ_GPIOBNK3, 510 .start = DAVINCI_INTC_IRQ(IRQ_GPIOBNK3),
510 .end = IRQ_GPIOBNK3, 511 .end = DAVINCI_INTC_IRQ(IRQ_GPIOBNK3),
511 .flags = IORESOURCE_IRQ, 512 .flags = IORESOURCE_IRQ,
512 }, 513 },
513 { 514 {
514 .start = IRQ_GPIOBNK4, 515 .start = DAVINCI_INTC_IRQ(IRQ_GPIOBNK4),
515 .end = IRQ_GPIOBNK4, 516 .end = DAVINCI_INTC_IRQ(IRQ_GPIOBNK4),
516 .flags = IORESOURCE_IRQ, 517 .flags = IORESOURCE_IRQ,
517 }, 518 },
518}; 519};
@@ -573,7 +574,7 @@ static struct davinci_timer_info dm644x_timer_info = {
573static struct plat_serial8250_port dm644x_serial0_platform_data[] = { 574static struct plat_serial8250_port dm644x_serial0_platform_data[] = {
574 { 575 {
575 .mapbase = DAVINCI_UART0_BASE, 576 .mapbase = DAVINCI_UART0_BASE,
576 .irq = IRQ_UARTINT0, 577 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT0),
577 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 578 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
578 UPF_IOREMAP, 579 UPF_IOREMAP,
579 .iotype = UPIO_MEM, 580 .iotype = UPIO_MEM,
@@ -586,7 +587,7 @@ static struct plat_serial8250_port dm644x_serial0_platform_data[] = {
586static struct plat_serial8250_port dm644x_serial1_platform_data[] = { 587static struct plat_serial8250_port dm644x_serial1_platform_data[] = {
587 { 588 {
588 .mapbase = DAVINCI_UART1_BASE, 589 .mapbase = DAVINCI_UART1_BASE,
589 .irq = IRQ_UARTINT1, 590 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT1),
590 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 591 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
591 UPF_IOREMAP, 592 UPF_IOREMAP,
592 .iotype = UPIO_MEM, 593 .iotype = UPIO_MEM,
@@ -599,7 +600,7 @@ static struct plat_serial8250_port dm644x_serial1_platform_data[] = {
599static struct plat_serial8250_port dm644x_serial2_platform_data[] = { 600static struct plat_serial8250_port dm644x_serial2_platform_data[] = {
600 { 601 {
601 .mapbase = DAVINCI_UART2_BASE, 602 .mapbase = DAVINCI_UART2_BASE,
602 .irq = IRQ_UARTINT2, 603 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT2),
603 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 604 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
604 UPF_IOREMAP, 605 UPF_IOREMAP,
605 .iotype = UPIO_MEM, 606 .iotype = UPIO_MEM,
@@ -645,10 +646,6 @@ static const struct davinci_soc_info davinci_soc_info_dm644x = {
645 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 646 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
646 .pinmux_pins = dm644x_pins, 647 .pinmux_pins = dm644x_pins,
647 .pinmux_pins_num = ARRAY_SIZE(dm644x_pins), 648 .pinmux_pins_num = ARRAY_SIZE(dm644x_pins),
648 .intc_base = DAVINCI_ARM_INTC_BASE,
649 .intc_type = DAVINCI_INTC_TYPE_AINTC,
650 .intc_irq_prios = dm644x_default_priorities,
651 .intc_irq_num = DAVINCI_N_AINTC_IRQ,
652 .timer_info = &dm644x_timer_info, 649 .timer_info = &dm644x_timer_info,
653 .emac_pdata = &dm644x_emac_pdata, 650 .emac_pdata = &dm644x_emac_pdata,
654 .sram_dma = 0x00008000, 651 .sram_dma = 0x00008000,
@@ -729,6 +726,21 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg,
729 return 0; 726 return 0;
730} 727}
731 728
729static const struct davinci_aintc_config dm644x_aintc_config = {
730 .reg = {
731 .start = DAVINCI_ARM_INTC_BASE,
732 .end = DAVINCI_ARM_INTC_BASE + SZ_4K - 1,
733 .flags = IORESOURCE_MEM,
734 },
735 .num_irqs = 64,
736 .prios = dm644x_default_priorities,
737};
738
739void __init dm644x_init_irq(void)
740{
741 davinci_aintc_init(&dm644x_aintc_config);
742}
743
732void __init dm644x_init_devices(void) 744void __init dm644x_init_devices(void)
733{ 745{
734 struct platform_device *edma_pdev; 746 struct platform_device *edma_pdev;
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
index 7dc54b2a610f..f33392f77a03 100644
--- a/arch/arm/mach-davinci/dm646x.c
+++ b/arch/arm/mach-davinci/dm646x.c
@@ -15,6 +15,7 @@
15#include <linux/dma-mapping.h> 15#include <linux/dma-mapping.h>
16#include <linux/dmaengine.h> 16#include <linux/dmaengine.h>
17#include <linux/init.h> 17#include <linux/init.h>
18#include <linux/irqchip/irq-davinci-aintc.h>
18#include <linux/platform_data/edma.h> 19#include <linux/platform_data/edma.h>
19#include <linux/platform_data/gpio-davinci.h> 20#include <linux/platform_data/gpio-davinci.h>
20#include <linux/platform_device.h> 21#include <linux/platform_device.h>
@@ -24,13 +25,13 @@
24 25
25#include <mach/common.h> 26#include <mach/common.h>
26#include <mach/cputype.h> 27#include <mach/cputype.h>
27#include <mach/irqs.h>
28#include <mach/mux.h> 28#include <mach/mux.h>
29#include <mach/serial.h> 29#include <mach/serial.h>
30#include <mach/time.h> 30#include <mach/time.h>
31 31
32#include "asp.h" 32#include "asp.h"
33#include "davinci.h" 33#include "davinci.h"
34#include "irqs.h"
34#include "mux.h" 35#include "mux.h"
35 36
36#define DAVINCI_VPIF_BASE (0x01C12000) 37#define DAVINCI_VPIF_BASE (0x01C12000)
@@ -62,23 +63,23 @@ static struct resource dm646x_emac_resources[] = {
62 .flags = IORESOURCE_MEM, 63 .flags = IORESOURCE_MEM,
63 }, 64 },
64 { 65 {
65 .start = IRQ_DM646X_EMACRXTHINT, 66 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACRXTHINT),
66 .end = IRQ_DM646X_EMACRXTHINT, 67 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACRXTHINT),
67 .flags = IORESOURCE_IRQ, 68 .flags = IORESOURCE_IRQ,
68 }, 69 },
69 { 70 {
70 .start = IRQ_DM646X_EMACRXINT, 71 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACRXINT),
71 .end = IRQ_DM646X_EMACRXINT, 72 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACRXINT),
72 .flags = IORESOURCE_IRQ, 73 .flags = IORESOURCE_IRQ,
73 }, 74 },
74 { 75 {
75 .start = IRQ_DM646X_EMACTXINT, 76 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACTXINT),
76 .end = IRQ_DM646X_EMACTXINT, 77 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACTXINT),
77 .flags = IORESOURCE_IRQ, 78 .flags = IORESOURCE_IRQ,
78 }, 79 },
79 { 80 {
80 .start = IRQ_DM646X_EMACMISCINT, 81 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACMISCINT),
81 .end = IRQ_DM646X_EMACMISCINT, 82 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_EMACMISCINT),
82 .flags = IORESOURCE_IRQ, 83 .flags = IORESOURCE_IRQ,
83 }, 84 },
84}; 85};
@@ -273,12 +274,12 @@ static struct resource edma_resources[] = {
273 }, 274 },
274 { 275 {
275 .name = "edma3_ccint", 276 .name = "edma3_ccint",
276 .start = IRQ_CCINT0, 277 .start = DAVINCI_INTC_IRQ(IRQ_CCINT0),
277 .flags = IORESOURCE_IRQ, 278 .flags = IORESOURCE_IRQ,
278 }, 279 },
279 { 280 {
280 .name = "edma3_ccerrint", 281 .name = "edma3_ccerrint",
281 .start = IRQ_CCERRINT, 282 .start = DAVINCI_INTC_IRQ(IRQ_CCERRINT),
282 .flags = IORESOURCE_IRQ, 283 .flags = IORESOURCE_IRQ,
283 }, 284 },
284 /* not using TC*_ERR */ 285 /* not using TC*_ERR */
@@ -315,12 +316,12 @@ static struct resource dm646x_mcasp0_resources[] = {
315 }, 316 },
316 { 317 {
317 .name = "tx", 318 .name = "tx",
318 .start = IRQ_DM646X_MCASP0TXINT, 319 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_MCASP0TXINT),
319 .flags = IORESOURCE_IRQ, 320 .flags = IORESOURCE_IRQ,
320 }, 321 },
321 { 322 {
322 .name = "rx", 323 .name = "rx",
323 .start = IRQ_DM646X_MCASP0RXINT, 324 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_MCASP0RXINT),
324 .flags = IORESOURCE_IRQ, 325 .flags = IORESOURCE_IRQ,
325 }, 326 },
326}; 327};
@@ -341,7 +342,7 @@ static struct resource dm646x_mcasp1_resources[] = {
341 }, 342 },
342 { 343 {
343 .name = "tx", 344 .name = "tx",
344 .start = IRQ_DM646X_MCASP1TXINT, 345 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_MCASP1TXINT),
345 .flags = IORESOURCE_IRQ, 346 .flags = IORESOURCE_IRQ,
346 }, 347 },
347}; 348};
@@ -388,13 +389,13 @@ static struct platform_device vpif_dev = {
388 389
389static struct resource vpif_display_resource[] = { 390static struct resource vpif_display_resource[] = {
390 { 391 {
391 .start = IRQ_DM646X_VP_VERTINT2, 392 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT2),
392 .end = IRQ_DM646X_VP_VERTINT2, 393 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT2),
393 .flags = IORESOURCE_IRQ, 394 .flags = IORESOURCE_IRQ,
394 }, 395 },
395 { 396 {
396 .start = IRQ_DM646X_VP_VERTINT3, 397 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT3),
397 .end = IRQ_DM646X_VP_VERTINT3, 398 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT3),
398 .flags = IORESOURCE_IRQ, 399 .flags = IORESOURCE_IRQ,
399 }, 400 },
400}; 401};
@@ -412,13 +413,13 @@ static struct platform_device vpif_display_dev = {
412 413
413static struct resource vpif_capture_resource[] = { 414static struct resource vpif_capture_resource[] = {
414 { 415 {
415 .start = IRQ_DM646X_VP_VERTINT0, 416 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT0),
416 .end = IRQ_DM646X_VP_VERTINT0, 417 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT0),
417 .flags = IORESOURCE_IRQ, 418 .flags = IORESOURCE_IRQ,
418 }, 419 },
419 { 420 {
420 .start = IRQ_DM646X_VP_VERTINT1, 421 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT1),
421 .end = IRQ_DM646X_VP_VERTINT1, 422 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_VP_VERTINT1),
422 .flags = IORESOURCE_IRQ, 423 .flags = IORESOURCE_IRQ,
423 }, 424 },
424}; 425};
@@ -441,18 +442,18 @@ static struct resource dm646x_gpio_resources[] = {
441 .flags = IORESOURCE_MEM, 442 .flags = IORESOURCE_MEM,
442 }, 443 },
443 { /* interrupt */ 444 { /* interrupt */
444 .start = IRQ_DM646X_GPIOBNK0, 445 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_GPIOBNK0),
445 .end = IRQ_DM646X_GPIOBNK0, 446 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_GPIOBNK0),
446 .flags = IORESOURCE_IRQ, 447 .flags = IORESOURCE_IRQ,
447 }, 448 },
448 { 449 {
449 .start = IRQ_DM646X_GPIOBNK1, 450 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_GPIOBNK1),
450 .end = IRQ_DM646X_GPIOBNK1, 451 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_GPIOBNK1),
451 .flags = IORESOURCE_IRQ, 452 .flags = IORESOURCE_IRQ,
452 }, 453 },
453 { 454 {
454 .start = IRQ_DM646X_GPIOBNK2, 455 .start = DAVINCI_INTC_IRQ(IRQ_DM646X_GPIOBNK2),
455 .end = IRQ_DM646X_GPIOBNK2, 456 .end = DAVINCI_INTC_IRQ(IRQ_DM646X_GPIOBNK2),
456 .flags = IORESOURCE_IRQ, 457 .flags = IORESOURCE_IRQ,
457 }, 458 },
458}; 459};
@@ -513,7 +514,7 @@ static struct davinci_timer_info dm646x_timer_info = {
513static struct plat_serial8250_port dm646x_serial0_platform_data[] = { 514static struct plat_serial8250_port dm646x_serial0_platform_data[] = {
514 { 515 {
515 .mapbase = DAVINCI_UART0_BASE, 516 .mapbase = DAVINCI_UART0_BASE,
516 .irq = IRQ_UARTINT0, 517 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT0),
517 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 518 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
518 UPF_IOREMAP, 519 UPF_IOREMAP,
519 .iotype = UPIO_MEM32, 520 .iotype = UPIO_MEM32,
@@ -526,7 +527,7 @@ static struct plat_serial8250_port dm646x_serial0_platform_data[] = {
526static struct plat_serial8250_port dm646x_serial1_platform_data[] = { 527static struct plat_serial8250_port dm646x_serial1_platform_data[] = {
527 { 528 {
528 .mapbase = DAVINCI_UART1_BASE, 529 .mapbase = DAVINCI_UART1_BASE,
529 .irq = IRQ_UARTINT1, 530 .irq = DAVINCI_INTC_IRQ(IRQ_UARTINT1),
530 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 531 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
531 UPF_IOREMAP, 532 UPF_IOREMAP,
532 .iotype = UPIO_MEM32, 533 .iotype = UPIO_MEM32,
@@ -539,7 +540,7 @@ static struct plat_serial8250_port dm646x_serial1_platform_data[] = {
539static struct plat_serial8250_port dm646x_serial2_platform_data[] = { 540static struct plat_serial8250_port dm646x_serial2_platform_data[] = {
540 { 541 {
541 .mapbase = DAVINCI_UART2_BASE, 542 .mapbase = DAVINCI_UART2_BASE,
542 .irq = IRQ_DM646X_UARTINT2, 543 .irq = DAVINCI_INTC_IRQ(IRQ_DM646X_UARTINT2),
543 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST | 544 .flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST |
544 UPF_IOREMAP, 545 UPF_IOREMAP,
545 .iotype = UPIO_MEM32, 546 .iotype = UPIO_MEM32,
@@ -585,10 +586,6 @@ static const struct davinci_soc_info davinci_soc_info_dm646x = {
585 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 586 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE,
586 .pinmux_pins = dm646x_pins, 587 .pinmux_pins = dm646x_pins,
587 .pinmux_pins_num = ARRAY_SIZE(dm646x_pins), 588 .pinmux_pins_num = ARRAY_SIZE(dm646x_pins),
588 .intc_base = DAVINCI_ARM_INTC_BASE,
589 .intc_type = DAVINCI_INTC_TYPE_AINTC,
590 .intc_irq_prios = dm646x_default_priorities,
591 .intc_irq_num = DAVINCI_N_AINTC_IRQ,
592 .timer_info = &dm646x_timer_info, 589 .timer_info = &dm646x_timer_info,
593 .emac_pdata = &dm646x_emac_pdata, 590 .emac_pdata = &dm646x_emac_pdata,
594 .sram_dma = 0x10010000, 591 .sram_dma = 0x10010000,
@@ -690,6 +687,21 @@ void __init dm646x_register_clocks(void)
690 platform_device_register(&dm646x_pll2_device); 687 platform_device_register(&dm646x_pll2_device);
691} 688}
692 689
690static const struct davinci_aintc_config dm646x_aintc_config = {
691 .reg = {
692 .start = DAVINCI_ARM_INTC_BASE,
693 .end = DAVINCI_ARM_INTC_BASE + SZ_4K - 1,
694 .flags = IORESOURCE_MEM,
695 },
696 .num_irqs = 64,
697 .prios = dm646x_default_priorities,
698};
699
700void __init dm646x_init_irq(void)
701{
702 davinci_aintc_init(&dm646x_aintc_config);
703}
704
693static int __init dm646x_init_devices(void) 705static int __init dm646x_init_devices(void)
694{ 706{
695 int ret = 0; 707 int ret = 0;
diff --git a/arch/arm/mach-davinci/include/mach/common.h b/arch/arm/mach-davinci/include/mach/common.h
index b577e13a9c23..9526e5da0d33 100644
--- a/arch/arm/mach-davinci/include/mach/common.h
+++ b/arch/arm/mach-davinci/include/mach/common.h
@@ -17,11 +17,12 @@
17#include <linux/types.h> 17#include <linux/types.h>
18#include <linux/reboot.h> 18#include <linux/reboot.h>
19 19
20void davinci_timer_init(struct clk *clk); 20#include <asm/irq.h>
21
22#define DAVINCI_INTC_START NR_IRQS
23#define DAVINCI_INTC_IRQ(_irqnum) (DAVINCI_INTC_START + (_irqnum))
21 24
22extern void davinci_irq_init(void); 25void davinci_timer_init(struct clk *clk);
23extern void __iomem *davinci_intc_base;
24extern int davinci_intc_type;
25 26
26struct davinci_timer_instance { 27struct davinci_timer_instance {
27 u32 base; 28 u32 base;
@@ -57,11 +58,6 @@ struct davinci_soc_info {
57 u32 pinmux_base; 58 u32 pinmux_base;
58 const struct mux_config *pinmux_pins; 59 const struct mux_config *pinmux_pins;
59 unsigned long pinmux_pins_num; 60 unsigned long pinmux_pins_num;
60 u32 intc_base;
61 int intc_type;
62 u8 *intc_irq_prios;
63 unsigned long intc_irq_num;
64 u32 *intc_host_map;
65 struct davinci_timer_info *timer_info; 61 struct davinci_timer_info *timer_info;
66 int gpio_type; 62 int gpio_type;
67 u32 gpio_base; 63 u32 gpio_base;
diff --git a/arch/arm/mach-davinci/include/mach/cpufreq.h b/arch/arm/mach-davinci/include/mach/cpufreq.h
deleted file mode 100644
index 3c089cfb6cd6..000000000000
--- a/arch/arm/mach-davinci/include/mach/cpufreq.h
+++ /dev/null
@@ -1,26 +0,0 @@
1/*
2 * TI DaVinci CPUFreq platform support.
3 *
4 * Copyright (C) 2009 Texas Instruments, Inc. http://www.ti.com/
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License as
8 * published by the Free Software Foundation version 2.
9 *
10 * This program is distributed "as is" WITHOUT ANY WARRANTY of any
11 * kind, whether express or implied; without even the implied warranty
12 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15#ifndef _MACH_DAVINCI_CPUFREQ_H
16#define _MACH_DAVINCI_CPUFREQ_H
17
18#include <linux/cpufreq.h>
19
20struct davinci_cpufreq_config {
21 struct cpufreq_frequency_table *freq_table;
22 int (*set_voltage) (unsigned int index);
23 int (*init) (void);
24};
25
26#endif
diff --git a/arch/arm/mach-davinci/include/mach/da8xx.h b/arch/arm/mach-davinci/include/mach/da8xx.h
index ab4a57f433f4..1618b30661a9 100644
--- a/arch/arm/mach-davinci/include/mach/da8xx.h
+++ b/arch/arm/mach-davinci/include/mach/da8xx.h
@@ -88,10 +88,12 @@ extern unsigned int da850_max_speed;
88#define DA8XX_ARM_RAM_BASE 0xffff0000 88#define DA8XX_ARM_RAM_BASE 0xffff0000
89 89
90void da830_init(void); 90void da830_init(void);
91void da830_init_irq(void);
91void da830_init_time(void); 92void da830_init_time(void);
92void da830_register_clocks(void); 93void da830_register_clocks(void);
93 94
94void da850_init(void); 95void da850_init(void);
96void da850_init_irq(void);
95void da850_init_time(void); 97void da850_init_time(void);
96void da850_register_clocks(void); 98void da850_register_clocks(void);
97 99
diff --git a/arch/arm/mach-davinci/include/mach/entry-macro.S b/arch/arm/mach-davinci/include/mach/entry-macro.S
deleted file mode 100644
index cf5f573eb5fd..000000000000
--- a/arch/arm/mach-davinci/include/mach/entry-macro.S
+++ /dev/null
@@ -1,39 +0,0 @@
1/*
2 * Low-level IRQ helper macros for TI DaVinci-based platforms
3 *
4 * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com>
5 *
6 * 2007 (c) MontaVista Software, Inc. This file is licensed under
7 * the terms of the GNU General Public License version 2. This program
8 * is licensed "as is" without any warranty of any kind, whether express
9 * or implied.
10 */
11#include <mach/irqs.h>
12
13 .macro get_irqnr_preamble, base, tmp
14 ldr \base, =davinci_intc_base
15 ldr \base, [\base]
16 .endm
17
18 .macro get_irqnr_and_base, irqnr, irqstat, base, tmp
19#if defined(CONFIG_AINTC) && defined(CONFIG_CP_INTC)
20 ldr \tmp, =davinci_intc_type
21 ldr \tmp, [\tmp]
22 cmp \tmp, #DAVINCI_INTC_TYPE_CP_INTC
23 beq 1001f
24#endif
25#if defined(CONFIG_AINTC)
26 ldr \tmp, [\base, #0x14]
27 movs \tmp, \tmp, lsr #2
28 sub \irqnr, \tmp, #1
29 b 1002f
30#endif
31#if defined(CONFIG_CP_INTC)
321001: ldr \irqnr, [\base, #0x80] /* get irq number */
33 mov \tmp, \irqnr, lsr #31
34 and \irqnr, \irqnr, #0xff /* irq is in bits 0-9 */
35 and \tmp, \tmp, #0x1
36 cmp \tmp, #0x1
37#endif
381002:
39 .endm
diff --git a/arch/arm/mach-davinci/irq.c b/arch/arm/mach-davinci/irq.c
deleted file mode 100644
index 952dc126c390..000000000000
--- a/arch/arm/mach-davinci/irq.c
+++ /dev/null
@@ -1,117 +0,0 @@
1/*
2 * Interrupt handler for DaVinci boards.
3 *
4 * Copyright (C) 2006 Texas Instruments.
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19 *
20 */
21#include <linux/kernel.h>
22#include <linux/init.h>
23#include <linux/interrupt.h>
24#include <linux/irq.h>
25#include <linux/io.h>
26
27#include <mach/hardware.h>
28#include <mach/cputype.h>
29#include <mach/common.h>
30#include <asm/mach/irq.h>
31
32#define FIQ_REG0_OFFSET 0x0000
33#define FIQ_REG1_OFFSET 0x0004
34#define IRQ_REG0_OFFSET 0x0008
35#define IRQ_REG1_OFFSET 0x000C
36#define IRQ_ENT_REG0_OFFSET 0x0018
37#define IRQ_ENT_REG1_OFFSET 0x001C
38#define IRQ_INCTL_REG_OFFSET 0x0020
39#define IRQ_EABASE_REG_OFFSET 0x0024
40#define IRQ_INTPRI0_REG_OFFSET 0x0030
41#define IRQ_INTPRI7_REG_OFFSET 0x004C
42
43static inline void davinci_irq_writel(unsigned long value, int offset)
44{
45 __raw_writel(value, davinci_intc_base + offset);
46}
47
48static __init void
49davinci_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num)
50{
51 struct irq_chip_generic *gc;
52 struct irq_chip_type *ct;
53
54 gc = irq_alloc_generic_chip("AINTC", 1, irq_start, base, handle_edge_irq);
55 if (!gc) {
56 pr_err("%s: irq_alloc_generic_chip for IRQ %u failed\n",
57 __func__, irq_start);
58 return;
59 }
60
61 ct = gc->chip_types;
62 ct->chip.irq_ack = irq_gc_ack_set_bit;
63 ct->chip.irq_mask = irq_gc_mask_clr_bit;
64 ct->chip.irq_unmask = irq_gc_mask_set_bit;
65
66 ct->regs.ack = IRQ_REG0_OFFSET;
67 ct->regs.mask = IRQ_ENT_REG0_OFFSET;
68 irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE,
69 IRQ_NOREQUEST | IRQ_NOPROBE, 0);
70}
71
72/* ARM Interrupt Controller Initialization */
73void __init davinci_irq_init(void)
74{
75 unsigned i, j;
76 const u8 *davinci_def_priorities = davinci_soc_info.intc_irq_prios;
77
78 davinci_intc_type = DAVINCI_INTC_TYPE_AINTC;
79 davinci_intc_base = ioremap(davinci_soc_info.intc_base, SZ_4K);
80 if (WARN_ON(!davinci_intc_base))
81 return;
82
83 /* Clear all interrupt requests */
84 davinci_irq_writel(~0x0, FIQ_REG0_OFFSET);
85 davinci_irq_writel(~0x0, FIQ_REG1_OFFSET);
86 davinci_irq_writel(~0x0, IRQ_REG0_OFFSET);
87 davinci_irq_writel(~0x0, IRQ_REG1_OFFSET);
88
89 /* Disable all interrupts */
90 davinci_irq_writel(0x0, IRQ_ENT_REG0_OFFSET);
91 davinci_irq_writel(0x0, IRQ_ENT_REG1_OFFSET);
92
93 /* Interrupts disabled immediately, IRQ entry reflects all */
94 davinci_irq_writel(0x0, IRQ_INCTL_REG_OFFSET);
95
96 /* we don't use the hardware vector table, just its entry addresses */
97 davinci_irq_writel(0, IRQ_EABASE_REG_OFFSET);
98
99 /* Clear all interrupt requests */
100 davinci_irq_writel(~0x0, FIQ_REG0_OFFSET);
101 davinci_irq_writel(~0x0, FIQ_REG1_OFFSET);
102 davinci_irq_writel(~0x0, IRQ_REG0_OFFSET);
103 davinci_irq_writel(~0x0, IRQ_REG1_OFFSET);
104
105 for (i = IRQ_INTPRI0_REG_OFFSET; i <= IRQ_INTPRI7_REG_OFFSET; i += 4) {
106 u32 pri;
107
108 for (j = 0, pri = 0; j < 32; j += 4, davinci_def_priorities++)
109 pri |= (*davinci_def_priorities & 0x07) << j;
110 davinci_irq_writel(pri, i);
111 }
112
113 for (i = 0, j = 0; i < davinci_soc_info.intc_irq_num; i += 32, j += 0x04)
114 davinci_alloc_gc(davinci_intc_base + j, i, 32);
115
116 irq_set_handler(IRQ_TINT1_TINT34, handle_level_irq);
117}
diff --git a/arch/arm/mach-davinci/include/mach/irqs.h b/arch/arm/mach-davinci/irqs.h
index edb2ca62321a..8f9fc7a56ce8 100644
--- a/arch/arm/mach-davinci/include/mach/irqs.h
+++ b/arch/arm/mach-davinci/irqs.h
@@ -30,9 +30,6 @@
30/* Base address */ 30/* Base address */
31#define DAVINCI_ARM_INTC_BASE 0x01C48000 31#define DAVINCI_ARM_INTC_BASE 0x01C48000
32 32
33#define DAVINCI_INTC_TYPE_AINTC 0
34#define DAVINCI_INTC_TYPE_CP_INTC 1
35
36/* Interrupt lines */ 33/* Interrupt lines */
37#define IRQ_VDINT0 0 34#define IRQ_VDINT0 0
38#define IRQ_VDINT1 1 35#define IRQ_VDINT1 1
@@ -404,6 +401,5 @@
404/* da850 currently has the most gpio pins (144) */ 401/* da850 currently has the most gpio pins (144) */
405#define DAVINCI_N_GPIO 144 402#define DAVINCI_N_GPIO 144
406/* da850 currently has the most irqs so use DA850_N_CP_INTC_IRQ */ 403/* da850 currently has the most irqs so use DA850_N_CP_INTC_IRQ */
407#define NR_IRQS (DA850_N_CP_INTC_IRQ + DAVINCI_N_GPIO)
408 404
409#endif /* __ASM_ARCH_IRQS_H */ 405#endif /* __ASM_ARCH_IRQS_H */
diff --git a/arch/arm/mach-davinci/usb-da8xx.c b/arch/arm/mach-davinci/usb-da8xx.c
index c17ce66a3d95..25f21ee86f1a 100644
--- a/arch/arm/mach-davinci/usb-da8xx.c
+++ b/arch/arm/mach-davinci/usb-da8xx.c
@@ -18,7 +18,8 @@
18#include <mach/common.h> 18#include <mach/common.h>
19#include <mach/cputype.h> 19#include <mach/cputype.h>
20#include <mach/da8xx.h> 20#include <mach/da8xx.h>
21#include <mach/irqs.h> 21
22#include "irqs.h"
22 23
23#define DA8XX_USB0_BASE 0x01e00000 24#define DA8XX_USB0_BASE 0x01e00000
24#define DA8XX_USB1_BASE 0x01e25000 25#define DA8XX_USB1_BASE 0x01e25000
@@ -70,7 +71,7 @@ static struct resource da8xx_usb20_resources[] = {
70 .flags = IORESOURCE_MEM, 71 .flags = IORESOURCE_MEM,
71 }, 72 },
72 { 73 {
73 .start = IRQ_DA8XX_USB_INT, 74 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_USB_INT),
74 .flags = IORESOURCE_IRQ, 75 .flags = IORESOURCE_IRQ,
75 .name = "mc", 76 .name = "mc",
76 }, 77 },
@@ -105,8 +106,8 @@ static struct resource da8xx_usb11_resources[] = {
105 .flags = IORESOURCE_MEM, 106 .flags = IORESOURCE_MEM,
106 }, 107 },
107 [1] = { 108 [1] = {
108 .start = IRQ_DA8XX_IRQN, 109 .start = DAVINCI_INTC_IRQ(IRQ_DA8XX_IRQN),
109 .end = IRQ_DA8XX_IRQN, 110 .end = DAVINCI_INTC_IRQ(IRQ_DA8XX_IRQN),
110 .flags = IORESOURCE_IRQ, 111 .flags = IORESOURCE_IRQ,
111 }, 112 },
112}; 113};
diff --git a/arch/arm/mach-davinci/usb.c b/arch/arm/mach-davinci/usb.c
index 31ed7aa47227..dd8db61cdd1c 100644
--- a/arch/arm/mach-davinci/usb.c
+++ b/arch/arm/mach-davinci/usb.c
@@ -2,16 +2,16 @@
2/* 2/*
3 * USB 3 * USB
4 */ 4 */
5#include <linux/dma-mapping.h>
5#include <linux/init.h> 6#include <linux/init.h>
6#include <linux/platform_device.h> 7#include <linux/platform_device.h>
7#include <linux/dma-mapping.h> 8#include <linux/platform_data/usb-davinci.h>
8
9#include <linux/usb/musb.h> 9#include <linux/usb/musb.h>
10 10
11#include <mach/common.h> 11#include <mach/common.h>
12#include <mach/irqs.h>
13#include <mach/cputype.h> 12#include <mach/cputype.h>
14#include <linux/platform_data/usb-davinci.h> 13
14#include "irqs.h"
15 15
16#define DAVINCI_USB_OTG_BASE 0x01c64000 16#define DAVINCI_USB_OTG_BASE 0x01c64000
17 17
@@ -38,7 +38,7 @@ static struct resource usb_resources[] = {
38 .flags = IORESOURCE_MEM, 38 .flags = IORESOURCE_MEM,
39 }, 39 },
40 { 40 {
41 .start = IRQ_USBINT, 41 .start = DAVINCI_INTC_IRQ(IRQ_USBINT),
42 .flags = IORESOURCE_IRQ, 42 .flags = IORESOURCE_IRQ,
43 .name = "mc" 43 .name = "mc"
44 }, 44 },
@@ -70,8 +70,9 @@ void __init davinci_setup_usb(unsigned mA, unsigned potpgt_ms)
70 70
71 if (cpu_is_davinci_dm646x()) { 71 if (cpu_is_davinci_dm646x()) {
72 /* Override the defaults as DM6467 uses different IRQs. */ 72 /* Override the defaults as DM6467 uses different IRQs. */
73 usb_dev.resource[1].start = IRQ_DM646X_USBINT; 73 usb_dev.resource[1].start = DAVINCI_INTC_IRQ(IRQ_DM646X_USBINT);
74 usb_dev.resource[2].start = IRQ_DM646X_USBDMAINT; 74 usb_dev.resource[2].start = DAVINCI_INTC_IRQ(
75 IRQ_DM646X_USBDMAINT);
75 } else /* other devices don't have dedicated CPPI IRQ */ 76 } else /* other devices don't have dedicated CPPI IRQ */
76 usb_dev.num_resources = 2; 77 usb_dev.num_resources = 2;
77 78
diff --git a/arch/arm/mach-ep93xx/ts72xx.c b/arch/arm/mach-ep93xx/ts72xx.c
index c6a533699b00..85b74ac943f0 100644
--- a/arch/arm/mach-ep93xx/ts72xx.c
+++ b/arch/arm/mach-ep93xx/ts72xx.c
@@ -26,7 +26,6 @@
26#include <mach/gpio-ep93xx.h> 26#include <mach/gpio-ep93xx.h>
27#include <mach/hardware.h> 27#include <mach/hardware.h>
28#include <mach/irqs.h> 28#include <mach/irqs.h>
29#include <mach/gpio-ep93xx.h>
30 29
31#include <asm/mach-types.h> 30#include <asm/mach-types.h>
32#include <asm/mach/map.h> 31#include <asm/mach/map.h>
diff --git a/arch/arm/mach-exynos/headsmp.S b/arch/arm/mach-exynos/headsmp.S
index 005695c9bf40..0ac2cb9a7355 100644
--- a/arch/arm/mach-exynos/headsmp.S
+++ b/arch/arm/mach-exynos/headsmp.S
@@ -36,4 +36,4 @@ ENDPROC(exynos4_secondary_startup)
36 36
37 .align 2 37 .align 2
381: .long . 381: .long .
39 .long pen_release 39 .long exynos_pen_release
diff --git a/arch/arm/mach-exynos/platsmp.c b/arch/arm/mach-exynos/platsmp.c
index c39ffd2e2fe6..abcac6164233 100644
--- a/arch/arm/mach-exynos/platsmp.c
+++ b/arch/arm/mach-exynos/platsmp.c
@@ -28,6 +28,9 @@
28 28
29extern void exynos4_secondary_startup(void); 29extern void exynos4_secondary_startup(void);
30 30
31/* XXX exynos_pen_release is cargo culted code - DO NOT COPY XXX */
32volatile int exynos_pen_release = -1;
33
31#ifdef CONFIG_HOTPLUG_CPU 34#ifdef CONFIG_HOTPLUG_CPU
32static inline void cpu_leave_lowpower(u32 core_id) 35static inline void cpu_leave_lowpower(u32 core_id)
33{ 36{
@@ -57,7 +60,7 @@ static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
57 60
58 wfi(); 61 wfi();
59 62
60 if (pen_release == core_id) { 63 if (exynos_pen_release == core_id) {
61 /* 64 /*
62 * OK, proper wakeup, we're done 65 * OK, proper wakeup, we're done
63 */ 66 */
@@ -228,15 +231,17 @@ void exynos_core_restart(u32 core_id)
228} 231}
229 232
230/* 233/*
231 * Write pen_release in a way that is guaranteed to be visible to all 234 * XXX CARGO CULTED CODE - DO NOT COPY XXX
232 * observers, irrespective of whether they're taking part in coherency 235 *
236 * Write exynos_pen_release in a way that is guaranteed to be visible to
237 * all observers, irrespective of whether they're taking part in coherency
233 * or not. This is necessary for the hotplug code to work reliably. 238 * or not. This is necessary for the hotplug code to work reliably.
234 */ 239 */
235static void write_pen_release(int val) 240static void exynos_write_pen_release(int val)
236{ 241{
237 pen_release = val; 242 exynos_pen_release = val;
238 smp_wmb(); 243 smp_wmb();
239 sync_cache_w(&pen_release); 244 sync_cache_w(&exynos_pen_release);
240} 245}
241 246
242static DEFINE_SPINLOCK(boot_lock); 247static DEFINE_SPINLOCK(boot_lock);
@@ -247,7 +252,7 @@ static void exynos_secondary_init(unsigned int cpu)
247 * let the primary processor know we're out of the 252 * let the primary processor know we're out of the
248 * pen, then head off into the C entry point 253 * pen, then head off into the C entry point
249 */ 254 */
250 write_pen_release(-1); 255 exynos_write_pen_release(-1);
251 256
252 /* 257 /*
253 * Synchronise with the boot thread. 258 * Synchronise with the boot thread.
@@ -322,12 +327,12 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
322 /* 327 /*
323 * The secondary processor is waiting to be released from 328 * The secondary processor is waiting to be released from
324 * the holding pen - release it, then wait for it to flag 329 * the holding pen - release it, then wait for it to flag
325 * that it has been released by resetting pen_release. 330 * that it has been released by resetting exynos_pen_release.
326 * 331 *
327 * Note that "pen_release" is the hardware CPU core ID, whereas 332 * Note that "exynos_pen_release" is the hardware CPU core ID, whereas
328 * "cpu" is Linux's internal ID. 333 * "cpu" is Linux's internal ID.
329 */ 334 */
330 write_pen_release(core_id); 335 exynos_write_pen_release(core_id);
331 336
332 if (!exynos_cpu_power_state(core_id)) { 337 if (!exynos_cpu_power_state(core_id)) {
333 exynos_cpu_power_up(core_id); 338 exynos_cpu_power_up(core_id);
@@ -336,9 +341,9 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
336 /* wait max 10 ms until cpu1 is on */ 341 /* wait max 10 ms until cpu1 is on */
337 while (exynos_cpu_power_state(core_id) 342 while (exynos_cpu_power_state(core_id)
338 != S5P_CORE_LOCAL_PWR_EN) { 343 != S5P_CORE_LOCAL_PWR_EN) {
339 if (timeout-- == 0) 344 if (timeout == 0)
340 break; 345 break;
341 346 timeout--;
342 mdelay(1); 347 mdelay(1);
343 } 348 }
344 349
@@ -376,13 +381,13 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
376 else 381 else
377 arch_send_wakeup_ipi_mask(cpumask_of(cpu)); 382 arch_send_wakeup_ipi_mask(cpumask_of(cpu));
378 383
379 if (pen_release == -1) 384 if (exynos_pen_release == -1)
380 break; 385 break;
381 386
382 udelay(10); 387 udelay(10);
383 } 388 }
384 389
385 if (pen_release != -1) 390 if (exynos_pen_release != -1)
386 ret = -ETIMEDOUT; 391 ret = -ETIMEDOUT;
387 392
388 /* 393 /*
@@ -392,7 +397,7 @@ static int exynos_boot_secondary(unsigned int cpu, struct task_struct *idle)
392fail: 397fail:
393 spin_unlock(&boot_lock); 398 spin_unlock(&boot_lock);
394 399
395 return pen_release != -1 ? ret : 0; 400 return exynos_pen_release != -1 ? ret : 0;
396} 401}
397 402
398static void __init exynos_smp_prepare_cpus(unsigned int max_cpus) 403static void __init exynos_smp_prepare_cpus(unsigned int max_cpus)
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
index 8af2f7e91d13..35ff620537e6 100644
--- a/arch/arm/mach-imx/Makefile
+++ b/arch/arm/mach-imx/Makefile
@@ -29,9 +29,10 @@ obj-$(CONFIG_SOC_IMX6SL) += cpuidle-imx6sl.o
29obj-$(CONFIG_SOC_IMX6SLL) += cpuidle-imx6sx.o 29obj-$(CONFIG_SOC_IMX6SLL) += cpuidle-imx6sx.o
30obj-$(CONFIG_SOC_IMX6SX) += cpuidle-imx6sx.o 30obj-$(CONFIG_SOC_IMX6SX) += cpuidle-imx6sx.o
31obj-$(CONFIG_SOC_IMX6UL) += cpuidle-imx6sx.o 31obj-$(CONFIG_SOC_IMX6UL) += cpuidle-imx6sx.o
32obj-$(CONFIG_SOC_IMX7ULP) += cpuidle-imx7ulp.o
32endif 33endif
33 34
34ifdef CONFIG_SND_IMX_SOC 35ifdef CONFIG_SND_SOC_IMX_PCM_FIQ
35obj-y += ssi-fiq.o 36obj-y += ssi-fiq.o
36obj-y += ssi-fiq-ksym.o 37obj-y += ssi-fiq-ksym.o
37endif 38endif
diff --git a/arch/arm/mach-imx/common.h b/arch/arm/mach-imx/common.h
index bc915e5b4d56..c51764a85fd7 100644
--- a/arch/arm/mach-imx/common.h
+++ b/arch/arm/mach-imx/common.h
@@ -72,6 +72,15 @@ enum mxc_cpu_pwr_mode {
72 STOP_POWER_OFF, /* STOP + SRPG */ 72 STOP_POWER_OFF, /* STOP + SRPG */
73}; 73};
74 74
75enum ulp_cpu_pwr_mode {
76 ULP_PM_HSRUN, /* High speed run mode */
77 ULP_PM_RUN, /* Run mode */
78 ULP_PM_WAIT, /* Wait mode */
79 ULP_PM_STOP, /* Stop mode */
80 ULP_PM_VLPS, /* Very low power stop mode */
81 ULP_PM_VLLS, /* very low leakage stop mode */
82};
83
75void imx_enable_cpu(int cpu, bool enable); 84void imx_enable_cpu(int cpu, bool enable);
76void imx_set_cpu_jump(int cpu, void *jump_addr); 85void imx_set_cpu_jump(int cpu, void *jump_addr);
77u32 imx_get_cpu_arg(int cpu); 86u32 imx_get_cpu_arg(int cpu);
@@ -98,6 +107,7 @@ int imx6_set_lpm(enum mxc_cpu_pwr_mode mode);
98void imx6_set_int_mem_clk_lpm(bool enable); 107void imx6_set_int_mem_clk_lpm(bool enable);
99void imx6sl_set_wait_clk(bool enter); 108void imx6sl_set_wait_clk(bool enter);
100int imx_mmdc_get_ddr_type(void); 109int imx_mmdc_get_ddr_type(void);
110int imx7ulp_set_lpm(enum ulp_cpu_pwr_mode mode);
101 111
102void imx_cpu_die(unsigned int cpu); 112void imx_cpu_die(unsigned int cpu);
103int imx_cpu_kill(unsigned int cpu); 113int imx_cpu_kill(unsigned int cpu);
diff --git a/arch/arm/mach-imx/cpuidle-imx7ulp.c b/arch/arm/mach-imx/cpuidle-imx7ulp.c
new file mode 100644
index 000000000000..ca86c967d19e
--- /dev/null
+++ b/arch/arm/mach-imx/cpuidle-imx7ulp.c
@@ -0,0 +1,60 @@
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Copyright (C) 2016 Freescale Semiconductor, Inc.
4 * Copyright 2017-2018 NXP
5 * Anson Huang <Anson.Huang@nxp.com>
6 */
7
8#include <linux/cpuidle.h>
9#include <linux/module.h>
10#include <asm/cpuidle.h>
11
12#include "common.h"
13#include "cpuidle.h"
14
15static int imx7ulp_enter_wait(struct cpuidle_device *dev,
16 struct cpuidle_driver *drv, int index)
17{
18 if (index == 1)
19 imx7ulp_set_lpm(ULP_PM_WAIT);
20 else
21 imx7ulp_set_lpm(ULP_PM_STOP);
22
23 cpu_do_idle();
24
25 imx7ulp_set_lpm(ULP_PM_RUN);
26
27 return index;
28}
29
30static struct cpuidle_driver imx7ulp_cpuidle_driver = {
31 .name = "imx7ulp_cpuidle",
32 .owner = THIS_MODULE,
33 .states = {
34 /* WFI */
35 ARM_CPUIDLE_WFI_STATE,
36 /* WAIT */
37 {
38 .exit_latency = 50,
39 .target_residency = 75,
40 .enter = imx7ulp_enter_wait,
41 .name = "WAIT",
42 .desc = "PSTOP2",
43 },
44 /* STOP */
45 {
46 .exit_latency = 100,
47 .target_residency = 150,
48 .enter = imx7ulp_enter_wait,
49 .name = "STOP",
50 .desc = "PSTOP1",
51 },
52 },
53 .state_count = 3,
54 .safe_state_index = 0,
55};
56
57int __init imx7ulp_cpuidle_init(void)
58{
59 return cpuidle_register(&imx7ulp_cpuidle_driver, NULL);
60}
diff --git a/arch/arm/mach-imx/cpuidle.h b/arch/arm/mach-imx/cpuidle.h
index f9140128ba05..7694c8f810a4 100644
--- a/arch/arm/mach-imx/cpuidle.h
+++ b/arch/arm/mach-imx/cpuidle.h
@@ -15,6 +15,7 @@ extern int imx5_cpuidle_init(void);
15extern int imx6q_cpuidle_init(void); 15extern int imx6q_cpuidle_init(void);
16extern int imx6sl_cpuidle_init(void); 16extern int imx6sl_cpuidle_init(void);
17extern int imx6sx_cpuidle_init(void); 17extern int imx6sx_cpuidle_init(void);
18extern int imx7ulp_cpuidle_init(void);
18#else 19#else
19static inline int imx5_cpuidle_init(void) 20static inline int imx5_cpuidle_init(void)
20{ 21{
@@ -32,4 +33,8 @@ static inline int imx6sx_cpuidle_init(void)
32{ 33{
33 return 0; 34 return 0;
34} 35}
36static inline int imx7ulp_cpuidle_init(void)
37{
38 return 0;
39}
35#endif 40#endif
diff --git a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
index 5169dfba9718..07d4fcfe5c2e 100644
--- a/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
+++ b/arch/arm/mach-imx/mach-imx27_visstrim_m10.c
@@ -258,8 +258,7 @@ static void __init visstrim_analog_camera_init(void)
258 return; 258 return;
259 259
260 dma_declare_coherent_memory(&pdev->dev, mx2_camera_base, 260 dma_declare_coherent_memory(&pdev->dev, mx2_camera_base,
261 mx2_camera_base, MX2_CAMERA_BUF_SIZE, 261 mx2_camera_base, MX2_CAMERA_BUF_SIZE);
262 DMA_MEMORY_EXCLUSIVE);
263} 262}
264 263
265static void __init visstrim_reserve(void) 264static void __init visstrim_reserve(void)
@@ -445,8 +444,7 @@ static void __init visstrim_coda_init(void)
445 dma_declare_coherent_memory(&pdev->dev, 444 dma_declare_coherent_memory(&pdev->dev,
446 mx2_camera_base + MX2_CAMERA_BUF_SIZE, 445 mx2_camera_base + MX2_CAMERA_BUF_SIZE,
447 mx2_camera_base + MX2_CAMERA_BUF_SIZE, 446 mx2_camera_base + MX2_CAMERA_BUF_SIZE,
448 MX2_CAMERA_BUF_SIZE, 447 MX2_CAMERA_BUF_SIZE);
449 DMA_MEMORY_EXCLUSIVE);
450} 448}
451 449
452/* DMA deinterlace */ 450/* DMA deinterlace */
@@ -465,8 +463,7 @@ static void __init visstrim_deinterlace_init(void)
465 dma_declare_coherent_memory(&pdev->dev, 463 dma_declare_coherent_memory(&pdev->dev,
466 mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE, 464 mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE,
467 mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE, 465 mx2_camera_base + 2 * MX2_CAMERA_BUF_SIZE,
468 MX2_CAMERA_BUF_SIZE, 466 MX2_CAMERA_BUF_SIZE);
469 DMA_MEMORY_EXCLUSIVE);
470} 467}
471 468
472/* Emma-PrP for format conversion */ 469/* Emma-PrP for format conversion */
@@ -485,8 +482,7 @@ static void __init visstrim_emmaprp_init(void)
485 */ 482 */
486 ret = dma_declare_coherent_memory(&pdev->dev, 483 ret = dma_declare_coherent_memory(&pdev->dev,
487 mx2_camera_base, mx2_camera_base, 484 mx2_camera_base, mx2_camera_base,
488 MX2_CAMERA_BUF_SIZE, 485 MX2_CAMERA_BUF_SIZE);
489 DMA_MEMORY_EXCLUSIVE);
490 if (ret) 486 if (ret)
491 pr_err("Failed to declare memory for emmaprp\n"); 487 pr_err("Failed to declare memory for emmaprp\n");
492} 488}
diff --git a/arch/arm/mach-imx/mach-imx7ulp.c b/arch/arm/mach-imx/mach-imx7ulp.c
index 33937ebf66b5..11ac71aaf965 100644
--- a/arch/arm/mach-imx/mach-imx7ulp.c
+++ b/arch/arm/mach-imx/mach-imx7ulp.c
@@ -6,17 +6,57 @@
6 */ 6 */
7 7
8#include <linux/irqchip.h> 8#include <linux/irqchip.h>
9#include <linux/mfd/syscon.h>
9#include <linux/of_platform.h> 10#include <linux/of_platform.h>
11#include <linux/regmap.h>
10#include <asm/mach/arch.h> 12#include <asm/mach/arch.h>
11 13
12#include "common.h" 14#include "common.h"
15#include "cpuidle.h"
13#include "hardware.h" 16#include "hardware.h"
14 17
18#define SIM_JTAG_ID_REG 0x8c
19
20static void __init imx7ulp_set_revision(void)
21{
22 struct regmap *sim;
23 u32 revision;
24
25 sim = syscon_regmap_lookup_by_compatible("fsl,imx7ulp-sim");
26 if (IS_ERR(sim)) {
27 pr_warn("failed to find fsl,imx7ulp-sim regmap!\n");
28 return;
29 }
30
31 if (regmap_read(sim, SIM_JTAG_ID_REG, &revision)) {
32 pr_warn("failed to read sim regmap!\n");
33 return;
34 }
35
36 /*
37 * bit[31:28] of JTAG_ID register defines revision as below from B0:
38 * 0001 B0
39 * 0010 B1
40 */
41 switch (revision >> 28) {
42 case 1:
43 imx_set_soc_revision(IMX_CHIP_REVISION_2_0);
44 break;
45 case 2:
46 imx_set_soc_revision(IMX_CHIP_REVISION_2_1);
47 break;
48 default:
49 imx_set_soc_revision(IMX_CHIP_REVISION_1_0);
50 break;
51 }
52}
53
15static void __init imx7ulp_init_machine(void) 54static void __init imx7ulp_init_machine(void)
16{ 55{
17 imx7ulp_pm_init(); 56 imx7ulp_pm_init();
18 57
19 mxc_set_cpu_type(MXC_CPU_IMX7ULP); 58 mxc_set_cpu_type(MXC_CPU_IMX7ULP);
59 imx7ulp_set_revision();
20 of_platform_default_populate(NULL, NULL, imx_soc_device_init()); 60 of_platform_default_populate(NULL, NULL, imx_soc_device_init());
21} 61}
22 62
@@ -25,7 +65,13 @@ static const char *const imx7ulp_dt_compat[] __initconst = {
25 NULL, 65 NULL,
26}; 66};
27 67
68static void __init imx7ulp_init_late(void)
69{
70 imx7ulp_cpuidle_init();
71}
72
28DT_MACHINE_START(IMX7ulp, "Freescale i.MX7ULP (Device Tree)") 73DT_MACHINE_START(IMX7ulp, "Freescale i.MX7ULP (Device Tree)")
29 .init_machine = imx7ulp_init_machine, 74 .init_machine = imx7ulp_init_machine,
30 .dt_compat = imx7ulp_dt_compat, 75 .dt_compat = imx7ulp_dt_compat,
76 .init_late = imx7ulp_init_late,
31MACHINE_END 77MACHINE_END
diff --git a/arch/arm/mach-imx/mach-mx21ads.c b/arch/arm/mach-imx/mach-mx21ads.c
index 2e1e540f2e5a..d278fb672d40 100644
--- a/arch/arm/mach-imx/mach-mx21ads.c
+++ b/arch/arm/mach-imx/mach-mx21ads.c
@@ -205,7 +205,6 @@ static struct regulator_init_data mx21ads_lcd_regulator_init_data = {
205static struct fixed_voltage_config mx21ads_lcd_regulator_pdata = { 205static struct fixed_voltage_config mx21ads_lcd_regulator_pdata = {
206 .supply_name = "LCD", 206 .supply_name = "LCD",
207 .microvolts = 3300000, 207 .microvolts = 3300000,
208 .enable_high = 1,
209 .init_data = &mx21ads_lcd_regulator_init_data, 208 .init_data = &mx21ads_lcd_regulator_init_data,
210}; 209};
211 210
diff --git a/arch/arm/mach-imx/mach-mx27ads.c b/arch/arm/mach-imx/mach-mx27ads.c
index f5e04047ed13..6dd7f57c332f 100644
--- a/arch/arm/mach-imx/mach-mx27ads.c
+++ b/arch/arm/mach-imx/mach-mx27ads.c
@@ -237,7 +237,7 @@ static struct fixed_voltage_config mx27ads_lcd_regulator_pdata = {
237static struct gpiod_lookup_table mx27ads_lcd_regulator_gpiod_table = { 237static struct gpiod_lookup_table mx27ads_lcd_regulator_gpiod_table = {
238 .dev_id = "reg-fixed-voltage.0", /* Let's hope ID 0 is what we get */ 238 .dev_id = "reg-fixed-voltage.0", /* Let's hope ID 0 is what we get */
239 .table = { 239 .table = {
240 GPIO_LOOKUP("LCD", 0, NULL, GPIO_ACTIVE_HIGH), 240 GPIO_LOOKUP("LCD", 0, NULL, GPIO_ACTIVE_LOW),
241 { }, 241 { },
242 }, 242 },
243}; 243};
diff --git a/arch/arm/mach-imx/mach-mx31moboard.c b/arch/arm/mach-imx/mach-mx31moboard.c
index 643a3d749703..fe50f4cf00a7 100644
--- a/arch/arm/mach-imx/mach-mx31moboard.c
+++ b/arch/arm/mach-imx/mach-mx31moboard.c
@@ -475,8 +475,7 @@ static int __init mx31moboard_init_cam(void)
475 475
476 ret = dma_declare_coherent_memory(&pdev->dev, 476 ret = dma_declare_coherent_memory(&pdev->dev,
477 mx3_camera_base, mx3_camera_base, 477 mx3_camera_base, mx3_camera_base,
478 MX3_CAMERA_BUF_SIZE, 478 MX3_CAMERA_BUF_SIZE);
479 DMA_MEMORY_EXCLUSIVE);
480 if (ret) 479 if (ret)
481 goto err; 480 goto err;
482 481
diff --git a/arch/arm/mach-imx/mmdc.c b/arch/arm/mach-imx/mmdc.c
index e49e06834516..fce4b426c379 100644
--- a/arch/arm/mach-imx/mmdc.c
+++ b/arch/arm/mach-imx/mmdc.c
@@ -294,13 +294,7 @@ static int mmdc_pmu_event_init(struct perf_event *event)
294 return -EOPNOTSUPP; 294 return -EOPNOTSUPP;
295 } 295 }
296 296
297 if (event->attr.exclude_user || 297 if (event->attr.sample_period)
298 event->attr.exclude_kernel ||
299 event->attr.exclude_hv ||
300 event->attr.exclude_idle ||
301 event->attr.exclude_host ||
302 event->attr.exclude_guest ||
303 event->attr.sample_period)
304 return -EINVAL; 298 return -EINVAL;
305 299
306 if (cfg < 0 || cfg >= MMDC_NUM_COUNTERS) 300 if (cfg < 0 || cfg >= MMDC_NUM_COUNTERS)
@@ -456,6 +450,7 @@ static int mmdc_pmu_init(struct mmdc_pmu *pmu_mmdc,
456 .start = mmdc_pmu_event_start, 450 .start = mmdc_pmu_event_start,
457 .stop = mmdc_pmu_event_stop, 451 .stop = mmdc_pmu_event_stop,
458 .read = mmdc_pmu_event_update, 452 .read = mmdc_pmu_event_update,
453 .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
459 }, 454 },
460 .mmdc_base = mmdc_base, 455 .mmdc_base = mmdc_base,
461 .dev = dev, 456 .dev = dev,
diff --git a/arch/arm/mach-imx/pm-imx7ulp.c b/arch/arm/mach-imx/pm-imx7ulp.c
index cf6a380c2b8d..7b2f7387e662 100644
--- a/arch/arm/mach-imx/pm-imx7ulp.c
+++ b/arch/arm/mach-imx/pm-imx7ulp.c
@@ -9,21 +9,60 @@
9#include <linux/of.h> 9#include <linux/of.h>
10#include <linux/of_address.h> 10#include <linux/of_address.h>
11 11
12#include "common.h"
13
12#define SMC_PMCTRL 0x10 14#define SMC_PMCTRL 0x10
13#define BP_PMCTRL_PSTOPO 16 15#define BP_PMCTRL_PSTOPO 16
14#define PSTOPO_PSTOP3 0x3 16#define PSTOPO_PSTOP3 0x3
17#define PSTOPO_PSTOP2 0x2
18#define PSTOPO_PSTOP1 0x1
19#define BP_PMCTRL_RUNM 8
20#define RUNM_RUN 0
21#define BP_PMCTRL_STOPM 0
22#define STOPM_STOP 0
23
24#define BM_PMCTRL_PSTOPO (3 << BP_PMCTRL_PSTOPO)
25#define BM_PMCTRL_RUNM (3 << BP_PMCTRL_RUNM)
26#define BM_PMCTRL_STOPM (7 << BP_PMCTRL_STOPM)
27
28static void __iomem *smc1_base;
29
30int imx7ulp_set_lpm(enum ulp_cpu_pwr_mode mode)
31{
32 u32 val = readl_relaxed(smc1_base + SMC_PMCTRL);
33
34 /* clear all */
35 val &= ~(BM_PMCTRL_RUNM | BM_PMCTRL_STOPM | BM_PMCTRL_PSTOPO);
36
37 switch (mode) {
38 case ULP_PM_RUN:
39 /* system/bus clock enabled */
40 val |= PSTOPO_PSTOP3 << BP_PMCTRL_PSTOPO;
41 break;
42 case ULP_PM_WAIT:
43 /* system clock disabled, bus clock enabled */
44 val |= PSTOPO_PSTOP2 << BP_PMCTRL_PSTOPO;
45 break;
46 case ULP_PM_STOP:
47 /* system/bus clock disabled */
48 val |= PSTOPO_PSTOP1 << BP_PMCTRL_PSTOPO;
49 break;
50 default:
51 return -EINVAL;
52 }
53
54 writel_relaxed(val, smc1_base + SMC_PMCTRL);
55
56 return 0;
57}
15 58
16void __init imx7ulp_pm_init(void) 59void __init imx7ulp_pm_init(void)
17{ 60{
18 struct device_node *np; 61 struct device_node *np;
19 void __iomem *smc1_base;
20 62
21 np = of_find_compatible_node(NULL, NULL, "fsl,imx7ulp-smc1"); 63 np = of_find_compatible_node(NULL, NULL, "fsl,imx7ulp-smc1");
22 smc1_base = of_iomap(np, 0); 64 smc1_base = of_iomap(np, 0);
23 WARN_ON(!smc1_base); 65 WARN_ON(!smc1_base);
24 66
25 /* Partial Stop mode 3 with system/bus clock enabled */ 67 imx7ulp_set_lpm(ULP_PM_RUN);
26 writel_relaxed(PSTOPO_PSTOP3 << BP_PMCTRL_PSTOPO,
27 smc1_base + SMC_PMCTRL);
28 iounmap(smc1_base);
29} 68}
diff --git a/arch/arm/mach-integrator/impd1.c b/arch/arm/mach-integrator/impd1.c
index a109f6482413..8dfad012dfae 100644
--- a/arch/arm/mach-integrator/impd1.c
+++ b/arch/arm/mach-integrator/impd1.c
@@ -390,10 +390,14 @@ static int __ref impd1_probe(struct lm_device *dev)
390 char *mmciname; 390 char *mmciname;
391 391
392 lookup = devm_kzalloc(&dev->dev, 392 lookup = devm_kzalloc(&dev->dev,
393 sizeof(*lookup) + 3 * sizeof(struct gpiod_lookup), 393 struct_size(lookup, table, 3),
394 GFP_KERNEL); 394 GFP_KERNEL);
395 chipname = devm_kstrdup(&dev->dev, devname, GFP_KERNEL); 395 chipname = devm_kstrdup(&dev->dev, devname, GFP_KERNEL);
396 mmciname = kasprintf(GFP_KERNEL, "lm%x:00700", dev->id); 396 mmciname = devm_kasprintf(&dev->dev, GFP_KERNEL,
397 "lm%x:00700", dev->id);
398 if (!lookup || !chipname || !mmciname)
399 return -ENOMEM;
400
397 lookup->dev_id = mmciname; 401 lookup->dev_id = mmciname;
398 /* 402 /*
399 * Offsets on GPIO block 1: 403 * Offsets on GPIO block 1:
diff --git a/arch/arm/mach-iop32x/n2100.c b/arch/arm/mach-iop32x/n2100.c
index 3b73813c6b04..23e8c93515d4 100644
--- a/arch/arm/mach-iop32x/n2100.c
+++ b/arch/arm/mach-iop32x/n2100.c
@@ -75,8 +75,7 @@ void __init n2100_map_io(void)
75/* 75/*
76 * N2100 PCI. 76 * N2100 PCI.
77 */ 77 */
78static int __init 78static int n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
79n2100_pci_map_irq(const struct pci_dev *dev, u8 slot, u8 pin)
80{ 79{
81 int irq; 80 int irq;
82 81
diff --git a/arch/arm/mach-ks8695/include/mach/entry-macro.S b/arch/arm/mach-ks8695/include/mach/entry-macro.S
index 8315b34f32ff..7ff812cb010b 100644
--- a/arch/arm/mach-ks8695/include/mach/entry-macro.S
+++ b/arch/arm/mach-ks8695/include/mach/entry-macro.S
@@ -42,6 +42,6 @@
42 moveq \irqstat, \irqstat, lsr #2 42 moveq \irqstat, \irqstat, lsr #2
43 addeq \irqnr, \irqnr, #2 43 addeq \irqnr, \irqnr, #2
44 tst \irqstat, #0x01 44 tst \irqstat, #0x01
45 addeqs \irqnr, \irqnr, #1 45 addseq \irqnr, \irqnr, #1
461001: 461001:
47 .endm 47 .endm
diff --git a/arch/arm/mach-lpc32xx/phy3250.c b/arch/arm/mach-lpc32xx/phy3250.c
index e48cc06c2aec..b3be60a8e467 100644
--- a/arch/arm/mach-lpc32xx/phy3250.c
+++ b/arch/arm/mach-lpc32xx/phy3250.c
@@ -45,73 +45,6 @@
45#include <mach/board.h> 45#include <mach/board.h>
46#include "common.h" 46#include "common.h"
47 47
48/*
49 * AMBA LCD controller
50 */
51static struct clcd_panel conn_lcd_panel = {
52 .mode = {
53 .name = "QVGA portrait",
54 .refresh = 60,
55 .xres = 240,
56 .yres = 320,
57 .pixclock = 191828,
58 .left_margin = 22,
59 .right_margin = 11,
60 .upper_margin = 2,
61 .lower_margin = 1,
62 .hsync_len = 5,
63 .vsync_len = 2,
64 .sync = 0,
65 .vmode = FB_VMODE_NONINTERLACED,
66 },
67 .width = -1,
68 .height = -1,
69 .tim2 = (TIM2_IVS | TIM2_IHS),
70 .cntl = (CNTL_BGR | CNTL_LCDTFT | CNTL_LCDVCOMP(1) |
71 CNTL_LCDBPP16_565),
72 .bpp = 16,
73};
74#define PANEL_SIZE (3 * SZ_64K)
75
76static int lpc32xx_clcd_setup(struct clcd_fb *fb)
77{
78 dma_addr_t dma;
79
80 fb->fb.screen_base = dma_alloc_wc(&fb->dev->dev, PANEL_SIZE, &dma,
81 GFP_KERNEL);
82 if (!fb->fb.screen_base) {
83 printk(KERN_ERR "CLCD: unable to map framebuffer\n");
84 return -ENOMEM;
85 }
86
87 fb->fb.fix.smem_start = dma;
88 fb->fb.fix.smem_len = PANEL_SIZE;
89 fb->panel = &conn_lcd_panel;
90
91 return 0;
92}
93
94static int lpc32xx_clcd_mmap(struct clcd_fb *fb, struct vm_area_struct *vma)
95{
96 return dma_mmap_wc(&fb->dev->dev, vma, fb->fb.screen_base,
97 fb->fb.fix.smem_start, fb->fb.fix.smem_len);
98}
99
100static void lpc32xx_clcd_remove(struct clcd_fb *fb)
101{
102 dma_free_wc(&fb->dev->dev, fb->fb.fix.smem_len, fb->fb.screen_base,
103 fb->fb.fix.smem_start);
104}
105
106static struct clcd_board lpc32xx_clcd_data = {
107 .name = "Phytec LCD",
108 .check = clcdfb_check,
109 .decode = clcdfb_decode,
110 .setup = lpc32xx_clcd_setup,
111 .mmap = lpc32xx_clcd_mmap,
112 .remove = lpc32xx_clcd_remove,
113};
114
115static struct pl08x_channel_data pl08x_slave_channels[] = { 48static struct pl08x_channel_data pl08x_slave_channels[] = {
116 { 49 {
117 .bus_id = "nand-slc", 50 .bus_id = "nand-slc",
@@ -148,11 +81,6 @@ static struct pl08x_platform_data pl08x_pd = {
148 .mem_buses = PL08X_AHB1, 81 .mem_buses = PL08X_AHB1,
149}; 82};
150 83
151static struct mmci_platform_data lpc32xx_mmci_data = {
152 .ocr_mask = MMC_VDD_30_31 | MMC_VDD_31_32 |
153 MMC_VDD_32_33 | MMC_VDD_33_34,
154};
155
156static struct lpc32xx_slc_platform_data lpc32xx_slc_data = { 84static struct lpc32xx_slc_platform_data lpc32xx_slc_data = {
157 .dma_filter = pl08x_filter_id, 85 .dma_filter = pl08x_filter_id,
158}; 86};
@@ -164,10 +92,7 @@ static struct lpc32xx_mlc_platform_data lpc32xx_mlc_data = {
164static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = { 92static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = {
165 OF_DEV_AUXDATA("arm,pl022", 0x20084000, "dev:ssp0", NULL), 93 OF_DEV_AUXDATA("arm,pl022", 0x20084000, "dev:ssp0", NULL),
166 OF_DEV_AUXDATA("arm,pl022", 0x2008C000, "dev:ssp1", NULL), 94 OF_DEV_AUXDATA("arm,pl022", 0x2008C000, "dev:ssp1", NULL),
167 OF_DEV_AUXDATA("arm,pl110", 0x31040000, "dev:clcd", &lpc32xx_clcd_data),
168 OF_DEV_AUXDATA("arm,pl080", 0x31000000, "pl08xdmac", &pl08x_pd), 95 OF_DEV_AUXDATA("arm,pl080", 0x31000000, "pl08xdmac", &pl08x_pd),
169 OF_DEV_AUXDATA("arm,pl18x", 0x20098000, "20098000.sd",
170 &lpc32xx_mmci_data),
171 OF_DEV_AUXDATA("nxp,lpc3220-slc", 0x20020000, "20020000.flash", 96 OF_DEV_AUXDATA("nxp,lpc3220-slc", 0x20020000, "20020000.flash",
172 &lpc32xx_slc_data), 97 &lpc32xx_slc_data),
173 OF_DEV_AUXDATA("nxp,lpc3220-mlc", 0x200a8000, "200a8000.flash", 98 OF_DEV_AUXDATA("nxp,lpc3220-mlc", 0x200a8000, "200a8000.flash",
@@ -177,15 +102,6 @@ static const struct of_dev_auxdata lpc32xx_auxdata_lookup[] __initconst = {
177 102
178static void __init lpc3250_machine_init(void) 103static void __init lpc3250_machine_init(void)
179{ 104{
180 u32 tmp;
181
182 /* Setup LCD muxing to RGB565 */
183 tmp = __raw_readl(LPC32XX_CLKPWR_LCDCLK_CTRL) &
184 ~(LPC32XX_CLKPWR_LCDCTRL_LCDTYPE_MSK |
185 LPC32XX_CLKPWR_LCDCTRL_PSCALE_MSK);
186 tmp |= LPC32XX_CLKPWR_LCDCTRL_LCDTYPE_TFT16;
187 __raw_writel(tmp, LPC32XX_CLKPWR_LCDCLK_CTRL);
188
189 lpc32xx_serial_init(); 105 lpc32xx_serial_init();
190 106
191 /* Test clock needed for UDA1380 initial init */ 107 /* Test clock needed for UDA1380 initial init */
diff --git a/arch/arm/mach-lpc32xx/pm.c b/arch/arm/mach-lpc32xx/pm.c
index 62471570d586..32bca351a73b 100644
--- a/arch/arm/mach-lpc32xx/pm.c
+++ b/arch/arm/mach-lpc32xx/pm.c
@@ -86,17 +86,10 @@ static int lpc32xx_pm_enter(suspend_state_t state)
86 void *iram_swap_area; 86 void *iram_swap_area;
87 87
88 /* Allocate some space for temporary IRAM storage */ 88 /* Allocate some space for temporary IRAM storage */
89 iram_swap_area = kmalloc(lpc32xx_sys_suspend_sz, GFP_KERNEL); 89 iram_swap_area = kmemdup((void *)TEMP_IRAM_AREA,
90 if (!iram_swap_area) { 90 lpc32xx_sys_suspend_sz, GFP_KERNEL);
91 printk(KERN_ERR 91 if (!iram_swap_area)
92 "PM Suspend: cannot allocate memory to save portion "
93 "of SRAM\n");
94 return -ENOMEM; 92 return -ENOMEM;
95 }
96
97 /* Backup a small area of IRAM used for the suspend code */
98 memcpy(iram_swap_area, (void *) TEMP_IRAM_AREA,
99 lpc32xx_sys_suspend_sz);
100 93
101 /* 94 /*
102 * Copy code to suspend system into IRAM. The suspend code 95 * Copy code to suspend system into IRAM. The suspend code
diff --git a/arch/arm/mach-mediatek/Kconfig b/arch/arm/mach-mediatek/Kconfig
index 91cc461f7b04..11ed264f0731 100644
--- a/arch/arm/mach-mediatek/Kconfig
+++ b/arch/arm/mach-mediatek/Kconfig
@@ -26,6 +26,10 @@ config MACH_MT7623
26 bool "MediaTek MT7623 SoCs support" 26 bool "MediaTek MT7623 SoCs support"
27 default ARCH_MEDIATEK 27 default ARCH_MEDIATEK
28 28
29config MACH_MT7629
30 bool "MediaTek MT7629 SoCs support"
31 default ARCH_MEDIATEK
32
29config MACH_MT8127 33config MACH_MT8127
30 bool "MediaTek MT8127 SoCs support" 34 bool "MediaTek MT8127 SoCs support"
31 default ARCH_MEDIATEK 35 default ARCH_MEDIATEK
diff --git a/arch/arm/mach-mediatek/mediatek.c b/arch/arm/mach-mediatek/mediatek.c
index 6910b4e0d913..b6a81ba1ce32 100644
--- a/arch/arm/mach-mediatek/mediatek.c
+++ b/arch/arm/mach-mediatek/mediatek.c
@@ -30,7 +30,6 @@ static void __init mediatek_timer_init(void)
30 30
31 if (of_machine_is_compatible("mediatek,mt6589") || 31 if (of_machine_is_compatible("mediatek,mt6589") ||
32 of_machine_is_compatible("mediatek,mt7623") || 32 of_machine_is_compatible("mediatek,mt7623") ||
33 of_machine_is_compatible("mediatek,mt7623a") ||
34 of_machine_is_compatible("mediatek,mt8135") || 33 of_machine_is_compatible("mediatek,mt8135") ||
35 of_machine_is_compatible("mediatek,mt8127")) { 34 of_machine_is_compatible("mediatek,mt8127")) {
36 /* turn on GPT6 which ungates arch timer clocks */ 35 /* turn on GPT6 which ungates arch timer clocks */
@@ -50,7 +49,7 @@ static const char * const mediatek_board_dt_compat[] = {
50 "mediatek,mt6589", 49 "mediatek,mt6589",
51 "mediatek,mt6592", 50 "mediatek,mt6592",
52 "mediatek,mt7623", 51 "mediatek,mt7623",
53 "mediatek,mt7623a", 52 "mediatek,mt7629",
54 "mediatek,mt8127", 53 "mediatek,mt8127",
55 "mediatek,mt8135", 54 "mediatek,mt8135",
56 NULL, 55 NULL,
diff --git a/arch/arm/mach-mediatek/platsmp.c b/arch/arm/mach-mediatek/platsmp.c
index 6882ff07aaa6..c9d7c0458452 100644
--- a/arch/arm/mach-mediatek/platsmp.c
+++ b/arch/arm/mach-mediatek/platsmp.c
@@ -60,7 +60,7 @@ static const struct of_device_id mtk_tz_smp_boot_infos[] __initconst = {
60static const struct of_device_id mtk_smp_boot_infos[] __initconst = { 60static const struct of_device_id mtk_smp_boot_infos[] __initconst = {
61 { .compatible = "mediatek,mt6589", .data = &mtk_mt6589_boot }, 61 { .compatible = "mediatek,mt6589", .data = &mtk_mt6589_boot },
62 { .compatible = "mediatek,mt7623", .data = &mtk_mt7623_boot }, 62 { .compatible = "mediatek,mt7623", .data = &mtk_mt7623_boot },
63 { .compatible = "mediatek,mt7623a", .data = &mtk_mt7623_boot }, 63 { .compatible = "mediatek,mt7629", .data = &mtk_mt7623_boot },
64 {}, 64 {},
65}; 65};
66 66
diff --git a/arch/arm/mach-meson/Kconfig b/arch/arm/mach-meson/Kconfig
index b16831697183..15e9cb75738e 100644
--- a/arch/arm/mach-meson/Kconfig
+++ b/arch/arm/mach-meson/Kconfig
@@ -9,7 +9,6 @@ menuconfig ARCH_MESON
9 select PINCTRL 9 select PINCTRL
10 select PINCTRL_MESON 10 select PINCTRL_MESON
11 select COMMON_CLK 11 select COMMON_CLK
12 select COMMON_CLK_AMLOGIC
13 select HAVE_ARM_SCU if SMP 12 select HAVE_ARM_SCU if SMP
14 select HAVE_ARM_TWD if SMP 13 select HAVE_ARM_TWD if SMP
15 14
diff --git a/arch/arm/mach-milbeaut/Kconfig b/arch/arm/mach-milbeaut/Kconfig
new file mode 100644
index 000000000000..6a576fd8521e
--- /dev/null
+++ b/arch/arm/mach-milbeaut/Kconfig
@@ -0,0 +1,20 @@
1# SPDX-License-Identifier: GPL-2.0
2menuconfig ARCH_MILBEAUT
3 bool "Socionext Milbeaut SoCs"
4 depends on ARCH_MULTI_V7
5 select ARM_GIC
6 help
7 This enables support for Socionext Milbeaut SoCs
8
9if ARCH_MILBEAUT
10
11config ARCH_MILBEAUT_M10V
12 bool "Milbeaut SC2000/M10V platform"
13 select ARM_ARCH_TIMER
14 select MILBEAUT_TIMER
15 select PINCTRL
16 select PINCTRL_MILBEAUT
17 help
18 Support for Socionext's MILBEAUT M10V based systems
19
20endif
diff --git a/arch/arm/mach-milbeaut/Makefile b/arch/arm/mach-milbeaut/Makefile
new file mode 100644
index 000000000000..ce5ea062047a
--- /dev/null
+++ b/arch/arm/mach-milbeaut/Makefile
@@ -0,0 +1 @@
obj-$(CONFIG_SMP) += platsmp.o
diff --git a/arch/arm/mach-milbeaut/platsmp.c b/arch/arm/mach-milbeaut/platsmp.c
new file mode 100644
index 000000000000..591543c81399
--- /dev/null
+++ b/arch/arm/mach-milbeaut/platsmp.c
@@ -0,0 +1,143 @@
1// SPDX-License-Identifier: GPL-2.0
2/*
3 * Copyright: (C) 2018 Socionext Inc.
4 * Copyright: (C) 2015 Linaro Ltd.
5 */
6
7#include <linux/cpu_pm.h>
8#include <linux/irqchip/arm-gic.h>
9#include <linux/of_address.h>
10#include <linux/suspend.h>
11
12#include <asm/cacheflush.h>
13#include <asm/cp15.h>
14#include <asm/idmap.h>
15#include <asm/smp_plat.h>
16#include <asm/suspend.h>
17
18#define M10V_MAX_CPU 4
19#define KERNEL_UNBOOT_FLAG 0x12345678
20
21static void __iomem *m10v_smp_base;
22
23static int m10v_boot_secondary(unsigned int l_cpu, struct task_struct *idle)
24{
25 unsigned int mpidr, cpu, cluster;
26
27 if (!m10v_smp_base)
28 return -ENXIO;
29
30 mpidr = cpu_logical_map(l_cpu);
31 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
32 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
33
34 if (cpu >= M10V_MAX_CPU)
35 return -EINVAL;
36
37 pr_info("%s: cpu %u l_cpu %u cluster %u\n",
38 __func__, cpu, l_cpu, cluster);
39
40 writel(__pa_symbol(secondary_startup), m10v_smp_base + cpu * 4);
41 arch_send_wakeup_ipi_mask(cpumask_of(l_cpu));
42
43 return 0;
44}
45
46static void m10v_smp_init(unsigned int max_cpus)
47{
48 unsigned int mpidr, cpu, cluster;
49 struct device_node *np;
50
51 np = of_find_compatible_node(NULL, NULL, "socionext,milbeaut-smp-sram");
52 if (!np)
53 return;
54
55 m10v_smp_base = of_iomap(np, 0);
56 if (!m10v_smp_base)
57 return;
58
59 mpidr = read_cpuid_mpidr();
60 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
61 cluster = MPIDR_AFFINITY_LEVEL(mpidr, 1);
62 pr_info("MCPM boot on cpu_%u cluster_%u\n", cpu, cluster);
63
64 for (cpu = 0; cpu < M10V_MAX_CPU; cpu++)
65 writel(KERNEL_UNBOOT_FLAG, m10v_smp_base + cpu * 4);
66}
67
68static void m10v_cpu_die(unsigned int l_cpu)
69{
70 gic_cpu_if_down(0);
71 v7_exit_coherency_flush(louis);
72 wfi();
73}
74
75static int m10v_cpu_kill(unsigned int l_cpu)
76{
77 unsigned int mpidr, cpu;
78
79 mpidr = cpu_logical_map(l_cpu);
80 cpu = MPIDR_AFFINITY_LEVEL(mpidr, 0);
81
82 writel(KERNEL_UNBOOT_FLAG, m10v_smp_base + cpu * 4);
83
84 return 1;
85}
86
87static struct smp_operations m10v_smp_ops __initdata = {
88 .smp_prepare_cpus = m10v_smp_init,
89 .smp_boot_secondary = m10v_boot_secondary,
90 .cpu_die = m10v_cpu_die,
91 .cpu_kill = m10v_cpu_kill,
92};
93CPU_METHOD_OF_DECLARE(m10v_smp, "socionext,milbeaut-m10v-smp", &m10v_smp_ops);
94
95static int m10v_pm_valid(suspend_state_t state)
96{
97 return (state == PM_SUSPEND_STANDBY) || (state == PM_SUSPEND_MEM);
98}
99
100typedef void (*phys_reset_t)(unsigned long);
101static phys_reset_t phys_reset;
102
103static int m10v_die(unsigned long arg)
104{
105 setup_mm_for_reboot();
106 asm("wfi");
107 /* Boot just like a secondary */
108 phys_reset = (phys_reset_t)(unsigned long)virt_to_phys(cpu_reset);
109 phys_reset(virt_to_phys(cpu_resume));
110
111 return 0;
112}
113
114static int m10v_pm_enter(suspend_state_t state)
115{
116 switch (state) {
117 case PM_SUSPEND_STANDBY:
118 asm("wfi");
119 break;
120 case PM_SUSPEND_MEM:
121 cpu_pm_enter();
122 cpu_suspend(0, m10v_die);
123 cpu_pm_exit();
124 break;
125 }
126 return 0;
127}
128
129static const struct platform_suspend_ops m10v_pm_ops = {
130 .valid = m10v_pm_valid,
131 .enter = m10v_pm_enter,
132};
133
134struct clk *m10v_clclk_register(struct device *cpu_dev);
135
136static int __init m10v_pm_init(void)
137{
138 if (of_machine_is_compatible("socionext,milbeaut-evb"))
139 suspend_set_ops(&m10v_pm_ops);
140
141 return 0;
142}
143late_initcall(m10v_pm_init);
diff --git a/arch/arm/mach-mmp/brownstone.c b/arch/arm/mach-mmp/brownstone.c
index a04e249c654b..d2560fb1e835 100644
--- a/arch/arm/mach-mmp/brownstone.c
+++ b/arch/arm/mach-mmp/brownstone.c
@@ -149,7 +149,6 @@ static struct regulator_init_data brownstone_v_5vp_data = {
149static struct fixed_voltage_config brownstone_v_5vp = { 149static struct fixed_voltage_config brownstone_v_5vp = {
150 .supply_name = "v_5vp", 150 .supply_name = "v_5vp",
151 .microvolts = 5000000, 151 .microvolts = 5000000,
152 .enable_high = 1,
153 .enabled_at_boot = 1, 152 .enabled_at_boot = 1,
154 .init_data = &brownstone_v_5vp_data, 153 .init_data = &brownstone_v_5vp_data,
155}; 154};
diff --git a/arch/arm/mach-omap1/board-ams-delta.c b/arch/arm/mach-omap1/board-ams-delta.c
index c4c0a8ea11e4..be30c3c061b4 100644
--- a/arch/arm/mach-omap1/board-ams-delta.c
+++ b/arch/arm/mach-omap1/board-ams-delta.c
@@ -267,7 +267,6 @@ static struct fixed_voltage_config modem_nreset_config = {
267 .supply_name = "modem_nreset", 267 .supply_name = "modem_nreset",
268 .microvolts = 3300000, 268 .microvolts = 3300000,
269 .startup_delay = 25000, 269 .startup_delay = 25000,
270 .enable_high = 1,
271 .enabled_at_boot = 1, 270 .enabled_at_boot = 1,
272 .init_data = &modem_nreset_data, 271 .init_data = &modem_nreset_data,
273}; 272};
@@ -533,7 +532,6 @@ static struct regulator_init_data keybrd_pwr_initdata = {
533static struct fixed_voltage_config keybrd_pwr_config = { 532static struct fixed_voltage_config keybrd_pwr_config = {
534 .supply_name = "keybrd_pwr", 533 .supply_name = "keybrd_pwr",
535 .microvolts = 5000000, 534 .microvolts = 5000000,
536 .enable_high = 1,
537 .init_data = &keybrd_pwr_initdata, 535 .init_data = &keybrd_pwr_initdata,
538}; 536};
539 537
diff --git a/arch/arm/mach-omap1/board-nokia770.c b/arch/arm/mach-omap1/board-nokia770.c
index eb41db78cd47..10848f573d37 100644
--- a/arch/arm/mach-omap1/board-nokia770.c
+++ b/arch/arm/mach-omap1/board-nokia770.c
@@ -10,6 +10,7 @@
10#include <linux/clkdev.h> 10#include <linux/clkdev.h>
11#include <linux/irq.h> 11#include <linux/irq.h>
12#include <linux/gpio.h> 12#include <linux/gpio.h>
13#include <linux/gpio/machine.h>
13#include <linux/kernel.h> 14#include <linux/kernel.h>
14#include <linux/init.h> 15#include <linux/init.h>
15#include <linux/mutex.h> 16#include <linux/mutex.h>
@@ -25,7 +26,6 @@
25#include <linux/platform_data/keypad-omap.h> 26#include <linux/platform_data/keypad-omap.h>
26#include <linux/platform_data/lcd-mipid.h> 27#include <linux/platform_data/lcd-mipid.h>
27#include <linux/platform_data/gpio-omap.h> 28#include <linux/platform_data/gpio-omap.h>
28#include <linux/platform_data/i2c-cbus-gpio.h>
29 29
30#include <asm/mach-types.h> 30#include <asm/mach-types.h>
31#include <asm/mach/arch.h> 31#include <asm/mach/arch.h>
@@ -217,18 +217,19 @@ static inline void nokia770_mmc_init(void)
217#endif 217#endif
218 218
219#if IS_ENABLED(CONFIG_I2C_CBUS_GPIO) 219#if IS_ENABLED(CONFIG_I2C_CBUS_GPIO)
220static struct i2c_cbus_platform_data nokia770_cbus_data = { 220static struct gpiod_lookup_table nokia770_cbus_gpio_table = {
221 .clk_gpio = OMAP_MPUIO(9), 221 .dev_id = "i2c-cbus-gpio.2",
222 .dat_gpio = OMAP_MPUIO(10), 222 .table = {
223 .sel_gpio = OMAP_MPUIO(11), 223 GPIO_LOOKUP_IDX("mpuio", 9, NULL, 0, 0), /* clk */
224 GPIO_LOOKUP_IDX("mpuio", 10, NULL, 1, 0), /* dat */
225 GPIO_LOOKUP_IDX("mpuio", 11, NULL, 2, 0), /* sel */
226 { },
227 },
224}; 228};
225 229
226static struct platform_device nokia770_cbus_device = { 230static struct platform_device nokia770_cbus_device = {
227 .name = "i2c-cbus-gpio", 231 .name = "i2c-cbus-gpio",
228 .id = 2, 232 .id = 2,
229 .dev = {
230 .platform_data = &nokia770_cbus_data,
231 },
232}; 233};
233 234
234static struct i2c_board_info nokia770_i2c_board_info_2[] __initdata = { 235static struct i2c_board_info nokia770_i2c_board_info_2[] __initdata = {
@@ -257,6 +258,7 @@ static void __init nokia770_cbus_init(void)
257 nokia770_i2c_board_info_2[1].irq = gpio_to_irq(tahvo_irq_gpio); 258 nokia770_i2c_board_info_2[1].irq = gpio_to_irq(tahvo_irq_gpio);
258 i2c_register_board_info(2, nokia770_i2c_board_info_2, 259 i2c_register_board_info(2, nokia770_i2c_board_info_2,
259 ARRAY_SIZE(nokia770_i2c_board_info_2)); 260 ARRAY_SIZE(nokia770_i2c_board_info_2));
261 gpiod_add_lookup_table(&nokia770_cbus_gpio_table);
260 platform_device_register(&nokia770_cbus_device); 262 platform_device_register(&nokia770_cbus_device);
261} 263}
262#else /* CONFIG_I2C_CBUS_GPIO */ 264#else /* CONFIG_I2C_CBUS_GPIO */
diff --git a/arch/arm/mach-omap2/cpuidle44xx.c b/arch/arm/mach-omap2/cpuidle44xx.c
index a8b291f00109..dae514c8276a 100644
--- a/arch/arm/mach-omap2/cpuidle44xx.c
+++ b/arch/arm/mach-omap2/cpuidle44xx.c
@@ -152,6 +152,10 @@ static int omap_enter_idle_coupled(struct cpuidle_device *dev,
152 mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) && 152 mpuss_can_lose_context = (cx->mpu_state == PWRDM_POWER_RET) &&
153 (cx->mpu_logic_state == PWRDM_POWER_OFF); 153 (cx->mpu_logic_state == PWRDM_POWER_OFF);
154 154
155 /* Enter broadcast mode for periodic timers */
156 tick_broadcast_enable();
157
158 /* Enter broadcast mode for one-shot timers */
155 tick_broadcast_enter(); 159 tick_broadcast_enter();
156 160
157 /* 161 /*
@@ -218,15 +222,6 @@ fail:
218 return index; 222 return index;
219} 223}
220 224
221/*
222 * For each cpu, setup the broadcast timer because local timers
223 * stops for the states above C1.
224 */
225static void omap_setup_broadcast_timer(void *arg)
226{
227 tick_broadcast_enable();
228}
229
230static struct cpuidle_driver omap4_idle_driver = { 225static struct cpuidle_driver omap4_idle_driver = {
231 .name = "omap4_idle", 226 .name = "omap4_idle",
232 .owner = THIS_MODULE, 227 .owner = THIS_MODULE,
@@ -319,8 +314,5 @@ int __init omap4_idle_init(void)
319 if (!cpu_clkdm[0] || !cpu_clkdm[1]) 314 if (!cpu_clkdm[0] || !cpu_clkdm[1])
320 return -ENODEV; 315 return -ENODEV;
321 316
322 /* Configure the broadcast timer on each cpu */
323 on_each_cpu(omap_setup_broadcast_timer, NULL, 1);
324
325 return cpuidle_register(idle_driver, cpu_online_mask); 317 return cpuidle_register(idle_driver, cpu_online_mask);
326} 318}
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index f86b72d1d59e..1444b4b4bd9f 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -83,6 +83,7 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
83 u32 enable_mask, enable_shift; 83 u32 enable_mask, enable_shift;
84 u32 pipd_mask, pipd_shift; 84 u32 pipd_mask, pipd_shift;
85 u32 reg; 85 u32 reg;
86 int ret;
86 87
87 if (dsi_id == 0) { 88 if (dsi_id == 0) {
88 enable_mask = OMAP4_DSI1_LANEENABLE_MASK; 89 enable_mask = OMAP4_DSI1_LANEENABLE_MASK;
@@ -98,7 +99,11 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
98 return -ENODEV; 99 return -ENODEV;
99 } 100 }
100 101
101 regmap_read(omap4_dsi_mux_syscon, OMAP4_DSIPHY_SYSCON_OFFSET, &reg); 102 ret = regmap_read(omap4_dsi_mux_syscon,
103 OMAP4_DSIPHY_SYSCON_OFFSET,
104 &reg);
105 if (ret)
106 return ret;
102 107
103 reg &= ~enable_mask; 108 reg &= ~enable_mask;
104 reg &= ~pipd_mask; 109 reg &= ~pipd_mask;
diff --git a/arch/arm/mach-omap2/omap-wakeupgen.c b/arch/arm/mach-omap2/omap-wakeupgen.c
index fc5fb776a710..17558be4bf0a 100644
--- a/arch/arm/mach-omap2/omap-wakeupgen.c
+++ b/arch/arm/mach-omap2/omap-wakeupgen.c
@@ -50,6 +50,9 @@
50#define OMAP4_NR_BANKS 4 50#define OMAP4_NR_BANKS 4
51#define OMAP4_NR_IRQS 128 51#define OMAP4_NR_IRQS 128
52 52
53#define SYS_NIRQ1_EXT_SYS_IRQ_1 7
54#define SYS_NIRQ2_EXT_SYS_IRQ_2 119
55
53static void __iomem *wakeupgen_base; 56static void __iomem *wakeupgen_base;
54static void __iomem *sar_base; 57static void __iomem *sar_base;
55static DEFINE_RAW_SPINLOCK(wakeupgen_lock); 58static DEFINE_RAW_SPINLOCK(wakeupgen_lock);
@@ -153,6 +156,37 @@ static void wakeupgen_unmask(struct irq_data *d)
153 irq_chip_unmask_parent(d); 156 irq_chip_unmask_parent(d);
154} 157}
155 158
159/*
160 * The sys_nirq pins bypass peripheral modules and are wired directly
161 * to MPUSS wakeupgen. They get automatically inverted for GIC.
162 */
163static int wakeupgen_irq_set_type(struct irq_data *d, unsigned int type)
164{
165 bool inverted = false;
166
167 switch (type) {
168 case IRQ_TYPE_LEVEL_LOW:
169 type &= ~IRQ_TYPE_LEVEL_MASK;
170 type |= IRQ_TYPE_LEVEL_HIGH;
171 inverted = true;
172 break;
173 case IRQ_TYPE_EDGE_FALLING:
174 type &= ~IRQ_TYPE_EDGE_BOTH;
175 type |= IRQ_TYPE_EDGE_RISING;
176 inverted = true;
177 break;
178 default:
179 break;
180 }
181
182 if (inverted && d->hwirq != SYS_NIRQ1_EXT_SYS_IRQ_1 &&
183 d->hwirq != SYS_NIRQ2_EXT_SYS_IRQ_2)
184 pr_warn("wakeupgen: irq%li polarity inverted in dts\n",
185 d->hwirq);
186
187 return irq_chip_set_type_parent(d, type);
188}
189
156#ifdef CONFIG_HOTPLUG_CPU 190#ifdef CONFIG_HOTPLUG_CPU
157static DEFINE_PER_CPU(u32 [MAX_NR_REG_BANKS], irqmasks); 191static DEFINE_PER_CPU(u32 [MAX_NR_REG_BANKS], irqmasks);
158 192
@@ -446,7 +480,7 @@ static struct irq_chip wakeupgen_chip = {
446 .irq_mask = wakeupgen_mask, 480 .irq_mask = wakeupgen_mask,
447 .irq_unmask = wakeupgen_unmask, 481 .irq_unmask = wakeupgen_unmask,
448 .irq_retrigger = irq_chip_retrigger_hierarchy, 482 .irq_retrigger = irq_chip_retrigger_hierarchy,
449 .irq_set_type = irq_chip_set_type_parent, 483 .irq_set_type = wakeupgen_irq_set_type,
450 .flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND, 484 .flags = IRQCHIP_SKIP_SET_WAKE | IRQCHIP_MASK_ON_SUSPEND,
451#ifdef CONFIG_SMP 485#ifdef CONFIG_SMP
452 .irq_set_affinity = irq_chip_set_affinity_parent, 486 .irq_set_affinity = irq_chip_set_affinity_parent,
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index b5531dd3ae9c..3a04c73ac03c 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -1002,8 +1002,10 @@ static int _enable_clocks(struct omap_hwmod *oh)
1002 clk_enable(oh->_clk); 1002 clk_enable(oh->_clk);
1003 1003
1004 list_for_each_entry(os, &oh->slave_ports, node) { 1004 list_for_each_entry(os, &oh->slave_ports, node) {
1005 if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) 1005 if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) {
1006 omap2_clk_deny_idle(os->_clk);
1006 clk_enable(os->_clk); 1007 clk_enable(os->_clk);
1008 }
1007 } 1009 }
1008 1010
1009 /* The opt clocks are controlled by the device driver. */ 1011 /* The opt clocks are controlled by the device driver. */
@@ -1055,8 +1057,10 @@ static int _disable_clocks(struct omap_hwmod *oh)
1055 clk_disable(oh->_clk); 1057 clk_disable(oh->_clk);
1056 1058
1057 list_for_each_entry(os, &oh->slave_ports, node) { 1059 list_for_each_entry(os, &oh->slave_ports, node) {
1058 if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) 1060 if (os->_clk && (os->flags & OCPIF_SWSUP_IDLE)) {
1059 clk_disable(os->_clk); 1061 clk_disable(os->_clk);
1062 omap2_clk_allow_idle(os->_clk);
1063 }
1060 } 1064 }
1061 1065
1062 if (oh->flags & HWMOD_OPT_CLKS_NEEDED) 1066 if (oh->flags & HWMOD_OPT_CLKS_NEEDED)
@@ -2436,9 +2440,13 @@ static void _setup_iclk_autoidle(struct omap_hwmod *oh)
2436 continue; 2440 continue;
2437 2441
2438 if (os->flags & OCPIF_SWSUP_IDLE) { 2442 if (os->flags & OCPIF_SWSUP_IDLE) {
2439 /* XXX omap_iclk_deny_idle(c); */ 2443 /*
2444 * we might have multiple users of one iclk with
2445 * different requirements, disable autoidle when
2446 * the module is enabled, e.g. dss iclk
2447 */
2440 } else { 2448 } else {
2441 /* XXX omap_iclk_allow_idle(c); */ 2449 /* we are enabling autoidle afterwards anyways */
2442 clk_enable(os->_clk); 2450 clk_enable(os->_clk);
2443 } 2451 }
2444 } 2452 }
diff --git a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
index 8e44e2728620..debcd88ab971 100644
--- a/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_81xx_data.c
@@ -432,6 +432,13 @@ static struct omap_hwmod dm81xx_i2c2_hwmod = {
432 .class = &i2c_class, 432 .class = &i2c_class,
433}; 433};
434 434
435static struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c2 = {
436 .master = &dm81xx_l4_ls_hwmod,
437 .slave = &dm81xx_i2c2_hwmod,
438 .clk = "sysclk6_ck",
439 .user = OCP_USER_MPU,
440};
441
435static struct omap_hwmod_class_sysconfig dm81xx_elm_sysc = { 442static struct omap_hwmod_class_sysconfig dm81xx_elm_sysc = {
436 .rev_offs = 0x0000, 443 .rev_offs = 0x0000,
437 .sysc_offs = 0x0010, 444 .sysc_offs = 0x0010,
@@ -443,13 +450,6 @@ static struct omap_hwmod_class_sysconfig dm81xx_elm_sysc = {
443 .sysc_fields = &omap_hwmod_sysc_type1, 450 .sysc_fields = &omap_hwmod_sysc_type1,
444}; 451};
445 452
446static struct omap_hwmod_ocp_if dm81xx_l4_ls__i2c2 = {
447 .master = &dm81xx_l4_ls_hwmod,
448 .slave = &dm81xx_i2c2_hwmod,
449 .clk = "sysclk6_ck",
450 .user = OCP_USER_MPU,
451};
452
453static struct omap_hwmod_class dm81xx_elm_hwmod_class = { 453static struct omap_hwmod_class dm81xx_elm_hwmod_class = {
454 .name = "elm", 454 .name = "elm",
455 .sysc = &dm81xx_elm_sysc, 455 .sysc = &dm81xx_elm_sysc,
@@ -539,6 +539,58 @@ static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio2 = {
539 .user = OCP_USER_MPU, 539 .user = OCP_USER_MPU,
540}; 540};
541 541
542static struct omap_hwmod_opt_clk gpio3_opt_clks[] = {
543 { .role = "dbclk", .clk = "sysclk18_ck" },
544};
545
546static struct omap_hwmod dm81xx_gpio3_hwmod = {
547 .name = "gpio3",
548 .clkdm_name = "alwon_l3s_clkdm",
549 .class = &dm81xx_gpio_hwmod_class,
550 .main_clk = "sysclk6_ck",
551 .prcm = {
552 .omap4 = {
553 .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
554 .modulemode = MODULEMODE_SWCTRL,
555 },
556 },
557 .opt_clks = gpio3_opt_clks,
558 .opt_clks_cnt = ARRAY_SIZE(gpio3_opt_clks),
559};
560
561static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio3 = {
562 .master = &dm81xx_l4_ls_hwmod,
563 .slave = &dm81xx_gpio3_hwmod,
564 .clk = "sysclk6_ck",
565 .user = OCP_USER_MPU,
566};
567
568static struct omap_hwmod_opt_clk gpio4_opt_clks[] = {
569 { .role = "dbclk", .clk = "sysclk18_ck" },
570};
571
572static struct omap_hwmod dm81xx_gpio4_hwmod = {
573 .name = "gpio4",
574 .clkdm_name = "alwon_l3s_clkdm",
575 .class = &dm81xx_gpio_hwmod_class,
576 .main_clk = "sysclk6_ck",
577 .prcm = {
578 .omap4 = {
579 .clkctrl_offs = DM81XX_CM_ALWON_GPIO_1_CLKCTRL,
580 .modulemode = MODULEMODE_SWCTRL,
581 },
582 },
583 .opt_clks = gpio4_opt_clks,
584 .opt_clks_cnt = ARRAY_SIZE(gpio4_opt_clks),
585};
586
587static struct omap_hwmod_ocp_if dm81xx_l4_ls__gpio4 = {
588 .master = &dm81xx_l4_ls_hwmod,
589 .slave = &dm81xx_gpio4_hwmod,
590 .clk = "sysclk6_ck",
591 .user = OCP_USER_MPU,
592};
593
542static struct omap_hwmod_class_sysconfig dm81xx_gpmc_sysc = { 594static struct omap_hwmod_class_sysconfig dm81xx_gpmc_sysc = {
543 .rev_offs = 0x0, 595 .rev_offs = 0x0,
544 .sysc_offs = 0x10, 596 .sysc_offs = 0x10,
@@ -1133,6 +1185,45 @@ static struct omap_hwmod dm81xx_mcspi1_hwmod = {
1133 .class = &dm816x_mcspi_class, 1185 .class = &dm816x_mcspi_class,
1134}; 1186};
1135 1187
1188static struct omap_hwmod dm81xx_mcspi2_hwmod = {
1189 .name = "mcspi2",
1190 .clkdm_name = "alwon_l3s_clkdm",
1191 .main_clk = "sysclk10_ck",
1192 .prcm = {
1193 .omap4 = {
1194 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1195 .modulemode = MODULEMODE_SWCTRL,
1196 },
1197 },
1198 .class = &dm816x_mcspi_class,
1199};
1200
1201static struct omap_hwmod dm81xx_mcspi3_hwmod = {
1202 .name = "mcspi3",
1203 .clkdm_name = "alwon_l3s_clkdm",
1204 .main_clk = "sysclk10_ck",
1205 .prcm = {
1206 .omap4 = {
1207 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1208 .modulemode = MODULEMODE_SWCTRL,
1209 },
1210 },
1211 .class = &dm816x_mcspi_class,
1212};
1213
1214static struct omap_hwmod dm81xx_mcspi4_hwmod = {
1215 .name = "mcspi4",
1216 .clkdm_name = "alwon_l3s_clkdm",
1217 .main_clk = "sysclk10_ck",
1218 .prcm = {
1219 .omap4 = {
1220 .clkctrl_offs = DM81XX_CM_ALWON_SPI_CLKCTRL,
1221 .modulemode = MODULEMODE_SWCTRL,
1222 },
1223 },
1224 .class = &dm816x_mcspi_class,
1225};
1226
1136static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi1 = { 1227static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi1 = {
1137 .master = &dm81xx_l4_ls_hwmod, 1228 .master = &dm81xx_l4_ls_hwmod,
1138 .slave = &dm81xx_mcspi1_hwmod, 1229 .slave = &dm81xx_mcspi1_hwmod,
@@ -1140,6 +1231,27 @@ static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi1 = {
1140 .user = OCP_USER_MPU, 1231 .user = OCP_USER_MPU,
1141}; 1232};
1142 1233
1234static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi2 = {
1235 .master = &dm81xx_l4_ls_hwmod,
1236 .slave = &dm81xx_mcspi2_hwmod,
1237 .clk = "sysclk6_ck",
1238 .user = OCP_USER_MPU,
1239};
1240
1241static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi3 = {
1242 .master = &dm81xx_l4_ls_hwmod,
1243 .slave = &dm81xx_mcspi3_hwmod,
1244 .clk = "sysclk6_ck",
1245 .user = OCP_USER_MPU,
1246};
1247
1248static struct omap_hwmod_ocp_if dm81xx_l4_ls__mcspi4 = {
1249 .master = &dm81xx_l4_ls_hwmod,
1250 .slave = &dm81xx_mcspi4_hwmod,
1251 .clk = "sysclk6_ck",
1252 .user = OCP_USER_MPU,
1253};
1254
1143static struct omap_hwmod_class_sysconfig dm81xx_mailbox_sysc = { 1255static struct omap_hwmod_class_sysconfig dm81xx_mailbox_sysc = {
1144 .rev_offs = 0x000, 1256 .rev_offs = 0x000,
1145 .sysc_offs = 0x010, 1257 .sysc_offs = 0x010,
@@ -1378,8 +1490,13 @@ static struct omap_hwmod_ocp_if *dm814x_hwmod_ocp_ifs[] __initdata = {
1378 &dm81xx_l4_ls__i2c2, 1490 &dm81xx_l4_ls__i2c2,
1379 &dm81xx_l4_ls__gpio1, 1491 &dm81xx_l4_ls__gpio1,
1380 &dm81xx_l4_ls__gpio2, 1492 &dm81xx_l4_ls__gpio2,
1493 &dm81xx_l4_ls__gpio3,
1494 &dm81xx_l4_ls__gpio4,
1381 &dm81xx_l4_ls__elm, 1495 &dm81xx_l4_ls__elm,
1382 &dm81xx_l4_ls__mcspi1, 1496 &dm81xx_l4_ls__mcspi1,
1497 &dm81xx_l4_ls__mcspi2,
1498 &dm81xx_l4_ls__mcspi3,
1499 &dm81xx_l4_ls__mcspi4,
1383 &dm814x_l4_ls__mmc1, 1500 &dm814x_l4_ls__mmc1,
1384 &dm814x_l4_ls__mmc2, 1501 &dm814x_l4_ls__mmc2,
1385 &ti81xx_l4_ls__rtc, 1502 &ti81xx_l4_ls__rtc,
diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
index 8a5b6ed4ec36..a2ecc5e69abb 100644
--- a/arch/arm/mach-omap2/pdata-quirks.c
+++ b/arch/arm/mach-omap2/pdata-quirks.c
@@ -330,7 +330,6 @@ static struct fixed_voltage_config pandora_vwlan = {
330 .supply_name = "vwlan", 330 .supply_name = "vwlan",
331 .microvolts = 1800000, /* 1.8V */ 331 .microvolts = 1800000, /* 1.8V */
332 .startup_delay = 50000, /* 50ms */ 332 .startup_delay = 50000, /* 50ms */
333 .enable_high = 1,
334 .init_data = &pandora_vmmc3, 333 .init_data = &pandora_vmmc3,
335}; 334};
336 335
diff --git a/arch/arm/mach-omap2/prm_common.c b/arch/arm/mach-omap2/prm_common.c
index 058a37e6d11c..fd6e0671f957 100644
--- a/arch/arm/mach-omap2/prm_common.c
+++ b/arch/arm/mach-omap2/prm_common.c
@@ -523,8 +523,10 @@ void omap_prm_reset_system(void)
523 523
524 prm_ll_data->reset_system(); 524 prm_ll_data->reset_system();
525 525
526 while (1) 526 while (1) {
527 cpu_relax(); 527 cpu_relax();
528 wfe();
529 }
528} 530}
529 531
530/** 532/**
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c
index 83a7ec4c16d0..c67f92bfa30e 100644
--- a/arch/arm/mach-orion5x/common.c
+++ b/arch/arm/mach-orion5x/common.c
@@ -20,7 +20,7 @@
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/clk-provider.h> 21#include <linux/clk-provider.h>
22#include <linux/cpu.h> 22#include <linux/cpu.h>
23#include <net/dsa.h> 23#include <linux/platform_data/dsa.h>
24#include <asm/page.h> 24#include <asm/page.h>
25#include <asm/setup.h> 25#include <asm/setup.h>
26#include <asm/system_misc.h> 26#include <asm/system_misc.h>
diff --git a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
index a3c1336d30c9..c65ab7db36ad 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-fxo-setup.c
@@ -16,7 +16,7 @@
16#include <linux/mtd/physmap.h> 16#include <linux/mtd/physmap.h>
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/ethtool.h> 18#include <linux/ethtool.h>
19#include <net/dsa.h> 19#include <linux/platform_data/dsa.h>
20#include <asm/mach-types.h> 20#include <asm/mach-types.h>
21#include <asm/mach/arch.h> 21#include <asm/mach/arch.h>
22#include <asm/mach/pci.h> 22#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
index 252efe29bd1a..76b8138d9d79 100644
--- a/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f5181l-ge-setup.c
@@ -17,7 +17,7 @@
17#include <linux/mv643xx_eth.h> 17#include <linux/mv643xx_eth.h>
18#include <linux/ethtool.h> 18#include <linux/ethtool.h>
19#include <linux/i2c.h> 19#include <linux/i2c.h>
20#include <net/dsa.h> 20#include <linux/platform_data/dsa.h>
21#include <asm/mach-types.h> 21#include <asm/mach-types.h>
22#include <asm/mach/arch.h> 22#include <asm/mach/arch.h>
23#include <asm/mach/pci.h> 23#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
index f4f1dbe1d91d..5f388a1ed1e4 100644
--- a/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
+++ b/arch/arm/mach-orion5x/rd88f6183ap-ge-setup.c
@@ -18,7 +18,7 @@
18#include <linux/spi/spi.h> 18#include <linux/spi/spi.h>
19#include <linux/spi/flash.h> 19#include <linux/spi/flash.h>
20#include <linux/ethtool.h> 20#include <linux/ethtool.h>
21#include <net/dsa.h> 21#include <linux/platform_data/dsa.h>
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <asm/mach/pci.h> 24#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-orion5x/wnr854t-setup.c b/arch/arm/mach-orion5x/wnr854t-setup.c
index d162d4c7f85d..83589a28a491 100644
--- a/arch/arm/mach-orion5x/wnr854t-setup.c
+++ b/arch/arm/mach-orion5x/wnr854t-setup.c
@@ -15,7 +15,7 @@
15#include <linux/mtd/physmap.h> 15#include <linux/mtd/physmap.h>
16#include <linux/mv643xx_eth.h> 16#include <linux/mv643xx_eth.h>
17#include <linux/ethtool.h> 17#include <linux/ethtool.h>
18#include <net/dsa.h> 18#include <linux/platform_data/dsa.h>
19#include <asm/mach-types.h> 19#include <asm/mach-types.h>
20#include <asm/mach/arch.h> 20#include <asm/mach/arch.h>
21#include <asm/mach/pci.h> 21#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-orion5x/wrt350n-v2-setup.c b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
index 9250bb2e429c..cea08d4a2597 100644
--- a/arch/arm/mach-orion5x/wrt350n-v2-setup.c
+++ b/arch/arm/mach-orion5x/wrt350n-v2-setup.c
@@ -18,7 +18,7 @@
18#include <linux/leds.h> 18#include <linux/leds.h>
19#include <linux/gpio_keys.h> 19#include <linux/gpio_keys.h>
20#include <linux/input.h> 20#include <linux/input.h>
21#include <net/dsa.h> 21#include <linux/platform_data/dsa.h>
22#include <asm/mach-types.h> 22#include <asm/mach-types.h>
23#include <asm/mach/arch.h> 23#include <asm/mach/arch.h>
24#include <asm/mach/pci.h> 24#include <asm/mach/pci.h>
diff --git a/arch/arm/mach-oxnas/Makefile b/arch/arm/mach-oxnas/Makefile
index b625906a9970..61a34e1c0f22 100644
--- a/arch/arm/mach-oxnas/Makefile
+++ b/arch/arm/mach-oxnas/Makefile
@@ -1,2 +1 @@
1obj-$(CONFIG_SMP) += platsmp.o headsmp.o obj-$(CONFIG_SMP) += platsmp.o headsmp.o
2obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o
diff --git a/arch/arm/mach-oxnas/hotplug.c b/arch/arm/mach-oxnas/hotplug.c
deleted file mode 100644
index 854f29b8cba6..000000000000
--- a/arch/arm/mach-oxnas/hotplug.c
+++ /dev/null
@@ -1,109 +0,0 @@
1/*
2 * Copyright (C) 2002 ARM Ltd.
3 * All Rights Reserved
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License version 2 as
7 * published by the Free Software Foundation.
8 */
9#include <linux/kernel.h>
10#include <linux/errno.h>
11#include <linux/smp.h>
12
13#include <asm/cp15.h>
14#include <asm/smp_plat.h>
15
16static inline void cpu_enter_lowpower(void)
17{
18 unsigned int v;
19
20 asm volatile(
21 " mcr p15, 0, %1, c7, c5, 0\n"
22 " mcr p15, 0, %1, c7, c10, 4\n"
23 /*
24 * Turn off coherency
25 */
26 " mrc p15, 0, %0, c1, c0, 1\n"
27 " bic %0, %0, #0x20\n"
28 " mcr p15, 0, %0, c1, c0, 1\n"
29 " mrc p15, 0, %0, c1, c0, 0\n"
30 " bic %0, %0, %2\n"
31 " mcr p15, 0, %0, c1, c0, 0\n"
32 : "=&r" (v)
33 : "r" (0), "Ir" (CR_C)
34 : "cc");
35}
36
37static inline void cpu_leave_lowpower(void)
38{
39 unsigned int v;
40
41 asm volatile( "mrc p15, 0, %0, c1, c0, 0\n"
42 " orr %0, %0, %1\n"
43 " mcr p15, 0, %0, c1, c0, 0\n"
44 " mrc p15, 0, %0, c1, c0, 1\n"
45 " orr %0, %0, #0x20\n"
46 " mcr p15, 0, %0, c1, c0, 1\n"
47 : "=&r" (v)
48 : "Ir" (CR_C)
49 : "cc");
50}
51
52static inline void platform_do_lowpower(unsigned int cpu, int *spurious)
53{
54 /*
55 * there is no power-control hardware on this platform, so all
56 * we can do is put the core into WFI; this is safe as the calling
57 * code will have already disabled interrupts
58 */
59 for (;;) {
60 /*
61 * here's the WFI
62 */
63 asm(".word 0xe320f003\n"
64 :
65 :
66 : "memory", "cc");
67
68 if (pen_release == cpu_logical_map(cpu)) {
69 /*
70 * OK, proper wakeup, we're done
71 */
72 break;
73 }
74
75 /*
76 * Getting here, means that we have come out of WFI without
77 * having been woken up - this shouldn't happen
78 *
79 * Just note it happening - when we're woken, we can report
80 * its occurrence.
81 */
82 (*spurious)++;
83 }
84}
85
86/*
87 * platform-specific code to shutdown a CPU
88 *
89 * Called with IRQs disabled
90 */
91void ox820_cpu_die(unsigned int cpu)
92{
93 int spurious = 0;
94
95 /*
96 * we're ready for shutdown now, so do it
97 */
98 cpu_enter_lowpower();
99 platform_do_lowpower(cpu, &spurious);
100
101 /*
102 * bring this CPU back into the world of cache
103 * coherency, and then restore interrupts
104 */
105 cpu_leave_lowpower();
106
107 if (spurious)
108 pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious);
109}
diff --git a/arch/arm/mach-oxnas/platsmp.c b/arch/arm/mach-oxnas/platsmp.c
index 442cc8a2f7dc..735141c0e3a3 100644
--- a/arch/arm/mach-oxnas/platsmp.c
+++ b/arch/arm/mach-oxnas/platsmp.c
@@ -19,7 +19,6 @@
19#include <asm/smp_scu.h> 19#include <asm/smp_scu.h>
20 20
21extern void ox820_secondary_startup(void); 21extern void ox820_secondary_startup(void);
22extern void ox820_cpu_die(unsigned int cpu);
23 22
24static void __iomem *cpu_ctrl; 23static void __iomem *cpu_ctrl;
25static void __iomem *gic_cpu_ctrl; 24static void __iomem *gic_cpu_ctrl;
@@ -94,9 +93,6 @@ unmap_scu:
94static const struct smp_operations ox820_smp_ops __initconst = { 93static const struct smp_operations ox820_smp_ops __initconst = {
95 .smp_prepare_cpus = ox820_smp_prepare_cpus, 94 .smp_prepare_cpus = ox820_smp_prepare_cpus,
96 .smp_boot_secondary = ox820_boot_secondary, 95 .smp_boot_secondary = ox820_boot_secondary,
97#ifdef CONFIG_HOTPLUG_CPU
98 .cpu_die = ox820_cpu_die,
99#endif
100}; 96};
101 97
102CPU_METHOD_OF_DECLARE(ox820_smp, "oxsemi,ox820-smp", &ox820_smp_ops); 98CPU_METHOD_OF_DECLARE(ox820_smp, "oxsemi,ox820-smp", &ox820_smp_ops);
diff --git a/arch/arm/mach-prima2/common.h b/arch/arm/mach-prima2/common.h
index 6d77b622d168..457eb7b18160 100644
--- a/arch/arm/mach-prima2/common.h
+++ b/arch/arm/mach-prima2/common.h
@@ -15,6 +15,8 @@
15#include <asm/mach/time.h> 15#include <asm/mach/time.h>
16#include <asm/exception.h> 16#include <asm/exception.h>
17 17
18extern volatile int prima2_pen_release;
19
18extern const struct smp_operations sirfsoc_smp_ops; 20extern const struct smp_operations sirfsoc_smp_ops;
19extern void sirfsoc_secondary_startup(void); 21extern void sirfsoc_secondary_startup(void);
20extern void sirfsoc_cpu_die(unsigned int cpu); 22extern void sirfsoc_cpu_die(unsigned int cpu);
diff --git a/arch/arm/mach-prima2/headsmp.S b/arch/arm/mach-prima2/headsmp.S
index 209d9fc5c16c..6cf4fc60347b 100644
--- a/arch/arm/mach-prima2/headsmp.S
+++ b/arch/arm/mach-prima2/headsmp.S
@@ -34,4 +34,4 @@ ENDPROC(sirfsoc_secondary_startup)
34 34
35 .align 35 .align
361: .long . 361: .long .
37 .long pen_release 37 .long prima2_pen_release
diff --git a/arch/arm/mach-prima2/hotplug.c b/arch/arm/mach-prima2/hotplug.c
index a728c78b996f..b6cf1527e330 100644
--- a/arch/arm/mach-prima2/hotplug.c
+++ b/arch/arm/mach-prima2/hotplug.c
@@ -11,6 +11,7 @@
11#include <linux/smp.h> 11#include <linux/smp.h>
12 12
13#include <asm/smp_plat.h> 13#include <asm/smp_plat.h>
14#include "common.h"
14 15
15static inline void platform_do_lowpower(unsigned int cpu) 16static inline void platform_do_lowpower(unsigned int cpu)
16{ 17{
@@ -18,7 +19,7 @@ static inline void platform_do_lowpower(unsigned int cpu)
18 for (;;) { 19 for (;;) {
19 __asm__ __volatile__("dsb\n\t" "wfi\n\t" 20 __asm__ __volatile__("dsb\n\t" "wfi\n\t"
20 : : : "memory"); 21 : : : "memory");
21 if (pen_release == cpu_logical_map(cpu)) { 22 if (prima2_pen_release == cpu_logical_map(cpu)) {
22 /* 23 /*
23 * OK, proper wakeup, we're done 24 * OK, proper wakeup, we're done
24 */ 25 */
diff --git a/arch/arm/mach-prima2/platsmp.c b/arch/arm/mach-prima2/platsmp.c
index 75ef5d4be554..d1f8b5168083 100644
--- a/arch/arm/mach-prima2/platsmp.c
+++ b/arch/arm/mach-prima2/platsmp.c
@@ -24,13 +24,16 @@ static void __iomem *clk_base;
24 24
25static DEFINE_SPINLOCK(boot_lock); 25static DEFINE_SPINLOCK(boot_lock);
26 26
27/* XXX prima2_pen_release is cargo culted code - DO NOT COPY XXX */
28volatile int prima2_pen_release = -1;
29
27static void sirfsoc_secondary_init(unsigned int cpu) 30static void sirfsoc_secondary_init(unsigned int cpu)
28{ 31{
29 /* 32 /*
30 * let the primary processor know we're out of the 33 * let the primary processor know we're out of the
31 * pen, then head off into the C entry point 34 * pen, then head off into the C entry point
32 */ 35 */
33 pen_release = -1; 36 prima2_pen_release = -1;
34 smp_wmb(); 37 smp_wmb();
35 38
36 /* 39 /*
@@ -80,13 +83,13 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
80 /* 83 /*
81 * The secondary processor is waiting to be released from 84 * The secondary processor is waiting to be released from
82 * the holding pen - release it, then wait for it to flag 85 * the holding pen - release it, then wait for it to flag
83 * that it has been released by resetting pen_release. 86 * that it has been released by resetting prima2_pen_release.
84 * 87 *
85 * Note that "pen_release" is the hardware CPU ID, whereas 88 * Note that "prima2_pen_release" is the hardware CPU ID, whereas
86 * "cpu" is Linux's internal ID. 89 * "cpu" is Linux's internal ID.
87 */ 90 */
88 pen_release = cpu_logical_map(cpu); 91 prima2_pen_release = cpu_logical_map(cpu);
89 sync_cache_w(&pen_release); 92 sync_cache_w(&prima2_pen_release);
90 93
91 /* 94 /*
92 * Send the secondary CPU SEV, thereby causing the boot monitor to read 95 * Send the secondary CPU SEV, thereby causing the boot monitor to read
@@ -97,7 +100,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
97 timeout = jiffies + (1 * HZ); 100 timeout = jiffies + (1 * HZ);
98 while (time_before(jiffies, timeout)) { 101 while (time_before(jiffies, timeout)) {
99 smp_rmb(); 102 smp_rmb();
100 if (pen_release == -1) 103 if (prima2_pen_release == -1)
101 break; 104 break;
102 105
103 udelay(10); 106 udelay(10);
@@ -109,7 +112,7 @@ static int sirfsoc_boot_secondary(unsigned int cpu, struct task_struct *idle)
109 */ 112 */
110 spin_unlock(&boot_lock); 113 spin_unlock(&boot_lock);
111 114
112 return pen_release != -1 ? -ENOSYS : 0; 115 return prima2_pen_release != -1 ? -ENOSYS : 0;
113} 116}
114 117
115const struct smp_operations sirfsoc_smp_ops __initconst = { 118const struct smp_operations sirfsoc_smp_ops __initconst = {
diff --git a/arch/arm/mach-pxa/Kconfig b/arch/arm/mach-pxa/Kconfig
index dc8e4f4b7ade..8839c72fdee3 100644
--- a/arch/arm/mach-pxa/Kconfig
+++ b/arch/arm/mach-pxa/Kconfig
@@ -454,24 +454,6 @@ config MACH_TREO680
454 Say Y here if you intend to run this kernel on Palm Treo 680 454 Say Y here if you intend to run this kernel on Palm Treo 680
455 smartphone. 455 smartphone.
456 456
457config MACH_RAUMFELD_RC
458 bool "Raumfeld Controller"
459 select CPU_PXA300
460 select POWER_SUPPLY
461 select PXA3xx
462
463config MACH_RAUMFELD_CONNECTOR
464 bool "Raumfeld Connector"
465 select CPU_PXA300
466 select POWER_SUPPLY
467 select PXA3xx
468
469config MACH_RAUMFELD_SPEAKER
470 bool "Raumfeld Speaker"
471 select CPU_PXA300
472 select POWER_SUPPLY
473 select PXA3xx
474
475config PXA_SHARPSL 457config PXA_SHARPSL
476 bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models" 458 bool "SHARP Zaurus SL-5600, SL-C7xx and SL-Cxx00 Models"
477 select SHARP_PARAM 459 select SHARP_PARAM
diff --git a/arch/arm/mach-pxa/Makefile b/arch/arm/mach-pxa/Makefile
index 0a8e9611052f..f70728930c4f 100644
--- a/arch/arm/mach-pxa/Makefile
+++ b/arch/arm/mach-pxa/Makefile
@@ -86,9 +86,6 @@ obj-$(CONFIG_MACH_POODLE) += poodle.o
86obj-$(CONFIG_MACH_TOSA) += tosa.o 86obj-$(CONFIG_MACH_TOSA) += tosa.o
87obj-$(CONFIG_MACH_ICONTROL) += icontrol.o mxm8x10.o 87obj-$(CONFIG_MACH_ICONTROL) += icontrol.o mxm8x10.o
88obj-$(CONFIG_ARCH_PXA_ESERIES) += eseries.o 88obj-$(CONFIG_ARCH_PXA_ESERIES) += eseries.o
89obj-$(CONFIG_MACH_RAUMFELD_RC) += raumfeld.o
90obj-$(CONFIG_MACH_RAUMFELD_CONNECTOR) += raumfeld.o
91obj-$(CONFIG_MACH_RAUMFELD_SPEAKER) += raumfeld.o
92obj-$(CONFIG_MACH_ZIPIT2) += z2.o 89obj-$(CONFIG_MACH_ZIPIT2) += z2.o
93 90
94obj-$(CONFIG_PXA_SYSTEMS_CPLDS) += pxa_cplds_irqs.o 91obj-$(CONFIG_PXA_SYSTEMS_CPLDS) += pxa_cplds_irqs.o
diff --git a/arch/arm/mach-pxa/cm-x255.c b/arch/arm/mach-pxa/cm-x255.c
index fa8e7dd4d898..4401dfcd7e68 100644
--- a/arch/arm/mach-pxa/cm-x255.c
+++ b/arch/arm/mach-pxa/cm-x255.c
@@ -98,7 +98,7 @@ static unsigned long cmx255_pin_config[] = {
98}; 98};
99 99
100#if defined(CONFIG_SPI_PXA2XX) 100#if defined(CONFIG_SPI_PXA2XX)
101static struct pxa2xx_spi_master pxa_ssp_master_info = { 101static struct pxa2xx_spi_controller pxa_ssp_master_info = {
102 .num_chipselect = 1, 102 .num_chipselect = 1,
103}; 103};
104 104
diff --git a/arch/arm/mach-pxa/cm-x270.c b/arch/arm/mach-pxa/cm-x270.c
index f7081a50dc67..279eeca7add0 100644
--- a/arch/arm/mach-pxa/cm-x270.c
+++ b/arch/arm/mach-pxa/cm-x270.c
@@ -313,7 +313,7 @@ static inline void cmx270_init_mmc(void) {}
313#endif 313#endif
314 314
315#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) 315#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
316static struct pxa2xx_spi_master cm_x270_spi_info = { 316static struct pxa2xx_spi_controller cm_x270_spi_info = {
317 .num_chipselect = 1, 317 .num_chipselect = 1,
318 .enable_dma = 1, 318 .enable_dma = 1,
319}; 319};
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c
index c9732cace5e3..7ecf559bd71c 100644
--- a/arch/arm/mach-pxa/corgi.c
+++ b/arch/arm/mach-pxa/corgi.c
@@ -530,7 +530,7 @@ static struct pxa2xx_udc_mach_info udc_info __initdata = {
530}; 530};
531 531
532#if IS_ENABLED(CONFIG_SPI_PXA2XX) 532#if IS_ENABLED(CONFIG_SPI_PXA2XX)
533static struct pxa2xx_spi_master corgi_spi_info = { 533static struct pxa2xx_spi_controller corgi_spi_info = {
534 .num_chipselect = 3, 534 .num_chipselect = 3,
535}; 535};
536 536
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index a24783a03827..524d6093e0c7 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -1065,7 +1065,7 @@ struct platform_device pxa93x_device_gpio = {
1065 1065
1066/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1. 1066/* pxa2xx-spi platform-device ID equals respective SSP platform-device ID + 1.
1067 * See comment in arch/arm/mach-pxa/ssp.c::ssp_probe() */ 1067 * See comment in arch/arm/mach-pxa/ssp.c::ssp_probe() */
1068void __init pxa2xx_set_spi_info(unsigned id, struct pxa2xx_spi_master *info) 1068void __init pxa2xx_set_spi_info(unsigned id, struct pxa2xx_spi_controller *info)
1069{ 1069{
1070 struct platform_device *pd; 1070 struct platform_device *pd;
1071 1071
diff --git a/arch/arm/mach-pxa/em-x270.c b/arch/arm/mach-pxa/em-x270.c
index 32c1edeb3f14..fa3adb073a0f 100644
--- a/arch/arm/mach-pxa/em-x270.c
+++ b/arch/arm/mach-pxa/em-x270.c
@@ -689,7 +689,7 @@ static inline void em_x270_init_lcd(void) {}
689#endif 689#endif
690 690
691#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) 691#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
692static struct pxa2xx_spi_master em_x270_spi_info = { 692static struct pxa2xx_spi_controller em_x270_spi_info = {
693 .num_chipselect = 1, 693 .num_chipselect = 1,
694}; 694};
695 695
@@ -703,7 +703,7 @@ static struct tdo24m_platform_data em_x270_tdo24m_pdata = {
703 .model = TDO35S, 703 .model = TDO35S,
704}; 704};
705 705
706static struct pxa2xx_spi_master em_x270_spi_2_info = { 706static struct pxa2xx_spi_controller em_x270_spi_2_info = {
707 .num_chipselect = 1, 707 .num_chipselect = 1,
708 .enable_dma = 1, 708 .enable_dma = 1,
709}; 709};
@@ -976,7 +976,6 @@ static struct fixed_voltage_config camera_dummy_config = {
976 .supply_name = "camera_vdd", 976 .supply_name = "camera_vdd",
977 .input_supply = "vcc cam", 977 .input_supply = "vcc cam",
978 .microvolts = 2800000, 978 .microvolts = 2800000,
979 .enable_high = 0,
980 .init_data = &camera_dummy_initdata, 979 .init_data = &camera_dummy_initdata,
981}; 980};
982 981
diff --git a/arch/arm/mach-pxa/ezx.c b/arch/arm/mach-pxa/ezx.c
index 565965e9acc7..5e110e70ce5a 100644
--- a/arch/arm/mach-pxa/ezx.c
+++ b/arch/arm/mach-pxa/ezx.c
@@ -714,7 +714,6 @@ static struct regulator_init_data camera_regulator_initdata = {
714static struct fixed_voltage_config camera_regulator_config = { 714static struct fixed_voltage_config camera_regulator_config = {
715 .supply_name = "camera_vdd", 715 .supply_name = "camera_vdd",
716 .microvolts = 2800000, 716 .microvolts = 2800000,
717 .enable_high = 0,
718 .init_data = &camera_regulator_initdata, 717 .init_data = &camera_regulator_initdata,
719}; 718};
720 719
@@ -730,7 +729,7 @@ static struct gpiod_lookup_table camera_supply_gpiod_table = {
730 .dev_id = "reg-fixed-voltage.1", 729 .dev_id = "reg-fixed-voltage.1",
731 .table = { 730 .table = {
732 GPIO_LOOKUP("gpio-pxa", GPIO50_nCAM_EN, 731 GPIO_LOOKUP("gpio-pxa", GPIO50_nCAM_EN,
733 NULL, GPIO_ACTIVE_HIGH), 732 NULL, GPIO_ACTIVE_LOW),
734 { }, 733 { },
735 }, 734 },
736}; 735};
diff --git a/arch/arm/mach-pxa/hx4700.c b/arch/arm/mach-pxa/hx4700.c
index b79b757fdd41..1d6b1d2fb6a9 100644
--- a/arch/arm/mach-pxa/hx4700.c
+++ b/arch/arm/mach-pxa/hx4700.c
@@ -19,6 +19,7 @@
19#include <linux/platform_device.h> 19#include <linux/platform_device.h>
20#include <linux/delay.h> 20#include <linux/delay.h>
21#include <linux/fb.h> 21#include <linux/fb.h>
22#include <linux/gpio/machine.h>
22#include <linux/gpio.h> 23#include <linux/gpio.h>
23#include <linux/gpio_keys.h> 24#include <linux/gpio_keys.h>
24#include <linux/input.h> 25#include <linux/input.h>
@@ -629,7 +630,7 @@ static struct spi_board_info tsc2046_board_info[] __initdata = {
629 }, 630 },
630}; 631};
631 632
632static struct pxa2xx_spi_master pxa_ssp2_master_info = { 633static struct pxa2xx_spi_controller pxa_ssp2_master_info = {
633 .num_chipselect = 1, 634 .num_chipselect = 1,
634 .enable_dma = 1, 635 .enable_dma = 1,
635}; 636};
@@ -702,9 +703,7 @@ static struct regulator_init_data bq24022_init_data = {
702 .consumer_supplies = bq24022_consumers, 703 .consumer_supplies = bq24022_consumers,
703}; 704};
704 705
705static struct gpio bq24022_gpios[] = { 706static enum gpiod_flags bq24022_gpiod_gflags[] = { GPIOD_OUT_LOW };
706 { GPIO96_HX4700_BQ24022_ISET2, GPIOF_OUT_INIT_LOW, "bq24022_iset2" },
707};
708 707
709static struct gpio_regulator_state bq24022_states[] = { 708static struct gpio_regulator_state bq24022_states[] = {
710 { .value = 100000, .gpios = (0 << 0) }, 709 { .value = 100000, .gpios = (0 << 0) },
@@ -714,12 +713,10 @@ static struct gpio_regulator_state bq24022_states[] = {
714static struct gpio_regulator_config bq24022_info = { 713static struct gpio_regulator_config bq24022_info = {
715 .supply_name = "bq24022", 714 .supply_name = "bq24022",
716 715
717 .enable_gpio = GPIO72_HX4700_BQ24022_nCHARGE_EN,
718 .enable_high = 0,
719 .enabled_at_boot = 0, 716 .enabled_at_boot = 0,
720 717
721 .gpios = bq24022_gpios, 718 .gflags = bq24022_gpiod_gflags,
722 .nr_gpios = ARRAY_SIZE(bq24022_gpios), 719 .ngpios = ARRAY_SIZE(bq24022_gpiod_gflags),
723 720
724 .states = bq24022_states, 721 .states = bq24022_states,
725 .nr_states = ARRAY_SIZE(bq24022_states), 722 .nr_states = ARRAY_SIZE(bq24022_states),
@@ -736,6 +733,17 @@ static struct platform_device bq24022 = {
736 }, 733 },
737}; 734};
738 735
736static struct gpiod_lookup_table bq24022_gpiod_table = {
737 .dev_id = "gpio-regulator",
738 .table = {
739 GPIO_LOOKUP("gpio-pxa", GPIO96_HX4700_BQ24022_ISET2,
740 NULL, GPIO_ACTIVE_HIGH),
741 GPIO_LOOKUP("gpio-pxa", GPIO72_HX4700_BQ24022_nCHARGE_EN,
742 "enable", GPIO_ACTIVE_LOW),
743 { },
744 },
745};
746
739/* 747/*
740 * StrataFlash 748 * StrataFlash
741 */ 749 */
@@ -878,6 +886,7 @@ static void __init hx4700_init(void)
878 pxa_set_btuart_info(NULL); 886 pxa_set_btuart_info(NULL);
879 pxa_set_stuart_info(NULL); 887 pxa_set_stuart_info(NULL);
880 888
889 gpiod_add_lookup_table(&bq24022_gpiod_table);
881 platform_add_devices(devices, ARRAY_SIZE(devices)); 890 platform_add_devices(devices, ARRAY_SIZE(devices));
882 pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup)); 891 pwm_add_table(hx4700_pwm_lookup, ARRAY_SIZE(hx4700_pwm_lookup));
883 892
diff --git a/arch/arm/mach-pxa/icontrol.c b/arch/arm/mach-pxa/icontrol.c
index cbaf4f6edcda..7e30452e3840 100644
--- a/arch/arm/mach-pxa/icontrol.c
+++ b/arch/arm/mach-pxa/icontrol.c
@@ -115,12 +115,12 @@ static struct spi_board_info mcp251x_board_info[] = {
115 } 115 }
116}; 116};
117 117
118static struct pxa2xx_spi_master pxa_ssp3_spi_master_info = { 118static struct pxa2xx_spi_controller pxa_ssp3_spi_master_info = {
119 .num_chipselect = 2, 119 .num_chipselect = 2,
120 .enable_dma = 1 120 .enable_dma = 1
121}; 121};
122 122
123static struct pxa2xx_spi_master pxa_ssp4_spi_master_info = { 123static struct pxa2xx_spi_controller pxa_ssp4_spi_master_info = {
124 .num_chipselect = 2, 124 .num_chipselect = 2,
125 .enable_dma = 1 125 .enable_dma = 1
126}; 126};
diff --git a/arch/arm/mach-pxa/include/mach/pxa25x-udc.h b/arch/arm/mach-pxa/include/mach/pxa25x-udc.h
deleted file mode 100644
index e69de29bb2d1..000000000000
--- a/arch/arm/mach-pxa/include/mach/pxa25x-udc.h
+++ /dev/null
diff --git a/arch/arm/mach-pxa/littleton.c b/arch/arm/mach-pxa/littleton.c
index 39db4898dc4a..464b8bd2bcb9 100644
--- a/arch/arm/mach-pxa/littleton.c
+++ b/arch/arm/mach-pxa/littleton.c
@@ -191,7 +191,7 @@ static inline void littleton_init_lcd(void) {};
191#endif /* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE */ 191#endif /* CONFIG_FB_PXA || CONFIG_FB_PXA_MODULE */
192 192
193#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) 193#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
194static struct pxa2xx_spi_master littleton_spi_info = { 194static struct pxa2xx_spi_controller littleton_spi_info = {
195 .num_chipselect = 1, 195 .num_chipselect = 1,
196}; 196};
197 197
diff --git a/arch/arm/mach-pxa/lubbock.c b/arch/arm/mach-pxa/lubbock.c
index a1391e113ef4..c1bd0d544981 100644
--- a/arch/arm/mach-pxa/lubbock.c
+++ b/arch/arm/mach-pxa/lubbock.c
@@ -197,7 +197,7 @@ static struct platform_device sa1111_device = {
197 * (to J5) and poking board registers (as done below). Else it's only useful 197 * (to J5) and poking board registers (as done below). Else it's only useful
198 * for the temperature sensors. 198 * for the temperature sensors.
199 */ 199 */
200static struct pxa2xx_spi_master pxa_ssp_master_info = { 200static struct pxa2xx_spi_controller pxa_ssp_master_info = {
201 .num_chipselect = 1, 201 .num_chipselect = 1,
202}; 202};
203 203
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c
index 08b079653c3f..75abc21083eb 100644
--- a/arch/arm/mach-pxa/magician.c
+++ b/arch/arm/mach-pxa/magician.c
@@ -645,9 +645,8 @@ static struct regulator_init_data bq24022_init_data = {
645 .consumer_supplies = bq24022_consumers, 645 .consumer_supplies = bq24022_consumers,
646}; 646};
647 647
648static struct gpio bq24022_gpios[] = { 648
649 { EGPIO_MAGICIAN_BQ24022_ISET2, GPIOF_OUT_INIT_LOW, "bq24022_iset2" }, 649static enum gpiod_flags bq24022_gpiod_gflags[] = { GPIOD_OUT_LOW };
650};
651 650
652static struct gpio_regulator_state bq24022_states[] = { 651static struct gpio_regulator_state bq24022_states[] = {
653 { .value = 100000, .gpios = (0 << 0) }, 652 { .value = 100000, .gpios = (0 << 0) },
@@ -657,12 +656,10 @@ static struct gpio_regulator_state bq24022_states[] = {
657static struct gpio_regulator_config bq24022_info = { 656static struct gpio_regulator_config bq24022_info = {
658 .supply_name = "bq24022", 657 .supply_name = "bq24022",
659 658
660 .enable_gpio = GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
661 .enable_high = 0,
662 .enabled_at_boot = 1, 659 .enabled_at_boot = 1,
663 660
664 .gpios = bq24022_gpios, 661 .gflags = bq24022_gpiod_gflags,
665 .nr_gpios = ARRAY_SIZE(bq24022_gpios), 662 .ngpios = ARRAY_SIZE(bq24022_gpiod_gflags),
666 663
667 .states = bq24022_states, 664 .states = bq24022_states,
668 .nr_states = ARRAY_SIZE(bq24022_states), 665 .nr_states = ARRAY_SIZE(bq24022_states),
@@ -679,6 +676,17 @@ static struct platform_device bq24022 = {
679 }, 676 },
680}; 677};
681 678
679static struct gpiod_lookup_table bq24022_gpiod_table = {
680 .dev_id = "gpio-regulator",
681 .table = {
682 GPIO_LOOKUP("gpio-pxa", EGPIO_MAGICIAN_BQ24022_ISET2,
683 NULL, GPIO_ACTIVE_HIGH),
684 GPIO_LOOKUP("gpio-pxa", GPIO30_MAGICIAN_BQ24022_nCHARGE_EN,
685 "enable", GPIO_ACTIVE_LOW),
686 { },
687 },
688};
689
682/* 690/*
683 * fixed regulator for ads7846 691 * fixed regulator for ads7846
684 */ 692 */
@@ -932,7 +940,7 @@ struct pxa2xx_spi_chip tsc2046_chip_info = {
932 .gpio_cs = GPIO14_MAGICIAN_TSC2046_CS, 940 .gpio_cs = GPIO14_MAGICIAN_TSC2046_CS,
933}; 941};
934 942
935static struct pxa2xx_spi_master magician_spi_info = { 943static struct pxa2xx_spi_controller magician_spi_info = {
936 .num_chipselect = 1, 944 .num_chipselect = 1,
937 .enable_dma = 1, 945 .enable_dma = 1,
938}; 946};
@@ -1027,6 +1035,7 @@ static void __init magician_init(void)
1027 regulator_register_always_on(0, "power", pwm_backlight_supply, 1035 regulator_register_always_on(0, "power", pwm_backlight_supply,
1028 ARRAY_SIZE(pwm_backlight_supply), 5000000); 1036 ARRAY_SIZE(pwm_backlight_supply), 5000000);
1029 1037
1038 gpiod_add_lookup_table(&bq24022_gpiod_table);
1030 platform_add_devices(ARRAY_AND_SIZE(devices)); 1039 platform_add_devices(ARRAY_AND_SIZE(devices));
1031} 1040}
1032 1041
diff --git a/arch/arm/mach-pxa/pcm027.c b/arch/arm/mach-pxa/pcm027.c
index ccca9f7575c3..e2e613449660 100644
--- a/arch/arm/mach-pxa/pcm027.c
+++ b/arch/arm/mach-pxa/pcm027.c
@@ -132,7 +132,7 @@ static struct platform_device smc91x_device = {
132/* 132/*
133 * SPI host and devices 133 * SPI host and devices
134 */ 134 */
135static struct pxa2xx_spi_master pxa_ssp_master_info = { 135static struct pxa2xx_spi_controller pxa_ssp_master_info = {
136 .num_chipselect = 1, 136 .num_chipselect = 1,
137}; 137};
138 138
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c
index c2a43d4cfd3e..9450a523cd0b 100644
--- a/arch/arm/mach-pxa/poodle.c
+++ b/arch/arm/mach-pxa/poodle.c
@@ -196,7 +196,7 @@ struct platform_device poodle_locomo_device = {
196EXPORT_SYMBOL(poodle_locomo_device); 196EXPORT_SYMBOL(poodle_locomo_device);
197 197
198#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE) 198#if defined(CONFIG_SPI_PXA2XX) || defined(CONFIG_SPI_PXA2XX_MODULE)
199static struct pxa2xx_spi_master poodle_spi_info = { 199static struct pxa2xx_spi_controller poodle_spi_info = {
200 .num_chipselect = 1, 200 .num_chipselect = 1,
201}; 201};
202 202
diff --git a/arch/arm/mach-pxa/raumfeld.c b/arch/arm/mach-pxa/raumfeld.c
deleted file mode 100644
index e1db072756f2..000000000000
--- a/arch/arm/mach-pxa/raumfeld.c
+++ /dev/null
@@ -1,1187 +0,0 @@
1/*
2 * arch/arm/mach-pxa/raumfeld.c
3 *
4 * Support for the following Raumfeld devices:
5 *
6 * * Controller
7 * * Connector
8 * * Speaker S/M
9 *
10 * See http://www.raumfeld.com for details.
11 *
12 * Copyright (c) 2009 Daniel Mack <daniel@caiaq.de>
13 *
14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License version 2 as
16 * published by the Free Software Foundation.
17 */
18
19#include <linux/init.h>
20#include <linux/kernel.h>
21#include <linux/property.h>
22#include <linux/platform_device.h>
23#include <linux/interrupt.h>
24#include <linux/gpio.h>
25#include <linux/gpio/machine.h>
26#include <linux/smsc911x.h>
27#include <linux/input.h>
28#include <linux/gpio_keys.h>
29#include <linux/leds.h>
30#include <linux/w1-gpio.h>
31#include <linux/sched.h>
32#include <linux/pwm.h>
33#include <linux/pwm_backlight.h>
34#include <linux/i2c.h>
35#include <linux/platform_data/i2c-pxa.h>
36#include <linux/spi/spi.h>
37#include <linux/spi/spi_gpio.h>
38#include <linux/lis3lv02d.h>
39#include <linux/pda_power.h>
40#include <linux/power_supply.h>
41#include <linux/regulator/max8660.h>
42#include <linux/regulator/machine.h>
43#include <linux/regulator/fixed.h>
44#include <linux/regulator/consumer.h>
45#include <linux/delay.h>
46
47#include <asm/system_info.h>
48
49#include <asm/mach-types.h>
50#include <asm/mach/arch.h>
51
52#include "pxa300.h"
53#include <linux/platform_data/usb-ohci-pxa27x.h>
54#include <linux/platform_data/video-pxafb.h>
55#include <linux/platform_data/mmc-pxamci.h>
56#include <linux/platform_data/mtd-nand-pxa3xx.h>
57
58#include "generic.h"
59#include "devices.h"
60
61/* common GPIO definitions */
62
63/* inputs */
64#define GPIO_ON_OFF (14)
65#define GPIO_VOLENC_A (19)
66#define GPIO_VOLENC_B (20)
67#define GPIO_CHARGE_DONE (23)
68#define GPIO_CHARGE_IND (27)
69#define GPIO_TOUCH_IRQ (32)
70#define GPIO_ETH_IRQ (40)
71#define GPIO_SPI_MISO (98)
72#define GPIO_ACCEL_IRQ (104)
73#define GPIO_RESCUE_BOOT (115)
74#define GPIO_DOCK_DETECT (116)
75#define GPIO_KEY1 (117)
76#define GPIO_KEY2 (118)
77#define GPIO_KEY3 (119)
78#define GPIO_CHARGE_USB_OK (112)
79#define GPIO_CHARGE_DC_OK (101)
80#define GPIO_CHARGE_USB_SUSP (102)
81
82/* outputs */
83#define GPIO_SHUTDOWN_SUPPLY (16)
84#define GPIO_SHUTDOWN_BATT (18)
85#define GPIO_CHRG_PEN2 (31)
86#define GPIO_TFT_VA_EN (33)
87#define GPIO_SPDIF_CS (34)
88#define GPIO_LED2 (35)
89#define GPIO_LED1 (36)
90#define GPIO_SPDIF_RESET (38)
91#define GPIO_SPI_CLK (95)
92#define GPIO_MCLK_DAC_CS (96)
93#define GPIO_SPI_MOSI (97)
94#define GPIO_W1_PULLUP_ENABLE (105)
95#define GPIO_DISPLAY_ENABLE (106)
96#define GPIO_MCLK_RESET (111)
97#define GPIO_W2W_RESET (113)
98#define GPIO_W2W_PDN (114)
99#define GPIO_CODEC_RESET (120)
100#define GPIO_AUDIO_VA_ENABLE (124)
101#define GPIO_ACCEL_CS (125)
102#define GPIO_ONE_WIRE (126)
103
104/*
105 * GPIO configurations
106 */
107static mfp_cfg_t raumfeld_controller_pin_config[] __initdata = {
108 /* UART1 */
109 GPIO77_UART1_RXD,
110 GPIO78_UART1_TXD,
111 GPIO79_UART1_CTS,
112 GPIO81_UART1_DSR,
113 GPIO83_UART1_DTR,
114 GPIO84_UART1_RTS,
115
116 /* UART3 */
117 GPIO110_UART3_RXD,
118
119 /* USB Host */
120 GPIO0_2_USBH_PEN,
121 GPIO1_2_USBH_PWR,
122
123 /* I2C */
124 GPIO21_I2C_SCL | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
125 GPIO22_I2C_SDA | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
126
127 /* SPI */
128 GPIO34_GPIO, /* SPDIF_CS */
129 GPIO96_GPIO, /* MCLK_CS */
130 GPIO125_GPIO, /* ACCEL_CS */
131
132 /* MMC */
133 GPIO3_MMC1_DAT0,
134 GPIO4_MMC1_DAT1,
135 GPIO5_MMC1_DAT2,
136 GPIO6_MMC1_DAT3,
137 GPIO7_MMC1_CLK,
138 GPIO8_MMC1_CMD,
139
140 /* One-wire */
141 GPIO126_GPIO | MFP_LPM_FLOAT,
142 GPIO105_GPIO | MFP_PULL_LOW | MFP_LPM_PULL_LOW,
143
144 /* CHRG_USB_OK */
145 GPIO101_GPIO | MFP_PULL_HIGH,
146 /* CHRG_USB_OK */
147 GPIO112_GPIO | MFP_PULL_HIGH,
148 /* CHRG_USB_SUSP */
149 GPIO102_GPIO,
150 /* DISPLAY_ENABLE */
151 GPIO106_GPIO,
152 /* DOCK_DETECT */
153 GPIO116_GPIO | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
154
155 /* LCD */
156 GPIO54_LCD_LDD_0,
157 GPIO55_LCD_LDD_1,
158 GPIO56_LCD_LDD_2,
159 GPIO57_LCD_LDD_3,
160 GPIO58_LCD_LDD_4,
161 GPIO59_LCD_LDD_5,
162 GPIO60_LCD_LDD_6,
163 GPIO61_LCD_LDD_7,
164 GPIO62_LCD_LDD_8,
165 GPIO63_LCD_LDD_9,
166 GPIO64_LCD_LDD_10,
167 GPIO65_LCD_LDD_11,
168 GPIO66_LCD_LDD_12,
169 GPIO67_LCD_LDD_13,
170 GPIO68_LCD_LDD_14,
171 GPIO69_LCD_LDD_15,
172 GPIO70_LCD_LDD_16,
173 GPIO71_LCD_LDD_17,
174 GPIO72_LCD_FCLK,
175 GPIO73_LCD_LCLK,
176 GPIO74_LCD_PCLK,
177 GPIO75_LCD_BIAS,
178};
179
180static mfp_cfg_t raumfeld_connector_pin_config[] __initdata = {
181 /* UART1 */
182 GPIO77_UART1_RXD,
183 GPIO78_UART1_TXD,
184 GPIO79_UART1_CTS,
185 GPIO81_UART1_DSR,
186 GPIO83_UART1_DTR,
187 GPIO84_UART1_RTS,
188
189 /* UART3 */
190 GPIO110_UART3_RXD,
191
192 /* USB Host */
193 GPIO0_2_USBH_PEN,
194 GPIO1_2_USBH_PWR,
195
196 /* I2C */
197 GPIO21_I2C_SCL | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
198 GPIO22_I2C_SDA | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
199
200 /* SPI */
201 GPIO34_GPIO, /* SPDIF_CS */
202 GPIO96_GPIO, /* MCLK_CS */
203 GPIO125_GPIO, /* ACCEL_CS */
204
205 /* MMC */
206 GPIO3_MMC1_DAT0,
207 GPIO4_MMC1_DAT1,
208 GPIO5_MMC1_DAT2,
209 GPIO6_MMC1_DAT3,
210 GPIO7_MMC1_CLK,
211 GPIO8_MMC1_CMD,
212
213 /* Ethernet */
214 GPIO1_nCS2, /* CS */
215 GPIO40_GPIO | MFP_PULL_HIGH, /* IRQ */
216
217 /* SSP for I2S */
218 GPIO85_SSP1_SCLK,
219 GPIO89_SSP1_EXTCLK,
220 GPIO86_SSP1_FRM,
221 GPIO87_SSP1_TXD,
222 GPIO88_SSP1_RXD,
223 GPIO90_SSP1_SYSCLK,
224
225 /* SSP2 for S/PDIF */
226 GPIO25_SSP2_SCLK,
227 GPIO26_SSP2_FRM,
228 GPIO27_SSP2_TXD,
229 GPIO29_SSP2_EXTCLK,
230
231 /* LEDs */
232 GPIO35_GPIO | MFP_LPM_PULL_LOW,
233 GPIO36_GPIO | MFP_LPM_DRIVE_HIGH,
234};
235
236static mfp_cfg_t raumfeld_speaker_pin_config[] __initdata = {
237 /* UART1 */
238 GPIO77_UART1_RXD,
239 GPIO78_UART1_TXD,
240 GPIO79_UART1_CTS,
241 GPIO81_UART1_DSR,
242 GPIO83_UART1_DTR,
243 GPIO84_UART1_RTS,
244
245 /* UART3 */
246 GPIO110_UART3_RXD,
247
248 /* USB Host */
249 GPIO0_2_USBH_PEN,
250 GPIO1_2_USBH_PWR,
251
252 /* I2C */
253 GPIO21_I2C_SCL | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
254 GPIO22_I2C_SDA | MFP_LPM_FLOAT | MFP_PULL_FLOAT,
255
256 /* SPI */
257 GPIO34_GPIO, /* SPDIF_CS */
258 GPIO96_GPIO, /* MCLK_CS */
259 GPIO125_GPIO, /* ACCEL_CS */
260
261 /* MMC */
262 GPIO3_MMC1_DAT0,
263 GPIO4_MMC1_DAT1,
264 GPIO5_MMC1_DAT2,
265 GPIO6_MMC1_DAT3,
266 GPIO7_MMC1_CLK,
267 GPIO8_MMC1_CMD,
268
269 /* Ethernet */
270 GPIO1_nCS2, /* CS */
271 GPIO40_GPIO | MFP_PULL_HIGH, /* IRQ */
272
273 /* SSP for I2S */
274 GPIO85_SSP1_SCLK,
275 GPIO89_SSP1_EXTCLK,
276 GPIO86_SSP1_FRM,
277 GPIO87_SSP1_TXD,
278 GPIO88_SSP1_RXD,
279 GPIO90_SSP1_SYSCLK,
280
281 /* LEDs */
282 GPIO35_GPIO | MFP_LPM_PULL_LOW,
283 GPIO36_GPIO | MFP_LPM_DRIVE_HIGH,
284};
285
286/*
287 * SMSC LAN9220 Ethernet
288 */
289
290static struct resource smc91x_resources[] = {
291 {
292 .start = PXA3xx_CS2_PHYS,
293 .end = PXA3xx_CS2_PHYS + 0xfffff,
294 .flags = IORESOURCE_MEM,
295 },
296 {
297 .start = PXA_GPIO_TO_IRQ(GPIO_ETH_IRQ),
298 .end = PXA_GPIO_TO_IRQ(GPIO_ETH_IRQ),
299 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_FALLING,
300 }
301};
302
303static struct smsc911x_platform_config raumfeld_smsc911x_config = {
304 .phy_interface = PHY_INTERFACE_MODE_MII,
305 .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
306 .irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
307 .flags = SMSC911X_USE_32BIT | SMSC911X_SAVE_MAC_ADDRESS,
308};
309
310static struct platform_device smc91x_device = {
311 .name = "smsc911x",
312 .id = -1,
313 .num_resources = ARRAY_SIZE(smc91x_resources),
314 .resource = smc91x_resources,
315 .dev = {
316 .platform_data = &raumfeld_smsc911x_config,
317 }
318};
319
320/**
321 * NAND
322 */
323
324static struct mtd_partition raumfeld_nand_partitions[] = {
325 {
326 .name = "Bootloader",
327 .offset = 0,
328 .size = 0xa0000,
329 .mask_flags = MTD_WRITEABLE, /* force read-only */
330 },
331 {
332 .name = "BootloaderEnvironment",
333 .offset = 0xa0000,
334 .size = 0x20000,
335 },
336 {
337 .name = "BootloaderSplashScreen",
338 .offset = 0xc0000,
339 .size = 0x60000,
340 },
341 {
342 .name = "UBI",
343 .offset = 0x120000,
344 .size = MTDPART_SIZ_FULL,
345 },
346};
347
348static struct pxa3xx_nand_platform_data raumfeld_nand_info = {
349 .keep_config = 1,
350 .parts = raumfeld_nand_partitions,
351 .nr_parts = ARRAY_SIZE(raumfeld_nand_partitions),
352};
353
354/**
355 * USB (OHCI) support
356 */
357
358static struct pxaohci_platform_data raumfeld_ohci_info = {
359 .port_mode = PMM_GLOBAL_MODE,
360 .flags = ENABLE_PORT1,
361};
362
363/**
364 * Rotary encoder input device
365 */
366
367static struct gpiod_lookup_table raumfeld_rotary_gpios_table = {
368 .dev_id = "rotary-encoder.0",
369 .table = {
370 GPIO_LOOKUP_IDX("gpio-0",
371 GPIO_VOLENC_A, NULL, 0, GPIO_ACTIVE_LOW),
372 GPIO_LOOKUP_IDX("gpio-0",
373 GPIO_VOLENC_B, NULL, 1, GPIO_ACTIVE_HIGH),
374 { },
375 },
376};
377
378static const struct property_entry raumfeld_rotary_properties[] __initconst = {
379 PROPERTY_ENTRY_U32("rotary-encoder,steps-per-period", 24),
380 PROPERTY_ENTRY_U32("linux,axis", REL_X),
381 PROPERTY_ENTRY_U32("rotary-encoder,relative_axis", 1),
382 { },
383};
384
385static struct platform_device rotary_encoder_device = {
386 .name = "rotary-encoder",
387 .id = 0,
388};
389
390/**
391 * GPIO buttons
392 */
393
394static struct gpio_keys_button gpio_keys_button[] = {
395 {
396 .code = KEY_F1,
397 .type = EV_KEY,
398 .gpio = GPIO_KEY1,
399 .active_low = 1,
400 .wakeup = 0,
401 .debounce_interval = 5, /* ms */
402 .desc = "Button 1",
403 },
404 {
405 .code = KEY_F2,
406 .type = EV_KEY,
407 .gpio = GPIO_KEY2,
408 .active_low = 1,
409 .wakeup = 0,
410 .debounce_interval = 5, /* ms */
411 .desc = "Button 2",
412 },
413 {
414 .code = KEY_F3,
415 .type = EV_KEY,
416 .gpio = GPIO_KEY3,
417 .active_low = 1,
418 .wakeup = 0,
419 .debounce_interval = 5, /* ms */
420 .desc = "Button 3",
421 },
422 {
423 .code = KEY_F4,
424 .type = EV_KEY,
425 .gpio = GPIO_RESCUE_BOOT,
426 .active_low = 0,
427 .wakeup = 0,
428 .debounce_interval = 5, /* ms */
429 .desc = "rescue boot button",
430 },
431 {
432 .code = KEY_F5,
433 .type = EV_KEY,
434 .gpio = GPIO_DOCK_DETECT,
435 .active_low = 1,
436 .wakeup = 0,
437 .debounce_interval = 5, /* ms */
438 .desc = "dock detect",
439 },
440 {
441 .code = KEY_F6,
442 .type = EV_KEY,
443 .gpio = GPIO_ON_OFF,
444 .active_low = 0,
445 .wakeup = 0,
446 .debounce_interval = 5, /* ms */
447 .desc = "on_off button",
448 },
449};
450
451static struct gpio_keys_platform_data gpio_keys_platform_data = {
452 .buttons = gpio_keys_button,
453 .nbuttons = ARRAY_SIZE(gpio_keys_button),
454 .rep = 0,
455};
456
457static struct platform_device raumfeld_gpio_keys_device = {
458 .name = "gpio-keys",
459 .id = -1,
460 .dev = {
461 .platform_data = &gpio_keys_platform_data,
462 }
463};
464
465/**
466 * GPIO LEDs
467 */
468
469static struct gpio_led raumfeld_leds[] = {
470 {
471 .name = "raumfeld:1",
472 .gpio = GPIO_LED1,
473 .active_low = 1,
474 .default_state = LEDS_GPIO_DEFSTATE_ON,
475 },
476 {
477 .name = "raumfeld:2",
478 .gpio = GPIO_LED2,
479 .active_low = 0,
480 .default_state = LEDS_GPIO_DEFSTATE_OFF,
481 }
482};
483
484static struct gpio_led_platform_data raumfeld_led_platform_data = {
485 .leds = raumfeld_leds,
486 .num_leds = ARRAY_SIZE(raumfeld_leds),
487};
488
489static struct platform_device raumfeld_led_device = {
490 .name = "leds-gpio",
491 .id = -1,
492 .dev = {
493 .platform_data = &raumfeld_led_platform_data,
494 },
495};
496
497/**
498 * One-wire (W1 bus) support
499 */
500
501static void w1_enable_external_pullup(int enable)
502{
503 gpio_set_value(GPIO_W1_PULLUP_ENABLE, enable);
504 msleep(100);
505}
506
507static struct gpiod_lookup_table raumfeld_w1_gpiod_table = {
508 .dev_id = "w1-gpio",
509 .table = {
510 GPIO_LOOKUP_IDX("gpio-pxa", GPIO_ONE_WIRE, NULL, 0,
511 GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN),
512 },
513};
514
515static struct w1_gpio_platform_data w1_gpio_platform_data = {
516 .enable_external_pullup = w1_enable_external_pullup,
517};
518
519static struct platform_device raumfeld_w1_gpio_device = {
520 .name = "w1-gpio",
521 .dev = {
522 .platform_data = &w1_gpio_platform_data
523 }
524};
525
526static void __init raumfeld_w1_init(void)
527{
528 int ret = gpio_request(GPIO_W1_PULLUP_ENABLE,
529 "W1 external pullup enable");
530
531 if (ret < 0)
532 pr_warn("Unable to request GPIO_W1_PULLUP_ENABLE\n");
533 else
534 gpio_direction_output(GPIO_W1_PULLUP_ENABLE, 0);
535
536 gpiod_add_lookup_table(&raumfeld_w1_gpiod_table);
537 platform_device_register(&raumfeld_w1_gpio_device);
538}
539
540/**
541 * Framebuffer device
542 */
543
544static struct pwm_lookup raumfeld_pwm_lookup[] = {
545 PWM_LOOKUP("pxa27x-pwm.0", 0, "pwm-backlight", NULL, 10000,
546 PWM_POLARITY_NORMAL),
547};
548
549/* PWM controlled backlight */
550static struct platform_pwm_backlight_data raumfeld_pwm_backlight_data = {
551 .max_brightness = 100,
552 .dft_brightness = 100,
553 .enable_gpio = -1,
554};
555
556static struct platform_device raumfeld_pwm_backlight_device = {
557 .name = "pwm-backlight",
558 .dev = {
559 .parent = &pxa27x_device_pwm0.dev,
560 .platform_data = &raumfeld_pwm_backlight_data,
561 }
562};
563
564/* LT3593 controlled backlight */
565static struct gpio_led raumfeld_lt3593_led = {
566 .name = "backlight",
567 .gpio = mfp_to_gpio(MFP_PIN_GPIO17),
568 .default_state = LEDS_GPIO_DEFSTATE_ON,
569};
570
571static struct gpio_led_platform_data raumfeld_lt3593_platform_data = {
572 .leds = &raumfeld_lt3593_led,
573 .num_leds = 1,
574};
575
576static struct platform_device raumfeld_lt3593_device = {
577 .name = "leds-lt3593",
578 .id = -1,
579 .dev = {
580 .platform_data = &raumfeld_lt3593_platform_data,
581 },
582};
583
584static struct pxafb_mode_info sharp_lq043t3dx02_mode = {
585 .pixclock = 111000,
586 .xres = 480,
587 .yres = 272,
588 .bpp = 16,
589 .hsync_len = 41,
590 .left_margin = 2,
591 .right_margin = 1,
592 .vsync_len = 10,
593 .upper_margin = 3,
594 .lower_margin = 1,
595 .sync = 0,
596};
597
598static struct pxafb_mach_info raumfeld_sharp_lcd_info = {
599 .modes = &sharp_lq043t3dx02_mode,
600 .num_modes = 1,
601 .video_mem_size = 0x400000,
602 .lcd_conn = LCD_COLOR_TFT_16BPP | LCD_PCLK_EDGE_FALL,
603#ifdef CONFIG_PXA3XX_GCU
604 .acceleration_enabled = 1,
605#endif
606};
607
608static void __init raumfeld_lcd_init(void)
609{
610 int ret;
611
612 ret = gpio_request(GPIO_TFT_VA_EN, "display VA enable");
613 if (ret < 0)
614 pr_warn("Unable to request GPIO_TFT_VA_EN\n");
615 else
616 gpio_direction_output(GPIO_TFT_VA_EN, 1);
617
618 msleep(100);
619
620 ret = gpio_request(GPIO_DISPLAY_ENABLE, "display enable");
621 if (ret < 0)
622 pr_warn("Unable to request GPIO_DISPLAY_ENABLE\n");
623 else
624 gpio_direction_output(GPIO_DISPLAY_ENABLE, 1);
625
626 /* Hardware revision 2 has the backlight regulator controlled
627 * by an LT3593, earlier and later devices use PWM for that. */
628 if ((system_rev & 0xff) == 2) {
629 platform_device_register(&raumfeld_lt3593_device);
630 } else {
631 mfp_cfg_t raumfeld_pwm_pin_config = GPIO17_PWM0_OUT;
632 pxa3xx_mfp_config(&raumfeld_pwm_pin_config, 1);
633 pwm_add_table(raumfeld_pwm_lookup,
634 ARRAY_SIZE(raumfeld_pwm_lookup));
635 platform_device_register(&raumfeld_pwm_backlight_device);
636 }
637
638 pxa_set_fb_info(NULL, &raumfeld_sharp_lcd_info);
639 platform_device_register(&pxa3xx_device_gcu);
640}
641
642/**
643 * SPI devices
644 */
645
646static struct spi_gpio_platform_data raumfeld_spi_platform_data = {
647 .num_chipselect = 3,
648};
649
650static struct platform_device raumfeld_spi_device = {
651 .name = "spi_gpio",
652 .id = 0,
653 .dev = {
654 .platform_data = &raumfeld_spi_platform_data,
655 }
656};
657
658static struct gpiod_lookup_table raumfeld_spi_gpiod_table = {
659 .dev_id = "spi_gpio",
660 .table = {
661 GPIO_LOOKUP("gpio-0", GPIO_SPI_CLK,
662 "sck", GPIO_ACTIVE_HIGH),
663 GPIO_LOOKUP("gpio-0", GPIO_SPI_MOSI,
664 "mosi", GPIO_ACTIVE_HIGH),
665 GPIO_LOOKUP("gpio-0", GPIO_SPI_MISO,
666 "miso", GPIO_ACTIVE_HIGH),
667 GPIO_LOOKUP_IDX("gpio-0", GPIO_SPDIF_CS,
668 "cs", 0, GPIO_ACTIVE_HIGH),
669 GPIO_LOOKUP_IDX("gpio-0", GPIO_ACCEL_CS,
670 "cs", 1, GPIO_ACTIVE_HIGH),
671 GPIO_LOOKUP_IDX("gpio-0", GPIO_MCLK_DAC_CS,
672 "cs", 2, GPIO_ACTIVE_HIGH),
673 { },
674 },
675};
676
677static struct lis3lv02d_platform_data lis3_pdata = {
678 .click_flags = LIS3_CLICK_SINGLE_X |
679 LIS3_CLICK_SINGLE_Y |
680 LIS3_CLICK_SINGLE_Z,
681 .irq_cfg = LIS3_IRQ1_CLICK | LIS3_IRQ2_CLICK,
682 .wakeup_flags = LIS3_WAKEUP_X_LO | LIS3_WAKEUP_X_HI |
683 LIS3_WAKEUP_Y_LO | LIS3_WAKEUP_Y_HI |
684 LIS3_WAKEUP_Z_LO | LIS3_WAKEUP_Z_HI,
685 .wakeup_thresh = 10,
686 .click_thresh_x = 10,
687 .click_thresh_y = 10,
688 .click_thresh_z = 10,
689};
690
691#define SPI_AK4104 \
692{ \
693 .modalias = "ak4104-codec", \
694 .max_speed_hz = 10000, \
695 .bus_num = 0, \
696 .chip_select = 0, \
697}
698
699#define SPI_LIS3 \
700{ \
701 .modalias = "lis3lv02d_spi", \
702 .max_speed_hz = 1000000, \
703 .bus_num = 0, \
704 .chip_select = 1, \
705 .platform_data = &lis3_pdata, \
706 .irq = PXA_GPIO_TO_IRQ(GPIO_ACCEL_IRQ), \
707}
708
709#define SPI_DAC7512 \
710{ \
711 .modalias = "dac7512", \
712 .max_speed_hz = 1000000, \
713 .bus_num = 0, \
714 .chip_select = 2, \
715}
716
717static struct spi_board_info connector_spi_devices[] __initdata = {
718 SPI_AK4104,
719 SPI_DAC7512,
720};
721
722static struct spi_board_info speaker_spi_devices[] __initdata = {
723 SPI_DAC7512,
724};
725
726static struct spi_board_info controller_spi_devices[] __initdata = {
727 SPI_LIS3,
728};
729
730/**
731 * MMC for Marvell Libertas 8688 via SDIO
732 */
733
734static int raumfeld_mci_init(struct device *dev, irq_handler_t isr, void *data)
735{
736 gpio_set_value(GPIO_W2W_RESET, 1);
737 gpio_set_value(GPIO_W2W_PDN, 1);
738
739 return 0;
740}
741
742static void raumfeld_mci_exit(struct device *dev, void *data)
743{
744 gpio_set_value(GPIO_W2W_RESET, 0);
745 gpio_set_value(GPIO_W2W_PDN, 0);
746}
747
748static struct pxamci_platform_data raumfeld_mci_platform_data = {
749 .init = raumfeld_mci_init,
750 .exit = raumfeld_mci_exit,
751 .detect_delay_ms = 200,
752};
753
754/*
755 * External power / charge logic
756 */
757
758static int power_supply_init(struct device *dev)
759{
760 return 0;
761}
762
763static void power_supply_exit(struct device *dev)
764{
765}
766
767static int raumfeld_is_ac_online(void)
768{
769 return !gpio_get_value(GPIO_CHARGE_DC_OK);
770}
771
772static int raumfeld_is_usb_online(void)
773{
774 return 0;
775}
776
777static char *raumfeld_power_supplicants[] = { "ds2760-battery.0" };
778
779static void raumfeld_power_signal_charged(void)
780{
781 struct power_supply *psy =
782 power_supply_get_by_name(raumfeld_power_supplicants[0]);
783
784 if (psy) {
785 power_supply_set_battery_charged(psy);
786 power_supply_put(psy);
787 }
788}
789
790static int raumfeld_power_resume(void)
791{
792 /* check if GPIO_CHARGE_DONE went low while we were sleeping */
793 if (!gpio_get_value(GPIO_CHARGE_DONE))
794 raumfeld_power_signal_charged();
795
796 return 0;
797}
798
799static struct pda_power_pdata power_supply_info = {
800 .init = power_supply_init,
801 .is_ac_online = raumfeld_is_ac_online,
802 .is_usb_online = raumfeld_is_usb_online,
803 .exit = power_supply_exit,
804 .supplied_to = raumfeld_power_supplicants,
805 .num_supplicants = ARRAY_SIZE(raumfeld_power_supplicants),
806 .resume = raumfeld_power_resume,
807};
808
809static struct resource power_supply_resources[] = {
810 {
811 .name = "ac",
812 .flags = IORESOURCE_IRQ |
813 IORESOURCE_IRQ_HIGHEDGE | IORESOURCE_IRQ_LOWEDGE,
814 .start = GPIO_CHARGE_DC_OK,
815 .end = GPIO_CHARGE_DC_OK,
816 },
817};
818
819static irqreturn_t charge_done_irq(int irq, void *dev_id)
820{
821 raumfeld_power_signal_charged();
822 return IRQ_HANDLED;
823}
824
825static struct platform_device raumfeld_power_supply = {
826 .name = "pda-power",
827 .id = -1,
828 .dev = {
829 .platform_data = &power_supply_info,
830 },
831 .resource = power_supply_resources,
832 .num_resources = ARRAY_SIZE(power_supply_resources),
833};
834
835static void __init raumfeld_power_init(void)
836{
837 int ret;
838
839 /* Set PEN2 high to enable maximum charge current */
840 ret = gpio_request(GPIO_CHRG_PEN2, "CHRG_PEN2");
841 if (ret < 0)
842 pr_warn("Unable to request GPIO_CHRG_PEN2\n");
843 else
844 gpio_direction_output(GPIO_CHRG_PEN2, 1);
845
846 ret = gpio_request(GPIO_CHARGE_DC_OK, "CABLE_DC_OK");
847 if (ret < 0)
848 pr_warn("Unable to request GPIO_CHARGE_DC_OK\n");
849
850 ret = gpio_request(GPIO_CHARGE_USB_SUSP, "CHARGE_USB_SUSP");
851 if (ret < 0)
852 pr_warn("Unable to request GPIO_CHARGE_USB_SUSP\n");
853 else
854 gpio_direction_output(GPIO_CHARGE_USB_SUSP, 0);
855
856 power_supply_resources[0].start = gpio_to_irq(GPIO_CHARGE_DC_OK);
857 power_supply_resources[0].end = gpio_to_irq(GPIO_CHARGE_DC_OK);
858
859 ret = request_irq(gpio_to_irq(GPIO_CHARGE_DONE),
860 &charge_done_irq, IORESOURCE_IRQ_LOWEDGE,
861 "charge_done", NULL);
862
863 if (ret < 0)
864 printk(KERN_ERR "%s: unable to register irq %d\n", __func__,
865 GPIO_CHARGE_DONE);
866 else
867 platform_device_register(&raumfeld_power_supply);
868}
869
870/* Fixed regulator for AUDIO_VA, 0-0048 maps to the cs4270 codec device */
871
872static struct regulator_consumer_supply audio_va_consumer_supply =
873 REGULATOR_SUPPLY("va", "0-0048");
874
875static struct regulator_init_data audio_va_initdata = {
876 .consumer_supplies = &audio_va_consumer_supply,
877 .num_consumer_supplies = 1,
878 .constraints = {
879 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
880 },
881};
882
883static struct fixed_voltage_config audio_va_config = {
884 .supply_name = "audio_va",
885 .microvolts = 5000000,
886 .enable_high = 1,
887 .enabled_at_boot = 0,
888 .init_data = &audio_va_initdata,
889};
890
891static struct platform_device audio_va_device = {
892 .name = "reg-fixed-voltage",
893 .id = 0,
894 .dev = {
895 .platform_data = &audio_va_config,
896 },
897};
898
899static struct gpiod_lookup_table audio_va_gpiod_table = {
900 .dev_id = "reg-fixed-voltage.0",
901 .table = {
902 GPIO_LOOKUP("gpio-pxa", GPIO_AUDIO_VA_ENABLE,
903 NULL, GPIO_ACTIVE_HIGH),
904 { },
905 },
906};
907
908/* Dummy supplies for Codec's VD/VLC */
909
910static struct regulator_consumer_supply audio_dummy_supplies[] = {
911 REGULATOR_SUPPLY("vd", "0-0048"),
912 REGULATOR_SUPPLY("vlc", "0-0048"),
913};
914
915static struct regulator_init_data audio_dummy_initdata = {
916 .consumer_supplies = audio_dummy_supplies,
917 .num_consumer_supplies = ARRAY_SIZE(audio_dummy_supplies),
918 .constraints = {
919 .valid_ops_mask = REGULATOR_CHANGE_STATUS,
920 },
921};
922
923static struct fixed_voltage_config audio_dummy_config = {
924 .supply_name = "audio_vd",
925 .microvolts = 3300000,
926 .init_data = &audio_dummy_initdata,
927};
928
929static struct platform_device audio_supply_dummy_device = {
930 .name = "reg-fixed-voltage",
931 .id = 1,
932 .dev = {
933 .platform_data = &audio_dummy_config,
934 },
935};
936
937static struct platform_device *audio_regulator_devices[] = {
938 &audio_va_device,
939 &audio_supply_dummy_device,
940};
941
942/**
943 * Regulator support via MAX8660
944 */
945
946static struct regulator_consumer_supply vcc_mmc_supply =
947 REGULATOR_SUPPLY("vmmc", "pxa2xx-mci.0");
948
949static struct regulator_init_data vcc_mmc_init_data = {
950 .constraints = {
951 .min_uV = 3300000,
952 .max_uV = 3300000,
953 .valid_modes_mask = REGULATOR_MODE_NORMAL,
954 .valid_ops_mask = REGULATOR_CHANGE_STATUS |
955 REGULATOR_CHANGE_VOLTAGE |
956 REGULATOR_CHANGE_MODE,
957 },
958 .consumer_supplies = &vcc_mmc_supply,
959 .num_consumer_supplies = 1,
960};
961
962static struct max8660_subdev_data max8660_v6_subdev_data = {
963 .id = MAX8660_V6,
964 .name = "vmmc",
965 .platform_data = &vcc_mmc_init_data,
966};
967
968static struct max8660_platform_data max8660_pdata = {
969 .subdevs = &max8660_v6_subdev_data,
970 .num_subdevs = 1,
971};
972
973/**
974 * I2C devices
975 */
976
977static struct i2c_board_info raumfeld_pwri2c_board_info = {
978 .type = "max8660",
979 .addr = 0x34,
980 .platform_data = &max8660_pdata,
981};
982
983static struct i2c_board_info raumfeld_connector_i2c_board_info __initdata = {
984 .type = "cs4270",
985 .addr = 0x48,
986};
987
988static struct gpiod_lookup_table raumfeld_controller_gpios_table = {
989 .dev_id = "0-000a",
990 .table = {
991 GPIO_LOOKUP("gpio-pxa",
992 GPIO_TOUCH_IRQ, "attn", GPIO_ACTIVE_HIGH),
993 { },
994 },
995};
996
997static const struct resource raumfeld_controller_resources[] __initconst = {
998 {
999 .start = PXA_GPIO_TO_IRQ(GPIO_TOUCH_IRQ),
1000 .end = PXA_GPIO_TO_IRQ(GPIO_TOUCH_IRQ),
1001 .flags = IORESOURCE_IRQ | IRQF_TRIGGER_HIGH,
1002 },
1003};
1004
1005static struct i2c_board_info raumfeld_controller_i2c_board_info __initdata = {
1006 .type = "eeti_ts",
1007 .addr = 0x0a,
1008 .resources = raumfeld_controller_resources,
1009 .num_resources = ARRAY_SIZE(raumfeld_controller_resources),
1010};
1011
1012static struct platform_device *raumfeld_common_devices[] = {
1013 &raumfeld_gpio_keys_device,
1014 &raumfeld_led_device,
1015 &raumfeld_spi_device,
1016};
1017
1018static void __init raumfeld_audio_init(void)
1019{
1020 int ret;
1021
1022 ret = gpio_request(GPIO_CODEC_RESET, "cs4270 reset");
1023 if (ret < 0)
1024 pr_warn("unable to request GPIO_CODEC_RESET\n");
1025 else
1026 gpio_direction_output(GPIO_CODEC_RESET, 1);
1027
1028 ret = gpio_request(GPIO_SPDIF_RESET, "ak4104 s/pdif reset");
1029 if (ret < 0)
1030 pr_warn("unable to request GPIO_SPDIF_RESET\n");
1031 else
1032 gpio_direction_output(GPIO_SPDIF_RESET, 1);
1033
1034 ret = gpio_request(GPIO_MCLK_RESET, "MCLK reset");
1035 if (ret < 0)
1036 pr_warn("unable to request GPIO_MCLK_RESET\n");
1037 else
1038 gpio_direction_output(GPIO_MCLK_RESET, 1);
1039
1040 gpiod_add_lookup_table(&audio_va_gpiod_table);
1041 platform_add_devices(ARRAY_AND_SIZE(audio_regulator_devices));
1042}
1043
1044static void __init raumfeld_common_init(void)
1045{
1046 int ret;
1047
1048 /* The on/off button polarity has changed after revision 1 */
1049 if ((system_rev & 0xff) > 1) {
1050 int i;
1051
1052 for (i = 0; i < ARRAY_SIZE(gpio_keys_button); i++)
1053 if (!strcmp(gpio_keys_button[i].desc, "on_off button"))
1054 gpio_keys_button[i].active_low = 1;
1055 }
1056
1057 enable_irq_wake(IRQ_WAKEUP0);
1058
1059 pxa3xx_set_nand_info(&raumfeld_nand_info);
1060 pxa3xx_set_i2c_power_info(NULL);
1061 pxa_set_ohci_info(&raumfeld_ohci_info);
1062 pxa_set_mci_info(&raumfeld_mci_platform_data);
1063 pxa_set_i2c_info(NULL);
1064 pxa_set_ffuart_info(NULL);
1065
1066 ret = gpio_request(GPIO_W2W_RESET, "Wi2Wi reset");
1067 if (ret < 0)
1068 pr_warn("Unable to request GPIO_W2W_RESET\n");
1069 else
1070 gpio_direction_output(GPIO_W2W_RESET, 0);
1071
1072 ret = gpio_request(GPIO_W2W_PDN, "Wi2Wi powerup");
1073 if (ret < 0)
1074 pr_warn("Unable to request GPIO_W2W_PDN\n");
1075 else
1076 gpio_direction_output(GPIO_W2W_PDN, 0);
1077
1078 /* this can be used to switch off the device */
1079 ret = gpio_request(GPIO_SHUTDOWN_SUPPLY, "supply shutdown");
1080 if (ret < 0)
1081 pr_warn("Unable to request GPIO_SHUTDOWN_SUPPLY\n");
1082 else
1083 gpio_direction_output(GPIO_SHUTDOWN_SUPPLY, 0);
1084
1085 gpiod_add_lookup_table(&raumfeld_spi_gpiod_table);
1086 platform_add_devices(ARRAY_AND_SIZE(raumfeld_common_devices));
1087 i2c_register_board_info(1, &raumfeld_pwri2c_board_info, 1);
1088}
1089
1090static void __init __maybe_unused raumfeld_controller_init(void)
1091{
1092 int ret;
1093
1094 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_controller_pin_config));
1095
1096 gpiod_add_lookup_table(&raumfeld_rotary_gpios_table);
1097 device_add_properties(&rotary_encoder_device.dev,
1098 raumfeld_rotary_properties);
1099 platform_device_register(&rotary_encoder_device);
1100
1101 spi_register_board_info(ARRAY_AND_SIZE(controller_spi_devices));
1102
1103 gpiod_add_lookup_table(&raumfeld_controller_gpios_table);
1104 i2c_register_board_info(0, &raumfeld_controller_i2c_board_info, 1);
1105
1106 ret = gpio_request(GPIO_SHUTDOWN_BATT, "battery shutdown");
1107 if (ret < 0)
1108 pr_warn("Unable to request GPIO_SHUTDOWN_BATT\n");
1109 else
1110 gpio_direction_output(GPIO_SHUTDOWN_BATT, 0);
1111
1112 raumfeld_common_init();
1113 raumfeld_power_init();
1114 raumfeld_lcd_init();
1115 raumfeld_w1_init();
1116}
1117
1118static void __init __maybe_unused raumfeld_connector_init(void)
1119{
1120 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_connector_pin_config));
1121 spi_register_board_info(ARRAY_AND_SIZE(connector_spi_devices));
1122 i2c_register_board_info(0, &raumfeld_connector_i2c_board_info, 1);
1123
1124 platform_device_register(&smc91x_device);
1125
1126 raumfeld_audio_init();
1127 raumfeld_common_init();
1128}
1129
1130static void __init __maybe_unused raumfeld_speaker_init(void)
1131{
1132 pxa3xx_mfp_config(ARRAY_AND_SIZE(raumfeld_speaker_pin_config));
1133 spi_register_board_info(ARRAY_AND_SIZE(speaker_spi_devices));
1134 i2c_register_board_info(0, &raumfeld_connector_i2c_board_info, 1);
1135
1136 platform_device_register(&smc91x_device);
1137
1138 gpiod_add_lookup_table(&raumfeld_rotary_gpios_table);
1139 device_add_properties(&rotary_encoder_device.dev,
1140 raumfeld_rotary_properties);
1141 platform_device_register(&rotary_encoder_device);
1142
1143 raumfeld_audio_init();
1144 raumfeld_common_init();
1145}
1146
1147/* physical memory regions */
1148#define RAUMFELD_SDRAM_BASE 0xa0000000 /* SDRAM region */
1149
1150#ifdef CONFIG_MACH_RAUMFELD_RC
1151MACHINE_START(RAUMFELD_RC, "Raumfeld Controller")
1152 .atag_offset = 0x100,
1153 .init_machine = raumfeld_controller_init,
1154 .map_io = pxa3xx_map_io,
1155 .nr_irqs = PXA_NR_IRQS,
1156 .init_irq = pxa3xx_init_irq,
1157 .handle_irq = pxa3xx_handle_irq,
1158 .init_time = pxa_timer_init,
1159 .restart = pxa_restart,
1160MACHINE_END
1161#endif
1162
1163#ifdef CONFIG_MACH_RAUMFELD_CONNECTOR
1164MACHINE_START(RAUMFELD_CONNECTOR, "Raumfeld Connector")
1165 .atag_offset = 0x100,
1166 .init_machine = raumfeld_connector_init,
1167 .map_io = pxa3xx_map_io,
1168 .nr_irqs = PXA_NR_IRQS,
1169 .init_irq = pxa3xx_init_irq,
1170 .handle_irq = pxa3xx_handle_irq,
1171 .init_time = pxa_timer_init,
1172 .restart = pxa_restart,
1173MACHINE_END
1174#endif
1175
1176#ifdef CONFIG_MACH_RAUMFELD_SPEAKER
1177MACHINE_START(RAUMFELD_SPEAKER, "Raumfeld Speaker")
1178 .atag_offset = 0x100,
1179 .init_machine = raumfeld_speaker_init,
1180 .map_io = pxa3xx_map_io,
1181 .nr_irqs = PXA_NR_IRQS,
1182 .init_irq = pxa3xx_init_irq,
1183 .handle_irq = pxa3xx_handle_irq,
1184 .init_time = pxa_timer_init,
1185 .restart = pxa_restart,
1186MACHINE_END
1187#endif
diff --git a/arch/arm/mach-pxa/spitz.c b/arch/arm/mach-pxa/spitz.c
index 306818e2cf54..8dac824a85df 100644
--- a/arch/arm/mach-pxa/spitz.c
+++ b/arch/arm/mach-pxa/spitz.c
@@ -572,7 +572,7 @@ static struct spi_board_info spitz_spi_devices[] = {
572 }, 572 },
573}; 573};
574 574
575static struct pxa2xx_spi_master spitz_spi_info = { 575static struct pxa2xx_spi_controller spitz_spi_info = {
576 .num_chipselect = 3, 576 .num_chipselect = 3,
577}; 577};
578 578
diff --git a/arch/arm/mach-pxa/stargate2.c b/arch/arm/mach-pxa/stargate2.c
index e0d6c872270a..c28d19b126a7 100644
--- a/arch/arm/mach-pxa/stargate2.c
+++ b/arch/arm/mach-pxa/stargate2.c
@@ -337,15 +337,15 @@ static struct platform_device stargate2_flash_device = {
337 .num_resources = 1, 337 .num_resources = 1,
338}; 338};
339 339
340static struct pxa2xx_spi_master pxa_ssp_master_0_info = { 340static struct pxa2xx_spi_controller pxa_ssp_master_0_info = {
341 .num_chipselect = 1, 341 .num_chipselect = 1,
342}; 342};
343 343
344static struct pxa2xx_spi_master pxa_ssp_master_1_info = { 344static struct pxa2xx_spi_controller pxa_ssp_master_1_info = {
345 .num_chipselect = 1, 345 .num_chipselect = 1,
346}; 346};
347 347
348static struct pxa2xx_spi_master pxa_ssp_master_2_info = { 348static struct pxa2xx_spi_controller pxa_ssp_master_2_info = {
349 .num_chipselect = 1, 349 .num_chipselect = 1,
350}; 350};
351 351
diff --git a/arch/arm/mach-pxa/tosa.c b/arch/arm/mach-pxa/tosa.c
index e8a93c088c35..7439798d58e4 100644
--- a/arch/arm/mach-pxa/tosa.c
+++ b/arch/arm/mach-pxa/tosa.c
@@ -813,7 +813,7 @@ static struct platform_device tosa_bt_device = {
813 .dev.platform_data = &tosa_bt_data, 813 .dev.platform_data = &tosa_bt_data,
814}; 814};
815 815
816static struct pxa2xx_spi_master pxa_ssp_master_info = { 816static struct pxa2xx_spi_controller pxa_ssp_master_info = {
817 .num_chipselect = 1, 817 .num_chipselect = 1,
818}; 818};
819 819
diff --git a/arch/arm/mach-pxa/z2.c b/arch/arm/mach-pxa/z2.c
index e2353e75bb28..ad082e11e2a4 100644
--- a/arch/arm/mach-pxa/z2.c
+++ b/arch/arm/mach-pxa/z2.c
@@ -607,12 +607,12 @@ static struct spi_board_info spi_board_info[] __initdata = {
607}, 607},
608}; 608};
609 609
610static struct pxa2xx_spi_master pxa_ssp1_master_info = { 610static struct pxa2xx_spi_controller pxa_ssp1_master_info = {
611 .num_chipselect = 1, 611 .num_chipselect = 1,
612 .enable_dma = 1, 612 .enable_dma = 1,
613}; 613};
614 614
615static struct pxa2xx_spi_master pxa_ssp2_master_info = { 615static struct pxa2xx_spi_controller pxa_ssp2_master_info = {
616 .num_chipselect = 1, 616 .num_chipselect = 1,
617}; 617};
618 618
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c
index c411f79d4cb5..3fd1119c14d5 100644
--- a/arch/arm/mach-pxa/zeus.c
+++ b/arch/arm/mach-pxa/zeus.c
@@ -391,7 +391,7 @@ static struct platform_device zeus_sram_device = {
391}; 391};
392 392
393/* SPI interface on SSP3 */ 393/* SPI interface on SSP3 */
394static struct pxa2xx_spi_master pxa2xx_spi_ssp3_master_info = { 394static struct pxa2xx_spi_controller pxa2xx_spi_ssp3_master_info = {
395 .num_chipselect = 1, 395 .num_chipselect = 1,
396 .enable_dma = 1, 396 .enable_dma = 1,
397}; 397};
@@ -426,7 +426,7 @@ static struct gpiod_lookup_table can_regulator_gpiod_table = {
426 .dev_id = "reg-fixed-voltage.0", 426 .dev_id = "reg-fixed-voltage.0",
427 .table = { 427 .table = {
428 GPIO_LOOKUP("gpio-pxa", ZEUS_CAN_SHDN_GPIO, 428 GPIO_LOOKUP("gpio-pxa", ZEUS_CAN_SHDN_GPIO,
429 NULL, GPIO_ACTIVE_HIGH), 429 NULL, GPIO_ACTIVE_LOW),
430 { }, 430 { },
431 }, 431 },
432}; 432};
@@ -547,7 +547,6 @@ static struct regulator_init_data zeus_ohci_regulator_data = {
547static struct fixed_voltage_config zeus_ohci_regulator_config = { 547static struct fixed_voltage_config zeus_ohci_regulator_config = {
548 .supply_name = "vbus2", 548 .supply_name = "vbus2",
549 .microvolts = 5000000, /* 5.0V */ 549 .microvolts = 5000000, /* 5.0V */
550 .enable_high = 1,
551 .startup_delay = 0, 550 .startup_delay = 0,
552 .init_data = &zeus_ohci_regulator_data, 551 .init_data = &zeus_ohci_regulator_data,
553}; 552};
diff --git a/arch/arm/mach-qcom/platsmp.c b/arch/arm/mach-qcom/platsmp.c
index 5494c9e0c909..99a6a5e809e0 100644
--- a/arch/arm/mach-qcom/platsmp.c
+++ b/arch/arm/mach-qcom/platsmp.c
@@ -46,8 +46,6 @@
46 46
47extern void secondary_startup_arm(void); 47extern void secondary_startup_arm(void);
48 48
49static DEFINE_SPINLOCK(boot_lock);
50
51#ifdef CONFIG_HOTPLUG_CPU 49#ifdef CONFIG_HOTPLUG_CPU
52static void qcom_cpu_die(unsigned int cpu) 50static void qcom_cpu_die(unsigned int cpu)
53{ 51{
@@ -55,15 +53,6 @@ static void qcom_cpu_die(unsigned int cpu)
55} 53}
56#endif 54#endif
57 55
58static void qcom_secondary_init(unsigned int cpu)
59{
60 /*
61 * Synchronise with the boot thread.
62 */
63 spin_lock(&boot_lock);
64 spin_unlock(&boot_lock);
65}
66
67static int scss_release_secondary(unsigned int cpu) 56static int scss_release_secondary(unsigned int cpu)
68{ 57{
69 struct device_node *node; 58 struct device_node *node;
@@ -281,24 +270,12 @@ static int qcom_boot_secondary(unsigned int cpu, int (*func)(unsigned int))
281 } 270 }
282 271
283 /* 272 /*
284 * set synchronisation state between this boot processor
285 * and the secondary one
286 */
287 spin_lock(&boot_lock);
288
289 /*
290 * Send the secondary CPU a soft interrupt, thereby causing 273 * Send the secondary CPU a soft interrupt, thereby causing
291 * the boot monitor to read the system wide flags register, 274 * the boot monitor to read the system wide flags register,
292 * and branch to the address found there. 275 * and branch to the address found there.
293 */ 276 */
294 arch_send_wakeup_ipi_mask(cpumask_of(cpu)); 277 arch_send_wakeup_ipi_mask(cpumask_of(cpu));
295 278
296 /*
297 * now the secondary core is starting up let it run its
298 * calibrations, then wait for it to finish
299 */
300 spin_unlock(&boot_lock);
301
302 return ret; 279 return ret;
303} 280}
304 281
@@ -334,7 +311,6 @@ static void __init qcom_smp_prepare_cpus(unsigned int max_cpus)
334 311
335static const struct smp_operations smp_msm8660_ops __initconst = { 312static const struct smp_operations smp_msm8660_ops __initconst = {
336 .smp_prepare_cpus = qcom_smp_prepare_cpus, 313 .smp_prepare_cpus = qcom_smp_prepare_cpus,
337 .smp_secondary_init = qcom_secondary_init,
338 .smp_boot_secondary = msm8660_boot_secondary, 314 .smp_boot_secondary = msm8660_boot_secondary,
339#ifdef CONFIG_HOTPLUG_CPU 315#ifdef CONFIG_HOTPLUG_CPU
340 .cpu_die = qcom_cpu_die, 316 .cpu_die = qcom_cpu_die,
@@ -344,7 +320,6 @@ CPU_METHOD_OF_DECLARE(qcom_smp, "qcom,gcc-msm8660", &smp_msm8660_ops);
344 320
345static const struct smp_operations qcom_smp_kpssv1_ops __initconst = { 321static const struct smp_operations qcom_smp_kpssv1_ops __initconst = {
346 .smp_prepare_cpus = qcom_smp_prepare_cpus, 322 .smp_prepare_cpus = qcom_smp_prepare_cpus,
347 .smp_secondary_init = qcom_secondary_init,
348 .smp_boot_secondary = kpssv1_boot_secondary, 323 .smp_boot_secondary = kpssv1_boot_secondary,
349#ifdef CONFIG_HOTPLUG_CPU 324#ifdef CONFIG_HOTPLUG_CPU
350 .cpu_die = qcom_cpu_die, 325 .cpu_die = qcom_cpu_die,
@@ -354,7 +329,6 @@ CPU_METHOD_OF_DECLARE(qcom_smp_kpssv1, "qcom,kpss-acc-v1", &qcom_smp_kpssv1_ops)
354 329
355static const struct smp_operations qcom_smp_kpssv2_ops __initconst = { 330static const struct smp_operations qcom_smp_kpssv2_ops __initconst = {
356 .smp_prepare_cpus = qcom_smp_prepare_cpus, 331 .smp_prepare_cpus = qcom_smp_prepare_cpus,
357 .smp_secondary_init = qcom_secondary_init,
358 .smp_boot_secondary = kpssv2_boot_secondary, 332 .smp_boot_secondary = kpssv2_boot_secondary,
359#ifdef CONFIG_HOTPLUG_CPU 333#ifdef CONFIG_HOTPLUG_CPU
360 .cpu_die = qcom_cpu_die, 334 .cpu_die = qcom_cpu_die,
diff --git a/arch/arm/mach-s3c24xx/mach-osiris-dvs.c b/arch/arm/mach-s3c24xx/mach-osiris-dvs.c
index 058ce73137e8..5d819b6ea428 100644
--- a/arch/arm/mach-s3c24xx/mach-osiris-dvs.c
+++ b/arch/arm/mach-s3c24xx/mach-osiris-dvs.c
@@ -65,16 +65,16 @@ static int osiris_dvs_notify(struct notifier_block *nb,
65 65
66 switch (val) { 66 switch (val) {
67 case CPUFREQ_PRECHANGE: 67 case CPUFREQ_PRECHANGE:
68 if (old_dvs & !new_dvs || 68 if ((old_dvs && !new_dvs) ||
69 cur_dvs & !new_dvs) { 69 (cur_dvs && !new_dvs)) {
70 pr_debug("%s: exiting dvs\n", __func__); 70 pr_debug("%s: exiting dvs\n", __func__);
71 cur_dvs = false; 71 cur_dvs = false;
72 gpio_set_value(OSIRIS_GPIO_DVS, 1); 72 gpio_set_value(OSIRIS_GPIO_DVS, 1);
73 } 73 }
74 break; 74 break;
75 case CPUFREQ_POSTCHANGE: 75 case CPUFREQ_POSTCHANGE:
76 if (!old_dvs & new_dvs || 76 if ((!old_dvs && new_dvs) ||
77 !cur_dvs & new_dvs) { 77 (!cur_dvs && new_dvs)) {
78 pr_debug("entering dvs\n"); 78 pr_debug("entering dvs\n");
79 cur_dvs = true; 79 cur_dvs = true;
80 gpio_set_value(OSIRIS_GPIO_DVS, 0); 80 gpio_set_value(OSIRIS_GPIO_DVS, 0);
diff --git a/arch/arm/mach-sa1100/assabet.c b/arch/arm/mach-sa1100/assabet.c
index dfa42496ec27..d09c3f236186 100644
--- a/arch/arm/mach-sa1100/assabet.c
+++ b/arch/arm/mach-sa1100/assabet.c
@@ -469,7 +469,6 @@ static struct regulator_consumer_supply assabet_cf_vcc_consumers[] = {
469static struct fixed_voltage_config assabet_cf_vcc_pdata __initdata = { 469static struct fixed_voltage_config assabet_cf_vcc_pdata __initdata = {
470 .supply_name = "cf-power", 470 .supply_name = "cf-power",
471 .microvolts = 3300000, 471 .microvolts = 3300000,
472 .enable_high = 1,
473}; 472};
474 473
475static struct gpiod_lookup_table assabet_cf_vcc_gpio_table = { 474static struct gpiod_lookup_table assabet_cf_vcc_gpio_table = {
diff --git a/arch/arm/mach-sa1100/simpad.c b/arch/arm/mach-sa1100/simpad.c
index 406487e76a5c..c7fb9a73e4c5 100644
--- a/arch/arm/mach-sa1100/simpad.c
+++ b/arch/arm/mach-sa1100/simpad.c
@@ -18,7 +18,6 @@
18#include <linux/mtd/partitions.h> 18#include <linux/mtd/partitions.h>
19#include <linux/io.h> 19#include <linux/io.h>
20#include <linux/gpio/driver.h> 20#include <linux/gpio/driver.h>
21#include <linux/gpio/machine.h>
22 21
23#include <mach/hardware.h> 22#include <mach/hardware.h>
24#include <asm/setup.h> 23#include <asm/setup.h>
diff --git a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
index 8e50daa99151..dc526ef2e9b3 100644
--- a/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
+++ b/arch/arm/mach-shmobile/regulator-quirk-rcar-gen2.c
@@ -40,6 +40,7 @@
40struct regulator_quirk { 40struct regulator_quirk {
41 struct list_head list; 41 struct list_head list;
42 const struct of_device_id *id; 42 const struct of_device_id *id;
43 struct device_node *np;
43 struct of_phandle_args irq_args; 44 struct of_phandle_args irq_args;
44 struct i2c_msg i2c_msg; 45 struct i2c_msg i2c_msg;
45 bool shared; /* IRQ line is shared */ 46 bool shared; /* IRQ line is shared */
@@ -101,6 +102,9 @@ static int regulator_quirk_notify(struct notifier_block *nb,
101 if (!pos->shared) 102 if (!pos->shared)
102 continue; 103 continue;
103 104
105 if (pos->np->parent != client->dev.parent->of_node)
106 continue;
107
104 dev_info(&client->dev, "clearing %s@0x%02x interrupts\n", 108 dev_info(&client->dev, "clearing %s@0x%02x interrupts\n",
105 pos->id->compatible, pos->i2c_msg.addr); 109 pos->id->compatible, pos->i2c_msg.addr);
106 110
@@ -165,6 +169,7 @@ static int __init rcar_gen2_regulator_quirk(void)
165 memcpy(&quirk->i2c_msg, id->data, sizeof(quirk->i2c_msg)); 169 memcpy(&quirk->i2c_msg, id->data, sizeof(quirk->i2c_msg));
166 170
167 quirk->id = id; 171 quirk->id = id;
172 quirk->np = np;
168 quirk->i2c_msg.addr = addr; 173 quirk->i2c_msg.addr = addr;
169 174
170 ret = of_irq_parse_one(np, 0, argsa); 175 ret = of_irq_parse_one(np, 0, argsa);
diff --git a/arch/arm/mach-socfpga/socfpga.c b/arch/arm/mach-socfpga/socfpga.c
index 5fb6f79059a8..816da0eb6616 100644
--- a/arch/arm/mach-socfpga/socfpga.c
+++ b/arch/arm/mach-socfpga/socfpga.c
@@ -19,6 +19,7 @@
19#include <linux/of_irq.h> 19#include <linux/of_irq.h>
20#include <linux/of_platform.h> 20#include <linux/of_platform.h>
21#include <linux/reboot.h> 21#include <linux/reboot.h>
22#include <linux/reset/socfpga.h>
22 23
23#include <asm/hardware/cache-l2x0.h> 24#include <asm/hardware/cache-l2x0.h>
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
@@ -64,6 +65,7 @@ static void __init socfpga_init_irq(void)
64 65
65 if (IS_ENABLED(CONFIG_EDAC_ALTERA_OCRAM)) 66 if (IS_ENABLED(CONFIG_EDAC_ALTERA_OCRAM))
66 socfpga_init_ocram_ecc(); 67 socfpga_init_ocram_ecc();
68 socfpga_reset_init();
67} 69}
68 70
69static void __init socfpga_arria10_init_irq(void) 71static void __init socfpga_arria10_init_irq(void)
@@ -74,6 +76,7 @@ static void __init socfpga_arria10_init_irq(void)
74 socfpga_init_arria10_l2_ecc(); 76 socfpga_init_arria10_l2_ecc();
75 if (IS_ENABLED(CONFIG_EDAC_ALTERA_OCRAM)) 77 if (IS_ENABLED(CONFIG_EDAC_ALTERA_OCRAM))
76 socfpga_init_arria10_ocram_ecc(); 78 socfpga_init_arria10_ocram_ecc();
79 socfpga_reset_init();
77} 80}
78 81
79static void socfpga_cyclone5_restart(enum reboot_mode mode, const char *cmd) 82static void socfpga_cyclone5_restart(enum reboot_mode mode, const char *cmd)
diff --git a/arch/arm/mach-spear/generic.h b/arch/arm/mach-spear/generic.h
index 909b97c0b237..25b4c5e66e39 100644
--- a/arch/arm/mach-spear/generic.h
+++ b/arch/arm/mach-spear/generic.h
@@ -20,6 +20,8 @@
20 20
21#include <asm/mach/time.h> 21#include <asm/mach/time.h>
22 22
23extern volatile int spear_pen_release;
24
23extern void spear13xx_timer_init(void); 25extern void spear13xx_timer_init(void);
24extern void spear3xx_timer_init(void); 26extern void spear3xx_timer_init(void);
25extern struct pl022_ssp_controller pl022_plat_data; 27extern struct pl022_ssp_controller pl022_plat_data;
diff --git a/arch/arm/mach-spear/headsmp.S b/arch/arm/mach-spear/headsmp.S
index c52192dc3d9f..6e250b6c0aa2 100644
--- a/arch/arm/mach-spear/headsmp.S
+++ b/arch/arm/mach-spear/headsmp.S
@@ -43,5 +43,5 @@ pen: ldr r7, [r6]
43 43
44 .align 44 .align
451: .long . 451: .long .
46 .long pen_release 46 .long spear_pen_release
47ENDPROC(spear13xx_secondary_startup) 47ENDPROC(spear13xx_secondary_startup)
diff --git a/arch/arm/mach-spear/hotplug.c b/arch/arm/mach-spear/hotplug.c
index 12edd1cf8a12..0dd84f609627 100644
--- a/arch/arm/mach-spear/hotplug.c
+++ b/arch/arm/mach-spear/hotplug.c
@@ -16,6 +16,8 @@
16#include <asm/cp15.h> 16#include <asm/cp15.h>
17#include <asm/smp_plat.h> 17#include <asm/smp_plat.h>
18 18
19#include "generic.h"
20
19static inline void cpu_enter_lowpower(void) 21static inline void cpu_enter_lowpower(void)
20{ 22{
21 unsigned int v; 23 unsigned int v;
@@ -57,7 +59,7 @@ static inline void spear13xx_do_lowpower(unsigned int cpu, int *spurious)
57 for (;;) { 59 for (;;) {
58 wfi(); 60 wfi();
59 61
60 if (pen_release == cpu) { 62 if (spear_pen_release == cpu) {
61 /* 63 /*
62 * OK, proper wakeup, we're done 64 * OK, proper wakeup, we're done
63 */ 65 */
diff --git a/arch/arm/mach-spear/platsmp.c b/arch/arm/mach-spear/platsmp.c
index 39038a03836a..b1ff4bb86f6d 100644
--- a/arch/arm/mach-spear/platsmp.c
+++ b/arch/arm/mach-spear/platsmp.c
@@ -20,16 +20,21 @@
20#include <mach/spear.h> 20#include <mach/spear.h>
21#include "generic.h" 21#include "generic.h"
22 22
23/* XXX spear_pen_release is cargo culted code - DO NOT COPY XXX */
24volatile int spear_pen_release = -1;
25
23/* 26/*
24 * Write pen_release in a way that is guaranteed to be visible to all 27 * XXX CARGO CULTED CODE - DO NOT COPY XXX
25 * observers, irrespective of whether they're taking part in coherency 28 *
29 * Write spear_pen_release in a way that is guaranteed to be visible to
30 * all observers, irrespective of whether they're taking part in coherency
26 * or not. This is necessary for the hotplug code to work reliably. 31 * or not. This is necessary for the hotplug code to work reliably.
27 */ 32 */
28static void write_pen_release(int val) 33static void spear_write_pen_release(int val)
29{ 34{
30 pen_release = val; 35 spear_pen_release = val;
31 smp_wmb(); 36 smp_wmb();
32 sync_cache_w(&pen_release); 37 sync_cache_w(&spear_pen_release);
33} 38}
34 39
35static DEFINE_SPINLOCK(boot_lock); 40static DEFINE_SPINLOCK(boot_lock);
@@ -42,7 +47,7 @@ static void spear13xx_secondary_init(unsigned int cpu)
42 * let the primary processor know we're out of the 47 * let the primary processor know we're out of the
43 * pen, then head off into the C entry point 48 * pen, then head off into the C entry point
44 */ 49 */
45 write_pen_release(-1); 50 spear_write_pen_release(-1);
46 51
47 /* 52 /*
48 * Synchronise with the boot thread. 53 * Synchronise with the boot thread.
@@ -64,17 +69,17 @@ static int spear13xx_boot_secondary(unsigned int cpu, struct task_struct *idle)
64 /* 69 /*
65 * The secondary processor is waiting to be released from 70 * The secondary processor is waiting to be released from
66 * the holding pen - release it, then wait for it to flag 71 * the holding pen - release it, then wait for it to flag
67 * that it has been released by resetting pen_release. 72 * that it has been released by resetting spear_pen_release.
68 * 73 *
69 * Note that "pen_release" is the hardware CPU ID, whereas 74 * Note that "spear_pen_release" is the hardware CPU ID, whereas
70 * "cpu" is Linux's internal ID. 75 * "cpu" is Linux's internal ID.
71 */ 76 */
72 write_pen_release(cpu); 77 spear_write_pen_release(cpu);
73 78
74 timeout = jiffies + (1 * HZ); 79 timeout = jiffies + (1 * HZ);
75 while (time_before(jiffies, timeout)) { 80 while (time_before(jiffies, timeout)) {
76 smp_rmb(); 81 smp_rmb();
77 if (pen_release == -1) 82 if (spear_pen_release == -1)
78 break; 83 break;
79 84
80 udelay(10); 85 udelay(10);
@@ -86,7 +91,7 @@ static int spear13xx_boot_secondary(unsigned int cpu, struct task_struct *idle)
86 */ 91 */
87 spin_unlock(&boot_lock); 92 spin_unlock(&boot_lock);
88 93
89 return pen_release != -1 ? -ENOSYS : 0; 94 return spear_pen_release != -1 ? -ENOSYS : 0;
90} 95}
91 96
92/* 97/*
diff --git a/arch/arm/mach-sunxi/sunxi.c b/arch/arm/mach-sunxi/sunxi.c
index 8a7f301839c2..933b6930f024 100644
--- a/arch/arm/mach-sunxi/sunxi.c
+++ b/arch/arm/mach-sunxi/sunxi.c
@@ -14,6 +14,7 @@
14#include <linux/clocksource.h> 14#include <linux/clocksource.h>
15#include <linux/init.h> 15#include <linux/init.h>
16#include <linux/platform_device.h> 16#include <linux/platform_device.h>
17#include <linux/reset/sunxi.h>
17 18
18#include <asm/mach/arch.h> 19#include <asm/mach/arch.h>
19#include <asm/secure_cntvoff.h> 20#include <asm/secure_cntvoff.h>
@@ -37,7 +38,6 @@ static const char * const sun6i_board_dt_compat[] = {
37 NULL, 38 NULL,
38}; 39};
39 40
40extern void __init sun6i_reset_init(void);
41static void __init sun6i_timer_init(void) 41static void __init sun6i_timer_init(void)
42{ 42{
43 of_clk_init(NULL); 43 of_clk_init(NULL);
diff --git a/arch/arm/mach-tango/pm.c b/arch/arm/mach-tango/pm.c
index 028e50c6383f..a32c3b631484 100644
--- a/arch/arm/mach-tango/pm.c
+++ b/arch/arm/mach-tango/pm.c
@@ -3,6 +3,7 @@
3#include <linux/suspend.h> 3#include <linux/suspend.h>
4#include <asm/suspend.h> 4#include <asm/suspend.h>
5#include "smc.h" 5#include "smc.h"
6#include "pm.h"
6 7
7static int tango_pm_powerdown(unsigned long arg) 8static int tango_pm_powerdown(unsigned long arg)
8{ 9{
@@ -24,10 +25,7 @@ static const struct platform_suspend_ops tango_pm_ops = {
24 .valid = suspend_valid_only_mem, 25 .valid = suspend_valid_only_mem,
25}; 26};
26 27
27static int __init tango_pm_init(void) 28void __init tango_pm_init(void)
28{ 29{
29 suspend_set_ops(&tango_pm_ops); 30 suspend_set_ops(&tango_pm_ops);
30 return 0;
31} 31}
32
33late_initcall(tango_pm_init);
diff --git a/arch/arm/mach-tango/pm.h b/arch/arm/mach-tango/pm.h
new file mode 100644
index 000000000000..35ea705a0ee2
--- /dev/null
+++ b/arch/arm/mach-tango/pm.h
@@ -0,0 +1,7 @@
1/* SPDX-License-Identifier: GPL-2.0 */
2
3#ifdef CONFIG_SUSPEND
4void __init tango_pm_init(void);
5#else
6#define tango_pm_init NULL
7#endif
diff --git a/arch/arm/mach-tango/setup.c b/arch/arm/mach-tango/setup.c
index 677dd7b5efd9..824f90737b04 100644
--- a/arch/arm/mach-tango/setup.c
+++ b/arch/arm/mach-tango/setup.c
@@ -2,6 +2,7 @@
2#include <asm/mach/arch.h> 2#include <asm/mach/arch.h>
3#include <asm/hardware/cache-l2x0.h> 3#include <asm/hardware/cache-l2x0.h>
4#include "smc.h" 4#include "smc.h"
5#include "pm.h"
5 6
6static void tango_l2c_write(unsigned long val, unsigned int reg) 7static void tango_l2c_write(unsigned long val, unsigned int reg)
7{ 8{
@@ -15,4 +16,5 @@ DT_MACHINE_START(TANGO_DT, "Sigma Tango DT")
15 .dt_compat = tango_dt_compat, 16 .dt_compat = tango_dt_compat,
16 .l2c_aux_mask = ~0, 17 .l2c_aux_mask = ~0,
17 .l2c_write_sec = tango_l2c_write, 18 .l2c_write_sec = tango_l2c_write,
19 .init_late = tango_pm_init,
18MACHINE_END 20MACHINE_END
diff --git a/arch/arm/mach-tegra/iomap.h b/arch/arm/mach-tegra/iomap.h
index 9e5b2f869fc8..9bc291e76887 100644
--- a/arch/arm/mach-tegra/iomap.h
+++ b/arch/arm/mach-tegra/iomap.h
@@ -79,15 +79,24 @@
79#define TEGRA_PMC_BASE 0x7000E400 79#define TEGRA_PMC_BASE 0x7000E400
80#define TEGRA_PMC_SIZE SZ_256 80#define TEGRA_PMC_SIZE SZ_256
81 81
82#define TEGRA_MC_BASE 0x7000F000
83#define TEGRA_MC_SIZE SZ_1K
84
82#define TEGRA_EMC_BASE 0x7000F400 85#define TEGRA_EMC_BASE 0x7000F400
83#define TEGRA_EMC_SIZE SZ_1K 86#define TEGRA_EMC_SIZE SZ_1K
84 87
88#define TEGRA114_MC_BASE 0x70019000
89#define TEGRA114_MC_SIZE SZ_4K
90
85#define TEGRA_EMC0_BASE 0x7001A000 91#define TEGRA_EMC0_BASE 0x7001A000
86#define TEGRA_EMC0_SIZE SZ_2K 92#define TEGRA_EMC0_SIZE SZ_2K
87 93
88#define TEGRA_EMC1_BASE 0x7001A800 94#define TEGRA_EMC1_BASE 0x7001A800
89#define TEGRA_EMC1_SIZE SZ_2K 95#define TEGRA_EMC1_SIZE SZ_2K
90 96
97#define TEGRA124_MC_BASE 0x70019000
98#define TEGRA124_MC_SIZE SZ_4K
99
91#define TEGRA124_EMC_BASE 0x7001B000 100#define TEGRA124_EMC_BASE 0x7001B000
92#define TEGRA124_EMC_SIZE SZ_2K 101#define TEGRA124_EMC_SIZE SZ_2K
93 102
diff --git a/arch/arm/mach-tegra/reset-handler.S b/arch/arm/mach-tegra/reset-handler.S
index 805f306fa6f7..e22ccf87eded 100644
--- a/arch/arm/mach-tegra/reset-handler.S
+++ b/arch/arm/mach-tegra/reset-handler.S
@@ -172,7 +172,7 @@ after_errata:
172 mov32 r5, TEGRA_IRAM_BASE + TEGRA_IRAM_RESET_HANDLER_OFFSET 172 mov32 r5, TEGRA_IRAM_BASE + TEGRA_IRAM_RESET_HANDLER_OFFSET
173 mov r0, #CPU_NOT_RESETTABLE 173 mov r0, #CPU_NOT_RESETTABLE
174 cmp r10, #0 174 cmp r10, #0
175 strneb r0, [r5, #__tegra20_cpu1_resettable_status_offset] 175 strbne r0, [r5, #__tegra20_cpu1_resettable_status_offset]
1761: 1761:
177#endif 177#endif
178 178
diff --git a/arch/arm/mach-tegra/sleep-tegra20.S b/arch/arm/mach-tegra/sleep-tegra20.S
index 5c8e638ee51a..dedeebfccc55 100644
--- a/arch/arm/mach-tegra/sleep-tegra20.S
+++ b/arch/arm/mach-tegra/sleep-tegra20.S
@@ -32,7 +32,6 @@
32 32
33#define EMC_CFG 0xc 33#define EMC_CFG 0xc
34#define EMC_ADR_CFG 0x10 34#define EMC_ADR_CFG 0x10
35#define EMC_REFRESH 0x70
36#define EMC_NOP 0xdc 35#define EMC_NOP 0xdc
37#define EMC_SELF_REF 0xe0 36#define EMC_SELF_REF 0xe0
38#define EMC_REQ_CTRL 0x2b0 37#define EMC_REQ_CTRL 0x2b0
@@ -397,7 +396,6 @@ padload_done:
397 mov r1, #1 396 mov r1, #1
398 str r1, [r0, #EMC_NOP] 397 str r1, [r0, #EMC_NOP]
399 str r1, [r0, #EMC_NOP] 398 str r1, [r0, #EMC_NOP]
400 str r1, [r0, #EMC_REFRESH]
401 399
402 emc_device_mask r1, r0 400 emc_device_mask r1, r0
403 401
diff --git a/arch/arm/mach-tegra/sleep-tegra30.S b/arch/arm/mach-tegra/sleep-tegra30.S
index dd4a67dabd91..d0b4c486ddbf 100644
--- a/arch/arm/mach-tegra/sleep-tegra30.S
+++ b/arch/arm/mach-tegra/sleep-tegra30.S
@@ -29,7 +29,6 @@
29#define EMC_CFG 0xc 29#define EMC_CFG 0xc
30#define EMC_ADR_CFG 0x10 30#define EMC_ADR_CFG 0x10
31#define EMC_TIMING_CONTROL 0x28 31#define EMC_TIMING_CONTROL 0x28
32#define EMC_REFRESH 0x70
33#define EMC_NOP 0xdc 32#define EMC_NOP 0xdc
34#define EMC_SELF_REF 0xe0 33#define EMC_SELF_REF 0xe0
35#define EMC_MRW 0xe8 34#define EMC_MRW 0xe8
@@ -45,6 +44,8 @@
45#define EMC_XM2VTTGENPADCTRL 0x310 44#define EMC_XM2VTTGENPADCTRL 0x310
46#define EMC_XM2VTTGENPADCTRL2 0x314 45#define EMC_XM2VTTGENPADCTRL2 0x314
47 46
47#define MC_EMEM_ARB_CFG 0x90
48
48#define PMC_CTRL 0x0 49#define PMC_CTRL 0x0
49#define PMC_CTRL_SIDE_EFFECT_LP0 (1 << 14) /* enter LP0 when CPU pwr gated */ 50#define PMC_CTRL_SIDE_EFFECT_LP0 (1 << 14) /* enter LP0 when CPU pwr gated */
50 51
@@ -419,6 +420,22 @@ _pll_m_c_x_done:
419 movweq r0, #:lower16:TEGRA124_EMC_BASE 420 movweq r0, #:lower16:TEGRA124_EMC_BASE
420 movteq r0, #:upper16:TEGRA124_EMC_BASE 421 movteq r0, #:upper16:TEGRA124_EMC_BASE
421 422
423 cmp r10, #TEGRA30
424 moveq r2, #0x20
425 movweq r4, #:lower16:TEGRA_MC_BASE
426 movteq r4, #:upper16:TEGRA_MC_BASE
427 cmp r10, #TEGRA114
428 moveq r2, #0x34
429 movweq r4, #:lower16:TEGRA114_MC_BASE
430 movteq r4, #:upper16:TEGRA114_MC_BASE
431 cmp r10, #TEGRA124
432 moveq r2, #0x20
433 movweq r4, #:lower16:TEGRA124_MC_BASE
434 movteq r4, #:upper16:TEGRA124_MC_BASE
435
436 ldr r1, [r5, r2] @ restore MC_EMEM_ARB_CFG
437 str r1, [r4, #MC_EMEM_ARB_CFG]
438
422exit_self_refresh: 439exit_self_refresh:
423 ldr r1, [r5, #0xC] @ restore EMC_XM2VTTGENPADCTRL 440 ldr r1, [r5, #0xC] @ restore EMC_XM2VTTGENPADCTRL
424 str r1, [r0, #EMC_XM2VTTGENPADCTRL] 441 str r1, [r0, #EMC_XM2VTTGENPADCTRL]
@@ -459,7 +476,6 @@ emc_wait_auto_cal_onetime:
459 cmp r10, #TEGRA30 476 cmp r10, #TEGRA30
460 streq r1, [r0, #EMC_NOP] 477 streq r1, [r0, #EMC_NOP]
461 streq r1, [r0, #EMC_NOP] 478 streq r1, [r0, #EMC_NOP]
462 streq r1, [r0, #EMC_REFRESH]
463 479
464 emc_device_mask r1, r0 480 emc_device_mask r1, r0
465 481
@@ -521,6 +537,8 @@ zcal_done:
521 ldr r1, [r5, #0x0] @ restore EMC_CFG 537 ldr r1, [r5, #0x0] @ restore EMC_CFG
522 str r1, [r0, #EMC_CFG] 538 str r1, [r0, #EMC_CFG]
523 539
540 emc_timing_update r1, r0
541
524 /* Tegra114 had dual EMC channel, now config the other one */ 542 /* Tegra114 had dual EMC channel, now config the other one */
525 cmp r10, #TEGRA114 543 cmp r10, #TEGRA114
526 bne __no_dual_emc_chanl 544 bne __no_dual_emc_chanl
@@ -546,6 +564,7 @@ tegra30_sdram_pad_address:
546 .word TEGRA_PMC_BASE + PMC_IO_DPD_STATUS @0x14 564 .word TEGRA_PMC_BASE + PMC_IO_DPD_STATUS @0x14
547 .word TEGRA_CLK_RESET_BASE + CLK_RESET_CLK_SOURCE_MSELECT @0x18 565 .word TEGRA_CLK_RESET_BASE + CLK_RESET_CLK_SOURCE_MSELECT @0x18
548 .word TEGRA_CLK_RESET_BASE + CLK_RESET_SCLK_BURST @0x1c 566 .word TEGRA_CLK_RESET_BASE + CLK_RESET_SCLK_BURST @0x1c
567 .word TEGRA_MC_BASE + MC_EMEM_ARB_CFG @0x20
549tegra30_sdram_pad_address_end: 568tegra30_sdram_pad_address_end:
550 569
551tegra114_sdram_pad_address: 570tegra114_sdram_pad_address:
@@ -562,6 +581,7 @@ tegra114_sdram_pad_address:
562 .word TEGRA_EMC1_BASE + EMC_AUTO_CAL_INTERVAL @0x28 581 .word TEGRA_EMC1_BASE + EMC_AUTO_CAL_INTERVAL @0x28
563 .word TEGRA_EMC1_BASE + EMC_XM2VTTGENPADCTRL @0x2c 582 .word TEGRA_EMC1_BASE + EMC_XM2VTTGENPADCTRL @0x2c
564 .word TEGRA_EMC1_BASE + EMC_XM2VTTGENPADCTRL2 @0x30 583 .word TEGRA_EMC1_BASE + EMC_XM2VTTGENPADCTRL2 @0x30
584 .word TEGRA114_MC_BASE + MC_EMEM_ARB_CFG @0x34
565tegra114_sdram_pad_adress_end: 585tegra114_sdram_pad_adress_end:
566 586
567tegra124_sdram_pad_address: 587tegra124_sdram_pad_address:
@@ -573,6 +593,7 @@ tegra124_sdram_pad_address:
573 .word TEGRA_PMC_BASE + PMC_IO_DPD_STATUS @0x14 593 .word TEGRA_PMC_BASE + PMC_IO_DPD_STATUS @0x14
574 .word TEGRA_CLK_RESET_BASE + CLK_RESET_CLK_SOURCE_MSELECT @0x18 594 .word TEGRA_CLK_RESET_BASE + CLK_RESET_CLK_SOURCE_MSELECT @0x18
575 .word TEGRA_CLK_RESET_BASE + CLK_RESET_SCLK_BURST @0x1c 595 .word TEGRA_CLK_RESET_BASE + CLK_RESET_SCLK_BURST @0x1c
596 .word TEGRA124_MC_BASE + MC_EMEM_ARB_CFG @0x20
576tegra124_sdram_pad_address_end: 597tegra124_sdram_pad_address_end:
577 598
578tegra30_sdram_pad_size: 599tegra30_sdram_pad_size:
diff --git a/arch/arm/mm/cache-l2x0-pmu.c b/arch/arm/mm/cache-l2x0-pmu.c
index afe5b4c7b164..99bcd074916a 100644
--- a/arch/arm/mm/cache-l2x0-pmu.c
+++ b/arch/arm/mm/cache-l2x0-pmu.c
@@ -314,14 +314,6 @@ static int l2x0_pmu_event_init(struct perf_event *event)
314 event->attach_state & PERF_ATTACH_TASK) 314 event->attach_state & PERF_ATTACH_TASK)
315 return -EINVAL; 315 return -EINVAL;
316 316
317 if (event->attr.exclude_user ||
318 event->attr.exclude_kernel ||
319 event->attr.exclude_hv ||
320 event->attr.exclude_idle ||
321 event->attr.exclude_host ||
322 event->attr.exclude_guest)
323 return -EINVAL;
324
325 if (event->cpu < 0) 317 if (event->cpu < 0)
326 return -EINVAL; 318 return -EINVAL;
327 319
@@ -544,6 +536,7 @@ static __init int l2x0_pmu_init(void)
544 .del = l2x0_pmu_event_del, 536 .del = l2x0_pmu_event_del,
545 .event_init = l2x0_pmu_event_init, 537 .event_init = l2x0_pmu_event_init,
546 .attr_groups = l2x0_pmu_attr_groups, 538 .attr_groups = l2x0_pmu_attr_groups,
539 .capabilities = PERF_PMU_CAP_NO_EXCLUDE,
547 }; 540 };
548 541
549 l2x0_pmu_reset(); 542 l2x0_pmu_reset();
diff --git a/arch/arm/mm/cache-v6.S b/arch/arm/mm/cache-v6.S
index 24659952c278..be68d62566c7 100644
--- a/arch/arm/mm/cache-v6.S
+++ b/arch/arm/mm/cache-v6.S
@@ -215,8 +215,8 @@ v6_dma_inv_range:
215#endif 215#endif
216 tst r1, #D_CACHE_LINE_SIZE - 1 216 tst r1, #D_CACHE_LINE_SIZE - 1
217#ifdef CONFIG_DMA_CACHE_RWFO 217#ifdef CONFIG_DMA_CACHE_RWFO
218 ldrneb r2, [r1, #-1] @ read for ownership 218 ldrbne r2, [r1, #-1] @ read for ownership
219 strneb r2, [r1, #-1] @ write for ownership 219 strbne r2, [r1, #-1] @ write for ownership
220#endif 220#endif
221 bic r1, r1, #D_CACHE_LINE_SIZE - 1 221 bic r1, r1, #D_CACHE_LINE_SIZE - 1
222#ifdef HARVARD_CACHE 222#ifdef HARVARD_CACHE
@@ -284,8 +284,8 @@ ENTRY(v6_dma_flush_range)
284 add r0, r0, #D_CACHE_LINE_SIZE 284 add r0, r0, #D_CACHE_LINE_SIZE
285 cmp r0, r1 285 cmp r0, r1
286#ifdef CONFIG_DMA_CACHE_RWFO 286#ifdef CONFIG_DMA_CACHE_RWFO
287 ldrlob r2, [r0] @ read for ownership 287 ldrblo r2, [r0] @ read for ownership
288 strlob r2, [r0] @ write for ownership 288 strblo r2, [r0] @ write for ownership
289#endif 289#endif
290 blo 1b 290 blo 1b
291 mov r0, #0 291 mov r0, #0
diff --git a/arch/arm/mm/copypage-v4mc.c b/arch/arm/mm/copypage-v4mc.c
index b03202cddddb..f74cdce6d4da 100644
--- a/arch/arm/mm/copypage-v4mc.c
+++ b/arch/arm/mm/copypage-v4mc.c
@@ -45,6 +45,7 @@ static void mc_copy_user_page(void *from, void *to)
45 int tmp; 45 int tmp;
46 46
47 asm volatile ("\ 47 asm volatile ("\
48 .syntax unified\n\
48 ldmia %0!, {r2, r3, ip, lr} @ 4\n\ 49 ldmia %0!, {r2, r3, ip, lr} @ 4\n\
491: mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\ 501: mcr p15, 0, %1, c7, c6, 1 @ 1 invalidate D line\n\
50 stmia %1!, {r2, r3, ip, lr} @ 4\n\ 51 stmia %1!, {r2, r3, ip, lr} @ 4\n\
@@ -56,7 +57,7 @@ static void mc_copy_user_page(void *from, void *to)
56 ldmia %0!, {r2, r3, ip, lr} @ 4\n\ 57 ldmia %0!, {r2, r3, ip, lr} @ 4\n\
57 subs %2, %2, #1 @ 1\n\ 58 subs %2, %2, #1 @ 1\n\
58 stmia %1!, {r2, r3, ip, lr} @ 4\n\ 59 stmia %1!, {r2, r3, ip, lr} @ 4\n\
59 ldmneia %0!, {r2, r3, ip, lr} @ 4\n\ 60 ldmiane %0!, {r2, r3, ip, lr} @ 4\n\
60 bne 1b @ " 61 bne 1b @ "
61 : "+&r" (from), "+&r" (to), "=&r" (tmp) 62 : "+&r" (from), "+&r" (to), "=&r" (tmp)
62 : "2" (PAGE_SIZE / 64) 63 : "2" (PAGE_SIZE / 64)
diff --git a/arch/arm/mm/copypage-v4wb.c b/arch/arm/mm/copypage-v4wb.c
index cd3e165afeed..6d336740aae4 100644
--- a/arch/arm/mm/copypage-v4wb.c
+++ b/arch/arm/mm/copypage-v4wb.c
@@ -27,6 +27,7 @@ static void v4wb_copy_user_page(void *kto, const void *kfrom)
27 int tmp; 27 int tmp;
28 28
29 asm volatile ("\ 29 asm volatile ("\
30 .syntax unified\n\
30 ldmia %1!, {r3, r4, ip, lr} @ 4\n\ 31 ldmia %1!, {r3, r4, ip, lr} @ 4\n\
311: mcr p15, 0, %0, c7, c6, 1 @ 1 invalidate D line\n\ 321: mcr p15, 0, %0, c7, c6, 1 @ 1 invalidate D line\n\
32 stmia %0!, {r3, r4, ip, lr} @ 4\n\ 33 stmia %0!, {r3, r4, ip, lr} @ 4\n\
@@ -38,7 +39,7 @@ static void v4wb_copy_user_page(void *kto, const void *kfrom)
38 ldmia %1!, {r3, r4, ip, lr} @ 4\n\ 39 ldmia %1!, {r3, r4, ip, lr} @ 4\n\
39 subs %2, %2, #1 @ 1\n\ 40 subs %2, %2, #1 @ 1\n\
40 stmia %0!, {r3, r4, ip, lr} @ 4\n\ 41 stmia %0!, {r3, r4, ip, lr} @ 4\n\
41 ldmneia %1!, {r3, r4, ip, lr} @ 4\n\ 42 ldmiane %1!, {r3, r4, ip, lr} @ 4\n\
42 bne 1b @ 1\n\ 43 bne 1b @ 1\n\
43 mcr p15, 0, %1, c7, c10, 4 @ 1 drain WB" 44 mcr p15, 0, %1, c7, c10, 4 @ 1 drain WB"
44 : "+&r" (kto), "+&r" (kfrom), "=&r" (tmp) 45 : "+&r" (kto), "+&r" (kfrom), "=&r" (tmp)
diff --git a/arch/arm/mm/copypage-v4wt.c b/arch/arm/mm/copypage-v4wt.c
index 8614572e1296..3851bb396442 100644
--- a/arch/arm/mm/copypage-v4wt.c
+++ b/arch/arm/mm/copypage-v4wt.c
@@ -25,6 +25,7 @@ static void v4wt_copy_user_page(void *kto, const void *kfrom)
25 int tmp; 25 int tmp;
26 26
27 asm volatile ("\ 27 asm volatile ("\
28 .syntax unified\n\
28 ldmia %1!, {r3, r4, ip, lr} @ 4\n\ 29 ldmia %1!, {r3, r4, ip, lr} @ 4\n\
291: stmia %0!, {r3, r4, ip, lr} @ 4\n\ 301: stmia %0!, {r3, r4, ip, lr} @ 4\n\
30 ldmia %1!, {r3, r4, ip, lr} @ 4+1\n\ 31 ldmia %1!, {r3, r4, ip, lr} @ 4+1\n\
@@ -34,7 +35,7 @@ static void v4wt_copy_user_page(void *kto, const void *kfrom)
34 ldmia %1!, {r3, r4, ip, lr} @ 4\n\ 35 ldmia %1!, {r3, r4, ip, lr} @ 4\n\
35 subs %2, %2, #1 @ 1\n\ 36 subs %2, %2, #1 @ 1\n\
36 stmia %0!, {r3, r4, ip, lr} @ 4\n\ 37 stmia %0!, {r3, r4, ip, lr} @ 4\n\
37 ldmneia %1!, {r3, r4, ip, lr} @ 4\n\ 38 ldmiane %1!, {r3, r4, ip, lr} @ 4\n\
38 bne 1b @ 1\n\ 39 bne 1b @ 1\n\
39 mcr p15, 0, %2, c7, c7, 0 @ flush ID cache" 40 mcr p15, 0, %2, c7, c7, 0 @ flush ID cache"
40 : "+&r" (kto), "+&r" (kfrom), "=&r" (tmp) 41 : "+&r" (kto), "+&r" (kfrom), "=&r" (tmp)
diff --git a/arch/arm/mm/dma-mapping.c b/arch/arm/mm/dma-mapping.c
index f1e2922e447c..43f46aa7ef33 100644
--- a/arch/arm/mm/dma-mapping.c
+++ b/arch/arm/mm/dma-mapping.c
@@ -188,6 +188,7 @@ const struct dma_map_ops arm_dma_ops = {
188 .unmap_page = arm_dma_unmap_page, 188 .unmap_page = arm_dma_unmap_page,
189 .map_sg = arm_dma_map_sg, 189 .map_sg = arm_dma_map_sg,
190 .unmap_sg = arm_dma_unmap_sg, 190 .unmap_sg = arm_dma_unmap_sg,
191 .map_resource = dma_direct_map_resource,
191 .sync_single_for_cpu = arm_dma_sync_single_for_cpu, 192 .sync_single_for_cpu = arm_dma_sync_single_for_cpu,
192 .sync_single_for_device = arm_dma_sync_single_for_device, 193 .sync_single_for_device = arm_dma_sync_single_for_device,
193 .sync_sg_for_cpu = arm_dma_sync_sg_for_cpu, 194 .sync_sg_for_cpu = arm_dma_sync_sg_for_cpu,
@@ -211,6 +212,7 @@ const struct dma_map_ops arm_coherent_dma_ops = {
211 .get_sgtable = arm_dma_get_sgtable, 212 .get_sgtable = arm_dma_get_sgtable,
212 .map_page = arm_coherent_dma_map_page, 213 .map_page = arm_coherent_dma_map_page,
213 .map_sg = arm_dma_map_sg, 214 .map_sg = arm_dma_map_sg,
215 .map_resource = dma_direct_map_resource,
214 .dma_supported = arm_dma_supported, 216 .dma_supported = arm_dma_supported,
215}; 217};
216EXPORT_SYMBOL(arm_coherent_dma_ops); 218EXPORT_SYMBOL(arm_coherent_dma_ops);
@@ -2277,7 +2279,7 @@ EXPORT_SYMBOL_GPL(arm_iommu_attach_device);
2277 * @dev: valid struct device pointer 2279 * @dev: valid struct device pointer
2278 * 2280 *
2279 * Detaches the provided device from a previously attached map. 2281 * Detaches the provided device from a previously attached map.
2280 * This voids the dma operations (dma_map_ops pointer) 2282 * This overwrites the dma_ops pointer with appropriate non-IOMMU ops.
2281 */ 2283 */
2282void arm_iommu_detach_device(struct device *dev) 2284void arm_iommu_detach_device(struct device *dev)
2283{ 2285{
@@ -2390,4 +2392,6 @@ void arch_teardown_dma_ops(struct device *dev)
2390 return; 2392 return;
2391 2393
2392 arm_teardown_iommu_dma_ops(dev); 2394 arm_teardown_iommu_dma_ops(dev);
2395 /* Let arch_setup_dma_ops() start again from scratch upon re-probe */
2396 set_dma_ops(dev, NULL);
2393} 2397}
diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c
index 1d1edd064199..a033f6134a64 100644
--- a/arch/arm/mm/idmap.c
+++ b/arch/arm/mm/idmap.c
@@ -6,6 +6,7 @@
6 6
7#include <asm/cputype.h> 7#include <asm/cputype.h>
8#include <asm/idmap.h> 8#include <asm/idmap.h>
9#include <asm/hwcap.h>
9#include <asm/pgalloc.h> 10#include <asm/pgalloc.h>
10#include <asm/pgtable.h> 11#include <asm/pgtable.h>
11#include <asm/sections.h> 12#include <asm/sections.h>
@@ -110,7 +111,8 @@ static int __init init_static_idmap(void)
110 __idmap_text_end, 0); 111 __idmap_text_end, 0);
111 112
112 /* Flush L1 for the hardware to see this page table content */ 113 /* Flush L1 for the hardware to see this page table content */
113 flush_cache_louis(); 114 if (!(elf_hwcap & HWCAP_LPAE))
115 flush_cache_louis();
114 116
115 return 0; 117 return 0;
116} 118}
diff --git a/arch/arm/mm/init.c b/arch/arm/mm/init.c
index 478ea8b7db87..c2daabbe0af0 100644
--- a/arch/arm/mm/init.c
+++ b/arch/arm/mm/init.c
@@ -205,7 +205,11 @@ phys_addr_t __init arm_memblock_steal(phys_addr_t size, phys_addr_t align)
205 205
206 BUG_ON(!arm_memblock_steal_permitted); 206 BUG_ON(!arm_memblock_steal_permitted);
207 207
208 phys = memblock_alloc_base(size, align, MEMBLOCK_ALLOC_ANYWHERE); 208 phys = memblock_phys_alloc(size, align);
209 if (!phys)
210 panic("Failed to steal %pa bytes at %pS\n",
211 &size, (void *)_RET_IP_);
212
209 memblock_free(phys, size); 213 memblock_free(phys, size);
210 memblock_remove(phys, size); 214 memblock_remove(phys, size);
211 215
@@ -278,15 +282,12 @@ void __init arm_memblock_init(const struct machine_desc *mdesc)
278 282
279void __init bootmem_init(void) 283void __init bootmem_init(void)
280{ 284{
281 unsigned long min, max_low, max_high;
282
283 memblock_allow_resize(); 285 memblock_allow_resize();
284 max_low = max_high = 0;
285 286
286 find_limits(&min, &max_low, &max_high); 287 find_limits(&min_low_pfn, &max_low_pfn, &max_pfn);
287 288
288 early_memtest((phys_addr_t)min << PAGE_SHIFT, 289 early_memtest((phys_addr_t)min_low_pfn << PAGE_SHIFT,
289 (phys_addr_t)max_low << PAGE_SHIFT); 290 (phys_addr_t)max_low_pfn << PAGE_SHIFT);
290 291
291 /* 292 /*
292 * Sparsemem tries to allocate bootmem in memory_present(), 293 * Sparsemem tries to allocate bootmem in memory_present(),
@@ -304,16 +305,7 @@ void __init bootmem_init(void)
304 * the sparse mem_map arrays initialized by sparse_init() 305 * the sparse mem_map arrays initialized by sparse_init()
305 * for memmap_init_zone(), otherwise all PFNs are invalid. 306 * for memmap_init_zone(), otherwise all PFNs are invalid.
306 */ 307 */
307 zone_sizes_init(min, max_low, max_high); 308 zone_sizes_init(min_low_pfn, max_low_pfn, max_pfn);
308
309 /*
310 * This doesn't seem to be used by the Linux memory manager any
311 * more, but is used by ll_rw_block. If we can get rid of it, we
312 * also get rid of some of the stuff above as well.
313 */
314 min_low_pfn = min;
315 max_low_pfn = max_low;
316 max_pfn = max_high;
317} 309}
318 310
319/* 311/*
@@ -494,55 +486,6 @@ void __init mem_init(void)
494 486
495 mem_init_print_info(NULL); 487 mem_init_print_info(NULL);
496 488
497#define MLK(b, t) b, t, ((t) - (b)) >> 10
498#define MLM(b, t) b, t, ((t) - (b)) >> 20
499#define MLK_ROUNDUP(b, t) b, t, DIV_ROUND_UP(((t) - (b)), SZ_1K)
500
501 pr_notice("Virtual kernel memory layout:\n"
502 " vector : 0x%08lx - 0x%08lx (%4ld kB)\n"
503#ifdef CONFIG_HAVE_TCM
504 " DTCM : 0x%08lx - 0x%08lx (%4ld kB)\n"
505 " ITCM : 0x%08lx - 0x%08lx (%4ld kB)\n"
506#endif
507 " fixmap : 0x%08lx - 0x%08lx (%4ld kB)\n"
508 " vmalloc : 0x%08lx - 0x%08lx (%4ld MB)\n"
509 " lowmem : 0x%08lx - 0x%08lx (%4ld MB)\n"
510#ifdef CONFIG_HIGHMEM
511 " pkmap : 0x%08lx - 0x%08lx (%4ld MB)\n"
512#endif
513#ifdef CONFIG_MODULES
514 " modules : 0x%08lx - 0x%08lx (%4ld MB)\n"
515#endif
516 " .text : 0x%p" " - 0x%p" " (%4td kB)\n"
517 " .init : 0x%p" " - 0x%p" " (%4td kB)\n"
518 " .data : 0x%p" " - 0x%p" " (%4td kB)\n"
519 " .bss : 0x%p" " - 0x%p" " (%4td kB)\n",
520
521 MLK(VECTORS_BASE, VECTORS_BASE + PAGE_SIZE),
522#ifdef CONFIG_HAVE_TCM
523 MLK(DTCM_OFFSET, (unsigned long) dtcm_end),
524 MLK(ITCM_OFFSET, (unsigned long) itcm_end),
525#endif
526 MLK(FIXADDR_START, FIXADDR_END),
527 MLM(VMALLOC_START, VMALLOC_END),
528 MLM(PAGE_OFFSET, (unsigned long)high_memory),
529#ifdef CONFIG_HIGHMEM
530 MLM(PKMAP_BASE, (PKMAP_BASE) + (LAST_PKMAP) *
531 (PAGE_SIZE)),
532#endif
533#ifdef CONFIG_MODULES
534 MLM(MODULES_VADDR, MODULES_END),
535#endif
536
537 MLK_ROUNDUP(_text, _etext),
538 MLK_ROUNDUP(__init_begin, __init_end),
539 MLK_ROUNDUP(_sdata, _edata),
540 MLK_ROUNDUP(__bss_start, __bss_stop));
541
542#undef MLK
543#undef MLM
544#undef MLK_ROUNDUP
545
546 /* 489 /*
547 * Check boundaries twice: Some fundamental inconsistencies can 490 * Check boundaries twice: Some fundamental inconsistencies can
548 * be detected at build time already. 491 * be detected at build time already.
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index f5cc1ccfea3d..f3ce34113f89 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -719,16 +719,15 @@ EXPORT_SYMBOL(phys_mem_access_prot);
719 719
720#define vectors_base() (vectors_high() ? 0xffff0000 : 0) 720#define vectors_base() (vectors_high() ? 0xffff0000 : 0)
721 721
722static void __init *early_alloc_aligned(unsigned long sz, unsigned long align)
723{
724 void *ptr = __va(memblock_phys_alloc(sz, align));
725 memset(ptr, 0, sz);
726 return ptr;
727}
728
729static void __init *early_alloc(unsigned long sz) 722static void __init *early_alloc(unsigned long sz)
730{ 723{
731 return early_alloc_aligned(sz, sz); 724 void *ptr = memblock_alloc(sz, sz);
725
726 if (!ptr)
727 panic("%s: Failed to allocate %lu bytes align=0x%lx\n",
728 __func__, sz, sz);
729
730 return ptr;
732} 731}
733 732
734static void *__init late_alloc(unsigned long sz) 733static void *__init late_alloc(unsigned long sz)
@@ -1000,7 +999,10 @@ void __init iotable_init(struct map_desc *io_desc, int nr)
1000 if (!nr) 999 if (!nr)
1001 return; 1000 return;
1002 1001
1003 svm = early_alloc_aligned(sizeof(*svm) * nr, __alignof__(*svm)); 1002 svm = memblock_alloc(sizeof(*svm) * nr, __alignof__(*svm));
1003 if (!svm)
1004 panic("%s: Failed to allocate %zu bytes align=0x%zx\n",
1005 __func__, sizeof(*svm) * nr, __alignof__(*svm));
1004 1006
1005 for (md = io_desc; nr; md++, nr--) { 1007 for (md = io_desc; nr; md++, nr--) {
1006 create_mapping(md); 1008 create_mapping(md);
@@ -1022,7 +1024,10 @@ void __init vm_reserve_area_early(unsigned long addr, unsigned long size,
1022 struct vm_struct *vm; 1024 struct vm_struct *vm;
1023 struct static_vm *svm; 1025 struct static_vm *svm;
1024 1026
1025 svm = early_alloc_aligned(sizeof(*svm), __alignof__(*svm)); 1027 svm = memblock_alloc(sizeof(*svm), __alignof__(*svm));
1028 if (!svm)
1029 panic("%s: Failed to allocate %zu bytes align=0x%zx\n",
1030 __func__, sizeof(*svm), __alignof__(*svm));
1026 1031
1027 vm = &svm->vm; 1032 vm = &svm->vm;
1028 vm->addr = (void *)addr; 1033 vm->addr = (void *)addr;
diff --git a/arch/arm/mm/pmsa-v8.c b/arch/arm/mm/pmsa-v8.c
index 617a83def88a..0d7d5fb59247 100644
--- a/arch/arm/mm/pmsa-v8.c
+++ b/arch/arm/mm/pmsa-v8.c
@@ -165,7 +165,7 @@ static int __init pmsav8_setup_ram(unsigned int number, phys_addr_t start,phys_a
165 return -EINVAL; 165 return -EINVAL;
166 166
167 bar = start; 167 bar = start;
168 lar = (end - 1) & ~(PMSAv8_MINALIGN - 1);; 168 lar = (end - 1) & ~(PMSAv8_MINALIGN - 1);
169 169
170 bar |= PMSAv8_AP_PL1RW_PL0RW | PMSAv8_RGN_SHARED; 170 bar |= PMSAv8_AP_PL1RW_PL0RW | PMSAv8_RGN_SHARED;
171 lar |= PMSAv8_LAR_IDX(PMSAv8_RGN_NORMAL) | PMSAv8_LAR_EN; 171 lar |= PMSAv8_LAR_IDX(PMSAv8_RGN_NORMAL) | PMSAv8_LAR_EN;
@@ -181,7 +181,7 @@ static int __init pmsav8_setup_io(unsigned int number, phys_addr_t start,phys_ad
181 return -EINVAL; 181 return -EINVAL;
182 182
183 bar = start; 183 bar = start;
184 lar = (end - 1) & ~(PMSAv8_MINALIGN - 1);; 184 lar = (end - 1) & ~(PMSAv8_MINALIGN - 1);
185 185
186 bar |= PMSAv8_AP_PL1RW_PL0RW | PMSAv8_RGN_SHARED | PMSAv8_BAR_XN; 186 bar |= PMSAv8_AP_PL1RW_PL0RW | PMSAv8_RGN_SHARED | PMSAv8_BAR_XN;
187 lar |= PMSAv8_LAR_IDX(PMSAv8_RGN_DEVICE_nGnRnE) | PMSAv8_LAR_EN; 187 lar |= PMSAv8_LAR_IDX(PMSAv8_RGN_DEVICE_nGnRnE) | PMSAv8_LAR_EN;
diff --git a/arch/arm/mm/proc-v7m.S b/arch/arm/mm/proc-v7m.S
index 47a5acc64433..acd5a66dfc23 100644
--- a/arch/arm/mm/proc-v7m.S
+++ b/arch/arm/mm/proc-v7m.S
@@ -139,6 +139,9 @@ __v7m_setup_cont:
139 cpsie i 139 cpsie i
140 svc #0 140 svc #0
1411: cpsid i 1411: cpsid i
142 ldr r0, =exc_ret
143 orr lr, lr, #EXC_RET_THREADMODE_PROCESSSTACK
144 str lr, [r0]
142 ldmia sp, {r0-r3, r12} 145 ldmia sp, {r0-r3, r12}
143 str r5, [r12, #11 * 4] @ restore the original SVC vector entry 146 str r5, [r12, #11 * 4] @ restore the original SVC vector entry
144 mov lr, r6 @ restore LR 147 mov lr, r6 @ restore LR
@@ -149,10 +152,10 @@ __v7m_setup_cont:
149 152
150 @ Configure caches (if implemented) 153 @ Configure caches (if implemented)
151 teq r8, #0 154 teq r8, #0
152 stmneia sp, {r0-r6, lr} @ v7m_invalidate_l1 touches r0-r6 155 stmiane sp, {r0-r6, lr} @ v7m_invalidate_l1 touches r0-r6
153 blne v7m_invalidate_l1 156 blne v7m_invalidate_l1
154 teq r8, #0 @ re-evalutae condition 157 teq r8, #0 @ re-evalutae condition
155 ldmneia sp, {r0-r6, lr} 158 ldmiane sp, {r0-r6, lr}
156 159
157 @ Configure the System Control Register to ensure 8-byte stack alignment 160 @ Configure the System Control Register to ensure 8-byte stack alignment
158 @ Note the STKALIGN bit is either RW or RAO. 161 @ Note the STKALIGN bit is either RW or RAO.
diff --git a/arch/arm/net/bpf_jit_32.c b/arch/arm/net/bpf_jit_32.c
index 25b3ee85066e..c8bfbbfdfcc3 100644
--- a/arch/arm/net/bpf_jit_32.c
+++ b/arch/arm/net/bpf_jit_32.c
@@ -1083,12 +1083,17 @@ static inline void emit_ldx_r(const s8 dst[], const s8 src,
1083 1083
1084/* Arithmatic Operation */ 1084/* Arithmatic Operation */
1085static inline void emit_ar_r(const u8 rd, const u8 rt, const u8 rm, 1085static inline void emit_ar_r(const u8 rd, const u8 rt, const u8 rm,
1086 const u8 rn, struct jit_ctx *ctx, u8 op) { 1086 const u8 rn, struct jit_ctx *ctx, u8 op,
1087 bool is_jmp64) {
1087 switch (op) { 1088 switch (op) {
1088 case BPF_JSET: 1089 case BPF_JSET:
1089 emit(ARM_AND_R(ARM_IP, rt, rn), ctx); 1090 if (is_jmp64) {
1090 emit(ARM_AND_R(ARM_LR, rd, rm), ctx); 1091 emit(ARM_AND_R(ARM_IP, rt, rn), ctx);
1091 emit(ARM_ORRS_R(ARM_IP, ARM_LR, ARM_IP), ctx); 1092 emit(ARM_AND_R(ARM_LR, rd, rm), ctx);
1093 emit(ARM_ORRS_R(ARM_IP, ARM_LR, ARM_IP), ctx);
1094 } else {
1095 emit(ARM_ANDS_R(ARM_IP, rt, rn), ctx);
1096 }
1092 break; 1097 break;
1093 case BPF_JEQ: 1098 case BPF_JEQ:
1094 case BPF_JNE: 1099 case BPF_JNE:
@@ -1096,18 +1101,25 @@ static inline void emit_ar_r(const u8 rd, const u8 rt, const u8 rm,
1096 case BPF_JGE: 1101 case BPF_JGE:
1097 case BPF_JLE: 1102 case BPF_JLE:
1098 case BPF_JLT: 1103 case BPF_JLT:
1099 emit(ARM_CMP_R(rd, rm), ctx); 1104 if (is_jmp64) {
1100 _emit(ARM_COND_EQ, ARM_CMP_R(rt, rn), ctx); 1105 emit(ARM_CMP_R(rd, rm), ctx);
1106 /* Only compare low halve if high halve are equal. */
1107 _emit(ARM_COND_EQ, ARM_CMP_R(rt, rn), ctx);
1108 } else {
1109 emit(ARM_CMP_R(rt, rn), ctx);
1110 }
1101 break; 1111 break;
1102 case BPF_JSLE: 1112 case BPF_JSLE:
1103 case BPF_JSGT: 1113 case BPF_JSGT:
1104 emit(ARM_CMP_R(rn, rt), ctx); 1114 emit(ARM_CMP_R(rn, rt), ctx);
1105 emit(ARM_SBCS_R(ARM_IP, rm, rd), ctx); 1115 if (is_jmp64)
1116 emit(ARM_SBCS_R(ARM_IP, rm, rd), ctx);
1106 break; 1117 break;
1107 case BPF_JSLT: 1118 case BPF_JSLT:
1108 case BPF_JSGE: 1119 case BPF_JSGE:
1109 emit(ARM_CMP_R(rt, rn), ctx); 1120 emit(ARM_CMP_R(rt, rn), ctx);
1110 emit(ARM_SBCS_R(ARM_IP, rd, rm), ctx); 1121 if (is_jmp64)
1122 emit(ARM_SBCS_R(ARM_IP, rd, rm), ctx);
1111 break; 1123 break;
1112 } 1124 }
1113} 1125}
@@ -1615,6 +1627,17 @@ exit:
1615 case BPF_JMP | BPF_JLT | BPF_X: 1627 case BPF_JMP | BPF_JLT | BPF_X:
1616 case BPF_JMP | BPF_JSLT | BPF_X: 1628 case BPF_JMP | BPF_JSLT | BPF_X:
1617 case BPF_JMP | BPF_JSLE | BPF_X: 1629 case BPF_JMP | BPF_JSLE | BPF_X:
1630 case BPF_JMP32 | BPF_JEQ | BPF_X:
1631 case BPF_JMP32 | BPF_JGT | BPF_X:
1632 case BPF_JMP32 | BPF_JGE | BPF_X:
1633 case BPF_JMP32 | BPF_JNE | BPF_X:
1634 case BPF_JMP32 | BPF_JSGT | BPF_X:
1635 case BPF_JMP32 | BPF_JSGE | BPF_X:
1636 case BPF_JMP32 | BPF_JSET | BPF_X:
1637 case BPF_JMP32 | BPF_JLE | BPF_X:
1638 case BPF_JMP32 | BPF_JLT | BPF_X:
1639 case BPF_JMP32 | BPF_JSLT | BPF_X:
1640 case BPF_JMP32 | BPF_JSLE | BPF_X:
1618 /* Setup source registers */ 1641 /* Setup source registers */
1619 rm = arm_bpf_get_reg32(src_hi, tmp2[0], ctx); 1642 rm = arm_bpf_get_reg32(src_hi, tmp2[0], ctx);
1620 rn = arm_bpf_get_reg32(src_lo, tmp2[1], ctx); 1643 rn = arm_bpf_get_reg32(src_lo, tmp2[1], ctx);
@@ -1641,6 +1664,17 @@ exit:
1641 case BPF_JMP | BPF_JLE | BPF_K: 1664 case BPF_JMP | BPF_JLE | BPF_K:
1642 case BPF_JMP | BPF_JSLT | BPF_K: 1665 case BPF_JMP | BPF_JSLT | BPF_K:
1643 case BPF_JMP | BPF_JSLE | BPF_K: 1666 case BPF_JMP | BPF_JSLE | BPF_K:
1667 case BPF_JMP32 | BPF_JEQ | BPF_K:
1668 case BPF_JMP32 | BPF_JGT | BPF_K:
1669 case BPF_JMP32 | BPF_JGE | BPF_K:
1670 case BPF_JMP32 | BPF_JNE | BPF_K:
1671 case BPF_JMP32 | BPF_JSGT | BPF_K:
1672 case BPF_JMP32 | BPF_JSGE | BPF_K:
1673 case BPF_JMP32 | BPF_JSET | BPF_K:
1674 case BPF_JMP32 | BPF_JLT | BPF_K:
1675 case BPF_JMP32 | BPF_JLE | BPF_K:
1676 case BPF_JMP32 | BPF_JSLT | BPF_K:
1677 case BPF_JMP32 | BPF_JSLE | BPF_K:
1644 if (off == 0) 1678 if (off == 0)
1645 break; 1679 break;
1646 rm = tmp2[0]; 1680 rm = tmp2[0];
@@ -1652,7 +1686,8 @@ go_jmp:
1652 rd = arm_bpf_get_reg64(dst, tmp, ctx); 1686 rd = arm_bpf_get_reg64(dst, tmp, ctx);
1653 1687
1654 /* Check for the condition */ 1688 /* Check for the condition */
1655 emit_ar_r(rd[0], rd[1], rm, rn, ctx, BPF_OP(code)); 1689 emit_ar_r(rd[0], rd[1], rm, rn, ctx, BPF_OP(code),
1690 BPF_CLASS(code) == BPF_JMP);
1656 1691
1657 /* Setup JUMP instruction */ 1692 /* Setup JUMP instruction */
1658 jmp_offset = bpf2a32_offset(i+off, i, ctx); 1693 jmp_offset = bpf2a32_offset(i+off, i, ctx);
diff --git a/arch/arm/net/bpf_jit_32.h b/arch/arm/net/bpf_jit_32.h
index f4e58bcdaa43..13a05f759552 100644
--- a/arch/arm/net/bpf_jit_32.h
+++ b/arch/arm/net/bpf_jit_32.h
@@ -62,6 +62,7 @@
62#define ARM_INST_ADDS_I 0x02900000 62#define ARM_INST_ADDS_I 0x02900000
63 63
64#define ARM_INST_AND_R 0x00000000 64#define ARM_INST_AND_R 0x00000000
65#define ARM_INST_ANDS_R 0x00100000
65#define ARM_INST_AND_I 0x02000000 66#define ARM_INST_AND_I 0x02000000
66 67
67#define ARM_INST_BIC_R 0x01c00000 68#define ARM_INST_BIC_R 0x01c00000
@@ -172,6 +173,7 @@
172#define ARM_ADC_I(rd, rn, imm) _AL3_I(ARM_INST_ADC, rd, rn, imm) 173#define ARM_ADC_I(rd, rn, imm) _AL3_I(ARM_INST_ADC, rd, rn, imm)
173 174
174#define ARM_AND_R(rd, rn, rm) _AL3_R(ARM_INST_AND, rd, rn, rm) 175#define ARM_AND_R(rd, rn, rm) _AL3_R(ARM_INST_AND, rd, rn, rm)
176#define ARM_ANDS_R(rd, rn, rm) _AL3_R(ARM_INST_ANDS, rd, rn, rm)
175#define ARM_AND_I(rd, rn, imm) _AL3_I(ARM_INST_AND, rd, rn, imm) 177#define ARM_AND_I(rd, rn, imm) _AL3_I(ARM_INST_AND, rd, rn, imm)
176 178
177#define ARM_BIC_R(rd, rn, rm) _AL3_R(ARM_INST_BIC, rd, rn, rm) 179#define ARM_BIC_R(rd, rn, rm) _AL3_R(ARM_INST_BIC, rd, rn, rm)
diff --git a/arch/arm/plat-orion/common.c b/arch/arm/plat-orion/common.c
index a2399fd66e97..a6c81ce00f52 100644
--- a/arch/arm/plat-orion/common.c
+++ b/arch/arm/plat-orion/common.c
@@ -18,7 +18,7 @@
18#include <linux/clkdev.h> 18#include <linux/clkdev.h>
19#include <linux/mv643xx_eth.h> 19#include <linux/mv643xx_eth.h>
20#include <linux/mv643xx_i2c.h> 20#include <linux/mv643xx_i2c.h>
21#include <net/dsa.h> 21#include <linux/platform_data/dsa.h>
22#include <linux/platform_data/dma-mv_xor.h> 22#include <linux/platform_data/dma-mv_xor.h>
23#include <linux/platform_data/usb-ehci-orion.h> 23#include <linux/platform_data/usb-ehci-orion.h>
24#include <plat/common.h> 24#include <plat/common.h>
diff --git a/arch/arm/plat-pxa/ssp.c b/arch/arm/plat-pxa/ssp.c
index ed36dcab80f1..f51919974183 100644
--- a/arch/arm/plat-pxa/ssp.c
+++ b/arch/arm/plat-pxa/ssp.c
@@ -190,8 +190,6 @@ static int pxa_ssp_remove(struct platform_device *pdev)
190 if (ssp == NULL) 190 if (ssp == NULL)
191 return -ENODEV; 191 return -ENODEV;
192 192
193 iounmap(ssp->mmio_base);
194
195 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 193 res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
196 release_mem_region(res->start, resource_size(res)); 194 release_mem_region(res->start, resource_size(res));
197 195
@@ -201,7 +199,6 @@ static int pxa_ssp_remove(struct platform_device *pdev)
201 list_del(&ssp->node); 199 list_del(&ssp->node);
202 mutex_unlock(&ssp_lock); 200 mutex_unlock(&ssp_lock);
203 201
204 kfree(ssp);
205 return 0; 202 return 0;
206} 203}
207 204
diff --git a/arch/arm/probes/kprobes/opt-arm.c b/arch/arm/probes/kprobes/opt-arm.c
index 2c118a6ab358..0dc23fc227ed 100644
--- a/arch/arm/probes/kprobes/opt-arm.c
+++ b/arch/arm/probes/kprobes/opt-arm.c
@@ -247,7 +247,7 @@ int arch_prepare_optimized_kprobe(struct optimized_kprobe *op, struct kprobe *or
247 } 247 }
248 248
249 /* Copy arch-dep-instance from template. */ 249 /* Copy arch-dep-instance from template. */
250 memcpy(code, (unsigned char *)optprobe_template_entry, 250 memcpy(code, (unsigned long *)&optprobe_template_entry,
251 TMPL_END_IDX * sizeof(kprobe_opcode_t)); 251 TMPL_END_IDX * sizeof(kprobe_opcode_t));
252 252
253 /* Adjust buffer according to instruction. */ 253 /* Adjust buffer according to instruction. */
diff --git a/arch/arm/tools/syscall.tbl b/arch/arm/tools/syscall.tbl
index 8edf93b4490f..9016f4081bb9 100644
--- a/arch/arm/tools/syscall.tbl
+++ b/arch/arm/tools/syscall.tbl
@@ -24,7 +24,7 @@
2410 common unlink sys_unlink 2410 common unlink sys_unlink
2511 common execve sys_execve 2511 common execve sys_execve
2612 common chdir sys_chdir 2612 common chdir sys_chdir
2713 oabi time sys_time 2713 oabi time sys_time32
2814 common mknod sys_mknod 2814 common mknod sys_mknod
2915 common chmod sys_chmod 2915 common chmod sys_chmod
3016 common lchown sys_lchown16 3016 common lchown sys_lchown16
@@ -36,12 +36,12 @@
3622 oabi umount sys_oldumount 3622 oabi umount sys_oldumount
3723 common setuid sys_setuid16 3723 common setuid sys_setuid16
3824 common getuid sys_getuid16 3824 common getuid sys_getuid16
3925 oabi stime sys_stime 3925 oabi stime sys_stime32
4026 common ptrace sys_ptrace 4026 common ptrace sys_ptrace
4127 oabi alarm sys_alarm 4127 oabi alarm sys_alarm
42# 28 was sys_fstat 42# 28 was sys_fstat
4329 common pause sys_pause 4329 common pause sys_pause
4430 oabi utime sys_utime 4430 oabi utime sys_utime32
45# 31 was sys_stty 45# 31 was sys_stty
46# 32 was sys_gtty 46# 32 was sys_gtty
4733 common access sys_access 4733 common access sys_access
@@ -137,7 +137,7 @@
137121 common setdomainname sys_setdomainname 137121 common setdomainname sys_setdomainname
138122 common uname sys_newuname 138122 common uname sys_newuname
139# 123 was sys_modify_ldt 139# 123 was sys_modify_ldt
140124 common adjtimex sys_adjtimex 140124 common adjtimex sys_adjtimex_time32
141125 common mprotect sys_mprotect 141125 common mprotect sys_mprotect
142126 common sigprocmask sys_sigprocmask 142126 common sigprocmask sys_sigprocmask
143# 127 was sys_create_module 143# 127 was sys_create_module
@@ -174,8 +174,8 @@
174158 common sched_yield sys_sched_yield 174158 common sched_yield sys_sched_yield
175159 common sched_get_priority_max sys_sched_get_priority_max 175159 common sched_get_priority_max sys_sched_get_priority_max
176160 common sched_get_priority_min sys_sched_get_priority_min 176160 common sched_get_priority_min sys_sched_get_priority_min
177161 common sched_rr_get_interval sys_sched_rr_get_interval 177161 common sched_rr_get_interval sys_sched_rr_get_interval_time32
178162 common nanosleep sys_nanosleep 178162 common nanosleep sys_nanosleep_time32
179163 common mremap sys_mremap 179163 common mremap sys_mremap
180164 common setresuid sys_setresuid16 180164 common setresuid sys_setresuid16
181165 common getresuid sys_getresuid16 181165 common getresuid sys_getresuid16
@@ -190,7 +190,7 @@
190174 common rt_sigaction sys_rt_sigaction 190174 common rt_sigaction sys_rt_sigaction
191175 common rt_sigprocmask sys_rt_sigprocmask 191175 common rt_sigprocmask sys_rt_sigprocmask
192176 common rt_sigpending sys_rt_sigpending 192176 common rt_sigpending sys_rt_sigpending
193177 common rt_sigtimedwait sys_rt_sigtimedwait 193177 common rt_sigtimedwait sys_rt_sigtimedwait_time32
194178 common rt_sigqueueinfo sys_rt_sigqueueinfo 194178 common rt_sigqueueinfo sys_rt_sigqueueinfo
195179 common rt_sigsuspend sys_rt_sigsuspend 195179 common rt_sigsuspend sys_rt_sigsuspend
196180 common pread64 sys_pread64 sys_oabi_pread64 196180 common pread64 sys_pread64 sys_oabi_pread64
@@ -254,12 +254,12 @@
254237 common fremovexattr sys_fremovexattr 254237 common fremovexattr sys_fremovexattr
255238 common tkill sys_tkill 255238 common tkill sys_tkill
256239 common sendfile64 sys_sendfile64 256239 common sendfile64 sys_sendfile64
257240 common futex sys_futex 257240 common futex sys_futex_time32
258241 common sched_setaffinity sys_sched_setaffinity 258241 common sched_setaffinity sys_sched_setaffinity
259242 common sched_getaffinity sys_sched_getaffinity 259242 common sched_getaffinity sys_sched_getaffinity
260243 common io_setup sys_io_setup 260243 common io_setup sys_io_setup
261244 common io_destroy sys_io_destroy 261244 common io_destroy sys_io_destroy
262245 common io_getevents sys_io_getevents 262245 common io_getevents sys_io_getevents_time32
263246 common io_submit sys_io_submit 263246 common io_submit sys_io_submit
264247 common io_cancel sys_io_cancel 264247 common io_cancel sys_io_cancel
265248 common exit_group sys_exit_group 265248 common exit_group sys_exit_group
@@ -272,26 +272,26 @@
272# 255 for get_thread_area 272# 255 for get_thread_area
273256 common set_tid_address sys_set_tid_address 273256 common set_tid_address sys_set_tid_address
274257 common timer_create sys_timer_create 274257 common timer_create sys_timer_create
275258 common timer_settime sys_timer_settime 275258 common timer_settime sys_timer_settime32
276259 common timer_gettime sys_timer_gettime 276259 common timer_gettime sys_timer_gettime32
277260 common timer_getoverrun sys_timer_getoverrun 277260 common timer_getoverrun sys_timer_getoverrun
278261 common timer_delete sys_timer_delete 278261 common timer_delete sys_timer_delete
279262 common clock_settime sys_clock_settime 279262 common clock_settime sys_clock_settime32
280263 common clock_gettime sys_clock_gettime 280263 common clock_gettime sys_clock_gettime32
281264 common clock_getres sys_clock_getres 281264 common clock_getres sys_clock_getres_time32
282265 common clock_nanosleep sys_clock_nanosleep 282265 common clock_nanosleep sys_clock_nanosleep_time32
283266 common statfs64 sys_statfs64_wrapper 283266 common statfs64 sys_statfs64_wrapper
284267 common fstatfs64 sys_fstatfs64_wrapper 284267 common fstatfs64 sys_fstatfs64_wrapper
285268 common tgkill sys_tgkill 285268 common tgkill sys_tgkill
286269 common utimes sys_utimes 286269 common utimes sys_utimes_time32
287270 common arm_fadvise64_64 sys_arm_fadvise64_64 287270 common arm_fadvise64_64 sys_arm_fadvise64_64
288271 common pciconfig_iobase sys_pciconfig_iobase 288271 common pciconfig_iobase sys_pciconfig_iobase
289272 common pciconfig_read sys_pciconfig_read 289272 common pciconfig_read sys_pciconfig_read
290273 common pciconfig_write sys_pciconfig_write 290273 common pciconfig_write sys_pciconfig_write
291274 common mq_open sys_mq_open 291274 common mq_open sys_mq_open
292275 common mq_unlink sys_mq_unlink 292275 common mq_unlink sys_mq_unlink
293276 common mq_timedsend sys_mq_timedsend 293276 common mq_timedsend sys_mq_timedsend_time32
294277 common mq_timedreceive sys_mq_timedreceive 294277 common mq_timedreceive sys_mq_timedreceive_time32
295278 common mq_notify sys_mq_notify 295278 common mq_notify sys_mq_notify
296279 common mq_getsetattr sys_mq_getsetattr 296279 common mq_getsetattr sys_mq_getsetattr
297280 common waitid sys_waitid 297280 common waitid sys_waitid
@@ -314,19 +314,19 @@
314297 common recvmsg sys_recvmsg 314297 common recvmsg sys_recvmsg
315298 common semop sys_semop sys_oabi_semop 315298 common semop sys_semop sys_oabi_semop
316299 common semget sys_semget 316299 common semget sys_semget
317300 common semctl sys_semctl 317300 common semctl sys_old_semctl
318301 common msgsnd sys_msgsnd 318301 common msgsnd sys_msgsnd
319302 common msgrcv sys_msgrcv 319302 common msgrcv sys_msgrcv
320303 common msgget sys_msgget 320303 common msgget sys_msgget
321304 common msgctl sys_msgctl 321304 common msgctl sys_old_msgctl
322305 common shmat sys_shmat 322305 common shmat sys_shmat
323306 common shmdt sys_shmdt 323306 common shmdt sys_shmdt
324307 common shmget sys_shmget 324307 common shmget sys_shmget
325308 common shmctl sys_shmctl 325308 common shmctl sys_old_shmctl
326309 common add_key sys_add_key 326309 common add_key sys_add_key
327310 common request_key sys_request_key 327310 common request_key sys_request_key
328311 common keyctl sys_keyctl 328311 common keyctl sys_keyctl
329312 common semtimedop sys_semtimedop sys_oabi_semtimedop 329312 common semtimedop sys_semtimedop_time32 sys_oabi_semtimedop
330313 common vserver 330313 common vserver
331314 common ioprio_set sys_ioprio_set 331314 common ioprio_set sys_ioprio_set
332315 common ioprio_get sys_ioprio_get 332315 common ioprio_get sys_ioprio_get
@@ -340,7 +340,7 @@
340323 common mkdirat sys_mkdirat 340323 common mkdirat sys_mkdirat
341324 common mknodat sys_mknodat 341324 common mknodat sys_mknodat
342325 common fchownat sys_fchownat 342325 common fchownat sys_fchownat
343326 common futimesat sys_futimesat 343326 common futimesat sys_futimesat_time32
344327 common fstatat64 sys_fstatat64 sys_oabi_fstatat64 344327 common fstatat64 sys_fstatat64 sys_oabi_fstatat64
345328 common unlinkat sys_unlinkat 345328 common unlinkat sys_unlinkat
346329 common renameat sys_renameat 346329 common renameat sys_renameat
@@ -349,8 +349,8 @@
349332 common readlinkat sys_readlinkat 349332 common readlinkat sys_readlinkat
350333 common fchmodat sys_fchmodat 350333 common fchmodat sys_fchmodat
351334 common faccessat sys_faccessat 351334 common faccessat sys_faccessat
352335 common pselect6 sys_pselect6 352335 common pselect6 sys_pselect6_time32
353336 common ppoll sys_ppoll 353336 common ppoll sys_ppoll_time32
354337 common unshare sys_unshare 354337 common unshare sys_unshare
355338 common set_robust_list sys_set_robust_list 355338 common set_robust_list sys_set_robust_list
356339 common get_robust_list sys_get_robust_list 356339 common get_robust_list sys_get_robust_list
@@ -362,13 +362,13 @@
362345 common getcpu sys_getcpu 362345 common getcpu sys_getcpu
363346 common epoll_pwait sys_epoll_pwait 363346 common epoll_pwait sys_epoll_pwait
364347 common kexec_load sys_kexec_load 364347 common kexec_load sys_kexec_load
365348 common utimensat sys_utimensat 365348 common utimensat sys_utimensat_time32
366349 common signalfd sys_signalfd 366349 common signalfd sys_signalfd
367350 common timerfd_create sys_timerfd_create 367350 common timerfd_create sys_timerfd_create
368351 common eventfd sys_eventfd 368351 common eventfd sys_eventfd
369352 common fallocate sys_fallocate 369352 common fallocate sys_fallocate
370353 common timerfd_settime sys_timerfd_settime 370353 common timerfd_settime sys_timerfd_settime32
371354 common timerfd_gettime sys_timerfd_gettime 371354 common timerfd_gettime sys_timerfd_gettime32
372355 common signalfd4 sys_signalfd4 372355 common signalfd4 sys_signalfd4
373356 common eventfd2 sys_eventfd2 373356 common eventfd2 sys_eventfd2
374357 common epoll_create1 sys_epoll_create1 374357 common epoll_create1 sys_epoll_create1
@@ -379,14 +379,14 @@
379362 common pwritev sys_pwritev 379362 common pwritev sys_pwritev
380363 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo 380363 common rt_tgsigqueueinfo sys_rt_tgsigqueueinfo
381364 common perf_event_open sys_perf_event_open 381364 common perf_event_open sys_perf_event_open
382365 common recvmmsg sys_recvmmsg 382365 common recvmmsg sys_recvmmsg_time32
383366 common accept4 sys_accept4 383366 common accept4 sys_accept4
384367 common fanotify_init sys_fanotify_init 384367 common fanotify_init sys_fanotify_init
385368 common fanotify_mark sys_fanotify_mark 385368 common fanotify_mark sys_fanotify_mark
386369 common prlimit64 sys_prlimit64 386369 common prlimit64 sys_prlimit64
387370 common name_to_handle_at sys_name_to_handle_at 387370 common name_to_handle_at sys_name_to_handle_at
388371 common open_by_handle_at sys_open_by_handle_at 388371 common open_by_handle_at sys_open_by_handle_at
389372 common clock_adjtime sys_clock_adjtime 389372 common clock_adjtime sys_clock_adjtime32
390373 common syncfs sys_syncfs 390373 common syncfs sys_syncfs
391374 common sendmmsg sys_sendmmsg 391374 common sendmmsg sys_sendmmsg
392375 common setns sys_setns 392375 common setns sys_setns
@@ -413,4 +413,27 @@
413396 common pkey_free sys_pkey_free 413396 common pkey_free sys_pkey_free
414397 common statx sys_statx 414397 common statx sys_statx
415398 common rseq sys_rseq 415398 common rseq sys_rseq
416399 common io_pgetevents sys_io_pgetevents 416399 common io_pgetevents sys_io_pgetevents_time32
417400 common migrate_pages sys_migrate_pages
418401 common kexec_file_load sys_kexec_file_load
419# 402 is unused
420403 common clock_gettime64 sys_clock_gettime
421404 common clock_settime64 sys_clock_settime
422405 common clock_adjtime64 sys_clock_adjtime
423406 common clock_getres_time64 sys_clock_getres
424407 common clock_nanosleep_time64 sys_clock_nanosleep
425408 common timer_gettime64 sys_timer_gettime
426409 common timer_settime64 sys_timer_settime
427410 common timerfd_gettime64 sys_timerfd_gettime
428411 common timerfd_settime64 sys_timerfd_settime
429412 common utimensat_time64 sys_utimensat
430413 common pselect6_time64 sys_pselect6
431414 common ppoll_time64 sys_ppoll
432416 common io_pgetevents_time64 sys_io_pgetevents
433417 common recvmmsg_time64 sys_recvmmsg
434418 common mq_timedsend_time64 sys_mq_timedsend
435419 common mq_timedreceive_time64 sys_mq_timedreceive
436420 common semtimedop_time64 sys_semtimedop
437421 common rt_sigtimedwait_time64 sys_rt_sigtimedwait
438422 common futex_time64 sys_futex
439423 common sched_rr_get_interval_time64 sys_sched_rr_get_interval
diff --git a/arch/arm/xen/hypercall.S b/arch/arm/xen/hypercall.S
index b0b80c0f09f3..b11bba542fac 100644
--- a/arch/arm/xen/hypercall.S
+++ b/arch/arm/xen/hypercall.S
@@ -113,8 +113,7 @@ ENTRY(privcmd_call)
113 113
114 /* 114 /*
115 * Disable userspace access from kernel. This is fine to do it 115 * Disable userspace access from kernel. This is fine to do it
116 * unconditionally as no set_fs(KERNEL_DS)/set_fs(get_ds()) is 116 * unconditionally as no set_fs(KERNEL_DS) is called before.
117 * called before.
118 */ 117 */
119 uaccess_disable r4 118 uaccess_disable r4
120 119
diff --git a/arch/arm/xen/mm.c b/arch/arm/xen/mm.c
index cb44aa290e73..e1d44b903dfc 100644
--- a/arch/arm/xen/mm.c
+++ b/arch/arm/xen/mm.c
@@ -7,7 +7,6 @@
7#include <linux/of_address.h> 7#include <linux/of_address.h>
8#include <linux/slab.h> 8#include <linux/slab.h>
9#include <linux/types.h> 9#include <linux/types.h>
10#include <linux/dma-mapping.h>
11#include <linux/vmalloc.h> 10#include <linux/vmalloc.h>
12#include <linux/swiotlb.h> 11#include <linux/swiotlb.h>
13 12