Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc

Pull ARM SoC cleanups from Arnd Bergmann:
"The remaining cleanups for 3.19 are to a large part result of
devicetree conversion nearing completion on two other platforms
besides AT91:

- Like AT91, Renesas shmobile is in the process to migrate to DT and
multiplatform, but using a different approach of doing it one SoC
at a time. For 3.19, the r8a7791 platform and associated "Koelsch"
board are considered complete and we remove the non-DT
non-multiplatform support for this.

- The ARM Versatile Express has supported DT and multiplatform for a
long time, but we have still kept the legacy board files around,
because not all drivers were fully working before. We have finally
taken the last step to remove the board files.

Other changes in this branch are preparation for the later branches or
just unrelated to the more interesting changes:

- The dts files for arm64 get moved into per-vendor directories for a
clearer structure.

- Some dead code removal (zynq, exynos, davinci, imx)

- Using pr_*() macros more consistently instead of printk(KERN_*) in
some platform code"

* tag 'cleanup-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (71 commits)
ARM: zynq: Remove secondary_startup() declaration from header
ARM: vexpress: Enable regulator framework when MMCI is in use
ARM: vexpress: Remove non-DT code
ARM: imx: Remove unneeded .map_io initialization
ARM: dts: imx6qdl-sabresd: Fix the microphone route
ARM: imx: refactor mxc_iomux_mode()
ARM: imx: simplify clk_pllv3_prepare()
ARM: imx6q: drop unnecessary semicolon
ARM: imx: clean up machine mxc_arch_reset_init_dt reset init
ARM: dts: imx6qdl-rex: Remove unneeded 'fsl,mode' property
ARM: dts: imx6qdl-gw5x: Remove unneeded 'fsl,mode' property
ARM: dts: imx6qdl-sabresd: Use IMX6QDL_CLK_CKO define
ARM: at91: remove useless init_time for DT-only SoCs
ARM: davinci: Remove redundant casts
ARM: davinci: Use standard logging styles
ARM: shmobile: r8a7779: Spelling/grammar s/entity/identity/, s/map/mapping/
ARM: shmobile: sh7372: Spelling/grammar s/entity map/identity mapping/
ARM: shmobile: sh73a0: Spelling/grammar s/entity map/identity mapping/
ARM: EXYNOS: Remove unused static iomapping
ARM: at91: fix build breakage due to legacy board removals
...

+1006 -3311
-1
MAINTAINERS
··· 1374 1374 F: arch/arm/configs/ape6evm_defconfig 1375 1375 F: arch/arm/configs/armadillo800eva_defconfig 1376 1376 F: arch/arm/configs/bockw_defconfig 1377 - F: arch/arm/configs/koelsch_defconfig 1378 1377 F: arch/arm/configs/kzm9g_defconfig 1379 1378 F: arch/arm/configs/lager_defconfig 1380 1379 F: arch/arm/configs/mackerel_defconfig
+2
arch/arm/Kconfig
··· 350 350 select ICST 351 351 select NEED_MACH_MEMORY_H 352 352 select PLAT_VERSATILE 353 + select PLAT_VERSATILE_SCHED_CLOCK 353 354 help 354 355 This enables support for ARM Ltd RealView boards. 355 356 ··· 366 365 select ICST 367 366 select PLAT_VERSATILE 368 367 select PLAT_VERSATILE_CLOCK 368 + select PLAT_VERSATILE_SCHED_CLOCK 369 369 select VERSATILE_FPGA_IRQ 370 370 help 371 371 This enables support for ARM Ltd Versatile board.
+6 -2
arch/arm/Makefile
··· 312 312 $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $(boot)/dts/$@ 313 313 314 314 PHONY += dtbs dtbs_install 315 - dtbs dtbs_install: prepare scripts 316 - $(Q)$(MAKE) $(build)=$(boot)/dts MACHINE=$(MACHINE) $@ 315 + 316 + dtbs: prepare scripts 317 + $(Q)$(MAKE) $(build)=$(boot)/dts 318 + 319 + dtbs_install: 320 + $(Q)$(MAKE) $(dtbinst)=$(boot)/dts 317 321 318 322 # We use MRPROPER_FILES and CLEAN_FILES now 319 323 archclean:
+9 -18
arch/arm/boot/dts/Makefile
··· 376 376 s5pv210-smdkc110.dtb \ 377 377 s5pv210-smdkv210.dtb \ 378 378 s5pv210-torbreck.dtb 379 - dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += r7s72100-genmai.dtb \ 379 + dtb-$(CONFIG_ARCH_SHMOBILE_LEGACY) += \ 380 + r8a73a4-ape6evm.dtb \ 381 + r8a73a4-ape6evm-reference.dtb \ 380 382 r8a7740-armadillo800eva.dtb \ 381 383 r8a7778-bockw.dtb \ 382 384 r8a7778-bockw-reference.dtb \ 383 385 r8a7779-marzen.dtb \ 384 - r8a7791-koelsch.dtb \ 385 386 r8a7790-lager.dtb \ 387 + sh7372-mackerel.dtb \ 386 388 sh73a0-kzm9g.dtb \ 387 - sh73a0-kzm9g-reference.dtb \ 388 - r8a73a4-ape6evm.dtb \ 389 - r8a73a4-ape6evm-reference.dtb \ 390 - sh7372-mackerel.dtb 389 + sh73a0-kzm9g-reference.dtb 391 390 dtb-$(CONFIG_ARCH_SHMOBILE_MULTI) += emev2-kzm9d.dtb \ 392 391 r7s72100-genmai.dtb \ 393 392 r8a7740-armadillo800eva.dtb \ 393 + r8a7779-marzen.dtb \ 394 + r8a7790-lager.dtb \ 394 395 r8a7791-henninger.dtb \ 395 396 r8a7791-koelsch.dtb \ 396 - r8a7790-lager.dtb \ 397 - r8a7779-marzen.dtb \ 398 397 r8a7794-alt.dtb 399 398 dtb-$(CONFIG_ARCH_SOCFPGA) += socfpga_arria5_socdk.dtb \ 400 399 socfpga_cyclone5_socdk.dtb \ ··· 516 517 dove-dove-db.dtb 517 518 dtb-$(CONFIG_ARCH_MEDIATEK) += mt6589-aquaris5.dtb 518 519 519 - targets += dtbs dtbs_install 520 - targets += $(dtb-y) 521 520 endif 522 521 523 - # *.dtb used to be generated in the directory above. Clean out the 524 - # old build results so people don't accidentally use them. 525 - dtbs: $(addprefix $(obj)/, $(dtb-y)) 526 - $(Q)rm -f $(obj)/../*.dtb 527 - 528 - clean-files := *.dtb 529 - 530 - dtbs_install: $(addsuffix _dtbinst_, $(dtb-y)) 522 + always := $(dtb-y) 523 + clean-files := *.dtb
+32 -31
arch/arm/boot/dts/emev2-kzm9d.dts
··· 25 25 26 26 chosen { 27 27 bootargs = "console=ttyS1,115200n81 ignore_loglevel root=/dev/nfs ip=dhcp"; 28 - }; 29 - 30 - reg_1p8v: regulator@0 { 31 - compatible = "regulator-fixed"; 32 - regulator-name = "fixed-1.8V"; 33 - regulator-min-microvolt = <1800000>; 34 - regulator-max-microvolt = <1800000>; 35 - regulator-always-on; 36 - regulator-boot-on; 37 - }; 38 - 39 - reg_3p3v: regulator@1 { 40 - compatible = "regulator-fixed"; 41 - regulator-name = "fixed-3.3V"; 42 - regulator-min-microvolt = <3300000>; 43 - regulator-max-microvolt = <3300000>; 44 - regulator-always-on; 45 - regulator-boot-on; 46 - }; 47 - 48 - lan9220@20000000 { 49 - compatible = "smsc,lan9220", "smsc,lan9115"; 50 - reg = <0x20000000 0x10000>; 51 - phy-mode = "mii"; 52 - interrupt-parent = <&gpio0>; 53 - interrupts = <1 IRQ_TYPE_EDGE_RISING>; 54 - reg-io-width = <4>; 55 - smsc,irq-active-high; 56 - smsc,irq-push-pull; 57 - vddvario-supply = <&reg_1p8v>; 58 - vdd33a-supply = <&reg_3p3v>; 28 + stdout-path = &uart1; 59 29 }; 60 30 61 31 gpio_keys { ··· 61 91 linux,code = <KEY_4>; 62 92 gpios = <&gpio0 17 GPIO_ACTIVE_HIGH>; 63 93 }; 94 + }; 95 + 96 + reg_1p8v: regulator@0 { 97 + compatible = "regulator-fixed"; 98 + regulator-name = "fixed-1.8V"; 99 + regulator-min-microvolt = <1800000>; 100 + regulator-max-microvolt = <1800000>; 101 + regulator-always-on; 102 + regulator-boot-on; 103 + }; 104 + 105 + reg_3p3v: regulator@1 { 106 + compatible = "regulator-fixed"; 107 + regulator-name = "fixed-3.3V"; 108 + regulator-min-microvolt = <3300000>; 109 + regulator-max-microvolt = <3300000>; 110 + regulator-always-on; 111 + regulator-boot-on; 112 + }; 113 + 114 + lan9220@20000000 { 115 + compatible = "smsc,lan9220", "smsc,lan9115"; 116 + reg = <0x20000000 0x10000>; 117 + phy-mode = "mii"; 118 + interrupt-parent = <&gpio0>; 119 + interrupts = <1 IRQ_TYPE_EDGE_RISING>; 120 + reg-io-width = <4>; 121 + smsc,irq-active-high; 122 + smsc,irq-push-pull; 123 + vddvario-supply = <&reg_1p8v>; 124 + vdd33a-supply = <&reg_3p3v>; 64 125 }; 65 126 };
+6 -6
arch/arm/boot/dts/emev2.dtsi
··· 55 55 <0 121 IRQ_TYPE_LEVEL_HIGH>; 56 56 }; 57 57 58 - smu@e0110000 { 58 + clocks@e0110000 { 59 59 compatible = "renesas,emev2-smu"; 60 60 reg = <0xe0110000 0x10000>; 61 61 #address-cells = <2>; ··· 129 129 }; 130 130 }; 131 131 132 - sti@e0180000 { 132 + timer@e0180000 { 133 133 compatible = "renesas,em-sti"; 134 134 reg = <0xe0180000 0x54>; 135 135 interrupts = <0 125 IRQ_TYPE_LEVEL_HIGH>; ··· 137 137 clock-names = "sclk"; 138 138 }; 139 139 140 - uart@e1020000 { 140 + uart0: serial@e1020000 { 141 141 compatible = "renesas,em-uart"; 142 142 reg = <0xe1020000 0x38>; 143 143 interrupts = <0 8 IRQ_TYPE_LEVEL_HIGH>; ··· 145 145 clock-names = "sclk"; 146 146 }; 147 147 148 - uart@e1030000 { 148 + uart1: serial@e1030000 { 149 149 compatible = "renesas,em-uart"; 150 150 reg = <0xe1030000 0x38>; 151 151 interrupts = <0 9 IRQ_TYPE_LEVEL_HIGH>; ··· 153 153 clock-names = "sclk"; 154 154 }; 155 155 156 - uart@e1040000 { 156 + uart2: serial@e1040000 { 157 157 compatible = "renesas,em-uart"; 158 158 reg = <0xe1040000 0x38>; 159 159 interrupts = <0 10 IRQ_TYPE_LEVEL_HIGH>; ··· 161 161 clock-names = "sclk"; 162 162 }; 163 163 164 - uart@e1050000 { 164 + uart3: serial@e1050000 { 165 165 compatible = "renesas,em-uart"; 166 166 reg = <0xe1050000 0x38>; 167 167 interrupts = <0 11 IRQ_TYPE_LEVEL_HIGH>;
-1
arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
··· 282 282 }; 283 283 284 284 &ssi1 { 285 - fsl,mode = "i2s-slave"; 286 285 status = "okay"; 287 286 }; 288 287
-1
arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
··· 287 287 }; 288 288 289 289 &ssi1 { 290 - fsl,mode = "i2s-slave"; 291 290 status = "okay"; 292 291 }; 293 292
-2
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
··· 376 376 }; 377 377 378 378 &ssi1 { 379 - fsl,mode = "i2s-slave"; 380 379 status = "okay"; 381 380 }; 382 381 383 382 &ssi2 { 384 - fsl,mode = "i2s-slave"; 385 383 status = "okay"; 386 384 }; 387 385
-1
arch/arm/boot/dts/imx6qdl-rex.dtsi
··· 308 308 }; 309 309 310 310 &ssi1 { 311 - fsl,mode = "i2s-slave"; 312 311 status = "okay"; 313 312 }; 314 313
+3 -5
arch/arm/boot/dts/imx6qdl-sabresd.dtsi
··· 107 107 "Headphone Jack", "HPOUTR", 108 108 "Ext Spk", "SPKOUTL", 109 109 "Ext Spk", "SPKOUTR", 110 - "MICBIAS", "AMIC", 111 - "IN3R", "MICBIAS", 112 - "DMIC", "MICBIAS", 113 - "DMICDAT", "DMIC"; 110 + "AMIC", "MICBIAS", 111 + "IN3R", "AMIC"; 114 112 mux-int-port = <2>; 115 113 mux-ext-port = <3>; 116 114 }; ··· 177 179 codec: wm8962@1a { 178 180 compatible = "wlf,wm8962"; 179 181 reg = <0x1a>; 180 - clocks = <&clks 201>; 182 + clocks = <&clks IMX6QDL_CLK_CKO>; 181 183 DCVDD-supply = <&reg_audio>; 182 184 DBVDD-supply = <&reg_audio>; 183 185 AVDD-supply = <&reg_audio>;
+2 -1
arch/arm/boot/dts/r7s72100-genmai.dts
··· 21 21 }; 22 22 23 23 chosen { 24 - bootargs = "console=ttySC2,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp"; 24 + bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp"; 25 + stdout-path = &scif2; 25 26 }; 26 27 27 28 memory {
+101 -101
arch/arm/boot/dts/r7s72100.dtsi
··· 52 52 clock-output-names = "usb_x1"; 53 53 }; 54 54 55 - /* Special CPG clocks */ 56 - cpg_clocks: cpg_clocks@fcfe0000 { 57 - #clock-cells = <1>; 58 - compatible = "renesas,r7s72100-cpg-clocks", 59 - "renesas,rz-cpg-clocks"; 60 - reg = <0xfcfe0000 0x18>; 61 - clocks = <&extal_clk>, <&usb_x1_clk>; 62 - clock-output-names = "pll", "i", "g"; 63 - }; 64 - 65 55 /* Fixed factor clocks */ 66 56 b_clk: b_clk { 67 57 #clock-cells = <0>; ··· 76 86 clock-mult = <1>; 77 87 clock-div = <12>; 78 88 clock-output-names = "p0"; 89 + }; 90 + 91 + /* Special CPG clocks */ 92 + cpg_clocks: cpg_clocks@fcfe0000 { 93 + #clock-cells = <1>; 94 + compatible = "renesas,r7s72100-cpg-clocks", 95 + "renesas,rz-cpg-clocks"; 96 + reg = <0xfcfe0000 0x18>; 97 + clocks = <&extal_clk>, <&usb_x1_clk>; 98 + clock-output-names = "pll", "i", "g"; 79 99 }; 80 100 81 101 /* MSTP clocks */ ··· 146 146 reg = <0>; 147 147 clock-frequency = <400000000>; 148 148 }; 149 - }; 150 - 151 - gic: interrupt-controller@e8201000 { 152 - compatible = "arm,cortex-a9-gic"; 153 - #interrupt-cells = <3>; 154 - #address-cells = <0>; 155 - interrupt-controller; 156 - reg = <0xe8201000 0x1000>, 157 - <0xe8202000 0x1000>; 158 - }; 159 - 160 - i2c0: i2c@fcfee000 { 161 - #address-cells = <1>; 162 - #size-cells = <0>; 163 - compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 164 - reg = <0xfcfee000 0x44>; 165 - interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>, 166 - <0 158 IRQ_TYPE_EDGE_RISING>, 167 - <0 159 IRQ_TYPE_EDGE_RISING>, 168 - <0 160 IRQ_TYPE_LEVEL_HIGH>, 169 - <0 161 IRQ_TYPE_LEVEL_HIGH>, 170 - <0 162 IRQ_TYPE_LEVEL_HIGH>, 171 - <0 163 IRQ_TYPE_LEVEL_HIGH>, 172 - <0 164 IRQ_TYPE_LEVEL_HIGH>; 173 - clocks = <&mstp9_clks R7S72100_CLK_I2C0>; 174 - clock-frequency = <100000>; 175 - status = "disabled"; 176 - }; 177 - 178 - i2c1: i2c@fcfee400 { 179 - #address-cells = <1>; 180 - #size-cells = <0>; 181 - compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 182 - reg = <0xfcfee400 0x44>; 183 - interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>, 184 - <0 166 IRQ_TYPE_EDGE_RISING>, 185 - <0 167 IRQ_TYPE_EDGE_RISING>, 186 - <0 168 IRQ_TYPE_LEVEL_HIGH>, 187 - <0 169 IRQ_TYPE_LEVEL_HIGH>, 188 - <0 170 IRQ_TYPE_LEVEL_HIGH>, 189 - <0 171 IRQ_TYPE_LEVEL_HIGH>, 190 - <0 172 IRQ_TYPE_LEVEL_HIGH>; 191 - clocks = <&mstp9_clks R7S72100_CLK_I2C1>; 192 - clock-frequency = <100000>; 193 - status = "disabled"; 194 - }; 195 - 196 - i2c2: i2c@fcfee800 { 197 - #address-cells = <1>; 198 - #size-cells = <0>; 199 - compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 200 - reg = <0xfcfee800 0x44>; 201 - interrupts = <0 173 IRQ_TYPE_LEVEL_HIGH>, 202 - <0 174 IRQ_TYPE_EDGE_RISING>, 203 - <0 175 IRQ_TYPE_EDGE_RISING>, 204 - <0 176 IRQ_TYPE_LEVEL_HIGH>, 205 - <0 177 IRQ_TYPE_LEVEL_HIGH>, 206 - <0 178 IRQ_TYPE_LEVEL_HIGH>, 207 - <0 179 IRQ_TYPE_LEVEL_HIGH>, 208 - <0 180 IRQ_TYPE_LEVEL_HIGH>; 209 - clocks = <&mstp9_clks R7S72100_CLK_I2C2>; 210 - clock-frequency = <100000>; 211 - status = "disabled"; 212 - }; 213 - 214 - i2c3: i2c@fcfeec00 { 215 - #address-cells = <1>; 216 - #size-cells = <0>; 217 - compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 218 - reg = <0xfcfeec00 0x44>; 219 - interrupts = <0 181 IRQ_TYPE_LEVEL_HIGH>, 220 - <0 182 IRQ_TYPE_EDGE_RISING>, 221 - <0 183 IRQ_TYPE_EDGE_RISING>, 222 - <0 184 IRQ_TYPE_LEVEL_HIGH>, 223 - <0 185 IRQ_TYPE_LEVEL_HIGH>, 224 - <0 186 IRQ_TYPE_LEVEL_HIGH>, 225 - <0 187 IRQ_TYPE_LEVEL_HIGH>, 226 - <0 188 IRQ_TYPE_LEVEL_HIGH>; 227 - clocks = <&mstp9_clks R7S72100_CLK_I2C3>; 228 - clock-frequency = <100000>; 229 - status = "disabled"; 230 - }; 231 - 232 - mtu2: timer@fcff0000 { 233 - compatible = "renesas,mtu2-r7s72100", "renesas,mtu2"; 234 - reg = <0xfcff0000 0x400>; 235 - interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>; 236 - interrupt-names = "tgi0a"; 237 - clocks = <&mstp3_clks R7S72100_CLK_MTU2>; 238 - clock-names = "fck"; 239 - status = "disabled"; 240 149 }; 241 150 242 151 scif0: serial@e8007000 { ··· 311 402 num-cs = <1>; 312 403 #address-cells = <1>; 313 404 #size-cells = <0>; 405 + status = "disabled"; 406 + }; 407 + 408 + gic: interrupt-controller@e8201000 { 409 + compatible = "arm,cortex-a9-gic"; 410 + #interrupt-cells = <3>; 411 + #address-cells = <0>; 412 + interrupt-controller; 413 + reg = <0xe8201000 0x1000>, 414 + <0xe8202000 0x1000>; 415 + }; 416 + 417 + i2c0: i2c@fcfee000 { 418 + #address-cells = <1>; 419 + #size-cells = <0>; 420 + compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 421 + reg = <0xfcfee000 0x44>; 422 + interrupts = <0 157 IRQ_TYPE_LEVEL_HIGH>, 423 + <0 158 IRQ_TYPE_EDGE_RISING>, 424 + <0 159 IRQ_TYPE_EDGE_RISING>, 425 + <0 160 IRQ_TYPE_LEVEL_HIGH>, 426 + <0 161 IRQ_TYPE_LEVEL_HIGH>, 427 + <0 162 IRQ_TYPE_LEVEL_HIGH>, 428 + <0 163 IRQ_TYPE_LEVEL_HIGH>, 429 + <0 164 IRQ_TYPE_LEVEL_HIGH>; 430 + clocks = <&mstp9_clks R7S72100_CLK_I2C0>; 431 + clock-frequency = <100000>; 432 + status = "disabled"; 433 + }; 434 + 435 + i2c1: i2c@fcfee400 { 436 + #address-cells = <1>; 437 + #size-cells = <0>; 438 + compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 439 + reg = <0xfcfee400 0x44>; 440 + interrupts = <0 165 IRQ_TYPE_LEVEL_HIGH>, 441 + <0 166 IRQ_TYPE_EDGE_RISING>, 442 + <0 167 IRQ_TYPE_EDGE_RISING>, 443 + <0 168 IRQ_TYPE_LEVEL_HIGH>, 444 + <0 169 IRQ_TYPE_LEVEL_HIGH>, 445 + <0 170 IRQ_TYPE_LEVEL_HIGH>, 446 + <0 171 IRQ_TYPE_LEVEL_HIGH>, 447 + <0 172 IRQ_TYPE_LEVEL_HIGH>; 448 + clocks = <&mstp9_clks R7S72100_CLK_I2C1>; 449 + clock-frequency = <100000>; 450 + status = "disabled"; 451 + }; 452 + 453 + i2c2: i2c@fcfee800 { 454 + #address-cells = <1>; 455 + #size-cells = <0>; 456 + compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 457 + reg = <0xfcfee800 0x44>; 458 + interrupts = <0 173 IRQ_TYPE_LEVEL_HIGH>, 459 + <0 174 IRQ_TYPE_EDGE_RISING>, 460 + <0 175 IRQ_TYPE_EDGE_RISING>, 461 + <0 176 IRQ_TYPE_LEVEL_HIGH>, 462 + <0 177 IRQ_TYPE_LEVEL_HIGH>, 463 + <0 178 IRQ_TYPE_LEVEL_HIGH>, 464 + <0 179 IRQ_TYPE_LEVEL_HIGH>, 465 + <0 180 IRQ_TYPE_LEVEL_HIGH>; 466 + clocks = <&mstp9_clks R7S72100_CLK_I2C2>; 467 + clock-frequency = <100000>; 468 + status = "disabled"; 469 + }; 470 + 471 + i2c3: i2c@fcfeec00 { 472 + #address-cells = <1>; 473 + #size-cells = <0>; 474 + compatible = "renesas,riic-r7s72100", "renesas,riic-rz"; 475 + reg = <0xfcfeec00 0x44>; 476 + interrupts = <0 181 IRQ_TYPE_LEVEL_HIGH>, 477 + <0 182 IRQ_TYPE_EDGE_RISING>, 478 + <0 183 IRQ_TYPE_EDGE_RISING>, 479 + <0 184 IRQ_TYPE_LEVEL_HIGH>, 480 + <0 185 IRQ_TYPE_LEVEL_HIGH>, 481 + <0 186 IRQ_TYPE_LEVEL_HIGH>, 482 + <0 187 IRQ_TYPE_LEVEL_HIGH>, 483 + <0 188 IRQ_TYPE_LEVEL_HIGH>; 484 + clocks = <&mstp9_clks R7S72100_CLK_I2C3>; 485 + clock-frequency = <100000>; 486 + status = "disabled"; 487 + }; 488 + 489 + mtu2: timer@fcff0000 { 490 + compatible = "renesas,mtu2-r7s72100", "renesas,mtu2"; 491 + reg = <0xfcff0000 0x400>; 492 + interrupts = <0 107 IRQ_TYPE_LEVEL_HIGH>; 493 + interrupt-names = "tgi0a"; 494 + clocks = <&mstp3_clks R7S72100_CLK_MTU2>; 495 + clock-names = "fck"; 314 496 status = "disabled"; 315 497 }; 316 498 };
+2 -1
arch/arm/boot/dts/r8a73a4-ape6evm-reference.dts
··· 21 21 }; 22 22 23 23 chosen { 24 - bootargs = "console=ttySC0,115200 ignore_loglevel rw"; 24 + bootargs = "ignore_loglevel rw"; 25 + stdout-path = &scifa0; 25 26 }; 26 27 27 28 memory@40000000 {
+116 -116
arch/arm/boot/dts/r8a73a4.dtsi
··· 30 30 }; 31 31 }; 32 32 33 - gic: interrupt-controller@f1001000 { 34 - compatible = "arm,cortex-a15-gic"; 35 - #interrupt-cells = <3>; 36 - #address-cells = <0>; 37 - interrupt-controller; 38 - reg = <0 0xf1001000 0 0x1000>, 39 - <0 0xf1002000 0 0x1000>, 40 - <0 0xf1004000 0 0x2000>, 41 - <0 0xf1006000 0 0x2000>; 42 - interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 43 - }; 44 - 45 33 timer { 46 34 compatible = "arm,armv7-timer"; 47 35 interrupts = <1 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 48 36 <1 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 49 37 <1 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>, 50 38 <1 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>; 39 + }; 40 + 41 + dmac: dma-multiplexer { 42 + compatible = "renesas,shdma-mux"; 43 + #dma-cells = <1>; 44 + dma-channels = <20>; 45 + dma-requests = <256>; 46 + #address-cells = <2>; 47 + #size-cells = <2>; 48 + ranges; 49 + 50 + dma0: dma-controller@e6700020 { 51 + compatible = "renesas,shdma-r8a73a4"; 52 + reg = <0 0xe6700020 0 0x89e0>; 53 + interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH 54 + 0 200 IRQ_TYPE_LEVEL_HIGH 55 + 0 201 IRQ_TYPE_LEVEL_HIGH 56 + 0 202 IRQ_TYPE_LEVEL_HIGH 57 + 0 203 IRQ_TYPE_LEVEL_HIGH 58 + 0 204 IRQ_TYPE_LEVEL_HIGH 59 + 0 205 IRQ_TYPE_LEVEL_HIGH 60 + 0 206 IRQ_TYPE_LEVEL_HIGH 61 + 0 207 IRQ_TYPE_LEVEL_HIGH 62 + 0 208 IRQ_TYPE_LEVEL_HIGH 63 + 0 209 IRQ_TYPE_LEVEL_HIGH 64 + 0 210 IRQ_TYPE_LEVEL_HIGH 65 + 0 211 IRQ_TYPE_LEVEL_HIGH 66 + 0 212 IRQ_TYPE_LEVEL_HIGH 67 + 0 213 IRQ_TYPE_LEVEL_HIGH 68 + 0 214 IRQ_TYPE_LEVEL_HIGH 69 + 0 215 IRQ_TYPE_LEVEL_HIGH 70 + 0 216 IRQ_TYPE_LEVEL_HIGH 71 + 0 217 IRQ_TYPE_LEVEL_HIGH 72 + 0 218 IRQ_TYPE_LEVEL_HIGH 73 + 0 219 IRQ_TYPE_LEVEL_HIGH>; 74 + interrupt-names = "error", 75 + "ch0", "ch1", "ch2", "ch3", 76 + "ch4", "ch5", "ch6", "ch7", 77 + "ch8", "ch9", "ch10", "ch11", 78 + "ch12", "ch13", "ch14", "ch15", 79 + "ch16", "ch17", "ch18", "ch19"; 80 + }; 81 + }; 82 + 83 + pfc: pfc@e6050000 { 84 + compatible = "renesas,pfc-r8a73a4"; 85 + reg = <0 0xe6050000 0 0x9000>; 86 + gpio-controller; 87 + #gpio-cells = <2>; 88 + interrupts-extended = 89 + <&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>, 90 + <&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>, 91 + <&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>, 92 + <&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>, 93 + <&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>, 94 + <&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>, 95 + <&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>, 96 + <&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>, 97 + <&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>, 98 + <&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>, 99 + <&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>, 100 + <&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>, 101 + <&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>, 102 + <&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>, 103 + <&irqc1 24 0>, <&irqc1 25 0>; 104 + }; 105 + 106 + i2c5: i2c@e60b0000 { 107 + #address-cells = <1>; 108 + #size-cells = <0>; 109 + compatible = "renesas,rmobile-iic"; 110 + reg = <0 0xe60b0000 0 0x428>; 111 + interrupts = <0 179 IRQ_TYPE_LEVEL_HIGH>; 112 + status = "disabled"; 51 113 }; 52 114 53 115 irqc0: interrupt-controller@e61c0000 { ··· 184 122 <0 57 IRQ_TYPE_LEVEL_HIGH>; 185 123 }; 186 124 187 - dmac: dma-multiplexer@0 { 188 - compatible = "renesas,shdma-mux"; 189 - #dma-cells = <1>; 190 - dma-channels = <20>; 191 - dma-requests = <256>; 192 - #address-cells = <2>; 193 - #size-cells = <2>; 194 - ranges; 195 - 196 - dma0: dma-controller@e6700020 { 197 - compatible = "renesas,shdma-r8a73a4"; 198 - reg = <0 0xe6700020 0 0x89e0>; 199 - interrupts = <0 220 IRQ_TYPE_LEVEL_HIGH 200 - 0 200 IRQ_TYPE_LEVEL_HIGH 201 - 0 201 IRQ_TYPE_LEVEL_HIGH 202 - 0 202 IRQ_TYPE_LEVEL_HIGH 203 - 0 203 IRQ_TYPE_LEVEL_HIGH 204 - 0 204 IRQ_TYPE_LEVEL_HIGH 205 - 0 205 IRQ_TYPE_LEVEL_HIGH 206 - 0 206 IRQ_TYPE_LEVEL_HIGH 207 - 0 207 IRQ_TYPE_LEVEL_HIGH 208 - 0 208 IRQ_TYPE_LEVEL_HIGH 209 - 0 209 IRQ_TYPE_LEVEL_HIGH 210 - 0 210 IRQ_TYPE_LEVEL_HIGH 211 - 0 211 IRQ_TYPE_LEVEL_HIGH 212 - 0 212 IRQ_TYPE_LEVEL_HIGH 213 - 0 213 IRQ_TYPE_LEVEL_HIGH 214 - 0 214 IRQ_TYPE_LEVEL_HIGH 215 - 0 215 IRQ_TYPE_LEVEL_HIGH 216 - 0 216 IRQ_TYPE_LEVEL_HIGH 217 - 0 217 IRQ_TYPE_LEVEL_HIGH 218 - 0 218 IRQ_TYPE_LEVEL_HIGH 219 - 0 219 IRQ_TYPE_LEVEL_HIGH>; 220 - interrupt-names = "error", 221 - "ch0", "ch1", "ch2", "ch3", 222 - "ch4", "ch5", "ch6", "ch7", 223 - "ch8", "ch9", "ch10", "ch11", 224 - "ch12", "ch13", "ch14", "ch15", 225 - "ch16", "ch17", "ch18", "ch19"; 226 - }; 227 - }; 228 - 229 125 thermal@e61f0000 { 230 126 compatible = "renesas,thermal-r8a73a4", "renesas,rcar-thermal"; 231 127 reg = <0 0xe61f0000 0 0x14>, <0 0xe61f0100 0 0x38>, ··· 236 216 status = "disabled"; 237 217 }; 238 218 239 - i2c5: i2c@e60b0000 { 240 - #address-cells = <1>; 241 - #size-cells = <0>; 242 - compatible = "renesas,rmobile-iic"; 243 - reg = <0 0xe60b0000 0 0x428>; 244 - interrupts = <0 179 IRQ_TYPE_LEVEL_HIGH>; 245 - status = "disabled"; 246 - }; 247 - 248 219 i2c6: i2c@e6550000 { 249 220 #address-cells = <1>; 250 221 #size-cells = <0>; ··· 263 252 status = "disabled"; 264 253 }; 265 254 266 - scifa0: serial@e6c40000 { 267 - compatible = "renesas,scifa-r8a73a4", "renesas,scifa"; 268 - reg = <0 0xe6c40000 0 0x100>; 269 - interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; 270 - status = "disabled"; 271 - }; 272 - 273 - scifa1: serial@e6c50000 { 274 - compatible = "renesas,scifa-r8a73a4", "renesas,scifa"; 275 - reg = <0 0xe6c50000 0 0x100>; 276 - interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>; 277 - status = "disabled"; 278 - }; 279 - 280 255 scifb2: serial@e6c20000 { 281 256 compatible = "renesas,scifb-r8a73a4", "renesas,scifb"; 282 257 reg = <0 0xe6c20000 0 0x100>; ··· 274 277 compatible = "renesas,scifb-r8a73a4", "renesas,scifb"; 275 278 reg = <0 0xe6c30000 0 0x100>; 276 279 interrupts = <0 149 IRQ_TYPE_LEVEL_HIGH>; 280 + status = "disabled"; 281 + }; 282 + 283 + scifa0: serial@e6c40000 { 284 + compatible = "renesas,scifa-r8a73a4", "renesas,scifa"; 285 + reg = <0 0xe6c40000 0 0x100>; 286 + interrupts = <0 144 IRQ_TYPE_LEVEL_HIGH>; 287 + status = "disabled"; 288 + }; 289 + 290 + scifa1: serial@e6c50000 { 291 + compatible = "renesas,scifa-r8a73a4", "renesas,scifa"; 292 + reg = <0 0xe6c50000 0 0x100>; 293 + interrupts = <0 145 IRQ_TYPE_LEVEL_HIGH>; 277 294 status = "disabled"; 278 295 }; 279 296 ··· 303 292 reg = <0 0xe6cf0000 0 0x100>; 304 293 interrupts = <0 151 IRQ_TYPE_LEVEL_HIGH>; 305 294 status = "disabled"; 306 - }; 307 - 308 - mmcif0: mmc@ee200000 { 309 - compatible = "renesas,sh-mmcif"; 310 - reg = <0 0xee200000 0 0x80>; 311 - interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>; 312 - reg-io-width = <4>; 313 - status = "disabled"; 314 - }; 315 - 316 - mmcif1: mmc@ee220000 { 317 - compatible = "renesas,sh-mmcif"; 318 - reg = <0 0xee220000 0 0x80>; 319 - interrupts = <0 170 IRQ_TYPE_LEVEL_HIGH>; 320 - reg-io-width = <4>; 321 - status = "disabled"; 322 - }; 323 - 324 - pfc: pfc@e6050000 { 325 - compatible = "renesas,pfc-r8a73a4"; 326 - reg = <0 0xe6050000 0 0x9000>; 327 - gpio-controller; 328 - #gpio-cells = <2>; 329 - interrupts-extended = 330 - <&irqc0 0 0>, <&irqc0 1 0>, <&irqc0 2 0>, <&irqc0 3 0>, 331 - <&irqc0 4 0>, <&irqc0 5 0>, <&irqc0 6 0>, <&irqc0 7 0>, 332 - <&irqc0 8 0>, <&irqc0 9 0>, <&irqc0 10 0>, <&irqc0 11 0>, 333 - <&irqc0 12 0>, <&irqc0 13 0>, <&irqc0 14 0>, <&irqc0 15 0>, 334 - <&irqc0 16 0>, <&irqc0 17 0>, <&irqc0 18 0>, <&irqc0 19 0>, 335 - <&irqc0 20 0>, <&irqc0 21 0>, <&irqc0 22 0>, <&irqc0 23 0>, 336 - <&irqc0 24 0>, <&irqc0 25 0>, <&irqc0 26 0>, <&irqc0 27 0>, 337 - <&irqc0 28 0>, <&irqc0 29 0>, <&irqc0 30 0>, <&irqc0 31 0>, 338 - <&irqc1 0 0>, <&irqc1 1 0>, <&irqc1 2 0>, <&irqc1 3 0>, 339 - <&irqc1 4 0>, <&irqc1 5 0>, <&irqc1 6 0>, <&irqc1 7 0>, 340 - <&irqc1 8 0>, <&irqc1 9 0>, <&irqc1 10 0>, <&irqc1 11 0>, 341 - <&irqc1 12 0>, <&irqc1 13 0>, <&irqc1 14 0>, <&irqc1 15 0>, 342 - <&irqc1 16 0>, <&irqc1 17 0>, <&irqc1 18 0>, <&irqc1 19 0>, 343 - <&irqc1 20 0>, <&irqc1 21 0>, <&irqc1 22 0>, <&irqc1 23 0>, 344 - <&irqc1 24 0>, <&irqc1 25 0>; 345 295 }; 346 296 347 297 sdhi0: sd@ee100000 { ··· 327 355 interrupts = <0 167 IRQ_TYPE_LEVEL_HIGH>; 328 356 cap-sd-highspeed; 329 357 status = "disabled"; 358 + }; 359 + 360 + mmcif0: mmc@ee200000 { 361 + compatible = "renesas,sh-mmcif"; 362 + reg = <0 0xee200000 0 0x80>; 363 + interrupts = <0 169 IRQ_TYPE_LEVEL_HIGH>; 364 + reg-io-width = <4>; 365 + status = "disabled"; 366 + }; 367 + 368 + mmcif1: mmc@ee220000 { 369 + compatible = "renesas,sh-mmcif"; 370 + reg = <0 0xee220000 0 0x80>; 371 + interrupts = <0 170 IRQ_TYPE_LEVEL_HIGH>; 372 + reg-io-width = <4>; 373 + status = "disabled"; 374 + }; 375 + 376 + gic: interrupt-controller@f1001000 { 377 + compatible = "arm,cortex-a15-gic"; 378 + #interrupt-cells = <3>; 379 + #address-cells = <0>; 380 + interrupt-controller; 381 + reg = <0 0xf1001000 0 0x1000>, 382 + <0 0xf1002000 0 0x1000>, 383 + <0 0xf1004000 0 0x2000>, 384 + <0 0xf1006000 0 0x2000>; 385 + interrupts = <1 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>; 330 386 }; 331 387 };
+1
arch/arm/boot/dts/r8a7740-armadillo800eva.dts
··· 25 25 26 26 chosen { 27 27 bootargs = "console=tty0 console=ttySC1,115200 earlyprintk=sh-sci.1,115200 ignore_loglevel root=/dev/nfs ip=dhcp rw"; 28 + stdout-path = &scifa1; 28 29 }; 29 30 30 31 memory {
+2 -1
arch/arm/boot/dts/r8a7778-bockw-reference.dts
··· 28 28 }; 29 29 30 30 chosen { 31 - bootargs = "console=ttySC0,115200 ignore_loglevel root=/dev/nfs ip=dhcp rw"; 31 + bootargs = "ignore_loglevel root=/dev/nfs ip=dhcp rw"; 32 + stdout-path = &scif0; 32 33 }; 33 34 34 35 memory {
+84
arch/arm/boot/dts/r8a7779-marzen.dts
··· 25 25 26 26 chosen { 27 27 bootargs = "console=ttySC2,115200 ignore_loglevel root=/dev/nfs ip=on"; 28 + stdout-path = &scif2; 28 29 }; 29 30 30 31 memory { ··· 69 68 gpios = <&gpio4 31 GPIO_ACTIVE_HIGH>; 70 69 }; 71 70 }; 71 + 72 + vga-encoder { 73 + compatible = "adi,adv7123"; 74 + 75 + ports { 76 + #address-cells = <1>; 77 + #size-cells = <0>; 78 + 79 + port@0 { 80 + reg = <0>; 81 + vga_enc_in: endpoint { 82 + remote-endpoint = <&du_out_rgb0>; 83 + }; 84 + }; 85 + port@1 { 86 + reg = <1>; 87 + vga_enc_out: endpoint { 88 + remote-endpoint = <&vga_in>; 89 + }; 90 + }; 91 + }; 92 + }; 93 + 94 + vga { 95 + compatible = "vga-connector"; 96 + 97 + port { 98 + vga_in: endpoint { 99 + remote-endpoint = <&vga_enc_out>; 100 + }; 101 + }; 102 + }; 103 + 104 + lvds-encoder { 105 + compatible = "thine,thc63lvdm83d"; 106 + 107 + ports { 108 + #address-cells = <1>; 109 + #size-cells = <0>; 110 + 111 + port@0 { 112 + reg = <0>; 113 + lvds_enc_in: endpoint { 114 + remote-endpoint = <&du_out_rgb1>; 115 + }; 116 + }; 117 + port@1 { 118 + reg = <1>; 119 + lvds_connector: endpoint { 120 + }; 121 + }; 122 + }; 123 + }; 124 + }; 125 + 126 + &du { 127 + pinctrl-0 = <&du_pins>; 128 + pinctrl-names = "default"; 129 + status = "okay"; 130 + 131 + ports { 132 + port@0 { 133 + endpoint { 134 + remote-endpoint = <&vga_enc_in>; 135 + }; 136 + }; 137 + port@1 { 138 + endpoint { 139 + remote-endpoint = <&lvds_enc_in>; 140 + }; 141 + }; 142 + }; 72 143 }; 73 144 74 145 &irqpin0 { ··· 156 83 }; 157 84 158 85 &pfc { 86 + du_pins: du { 87 + du0 { 88 + renesas,groups = "du0_rgb888", "du0_sync_1", "du0_clk_out_0"; 89 + renesas,function = "du0"; 90 + }; 91 + du1 { 92 + renesas,groups = "du1_rgb666", "du1_sync_1", "du1_clk_out"; 93 + renesas,function = "du1"; 94 + }; 95 + }; 96 + 159 97 lan0_pins: lan0 { 160 98 intc { 161 99 renesas,groups = "intc_irq1_b";
+24
arch/arm/boot/dts/r8a7779.dtsi
··· 379 379 status = "disabled"; 380 380 }; 381 381 382 + du: display@fff80000 { 383 + compatible = "renesas,du-r8a7779"; 384 + reg = <0 0xfff80000 0 0x40000>; 385 + interrupts = <0 31 IRQ_TYPE_LEVEL_HIGH>; 386 + clocks = <&mstp1_clks R8A7779_CLK_DU>; 387 + status = "disabled"; 388 + 389 + ports { 390 + #address-cells = <1>; 391 + #size-cells = <0>; 392 + 393 + port@0 { 394 + reg = <0>; 395 + du_out_rgb0: endpoint { 396 + }; 397 + }; 398 + port@1 { 399 + reg = <1>; 400 + du_out_rgb1: endpoint { 401 + }; 402 + }; 403 + }; 404 + }; 405 + 382 406 clocks { 383 407 #address-cells = <1>; 384 408 #size-cells = <1>;
+51 -3
arch/arm/boot/dts/r8a7790-lager.dts
··· 25 25 26 26 chosen { 27 27 bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp"; 28 + stdout-path = &scifa0; 28 29 }; 29 30 30 31 memory@40000000 { ··· 145 144 states = <3300000 1 146 145 1800000 0>; 147 146 }; 147 + 148 + vga-encoder { 149 + compatible = "adi,adv7123"; 150 + 151 + ports { 152 + #address-cells = <1>; 153 + #size-cells = <0>; 154 + 155 + port@0 { 156 + reg = <0>; 157 + adv7123_in: endpoint { 158 + remote-endpoint = <&du_out_rgb>; 159 + }; 160 + }; 161 + port@1 { 162 + reg = <1>; 163 + adv7123_out: endpoint { 164 + remote-endpoint = <&vga_in>; 165 + }; 166 + }; 167 + }; 168 + }; 169 + 170 + vga { 171 + compatible = "vga-connector"; 172 + 173 + port { 174 + vga_in: endpoint { 175 + remote-endpoint = <&adv7123_out>; 176 + }; 177 + }; 178 + }; 179 + }; 180 + 181 + &du { 182 + pinctrl-0 = <&du_pins>; 183 + pinctrl-names = "default"; 184 + status = "okay"; 185 + 186 + ports { 187 + port@0 { 188 + endpoint { 189 + remote-endpoint = <&adv7123_in>; 190 + }; 191 + }; 192 + port@2 { 193 + lvds_connector: endpoint { 194 + }; 195 + }; 196 + }; 148 197 }; 149 198 150 199 &extal_clk { ··· 202 151 }; 203 152 204 153 &pfc { 205 - pinctrl-0 = <&du_pins>; 206 - pinctrl-names = "default"; 207 - 208 154 du_pins: du { 209 155 renesas,groups = "du_rgb666", "du_sync_1", "du_clk_out_0"; 210 156 renesas,function = "du";
+90
arch/arm/boot/dts/r8a7790.dtsi
··· 600 600 status = "disabled"; 601 601 }; 602 602 603 + vsp1@fe920000 { 604 + compatible = "renesas,vsp1"; 605 + reg = <0 0xfe920000 0 0x8000>; 606 + interrupts = <0 266 IRQ_TYPE_LEVEL_HIGH>; 607 + clocks = <&mstp1_clks R8A7790_CLK_VSP1_R>; 608 + 609 + renesas,has-sru; 610 + renesas,#rpf = <5>; 611 + renesas,#uds = <1>; 612 + renesas,#wpf = <4>; 613 + }; 614 + 615 + vsp1@fe928000 { 616 + compatible = "renesas,vsp1"; 617 + reg = <0 0xfe928000 0 0x8000>; 618 + interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>; 619 + clocks = <&mstp1_clks R8A7790_CLK_VSP1_S>; 620 + 621 + renesas,has-lut; 622 + renesas,has-sru; 623 + renesas,#rpf = <5>; 624 + renesas,#uds = <3>; 625 + renesas,#wpf = <4>; 626 + }; 627 + 628 + vsp1@fe930000 { 629 + compatible = "renesas,vsp1"; 630 + reg = <0 0xfe930000 0 0x8000>; 631 + interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>; 632 + clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU0>; 633 + 634 + renesas,has-lif; 635 + renesas,has-lut; 636 + renesas,#rpf = <4>; 637 + renesas,#uds = <1>; 638 + renesas,#wpf = <4>; 639 + }; 640 + 641 + vsp1@fe938000 { 642 + compatible = "renesas,vsp1"; 643 + reg = <0 0xfe938000 0 0x8000>; 644 + interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>; 645 + clocks = <&mstp1_clks R8A7790_CLK_VSP1_DU1>; 646 + 647 + renesas,has-lif; 648 + renesas,has-lut; 649 + renesas,#rpf = <4>; 650 + renesas,#uds = <1>; 651 + renesas,#wpf = <4>; 652 + }; 653 + 654 + du: display@feb00000 { 655 + compatible = "renesas,du-r8a7790"; 656 + reg = <0 0xfeb00000 0 0x70000>, 657 + <0 0xfeb90000 0 0x1c>, 658 + <0 0xfeb94000 0 0x1c>; 659 + reg-names = "du", "lvds.0", "lvds.1"; 660 + interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>, 661 + <0 268 IRQ_TYPE_LEVEL_HIGH>, 662 + <0 269 IRQ_TYPE_LEVEL_HIGH>; 663 + clocks = <&mstp7_clks R8A7790_CLK_DU0>, 664 + <&mstp7_clks R8A7790_CLK_DU1>, 665 + <&mstp7_clks R8A7790_CLK_DU2>, 666 + <&mstp7_clks R8A7790_CLK_LVDS0>, 667 + <&mstp7_clks R8A7790_CLK_LVDS1>; 668 + clock-names = "du.0", "du.1", "du.2", "lvds.0", "lvds.1"; 669 + status = "disabled"; 670 + 671 + ports { 672 + #address-cells = <1>; 673 + #size-cells = <0>; 674 + 675 + port@0 { 676 + reg = <0>; 677 + du_out_rgb: endpoint { 678 + }; 679 + }; 680 + port@1 { 681 + reg = <1>; 682 + du_out_lvds0: endpoint { 683 + }; 684 + }; 685 + port@2 { 686 + reg = <2>; 687 + du_out_lvds1: endpoint { 688 + }; 689 + }; 690 + }; 691 + }; 692 + 603 693 clocks { 604 694 #address-cells = <2>; 605 695 #size-cells = <2>;
+1
arch/arm/boot/dts/r8a7791-henninger.dts
··· 23 23 24 24 chosen { 25 25 bootargs = "console=ttySC0,38400 ignore_loglevel rw root=/dev/nfs ip=dhcp"; 26 + stdout-path = &scif0; 26 27 }; 27 28 28 29 memory@40000000 {
+15 -4
arch/arm/boot/dts/r8a7791-koelsch.dts
··· 25 25 }; 26 26 27 27 chosen { 28 - bootargs = "console=ttySC6,115200 ignore_loglevel rw root=/dev/nfs ip=dhcp"; 28 + bootargs = "ignore_loglevel rw root=/dev/nfs ip=dhcp"; 29 + stdout-path = &scif0; 29 30 }; 30 31 31 32 memory@40000000 { ··· 212 211 }; 213 212 }; 214 213 214 + &du { 215 + pinctrl-0 = <&du_pins>; 216 + pinctrl-names = "default"; 217 + status = "okay"; 218 + 219 + ports { 220 + port@1 { 221 + lvds_connector: endpoint { 222 + }; 223 + }; 224 + }; 225 + }; 226 + 215 227 &extal_clk { 216 228 clock-frequency = <20000000>; 217 229 }; 218 230 219 231 &pfc { 220 - pinctrl-0 = <&du_pins>; 221 - pinctrl-names = "default"; 222 - 223 232 i2c2_pins: i2c2 { 224 233 renesas,groups = "i2c2"; 225 234 renesas,function = "i2c2";
+69
arch/arm/boot/dts/r8a7791.dtsi
··· 637 637 status = "disabled"; 638 638 }; 639 639 640 + vsp1@fe928000 { 641 + compatible = "renesas,vsp1"; 642 + reg = <0 0xfe928000 0 0x8000>; 643 + interrupts = <0 267 IRQ_TYPE_LEVEL_HIGH>; 644 + clocks = <&mstp1_clks R8A7791_CLK_VSP1_S>; 645 + 646 + renesas,has-lut; 647 + renesas,has-sru; 648 + renesas,#rpf = <5>; 649 + renesas,#uds = <3>; 650 + renesas,#wpf = <4>; 651 + }; 652 + 653 + vsp1@fe930000 { 654 + compatible = "renesas,vsp1"; 655 + reg = <0 0xfe930000 0 0x8000>; 656 + interrupts = <0 246 IRQ_TYPE_LEVEL_HIGH>; 657 + clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU0>; 658 + 659 + renesas,has-lif; 660 + renesas,has-lut; 661 + renesas,#rpf = <4>; 662 + renesas,#uds = <1>; 663 + renesas,#wpf = <4>; 664 + }; 665 + 666 + vsp1@fe938000 { 667 + compatible = "renesas,vsp1"; 668 + reg = <0 0xfe938000 0 0x8000>; 669 + interrupts = <0 247 IRQ_TYPE_LEVEL_HIGH>; 670 + clocks = <&mstp1_clks R8A7791_CLK_VSP1_DU1>; 671 + 672 + renesas,has-lif; 673 + renesas,has-lut; 674 + renesas,#rpf = <4>; 675 + renesas,#uds = <1>; 676 + renesas,#wpf = <4>; 677 + }; 678 + 679 + du: display@feb00000 { 680 + compatible = "renesas,du-r8a7791"; 681 + reg = <0 0xfeb00000 0 0x40000>, 682 + <0 0xfeb90000 0 0x1c>; 683 + reg-names = "du", "lvds.0"; 684 + interrupts = <0 256 IRQ_TYPE_LEVEL_HIGH>, 685 + <0 268 IRQ_TYPE_LEVEL_HIGH>; 686 + clocks = <&mstp7_clks R8A7791_CLK_DU0>, 687 + <&mstp7_clks R8A7791_CLK_DU1>, 688 + <&mstp7_clks R8A7791_CLK_LVDS0>; 689 + clock-names = "du.0", "du.1", "lvds.0"; 690 + status = "disabled"; 691 + 692 + ports { 693 + #address-cells = <1>; 694 + #size-cells = <0>; 695 + 696 + port@0 { 697 + reg = <0>; 698 + du_out_rgb: endpoint { 699 + }; 700 + }; 701 + port@1 { 702 + reg = <1>; 703 + du_out_lvds0: endpoint { 704 + }; 705 + }; 706 + }; 707 + }; 708 + 640 709 clocks { 641 710 #address-cells = <2>; 642 711 #size-cells = <2>;
+1
arch/arm/boot/dts/r8a7794-alt.dts
··· 21 21 22 22 chosen { 23 23 bootargs = "console=ttySC0,38400 ignore_loglevel rw root=/dev/nfs ip=dhcp"; 24 + stdout-path = &scif2; 24 25 }; 25 26 26 27 memory@40000000 {
+41
arch/arm/boot/dts/r8a77xx-aa104xd12-panel.dtsi
··· 1 + /* 2 + * Common file for the AA104XD12 panel connected to Renesas R-Car boards 3 + * 4 + * Copyright (C) 2014 Renesas Electronics Corp. 5 + * 6 + * This file is licensed under the terms of the GNU General Public License 7 + * version 2. This program is licensed "as is" without any warranty of any 8 + * kind, whether express or implied. 9 + */ 10 + 11 + / { 12 + panel { 13 + compatible = "mitsubishi,aa104xd12", "panel-dpi"; 14 + 15 + width-mm = <210>; 16 + height-mm = <158>; 17 + 18 + panel-timing { 19 + /* 1024x768 @65Hz */ 20 + clock-frequency = <65000000>; 21 + hactive = <1024>; 22 + vactive = <768>; 23 + hsync-len = <136>; 24 + hfront-porch = <20>; 25 + hback-porch = <160>; 26 + vfront-porch = <3>; 27 + vback-porch = <29>; 28 + vsync-len = <6>; 29 + }; 30 + 31 + port { 32 + panel_in: endpoint { 33 + remote-endpoint = <&lvds_connector>; 34 + }; 35 + }; 36 + }; 37 + }; 38 + 39 + &lvds_connector { 40 + remote-endpoint = <&panel_in>; 41 + };
+1
arch/arm/boot/dts/sh73a0-kzm9g-reference.dts
··· 40 40 41 41 chosen { 42 42 bootargs = "console=tty0 console=ttySC4,115200 root=/dev/nfs ip=dhcp ignore_loglevel rw"; 43 + stdout-path = &scifa4; 43 44 }; 44 45 45 46 memory {
-113
arch/arm/configs/koelsch_defconfig
··· 1 - CONFIG_SYSVIPC=y 2 - CONFIG_NO_HZ=y 3 - CONFIG_IKCONFIG=y 4 - CONFIG_IKCONFIG_PROC=y 5 - CONFIG_LOG_BUF_SHIFT=16 6 - CONFIG_CC_OPTIMIZE_FOR_SIZE=y 7 - CONFIG_SYSCTL_SYSCALL=y 8 - CONFIG_EMBEDDED=y 9 - CONFIG_PERF_EVENTS=y 10 - CONFIG_SLAB=y 11 - CONFIG_ARCH_SHMOBILE_LEGACY=y 12 - CONFIG_ARCH_R8A7791=y 13 - CONFIG_MACH_KOELSCH=y 14 - # CONFIG_SWP_EMULATE is not set 15 - CONFIG_CPU_BPREDICT_DISABLE=y 16 - CONFIG_PL310_ERRATA_588369=y 17 - CONFIG_ARM_ERRATA_754322=y 18 - CONFIG_PCI=y 19 - CONFIG_PCI_RCAR_GEN2=y 20 - CONFIG_PCI_RCAR_GEN2_PCIE=y 21 - CONFIG_SMP=y 22 - CONFIG_SCHED_MC=y 23 - CONFIG_NR_CPUS=8 24 - CONFIG_AEABI=y 25 - CONFIG_ZBOOT_ROM_TEXT=0x0 26 - CONFIG_ZBOOT_ROM_BSS=0x0 27 - CONFIG_ARM_APPENDED_DTB=y 28 - CONFIG_KEXEC=y 29 - CONFIG_AUTO_ZRELADDR=y 30 - CONFIG_VFP=y 31 - CONFIG_NEON=y 32 - # CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set 33 - CONFIG_PM_RUNTIME=y 34 - CONFIG_NET=y 35 - CONFIG_PACKET=y 36 - CONFIG_UNIX=y 37 - CONFIG_INET=y 38 - CONFIG_IP_PNP=y 39 - CONFIG_IP_PNP_DHCP=y 40 - CONFIG_DEVTMPFS=y 41 - CONFIG_DEVTMPFS_MOUNT=y 42 - CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" 43 - CONFIG_BLK_DEV_SD=y 44 - CONFIG_ATA=y 45 - CONFIG_SATA_RCAR=y 46 - CONFIG_MTD=y 47 - CONFIG_MTD_M25P80=y 48 - CONFIG_MTD_SPI_NOR=y 49 - CONFIG_EEPROM_AT24=y 50 - CONFIG_NETDEVICES=y 51 - # CONFIG_NET_VENDOR_ARC is not set 52 - # CONFIG_NET_CADENCE is not set 53 - # CONFIG_NET_VENDOR_BROADCOM is not set 54 - # CONFIG_NET_VENDOR_CIRRUS is not set 55 - # CONFIG_NET_VENDOR_FARADAY is not set 56 - # CONFIG_NET_VENDOR_INTEL is not set 57 - # CONFIG_NET_VENDOR_MARVELL is not set 58 - # CONFIG_NET_VENDOR_MICREL is not set 59 - # CONFIG_NET_VENDOR_NATSEMI is not set 60 - CONFIG_SH_ETH=y 61 - # CONFIG_NET_VENDOR_SEEQ is not set 62 - # CONFIG_NET_VENDOR_SMSC is not set 63 - # CONFIG_NET_VENDOR_STMICRO is not set 64 - # CONFIG_NET_VENDOR_VIA is not set 65 - # CONFIG_NET_VENDOR_WIZNET is not set 66 - # CONFIG_INPUT_MOUSEDEV_PSAUX is not set 67 - CONFIG_KEYBOARD_GPIO=y 68 - # CONFIG_INPUT_MOUSE is not set 69 - # CONFIG_LEGACY_PTYS is not set 70 - CONFIG_SERIAL_SH_SCI=y 71 - CONFIG_SERIAL_SH_SCI_NR_UARTS=20 72 - CONFIG_SERIAL_SH_SCI_CONSOLE=y 73 - CONFIG_I2C=y 74 - CONFIG_I2C_MUX=y 75 - CONFIG_I2C_SH_MOBILE=y 76 - CONFIG_I2C_RCAR=y 77 - CONFIG_SPI=y 78 - CONFIG_SPI_RSPI=y 79 - CONFIG_SPI_SH_MSIOF=y 80 - CONFIG_GPIOLIB=y 81 - CONFIG_GPIO_RCAR=y 82 - # CONFIG_HWMON is not set 83 - CONFIG_THERMAL=y 84 - CONFIG_RCAR_THERMAL=y 85 - CONFIG_REGULATOR=y 86 - CONFIG_REGULATOR_FIXED_VOLTAGE=y 87 - CONFIG_REGULATOR_DA9210=y 88 - CONFIG_REGULATOR_GPIO=y 89 - CONFIG_MEDIA_SUPPORT=y 90 - CONFIG_MEDIA_CAMERA_SUPPORT=y 91 - CONFIG_V4L_PLATFORM_DRIVERS=y 92 - CONFIG_SOC_CAMERA=y 93 - CONFIG_SOC_CAMERA_PLATFORM=y 94 - CONFIG_VIDEO_RCAR_VIN=y 95 - # CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set 96 - CONFIG_VIDEO_ADV7180=y 97 - # CONFIG_HID is not set 98 - # CONFIG_USB_SUPPORT is not set 99 - CONFIG_MMC=y 100 - CONFIG_MMC_SDHI=y 101 - CONFIG_NEW_LEDS=y 102 - CONFIG_LEDS_CLASS=y 103 - CONFIG_LEDS_GPIO=y 104 - # CONFIG_IOMMU_SUPPORT is not set 105 - # CONFIG_DNOTIFY is not set 106 - CONFIG_TMPFS=y 107 - CONFIG_CONFIGFS_FS=y 108 - # CONFIG_MISC_FILESYSTEMS is not set 109 - CONFIG_NFS_FS=y 110 - CONFIG_ROOT_NFS=y 111 - # CONFIG_ENABLE_WARN_DEPRECATED is not set 112 - # CONFIG_ENABLE_MUST_CHECK is not set 113 - # CONFIG_ARM_UNWIND is not set
-1
arch/arm/configs/shmobile_defconfig
··· 17 17 CONFIG_ARCH_R8A7790=y 18 18 CONFIG_ARCH_R8A7791=y 19 19 CONFIG_ARCH_R8A7794=y 20 - CONFIG_MACH_KOELSCH=y 21 20 CONFIG_MACH_LAGER=y 22 21 CONFIG_MACH_MARZEN=y 23 22 # CONFIG_SWP_EMULATE is not set
+1
arch/arm/mach-at91/at91sam9g45.c
··· 11 11 */ 12 12 13 13 #include <asm/system_misc.h> 14 + #include <asm/irq.h> 14 15 #include <mach/hardware.h> 15 16 16 17 #include "soc.h"
+1
arch/arm/mach-at91/at91sam9rl.c
··· 10 10 */ 11 11 12 12 #include <asm/system_misc.h> 13 + #include <asm/irq.h> 13 14 #include <mach/cpu.h> 14 15 #include <mach/at91_dbgu.h> 15 16 #include <mach/hardware.h>
+37 -52
arch/arm/mach-davinci/board-da830-evm.c
··· 80 80 IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, 81 81 "OHCI over-current indicator", NULL); 82 82 if (error) 83 - printk(KERN_ERR "%s: could not request IRQ to watch " 84 - "over-current indicator changes\n", __func__); 83 + pr_err("%s: could not request IRQ to watch over-current indicator changes\n", 84 + __func__); 85 85 } else 86 86 free_irq(irq, NULL); 87 87 ··· 145 145 /* USB_REFCLKIN is not used. */ 146 146 ret = davinci_cfg_reg(DA830_USB0_DRVVBUS); 147 147 if (ret) 148 - pr_warning("%s: USB 2.0 PinMux setup failed: %d\n", 149 - __func__, ret); 148 + pr_warn("%s: USB 2.0 PinMux setup failed: %d\n", __func__, ret); 150 149 else { 151 150 /* 152 151 * TPS2065 switch @ 5V supplies 1 A (sustains 1.5 A), ··· 153 154 */ 154 155 ret = da8xx_register_usb20(1000, 3); 155 156 if (ret) 156 - pr_warning("%s: USB 2.0 registration failed: %d\n", 157 - __func__, ret); 157 + pr_warn("%s: USB 2.0 registration failed: %d\n", 158 + __func__, ret); 158 159 } 159 160 160 161 ret = davinci_cfg_reg_list(da830_evm_usb11_pins); 161 162 if (ret) { 162 - pr_warning("%s: USB 1.1 PinMux setup failed: %d\n", 163 - __func__, ret); 163 + pr_warn("%s: USB 1.1 PinMux setup failed: %d\n", __func__, ret); 164 164 return; 165 165 } 166 166 167 167 ret = gpio_request(ON_BD_USB_DRV, "ON_BD_USB_DRV"); 168 168 if (ret) { 169 - printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port " 170 - "power control: %d\n", __func__, ret); 169 + pr_err("%s: failed to request GPIO for USB 1.1 port power control: %d\n", 170 + __func__, ret); 171 171 return; 172 172 } 173 173 gpio_direction_output(ON_BD_USB_DRV, 0); 174 174 175 175 ret = gpio_request(ON_BD_USB_OVC, "ON_BD_USB_OVC"); 176 176 if (ret) { 177 - printk(KERN_ERR "%s: failed to request GPIO for USB 1.1 port " 178 - "over-current indicator: %d\n", __func__, ret); 177 + pr_err("%s: failed to request GPIO for USB 1.1 port over-current indicator: %d\n", 178 + __func__, ret); 179 179 return; 180 180 } 181 181 gpio_direction_input(ON_BD_USB_OVC); 182 182 183 183 ret = da8xx_register_usb11(&da830_evm_usb11_pdata); 184 184 if (ret) 185 - pr_warning("%s: USB 1.1 registration failed: %d\n", 186 - __func__, ret); 185 + pr_warn("%s: USB 1.1 registration failed: %d\n", __func__, ret); 187 186 } 188 187 189 188 static const short da830_evm_mcasp1_pins[] = { ··· 249 252 250 253 ret = davinci_cfg_reg_list(da830_evm_mmc_sd_pins); 251 254 if (ret) { 252 - pr_warning("da830_evm_init: mmc/sd mux setup failed: %d\n", 253 - ret); 255 + pr_warn("%s: mmc/sd mux setup failed: %d\n", __func__, ret); 254 256 return; 255 257 } 256 258 257 259 ret = gpio_request(DA830_MMCSD_WP_PIN, "MMC WP"); 258 260 if (ret) { 259 - pr_warning("da830_evm_init: can not open GPIO %d\n", 260 - DA830_MMCSD_WP_PIN); 261 + pr_warn("%s: can not open GPIO %d\n", 262 + __func__, DA830_MMCSD_WP_PIN); 261 263 return; 262 264 } 263 265 gpio_direction_input(DA830_MMCSD_WP_PIN); 264 266 265 267 ret = gpio_request(DA830_MMCSD_CD_PIN, "MMC CD\n"); 266 268 if (ret) { 267 - pr_warning("da830_evm_init: can not open GPIO %d\n", 268 - DA830_MMCSD_CD_PIN); 269 + pr_warn("%s: can not open GPIO %d\n", 270 + __func__, DA830_MMCSD_CD_PIN); 269 271 return; 270 272 } 271 273 gpio_direction_input(DA830_MMCSD_CD_PIN); 272 274 273 275 ret = da8xx_register_mmcsd0(&da830_evm_mmc_config); 274 276 if (ret) { 275 - pr_warning("da830_evm_init: mmc/sd registration failed: %d\n", 276 - ret); 277 + pr_warn("%s: mmc/sd registration failed: %d\n", __func__, ret); 277 278 gpio_free(DA830_MMCSD_WP_PIN); 278 279 } 279 280 } ··· 399 404 int ret; 400 405 401 406 if (HAS_MMC) { 402 - pr_warning("WARNING: both MMC/SD and NAND are " 403 - "enabled, but they share AEMIF pins.\n" 404 - "\tDisable MMC/SD for NAND support.\n"); 407 + pr_warn("WARNING: both MMC/SD and NAND are enabled, but they share AEMIF pins\n" 408 + "\tDisable MMC/SD for NAND support\n"); 405 409 return; 406 410 } 407 411 408 412 ret = davinci_cfg_reg_list(da830_evm_emif25_pins); 409 413 if (ret) 410 - pr_warning("da830_evm_init: emif25 mux setup failed: %d\n", 411 - ret); 414 + pr_warn("%s: emif25 mux setup failed: %d\n", __func__, ret); 412 415 413 416 ret = platform_device_register(&da830_evm_nand_device); 414 417 if (ret) 415 - pr_warning("da830_evm_init: NAND device not registered.\n"); 418 + pr_warn("%s: NAND device not registered\n", __func__); 416 419 417 420 if (davinci_aemif_setup(&da830_evm_nand_device)) 418 - pr_warn("%s: Cannot configure AEMIF.\n", __func__); 421 + pr_warn("%s: Cannot configure AEMIF\n", __func__); 419 422 420 423 gpio_direction_output(mux_mode, 1); 421 424 } ··· 428 435 429 436 ret = davinci_cfg_reg_list(da830_lcdcntl_pins); 430 437 if (ret) 431 - pr_warning("da830_evm_init: lcdcntl mux setup failed: %d\n", 432 - ret); 438 + pr_warn("%s: lcdcntl mux setup failed: %d\n", __func__, ret); 433 439 434 440 ret = da8xx_register_lcdc(&sharp_lcd035q3dg01_pdata); 435 441 if (ret) 436 - pr_warning("da830_evm_init: lcd setup failed: %d\n", ret); 442 + pr_warn("%s: lcd setup failed: %d\n", __func__, ret); 437 443 438 444 gpio_direction_output(mux_mode, 0); 439 445 } ··· 590 598 591 599 ret = da830_register_gpio(); 592 600 if (ret) 593 - pr_warn("da830_evm_init: GPIO init failed: %d\n", ret); 601 + pr_warn("%s: GPIO init failed: %d\n", __func__, ret); 594 602 595 603 ret = da830_register_edma(da830_edma_rsv); 596 604 if (ret) 597 - pr_warning("da830_evm_init: edma registration failed: %d\n", 598 - ret); 605 + pr_warn("%s: edma registration failed: %d\n", __func__, ret); 599 606 600 607 ret = davinci_cfg_reg_list(da830_i2c0_pins); 601 608 if (ret) 602 - pr_warning("da830_evm_init: i2c0 mux setup failed: %d\n", 603 - ret); 609 + pr_warn("%s: i2c0 mux setup failed: %d\n", __func__, ret); 604 610 605 611 ret = da8xx_register_i2c(0, &da830_evm_i2c_0_pdata); 606 612 if (ret) 607 - pr_warning("da830_evm_init: i2c0 registration failed: %d\n", 608 - ret); 613 + pr_warn("%s: i2c0 registration failed: %d\n", __func__, ret); 609 614 610 615 da830_evm_usb_init(); 611 616 ··· 611 622 612 623 ret = davinci_cfg_reg_list(da830_cpgmac_pins); 613 624 if (ret) 614 - pr_warning("da830_evm_init: cpgmac mux setup failed: %d\n", 615 - ret); 625 + pr_warn("%s: cpgmac mux setup failed: %d\n", __func__, ret); 616 626 617 627 ret = da8xx_register_emac(); 618 628 if (ret) 619 - pr_warning("da830_evm_init: emac registration failed: %d\n", 620 - ret); 629 + pr_warn("%s: emac registration failed: %d\n", __func__, ret); 621 630 622 631 ret = da8xx_register_watchdog(); 623 632 if (ret) 624 - pr_warning("da830_evm_init: watchdog registration failed: %d\n", 625 - ret); 633 + pr_warn("%s: watchdog registration failed: %d\n", 634 + __func__, ret); 626 635 627 636 davinci_serial_init(da8xx_serial_device); 628 637 i2c_register_board_info(1, da830_evm_i2c_devices, ··· 628 641 629 642 ret = davinci_cfg_reg_list(da830_evm_mcasp1_pins); 630 643 if (ret) 631 - pr_warning("da830_evm_init: mcasp1 mux setup failed: %d\n", 632 - ret); 644 + pr_warn("%s: mcasp1 mux setup failed: %d\n", __func__, ret); 633 645 634 646 da8xx_register_mcasp(1, &da830_evm_snd_data); 635 647 ··· 636 650 637 651 ret = da8xx_register_rtc(); 638 652 if (ret) 639 - pr_warning("da830_evm_init: rtc setup failed: %d\n", ret); 653 + pr_warn("%s: rtc setup failed: %d\n", __func__, ret); 640 654 641 655 ret = spi_register_board_info(da830evm_spi_info, 642 656 ARRAY_SIZE(da830evm_spi_info)); 643 657 if (ret) 644 - pr_warn("%s: spi info registration failed: %d\n", __func__, 645 - ret); 658 + pr_warn("%s: spi info registration failed: %d\n", 659 + __func__, ret); 646 660 647 661 ret = da8xx_register_spi_bus(0, ARRAY_SIZE(da830evm_spi_info)); 648 662 if (ret) 649 - pr_warning("da830_evm_init: spi 0 registration failed: %d\n", 650 - ret); 663 + pr_warn("%s: spi 0 registration failed: %d\n", __func__, ret); 651 664 } 652 665 653 666 #ifdef CONFIG_SERIAL_8250_CONSOLE
+3 -6
arch/arm/mach-davinci/board-da850-evm.c
··· 452 452 for (i = 0; i < DA850_N_UI_PB; i++) { 453 453 button = &da850_evm_ui_keys[i]; 454 454 button->code = KEY_F8 - i; 455 - button->desc = (char *) 456 - da850_evm_ui_exp[DA850_EVM_UI_EXP_PB8 + i]; 455 + button->desc = da850_evm_ui_exp[DA850_EVM_UI_EXP_PB8 + i]; 457 456 button->gpio = gpio + DA850_EVM_UI_EXP_PB8 + i; 458 457 } 459 458 } ··· 627 628 struct gpio_keys_button *button; 628 629 629 630 button = &da850_evm_bb_keys[0]; 630 - button->desc = (char *) 631 - da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_PB1]; 631 + button->desc = da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_PB1]; 632 632 button->gpio = gpio + DA850_EVM_BB_EXP_USER_PB1; 633 633 634 634 for (i = 0; i < DA850_N_BB_USER_SW; i++) { 635 635 button = &da850_evm_bb_keys[i + 1]; 636 636 button->code = SW_LID + i; 637 - button->desc = (char *) 638 - da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_SW1 + i]; 637 + button->desc = da850_evm_bb_exp[DA850_EVM_BB_EXP_USER_SW1 + i]; 639 638 button->gpio = gpio + DA850_EVM_BB_EXP_USER_SW1 + i; 640 639 } 641 640 }
+4 -6
arch/arm/mach-davinci/board-dm644x-evm.c
··· 767 767 768 768 if (HAS_ATA) { 769 769 if (HAS_NAND || HAS_NOR) 770 - pr_warning("WARNING: both IDE and Flash are " 771 - "enabled, but they share AEMIF pins.\n" 772 - "\tDisable IDE for NAND/NOR support.\n"); 770 + pr_warn("WARNING: both IDE and Flash are enabled, but they share AEMIF pins\n" 771 + "\tDisable IDE for NAND/NOR support\n"); 773 772 davinci_init_ide(); 774 773 } else if (HAS_NAND || HAS_NOR) { 775 774 davinci_cfg_reg(DM644X_HPIEN_DISABLE); ··· 779 780 platform_device_register(&davinci_evm_nandflash_device); 780 781 781 782 if (davinci_aemif_setup(&davinci_evm_nandflash_device)) 782 - pr_warn("%s: Cannot configure AEMIF.\n", 783 + pr_warn("%s: Cannot configure AEMIF\n", 783 784 __func__); 784 785 785 786 evm_leds[7].default_trigger = "nand-disk"; 786 787 if (HAS_NOR) 787 - pr_warning("WARNING: both NAND and NOR flash " 788 - "are enabled; disable one of them.\n"); 788 + pr_warn("WARNING: both NAND and NOR flash are enabled; disable one of them.\n"); 789 789 } else if (HAS_NOR) 790 790 platform_device_register(&davinci_evm_norflash_device); 791 791 }
+22 -23
arch/arm/mach-davinci/board-mityomapl138.c
··· 8 8 * any kind, whether express or implied. 9 9 */ 10 10 11 + #define pr_fmt(fmt) "MityOMAPL138: " fmt 12 + 11 13 #include <linux/kernel.h> 12 14 #include <linux/init.h> 13 15 #include <linux/console.h> ··· 109 107 110 108 ret = da850_register_cpufreq("pll0_sysclk3"); 111 109 if (ret) 112 - pr_warning("cpufreq registration failed: %d\n", ret); 110 + pr_warn("cpufreq registration failed: %d\n", ret); 113 111 } 114 112 #else 115 113 static void mityomapl138_cpufreq_init(const char *partnum) { } ··· 123 121 124 122 ret = a->read(a, (char *)&factory_config, 0, sizeof(factory_config)); 125 123 if (ret != sizeof(struct factory_config)) { 126 - pr_warning("MityOMAPL138: Read Factory Config Failed: %d\n", 127 - ret); 124 + pr_warn("Read Factory Config Failed: %d\n", ret); 128 125 goto bad_config; 129 126 } 130 127 131 128 if (factory_config.magic != FACTORY_CONFIG_MAGIC) { 132 - pr_warning("MityOMAPL138: Factory Config Magic Wrong (%X)\n", 133 - factory_config.magic); 129 + pr_warn("Factory Config Magic Wrong (%X)\n", 130 + factory_config.magic); 134 131 goto bad_config; 135 132 } 136 133 137 134 if (factory_config.version != FACTORY_CONFIG_VERSION) { 138 - pr_warning("MityOMAPL138: Factory Config Version Wrong (%X)\n", 139 - factory_config.version); 135 + pr_warn("Factory Config Version Wrong (%X)\n", 136 + factory_config.version); 140 137 goto bad_config; 141 138 } 142 139 143 - pr_info("MityOMAPL138: Found MAC = %pM\n", factory_config.mac); 140 + pr_info("Found MAC = %pM\n", factory_config.mac); 144 141 if (is_valid_ether_addr(factory_config.mac)) 145 142 memcpy(soc_info->emac_pdata->mac_addr, 146 143 factory_config.mac, ETH_ALEN); 147 144 else 148 - pr_warning("MityOMAPL138: Invalid MAC found " 149 - "in factory config block\n"); 145 + pr_warn("Invalid MAC found in factory config block\n"); 150 146 151 147 partnum = factory_config.partnum; 152 - pr_info("MityOMAPL138: Part Number = %s\n", partnum); 148 + pr_info("Part Number = %s\n", partnum); 153 149 154 150 bad_config: 155 151 /* default maximum speed is valid for all platforms */ ··· 435 435 ARRAY_SIZE(mityomapl138_devices)); 436 436 437 437 if (davinci_aemif_setup(&mityomapl138_nandflash_device)) 438 - pr_warn("%s: Cannot configure AEMIF.\n", __func__); 438 + pr_warn("%s: Cannot configure AEMIF\n", __func__); 439 439 } 440 440 441 441 static const short mityomap_mii_pins[] = { ··· 478 478 } 479 479 480 480 if (ret) { 481 - pr_warning("mii/rmii mux setup failed: %d\n", ret); 481 + pr_warn("mii/rmii mux setup failed: %d\n", ret); 482 482 return; 483 483 } 484 484 ··· 489 489 490 490 ret = da8xx_register_emac(); 491 491 if (ret) 492 - pr_warning("emac registration failed: %d\n", ret); 492 + pr_warn("emac registration failed: %d\n", ret); 493 493 } 494 494 495 495 static struct davinci_pm_config da850_pm_pdata = { ··· 511 511 /* for now, no special EDMA channels are reserved */ 512 512 ret = da850_register_edma(NULL); 513 513 if (ret) 514 - pr_warning("edma registration failed: %d\n", ret); 514 + pr_warn("edma registration failed: %d\n", ret); 515 515 516 516 ret = da8xx_register_watchdog(); 517 517 if (ret) 518 - pr_warning("watchdog registration failed: %d\n", ret); 518 + pr_warn("watchdog registration failed: %d\n", ret); 519 519 520 520 davinci_serial_init(da8xx_serial_device); 521 521 522 522 ret = da8xx_register_i2c(0, &mityomap_i2c_0_pdata); 523 523 if (ret) 524 - pr_warning("i2c0 registration failed: %d\n", ret); 524 + pr_warn("i2c0 registration failed: %d\n", ret); 525 525 526 526 ret = pmic_tps65023_init(); 527 527 if (ret) 528 - pr_warning("TPS65023 PMIC init failed: %d\n", ret); 528 + pr_warn("TPS65023 PMIC init failed: %d\n", ret); 529 529 530 530 mityomapl138_setup_nand(); 531 531 ··· 537 537 ret = da8xx_register_spi_bus(1, 538 538 ARRAY_SIZE(mityomapl138_spi_flash_info)); 539 539 if (ret) 540 - pr_warning("spi 1 registration failed: %d\n", ret); 540 + pr_warn("spi 1 registration failed: %d\n", ret); 541 541 542 542 mityomapl138_config_emac(); 543 543 544 544 ret = da8xx_register_rtc(); 545 545 if (ret) 546 - pr_warning("rtc setup failed: %d\n", ret); 546 + pr_warn("rtc setup failed: %d\n", ret); 547 547 548 548 ret = da8xx_register_cpuidle(); 549 549 if (ret) 550 - pr_warning("cpuidle registration failed: %d\n", ret); 550 + pr_warn("cpuidle registration failed: %d\n", ret); 551 551 552 552 ret = da850_register_pm(&da850_pm_device); 553 553 if (ret) 554 - pr_warning("da850_evm_init: suspend registration failed: %d\n", 555 - ret); 554 + pr_warn("suspend registration failed: %d\n", ret); 556 555 } 557 556 558 557 #ifdef CONFIG_SERIAL_8250_CONSOLE
+2 -3
arch/arm/mach-davinci/board-neuros-osd2.c
··· 183 183 184 184 if (HAS_ATA) { 185 185 if (HAS_NAND) 186 - pr_warning("WARNING: both IDE and Flash are " 187 - "enabled, but they share AEMIF pins.\n" 188 - "\tDisable IDE for NAND/NOR support.\n"); 186 + pr_warn("WARNING: both IDE and Flash are enabled, but they share AEMIF pins\n" 187 + "\tDisable IDE for NAND/NOR support\n"); 189 188 davinci_init_ide(); 190 189 } else if (HAS_NAND) { 191 190 davinci_cfg_reg(DM644X_HPIEN_DISABLE);
+1 -1
arch/arm/mach-davinci/clock.c
··· 564 564 565 565 refclk = clk_get(NULL, "ref"); 566 566 if (IS_ERR(refclk)) { 567 - pr_err("%s: failed to get reference clock.\n", __func__); 567 + pr_err("%s: failed to get reference clock\n", __func__); 568 568 return PTR_ERR(refclk); 569 569 } 570 570
+9 -6
arch/arm/mach-davinci/mux.c
··· 15 15 * 16 16 * Copyright (C) 2008 Texas Instruments. 17 17 */ 18 + 19 + #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 20 + 18 21 #include <linux/io.h> 19 22 #include <linux/module.h> 20 23 #include <linux/spinlock.h> ··· 49 46 } 50 47 51 48 if (index >= soc_info->pinmux_pins_num) { 52 - printk(KERN_ERR "Invalid pin mux index: %lu (%lu)\n", 49 + pr_err("Invalid pin mux index: %lu (%lu)\n", 53 50 index, soc_info->pinmux_pins_num); 54 51 dump_stack(); 55 52 return -ENODEV; ··· 58 55 cfg = &soc_info->pinmux_pins[index]; 59 56 60 57 if (cfg->name == NULL) { 61 - printk(KERN_ERR "No entry for the specified index\n"); 58 + pr_err("No entry for the specified index\n"); 62 59 return -ENODEV; 63 60 } 64 61 ··· 85 82 86 83 if (warn) { 87 84 #ifdef CONFIG_DAVINCI_MUX_WARNINGS 88 - printk(KERN_WARNING "MUX: initialized %s\n", cfg->name); 85 + pr_warn("initialized %s\n", cfg->name); 89 86 #endif 90 87 } 91 88 92 89 #ifdef CONFIG_DAVINCI_MUX_DEBUG 93 90 if (cfg->debug || warn) { 94 - printk(KERN_WARNING "MUX: Setting register %s\n", cfg->name); 95 - printk(KERN_WARNING " %s (0x%08x) = 0x%08x -> 0x%08x\n", 96 - cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg); 91 + pr_warn("Setting register %s\n", cfg->name); 92 + pr_warn(" %s (0x%08x) = 0x%08x -> 0x%08x\n", 93 + cfg->mux_reg_name, cfg->mux_reg, reg_orig, reg); 97 94 } 98 95 #endif 99 96
+6 -7
arch/arm/mach-davinci/time.c
··· 342 342 struct davinci_soc_info *soc_info = &davinci_soc_info; 343 343 unsigned int clockevent_id; 344 344 unsigned int clocksource_id; 345 - static char err[] __initdata = KERN_ERR 346 - "%s: can't register clocksource!\n"; 347 345 int i; 348 346 349 347 clockevent_id = soc_info->timer_info->clockevent_id; ··· 362 364 363 365 /* Only bottom timers can use compare regs */ 364 366 if (IS_TIMER_TOP(clockevent_id)) 365 - pr_warning("davinci_timer_init: Invalid use" 366 - " of system timers. Results unpredictable.\n"); 367 + pr_warn("%s: Invalid use of system timers. Results unpredictable.\n", 368 + __func__); 367 369 else if ((dtip[event_timer].cmp_off == 0) 368 370 || (dtip[event_timer].cmp_irq == 0)) 369 - pr_warning("davinci_timer_init: Invalid timer instance" 370 - " setup. Results unpredictable.\n"); 371 + pr_warn("%s: Invalid timer instance setup. Results unpredictable.\n", 372 + __func__); 371 373 else { 372 374 timers[TID_CLOCKEVENT].opts |= TIMER_OPTS_USE_COMPARE; 373 375 clockevent_davinci.features = CLOCK_EVT_FEAT_ONESHOT; ··· 387 389 clocksource_davinci.name = id_to_name[clocksource_id]; 388 390 if (clocksource_register_hz(&clocksource_davinci, 389 391 davinci_clock_tick_rate)) 390 - printk(err, clocksource_davinci.name); 392 + pr_err("%s: can't register clocksource!\n", 393 + clocksource_davinci.name); 391 394 392 395 sched_clock_register(davinci_read_sched_clock, 32, 393 396 davinci_clock_tick_rate);
-3
arch/arm/mach-exynos/Makefile
··· 16 16 17 17 obj-$(CONFIG_SMP) += platsmp.o headsmp.o 18 18 19 - obj-$(CONFIG_HOTPLUG_CPU) += hotplug.o 20 - CFLAGS_hotplug.o += -march=armv7-a 21 - 22 19 plus_sec := $(call as-instr,.arch_extension sec,+sec) 23 20 AFLAGS_exynos-smc.o :=-Wa,-march=armv7-a$(plus_sec) 24 21
-2
arch/arm/mach-exynos/common.h
··· 130 130 131 131 extern struct smp_operations exynos_smp_ops; 132 132 133 - extern void exynos_cpu_die(unsigned int cpu); 134 - 135 133 /* PMU(Power Management Unit) support */ 136 134 137 135 #define PMU_TABLE_END (-1U)
-50
arch/arm/mach-exynos/exynos.c
··· 41 41 .length = SZ_64K, 42 42 .type = MT_DEVICE, 43 43 }, { 44 - .virtual = (unsigned long)S3C_VA_TIMER, 45 - .pfn = __phys_to_pfn(EXYNOS4_PA_TIMER), 46 - .length = SZ_16K, 47 - .type = MT_DEVICE, 48 - }, { 49 - .virtual = (unsigned long)S3C_VA_WATCHDOG, 50 - .pfn = __phys_to_pfn(EXYNOS4_PA_WATCHDOG), 51 - .length = SZ_4K, 52 - .type = MT_DEVICE, 53 - }, { 54 44 .virtual = (unsigned long)S5P_VA_SROMC, 55 45 .pfn = __phys_to_pfn(EXYNOS4_PA_SROMC), 56 46 .length = SZ_4K, 57 - .type = MT_DEVICE, 58 - }, { 59 - .virtual = (unsigned long)S5P_VA_SYSTIMER, 60 - .pfn = __phys_to_pfn(EXYNOS4_PA_SYSTIMER), 61 - .length = SZ_4K, 62 - .type = MT_DEVICE, 63 - }, { 64 - .virtual = (unsigned long)S5P_VA_COMBINER_BASE, 65 - .pfn = __phys_to_pfn(EXYNOS4_PA_COMBINER), 66 - .length = SZ_4K, 67 - .type = MT_DEVICE, 68 - }, { 69 - .virtual = (unsigned long)S5P_VA_GIC_CPU, 70 - .pfn = __phys_to_pfn(EXYNOS4_PA_GIC_CPU), 71 - .length = SZ_64K, 72 - .type = MT_DEVICE, 73 - }, { 74 - .virtual = (unsigned long)S5P_VA_GIC_DIST, 75 - .pfn = __phys_to_pfn(EXYNOS4_PA_GIC_DIST), 76 - .length = SZ_64K, 77 47 .type = MT_DEVICE, 78 48 }, { 79 49 .virtual = (unsigned long)S5P_VA_CMU, ··· 56 86 .length = SZ_8K, 57 87 .type = MT_DEVICE, 58 88 }, { 59 - .virtual = (unsigned long)S5P_VA_L2CC, 60 - .pfn = __phys_to_pfn(EXYNOS4_PA_L2CC), 61 - .length = SZ_4K, 62 - .type = MT_DEVICE, 63 - }, { 64 89 .virtual = (unsigned long)S5P_VA_DMC0, 65 90 .pfn = __phys_to_pfn(EXYNOS4_PA_DMC0), 66 91 .length = SZ_64K, ··· 65 100 .pfn = __phys_to_pfn(EXYNOS4_PA_DMC1), 66 101 .length = SZ_64K, 67 102 .type = MT_DEVICE, 68 - }, { 69 - .virtual = (unsigned long)S3C_VA_USB_HSPHY, 70 - .pfn = __phys_to_pfn(EXYNOS4_PA_HSPHY), 71 - .length = SZ_4K, 72 - .type = MT_DEVICE, 73 103 }, 74 104 }; 75 105 ··· 73 113 .virtual = (unsigned long)S3C_VA_SYS, 74 114 .pfn = __phys_to_pfn(EXYNOS5_PA_SYSCON), 75 115 .length = SZ_64K, 76 - .type = MT_DEVICE, 77 - }, { 78 - .virtual = (unsigned long)S3C_VA_TIMER, 79 - .pfn = __phys_to_pfn(EXYNOS5_PA_TIMER), 80 - .length = SZ_16K, 81 - .type = MT_DEVICE, 82 - }, { 83 - .virtual = (unsigned long)S3C_VA_WATCHDOG, 84 - .pfn = __phys_to_pfn(EXYNOS5_PA_WATCHDOG), 85 - .length = SZ_4K, 86 116 .type = MT_DEVICE, 87 117 }, { 88 118 .virtual = (unsigned long)S5P_VA_SROMC,
-91
arch/arm/mach-exynos/hotplug.c
··· 1 - /* 2 - * Cloned from linux/arch/arm/mach-realview/hotplug.c 3 - * 4 - * Copyright (C) 2002 ARM Ltd. 5 - * All Rights Reserved 6 - * 7 - * This program is free software; you can redistribute it and/or modify 8 - * it under the terms of the GNU General Public License version 2 as 9 - * published by the Free Software Foundation. 10 - */ 11 - 12 - #include <linux/kernel.h> 13 - #include <linux/errno.h> 14 - #include <linux/smp.h> 15 - #include <linux/io.h> 16 - 17 - #include <asm/cacheflush.h> 18 - #include <asm/cp15.h> 19 - #include <asm/smp_plat.h> 20 - 21 - #include "common.h" 22 - #include "regs-pmu.h" 23 - 24 - static inline void cpu_leave_lowpower(void) 25 - { 26 - unsigned int v; 27 - 28 - asm volatile( 29 - "mrc p15, 0, %0, c1, c0, 0\n" 30 - " orr %0, %0, %1\n" 31 - " mcr p15, 0, %0, c1, c0, 0\n" 32 - " mrc p15, 0, %0, c1, c0, 1\n" 33 - " orr %0, %0, %2\n" 34 - " mcr p15, 0, %0, c1, c0, 1\n" 35 - : "=&r" (v) 36 - : "Ir" (CR_C), "Ir" (0x40) 37 - : "cc"); 38 - } 39 - 40 - static inline void platform_do_lowpower(unsigned int cpu, int *spurious) 41 - { 42 - u32 mpidr = cpu_logical_map(cpu); 43 - u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); 44 - 45 - for (;;) { 46 - 47 - /* Turn the CPU off on next WFI instruction. */ 48 - exynos_cpu_power_down(core_id); 49 - 50 - wfi(); 51 - 52 - if (pen_release == core_id) { 53 - /* 54 - * OK, proper wakeup, we're done 55 - */ 56 - break; 57 - } 58 - 59 - /* 60 - * Getting here, means that we have come out of WFI without 61 - * having been woken up - this shouldn't happen 62 - * 63 - * Just note it happening - when we're woken, we can report 64 - * its occurrence. 65 - */ 66 - (*spurious)++; 67 - } 68 - } 69 - 70 - /* 71 - * platform-specific code to shutdown a CPU 72 - * 73 - * Called with IRQs disabled 74 - */ 75 - void __ref exynos_cpu_die(unsigned int cpu) 76 - { 77 - int spurious = 0; 78 - 79 - v7_exit_coherency_flush(louis); 80 - 81 - platform_do_lowpower(cpu, &spurious); 82 - 83 - /* 84 - * bring this CPU back into the world of cache 85 - * coherency, and then restore interrupts 86 - */ 87 - cpu_leave_lowpower(); 88 - 89 - if (spurious) 90 - pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious); 91 - }
-23
arch/arm/mach-exynos/include/mach/map.h
··· 30 30 #define EXYNOS4_PA_CMU 0x10030000 31 31 #define EXYNOS5_PA_CMU 0x10010000 32 32 33 - #define EXYNOS4_PA_SYSTIMER 0x10050000 34 - 35 - #define EXYNOS4_PA_WATCHDOG 0x10060000 36 - #define EXYNOS5_PA_WATCHDOG 0x101D0000 37 - 38 33 #define EXYNOS4_PA_DMC0 0x10400000 39 34 #define EXYNOS4_PA_DMC1 0x10410000 40 - 41 - #define EXYNOS4_PA_COMBINER 0x10440000 42 - #define EXYNOS5_PA_COMBINER 0x10440000 43 - 44 - #define EXYNOS4_PA_GIC_CPU 0x10480000 45 - #define EXYNOS4_PA_GIC_DIST 0x10490000 46 - #define EXYNOS5_PA_GIC_CPU 0x10482000 47 - #define EXYNOS5_PA_GIC_DIST 0x10481000 48 35 49 36 #define EXYNOS4_PA_COREPERI 0x10500000 50 37 #define EXYNOS4_PA_L2CC 0x10502000 ··· 39 52 #define EXYNOS4_PA_SROMC 0x12570000 40 53 #define EXYNOS5_PA_SROMC 0x12250000 41 54 42 - #define EXYNOS4_PA_HSPHY 0x125B0000 43 - 44 - #define EXYNOS4_PA_UART 0x13800000 45 - #define EXYNOS5_PA_UART 0x12C00000 46 - 47 - #define EXYNOS4_PA_TIMER 0x139D0000 48 - #define EXYNOS5_PA_TIMER 0x12DD0000 49 - 50 55 /* Compatibility UART */ 51 56 52 57 #define EXYNOS5440_PA_UART0 0x000B0000 53 - 54 - #define S3C_VA_UARTx(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET)) 55 58 56 59 #endif /* __ASM_ARCH_MAP_H */
+113
arch/arm/mach-exynos/platsmp.c
··· 22 22 #include <linux/of_address.h> 23 23 24 24 #include <asm/cacheflush.h> 25 + #include <asm/cp15.h> 25 26 #include <asm/smp_plat.h> 26 27 #include <asm/smp_scu.h> 27 28 #include <asm/firmware.h> ··· 33 32 #include "regs-pmu.h" 34 33 35 34 extern void exynos4_secondary_startup(void); 35 + 36 + /* 37 + * Set or clear the USE_DELAYED_RESET_ASSERTION option, set on Exynos4 SoCs 38 + * during hot-(un)plugging CPUx. 39 + * 40 + * The feature can be cleared safely during first boot of secondary CPU. 41 + * 42 + * Exynos4 SoCs require setting USE_DELAYED_RESET_ASSERTION during powering 43 + * down a CPU so the CPU idle clock down feature could properly detect global 44 + * idle state when CPUx is off. 45 + */ 46 + static void exynos_set_delayed_reset_assertion(u32 core_id, bool enable) 47 + { 48 + if (soc_is_exynos4()) { 49 + unsigned int tmp; 50 + 51 + tmp = pmu_raw_readl(EXYNOS_ARM_CORE_OPTION(core_id)); 52 + if (enable) 53 + tmp |= S5P_USE_DELAYED_RESET_ASSERTION; 54 + else 55 + tmp &= ~(S5P_USE_DELAYED_RESET_ASSERTION); 56 + pmu_raw_writel(tmp, EXYNOS_ARM_CORE_OPTION(core_id)); 57 + } 58 + } 59 + 60 + #ifdef CONFIG_HOTPLUG_CPU 61 + static inline void cpu_leave_lowpower(u32 core_id) 62 + { 63 + unsigned int v; 64 + 65 + asm volatile( 66 + "mrc p15, 0, %0, c1, c0, 0\n" 67 + " orr %0, %0, %1\n" 68 + " mcr p15, 0, %0, c1, c0, 0\n" 69 + " mrc p15, 0, %0, c1, c0, 1\n" 70 + " orr %0, %0, %2\n" 71 + " mcr p15, 0, %0, c1, c0, 1\n" 72 + : "=&r" (v) 73 + : "Ir" (CR_C), "Ir" (0x40) 74 + : "cc"); 75 + 76 + exynos_set_delayed_reset_assertion(core_id, false); 77 + } 78 + 79 + static inline void platform_do_lowpower(unsigned int cpu, int *spurious) 80 + { 81 + u32 mpidr = cpu_logical_map(cpu); 82 + u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); 83 + 84 + for (;;) { 85 + 86 + /* Turn the CPU off on next WFI instruction. */ 87 + exynos_cpu_power_down(core_id); 88 + 89 + /* 90 + * Exynos4 SoCs require setting 91 + * USE_DELAYED_RESET_ASSERTION so the CPU idle 92 + * clock down feature could properly detect 93 + * global idle state when CPUx is off. 94 + */ 95 + exynos_set_delayed_reset_assertion(core_id, true); 96 + 97 + wfi(); 98 + 99 + if (pen_release == core_id) { 100 + /* 101 + * OK, proper wakeup, we're done 102 + */ 103 + break; 104 + } 105 + 106 + /* 107 + * Getting here, means that we have come out of WFI without 108 + * having been woken up - this shouldn't happen 109 + * 110 + * Just note it happening - when we're woken, we can report 111 + * its occurrence. 112 + */ 113 + (*spurious)++; 114 + } 115 + } 116 + #endif /* CONFIG_HOTPLUG_CPU */ 36 117 37 118 /** 38 119 * exynos_core_power_down : power down the specified cpu ··· 320 237 udelay(10); 321 238 } 322 239 240 + /* No harm if this is called during first boot of secondary CPU */ 241 + exynos_set_delayed_reset_assertion(core_id, false); 242 + 323 243 /* 324 244 * now the secondary core is starting up let it run its 325 245 * calibrations, then wait for it to finish ··· 403 317 } 404 318 } 405 319 } 320 + 321 + #ifdef CONFIG_HOTPLUG_CPU 322 + /* 323 + * platform-specific code to shutdown a CPU 324 + * 325 + * Called with IRQs disabled 326 + */ 327 + static void exynos_cpu_die(unsigned int cpu) 328 + { 329 + int spurious = 0; 330 + u32 mpidr = cpu_logical_map(cpu); 331 + u32 core_id = MPIDR_AFFINITY_LEVEL(mpidr, 0); 332 + 333 + v7_exit_coherency_flush(louis); 334 + 335 + platform_do_lowpower(cpu, &spurious); 336 + 337 + /* 338 + * bring this CPU back into the world of cache 339 + * coherency, and then restore interrupts 340 + */ 341 + cpu_leave_lowpower(core_id); 342 + 343 + if (spurious) 344 + pr_warn("CPU%u: %u spurious wakeup calls\n", cpu, spurious); 345 + } 346 + #endif /* CONFIG_HOTPLUG_CPU */ 406 347 407 348 struct smp_operations exynos_smp_ops __initdata = { 408 349 .smp_init_cpus = exynos_smp_init_cpus,
+3
arch/arm/mach-exynos/regs-pmu.h
··· 20 20 21 21 #define S5P_USE_STANDBY_WFI0 (1 << 16) 22 22 #define S5P_USE_STANDBY_WFE0 (1 << 24) 23 + #define S5P_USE_DELAYED_RESET_ASSERTION BIT(12) 23 24 24 25 #define EXYNOS_SWRESET 0x0400 25 26 #define EXYNOS5440_SWRESET 0x00C4 ··· 107 106 (EXYNOS_ARM_CORE0_CONFIGURATION + (0x80 * (_nr))) 108 107 #define EXYNOS_ARM_CORE_STATUS(_nr) \ 109 108 (EXYNOS_ARM_CORE_CONFIGURATION(_nr) + 0x4) 109 + #define EXYNOS_ARM_CORE_OPTION(_nr) \ 110 + (EXYNOS_ARM_CORE_CONFIGURATION(_nr) + 0x8) 110 111 111 112 #define EXYNOS_ARM_COMMON_CONFIGURATION 0x2500 112 113 #define EXYNOS_COMMON_CONFIGURATION(_nr) \
+1 -1
arch/arm/mach-imx/clk-imx6q.c
··· 145 145 post_div_table[2].div = 1; 146 146 video_div_table[1].div = 1; 147 147 video_div_table[2].div = 1; 148 - }; 148 + } 149 149 150 150 clk[IMX6QDL_PLL1_BYPASS_SRC] = imx_clk_mux("pll1_bypass_src", base + 0x00, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels)); 151 151 clk[IMX6QDL_PLL2_BYPASS_SRC] = imx_clk_mux("pll2_bypass_src", base + 0x30, 14, 2, pll_bypass_src_sels, ARRAY_SIZE(pll_bypass_src_sels));
+1 -6
arch/arm/mach-imx/clk-pllv3.c
··· 69 69 { 70 70 struct clk_pllv3 *pll = to_clk_pllv3(hw); 71 71 u32 val; 72 - int ret; 73 72 74 73 val = readl_relaxed(pll->base); 75 74 if (pll->powerup_set) ··· 77 78 val &= ~BM_PLL_POWER; 78 79 writel_relaxed(val, pll->base); 79 80 80 - ret = clk_pllv3_wait_lock(pll); 81 - if (ret) 82 - return ret; 83 - 84 - return 0; 81 + return clk_pllv3_wait_lock(pll); 85 82 } 86 83 87 84 static void clk_pllv3_unprepare(struct clk_hw *hw)
-1
arch/arm/mach-imx/common.h
··· 61 61 void mxc_set_cpu_type(unsigned int type); 62 62 void mxc_restart(enum reboot_mode, const char *); 63 63 void mxc_arch_reset_init(void __iomem *); 64 - void mxc_arch_reset_init_dt(void); 65 64 int mx51_revision(void); 66 65 int mx53_revision(void); 67 66 void imx_set_aips(void __iomem *);
-9
arch/arm/mach-imx/imx25-dt.c
··· 17 17 #include "common.h" 18 18 #include "mx25.h" 19 19 20 - static void __init imx25_dt_init(void) 21 - { 22 - mxc_arch_reset_init_dt(); 23 - 24 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 25 - } 26 - 27 20 static const char * const imx25_dt_board_compat[] __initconst = { 28 21 "fsl,imx25", 29 22 NULL ··· 26 33 .map_io = mx25_map_io, 27 34 .init_early = imx25_init_early, 28 35 .init_irq = mx25_init_irq, 29 - .init_machine = imx25_dt_init, 30 36 .dt_compat = imx25_dt_board_compat, 31 - .restart = mxc_restart, 32 37 MACHINE_END
-3
arch/arm/mach-imx/imx27-dt.c
··· 22 22 { 23 23 struct platform_device_info devinfo = { .name = "cpufreq-dt", }; 24 24 25 - mxc_arch_reset_init_dt(); 26 - 27 25 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 28 26 29 27 platform_device_register_full(&devinfo); ··· 38 40 .init_irq = mx27_init_irq, 39 41 .init_machine = imx27_dt_init, 40 42 .dt_compat = imx27_dt_board_compat, 41 - .restart = mxc_restart, 42 43 MACHINE_END
-9
arch/arm/mach-imx/imx31-dt.c
··· 18 18 #include "common.h" 19 19 #include "mx31.h" 20 20 21 - static void __init imx31_dt_init(void) 22 - { 23 - mxc_arch_reset_init_dt(); 24 - 25 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 26 - } 27 - 28 21 static const char * const imx31_dt_board_compat[] __initconst = { 29 22 "fsl,imx31", 30 23 NULL ··· 33 40 .init_early = imx31_init_early, 34 41 .init_irq = mx31_init_irq, 35 42 .init_time = imx31_dt_timer_init, 36 - .init_machine = imx31_dt_init, 37 43 .dt_compat = imx31_dt_board_compat, 38 - .restart = mxc_restart, 39 44 MACHINE_END
-10
arch/arm/mach-imx/imx35-dt.c
··· 20 20 #include "common.h" 21 21 #include "mx35.h" 22 22 23 - static void __init imx35_dt_init(void) 24 - { 25 - mxc_arch_reset_init_dt(); 26 - 27 - of_platform_populate(NULL, of_default_bus_match_table, 28 - NULL, NULL); 29 - } 30 - 31 23 static void __init imx35_irq_init(void) 32 24 { 33 25 imx_init_l2cache(); ··· 35 43 .map_io = mx35_map_io, 36 44 .init_early = imx35_init_early, 37 45 .init_irq = imx35_irq_init, 38 - .init_machine = imx35_dt_init, 39 46 .dt_compat = imx35_dt_board_compat, 40 - .restart = mxc_restart, 41 47 MACHINE_END
+4 -4
arch/arm/mach-imx/iomux-imx31.c
··· 44 44 /* 45 45 * set the mode for a IOMUX pin. 46 46 */ 47 - int mxc_iomux_mode(unsigned int pin_mode) 47 + void mxc_iomux_mode(unsigned int pin_mode) 48 48 { 49 - u32 field, l, mode, ret = 0; 49 + u32 field; 50 + u32 l; 51 + u32 mode; 50 52 void __iomem *reg; 51 53 52 54 reg = IOMUXSW_MUX_CTL + (pin_mode & IOMUX_REG_MASK); ··· 63 61 __raw_writel(l, reg); 64 62 65 63 spin_unlock(&gpio_mux_lock); 66 - 67 - return ret; 68 64 } 69 65 70 66 /*
+1 -1
arch/arm/mach-imx/iomux-mx3.h
··· 144 144 * It is called by the setup functions and should not be called directly anymore. 145 145 * It is here visible for backward compatibility 146 146 */ 147 - int mxc_iomux_mode(unsigned int pin_mode); 147 + void mxc_iomux_mode(unsigned int pin_mode); 148 148 149 149 #define IOMUX_PADNUM_MASK 0x1ff 150 150 #define IOMUX_GPIONUM_SHIFT 9
-9
arch/arm/mach-imx/mach-imx50.c
··· 16 16 17 17 #include "common.h" 18 18 19 - static void __init imx50_dt_init(void) 20 - { 21 - mxc_arch_reset_init_dt(); 22 - 23 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 24 - } 25 - 26 19 static const char * const imx50_dt_board_compat[] __initconst = { 27 20 "fsl,imx50", 28 21 NULL ··· 23 30 24 31 DT_MACHINE_START(IMX50_DT, "Freescale i.MX50 (Device Tree Support)") 25 32 .init_irq = tzic_init_irq, 26 - .init_machine = imx50_dt_init, 27 33 .dt_compat = imx50_dt_board_compat, 28 - .restart = mxc_restart, 29 34 MACHINE_END
-2
arch/arm/mach-imx/mach-imx51.c
··· 53 53 { 54 54 struct platform_device_info devinfo = { .name = "cpufreq-dt", }; 55 55 56 - mxc_arch_reset_init_dt(); 57 56 imx51_ipu_mipi_setup(); 58 57 imx_src_init(); 59 58 ··· 77 78 .init_machine = imx51_dt_init, 78 79 .init_late = imx51_init_late, 79 80 .dt_compat = imx51_dt_board_compat, 80 - .restart = mxc_restart, 81 81 MACHINE_END
-2
arch/arm/mach-imx/mach-imx53.c
··· 30 30 31 31 static void __init imx53_dt_init(void) 32 32 { 33 - mxc_arch_reset_init_dt(); 34 33 imx_src_init(); 35 34 36 35 of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); ··· 53 54 .init_machine = imx53_dt_init, 54 55 .init_late = imx53_init_late, 55 56 .dt_compat = imx53_dt_board_compat, 56 - .restart = mxc_restart, 57 57 MACHINE_END
-3
arch/arm/mach-imx/mach-imx6q.c
··· 268 268 imx_print_silicon_rev(cpu_is_imx6dl() ? "i.MX6DL" : "i.MX6Q", 269 269 imx_get_soc_revision()); 270 270 271 - mxc_arch_reset_init_dt(); 272 - 273 271 parent = imx_soc_device_init(); 274 272 if (parent == NULL) 275 273 pr_warn("failed to initialize soc device\n"); ··· 407 409 .init_machine = imx6q_init_machine, 408 410 .init_late = imx6q_init_late, 409 411 .dt_compat = imx6q_dt_compat, 410 - .restart = mxc_restart, 411 412 MACHINE_END
-4
arch/arm/mach-imx/mach-imx6sl.c
··· 48 48 { 49 49 struct device *parent; 50 50 51 - mxc_arch_reset_init_dt(); 52 - 53 51 parent = imx_soc_device_init(); 54 52 if (parent == NULL) 55 53 pr_warn("failed to initialize soc device\n"); ··· 74 76 }; 75 77 76 78 DT_MACHINE_START(IMX6SL, "Freescale i.MX6 SoloLite (Device Tree)") 77 - .map_io = debug_ll_io_init, 78 79 .init_irq = imx6sl_init_irq, 79 80 .init_machine = imx6sl_init_machine, 80 81 .init_late = imx6sl_init_late, 81 82 .dt_compat = imx6sl_dt_compat, 82 - .restart = mxc_restart, 83 83 MACHINE_END
-4
arch/arm/mach-imx/mach-imx6sx.c
··· 18 18 { 19 19 struct device *parent; 20 20 21 - mxc_arch_reset_init_dt(); 22 - 23 21 parent = imx_soc_device_init(); 24 22 if (parent == NULL) 25 23 pr_warn("failed to initialize soc device\n"); ··· 51 53 }; 52 54 53 55 DT_MACHINE_START(IMX6SX, "Freescale i.MX6 SoloX (Device Tree)") 54 - .map_io = debug_ll_io_init, 55 56 .init_irq = imx6sx_init_irq, 56 57 .init_machine = imx6sx_init_machine, 57 58 .dt_compat = imx6sx_dt_compat, 58 59 .init_late = imx6sx_init_late, 59 - .restart = mxc_restart, 60 60 MACHINE_END
-10
arch/arm/mach-imx/mach-vf610.c
··· 12 12 #include <asm/mach/arch.h> 13 13 #include <asm/hardware/cache-l2x0.h> 14 14 15 - #include "common.h" 16 - 17 - static void __init vf610_init_machine(void) 18 - { 19 - mxc_arch_reset_init_dt(); 20 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 21 - } 22 - 23 15 static const char * const vf610_dt_compat[] __initconst = { 24 16 "fsl,vf610", 25 17 NULL, ··· 20 28 DT_MACHINE_START(VYBRID_VF610, "Freescale Vybrid VF610 (Device Tree)") 21 29 .l2c_aux_val = 0, 22 30 .l2c_aux_mask = ~0, 23 - .init_machine = vf610_init_machine, 24 31 .dt_compat = vf610_dt_compat, 25 - .restart = mxc_restart, 26 32 MACHINE_END
-15
arch/arm/mach-imx/system.c
··· 89 89 clk_prepare(wdog_clk); 90 90 } 91 91 92 - void __init mxc_arch_reset_init_dt(void) 93 - { 94 - struct device_node *np; 95 - 96 - np = of_find_compatible_node(NULL, NULL, "fsl,imx21-wdt"); 97 - wdog_base = of_iomap(np, 0); 98 - WARN_ON(!wdog_base); 99 - 100 - wdog_clk = of_clk_get(np, 0); 101 - if (IS_ERR(wdog_clk)) 102 - pr_warn("%s: failed to get wdog clock\n", __func__); 103 - else 104 - clk_prepare(wdog_clk); 105 - } 106 - 107 92 #ifdef CONFIG_CACHE_L2X0 108 93 void __init imx_init_l2cache(void) 109 94 {
-20
arch/arm/mach-shmobile/Kconfig
··· 36 36 select NO_IOPORT_MAP 37 37 select PINCTRL 38 38 select ARCH_REQUIRE_GPIOLIB 39 - select ARCH_HAS_OPP 40 39 41 40 if ARCH_SHMOBILE_MULTI 42 41 ··· 71 72 select ARCH_RCAR_GEN2 72 73 73 74 comment "Renesas ARM SoCs Board Type" 74 - 75 - config MACH_KOELSCH 76 - bool "Koelsch board" 77 - depends on ARCH_R8A7791 78 - select MICREL_PHY if SH_ETH 79 75 80 76 config MACH_LAGER 81 77 bool "Lager board" ··· 133 139 134 140 config ARCH_R8A7790 135 141 bool "R-Car H2 (R8A77900)" 136 - select ARCH_RCAR_GEN2 137 - select ARCH_WANT_OPTIONAL_GPIOLIB 138 - select ARM_GIC 139 - select MIGHT_HAVE_PCI 140 - select ARCH_DMA_ADDR_T_64BIT if ARM_LPAE 141 - 142 - config ARCH_R8A7791 143 - bool "R-Car M2-W (R8A77910)" 144 142 select ARCH_RCAR_GEN2 145 143 select ARCH_WANT_OPTIONAL_GPIOLIB 146 144 select ARM_GIC ··· 212 226 select USE_OF 213 227 select MICREL_PHY if SH_ETH 214 228 select SND_SOC_AK4642 if SND_SIMPLE_CARD 215 - 216 - config MACH_KOELSCH 217 - bool "Koelsch board" 218 - depends on ARCH_R8A7791 219 - select USE_OF 220 - select MICREL_PHY if SH_ETH 221 229 222 230 config MACH_KZM9G 223 231 bool "KZM-A9-GT board"
+1 -4
arch/arm/mach-shmobile/Makefile
··· 19 19 obj-$(CONFIG_ARCH_R7S72100) += setup-r7s72100.o 20 20 21 21 # Clock objects 22 - obj-y += clock.o 23 22 ifndef CONFIG_COMMON_CLK 23 + obj-y += clock.o 24 24 obj-$(CONFIG_ARCH_SH7372) += clock-sh7372.o 25 25 obj-$(CONFIG_ARCH_SH73A0) += clock-sh73a0.o 26 26 obj-$(CONFIG_ARCH_R8A73A4) += clock-r8a73a4.o ··· 28 28 obj-$(CONFIG_ARCH_R8A7778) += clock-r8a7778.o 29 29 obj-$(CONFIG_ARCH_R8A7779) += clock-r8a7779.o 30 30 obj-$(CONFIG_ARCH_R8A7790) += clock-r8a7790.o 31 - obj-$(CONFIG_ARCH_R8A7791) += clock-r8a7791.o 32 31 endif 33 32 34 33 # CPU reset vector handling objects ··· 56 57 57 58 # Board objects 58 59 ifdef CONFIG_ARCH_SHMOBILE_MULTI 59 - obj-$(CONFIG_MACH_KOELSCH) += board-koelsch-reference.o 60 60 obj-$(CONFIG_MACH_LAGER) += board-lager-reference.o 61 61 obj-$(CONFIG_MACH_MARZEN) += board-marzen-reference.o 62 62 else ··· 67 69 obj-$(CONFIG_MACH_MARZEN) += board-marzen.o 68 70 obj-$(CONFIG_MACH_LAGER) += board-lager.o 69 71 obj-$(CONFIG_MACH_ARMADILLO800EVA) += board-armadillo800eva.o 70 - obj-$(CONFIG_MACH_KOELSCH) += board-koelsch.o 71 72 obj-$(CONFIG_MACH_KZM9G) += board-kzm9g.o 72 73 obj-$(CONFIG_MACH_KZM9G_REFERENCE) += board-kzm9g-reference.o 73 74 endif
-1
arch/arm/mach-shmobile/Makefile.boot
··· 5 5 loadaddr-$(CONFIG_MACH_ARMADILLO800EVA) += 0x40008000 6 6 loadaddr-$(CONFIG_MACH_BOCKW) += 0x60008000 7 7 loadaddr-$(CONFIG_MACH_BOCKW_REFERENCE) += 0x60008000 8 - loadaddr-$(CONFIG_MACH_KOELSCH) += 0x40008000 9 8 loadaddr-$(CONFIG_MACH_KZM9G) += 0x41008000 10 9 loadaddr-$(CONFIG_MACH_KZM9G_REFERENCE) += 0x41008000 11 10 loadaddr-$(CONFIG_MACH_LAGER) += 0x40008000
-4
arch/arm/mach-shmobile/board-ape6evm-reference.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 17 #include <linux/gpio.h>
-4
arch/arm/mach-shmobile/board-ape6evm.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 17 #include <linux/gpio.h>
+23 -28
arch/arm/mach-shmobile/board-armadillo800eva.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 - * 20 15 */ 21 16 22 17 #include <linux/clk.h> 23 18 #include <linux/delay.h> 24 19 #include <linux/err.h> 25 - #include <linux/kernel.h> 26 - #include <linux/input.h> 27 - #include <linux/platform_data/st1232_pdata.h> 28 - #include <linux/irq.h> 29 - #include <linux/platform_device.h> 30 20 #include <linux/gpio.h> 31 21 #include <linux/gpio_keys.h> 32 - #include <linux/regulator/driver.h> 33 - #include <linux/pinctrl/machine.h> 34 - #include <linux/pwm.h> 35 - #include <linux/pwm_backlight.h> 36 - #include <linux/regulator/fixed.h> 37 - #include <linux/regulator/gpio-regulator.h> 38 - #include <linux/regulator/machine.h> 39 - #include <linux/sh_eth.h> 40 - #include <linux/videodev2.h> 41 - #include <linux/usb/renesas_usbhs.h> 22 + #include <linux/i2c-gpio.h> 23 + #include <linux/input.h> 24 + #include <linux/irq.h> 25 + #include <linux/kernel.h> 42 26 #include <linux/mfd/tmio.h> 43 27 #include <linux/mmc/host.h> 44 28 #include <linux/mmc/sh_mmcif.h> 45 29 #include <linux/mmc/sh_mobile_sdhi.h> 46 - #include <linux/i2c-gpio.h> 30 + #include <linux/pinctrl/machine.h> 31 + #include <linux/platform_data/st1232_pdata.h> 32 + #include <linux/platform_device.h> 33 + #include <linux/pwm.h> 34 + #include <linux/pwm_backlight.h> 47 35 #include <linux/reboot.h> 36 + #include <linux/regulator/driver.h> 37 + #include <linux/regulator/fixed.h> 38 + #include <linux/regulator/gpio-regulator.h> 39 + #include <linux/regulator/machine.h> 40 + #include <linux/sh_eth.h> 41 + #include <linux/usb/renesas_usbhs.h> 42 + #include <linux/videodev2.h> 48 43 49 - #include <media/mt9t112.h> 50 - #include <media/sh_mobile_ceu.h> 51 - #include <media/soc_camera.h> 52 - #include <asm/page.h> 44 + #include <asm/hardware/cache-l2x0.h> 53 45 #include <asm/mach-types.h> 54 46 #include <asm/mach/arch.h> 55 47 #include <asm/mach/map.h> 56 48 #include <asm/mach/time.h> 57 - #include <asm/hardware/cache-l2x0.h> 58 - #include <video/sh_mobile_lcdc.h> 59 - #include <video/sh_mobile_hdmi.h> 49 + #include <asm/page.h> 50 + #include <media/mt9t112.h> 51 + #include <media/sh_mobile_ceu.h> 52 + #include <media/soc_camera.h> 60 53 #include <sound/sh_fsi.h> 61 54 #include <sound/simple_card.h> 55 + #include <video/sh_mobile_hdmi.h> 56 + #include <video/sh_mobile_lcdc.h> 62 57 63 58 #include "common.h" 64 59 #include "irqs.h"
-4
arch/arm/mach-shmobile/board-bockw-reference.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 17 #include <linux/of_platform.h>
-4
arch/arm/mach-shmobile/board-bockw.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 22 18 #include <linux/mfd/tmio.h>
-117
arch/arm/mach-shmobile/board-koelsch-reference.c
··· 1 - /* 2 - * Koelsch board support - Reference DT implementation 3 - * 4 - * Copyright (C) 2013 Renesas Electronics Corporation 5 - * Copyright (C) 2013 Renesas Solutions Corp. 6 - * Copyright (C) 2013 Magnus Damm 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License as published by 10 - * the Free Software Foundation; version 2 of the License. 11 - * 12 - * This program is distributed in the hope that it will be useful, 13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 - * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 - */ 21 - 22 - #include <linux/dma-mapping.h> 23 - #include <linux/kernel.h> 24 - #include <linux/of_platform.h> 25 - #include <linux/platform_data/rcar-du.h> 26 - 27 - #include <asm/mach/arch.h> 28 - 29 - #include "clock.h" 30 - #include "common.h" 31 - #include "irqs.h" 32 - #include "r8a7791.h" 33 - #include "rcar-gen2.h" 34 - 35 - /* DU */ 36 - static struct rcar_du_encoder_data koelsch_du_encoders[] = { 37 - { 38 - .type = RCAR_DU_ENCODER_NONE, 39 - .output = RCAR_DU_OUTPUT_LVDS0, 40 - .connector.lvds.panel = { 41 - .width_mm = 210, 42 - .height_mm = 158, 43 - .mode = { 44 - .pixelclock = 65000000, 45 - .hactive = 1024, 46 - .hfront_porch = 20, 47 - .hback_porch = 160, 48 - .hsync_len = 136, 49 - .vactive = 768, 50 - .vfront_porch = 3, 51 - .vback_porch = 29, 52 - .vsync_len = 6, 53 - }, 54 - }, 55 - }, 56 - }; 57 - 58 - static struct rcar_du_platform_data koelsch_du_pdata = { 59 - .encoders = koelsch_du_encoders, 60 - .num_encoders = ARRAY_SIZE(koelsch_du_encoders), 61 - }; 62 - 63 - static const struct resource du_resources[] __initconst = { 64 - DEFINE_RES_MEM(0xfeb00000, 0x40000), 65 - DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"), 66 - DEFINE_RES_IRQ(gic_spi(256)), 67 - DEFINE_RES_IRQ(gic_spi(268)), 68 - }; 69 - 70 - static void __init koelsch_add_du_device(void) 71 - { 72 - struct platform_device_info info = { 73 - .name = "rcar-du-r8a7791", 74 - .id = -1, 75 - .res = du_resources, 76 - .num_res = ARRAY_SIZE(du_resources), 77 - .data = &koelsch_du_pdata, 78 - .size_data = sizeof(koelsch_du_pdata), 79 - .dma_mask = DMA_BIT_MASK(32), 80 - }; 81 - 82 - platform_device_register_full(&info); 83 - } 84 - 85 - /* 86 - * This is a really crude hack to provide clkdev support to platform 87 - * devices until they get moved to DT. 88 - */ 89 - static const struct clk_name clk_names[] __initconst = { 90 - { "du0", "du.0", "rcar-du-r8a7791" }, 91 - { "du1", "du.1", "rcar-du-r8a7791" }, 92 - { "lvds0", "lvds.0", "rcar-du-r8a7791" }, 93 - }; 94 - 95 - static void __init koelsch_add_standard_devices(void) 96 - { 97 - shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false); 98 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 99 - 100 - koelsch_add_du_device(); 101 - } 102 - 103 - static const char * const koelsch_boards_compat_dt[] __initconst = { 104 - "renesas,koelsch", 105 - "renesas,koelsch-reference", 106 - NULL, 107 - }; 108 - 109 - DT_MACHINE_START(KOELSCH_DT, "koelsch") 110 - .smp = smp_ops(r8a7791_smp_ops), 111 - .init_early = shmobile_init_delay, 112 - .init_time = rcar_gen2_timer_init, 113 - .init_machine = koelsch_add_standard_devices, 114 - .init_late = shmobile_init_late, 115 - .reserve = rcar_gen2_reserve, 116 - .dt_compat = koelsch_boards_compat_dt, 117 - MACHINE_END
-527
arch/arm/mach-shmobile/board-koelsch.c
··· 1 - /* 2 - * Koelsch board support 3 - * 4 - * Copyright (C) 2013 Renesas Electronics Corporation 5 - * Copyright (C) 2013-2014 Renesas Solutions Corp. 6 - * Copyright (C) 2013 Magnus Damm 7 - * Copyright (C) 2014 Cogent Embedded, Inc. 8 - * 9 - * This program is free software; you can redistribute it and/or modify 10 - * it under the terms of the GNU General Public License as published by 11 - * the Free Software Foundation; version 2 of the License. 12 - * 13 - * This program is distributed in the hope that it will be useful, 14 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 - * GNU General Public License for more details. 17 - * 18 - * You should have received a copy of the GNU General Public License 19 - * along with this program; if not, write to the Free Software 20 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 21 - */ 22 - 23 - #include <linux/dma-mapping.h> 24 - #include <linux/gpio.h> 25 - #include <linux/gpio_keys.h> 26 - #include <linux/input.h> 27 - #include <linux/irq.h> 28 - #include <linux/kernel.h> 29 - #include <linux/leds.h> 30 - #include <linux/mfd/tmio.h> 31 - #include <linux/mmc/host.h> 32 - #include <linux/mmc/sh_mobile_sdhi.h> 33 - #include <linux/mtd/mtd.h> 34 - #include <linux/mtd/partitions.h> 35 - #include <linux/phy.h> 36 - #include <linux/pinctrl/machine.h> 37 - #include <linux/platform_data/gpio-rcar.h> 38 - #include <linux/platform_data/rcar-du.h> 39 - #include <linux/platform_device.h> 40 - #include <linux/regulator/driver.h> 41 - #include <linux/regulator/fixed.h> 42 - #include <linux/regulator/gpio-regulator.h> 43 - #include <linux/regulator/machine.h> 44 - #include <linux/sh_eth.h> 45 - #include <linux/spi/flash.h> 46 - #include <linux/spi/rspi.h> 47 - #include <linux/spi/spi.h> 48 - 49 - #include <asm/mach-types.h> 50 - #include <asm/mach/arch.h> 51 - 52 - #include "common.h" 53 - #include "irqs.h" 54 - #include "r8a7791.h" 55 - #include "rcar-gen2.h" 56 - 57 - /* DU */ 58 - static struct rcar_du_encoder_data koelsch_du_encoders[] = { 59 - { 60 - .type = RCAR_DU_ENCODER_NONE, 61 - .output = RCAR_DU_OUTPUT_LVDS0, 62 - .connector.lvds.panel = { 63 - .width_mm = 210, 64 - .height_mm = 158, 65 - .mode = { 66 - .pixelclock = 65000000, 67 - .hactive = 1024, 68 - .hfront_porch = 20, 69 - .hback_porch = 160, 70 - .hsync_len = 136, 71 - .vactive = 768, 72 - .vfront_porch = 3, 73 - .vback_porch = 29, 74 - .vsync_len = 6, 75 - }, 76 - }, 77 - }, 78 - }; 79 - 80 - static const struct rcar_du_platform_data koelsch_du_pdata __initconst = { 81 - .encoders = koelsch_du_encoders, 82 - .num_encoders = ARRAY_SIZE(koelsch_du_encoders), 83 - }; 84 - 85 - static const struct resource du_resources[] __initconst = { 86 - DEFINE_RES_MEM(0xfeb00000, 0x40000), 87 - DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"), 88 - DEFINE_RES_IRQ(gic_spi(256)), 89 - DEFINE_RES_IRQ(gic_spi(268)), 90 - }; 91 - 92 - static void __init koelsch_add_du_device(void) 93 - { 94 - struct platform_device_info info = { 95 - .name = "rcar-du-r8a7791", 96 - .id = -1, 97 - .res = du_resources, 98 - .num_res = ARRAY_SIZE(du_resources), 99 - .data = &koelsch_du_pdata, 100 - .size_data = sizeof(koelsch_du_pdata), 101 - .dma_mask = DMA_BIT_MASK(32), 102 - }; 103 - 104 - platform_device_register_full(&info); 105 - } 106 - 107 - /* Ether */ 108 - static const struct sh_eth_plat_data ether_pdata __initconst = { 109 - .phy = 0x1, 110 - .phy_irq = irq_pin(0), 111 - .edmac_endian = EDMAC_LITTLE_ENDIAN, 112 - .phy_interface = PHY_INTERFACE_MODE_RMII, 113 - .ether_link_active_low = 1, 114 - }; 115 - 116 - static const struct resource ether_resources[] __initconst = { 117 - DEFINE_RES_MEM(0xee700000, 0x400), 118 - DEFINE_RES_IRQ(gic_spi(162)), 119 - }; 120 - 121 - static const struct platform_device_info ether_info __initconst = { 122 - .name = "r8a7791-ether", 123 - .id = -1, 124 - .res = ether_resources, 125 - .num_res = ARRAY_SIZE(ether_resources), 126 - .data = &ether_pdata, 127 - .size_data = sizeof(ether_pdata), 128 - .dma_mask = DMA_BIT_MASK(32), 129 - }; 130 - 131 - /* LEDS */ 132 - static struct gpio_led koelsch_leds[] = { 133 - { 134 - .name = "led8", 135 - .gpio = RCAR_GP_PIN(2, 21), 136 - .default_state = LEDS_GPIO_DEFSTATE_ON, 137 - }, { 138 - .name = "led7", 139 - .gpio = RCAR_GP_PIN(2, 20), 140 - .default_state = LEDS_GPIO_DEFSTATE_ON, 141 - }, { 142 - .name = "led6", 143 - .gpio = RCAR_GP_PIN(2, 19), 144 - .default_state = LEDS_GPIO_DEFSTATE_ON, 145 - }, 146 - }; 147 - 148 - static const struct gpio_led_platform_data koelsch_leds_pdata __initconst = { 149 - .leds = koelsch_leds, 150 - .num_leds = ARRAY_SIZE(koelsch_leds), 151 - }; 152 - 153 - /* GPIO KEY */ 154 - #define GPIO_KEY(c, g, d, ...) \ 155 - { .code = c, .gpio = g, .desc = d, .active_low = 1, \ 156 - .wakeup = 1, .debounce_interval = 20 } 157 - 158 - static struct gpio_keys_button gpio_buttons[] = { 159 - GPIO_KEY(KEY_4, RCAR_GP_PIN(5, 3), "SW2-pin4"), 160 - GPIO_KEY(KEY_3, RCAR_GP_PIN(5, 2), "SW2-pin3"), 161 - GPIO_KEY(KEY_2, RCAR_GP_PIN(5, 1), "SW2-pin2"), 162 - GPIO_KEY(KEY_1, RCAR_GP_PIN(5, 0), "SW2-pin1"), 163 - GPIO_KEY(KEY_G, RCAR_GP_PIN(7, 6), "SW36"), 164 - GPIO_KEY(KEY_F, RCAR_GP_PIN(7, 5), "SW35"), 165 - GPIO_KEY(KEY_E, RCAR_GP_PIN(7, 4), "SW34"), 166 - GPIO_KEY(KEY_D, RCAR_GP_PIN(7, 3), "SW33"), 167 - GPIO_KEY(KEY_C, RCAR_GP_PIN(7, 2), "SW32"), 168 - GPIO_KEY(KEY_B, RCAR_GP_PIN(7, 1), "SW31"), 169 - GPIO_KEY(KEY_A, RCAR_GP_PIN(7, 0), "SW30"), 170 - }; 171 - 172 - static const struct gpio_keys_platform_data koelsch_keys_pdata __initconst = { 173 - .buttons = gpio_buttons, 174 - .nbuttons = ARRAY_SIZE(gpio_buttons), 175 - }; 176 - 177 - /* QSPI */ 178 - static const struct resource qspi_resources[] __initconst = { 179 - DEFINE_RES_MEM(0xe6b10000, 0x1000), 180 - DEFINE_RES_IRQ_NAMED(gic_spi(184), "mux"), 181 - }; 182 - 183 - static const struct rspi_plat_data qspi_pdata __initconst = { 184 - .num_chipselect = 1, 185 - }; 186 - 187 - /* SPI Flash memory (Spansion S25FL512SAGMFIG11 64 MiB) */ 188 - static struct mtd_partition spi_flash_part[] = { 189 - { 190 - .name = "loader", 191 - .offset = 0x00000000, 192 - .size = 512 * 1024, 193 - .mask_flags = MTD_WRITEABLE, 194 - }, 195 - { 196 - .name = "bootenv", 197 - .offset = MTDPART_OFS_APPEND, 198 - .size = 512 * 1024, 199 - .mask_flags = MTD_WRITEABLE, 200 - }, 201 - { 202 - .name = "data", 203 - .offset = MTDPART_OFS_APPEND, 204 - .size = MTDPART_SIZ_FULL, 205 - }, 206 - }; 207 - 208 - static const struct flash_platform_data spi_flash_data = { 209 - .name = "m25p80", 210 - .parts = spi_flash_part, 211 - .nr_parts = ARRAY_SIZE(spi_flash_part), 212 - .type = "s25fl512s", 213 - }; 214 - 215 - static const struct spi_board_info spi_info[] __initconst = { 216 - { 217 - .modalias = "m25p80", 218 - .platform_data = &spi_flash_data, 219 - .mode = SPI_MODE_0 | SPI_TX_QUAD | SPI_RX_QUAD, 220 - .max_speed_hz = 30000000, 221 - .bus_num = 0, 222 - .chip_select = 0, 223 - }, 224 - }; 225 - 226 - /* SATA0 */ 227 - static const struct resource sata0_resources[] __initconst = { 228 - DEFINE_RES_MEM(0xee300000, 0x2000), 229 - DEFINE_RES_IRQ(gic_spi(105)), 230 - }; 231 - 232 - static const struct platform_device_info sata0_info __initconst = { 233 - .name = "sata-r8a7791", 234 - .id = 0, 235 - .res = sata0_resources, 236 - .num_res = ARRAY_SIZE(sata0_resources), 237 - .dma_mask = DMA_BIT_MASK(32), 238 - }; 239 - 240 - /* I2C */ 241 - static const struct resource i2c_resources[] __initconst = { 242 - /* I2C0 */ 243 - DEFINE_RES_MEM(0xE6508000, 0x40), 244 - DEFINE_RES_IRQ(gic_spi(287)), 245 - /* I2C1 */ 246 - DEFINE_RES_MEM(0xE6518000, 0x40), 247 - DEFINE_RES_IRQ(gic_spi(288)), 248 - /* I2C2 */ 249 - DEFINE_RES_MEM(0xE6530000, 0x40), 250 - DEFINE_RES_IRQ(gic_spi(286)), 251 - /* I2C3 */ 252 - DEFINE_RES_MEM(0xE6540000, 0x40), 253 - DEFINE_RES_IRQ(gic_spi(290)), 254 - /* I2C4 */ 255 - DEFINE_RES_MEM(0xE6520000, 0x40), 256 - DEFINE_RES_IRQ(gic_spi(19)), 257 - /* I2C5 */ 258 - DEFINE_RES_MEM(0xE6528000, 0x40), 259 - DEFINE_RES_IRQ(gic_spi(20)), 260 - }; 261 - 262 - static void __init koelsch_add_i2c(unsigned idx) 263 - { 264 - unsigned res_idx = idx * 2; 265 - 266 - BUG_ON(res_idx >= ARRAY_SIZE(i2c_resources)); 267 - 268 - platform_device_register_simple("i2c-rcar_gen2", idx, 269 - i2c_resources + res_idx, 2); 270 - } 271 - 272 - #define SDHI_REGULATOR(idx, vdd_pin, vccq_pin) \ 273 - static struct regulator_consumer_supply vcc_sdhi##idx##_consumer = \ 274 - REGULATOR_SUPPLY("vmmc", "sh_mobile_sdhi." #idx); \ 275 - \ 276 - static struct regulator_init_data vcc_sdhi##idx##_init_data = { \ 277 - .constraints = { \ 278 - .valid_ops_mask = REGULATOR_CHANGE_STATUS, \ 279 - }, \ 280 - .consumer_supplies = &vcc_sdhi##idx##_consumer, \ 281 - .num_consumer_supplies = 1, \ 282 - }; \ 283 - \ 284 - static const struct fixed_voltage_config vcc_sdhi##idx##_info __initconst = {\ 285 - .supply_name = "SDHI" #idx "Vcc", \ 286 - .microvolts = 3300000, \ 287 - .gpio = vdd_pin, \ 288 - .enable_high = 1, \ 289 - .init_data = &vcc_sdhi##idx##_init_data, \ 290 - }; \ 291 - \ 292 - static struct regulator_consumer_supply vccq_sdhi##idx##_consumer = \ 293 - REGULATOR_SUPPLY("vqmmc", "sh_mobile_sdhi." #idx); \ 294 - \ 295 - static struct regulator_init_data vccq_sdhi##idx##_init_data = { \ 296 - .constraints = { \ 297 - .input_uV = 3300000, \ 298 - .min_uV = 1800000, \ 299 - .max_uV = 3300000, \ 300 - .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE | \ 301 - REGULATOR_CHANGE_STATUS, \ 302 - }, \ 303 - .consumer_supplies = &vccq_sdhi##idx##_consumer, \ 304 - .num_consumer_supplies = 1, \ 305 - }; \ 306 - \ 307 - static struct gpio vccq_sdhi##idx##_gpio = \ 308 - { vccq_pin, GPIOF_OUT_INIT_HIGH, "vccq-sdhi" #idx }; \ 309 - \ 310 - static struct gpio_regulator_state vccq_sdhi##idx##_states[] = { \ 311 - { .value = 1800000, .gpios = 0 }, \ 312 - { .value = 3300000, .gpios = 1 }, \ 313 - }; \ 314 - \ 315 - static const struct gpio_regulator_config vccq_sdhi##idx##_info __initconst = {\ 316 - .supply_name = "vqmmc", \ 317 - .gpios = &vccq_sdhi##idx##_gpio, \ 318 - .nr_gpios = 1, \ 319 - .states = vccq_sdhi##idx##_states, \ 320 - .nr_states = ARRAY_SIZE(vccq_sdhi##idx##_states), \ 321 - .type = REGULATOR_VOLTAGE, \ 322 - .init_data = &vccq_sdhi##idx##_init_data, \ 323 - }; 324 - 325 - SDHI_REGULATOR(0, RCAR_GP_PIN(7, 17), RCAR_GP_PIN(2, 12)); 326 - SDHI_REGULATOR(1, RCAR_GP_PIN(7, 18), RCAR_GP_PIN(2, 13)); 327 - SDHI_REGULATOR(2, RCAR_GP_PIN(7, 19), RCAR_GP_PIN(2, 26)); 328 - 329 - /* SDHI0 */ 330 - static struct sh_mobile_sdhi_info sdhi0_info __initdata = { 331 - .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 332 - MMC_CAP_POWER_OFF_CARD, 333 - .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, 334 - }; 335 - 336 - static struct resource sdhi0_resources[] __initdata = { 337 - DEFINE_RES_MEM(0xee100000, 0x200), 338 - DEFINE_RES_IRQ(gic_spi(165)), 339 - }; 340 - 341 - /* SDHI1 */ 342 - static struct sh_mobile_sdhi_info sdhi1_info __initdata = { 343 - .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 344 - MMC_CAP_POWER_OFF_CARD, 345 - .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT, 346 - }; 347 - 348 - static struct resource sdhi1_resources[] __initdata = { 349 - DEFINE_RES_MEM(0xee140000, 0x100), 350 - DEFINE_RES_IRQ(gic_spi(167)), 351 - }; 352 - 353 - /* SDHI2 */ 354 - static struct sh_mobile_sdhi_info sdhi2_info __initdata = { 355 - .tmio_caps = MMC_CAP_SD_HIGHSPEED | MMC_CAP_SDIO_IRQ | 356 - MMC_CAP_POWER_OFF_CARD, 357 - .tmio_flags = TMIO_MMC_HAS_IDLE_WAIT | 358 - TMIO_MMC_WRPROTECT_DISABLE, 359 - }; 360 - 361 - static struct resource sdhi2_resources[] __initdata = { 362 - DEFINE_RES_MEM(0xee160000, 0x100), 363 - DEFINE_RES_IRQ(gic_spi(168)), 364 - }; 365 - 366 - static const struct pinctrl_map koelsch_pinctrl_map[] = { 367 - /* DU */ 368 - PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791", 369 - "du_rgb666", "du"), 370 - PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791", 371 - "du_sync", "du"), 372 - PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791", 373 - "du_clk_out_0", "du"), 374 - /* Ether */ 375 - PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791", 376 - "eth_link", "eth"), 377 - PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791", 378 - "eth_mdio", "eth"), 379 - PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791", 380 - "eth_rmii", "eth"), 381 - PIN_MAP_MUX_GROUP_DEFAULT("r8a7791-ether", "pfc-r8a7791", 382 - "intc_irq0", "intc"), 383 - /* QSPI */ 384 - PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7791", 385 - "qspi_ctrl", "qspi"), 386 - PIN_MAP_MUX_GROUP_DEFAULT("qspi.0", "pfc-r8a7791", 387 - "qspi_data4", "qspi"), 388 - /* SCIF0 (CN19: DEBUG SERIAL0) */ 389 - PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.6", "pfc-r8a7791", 390 - "scif0_data_d", "scif0"), 391 - /* SCIF1 (CN20: DEBUG SERIAL1) */ 392 - PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7791", 393 - "scif1_data_d", "scif1"), 394 - /* I2C1 */ 395 - PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.1", "pfc-r8a7791", 396 - "i2c1_e", "i2c1"), 397 - /* I2C2 */ 398 - PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.2", "pfc-r8a7791", 399 - "i2c2", "i2c2"), 400 - /* I2C4 */ 401 - PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.4", "pfc-r8a7791", 402 - "i2c4_c", "i2c4"), 403 - /* SDHI0 */ 404 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791", 405 - "sdhi0_data4", "sdhi0"), 406 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791", 407 - "sdhi0_ctrl", "sdhi0"), 408 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791", 409 - "sdhi0_cd", "sdhi0"), 410 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.0", "pfc-r8a7791", 411 - "sdhi0_wp", "sdhi0"), 412 - /* SDHI2 */ 413 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791", 414 - "sdhi1_data4", "sdhi1"), 415 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791", 416 - "sdhi1_ctrl", "sdhi1"), 417 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791", 418 - "sdhi1_cd", "sdhi1"), 419 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.1", "pfc-r8a7791", 420 - "sdhi1_wp", "sdhi1"), 421 - /* SDHI2 */ 422 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791", 423 - "sdhi2_data4", "sdhi2"), 424 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791", 425 - "sdhi2_ctrl", "sdhi2"), 426 - PIN_MAP_MUX_GROUP_DEFAULT("sh_mobile_sdhi.2", "pfc-r8a7791", 427 - "sdhi2_cd", "sdhi2"), 428 - }; 429 - 430 - static void __init koelsch_add_standard_devices(void) 431 - { 432 - r8a7791_clock_init(); 433 - pinctrl_register_mappings(koelsch_pinctrl_map, 434 - ARRAY_SIZE(koelsch_pinctrl_map)); 435 - r8a7791_pinmux_init(); 436 - r8a7791_add_standard_devices(); 437 - platform_device_register_full(&ether_info); 438 - platform_device_register_data(NULL, "leds-gpio", -1, 439 - &koelsch_leds_pdata, 440 - sizeof(koelsch_leds_pdata)); 441 - platform_device_register_data(NULL, "gpio-keys", -1, 442 - &koelsch_keys_pdata, 443 - sizeof(koelsch_keys_pdata)); 444 - platform_device_register_resndata(NULL, "qspi", 0, 445 - qspi_resources, 446 - ARRAY_SIZE(qspi_resources), 447 - &qspi_pdata, sizeof(qspi_pdata)); 448 - spi_register_board_info(spi_info, ARRAY_SIZE(spi_info)); 449 - 450 - koelsch_add_du_device(); 451 - 452 - platform_device_register_full(&sata0_info); 453 - 454 - koelsch_add_i2c(1); 455 - koelsch_add_i2c(2); 456 - koelsch_add_i2c(4); 457 - koelsch_add_i2c(5); 458 - 459 - platform_device_register_data(NULL, "reg-fixed-voltage", 0, 460 - &vcc_sdhi0_info, sizeof(struct fixed_voltage_config)); 461 - platform_device_register_data(NULL, "reg-fixed-voltage", 1, 462 - &vcc_sdhi1_info, sizeof(struct fixed_voltage_config)); 463 - platform_device_register_data(NULL, "reg-fixed-voltage", 2, 464 - &vcc_sdhi2_info, sizeof(struct fixed_voltage_config)); 465 - platform_device_register_data(NULL, "gpio-regulator", 0, 466 - &vccq_sdhi0_info, sizeof(struct gpio_regulator_config)); 467 - platform_device_register_data(NULL, "gpio-regulator", 1, 468 - &vccq_sdhi1_info, sizeof(struct gpio_regulator_config)); 469 - platform_device_register_data(NULL, "gpio-regulator", 2, 470 - &vccq_sdhi2_info, sizeof(struct gpio_regulator_config)); 471 - 472 - platform_device_register_resndata(NULL, "sh_mobile_sdhi", 0, 473 - sdhi0_resources, ARRAY_SIZE(sdhi0_resources), 474 - &sdhi0_info, sizeof(struct sh_mobile_sdhi_info)); 475 - 476 - platform_device_register_resndata(NULL, "sh_mobile_sdhi", 1, 477 - sdhi1_resources, ARRAY_SIZE(sdhi1_resources), 478 - &sdhi1_info, sizeof(struct sh_mobile_sdhi_info)); 479 - 480 - platform_device_register_resndata(NULL, "sh_mobile_sdhi", 2, 481 - sdhi2_resources, ARRAY_SIZE(sdhi2_resources), 482 - &sdhi2_info, sizeof(struct sh_mobile_sdhi_info)); 483 - 484 - } 485 - 486 - /* 487 - * Ether LEDs on the Koelsch board are named LINK and ACTIVE which corresponds 488 - * to non-default 01 setting of the Micrel KSZ8041 PHY control register 1 bits 489 - * 14-15. We have to set them back to 01 from the default 00 value each time 490 - * the PHY is reset. It's also important because the PHY's LED0 signal is 491 - * connected to SoC's ETH_LINK signal and in the PHY's default mode it will 492 - * bounce on and off after each packet, which we apparently want to avoid. 493 - */ 494 - static int koelsch_ksz8041_fixup(struct phy_device *phydev) 495 - { 496 - u16 phyctrl1 = phy_read(phydev, 0x1e); 497 - 498 - phyctrl1 &= ~0xc000; 499 - phyctrl1 |= 0x4000; 500 - return phy_write(phydev, 0x1e, phyctrl1); 501 - } 502 - 503 - static void __init koelsch_init(void) 504 - { 505 - koelsch_add_standard_devices(); 506 - 507 - irq_set_irq_type(irq_pin(0), IRQ_TYPE_LEVEL_LOW); 508 - 509 - if (IS_ENABLED(CONFIG_PHYLIB)) 510 - phy_register_fixup_for_id("r8a7791-ether-ff:01", 511 - koelsch_ksz8041_fixup); 512 - } 513 - 514 - static const char * const koelsch_boards_compat_dt[] __initconst = { 515 - "renesas,koelsch", 516 - NULL, 517 - }; 518 - 519 - DT_MACHINE_START(KOELSCH_DT, "koelsch") 520 - .smp = smp_ops(r8a7791_smp_ops), 521 - .init_early = shmobile_init_delay, 522 - .init_time = rcar_gen2_timer_init, 523 - .init_machine = koelsch_init, 524 - .init_late = shmobile_init_late, 525 - .reserve = rcar_gen2_reserve, 526 - .dt_compat = koelsch_boards_compat_dt, 527 - MACHINE_END
-4
arch/arm/mach-shmobile/board-kzm9g-reference.c
··· 14 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 16 * GNU General Public License for more details. 17 - * 18 - * You should have received a copy of the GNU General Public License 19 - * along with this program; if not, write to the Free Software 20 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 21 17 */ 22 18 23 19 #include <linux/delay.h>
-4
arch/arm/mach-shmobile/board-kzm9g.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 14 */ 19 15 20 16 #include <linux/delay.h>
-84
arch/arm/mach-shmobile/board-lager-reference.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 - #include <linux/dma-mapping.h> 22 17 #include <linux/init.h> 23 18 #include <linux/of_platform.h> 24 - #include <linux/platform_data/rcar-du.h> 25 19 26 20 #include <asm/mach/arch.h> 27 21 28 - #include "clock.h" 29 22 #include "common.h" 30 - #include "irqs.h" 31 23 #include "r8a7790.h" 32 24 #include "rcar-gen2.h" 33 - 34 - /* DU */ 35 - static struct rcar_du_encoder_data lager_du_encoders[] = { 36 - { 37 - .type = RCAR_DU_ENCODER_VGA, 38 - .output = RCAR_DU_OUTPUT_DPAD0, 39 - }, { 40 - .type = RCAR_DU_ENCODER_NONE, 41 - .output = RCAR_DU_OUTPUT_LVDS1, 42 - .connector.lvds.panel = { 43 - .width_mm = 210, 44 - .height_mm = 158, 45 - .mode = { 46 - .pixelclock = 65000000, 47 - .hactive = 1024, 48 - .hfront_porch = 20, 49 - .hback_porch = 160, 50 - .hsync_len = 136, 51 - .vactive = 768, 52 - .vfront_porch = 3, 53 - .vback_porch = 29, 54 - .vsync_len = 6, 55 - }, 56 - }, 57 - }, 58 - }; 59 - 60 - static struct rcar_du_platform_data lager_du_pdata = { 61 - .encoders = lager_du_encoders, 62 - .num_encoders = ARRAY_SIZE(lager_du_encoders), 63 - }; 64 - 65 - static const struct resource du_resources[] __initconst = { 66 - DEFINE_RES_MEM(0xfeb00000, 0x70000), 67 - DEFINE_RES_MEM_NAMED(0xfeb90000, 0x1c, "lvds.0"), 68 - DEFINE_RES_MEM_NAMED(0xfeb94000, 0x1c, "lvds.1"), 69 - DEFINE_RES_IRQ(gic_spi(256)), 70 - DEFINE_RES_IRQ(gic_spi(268)), 71 - DEFINE_RES_IRQ(gic_spi(269)), 72 - }; 73 - 74 - static void __init lager_add_du_device(void) 75 - { 76 - struct platform_device_info info = { 77 - .name = "rcar-du-r8a7790", 78 - .id = -1, 79 - .res = du_resources, 80 - .num_res = ARRAY_SIZE(du_resources), 81 - .data = &lager_du_pdata, 82 - .size_data = sizeof(lager_du_pdata), 83 - .dma_mask = DMA_BIT_MASK(32), 84 - }; 85 - 86 - platform_device_register_full(&info); 87 - } 88 - 89 - /* 90 - * This is a really crude hack to provide clkdev support to platform 91 - * devices until they get moved to DT. 92 - */ 93 - static const struct clk_name clk_names[] __initconst = { 94 - { "du0", "du.0", "rcar-du-r8a7790" }, 95 - { "du1", "du.1", "rcar-du-r8a7790" }, 96 - { "du2", "du.2", "rcar-du-r8a7790" }, 97 - { "lvds0", "lvds.0", "rcar-du-r8a7790" }, 98 - { "lvds1", "lvds.1", "rcar-du-r8a7790" }, 99 - }; 100 - 101 - static void __init lager_add_standard_devices(void) 102 - { 103 - shmobile_clk_workaround(clk_names, ARRAY_SIZE(clk_names), false); 104 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 105 - 106 - lager_add_du_device(); 107 - } 108 25 109 26 static const char *lager_boards_compat_dt[] __initdata = { 110 27 "renesas,lager", ··· 33 116 .smp = smp_ops(r8a7790_smp_ops), 34 117 .init_early = shmobile_init_delay, 35 118 .init_time = rcar_gen2_timer_init, 36 - .init_machine = lager_add_standard_devices, 37 119 .init_late = shmobile_init_late, 38 120 .reserve = rcar_gen2_reserve, 39 121 .dt_compat = lager_boards_compat_dt,
-4
arch/arm/mach-shmobile/board-lager.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 22 18 #include <linux/gpio.h>
-4
arch/arm/mach-shmobile/board-mackerel.c
··· 16 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 18 * GNU General Public License for more details. 19 - * 20 - * You should have received a copy of the GNU General Public License 21 - * along with this program; if not, write to the Free Software 22 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 23 19 */ 24 20 #include <linux/delay.h> 25 21 #include <linux/kernel.h>
-5
arch/arm/mach-shmobile/board-marzen-reference.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 22 18 #include <linux/clk/shmobile.h> ··· 22 26 #include <asm/irq.h> 23 27 #include <asm/mach/arch.h> 24 28 25 - #include "clock.h" 26 29 #include "common.h" 27 30 #include "irqs.h" 28 31 #include "r8a7779.h"
-4
arch/arm/mach-shmobile/board-marzen.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 22 18 #include <linux/kernel.h>
-4
arch/arm/mach-shmobile/clock-r8a73a4.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/init.h> 21 17 #include <linux/io.h>
-4
arch/arm/mach-shmobile/clock-r8a7740.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 15 */ 20 16 #include <linux/init.h> 21 17 #include <linux/kernel.h>
-4
arch/arm/mach-shmobile/clock-r8a7778.c
··· 17 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 19 * GNU General Public License for more details. 20 - * 21 - * You should have received a copy of the GNU General Public License 22 - * along with this program; if not, write to the Free Software 23 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 24 20 */ 25 21 26 22 /*
-4
arch/arm/mach-shmobile/clock-r8a7779.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 15 */ 20 16 #include <linux/bitops.h> 21 17 #include <linux/init.h>
-4
arch/arm/mach-shmobile/clock-r8a7790.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/init.h> 21 17 #include <linux/io.h>
-342
arch/arm/mach-shmobile/clock-r8a7791.c
··· 1 - /* 2 - * r8a7791 clock framework support 3 - * 4 - * Copyright (C) 2013 Renesas Electronics Corporation 5 - * Copyright (C) 2013 Renesas Solutions Corp. 6 - * Copyright (C) 2013 Magnus Damm 7 - * 8 - * This program is free software; you can redistribute it and/or modify 9 - * it under the terms of the GNU General Public License as published by 10 - * the Free Software Foundation; version 2 of the License. 11 - * 12 - * This program is distributed in the hope that it will be useful, 13 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 - * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 - */ 21 - #include <linux/init.h> 22 - #include <linux/io.h> 23 - #include <linux/kernel.h> 24 - #include <linux/sh_clk.h> 25 - #include <linux/clkdev.h> 26 - #include "clock.h" 27 - #include "common.h" 28 - #include "rcar-gen2.h" 29 - 30 - /* 31 - * MD EXTAL PLL0 PLL1 PLL3 32 - * 14 13 19 (MHz) *1 *1 33 - *--------------------------------------------------- 34 - * 0 0 0 15 x 1 x172/2 x208/2 x106 35 - * 0 0 1 15 x 1 x172/2 x208/2 x88 36 - * 0 1 0 20 x 1 x130/2 x156/2 x80 37 - * 0 1 1 20 x 1 x130/2 x156/2 x66 38 - * 1 0 0 26 / 2 x200/2 x240/2 x122 39 - * 1 0 1 26 / 2 x200/2 x240/2 x102 40 - * 1 1 0 30 / 2 x172/2 x208/2 x106 41 - * 1 1 1 30 / 2 x172/2 x208/2 x88 42 - * 43 - * *1 : Table 7.6 indicates VCO ouput (PLLx = VCO/2) 44 - * see "p1 / 2" on R8A7791_CLOCK_ROOT() below 45 - */ 46 - 47 - #define CPG_BASE 0xe6150000 48 - #define CPG_LEN 0x1000 49 - 50 - #define SMSTPCR0 0xE6150130 51 - #define SMSTPCR1 0xE6150134 52 - #define SMSTPCR2 0xe6150138 53 - #define SMSTPCR3 0xE615013C 54 - #define SMSTPCR5 0xE6150144 55 - #define SMSTPCR7 0xe615014c 56 - #define SMSTPCR8 0xE6150990 57 - #define SMSTPCR9 0xE6150994 58 - #define SMSTPCR10 0xE6150998 59 - #define SMSTPCR11 0xE615099C 60 - 61 - #define MSTPSR1 IOMEM(0xe6150038) 62 - #define MSTPSR2 IOMEM(0xe6150040) 63 - #define MSTPSR3 IOMEM(0xe6150048) 64 - #define MSTPSR5 IOMEM(0xe615003c) 65 - #define MSTPSR7 IOMEM(0xe61501c4) 66 - #define MSTPSR8 IOMEM(0xe61509a0) 67 - #define MSTPSR9 IOMEM(0xe61509a4) 68 - #define MSTPSR11 IOMEM(0xe61509ac) 69 - 70 - #define SDCKCR 0xE6150074 71 - #define SD1CKCR 0xE6150078 72 - #define SD2CKCR 0xE615026c 73 - #define MMC0CKCR 0xE6150240 74 - #define MMC1CKCR 0xE6150244 75 - #define SSPCKCR 0xE6150248 76 - #define SSPRSCKCR 0xE615024C 77 - 78 - static struct clk_mapping cpg_mapping = { 79 - .phys = CPG_BASE, 80 - .len = CPG_LEN, 81 - }; 82 - 83 - static struct clk extal_clk = { 84 - /* .rate will be updated on r8a7791_clock_init() */ 85 - .mapping = &cpg_mapping, 86 - }; 87 - 88 - static struct sh_clk_ops followparent_clk_ops = { 89 - .recalc = followparent_recalc, 90 - }; 91 - 92 - static struct clk main_clk = { 93 - /* .parent will be set r8a73a4_clock_init */ 94 - .ops = &followparent_clk_ops, 95 - }; 96 - 97 - /* 98 - * clock ratio of these clock will be updated 99 - * on r8a7791_clock_init() 100 - */ 101 - SH_FIXED_RATIO_CLK_SET(pll1_clk, main_clk, 1, 1); 102 - SH_FIXED_RATIO_CLK_SET(pll3_clk, main_clk, 1, 1); 103 - SH_FIXED_RATIO_CLK_SET(qspi_clk, pll1_clk, 1, 1); 104 - 105 - /* fixed ratio clock */ 106 - SH_FIXED_RATIO_CLK_SET(extal_div2_clk, extal_clk, 1, 2); 107 - SH_FIXED_RATIO_CLK_SET(cp_clk, extal_clk, 1, 2); 108 - 109 - SH_FIXED_RATIO_CLK_SET(pll1_div2_clk, pll1_clk, 1, 2); 110 - SH_FIXED_RATIO_CLK_SET(hp_clk, pll1_clk, 1, 12); 111 - SH_FIXED_RATIO_CLK_SET(p_clk, pll1_clk, 1, 24); 112 - SH_FIXED_RATIO_CLK_SET(rclk_clk, pll1_clk, 1, (48 * 1024)); 113 - SH_FIXED_RATIO_CLK_SET(mp_clk, pll1_div2_clk, 1, 15); 114 - SH_FIXED_RATIO_CLK_SET(zg_clk, pll1_clk, 1, 3); 115 - SH_FIXED_RATIO_CLK_SET(zx_clk, pll1_clk, 1, 3); 116 - SH_FIXED_RATIO_CLK_SET(zs_clk, pll1_clk, 1, 6); 117 - 118 - static struct clk *main_clks[] = { 119 - &extal_clk, 120 - &extal_div2_clk, 121 - &main_clk, 122 - &pll1_clk, 123 - &pll1_div2_clk, 124 - &pll3_clk, 125 - &hp_clk, 126 - &p_clk, 127 - &qspi_clk, 128 - &rclk_clk, 129 - &mp_clk, 130 - &cp_clk, 131 - &zg_clk, 132 - &zx_clk, 133 - &zs_clk, 134 - }; 135 - 136 - /* SDHI (DIV4) clock */ 137 - static int divisors[] = { 2, 3, 4, 6, 8, 12, 16, 18, 24, 0, 36, 48, 10 }; 138 - 139 - static struct clk_div_mult_table div4_div_mult_table = { 140 - .divisors = divisors, 141 - .nr_divisors = ARRAY_SIZE(divisors), 142 - }; 143 - 144 - static struct clk_div4_table div4_table = { 145 - .div_mult_table = &div4_div_mult_table, 146 - }; 147 - 148 - enum { 149 - DIV4_SDH, DIV4_SD0, 150 - DIV4_NR 151 - }; 152 - 153 - static struct clk div4_clks[DIV4_NR] = { 154 - [DIV4_SDH] = SH_CLK_DIV4(&pll1_clk, SDCKCR, 8, 0x0dff, CLK_ENABLE_ON_INIT), 155 - [DIV4_SD0] = SH_CLK_DIV4(&pll1_clk, SDCKCR, 4, 0x1df0, CLK_ENABLE_ON_INIT), 156 - }; 157 - 158 - /* DIV6 clocks */ 159 - enum { 160 - DIV6_SD1, DIV6_SD2, 161 - DIV6_NR 162 - }; 163 - 164 - static struct clk div6_clks[DIV6_NR] = { 165 - [DIV6_SD1] = SH_CLK_DIV6(&pll1_div2_clk, SD1CKCR, 0), 166 - [DIV6_SD2] = SH_CLK_DIV6(&pll1_div2_clk, SD2CKCR, 0), 167 - }; 168 - 169 - /* MSTP */ 170 - enum { 171 - MSTP1108, MSTP1107, MSTP1106, 172 - MSTP931, MSTP930, MSTP929, MSTP928, MSTP927, MSTP925, 173 - MSTP917, 174 - MSTP815, MSTP814, 175 - MSTP813, 176 - MSTP811, MSTP810, MSTP809, 177 - MSTP726, MSTP724, MSTP723, MSTP721, MSTP720, 178 - MSTP719, MSTP718, MSTP715, MSTP714, 179 - MSTP522, 180 - MSTP314, MSTP312, MSTP311, 181 - MSTP216, MSTP207, MSTP206, 182 - MSTP204, MSTP203, MSTP202, 183 - MSTP124, 184 - MSTP_NR 185 - }; 186 - 187 - static struct clk mstp_clks[MSTP_NR] = { 188 - [MSTP1108] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR11, 8, MSTPSR11, 0), /* SCIFA5 */ 189 - [MSTP1107] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR11, 7, MSTPSR11, 0), /* SCIFA4 */ 190 - [MSTP1106] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR11, 6, MSTPSR11, 0), /* SCIFA3 */ 191 - [MSTP931] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 31, MSTPSR9, 0), /* I2C0 */ 192 - [MSTP930] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 30, MSTPSR9, 0), /* I2C1 */ 193 - [MSTP929] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 29, MSTPSR9, 0), /* I2C2 */ 194 - [MSTP928] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 28, MSTPSR9, 0), /* I2C3 */ 195 - [MSTP927] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 27, MSTPSR9, 0), /* I2C4 */ 196 - [MSTP925] = SH_CLK_MSTP32_STS(&hp_clk, SMSTPCR9, 25, MSTPSR9, 0), /* I2C5 */ 197 - [MSTP917] = SH_CLK_MSTP32_STS(&qspi_clk, SMSTPCR9, 17, MSTPSR9, 0), /* QSPI */ 198 - [MSTP815] = SH_CLK_MSTP32_STS(&zs_clk, SMSTPCR8, 15, MSTPSR8, 0), /* SATA0 */ 199 - [MSTP814] = SH_CLK_MSTP32_STS(&zs_clk, SMSTPCR8, 14, MSTPSR8, 0), /* SATA1 */ 200 - [MSTP813] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR8, 13, MSTPSR8, 0), /* Ether */ 201 - [MSTP811] = SH_CLK_MSTP32_STS(&zg_clk, SMSTPCR8, 11, MSTPSR8, 0), /* VIN0 */ 202 - [MSTP810] = SH_CLK_MSTP32_STS(&zg_clk, SMSTPCR8, 10, MSTPSR8, 0), /* VIN1 */ 203 - [MSTP809] = SH_CLK_MSTP32_STS(&zg_clk, SMSTPCR8, 9, MSTPSR8, 0), /* VIN2 */ 204 - [MSTP726] = SH_CLK_MSTP32_STS(&zx_clk, SMSTPCR7, 26, MSTPSR7, 0), /* LVDS0 */ 205 - [MSTP724] = SH_CLK_MSTP32_STS(&zx_clk, SMSTPCR7, 24, MSTPSR7, 0), /* DU0 */ 206 - [MSTP723] = SH_CLK_MSTP32_STS(&zx_clk, SMSTPCR7, 23, MSTPSR7, 0), /* DU1 */ 207 - [MSTP721] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 21, MSTPSR7, 0), /* SCIF0 */ 208 - [MSTP720] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 20, MSTPSR7, 0), /* SCIF1 */ 209 - [MSTP719] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 19, MSTPSR7, 0), /* SCIF2 */ 210 - [MSTP718] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 18, MSTPSR7, 0), /* SCIF3 */ 211 - [MSTP715] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 15, MSTPSR7, 0), /* SCIF4 */ 212 - [MSTP714] = SH_CLK_MSTP32_STS(&p_clk, SMSTPCR7, 14, MSTPSR7, 0), /* SCIF5 */ 213 - [MSTP522] = SH_CLK_MSTP32_STS(&extal_clk, SMSTPCR5, 22, MSTPSR5, 0), /* Thermal */ 214 - [MSTP314] = SH_CLK_MSTP32_STS(&div4_clks[DIV4_SD0], SMSTPCR3, 14, MSTPSR3, 0), /* SDHI0 */ 215 - [MSTP312] = SH_CLK_MSTP32_STS(&div6_clks[DIV6_SD1], SMSTPCR3, 12, MSTPSR3, 0), /* SDHI1 */ 216 - [MSTP311] = SH_CLK_MSTP32_STS(&div6_clks[DIV6_SD2], SMSTPCR3, 11, MSTPSR3, 0), /* SDHI2 */ 217 - [MSTP216] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 16, MSTPSR2, 0), /* SCIFB2 */ 218 - [MSTP207] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 7, MSTPSR2, 0), /* SCIFB1 */ 219 - [MSTP206] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 6, MSTPSR2, 0), /* SCIFB0 */ 220 - [MSTP204] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 4, MSTPSR2, 0), /* SCIFA0 */ 221 - [MSTP203] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 3, MSTPSR2, 0), /* SCIFA1 */ 222 - [MSTP202] = SH_CLK_MSTP32_STS(&mp_clk, SMSTPCR2, 2, MSTPSR2, 0), /* SCIFA2 */ 223 - [MSTP124] = SH_CLK_MSTP32_STS(&rclk_clk, SMSTPCR1, 24, MSTPSR1, 0), /* CMT0 */ 224 - }; 225 - 226 - static struct clk_lookup lookups[] = { 227 - 228 - /* main clocks */ 229 - CLKDEV_CON_ID("extal", &extal_clk), 230 - CLKDEV_CON_ID("extal_div2", &extal_div2_clk), 231 - CLKDEV_CON_ID("main", &main_clk), 232 - CLKDEV_CON_ID("pll1", &pll1_clk), 233 - CLKDEV_CON_ID("pll1_div2", &pll1_div2_clk), 234 - CLKDEV_CON_ID("pll3", &pll3_clk), 235 - CLKDEV_CON_ID("zg", &zg_clk), 236 - CLKDEV_CON_ID("zs", &zs_clk), 237 - CLKDEV_CON_ID("hp", &hp_clk), 238 - CLKDEV_CON_ID("p", &p_clk), 239 - CLKDEV_CON_ID("qspi", &qspi_clk), 240 - CLKDEV_CON_ID("rclk", &rclk_clk), 241 - CLKDEV_CON_ID("mp", &mp_clk), 242 - CLKDEV_CON_ID("cp", &cp_clk), 243 - CLKDEV_CON_ID("peripheral_clk", &hp_clk), 244 - 245 - /* MSTP */ 246 - CLKDEV_ICK_ID("lvds.0", "rcar-du-r8a7791", &mstp_clks[MSTP726]), 247 - CLKDEV_ICK_ID("du.0", "rcar-du-r8a7791", &mstp_clks[MSTP724]), 248 - CLKDEV_ICK_ID("du.1", "rcar-du-r8a7791", &mstp_clks[MSTP723]), 249 - CLKDEV_DEV_ID("sh-sci.0", &mstp_clks[MSTP204]), /* SCIFA0 */ 250 - CLKDEV_DEV_ID("sh-sci.1", &mstp_clks[MSTP203]), /* SCIFA1 */ 251 - CLKDEV_DEV_ID("sh-sci.2", &mstp_clks[MSTP206]), /* SCIFB0 */ 252 - CLKDEV_DEV_ID("sh-sci.3", &mstp_clks[MSTP207]), /* SCIFB1 */ 253 - CLKDEV_DEV_ID("sh-sci.4", &mstp_clks[MSTP216]), /* SCIFB2 */ 254 - CLKDEV_DEV_ID("sh-sci.5", &mstp_clks[MSTP202]), /* SCIFA2 */ 255 - CLKDEV_DEV_ID("sh-sci.6", &mstp_clks[MSTP721]), /* SCIF0 */ 256 - CLKDEV_DEV_ID("sh-sci.7", &mstp_clks[MSTP720]), /* SCIF1 */ 257 - CLKDEV_DEV_ID("sh-sci.8", &mstp_clks[MSTP719]), /* SCIF2 */ 258 - CLKDEV_DEV_ID("sh-sci.9", &mstp_clks[MSTP718]), /* SCIF3 */ 259 - CLKDEV_DEV_ID("sh-sci.10", &mstp_clks[MSTP715]), /* SCIF4 */ 260 - CLKDEV_DEV_ID("sh-sci.11", &mstp_clks[MSTP714]), /* SCIF5 */ 261 - CLKDEV_DEV_ID("sh-sci.12", &mstp_clks[MSTP1106]), /* SCIFA3 */ 262 - CLKDEV_DEV_ID("sh-sci.13", &mstp_clks[MSTP1107]), /* SCIFA4 */ 263 - CLKDEV_DEV_ID("sh-sci.14", &mstp_clks[MSTP1108]), /* SCIFA5 */ 264 - CLKDEV_DEV_ID("sh_mobile_sdhi.0", &mstp_clks[MSTP314]), 265 - CLKDEV_DEV_ID("sh_mobile_sdhi.1", &mstp_clks[MSTP312]), 266 - CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), 267 - CLKDEV_ICK_ID("fck", "sh-cmt-48-gen2.0", &mstp_clks[MSTP124]), 268 - CLKDEV_DEV_ID("qspi.0", &mstp_clks[MSTP917]), 269 - CLKDEV_DEV_ID("rcar_thermal", &mstp_clks[MSTP522]), 270 - CLKDEV_DEV_ID("i2c-rcar_gen2.0", &mstp_clks[MSTP931]), 271 - CLKDEV_DEV_ID("i2c-rcar_gen2.1", &mstp_clks[MSTP930]), 272 - CLKDEV_DEV_ID("i2c-rcar_gen2.2", &mstp_clks[MSTP929]), 273 - CLKDEV_DEV_ID("i2c-rcar_gen2.3", &mstp_clks[MSTP928]), 274 - CLKDEV_DEV_ID("i2c-rcar_gen2.4", &mstp_clks[MSTP927]), 275 - CLKDEV_DEV_ID("i2c-rcar_gen2.5", &mstp_clks[MSTP925]), 276 - CLKDEV_DEV_ID("r8a7791-ether", &mstp_clks[MSTP813]), /* Ether */ 277 - CLKDEV_DEV_ID("r8a7791-vin.0", &mstp_clks[MSTP811]), 278 - CLKDEV_DEV_ID("r8a7791-vin.1", &mstp_clks[MSTP810]), 279 - CLKDEV_DEV_ID("r8a7791-vin.2", &mstp_clks[MSTP809]), 280 - CLKDEV_DEV_ID("sata-r8a7791.0", &mstp_clks[MSTP815]), 281 - CLKDEV_DEV_ID("sata-r8a7791.1", &mstp_clks[MSTP814]), 282 - }; 283 - 284 - #define R8A7791_CLOCK_ROOT(e, m, p0, p1, p30, p31) \ 285 - extal_clk.rate = e * 1000 * 1000; \ 286 - main_clk.parent = m; \ 287 - SH_CLK_SET_RATIO(&pll1_clk_ratio, p1 / 2, 1); \ 288 - if (mode & MD(19)) \ 289 - SH_CLK_SET_RATIO(&pll3_clk_ratio, p31, 1); \ 290 - else \ 291 - SH_CLK_SET_RATIO(&pll3_clk_ratio, p30, 1) 292 - 293 - 294 - void __init r8a7791_clock_init(void) 295 - { 296 - u32 mode = rcar_gen2_read_mode_pins(); 297 - int k, ret = 0; 298 - 299 - switch (mode & (MD(14) | MD(13))) { 300 - case 0: 301 - R8A7791_CLOCK_ROOT(15, &extal_clk, 172, 208, 106, 88); 302 - break; 303 - case MD(13): 304 - R8A7791_CLOCK_ROOT(20, &extal_clk, 130, 156, 80, 66); 305 - break; 306 - case MD(14): 307 - R8A7791_CLOCK_ROOT(26, &extal_div2_clk, 200, 240, 122, 102); 308 - break; 309 - case MD(13) | MD(14): 310 - R8A7791_CLOCK_ROOT(30, &extal_div2_clk, 172, 208, 106, 88); 311 - break; 312 - } 313 - 314 - if ((mode & (MD(3) | MD(2) | MD(1))) == MD(2)) 315 - SH_CLK_SET_RATIO(&qspi_clk_ratio, 1, 16); 316 - else 317 - SH_CLK_SET_RATIO(&qspi_clk_ratio, 1, 20); 318 - 319 - for (k = 0; !ret && (k < ARRAY_SIZE(main_clks)); k++) 320 - ret = clk_register(main_clks[k]); 321 - 322 - if (!ret) 323 - ret = sh_clk_div4_register(div4_clks, DIV4_NR, &div4_table); 324 - 325 - if (!ret) 326 - ret = sh_clk_div6_register(div6_clks, DIV6_NR); 327 - 328 - if (!ret) 329 - ret = sh_clk_mstp_register(mstp_clks, MSTP_NR); 330 - 331 - clkdev_add_table(lookups, ARRAY_SIZE(lookups)); 332 - 333 - if (!ret) 334 - shmobile_clk_init(); 335 - else 336 - goto epanic; 337 - 338 - return; 339 - 340 - epanic: 341 - panic("failed to setup r8a7791 clocks\n"); 342 - }
-4
arch/arm/mach-shmobile/clock-sh7372.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 14 */ 19 15 #include <linux/init.h> 20 16 #include <linux/kernel.h>
-4
arch/arm/mach-shmobile/clock-sh73a0.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 18 14 */ 19 15 #include <linux/init.h> 20 16 #include <linux/kernel.h>
+3 -33
arch/arm/mach-shmobile/clock.c
··· 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 16 * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 - * 21 17 */ 18 + 19 + #include <linux/export.h> 22 20 #include <linux/kernel.h> 23 21 #include <linux/init.h> 24 - 25 - #ifdef CONFIG_COMMON_CLK 26 - #include <linux/clk.h> 27 - #include <linux/clkdev.h> 28 - #include "clock.h" 29 - 30 - void __init shmobile_clk_workaround(const struct clk_name *clks, 31 - int nr_clks, bool enable) 32 - { 33 - const struct clk_name *clkn; 34 - struct clk *clk; 35 - unsigned int i; 36 - 37 - for (i = 0; i < nr_clks; ++i) { 38 - clkn = clks + i; 39 - clk = clk_get(NULL, clkn->clk); 40 - if (!IS_ERR(clk)) { 41 - clk_register_clkdev(clk, clkn->con_id, clkn->dev_id); 42 - if (enable) 43 - clk_prepare_enable(clk); 44 - clk_put(clk); 45 - } 46 - } 47 - } 48 - 49 - #else /* CONFIG_COMMON_CLK */ 50 22 #include <linux/sh_clk.h> 51 - #include <linux/export.h> 23 + 52 24 #include "clock.h" 53 25 #include "common.h" 54 26 ··· 56 84 { 57 85 } 58 86 EXPORT_SYMBOL(__clk_put); 59 - 60 - #endif /* CONFIG_COMMON_CLK */
-14
arch/arm/mach-shmobile/clock.h
··· 1 1 #ifndef CLOCK_H 2 2 #define CLOCK_H 3 3 4 - #ifdef CONFIG_COMMON_CLK 5 - /* temporary clock configuration helper for platform devices */ 6 - 7 - struct clk_name { 8 - const char *clk; 9 - const char *con_id; 10 - const char *dev_id; 11 - }; 12 - 13 - void shmobile_clk_workaround(const struct clk_name *clks, int nr_clks, 14 - bool enable); 15 - 16 - #else /* CONFIG_COMMON_CLK */ 17 4 /* legacy clock implementation */ 18 5 19 6 struct clk; ··· 39 52 (p)->div = d; \ 40 53 } while (0) 41 54 42 - #endif /* CONFIG_COMMON_CLK */ 43 55 #endif
-4
arch/arm/mach-shmobile/console.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 14 */ 19 15 #include <linux/kernel.h> 20 16 #include <linux/init.h>
-5
arch/arm/mach-shmobile/headsmp-scu.S
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the 14 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., 59 Temple Place, Suite 330, Boston, 19 - * MA 02111-1307 USA 20 15 */ 21 16 22 17 #include <linux/linkage.h>
-4
arch/arm/mach-shmobile/intc-sh7372.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 14 */ 19 15 #include <linux/kernel.h> 20 16 #include <linux/init.h>
-4
arch/arm/mach-shmobile/intc-sh73a0.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 14 */ 19 15 #include <linux/kernel.h> 20 16 #include <linux/init.h>
-4
arch/arm/mach-shmobile/r8a7740.h
··· 10 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 12 * GNU General Public License for more details. 13 - * 14 - * You should have received a copy of the GNU General Public License 15 - * along with this program; if not, write to the Free Software 16 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 17 13 */ 18 14 19 15 #ifndef __ASM_R8A7740_H__
-5
arch/arm/mach-shmobile/r8a7778.h
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 14 */ 19 15 #ifndef __ASM_R8A7778_H__ 20 16 #define __ASM_R8A7778_H__ ··· 67 71 extern void r8a7778_add_dt_devices(void); 68 72 69 73 extern void r8a7778_init_late(void); 70 - extern void r8a7778_init_delay(void); 71 74 extern void r8a7778_init_irq_dt(void); 72 75 extern void r8a7778_clock_init(void); 73 76 extern void r8a7778_init_irq_extpin(int irlm);
-3
arch/arm/mach-shmobile/r8a7791.h
··· 1 1 #ifndef __ASM_R8A7791_H__ 2 2 #define __ASM_R8A7791_H__ 3 3 4 - void r8a7791_add_standard_devices(void); 5 - void r8a7791_clock_init(void); 6 - void r8a7791_pinmux_init(void); 7 4 void r8a7791_pm_init(void); 8 5 extern struct smp_operations r8a7791_smp_ops; 9 6
-4
arch/arm/mach-shmobile/setup-emev2.c
··· 11 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 13 * GNU General Public License for more details. 14 - * 15 - * You should have received a copy of the GNU General Public License 16 - * along with this program; if not, write to the Free Software 17 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 18 14 */ 19 15 #include <linux/kernel.h> 20 16 #include <linux/init.h>
-4
arch/arm/mach-shmobile/setup-r7s72100.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 17 #include <linux/kernel.h>
-4
arch/arm/mach-shmobile/setup-r8a73a4.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/irq.h> 21 17 #include <linux/kernel.h>
-4
arch/arm/mach-shmobile/setup-r8a7740.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/delay.h> 21 17 #include <linux/dma-mapping.h>
+1 -10
arch/arm/mach-shmobile/setup-r8a7778.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 22 18 #include <linux/kernel.h> ··· 568 572 &irqpin_platform_data, sizeof(irqpin_platform_data)); 569 573 } 570 574 571 - void __init r8a7778_init_delay(void) 572 - { 573 - shmobile_init_delay(); 574 - } 575 - 576 575 #ifdef CONFIG_USE_OF 577 576 #define INT2SMSKCR0 0x82288 /* 0xfe782288 */ 578 577 #define INT2SMSKCR1 0x8228c /* 0xfe78228c */ ··· 599 608 }; 600 609 601 610 DT_MACHINE_START(R8A7778_DT, "Generic R8A7778 (Flattened Device Tree)") 602 - .init_early = r8a7778_init_delay, 611 + .init_early = shmobile_init_delay, 603 612 .init_irq = r8a7778_init_irq_dt, 604 613 .init_late = shmobile_init_late, 605 614 .dt_compat = r8a7778_compat_dt,
+3 -7
arch/arm/mach-shmobile/setup-r8a7779.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 #include <linux/kernel.h> 22 18 #include <linux/init.h> ··· 48 52 #include "r8a7779.h" 49 53 50 54 static struct map_desc r8a7779_io_desc[] __initdata = { 51 - /* 2M entity map for 0xf0000000 (MPCORE) */ 55 + /* 2M identity mapping for 0xf0000000 (MPCORE) */ 52 56 { 53 57 .virtual = 0xf0000000, 54 58 .pfn = __phys_to_pfn(0xf0000000), 55 59 .length = SZ_2M, 56 60 .type = MT_DEVICE_NONSHARED 57 61 }, 58 - /* 16M entity map for 0xfexxxxxx (DMAC-S/HPBREG/INTC2/LRAM/DBSC) */ 62 + /* 16M identity mapping for 0xfexxxxxx (DMAC-S/HPBREG/INTC2/LRAM/DBSC) */ 59 63 { 60 64 .virtual = 0xfe000000, 61 65 .pfn = __phys_to_pfn(0xfe000000), ··· 679 683 680 684 /* Early serial console setup is not included here due to 681 685 * memory map collisions. The SCIF serial ports in r8a7779 682 - * are difficult to entity map 1:1 due to collision with the 686 + * are difficult to identity map 1:1 due to collision with the 683 687 * virtual memory range used by the coherent DMA code on ARM. 684 688 * 685 689 * Anyone wanting to debug early can remove UPF_IOREMAP from
-4
arch/arm/mach-shmobile/setup-r8a7790.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 17 #include <linux/irq.h>
+1 -184
arch/arm/mach-shmobile/setup-r8a7791.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 22 - #include <linux/irq.h> 23 - #include <linux/kernel.h> 24 - #include <linux/of_platform.h> 25 - #include <linux/platform_data/gpio-rcar.h> 26 - #include <linux/platform_data/irq-renesas-irqc.h> 27 - #include <linux/serial_sci.h> 28 - #include <linux/sh_timer.h> 18 + #include <linux/init.h> 29 19 30 20 #include <asm/mach/arch.h> 31 21 32 22 #include "common.h" 33 - #include "irqs.h" 34 23 #include "r8a7791.h" 35 24 #include "rcar-gen2.h" 36 25 37 - static const struct resource pfc_resources[] __initconst = { 38 - DEFINE_RES_MEM(0xe6060000, 0x250), 39 - }; 40 - 41 - #define r8a7791_register_pfc() \ 42 - platform_device_register_simple("pfc-r8a7791", -1, pfc_resources, \ 43 - ARRAY_SIZE(pfc_resources)) 44 - 45 - #define R8A7791_GPIO(idx, base, nr) \ 46 - static const struct resource r8a7791_gpio##idx##_resources[] __initconst = { \ 47 - DEFINE_RES_MEM((base), 0x50), \ 48 - DEFINE_RES_IRQ(gic_spi(4 + (idx))), \ 49 - }; \ 50 - \ 51 - static const struct gpio_rcar_config \ 52 - r8a7791_gpio##idx##_platform_data __initconst = { \ 53 - .gpio_base = 32 * (idx), \ 54 - .irq_base = 0, \ 55 - .number_of_pins = (nr), \ 56 - .pctl_name = "pfc-r8a7791", \ 57 - .has_both_edge_trigger = 1, \ 58 - }; \ 59 - 60 - R8A7791_GPIO(0, 0xe6050000, 32); 61 - R8A7791_GPIO(1, 0xe6051000, 32); 62 - R8A7791_GPIO(2, 0xe6052000, 32); 63 - R8A7791_GPIO(3, 0xe6053000, 32); 64 - R8A7791_GPIO(4, 0xe6054000, 32); 65 - R8A7791_GPIO(5, 0xe6055000, 32); 66 - R8A7791_GPIO(6, 0xe6055400, 32); 67 - R8A7791_GPIO(7, 0xe6055800, 26); 68 - 69 - #define r8a7791_register_gpio(idx) \ 70 - platform_device_register_resndata(NULL, "gpio_rcar", idx, \ 71 - r8a7791_gpio##idx##_resources, \ 72 - ARRAY_SIZE(r8a7791_gpio##idx##_resources), \ 73 - &r8a7791_gpio##idx##_platform_data, \ 74 - sizeof(r8a7791_gpio##idx##_platform_data)) 75 - 76 - void __init r8a7791_pinmux_init(void) 77 - { 78 - r8a7791_register_pfc(); 79 - r8a7791_register_gpio(0); 80 - r8a7791_register_gpio(1); 81 - r8a7791_register_gpio(2); 82 - r8a7791_register_gpio(3); 83 - r8a7791_register_gpio(4); 84 - r8a7791_register_gpio(5); 85 - r8a7791_register_gpio(6); 86 - r8a7791_register_gpio(7); 87 - } 88 - 89 - #define __R8A7791_SCIF(scif_type, index, baseaddr, irq) \ 90 - static struct plat_sci_port scif##index##_platform_data = { \ 91 - .type = scif_type, \ 92 - .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, \ 93 - .scscr = SCSCR_RE | SCSCR_TE, \ 94 - }; \ 95 - \ 96 - static struct resource scif##index##_resources[] = { \ 97 - DEFINE_RES_MEM(baseaddr, 0x100), \ 98 - DEFINE_RES_IRQ(irq), \ 99 - } 100 - 101 - #define R8A7791_SCIF(index, baseaddr, irq) \ 102 - __R8A7791_SCIF(PORT_SCIF, index, baseaddr, irq) 103 - 104 - #define R8A7791_SCIFA(index, baseaddr, irq) \ 105 - __R8A7791_SCIF(PORT_SCIFA, index, baseaddr, irq) 106 - 107 - #define R8A7791_SCIFB(index, baseaddr, irq) \ 108 - __R8A7791_SCIF(PORT_SCIFB, index, baseaddr, irq) 109 - 110 - R8A7791_SCIFA(0, 0xe6c40000, gic_spi(144)); /* SCIFA0 */ 111 - R8A7791_SCIFA(1, 0xe6c50000, gic_spi(145)); /* SCIFA1 */ 112 - R8A7791_SCIFB(2, 0xe6c20000, gic_spi(148)); /* SCIFB0 */ 113 - R8A7791_SCIFB(3, 0xe6c30000, gic_spi(149)); /* SCIFB1 */ 114 - R8A7791_SCIFB(4, 0xe6ce0000, gic_spi(150)); /* SCIFB2 */ 115 - R8A7791_SCIFA(5, 0xe6c60000, gic_spi(151)); /* SCIFA2 */ 116 - R8A7791_SCIF(6, 0xe6e60000, gic_spi(152)); /* SCIF0 */ 117 - R8A7791_SCIF(7, 0xe6e68000, gic_spi(153)); /* SCIF1 */ 118 - R8A7791_SCIF(8, 0xe6e58000, gic_spi(22)); /* SCIF2 */ 119 - R8A7791_SCIF(9, 0xe6ea8000, gic_spi(23)); /* SCIF3 */ 120 - R8A7791_SCIF(10, 0xe6ee0000, gic_spi(24)); /* SCIF4 */ 121 - R8A7791_SCIF(11, 0xe6ee8000, gic_spi(25)); /* SCIF5 */ 122 - R8A7791_SCIFA(12, 0xe6c70000, gic_spi(29)); /* SCIFA3 */ 123 - R8A7791_SCIFA(13, 0xe6c78000, gic_spi(30)); /* SCIFA4 */ 124 - R8A7791_SCIFA(14, 0xe6c80000, gic_spi(31)); /* SCIFA5 */ 125 - 126 - #define r8a7791_register_scif(index) \ 127 - platform_device_register_resndata(NULL, "sh-sci", index, \ 128 - scif##index##_resources, \ 129 - ARRAY_SIZE(scif##index##_resources), \ 130 - &scif##index##_platform_data, \ 131 - sizeof(scif##index##_platform_data)) 132 - 133 - static struct sh_timer_config cmt0_platform_data = { 134 - .channels_mask = 0x60, 135 - }; 136 - 137 - static struct resource cmt0_resources[] = { 138 - DEFINE_RES_MEM(0xffca0000, 0x1004), 139 - DEFINE_RES_IRQ(gic_spi(142)), 140 - }; 141 - 142 - #define r8a7791_register_cmt(idx) \ 143 - platform_device_register_resndata(NULL, "sh-cmt-48-gen2", \ 144 - idx, cmt##idx##_resources, \ 145 - ARRAY_SIZE(cmt##idx##_resources), \ 146 - &cmt##idx##_platform_data, \ 147 - sizeof(struct sh_timer_config)) 148 - 149 - static struct renesas_irqc_config irqc0_data = { 150 - .irq_base = irq_pin(0), /* IRQ0 -> IRQ9 */ 151 - }; 152 - 153 - static struct resource irqc0_resources[] = { 154 - DEFINE_RES_MEM(0xe61c0000, 0x200), /* IRQC Event Detector Block_0 */ 155 - DEFINE_RES_IRQ(gic_spi(0)), /* IRQ0 */ 156 - DEFINE_RES_IRQ(gic_spi(1)), /* IRQ1 */ 157 - DEFINE_RES_IRQ(gic_spi(2)), /* IRQ2 */ 158 - DEFINE_RES_IRQ(gic_spi(3)), /* IRQ3 */ 159 - DEFINE_RES_IRQ(gic_spi(12)), /* IRQ4 */ 160 - DEFINE_RES_IRQ(gic_spi(13)), /* IRQ5 */ 161 - DEFINE_RES_IRQ(gic_spi(14)), /* IRQ6 */ 162 - DEFINE_RES_IRQ(gic_spi(15)), /* IRQ7 */ 163 - DEFINE_RES_IRQ(gic_spi(16)), /* IRQ8 */ 164 - DEFINE_RES_IRQ(gic_spi(17)), /* IRQ9 */ 165 - }; 166 - 167 - #define r8a7791_register_irqc(idx) \ 168 - platform_device_register_resndata(NULL, "renesas_irqc", \ 169 - idx, irqc##idx##_resources, \ 170 - ARRAY_SIZE(irqc##idx##_resources), \ 171 - &irqc##idx##_data, \ 172 - sizeof(struct renesas_irqc_config)) 173 - 174 - static const struct resource thermal_resources[] __initconst = { 175 - DEFINE_RES_MEM(0xe61f0000, 0x14), 176 - DEFINE_RES_MEM(0xe61f0100, 0x38), 177 - DEFINE_RES_IRQ(gic_spi(69)), 178 - }; 179 - 180 - #define r8a7791_register_thermal() \ 181 - platform_device_register_simple("rcar_thermal", -1, \ 182 - thermal_resources, \ 183 - ARRAY_SIZE(thermal_resources)) 184 - 185 - void __init r8a7791_add_standard_devices(void) 186 - { 187 - r8a7791_register_scif(0); 188 - r8a7791_register_scif(1); 189 - r8a7791_register_scif(2); 190 - r8a7791_register_scif(3); 191 - r8a7791_register_scif(4); 192 - r8a7791_register_scif(5); 193 - r8a7791_register_scif(6); 194 - r8a7791_register_scif(7); 195 - r8a7791_register_scif(8); 196 - r8a7791_register_scif(9); 197 - r8a7791_register_scif(10); 198 - r8a7791_register_scif(11); 199 - r8a7791_register_scif(12); 200 - r8a7791_register_scif(13); 201 - r8a7791_register_scif(14); 202 - r8a7791_register_cmt(0); 203 - r8a7791_register_irqc(0); 204 - r8a7791_register_thermal(); 205 - } 206 - 207 - #ifdef CONFIG_USE_OF 208 26 static const char *r8a7791_boards_compat_dt[] __initdata = { 209 27 "renesas,r8a7791", 210 28 NULL, ··· 36 218 .reserve = rcar_gen2_reserve, 37 219 .dt_compat = r8a7791_boards_compat_dt, 38 220 MACHINE_END 39 - #endif /* CONFIG_USE_OF */
-4
arch/arm/mach-shmobile/setup-rcar-gen2.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 21 17 #include <linux/clk/shmobile.h>
+1 -5
arch/arm/mach-shmobile/setup-sh7372.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/kernel.h> 21 17 #include <linux/init.h> ··· 43 47 #include "sh7372.h" 44 48 45 49 static struct map_desc sh7372_io_desc[] __initdata = { 46 - /* create a 1:1 entity map for 0xe6xxxxxx 50 + /* create a 1:1 identity mapping for 0xe6xxxxxx 47 51 * used by CPGA, INTC and PFC. 48 52 */ 49 53 {
+3 -12
arch/arm/mach-shmobile/setup-sh73a0.c
··· 13 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 15 * GNU General Public License for more details. 16 - * 17 - * You should have received a copy of the GNU General Public License 18 - * along with this program; if not, write to the Free Software 19 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 20 16 */ 21 17 #include <linux/kernel.h> 22 18 #include <linux/init.h> ··· 42 46 #include "sh73a0.h" 43 47 44 48 static struct map_desc sh73a0_io_desc[] __initdata = { 45 - /* create a 1:1 entity map for 0xe6xxxxxx 49 + /* create a 1:1 identity mapping for 0xe6xxxxxx 46 50 * used by CPGA, INTC and PFC. 47 51 */ 48 52 { ··· 756 760 ARRAY_SIZE(sh73a0_late_devices)); 757 761 } 758 762 759 - void __init sh73a0_init_delay(void) 760 - { 761 - shmobile_init_delay(); 762 - } 763 - 764 763 /* do nothing for !CONFIG_SMP or !CONFIG_HAVE_TWD */ 765 764 void __init __weak sh73a0_register_twd(void) { } 766 765 767 766 void __init sh73a0_earlytimer_init(void) 768 767 { 769 - sh73a0_init_delay(); 768 + shmobile_init_delay(); 770 769 sh73a0_clock_init(); 771 770 shmobile_earlytimer_init(); 772 771 sh73a0_register_twd(); ··· 794 803 DT_MACHINE_START(SH73A0_DT, "Generic SH73A0 (Flattened Device Tree)") 795 804 .smp = smp_ops(sh73a0_smp_ops), 796 805 .map_io = sh73a0_map_io, 797 - .init_early = sh73a0_init_delay, 806 + .init_early = shmobile_init_delay, 798 807 .init_machine = sh73a0_add_standard_devices_dt, 799 808 .init_late = shmobile_init_late, 800 809 .dt_compat = sh73a0_boards_compat_dt,
-1
arch/arm/mach-shmobile/sh73a0.h
··· 71 71 #define SH73A0_PINT0_IRQ(irq) ((irq) + 700) 72 72 #define SH73A0_PINT1_IRQ(irq) ((irq) + 732) 73 73 74 - extern void sh73a0_init_delay(void); 75 74 extern void sh73a0_init_irq(void); 76 75 extern void sh73a0_init_irq_dt(void); 77 76 extern void sh73a0_map_io(void);
-5
arch/arm/mach-shmobile/sleep-sh7372.S
··· 22 22 * but WITHOUT ANY WARRANTY; without even the implied warranty of 23 23 * MERCHANTABILITY or FITNESS FOR A PARTICULAR /PURPOSE. See the 24 24 * GNU General Public License for more details. 25 - * 26 - * You should have received a copy of the GNU General Public License 27 - * along with this program; if not, write to the Free Software 28 - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, 29 - * MA 02111-1307 USA 30 25 */ 31 26 32 27 #include <linux/linkage.h>
-4
arch/arm/mach-shmobile/smp-emev2.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/kernel.h> 21 17 #include <linux/init.h>
-4
arch/arm/mach-shmobile/smp-r8a7779.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/kernel.h> 21 17 #include <linux/init.h>
-4
arch/arm/mach-shmobile/smp-sh73a0.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 15 */ 20 16 #include <linux/kernel.h> 21 17 #include <linux/init.h>
-5
arch/arm/mach-shmobile/timer.c
··· 12 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 - * 20 15 */ 21 16 #include <linux/platform_device.h> 22 17 #include <linux/clocksource.h>
+1 -3
arch/arm/mach-vexpress/Kconfig
··· 16 16 select POWER_RESET 17 17 select POWER_RESET_VEXPRESS 18 18 select POWER_SUPPLY 19 + select REGULATOR if MMC_ARMMMCI 19 20 select REGULATOR_FIXED_VOLTAGE if REGULATOR 20 21 select VEXPRESS_CONFIG 21 22 select VEXPRESS_SYSCFG ··· 49 48 based on Cortex-A5 and Cortex-A9 processors. In order to 50 49 build a working kernel, you must also enable relevant core 51 50 tile support or Flattened Device Tree based support options. 52 - 53 - config ARCH_VEXPRESS_CA9X4 54 - bool "Versatile Express Cortex-A9x4 tile" 55 51 56 52 config ARCH_VEXPRESS_DCSCB 57 53 bool "Dual Cluster System Control Block (DCSCB) support"
+1 -2
arch/arm/mach-vexpress/Makefile
··· 1 1 # 2 2 # Makefile for the linux kernel. 3 3 # 4 - ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include \ 4 + ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := \ 5 5 -I$(srctree)/arch/arm/plat-versatile/include 6 6 7 7 obj-y := v2m.o 8 - obj-$(CONFIG_ARCH_VEXPRESS_CA9X4) += ct-ca9x4.o 9 8 obj-$(CONFIG_ARCH_VEXPRESS_DCSCB) += dcscb.o dcscb_setup.o 10 9 CFLAGS_dcscb.o += -march=armv7-a 11 10 CFLAGS_REMOVE_dcscb.o = -pg
-7
arch/arm/mach-vexpress/core.h
··· 1 - /* 2MB large area for motherboard's peripherals static mapping */ 2 - #define V2M_PERIPH 0xf8000000 3 - 4 - /* Tile's peripherals static mappings should start here */ 5 - #define V2T_PERIPH 0xf8200000 6 - 7 1 bool vexpress_smp_init_ops(void); 8 2 9 - extern struct smp_operations vexpress_smp_ops; 10 3 extern struct smp_operations vexpress_smp_dt_ops; 11 4 12 5 extern void vexpress_cpu_die(unsigned int cpu);
-212
arch/arm/mach-vexpress/ct-ca9x4.c
··· 1 - /* 2 - * Versatile Express Core Tile Cortex A9x4 Support 3 - */ 4 - #include <linux/init.h> 5 - #include <linux/gfp.h> 6 - #include <linux/device.h> 7 - #include <linux/dma-mapping.h> 8 - #include <linux/platform_device.h> 9 - #include <linux/amba/bus.h> 10 - #include <linux/amba/clcd.h> 11 - #include <linux/platform_data/video-clcd-versatile.h> 12 - #include <linux/clkdev.h> 13 - #include <linux/vexpress.h> 14 - #include <linux/irqchip/arm-gic.h> 15 - 16 - #include <asm/hardware/arm_timer.h> 17 - #include <asm/hardware/cache-l2x0.h> 18 - #include <asm/smp_scu.h> 19 - #include <asm/smp_twd.h> 20 - 21 - #include <mach/ct-ca9x4.h> 22 - 23 - #include <asm/hardware/timer-sp.h> 24 - 25 - #include <asm/mach/map.h> 26 - #include <asm/mach/time.h> 27 - 28 - #include "core.h" 29 - 30 - #include <mach/motherboard.h> 31 - #include <mach/irqs.h> 32 - 33 - static struct map_desc ct_ca9x4_io_desc[] __initdata = { 34 - { 35 - .virtual = V2T_PERIPH, 36 - .pfn = __phys_to_pfn(CT_CA9X4_MPIC), 37 - .length = SZ_8K, 38 - .type = MT_DEVICE, 39 - }, 40 - }; 41 - 42 - static void __init ct_ca9x4_map_io(void) 43 - { 44 - iotable_init(ct_ca9x4_io_desc, ARRAY_SIZE(ct_ca9x4_io_desc)); 45 - } 46 - 47 - static void __init ca9x4_l2_init(void) 48 - { 49 - #ifdef CONFIG_CACHE_L2X0 50 - void __iomem *l2x0_base = ioremap(CT_CA9X4_L2CC, SZ_4K); 51 - 52 - if (l2x0_base) { 53 - /* set RAM latencies to 1 cycle for this core tile. */ 54 - writel(0, l2x0_base + L310_TAG_LATENCY_CTRL); 55 - writel(0, l2x0_base + L310_DATA_LATENCY_CTRL); 56 - 57 - l2x0_init(l2x0_base, 0x00400000, 0xfe0fffff); 58 - } else { 59 - pr_err("L2C: unable to map L2 cache controller\n"); 60 - } 61 - #endif 62 - } 63 - 64 - #ifdef CONFIG_HAVE_ARM_TWD 65 - static DEFINE_TWD_LOCAL_TIMER(twd_local_timer, A9_MPCORE_TWD, IRQ_LOCALTIMER); 66 - 67 - static void __init ca9x4_twd_init(void) 68 - { 69 - int err = twd_local_timer_register(&twd_local_timer); 70 - if (err) 71 - pr_err("twd_local_timer_register failed %d\n", err); 72 - } 73 - #else 74 - #define ca9x4_twd_init() do {} while(0) 75 - #endif 76 - 77 - static void __init ct_ca9x4_init_irq(void) 78 - { 79 - gic_init(0, 29, ioremap(A9_MPCORE_GIC_DIST, SZ_4K), 80 - ioremap(A9_MPCORE_GIC_CPU, SZ_256)); 81 - ca9x4_twd_init(); 82 - ca9x4_l2_init(); 83 - } 84 - 85 - static int ct_ca9x4_clcd_setup(struct clcd_fb *fb) 86 - { 87 - unsigned long framesize = 1024 * 768 * 2; 88 - 89 - fb->panel = versatile_clcd_get_panel("XVGA"); 90 - if (!fb->panel) 91 - return -EINVAL; 92 - 93 - return versatile_clcd_setup_dma(fb, framesize); 94 - } 95 - 96 - static struct clcd_board ct_ca9x4_clcd_data = { 97 - .name = "CT-CA9X4", 98 - .caps = CLCD_CAP_5551 | CLCD_CAP_565, 99 - .check = clcdfb_check, 100 - .decode = clcdfb_decode, 101 - .setup = ct_ca9x4_clcd_setup, 102 - .mmap = versatile_clcd_mmap_dma, 103 - .remove = versatile_clcd_remove_dma, 104 - }; 105 - 106 - static AMBA_AHB_DEVICE(clcd, "ct:clcd", 0, CT_CA9X4_CLCDC, IRQ_CT_CA9X4_CLCDC, &ct_ca9x4_clcd_data); 107 - static AMBA_APB_DEVICE(dmc, "ct:dmc", 0, CT_CA9X4_DMC, IRQ_CT_CA9X4_DMC, NULL); 108 - static AMBA_APB_DEVICE(smc, "ct:smc", 0, CT_CA9X4_SMC, IRQ_CT_CA9X4_SMC, NULL); 109 - static AMBA_APB_DEVICE(gpio, "ct:gpio", 0, CT_CA9X4_GPIO, IRQ_CT_CA9X4_GPIO, NULL); 110 - 111 - static struct amba_device *ct_ca9x4_amba_devs[] __initdata = { 112 - &clcd_device, 113 - &dmc_device, 114 - &smc_device, 115 - &gpio_device, 116 - }; 117 - 118 - static struct resource pmu_resources[] = { 119 - [0] = { 120 - .start = IRQ_CT_CA9X4_PMU_CPU0, 121 - .end = IRQ_CT_CA9X4_PMU_CPU0, 122 - .flags = IORESOURCE_IRQ, 123 - }, 124 - [1] = { 125 - .start = IRQ_CT_CA9X4_PMU_CPU1, 126 - .end = IRQ_CT_CA9X4_PMU_CPU1, 127 - .flags = IORESOURCE_IRQ, 128 - }, 129 - [2] = { 130 - .start = IRQ_CT_CA9X4_PMU_CPU2, 131 - .end = IRQ_CT_CA9X4_PMU_CPU2, 132 - .flags = IORESOURCE_IRQ, 133 - }, 134 - [3] = { 135 - .start = IRQ_CT_CA9X4_PMU_CPU3, 136 - .end = IRQ_CT_CA9X4_PMU_CPU3, 137 - .flags = IORESOURCE_IRQ, 138 - }, 139 - }; 140 - 141 - static struct platform_device pmu_device = { 142 - .name = "arm-pmu", 143 - .id = -1, 144 - .num_resources = ARRAY_SIZE(pmu_resources), 145 - .resource = pmu_resources, 146 - }; 147 - 148 - static struct clk_lookup osc1_lookup = { 149 - .dev_id = "ct:clcd", 150 - }; 151 - 152 - static struct platform_device osc1_device = { 153 - .name = "vexpress-osc", 154 - .id = 1, 155 - .num_resources = 1, 156 - .resource = (struct resource []) { 157 - VEXPRESS_RES_FUNC(0xf, 1), 158 - }, 159 - .dev.platform_data = &osc1_lookup, 160 - }; 161 - 162 - static void __init ct_ca9x4_init(void) 163 - { 164 - int i; 165 - 166 - for (i = 0; i < ARRAY_SIZE(ct_ca9x4_amba_devs); i++) 167 - amba_device_register(ct_ca9x4_amba_devs[i], &iomem_resource); 168 - 169 - platform_device_register(&pmu_device); 170 - vexpress_syscfg_device_register(&osc1_device); 171 - } 172 - 173 - #ifdef CONFIG_SMP 174 - static void *ct_ca9x4_scu_base __initdata; 175 - 176 - static void __init ct_ca9x4_init_cpu_map(void) 177 - { 178 - int i, ncores; 179 - 180 - ct_ca9x4_scu_base = ioremap(A9_MPCORE_SCU, SZ_128); 181 - if (WARN_ON(!ct_ca9x4_scu_base)) 182 - return; 183 - 184 - ncores = scu_get_core_count(ct_ca9x4_scu_base); 185 - 186 - if (ncores > nr_cpu_ids) { 187 - pr_warn("SMP: %u cores greater than maximum (%u), clipping\n", 188 - ncores, nr_cpu_ids); 189 - ncores = nr_cpu_ids; 190 - } 191 - 192 - for (i = 0; i < ncores; ++i) 193 - set_cpu_possible(i, true); 194 - } 195 - 196 - static void __init ct_ca9x4_smp_enable(unsigned int max_cpus) 197 - { 198 - scu_enable(ct_ca9x4_scu_base); 199 - } 200 - #endif 201 - 202 - struct ct_desc ct_ca9x4_desc __initdata = { 203 - .id = V2M_CT_ID_CA9, 204 - .name = "CA9x4", 205 - .map_io = ct_ca9x4_map_io, 206 - .init_irq = ct_ca9x4_init_irq, 207 - .init_tile = ct_ca9x4_init, 208 - #ifdef CONFIG_SMP 209 - .init_cpu_map = ct_ca9x4_init_cpu_map, 210 - .smp_enable = ct_ca9x4_smp_enable, 211 - #endif 212 - };
-47
arch/arm/mach-vexpress/include/mach/ct-ca9x4.h
··· 1 - #ifndef __MACH_CT_CA9X4_H 2 - #define __MACH_CT_CA9X4_H 3 - 4 - /* 5 - * Physical base addresses 6 - */ 7 - #define CT_CA9X4_CLCDC (0x10020000) 8 - #define CT_CA9X4_AXIRAM (0x10060000) 9 - #define CT_CA9X4_DMC (0x100e0000) 10 - #define CT_CA9X4_SMC (0x100e1000) 11 - #define CT_CA9X4_SCC (0x100e2000) 12 - #define CT_CA9X4_SP804_TIMER (0x100e4000) 13 - #define CT_CA9X4_SP805_WDT (0x100e5000) 14 - #define CT_CA9X4_TZPC (0x100e6000) 15 - #define CT_CA9X4_GPIO (0x100e8000) 16 - #define CT_CA9X4_FASTAXI (0x100e9000) 17 - #define CT_CA9X4_SLOWAXI (0x100ea000) 18 - #define CT_CA9X4_TZASC (0x100ec000) 19 - #define CT_CA9X4_CORESIGHT (0x10200000) 20 - #define CT_CA9X4_MPIC (0x1e000000) 21 - #define CT_CA9X4_SYSTIMER (0x1e004000) 22 - #define CT_CA9X4_SYSWDT (0x1e007000) 23 - #define CT_CA9X4_L2CC (0x1e00a000) 24 - 25 - #define A9_MPCORE_SCU (CT_CA9X4_MPIC + 0x0000) 26 - #define A9_MPCORE_GIC_CPU (CT_CA9X4_MPIC + 0x0100) 27 - #define A9_MPCORE_GIT (CT_CA9X4_MPIC + 0x0200) 28 - #define A9_MPCORE_TWD (CT_CA9X4_MPIC + 0x0600) 29 - #define A9_MPCORE_GIC_DIST (CT_CA9X4_MPIC + 0x1000) 30 - 31 - /* 32 - * Interrupts. Those in {} are for AMBA devices 33 - */ 34 - #define IRQ_CT_CA9X4_CLCDC { 76 } 35 - #define IRQ_CT_CA9X4_DMC { 0 } 36 - #define IRQ_CT_CA9X4_SMC { 77, 78 } 37 - #define IRQ_CT_CA9X4_TIMER0 80 38 - #define IRQ_CT_CA9X4_TIMER1 81 39 - #define IRQ_CT_CA9X4_GPIO { 82 } 40 - #define IRQ_CT_CA9X4_PMU_CPU0 92 41 - #define IRQ_CT_CA9X4_PMU_CPU1 93 42 - #define IRQ_CT_CA9X4_PMU_CPU2 94 43 - #define IRQ_CT_CA9X4_PMU_CPU3 95 44 - 45 - extern struct ct_desc ct_ca9x4_desc; 46 - 47 - #endif
-1
arch/arm/mach-vexpress/include/mach/hardware.h
··· 1 - /* empty */
-6
arch/arm/mach-vexpress/include/mach/irqs.h
··· 1 - #define IRQ_LOCALTIMER 29 2 - #define IRQ_LOCALWDOG 30 3 - 4 - #ifndef CONFIG_SPARSE_IRQ 5 - #define NR_IRQS 256 6 - #endif
-88
arch/arm/mach-vexpress/include/mach/motherboard.h
··· 1 - #ifndef __MACH_MOTHERBOARD_H 2 - #define __MACH_MOTHERBOARD_H 3 - 4 - /* 5 - * Physical addresses, offset from V2M_PA_CS0-3 6 - */ 7 - #define V2M_NOR0 (V2M_PA_CS0) 8 - #define V2M_NOR1 (V2M_PA_CS1) 9 - #define V2M_SRAM (V2M_PA_CS2) 10 - #define V2M_VIDEO_SRAM (V2M_PA_CS3 + 0x00000000) 11 - #define V2M_LAN9118 (V2M_PA_CS3 + 0x02000000) 12 - #define V2M_ISP1761 (V2M_PA_CS3 + 0x03000000) 13 - 14 - /* 15 - * Physical addresses, offset from V2M_PA_CS7 16 - */ 17 - #define V2M_SYSREGS (V2M_PA_CS7 + 0x00000000) 18 - #define V2M_SYSCTL (V2M_PA_CS7 + 0x00001000) 19 - #define V2M_SERIAL_BUS_PCI (V2M_PA_CS7 + 0x00002000) 20 - 21 - #define V2M_AACI (V2M_PA_CS7 + 0x00004000) 22 - #define V2M_MMCI (V2M_PA_CS7 + 0x00005000) 23 - #define V2M_KMI0 (V2M_PA_CS7 + 0x00006000) 24 - #define V2M_KMI1 (V2M_PA_CS7 + 0x00007000) 25 - 26 - #define V2M_UART0 (V2M_PA_CS7 + 0x00009000) 27 - #define V2M_UART1 (V2M_PA_CS7 + 0x0000a000) 28 - #define V2M_UART2 (V2M_PA_CS7 + 0x0000b000) 29 - #define V2M_UART3 (V2M_PA_CS7 + 0x0000c000) 30 - 31 - #define V2M_WDT (V2M_PA_CS7 + 0x0000f000) 32 - 33 - #define V2M_TIMER01 (V2M_PA_CS7 + 0x00011000) 34 - #define V2M_TIMER23 (V2M_PA_CS7 + 0x00012000) 35 - 36 - #define V2M_SERIAL_BUS_DVI (V2M_PA_CS7 + 0x00016000) 37 - #define V2M_RTC (V2M_PA_CS7 + 0x00017000) 38 - 39 - #define V2M_CF (V2M_PA_CS7 + 0x0001a000) 40 - #define V2M_CLCD (V2M_PA_CS7 + 0x0001f000) 41 - 42 - 43 - /* 44 - * Interrupts. Those in {} are for AMBA devices 45 - */ 46 - #define IRQ_V2M_WDT { (32 + 0) } 47 - #define IRQ_V2M_TIMER0 (32 + 2) 48 - #define IRQ_V2M_TIMER1 (32 + 2) 49 - #define IRQ_V2M_TIMER2 (32 + 3) 50 - #define IRQ_V2M_TIMER3 (32 + 3) 51 - #define IRQ_V2M_RTC { (32 + 4) } 52 - #define IRQ_V2M_UART0 { (32 + 5) } 53 - #define IRQ_V2M_UART1 { (32 + 6) } 54 - #define IRQ_V2M_UART2 { (32 + 7) } 55 - #define IRQ_V2M_UART3 { (32 + 8) } 56 - #define IRQ_V2M_MMCI { (32 + 9), (32 + 10) } 57 - #define IRQ_V2M_AACI { (32 + 11) } 58 - #define IRQ_V2M_KMI0 { (32 + 12) } 59 - #define IRQ_V2M_KMI1 { (32 + 13) } 60 - #define IRQ_V2M_CLCD { (32 + 14) } 61 - #define IRQ_V2M_LAN9118 (32 + 15) 62 - #define IRQ_V2M_ISP1761 (32 + 16) 63 - #define IRQ_V2M_PCIE (32 + 17) 64 - 65 - 66 - /* 67 - * Core tile IDs 68 - */ 69 - #define V2M_CT_ID_CA9 0x0c000191 70 - #define V2M_CT_ID_UNSUPPORTED 0xff000191 71 - #define V2M_CT_ID_MASK 0xff000fff 72 - 73 - struct ct_desc { 74 - u32 id; 75 - const char *name; 76 - void (*map_io)(void); 77 - void (*init_early)(void); 78 - void (*init_irq)(void); 79 - void (*init_tile)(void); 80 - #ifdef CONFIG_SMP 81 - void (*init_cpu_map)(void); 82 - void (*smp_enable)(unsigned int); 83 - #endif 84 - }; 85 - 86 - extern struct ct_desc *ct_desc; 87 - 88 - #endif
-42
arch/arm/mach-vexpress/platsmp.c
··· 19 19 #include <asm/smp_scu.h> 20 20 #include <asm/mach/map.h> 21 21 22 - #include <mach/motherboard.h> 23 - 24 22 #include <plat/platsmp.h> 25 23 26 24 #include "core.h" 27 - 28 - /* 29 - * Initialise the CPU possible map early - this describes the CPUs 30 - * which may be present or become present in the system. 31 - */ 32 - static void __init vexpress_smp_init_cpus(void) 33 - { 34 - ct_desc->init_cpu_map(); 35 - } 36 - 37 - static void __init vexpress_smp_prepare_cpus(unsigned int max_cpus) 38 - { 39 - /* 40 - * Initialise the present map, which describes the set of CPUs 41 - * actually populated at the present time. 42 - */ 43 - ct_desc->smp_enable(max_cpus); 44 - 45 - /* 46 - * Write the address of secondary startup into the 47 - * system-wide flags register. The boot monitor waits 48 - * until it receives a soft interrupt, and then the 49 - * secondary CPU branches to this address. 50 - */ 51 - vexpress_flags_set(virt_to_phys(versatile_secondary_startup)); 52 - } 53 - 54 - struct smp_operations __initdata vexpress_smp_ops = { 55 - .smp_init_cpus = vexpress_smp_init_cpus, 56 - .smp_prepare_cpus = vexpress_smp_prepare_cpus, 57 - .smp_secondary_init = versatile_secondary_init, 58 - .smp_boot_secondary = versatile_boot_secondary, 59 - #ifdef CONFIG_HOTPLUG_CPU 60 - .cpu_die = vexpress_cpu_die, 61 - #endif 62 - }; 63 25 64 26 bool __init vexpress_smp_init_ops(void) 65 27 { ··· 40 78 #endif 41 79 return false; 42 80 } 43 - 44 - #if defined(CONFIG_OF) 45 81 46 82 static const struct of_device_id vexpress_smp_dt_scu_match[] __initconst = { 47 83 { .compatible = "arm,cortex-a5-scu", }, ··· 72 112 .cpu_die = vexpress_cpu_die, 73 113 #endif 74 114 }; 75 - 76 - #endif
-374
arch/arm/mach-vexpress/v2m.c
··· 1 - /* 2 - * Versatile Express V2M Motherboard Support 3 - */ 4 - #include <linux/device.h> 5 - #include <linux/amba/bus.h> 6 - #include <linux/amba/mmci.h> 7 - #include <linux/io.h> 8 - #include <linux/smp.h> 9 - #include <linux/init.h> 10 - #include <linux/of_address.h> 11 - #include <linux/of_fdt.h> 12 - #include <linux/of_irq.h> 13 - #include <linux/of_platform.h> 14 - #include <linux/platform_device.h> 15 - #include <linux/ata_platform.h> 16 - #include <linux/smsc911x.h> 17 - #include <linux/spinlock.h> 18 - #include <linux/usb/isp1760.h> 19 - #include <linux/mtd/physmap.h> 20 - #include <linux/regulator/fixed.h> 21 - #include <linux/regulator/machine.h> 22 - #include <linux/vexpress.h> 23 - #include <linux/clkdev.h> 24 - 25 - #include <asm/mach-types.h> 26 - #include <asm/sizes.h> 27 1 #include <asm/mach/arch.h> 28 - #include <asm/mach/map.h> 29 - #include <asm/mach/time.h> 30 - #include <asm/hardware/arm_timer.h> 31 - #include <asm/hardware/cache-l2x0.h> 32 - #include <asm/hardware/timer-sp.h> 33 - 34 - #include <mach/ct-ca9x4.h> 35 - #include <mach/motherboard.h> 36 - 37 - #include <plat/sched_clock.h> 38 - #include <plat/platsmp.h> 39 2 40 3 #include "core.h" 41 - 42 - #define V2M_PA_CS0 0x40000000 43 - #define V2M_PA_CS1 0x44000000 44 - #define V2M_PA_CS2 0x48000000 45 - #define V2M_PA_CS3 0x4c000000 46 - #define V2M_PA_CS7 0x10000000 47 - 48 - static struct map_desc v2m_io_desc[] __initdata = { 49 - { 50 - .virtual = V2M_PERIPH, 51 - .pfn = __phys_to_pfn(V2M_PA_CS7), 52 - .length = SZ_128K, 53 - .type = MT_DEVICE, 54 - }, 55 - }; 56 - 57 - static void __init v2m_sp804_init(void __iomem *base, unsigned int irq) 58 - { 59 - if (WARN_ON(!base || irq == NO_IRQ)) 60 - return; 61 - 62 - sp804_clocksource_init(base + TIMER_2_BASE, "v2m-timer1"); 63 - sp804_clockevents_init(base + TIMER_1_BASE, irq, "v2m-timer0"); 64 - } 65 - 66 - 67 - static struct resource v2m_pcie_i2c_resource = { 68 - .start = V2M_SERIAL_BUS_PCI, 69 - .end = V2M_SERIAL_BUS_PCI + SZ_4K - 1, 70 - .flags = IORESOURCE_MEM, 71 - }; 72 - 73 - static struct platform_device v2m_pcie_i2c_device = { 74 - .name = "versatile-i2c", 75 - .id = 0, 76 - .num_resources = 1, 77 - .resource = &v2m_pcie_i2c_resource, 78 - }; 79 - 80 - static struct resource v2m_ddc_i2c_resource = { 81 - .start = V2M_SERIAL_BUS_DVI, 82 - .end = V2M_SERIAL_BUS_DVI + SZ_4K - 1, 83 - .flags = IORESOURCE_MEM, 84 - }; 85 - 86 - static struct platform_device v2m_ddc_i2c_device = { 87 - .name = "versatile-i2c", 88 - .id = 1, 89 - .num_resources = 1, 90 - .resource = &v2m_ddc_i2c_resource, 91 - }; 92 - 93 - static struct resource v2m_eth_resources[] = { 94 - { 95 - .start = V2M_LAN9118, 96 - .end = V2M_LAN9118 + SZ_64K - 1, 97 - .flags = IORESOURCE_MEM, 98 - }, { 99 - .start = IRQ_V2M_LAN9118, 100 - .end = IRQ_V2M_LAN9118, 101 - .flags = IORESOURCE_IRQ, 102 - }, 103 - }; 104 - 105 - static struct smsc911x_platform_config v2m_eth_config = { 106 - .flags = SMSC911X_USE_32BIT, 107 - .irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_HIGH, 108 - .irq_type = SMSC911X_IRQ_TYPE_PUSH_PULL, 109 - .phy_interface = PHY_INTERFACE_MODE_MII, 110 - }; 111 - 112 - static struct platform_device v2m_eth_device = { 113 - .name = "smsc911x", 114 - .id = -1, 115 - .resource = v2m_eth_resources, 116 - .num_resources = ARRAY_SIZE(v2m_eth_resources), 117 - .dev.platform_data = &v2m_eth_config, 118 - }; 119 - 120 - static struct regulator_consumer_supply v2m_eth_supplies[] = { 121 - REGULATOR_SUPPLY("vddvario", "smsc911x"), 122 - REGULATOR_SUPPLY("vdd33a", "smsc911x"), 123 - }; 124 - 125 - static struct resource v2m_usb_resources[] = { 126 - { 127 - .start = V2M_ISP1761, 128 - .end = V2M_ISP1761 + SZ_128K - 1, 129 - .flags = IORESOURCE_MEM, 130 - }, { 131 - .start = IRQ_V2M_ISP1761, 132 - .end = IRQ_V2M_ISP1761, 133 - .flags = IORESOURCE_IRQ, 134 - }, 135 - }; 136 - 137 - static struct isp1760_platform_data v2m_usb_config = { 138 - .is_isp1761 = true, 139 - .bus_width_16 = false, 140 - .port1_otg = true, 141 - .analog_oc = false, 142 - .dack_polarity_high = false, 143 - .dreq_polarity_high = false, 144 - }; 145 - 146 - static struct platform_device v2m_usb_device = { 147 - .name = "isp1760", 148 - .id = -1, 149 - .resource = v2m_usb_resources, 150 - .num_resources = ARRAY_SIZE(v2m_usb_resources), 151 - .dev.platform_data = &v2m_usb_config, 152 - }; 153 - 154 - static struct physmap_flash_data v2m_flash_data = { 155 - .width = 4, 156 - }; 157 - 158 - static struct resource v2m_flash_resources[] = { 159 - { 160 - .start = V2M_NOR0, 161 - .end = V2M_NOR0 + SZ_64M - 1, 162 - .flags = IORESOURCE_MEM, 163 - }, { 164 - .start = V2M_NOR1, 165 - .end = V2M_NOR1 + SZ_64M - 1, 166 - .flags = IORESOURCE_MEM, 167 - }, 168 - }; 169 - 170 - static struct platform_device v2m_flash_device = { 171 - .name = "physmap-flash", 172 - .id = -1, 173 - .resource = v2m_flash_resources, 174 - .num_resources = ARRAY_SIZE(v2m_flash_resources), 175 - .dev.platform_data = &v2m_flash_data, 176 - }; 177 - 178 - static struct pata_platform_info v2m_pata_data = { 179 - .ioport_shift = 2, 180 - }; 181 - 182 - static struct resource v2m_pata_resources[] = { 183 - { 184 - .start = V2M_CF, 185 - .end = V2M_CF + 0xff, 186 - .flags = IORESOURCE_MEM, 187 - }, { 188 - .start = V2M_CF + 0x100, 189 - .end = V2M_CF + SZ_4K - 1, 190 - .flags = IORESOURCE_MEM, 191 - }, 192 - }; 193 - 194 - static struct platform_device v2m_cf_device = { 195 - .name = "pata_platform", 196 - .id = -1, 197 - .resource = v2m_pata_resources, 198 - .num_resources = ARRAY_SIZE(v2m_pata_resources), 199 - .dev.platform_data = &v2m_pata_data, 200 - }; 201 - 202 - static struct mmci_platform_data v2m_mmci_data = { 203 - .ocr_mask = MMC_VDD_32_33|MMC_VDD_33_34, 204 - .status = vexpress_get_mci_cardin, 205 - .gpio_cd = -1, 206 - .gpio_wp = -1, 207 - }; 208 - 209 - static struct resource v2m_sysreg_resources[] = { 210 - { 211 - .start = V2M_SYSREGS, 212 - .end = V2M_SYSREGS + 0xfff, 213 - .flags = IORESOURCE_MEM, 214 - }, 215 - }; 216 - 217 - static struct platform_device v2m_sysreg_device = { 218 - .name = "vexpress-sysreg", 219 - .id = -1, 220 - .resource = v2m_sysreg_resources, 221 - .num_resources = ARRAY_SIZE(v2m_sysreg_resources), 222 - }; 223 - 224 - static struct platform_device v2m_muxfpga_device = { 225 - .name = "vexpress-muxfpga", 226 - .id = 0, 227 - .num_resources = 1, 228 - .resource = (struct resource []) { 229 - VEXPRESS_RES_FUNC(0, 7), 230 - } 231 - }; 232 - 233 - static struct platform_device v2m_shutdown_device = { 234 - .name = "vexpress-shutdown", 235 - .id = 0, 236 - .num_resources = 1, 237 - .resource = (struct resource []) { 238 - VEXPRESS_RES_FUNC(0, 8), 239 - } 240 - }; 241 - 242 - static struct platform_device v2m_reboot_device = { 243 - .name = "vexpress-reboot", 244 - .id = 0, 245 - .num_resources = 1, 246 - .resource = (struct resource []) { 247 - VEXPRESS_RES_FUNC(0, 9), 248 - } 249 - }; 250 - 251 - static struct platform_device v2m_dvimode_device = { 252 - .name = "vexpress-dvimode", 253 - .id = 0, 254 - .num_resources = 1, 255 - .resource = (struct resource []) { 256 - VEXPRESS_RES_FUNC(0, 11), 257 - } 258 - }; 259 - 260 - static AMBA_APB_DEVICE(aaci, "mb:aaci", 0, V2M_AACI, IRQ_V2M_AACI, NULL); 261 - static AMBA_APB_DEVICE(mmci, "mb:mmci", 0, V2M_MMCI, IRQ_V2M_MMCI, &v2m_mmci_data); 262 - static AMBA_APB_DEVICE(kmi0, "mb:kmi0", 0, V2M_KMI0, IRQ_V2M_KMI0, NULL); 263 - static AMBA_APB_DEVICE(kmi1, "mb:kmi1", 0, V2M_KMI1, IRQ_V2M_KMI1, NULL); 264 - static AMBA_APB_DEVICE(uart0, "mb:uart0", 0, V2M_UART0, IRQ_V2M_UART0, NULL); 265 - static AMBA_APB_DEVICE(uart1, "mb:uart1", 0, V2M_UART1, IRQ_V2M_UART1, NULL); 266 - static AMBA_APB_DEVICE(uart2, "mb:uart2", 0, V2M_UART2, IRQ_V2M_UART2, NULL); 267 - static AMBA_APB_DEVICE(uart3, "mb:uart3", 0, V2M_UART3, IRQ_V2M_UART3, NULL); 268 - static AMBA_APB_DEVICE(wdt, "mb:wdt", 0, V2M_WDT, IRQ_V2M_WDT, NULL); 269 - static AMBA_APB_DEVICE(rtc, "mb:rtc", 0, V2M_RTC, IRQ_V2M_RTC, NULL); 270 - 271 - static struct amba_device *v2m_amba_devs[] __initdata = { 272 - &aaci_device, 273 - &mmci_device, 274 - &kmi0_device, 275 - &kmi1_device, 276 - &uart0_device, 277 - &uart1_device, 278 - &uart2_device, 279 - &uart3_device, 280 - &wdt_device, 281 - &rtc_device, 282 - }; 283 - 284 - static void __init v2m_timer_init(void) 285 - { 286 - vexpress_clk_init(ioremap(V2M_SYSCTL, SZ_4K)); 287 - v2m_sp804_init(ioremap(V2M_TIMER01, SZ_4K), IRQ_V2M_TIMER0); 288 - } 289 - 290 - static void __init v2m_init_early(void) 291 - { 292 - if (ct_desc->init_early) 293 - ct_desc->init_early(); 294 - versatile_sched_clock_init(vexpress_get_24mhz_clock_base(), 24000000); 295 - } 296 - 297 - struct ct_desc *ct_desc; 298 - 299 - static struct ct_desc *ct_descs[] __initdata = { 300 - #ifdef CONFIG_ARCH_VEXPRESS_CA9X4 301 - &ct_ca9x4_desc, 302 - #endif 303 - }; 304 - 305 - static void __init v2m_populate_ct_desc(void) 306 - { 307 - int i; 308 - u32 current_tile_id; 309 - 310 - ct_desc = NULL; 311 - current_tile_id = vexpress_get_procid(VEXPRESS_SITE_MASTER) 312 - & V2M_CT_ID_MASK; 313 - 314 - for (i = 0; i < ARRAY_SIZE(ct_descs) && !ct_desc; ++i) 315 - if (ct_descs[i]->id == current_tile_id) 316 - ct_desc = ct_descs[i]; 317 - 318 - if (!ct_desc) 319 - panic("vexpress: this kernel does not support core tile ID 0x%08x when booting via ATAGs.\n" 320 - "You may need a device tree blob or a different kernel to boot on this board.\n", 321 - current_tile_id); 322 - } 323 - 324 - static void __init v2m_map_io(void) 325 - { 326 - iotable_init(v2m_io_desc, ARRAY_SIZE(v2m_io_desc)); 327 - vexpress_sysreg_early_init(ioremap(V2M_SYSREGS, SZ_4K)); 328 - v2m_populate_ct_desc(); 329 - ct_desc->map_io(); 330 - } 331 - 332 - static void __init v2m_init_irq(void) 333 - { 334 - ct_desc->init_irq(); 335 - } 336 - 337 - static void __init v2m_init(void) 338 - { 339 - int i; 340 - 341 - regulator_register_fixed(0, v2m_eth_supplies, 342 - ARRAY_SIZE(v2m_eth_supplies)); 343 - 344 - platform_device_register(&v2m_sysreg_device); 345 - platform_device_register(&v2m_pcie_i2c_device); 346 - platform_device_register(&v2m_ddc_i2c_device); 347 - platform_device_register(&v2m_flash_device); 348 - platform_device_register(&v2m_cf_device); 349 - platform_device_register(&v2m_eth_device); 350 - platform_device_register(&v2m_usb_device); 351 - 352 - for (i = 0; i < ARRAY_SIZE(v2m_amba_devs); i++) 353 - amba_device_register(v2m_amba_devs[i], &iomem_resource); 354 - 355 - vexpress_syscfg_device_register(&v2m_muxfpga_device); 356 - vexpress_syscfg_device_register(&v2m_shutdown_device); 357 - vexpress_syscfg_device_register(&v2m_reboot_device); 358 - vexpress_syscfg_device_register(&v2m_dvimode_device); 359 - 360 - ct_desc->init_tile(); 361 - } 362 - 363 - MACHINE_START(VEXPRESS, "ARM-Versatile Express") 364 - .atag_offset = 0x100, 365 - .smp = smp_ops(vexpress_smp_ops), 366 - .map_io = v2m_map_io, 367 - .init_early = v2m_init_early, 368 - .init_irq = v2m_init_irq, 369 - .init_time = v2m_timer_init, 370 - .init_machine = v2m_init, 371 - MACHINE_END 372 - 373 - static void __init v2m_dt_init(void) 374 - { 375 - of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL); 376 - } 377 4 378 5 static const char * const v2m_dt_match[] __initconst = { 379 6 "arm,vexpress", ··· 13 386 .l2c_aux_mask = 0xfe0fffff, 14 387 .smp = smp_ops(vexpress_smp_dt_ops), 15 388 .smp_init = smp_init_ops(vexpress_smp_init_ops), 16 - .init_machine = v2m_dt_init, 17 389 MACHINE_END
-2
arch/arm/mach-zynq/Makefile
··· 4 4 5 5 # Common support 6 6 obj-y := common.o slcr.o pm.o 7 - CFLAGS_REMOVE_hotplug.o =-march=armv6k 8 - CFLAGS_hotplug.o =-Wa,-march=armv7-a -mcpu=cortex-a9 9 7 obj-$(CONFIG_SMP) += headsmp.o platsmp.o
-1
arch/arm/mach-zynq/common.h
··· 29 29 extern u32 zynq_slcr_get_device_id(void); 30 30 31 31 #ifdef CONFIG_SMP 32 - extern void secondary_startup(void); 33 32 extern char zynq_secondary_trampoline; 34 33 extern char zynq_secondary_trampoline_jump; 35 34 extern char zynq_secondary_trampoline_end;
-14
arch/arm/mach-zynq/hotplug.c
··· 1 - /* 2 - * Copyright (C) 2012-2013 Xilinx 3 - * 4 - * based on linux/arch/arm/mach-realview/hotplug.c 5 - * 6 - * Copyright (C) 2002 ARM Ltd. 7 - * All Rights Reserved 8 - * 9 - * This program is free software; you can redistribute it and/or modify 10 - * it under the terms of the GNU General Public License version 2 as 11 - * published by the Free Software Foundation. 12 - */ 13 - #include <asm/proc-fns.h> 14 -
-21
arch/arm/plat-samsung/include/plat/map-s5p.h
··· 15 15 16 16 #define S5P_VA_CHIPID S3C_ADDR(0x02000000) 17 17 #define S5P_VA_CMU S3C_ADDR(0x02100000) 18 - #define S5P_VA_GPIO S3C_ADDR(0x02200000) 19 - #define S5P_VA_GPIO1 S5P_VA_GPIO 20 - #define S5P_VA_GPIO2 S3C_ADDR(0x02240000) 21 - #define S5P_VA_GPIO3 S3C_ADDR(0x02280000) 22 18 23 - #define S5P_VA_SYSRAM S3C_ADDR(0x02400000) 24 - #define S5P_VA_SYSRAM_NS S3C_ADDR(0x02410000) 25 19 #define S5P_VA_DMC0 S3C_ADDR(0x02440000) 26 20 #define S5P_VA_DMC1 S3C_ADDR(0x02480000) 27 21 #define S5P_VA_SROMC S3C_ADDR(0x024C0000) 28 - 29 - #define S5P_VA_SYSTIMER S3C_ADDR(0x02500000) 30 - #define S5P_VA_L2CC S3C_ADDR(0x02600000) 31 - 32 - #define S5P_VA_COMBINER_BASE S3C_ADDR(0x02700000) 33 - #define S5P_VA_COMBINER(x) (S5P_VA_COMBINER_BASE + ((x) >> 2) * 0x10) 34 22 35 23 #define S5P_VA_COREPERI_BASE S3C_ADDR(0x02800000) 36 24 #define S5P_VA_COREPERI(x) (S5P_VA_COREPERI_BASE + (x)) 37 25 #define S5P_VA_SCU S5P_VA_COREPERI(0x0) 38 26 #define S5P_VA_TWD S5P_VA_COREPERI(0x600) 39 27 40 - #define S5P_VA_GIC_CPU S3C_ADDR(0x02810000) 41 - #define S5P_VA_GIC_DIST S3C_ADDR(0x02820000) 42 - 43 28 #define VA_VIC(x) (S3C_VA_IRQ + ((x) * 0x10000)) 44 29 #define VA_VIC0 VA_VIC(0) 45 30 #define VA_VIC1 VA_VIC(1) 46 31 #define VA_VIC2 VA_VIC(2) 47 32 #define VA_VIC3 VA_VIC(3) 48 - 49 - #define S5P_VA_UART(x) (S3C_VA_UART + ((x) * S3C_UART_OFFSET)) 50 - #define S5P_VA_UART0 S5P_VA_UART(0) 51 - #define S5P_VA_UART1 S5P_VA_UART(1) 52 - #define S5P_VA_UART2 S5P_VA_UART(2) 53 - #define S5P_VA_UART3 S5P_VA_UART(3) 54 33 55 34 #ifndef S3C_UART_OFFSET 56 35 #define S3C_UART_OFFSET (0x400)
+1 -1
arch/arm/plat-versatile/Kconfig
··· 4 4 bool 5 5 6 6 config PLAT_VERSATILE_SCHED_CLOCK 7 - def_bool y 7 + bool 8 8 9 9 endif
+8 -2
arch/arm64/Makefile
··· 70 70 %.dtb: scripts 71 71 $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@ 72 72 73 - dtbs: scripts 74 - $(Q)$(MAKE) $(build)=$(boot)/dts dtbs 73 + PHONY += dtbs dtbs_install 74 + 75 + dtbs: prepare scripts 76 + $(Q)$(MAKE) $(build)=$(boot)/dts 77 + 78 + dtbs_install: 79 + $(Q)$(MAKE) $(dtbinst)=$(boot)/dts 75 80 76 81 PHONY += vdso_install 77 82 vdso_install: ··· 90 85 echo '* Image.gz - Compressed kernel image (arch/$(ARCH)/boot/Image.gz)' 91 86 echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)' 92 87 echo '* dtbs - Build device tree blobs for enabled boards' 88 + echo ' dtbs_install - Install dtbs to $(INSTALL_DTBS_PATH)' 93 89 echo ' install - Install uncompressed kernel' 94 90 echo ' zinstall - Install compressed kernel' 95 91 echo ' Install using (your) ~/bin/installkernel or'
+6 -9
arch/arm64/boot/dts/Makefile
··· 1 - dtb-$(CONFIG_ARCH_THUNDER) += thunder-88xx.dtb 2 - dtb-$(CONFIG_ARCH_VEXPRESS) += rtsm_ve-aemv8a.dtb foundation-v8.dtb 3 - dtb-$(CONFIG_ARCH_XGENE) += apm-mustang.dtb 1 + dts-dirs += apm 2 + dts-dirs += arm 3 + dts-dirs += cavium 4 4 5 - targets += dtbs 6 - targets += $(dtb-y) 7 - 8 - dtbs: $(addprefix $(obj)/, $(dtb-y)) 9 - 10 - clean-files := *.dtb 5 + always := $(dtb-y) 6 + subdir-y := $(dts-dirs) 7 + clean-files := *.dtb
arch/arm64/boot/dts/apm-mustang.dts arch/arm64/boot/dts/apm/apm-mustang.dts
arch/arm64/boot/dts/apm-storm.dtsi arch/arm64/boot/dts/apm/apm-storm.dtsi
+5
arch/arm64/boot/dts/apm/Makefile
··· 1 + dtb-$(CONFIG_ARCH_XGENE) += apm-mustang.dtb 2 + 3 + always := $(dtb-y) 4 + subdir-y := $(dts-dirs) 5 + clean-files := *.dtb
+6
arch/arm64/boot/dts/arm/Makefile
··· 1 + dtb-$(CONFIG_ARCH_VEXPRESS) += foundation-v8.dtb 2 + dtb-$(CONFIG_ARCH_VEXPRESS) += rtsm_ve-aemv8a.dtb 3 + 4 + always := $(dtb-y) 5 + subdir-y := $(dts-dirs) 6 + clean-files := *.dtb
+5
arch/arm64/boot/dts/cavium/Makefile
··· 1 + dtb-$(CONFIG_ARCH_THUNDER) += thunder-88xx.dtb 2 + 3 + always := $(dtb-y) 4 + subdir-y := $(dts-dirs) 5 + clean-files := *.dtb
arch/arm64/boot/dts/foundation-v8.dts arch/arm64/boot/dts/arm/foundation-v8.dts
arch/arm64/boot/dts/rtsm_ve-aemv8a.dts arch/arm64/boot/dts/arm/rtsm_ve-aemv8a.dts
arch/arm64/boot/dts/rtsm_ve-motherboard.dtsi arch/arm64/boot/dts/arm/rtsm_ve-motherboard.dtsi
arch/arm64/boot/dts/thunder-88xx.dts arch/arm64/boot/dts/cavium/thunder-88xx.dts
arch/arm64/boot/dts/thunder-88xx.dtsi arch/arm64/boot/dts/cavium/thunder-88xx.dtsi
-1
drivers/clk/versatile/Makefile
··· 2 2 obj-$(CONFIG_ICST) += clk-icst.o clk-versatile.o 3 3 obj-$(CONFIG_INTEGRATOR_IMPD1) += clk-impd1.o 4 4 obj-$(CONFIG_ARCH_REALVIEW) += clk-realview.o 5 - obj-$(CONFIG_ARCH_VEXPRESS) += clk-vexpress.o 6 5 obj-$(CONFIG_CLK_SP810) += clk-sp810.o 7 6 obj-$(CONFIG_CLK_VEXPRESS_OSC) += clk-vexpress-osc.o
-7
drivers/clk/versatile/clk-vexpress-osc.c
··· 70 70 71 71 static int vexpress_osc_probe(struct platform_device *pdev) 72 72 { 73 - struct clk_lookup *cl = pdev->dev.platform_data; /* Non-DT lookup */ 74 73 struct clk_init_data init; 75 74 struct vexpress_osc *osc; 76 75 struct clk *clk; ··· 104 105 return PTR_ERR(clk); 105 106 106 107 of_clk_add_provider(pdev->dev.of_node, of_clk_src_simple_get, clk); 107 - 108 - /* Only happens for non-DT cases */ 109 - if (cl) { 110 - cl->clk = clk; 111 - clkdev_add(cl); 112 - } 113 108 114 109 dev_dbg(&pdev->dev, "Registered clock '%s'\n", init.name); 115 110
-86
drivers/clk/versatile/clk-vexpress.c
··· 1 - /* 2 - * This program is free software; you can redistribute it and/or modify 3 - * it under the terms of the GNU General Public License version 2 as 4 - * published by the Free Software Foundation. 5 - * 6 - * This program is distributed in the hope that it will be useful, 7 - * but WITHOUT ANY WARRANTY; without even the implied warranty of 8 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 9 - * GNU General Public License for more details. 10 - * 11 - * Copyright (C) 2012 ARM Limited 12 - */ 13 - 14 - #include <linux/amba/sp810.h> 15 - #include <linux/clkdev.h> 16 - #include <linux/clk-provider.h> 17 - #include <linux/err.h> 18 - #include <linux/vexpress.h> 19 - 20 - static struct clk *vexpress_sp810_timerclken[4]; 21 - static DEFINE_SPINLOCK(vexpress_sp810_lock); 22 - 23 - static void __init vexpress_sp810_init(void __iomem *base) 24 - { 25 - int i; 26 - 27 - if (WARN_ON(!base)) 28 - return; 29 - 30 - for (i = 0; i < ARRAY_SIZE(vexpress_sp810_timerclken); i++) { 31 - char name[12]; 32 - const char *parents[] = { 33 - "v2m:refclk32khz", /* REFCLK */ 34 - "v2m:refclk1mhz" /* TIMCLK */ 35 - }; 36 - 37 - snprintf(name, ARRAY_SIZE(name), "timerclken%d", i); 38 - 39 - vexpress_sp810_timerclken[i] = clk_register_mux(NULL, name, 40 - parents, 2, CLK_SET_RATE_NO_REPARENT, 41 - base + SCCTRL, SCCTRL_TIMERENnSEL_SHIFT(i), 1, 42 - 0, &vexpress_sp810_lock); 43 - 44 - if (WARN_ON(IS_ERR(vexpress_sp810_timerclken[i]))) 45 - break; 46 - } 47 - } 48 - 49 - 50 - static const char * const vexpress_clk_24mhz_periphs[] __initconst = { 51 - "mb:uart0", "mb:uart1", "mb:uart2", "mb:uart3", 52 - "mb:mmci", "mb:kmi0", "mb:kmi1" 53 - }; 54 - 55 - void __init vexpress_clk_init(void __iomem *sp810_base) 56 - { 57 - struct clk *clk; 58 - int i; 59 - 60 - clk = clk_register_fixed_rate(NULL, "dummy_apb_pclk", NULL, 61 - CLK_IS_ROOT, 0); 62 - WARN_ON(clk_register_clkdev(clk, "apb_pclk", NULL)); 63 - 64 - clk = clk_register_fixed_rate(NULL, "v2m:clk_24mhz", NULL, 65 - CLK_IS_ROOT, 24000000); 66 - for (i = 0; i < ARRAY_SIZE(vexpress_clk_24mhz_periphs); i++) 67 - WARN_ON(clk_register_clkdev(clk, NULL, 68 - vexpress_clk_24mhz_periphs[i])); 69 - 70 - clk = clk_register_fixed_rate(NULL, "v2m:refclk32khz", NULL, 71 - CLK_IS_ROOT, 32768); 72 - WARN_ON(clk_register_clkdev(clk, NULL, "v2m:wdt")); 73 - 74 - clk = clk_register_fixed_rate(NULL, "v2m:refclk1mhz", NULL, 75 - CLK_IS_ROOT, 1000000); 76 - 77 - vexpress_sp810_init(sp810_base); 78 - 79 - for (i = 0; i < ARRAY_SIZE(vexpress_sp810_timerclken); i++) 80 - WARN_ON(clk_set_parent(vexpress_sp810_timerclken[i], clk)); 81 - 82 - WARN_ON(clk_register_clkdev(vexpress_sp810_timerclken[0], 83 - "v2m-timer0", "sp804")); 84 - WARN_ON(clk_register_clkdev(vexpress_sp810_timerclken[1], 85 - "v2m-timer1", "sp804")); 86 - }
+12 -46
drivers/misc/vexpress-syscfg.c
··· 145 145 static struct regmap *vexpress_syscfg_regmap_init(struct device *dev, 146 146 void *context) 147 147 { 148 - struct platform_device *pdev = to_platform_device(dev); 148 + int err; 149 149 struct vexpress_syscfg *syscfg = context; 150 150 struct vexpress_syscfg_func *func; 151 151 struct property *prop; ··· 155 155 u32 site, position, dcc; 156 156 int i; 157 157 158 - if (dev->of_node) { 159 - int err = vexpress_config_get_topo(dev->of_node, &site, 158 + err = vexpress_config_get_topo(dev->of_node, &site, 160 159 &position, &dcc); 160 + if (err) 161 + return ERR_PTR(err); 161 162 162 - if (err) 163 - return ERR_PTR(err); 163 + prop = of_find_property(dev->of_node, 164 + "arm,vexpress-sysreg,func", NULL); 165 + if (!prop) 166 + return ERR_PTR(-EINVAL); 164 167 165 - prop = of_find_property(dev->of_node, 166 - "arm,vexpress-sysreg,func", NULL); 167 - if (!prop) 168 - return ERR_PTR(-EINVAL); 169 - 170 - num = prop->length / sizeof(u32) / 2; 171 - val = prop->value; 172 - } else { 173 - if (pdev->num_resources != 1 || 174 - pdev->resource[0].flags != IORESOURCE_BUS) 175 - return ERR_PTR(-EFAULT); 176 - 177 - site = pdev->resource[0].start; 178 - if (site == VEXPRESS_SITE_MASTER) 179 - site = vexpress_config_get_master(); 180 - position = 0; 181 - dcc = 0; 182 - num = 1; 183 - } 168 + num = prop->length / sizeof(u32) / 2; 169 + val = prop->value; 184 170 185 171 /* 186 172 * "arm,vexpress-energy" function used to be described ··· 193 207 for (i = 0; i < num; i++) { 194 208 u32 function, device; 195 209 196 - if (dev->of_node) { 197 - function = be32_to_cpup(val++); 198 - device = be32_to_cpup(val++); 199 - } else { 200 - function = pdev->resource[0].end; 201 - device = pdev->id; 202 - } 210 + function = be32_to_cpup(val++); 211 + device = be32_to_cpup(val++); 203 212 204 213 dev_dbg(dev, "func %p: %u/%u/%u/%u/%u\n", 205 214 func, site, position, dcc, ··· 246 265 }; 247 266 248 267 249 - /* Non-DT hack, to be gone... */ 250 - static struct device *vexpress_syscfg_bridge; 251 - 252 - int vexpress_syscfg_device_register(struct platform_device *pdev) 253 - { 254 - pdev->dev.parent = vexpress_syscfg_bridge; 255 - 256 - return platform_device_register(pdev); 257 - } 258 - 259 - 260 268 static int vexpress_syscfg_probe(struct platform_device *pdev) 261 269 { 262 270 struct vexpress_syscfg *syscfg; ··· 272 302 &vexpress_syscfg_bridge_ops, syscfg); 273 303 if (IS_ERR(bridge)) 274 304 return PTR_ERR(bridge); 275 - 276 - /* Non-DT case */ 277 - if (!pdev->dev.of_node) 278 - vexpress_syscfg_bridge = bridge; 279 305 280 306 return 0; 281 307 }
-19
include/linux/vexpress.h
··· 15 15 #define _LINUX_VEXPRESS_H 16 16 17 17 #include <linux/device.h> 18 - #include <linux/platform_device.h> 19 - #include <linux/reboot.h> 20 18 #include <linux/regmap.h> 21 19 22 20 #define VEXPRESS_SITE_MB 0 23 21 #define VEXPRESS_SITE_DB1 1 24 22 #define VEXPRESS_SITE_DB2 2 25 23 #define VEXPRESS_SITE_MASTER 0xf 26 - 27 - #define VEXPRESS_RES_FUNC(_site, _func) \ 28 - { \ 29 - .start = (_site), \ 30 - .end = (_func), \ 31 - .flags = IORESOURCE_BUS, \ 32 - } 33 24 34 25 /* Config infrastructure */ 35 26 ··· 49 58 50 59 /* Platform control */ 51 60 52 - unsigned int vexpress_get_mci_cardin(struct device *dev); 53 - u32 vexpress_get_procid(int site); 54 - void *vexpress_get_24mhz_clock_base(void); 55 61 void vexpress_flags_set(u32 data); 56 - 57 - void vexpress_sysreg_early_init(void __iomem *base); 58 - int vexpress_syscfg_device_register(struct platform_device *pdev); 59 - 60 - /* Clocks */ 61 - 62 - void vexpress_clk_init(void __iomem *sp810_base); 63 62 64 63 #endif
+6
scripts/Kbuild.include
··· 179 179 # $(Q)$(MAKE) $(modbuiltin)=dir 180 180 modbuiltin := -f $(srctree)/scripts/Makefile.modbuiltin obj 181 181 182 + ### 183 + # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.dtbinst obj= 184 + # Usage: 185 + # $(Q)$(MAKE) $(dtbinst)=dir 186 + dtbinst := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.dtbinst obj 187 + 182 188 # Prefix -I with $(srctree) if it is not an absolute path. 183 189 # skip if -I has no parameter 184 190 addtree = $(if $(patsubst -I%,%,$(1)), \
+51
scripts/Makefile.dtbinst
··· 1 + # ========================================================================== 2 + # Installing dtb files 3 + # 4 + # Installs all dtb files listed in $(dtb-y) either in the 5 + # INSTALL_DTBS_PATH directory or the default location: 6 + # 7 + # $INSTALL_PATH/dtbs/$KERNELRELEASE 8 + # 9 + # Traverse through subdirectories listed in $(dts-dirs). 10 + # ========================================================================== 11 + 12 + src := $(obj) 13 + 14 + PHONY := __dtbs_install 15 + __dtbs_install: 16 + 17 + export dtbinst-root ?= $(obj) 18 + 19 + include include/config/auto.conf 20 + include scripts/Kbuild.include 21 + include $(srctree)/$(obj)/Makefile 22 + 23 + PHONY += __dtbs_install_prep 24 + __dtbs_install_prep: 25 + ifeq ("$(dtbinst-root)", "$(obj)") 26 + $(Q)if [ -d $(INSTALL_DTBS_PATH).old ]; then rm -rf $(INSTALL_DTBS_PATH).old; fi 27 + $(Q)if [ -d $(INSTALL_DTBS_PATH) ]; then mv $(INSTALL_DTBS_PATH) $(INSTALL_DTBS_PATH).old; fi 28 + $(Q)mkdir -p $(INSTALL_DTBS_PATH) 29 + endif 30 + 31 + dtbinst-files := $(dtb-y) 32 + dtbinst-dirs := $(dts-dirs) 33 + 34 + # Helper targets for Installing DTBs into the boot directory 35 + quiet_cmd_dtb_install = INSTALL $< 36 + cmd_dtb_install = mkdir -p $(2); cp $< $(2) 37 + 38 + install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj)) 39 + 40 + $(dtbinst-files) $(dtbinst-dirs): | __dtbs_install_prep 41 + 42 + $(dtbinst-files): %.dtb: $(obj)/%.dtb 43 + $(call cmd,dtb_install,$(install-dir)) 44 + 45 + $(dtbinst-dirs): 46 + $(Q)$(MAKE) $(dtbinst)=$(obj)/$@ 47 + 48 + PHONY += $(dtbinst-files) $(dtbinst-dirs) 49 + __dtbs_install: $(dtbinst-files) $(dtbinst-dirs) 50 + 51 + .PHONY: $(PHONY)
-12
scripts/Makefile.lib
··· 283 283 284 284 dtc-tmp = $(subst $(comma),_,$(dot-target).dts.tmp) 285 285 286 - # Helper targets for Installing DTBs into the boot directory 287 - quiet_cmd_dtb_install = INSTALL $< 288 - cmd_dtb_install = cp $< $(2) 289 - 290 - _dtbinst_pre_: 291 - $(Q)if [ -d $(INSTALL_DTBS_PATH).old ]; then rm -rf $(INSTALL_DTBS_PATH).old; fi 292 - $(Q)if [ -d $(INSTALL_DTBS_PATH) ]; then mv $(INSTALL_DTBS_PATH) $(INSTALL_DTBS_PATH).old; fi 293 - $(Q)mkdir -p $(INSTALL_DTBS_PATH) 294 - 295 - %.dtb_dtbinst_: $(obj)/%.dtb _dtbinst_pre_ 296 - $(call cmd,dtb_install,$(INSTALL_DTBS_PATH)) 297 - 298 286 # Bzip2 299 287 # --------------------------------------------------------------------------- 300 288