Merge tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc

Pull ARM SoC late updates from Olof Johansson:
"This is some material that we picked up into our tree late, or that
had more complex dependencies on more than one topic branch that makes
sense to keep separately.

- TI support for secure accelerators and hwrng on OMAP4/5

- TI camera changes for dra7 and am437x and SGX improvement due to
better reset control support on am335x, am437x and dra7

- Davinci moves to proper clocksource on DM365, and regulator/audio
improvements for DM365 and DM644x eval boards"

* tag 'armsoc-late' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc: (32 commits)
ARM: dts: omap4-droid4: Enable hdq for droid4 ds250x 1-wire battery nvmem
ARM: dts: motorola-cpcap-mapphone: Configure calibration interrupt
ARM: dts: Configure interconnect target module for am437x sgx
ARM: dts: Configure sgx for dra7
ARM: dts: Configure rstctrl reset for am335x SGX
ARM: dts: dra7: Add ti-sysc node for VPE
ARM: dts: dra7: add vpe clkctrl node
ARM: dts: am43x-epos-evm: Add VPFE and OV2659 entries
ARM: dts: am437x-sk-evm: Add VPFE and OV2659 entries
ARM: dts: am43xx: add support for clkout1 clock
arm: dts: dra76-evm: Add CAL and OV5640 nodes
arm: dtsi: dra76x: Add CAL dtsi node
arm: dts: dra72-evm-common: Add entries for the CSI2 cameras
ARM: dts: DRA72: Add CAL dtsi node
ARM: dts: dra7-l4: Add ti-sysc node for CAM
ARM: OMAP: DRA7xx: Make CAM clock domain SWSUP only
ARM: dts: dra7: add cam clkctrl node
ARM: OMAP2+: Drop legacy platform data for omap4 des
ARM: OMAP2+: Drop legacy platform data for omap4 sham
ARM: OMAP2+: Drop legacy platform data for omap4 aes
...

+696 -674
+25
arch/arm/boot/dts/am33xx.dtsi
··· 496 496 dma-names = "tx", "rx"; 497 497 }; 498 498 }; 499 + 500 + target-module@56000000 { 501 + compatible = "ti,sysc-omap4", "ti,sysc"; 502 + reg = <0x5600fe00 0x4>, 503 + <0x5600fe10 0x4>; 504 + reg-names = "rev", "sysc"; 505 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 506 + <SYSC_IDLE_NO>, 507 + <SYSC_IDLE_SMART>; 508 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 509 + <SYSC_IDLE_NO>, 510 + <SYSC_IDLE_SMART>; 511 + clocks = <&gfx_l3_clkctrl AM3_GFX_L3_GFX_CLKCTRL 0>; 512 + clock-names = "fck"; 513 + resets = <&prm_gfx 0>; 514 + reset-names = "rstctrl"; 515 + #address-cells = <1>; 516 + #size-cells = <1>; 517 + ranges = <0 0x56000000 0x1000000>; 518 + 519 + /* 520 + * Closed source PowerVR driver, no child device 521 + * binding or driver in mainline 522 + */ 523 + }; 499 524 }; 500 525 }; 501 526
+20
arch/arm/boot/dts/am4372.dtsi
··· 445 445 pool; 446 446 }; 447 447 }; 448 + 449 + target-module@56000000 { 450 + compatible = "ti,sysc-omap4", "ti,sysc"; 451 + reg = <0x5600fe00 0x4>, 452 + <0x5600fe10 0x4>; 453 + reg-names = "rev", "sysc"; 454 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 455 + <SYSC_IDLE_NO>, 456 + <SYSC_IDLE_SMART>; 457 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 458 + <SYSC_IDLE_NO>, 459 + <SYSC_IDLE_SMART>; 460 + clocks = <&gfx_l3_clkctrl AM4_GFX_L3_GFX_CLKCTRL 0>; 461 + clock-names = "fck"; 462 + resets = <&prm_gfx 0>; 463 + reset-names = "rstctrl"; 464 + #address-cells = <1>; 465 + #size-cells = <1>; 466 + ranges = <0 0x56000000 0x1000000>; 467 + }; 448 468 }; 449 469 }; 450 470
+26 -1
arch/arm/boot/dts/am437x-sk-evm.dts
··· 272 272 >; 273 273 }; 274 274 275 + clkout1_pin: pinmux_clkout1_pin { 276 + pinctrl-single,pins = < 277 + 0x270 (PIN_OUTPUT_PULLDOWN | MUX_MODE3) /* XDMA_EVENT_INTR0/CLKOUT1 */ 278 + >; 279 + }; 280 + 275 281 cpsw_default: cpsw_default { 276 282 pinctrl-single,pins = < 277 283 /* Slave 1 */ ··· 599 593 pinctrl-0 = <&i2c1_pins>; 600 594 clock-frequency = <400000>; 601 595 596 + ov2659@30 { 597 + compatible = "ovti,ov2659"; 598 + reg = <0x30>; 599 + pinctrl-names = "default"; 600 + pinctrl-0 = <&clkout1_pin>; 601 + 602 + clocks = <&clkout1_mux_ck>; 603 + clock-names = "xvclk"; 604 + assigned-clocks = <&clkout1_mux_ck>; 605 + assigned-clock-parents = <&clkout1_osc_div_ck>; 606 + 607 + port { 608 + ov2659_1: endpoint { 609 + remote-endpoint = <&vpfe0_ep>; 610 + link-frequencies = /bits/ 64 <70000000>; 611 + }; 612 + }; 613 + }; 614 + 602 615 edt-ft5306@38 { 603 616 status = "okay"; 604 617 compatible = "edt,edt-ft5306", "edt,edt-ft5x06"; ··· 902 877 /* Camera port */ 903 878 port { 904 879 vpfe0_ep: endpoint { 905 - /* remote-endpoint = <&sensor>; add once we have it */ 880 + remote-endpoint = <&ov2659_1>; 906 881 ti,am437x-vpfe-interface = <0>; 907 882 bus-width = <8>; 908 883 hsync-active = <0>;
+22 -1
arch/arm/boot/dts/am43x-epos-evm.dts
··· 145 145 system-clock-frequency = <12000000>; 146 146 }; 147 147 }; 148 + 149 + audio_mstrclk: clock { 150 + compatible = "fixed-clock"; 151 + #clock-cells = <0>; 152 + clock-frequency = <12000000>; 153 + }; 148 154 }; 149 155 150 156 &am43xx_pinmux { ··· 702 696 IOVDD-supply = <&dcdc4>; /* V3_3D -> DCDC4 */ 703 697 DVDD-supply = <&ldo1>; /* V1_8AUD -> V1_8D -> LDO1 */ 704 698 }; 699 + 700 + ov2659@30 { 701 + compatible = "ovti,ov2659"; 702 + reg = <0x30>; 703 + 704 + clocks = <&audio_mstrclk>; 705 + clock-names = "xvclk"; 706 + 707 + port { 708 + ov2659_1: endpoint { 709 + remote-endpoint = <&vpfe1_ep>; 710 + link-frequencies = /bits/ 64 <70000000>; 711 + }; 712 + }; 713 + }; 705 714 }; 706 715 707 716 &i2c2 { ··· 985 964 986 965 port { 987 966 vpfe1_ep: endpoint { 988 - /* remote-endpoint = <&sensor>; add once we have it */ 967 + remote-endpoint = <&ov2659_1>; 989 968 ti,am437x-vpfe-interface = <0>; 990 969 bus-width = <8>; 991 970 hsync-active = <0>;
+54
arch/arm/boot/dts/am43xx-clocks.dtsi
··· 704 704 ti,bit-shift = <8>; 705 705 reg = <0x2a48>; 706 706 }; 707 + 708 + clkout1_osc_div_ck: clkout1-osc-div-ck { 709 + #clock-cells = <0>; 710 + compatible = "ti,divider-clock"; 711 + clocks = <&sys_clkin_ck>; 712 + ti,bit-shift = <20>; 713 + ti,max-div = <4>; 714 + reg = <0x4100>; 715 + }; 716 + 717 + clkout1_src2_mux_ck: clkout1-src2-mux-ck { 718 + #clock-cells = <0>; 719 + compatible = "ti,mux-clock"; 720 + clocks = <&clk_rc32k_ck>, <&sysclk_div>, <&dpll_ddr_m2_ck>, 721 + <&dpll_per_m2_ck>, <&dpll_disp_m2_ck>, 722 + <&dpll_mpu_m2_ck>; 723 + reg = <0x4100>; 724 + }; 725 + 726 + clkout1_src2_pre_div_ck: clkout1-src2-pre-div-ck { 727 + #clock-cells = <0>; 728 + compatible = "ti,divider-clock"; 729 + clocks = <&clkout1_src2_mux_ck>; 730 + ti,bit-shift = <4>; 731 + ti,max-div = <8>; 732 + reg = <0x4100>; 733 + }; 734 + 735 + clkout1_src2_post_div_ck: clkout1-src2-post-div-ck { 736 + #clock-cells = <0>; 737 + compatible = "ti,divider-clock"; 738 + clocks = <&clkout1_src2_pre_div_ck>; 739 + ti,bit-shift = <8>; 740 + ti,max-div = <32>; 741 + ti,index-power-of-two; 742 + reg = <0x4100>; 743 + }; 744 + 745 + clkout1_mux_ck: clkout1-mux-ck { 746 + #clock-cells = <0>; 747 + compatible = "ti,mux-clock"; 748 + clocks = <&clkout1_osc_div_ck>, <&clk_rc32k_ck>, 749 + <&clkout1_src2_post_div_ck>, <&dpll_extdev_m2_ck>; 750 + ti,bit-shift = <16>; 751 + reg = <0x4100>; 752 + }; 753 + 754 + clkout1_ck: clkout1-ck { 755 + #clock-cells = <0>; 756 + compatible = "ti,gate-clock"; 757 + clocks = <&clkout1_mux_ck>; 758 + ti,bit-shift = <23>; 759 + reg = <0x4100>; 760 + }; 707 761 }; 708 762 709 763 &prcm {
+62 -9
arch/arm/boot/dts/dra7-l4.dtsi
··· 4176 4176 }; 4177 4177 4178 4178 target-module@170000 { /* 0x48970000, ap 21 0a.0 */ 4179 - compatible = "ti,sysc"; 4180 - status = "disabled"; 4179 + compatible = "ti,sysc-omap4", "ti,sysc"; 4180 + reg = <0x170010 0x4>; 4181 + reg-names = "sysc"; 4182 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 4183 + <SYSC_IDLE_NO>, 4184 + <SYSC_IDLE_SMART>; 4185 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 4186 + <SYSC_IDLE_NO>, 4187 + <SYSC_IDLE_SMART>; 4188 + clocks = <&cam_clkctrl DRA7_CAM_VIP1_CLKCTRL 0>; 4189 + clock-names = "fck"; 4181 4190 #address-cells = <1>; 4182 4191 #size-cells = <1>; 4183 4192 ranges = <0x0 0x170000 0x10000>; 4193 + status = "disabled"; 4184 4194 }; 4185 4195 4186 4196 target-module@190000 { /* 0x48990000, ap 23 2e.0 */ 4187 - compatible = "ti,sysc"; 4188 - status = "disabled"; 4197 + compatible = "ti,sysc-omap4", "ti,sysc"; 4198 + reg = <0x190010 0x4>; 4199 + reg-names = "sysc"; 4200 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 4201 + <SYSC_IDLE_NO>, 4202 + <SYSC_IDLE_SMART>; 4203 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 4204 + <SYSC_IDLE_NO>, 4205 + <SYSC_IDLE_SMART>; 4206 + clocks = <&cam_clkctrl DRA7_CAM_VIP2_CLKCTRL 0>; 4207 + clock-names = "fck"; 4189 4208 #address-cells = <1>; 4190 4209 #size-cells = <1>; 4191 4210 ranges = <0x0 0x190000 0x10000>; 4211 + status = "disabled"; 4192 4212 }; 4193 4213 4194 4214 target-module@1b0000 { /* 0x489b0000, ap 25 34.0 */ 4195 - compatible = "ti,sysc"; 4196 - status = "disabled"; 4215 + compatible = "ti,sysc-omap4", "ti,sysc"; 4216 + reg = <0x1b0000 0x4>, 4217 + <0x1b0010 0x4>; 4218 + reg-names = "rev", "sysc"; 4219 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 4220 + <SYSC_IDLE_NO>, 4221 + <SYSC_IDLE_SMART>; 4222 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 4223 + <SYSC_IDLE_NO>, 4224 + <SYSC_IDLE_SMART>; 4225 + clocks = <&cam_clkctrl DRA7_CAM_VIP3_CLKCTRL 0>; 4226 + clock-names = "fck"; 4197 4227 #address-cells = <1>; 4198 4228 #size-cells = <1>; 4199 4229 ranges = <0x0 0x1b0000 0x10000>; 4230 + status = "disabled"; 4200 4231 }; 4201 4232 4202 - target-module@1d0000 { /* 0x489d0000, ap 27 30.0 */ 4203 - compatible = "ti,sysc"; 4204 - status = "disabled"; 4233 + target-module@1d0010 { /* 0x489d0000, ap 27 30.0 */ 4234 + compatible = "ti,sysc-omap4", "ti,sysc"; 4235 + reg = <0x1d0010 0x4>; 4236 + reg-names = "sysc"; 4237 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 4238 + <SYSC_IDLE_NO>, 4239 + <SYSC_IDLE_SMART>; 4240 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 4241 + <SYSC_IDLE_NO>, 4242 + <SYSC_IDLE_SMART>; 4243 + clocks = <&vpe_clkctrl DRA7_VPE_VPE_CLKCTRL 0>; 4244 + clock-names = "fck"; 4205 4245 #address-cells = <1>; 4206 4246 #size-cells = <1>; 4207 4247 ranges = <0x0 0x1d0000 0x10000>; 4248 + 4249 + vpe: vpe@0 { 4250 + compatible = "ti,dra7-vpe"; 4251 + reg = <0x0000 0x120>, 4252 + <0x0700 0x80>, 4253 + <0x5700 0x18>, 4254 + <0xd000 0x400>; 4255 + reg-names = "vpe_top", 4256 + "sc", 4257 + "csc", 4258 + "vpdma"; 4259 + interrupts = <GIC_SPI 354 IRQ_TYPE_LEVEL_HIGH>; 4260 + }; 4208 4261 }; 4209 4262 }; 4210 4263 };
+18
arch/arm/boot/dts/dra7.dtsi
··· 673 673 status = "disabled"; 674 674 }; 675 675 676 + target-module@56000000 { 677 + compatible = "ti,sysc-omap4", "ti,sysc"; 678 + reg = <0x5600fe00 0x4>, 679 + <0x5600fe10 0x4>; 680 + reg-names = "rev", "sysc"; 681 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 682 + <SYSC_IDLE_NO>, 683 + <SYSC_IDLE_SMART>; 684 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 685 + <SYSC_IDLE_NO>, 686 + <SYSC_IDLE_SMART>; 687 + clocks = <&gpu_clkctrl DRA7_GPU_CLKCTRL 0>; 688 + clock-names = "fck"; 689 + #address-cells = <1>; 690 + #size-cells = <1>; 691 + ranges = <0 0x56000000 0x2000000>; 692 + }; 693 + 676 694 crossbar_mpu: crossbar@4a002a48 { 677 695 compatible = "ti,irq-crossbar"; 678 696 reg = <0x4a002a48 0x130>;
+31
arch/arm/boot/dts/dra72-evm-common.dtsi
··· 187 187 gpio = <&gpio5 8 GPIO_ACTIVE_HIGH>; 188 188 enable-active-high; 189 189 }; 190 + 191 + clk_ov5640_fixed: clock { 192 + compatible = "fixed-clock"; 193 + #clock-cells = <0>; 194 + clock-frequency = <24000000>; 195 + }; 190 196 }; 191 197 192 198 &dra7_pmx_core { ··· 275 269 line-name = "vin6_sel_s0"; 276 270 }; 277 271 }; 272 + 273 + ov5640@3c { 274 + compatible = "ovti,ov5640"; 275 + reg = <0x3c>; 276 + 277 + clocks = <&clk_ov5640_fixed>; 278 + clock-names = "xclk"; 279 + 280 + port { 281 + csi2_cam0: endpoint { 282 + remote-endpoint = <&csi2_phy0>; 283 + clock-lanes = <0>; 284 + data-lanes = <1 2>; 285 + }; 286 + }; 287 + }; 288 + 278 289 }; 279 290 280 291 &uart1 { ··· 602 579 603 580 &pcie1_rc { 604 581 status = "okay"; 582 + }; 583 + 584 + &csi2_0 { 585 + csi2_phy0: endpoint { 586 + remote-endpoint = <&csi2_cam0>; 587 + clock-lanes = <0>; 588 + data-lanes = <1 2>; 589 + }; 605 590 };
+42
arch/arm/boot/dts/dra72x.dtsi
··· 17 17 }; 18 18 }; 19 19 20 + &l4_per2 { 21 + target-module@5b000 { /* 0x4845b000, ap 59 46.0 */ 22 + compatible = "ti,sysc-omap4", "ti,sysc"; 23 + reg = <0x5b000 0x4>, 24 + <0x5b010 0x4>; 25 + reg-names = "rev", "sysc"; 26 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 27 + <SYSC_IDLE_NO>; 28 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 29 + <SYSC_IDLE_NO>; 30 + clocks = <&cam_clkctrl DRA7_CAM_VIP2_CLKCTRL 0>; 31 + clock-names = "fck"; 32 + #address-cells = <1>; 33 + #size-cells = <1>; 34 + ranges = <0x0 0x5b000 0x1000>; 35 + 36 + cal: cal@0 { 37 + compatible = "ti,dra72-cal"; 38 + reg = <0x0000 0x400>, 39 + <0x0800 0x40>, 40 + <0x0900 0x40>; 41 + reg-names = "cal_top", 42 + "cal_rx_core0", 43 + "cal_rx_core1"; 44 + interrupts = <GIC_SPI 119 IRQ_TYPE_LEVEL_HIGH>; 45 + ti,camerrx-control = <&scm_conf 0xE94>; 46 + 47 + ports { 48 + #address-cells = <1>; 49 + #size-cells = <0>; 50 + 51 + csi2_0: port@0 { 52 + reg = <0>; 53 + }; 54 + csi2_1: port@1 { 55 + reg = <1>; 56 + }; 57 + }; 58 + }; 59 + }; 60 + }; 61 + 20 62 &dss { 21 63 reg = <0x58000000 0x80>, 22 64 <0x58004054 0x4>,
+35
arch/arm/boot/dts/dra76-evm.dts
··· 124 124 regulator-max-microvolt = <1800000>; 125 125 }; 126 126 127 + clk_ov5640_fixed: clock { 128 + compatible = "fixed-clock"; 129 + #clock-cells = <0>; 130 + clock-frequency = <24000000>; 131 + }; 132 + 127 133 hdmi0: connector { 128 134 compatible = "hdmi-connector"; 129 135 label = "hdmi"; ··· 372 366 }; 373 367 }; 374 368 369 + &i2c5 { 370 + status = "okay"; 371 + clock-frequency = <400000>; 372 + 373 + ov5640@3c { 374 + compatible = "ovti,ov5640"; 375 + reg = <0x3c>; 376 + 377 + clocks = <&clk_ov5640_fixed>; 378 + clock-names = "xclk"; 379 + 380 + port { 381 + csi2_cam0: endpoint { 382 + remote-endpoint = <&csi2_phy0>; 383 + clock-lanes = <0>; 384 + data-lanes = <1 2>; 385 + }; 386 + }; 387 + }; 388 + }; 389 + 375 390 &cpu0 { 376 391 vdd-supply = <&buck10_reg>; 377 392 }; ··· 538 511 &m_can0 { 539 512 can-transceiver { 540 513 max-bitrate = <5000000>; 514 + }; 515 + }; 516 + 517 + &csi2_0 { 518 + csi2_phy0: endpoint { 519 + remote-endpoint = <&csi2_cam0>; 520 + clock-lanes = <0>; 521 + data-lanes = <1 2>; 541 522 }; 542 523 };
+42
arch/arm/boot/dts/dra76x.dtsi
··· 41 41 42 42 }; 43 43 44 + &l4_per3 { 45 + target-module@1b0000 { /* 0x489b0000, ap 25 34.0 */ 46 + compatible = "ti,sysc-omap4", "ti,sysc"; 47 + reg = <0x1b0000 0x4>, 48 + <0x1b0010 0x4>; 49 + reg-names = "rev", "sysc"; 50 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 51 + <SYSC_IDLE_NO>; 52 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 53 + <SYSC_IDLE_NO>; 54 + clocks = <&cam_clkctrl DRA7_CAM_VIP3_CLKCTRL 0>; 55 + clock-names = "fck"; 56 + #address-cells = <1>; 57 + #size-cells = <1>; 58 + ranges = <0x0 0x1b0000 0x10000>; 59 + 60 + cal: cal@0 { 61 + compatible = "ti,dra76-cal"; 62 + reg = <0x0000 0x400>, 63 + <0x0800 0x40>, 64 + <0x0900 0x40>; 65 + reg-names = "cal_top", 66 + "cal_rx_core0", 67 + "cal_rx_core1"; 68 + interrupts = <GIC_SPI 353 IRQ_TYPE_LEVEL_HIGH>; 69 + ti,camerrx-control = <&scm_conf 0x6dc>; 70 + 71 + ports { 72 + #address-cells = <1>; 73 + #size-cells = <0>; 74 + 75 + csi2_0: port@0 { 76 + reg = <0>; 77 + }; 78 + csi2_1: port@1 { 79 + reg = <1>; 80 + }; 81 + }; 82 + }; 83 + }; 84 + }; 85 + 44 86 /* MCAN interrupts are hard-wired to irqs 67, 68 */ 45 87 &crossbar_mpu { 46 88 ti,irqs-skip = <10 67 68 133 139 140>;
+30 -2
arch/arm/boot/dts/dra7xx-clocks.dtsi
··· 1591 1591 1592 1592 rtc_cm: rtc-cm@700 { 1593 1593 compatible = "ti,omap4-cm"; 1594 - reg = <0x700 0x100>; 1594 + reg = <0x700 0x60>; 1595 1595 #address-cells = <1>; 1596 1596 #size-cells = <1>; 1597 - ranges = <0 0x700 0x100>; 1597 + ranges = <0 0x700 0x60>; 1598 1598 1599 1599 rtc_clkctrl: rtc-clkctrl@20 { 1600 1600 compatible = "ti,clkctrl"; 1601 1601 reg = <0x20 0x28>; 1602 + #clock-cells = <2>; 1603 + }; 1604 + }; 1605 + 1606 + vpe_cm: vpe-cm@760 { 1607 + compatible = "ti,omap4-cm"; 1608 + reg = <0x760 0xc>; 1609 + #address-cells = <1>; 1610 + #size-cells = <1>; 1611 + ranges = <0 0x760 0xc>; 1612 + 1613 + vpe_clkctrl: vpe-clkctrl@0 { 1614 + compatible = "ti,clkctrl"; 1615 + reg = <0x0 0xc>; 1602 1616 #clock-cells = <2>; 1603 1617 }; 1604 1618 }; ··· 1730 1716 l3instr_clkctrl: l3instr-clkctrl@20 { 1731 1717 compatible = "ti,clkctrl"; 1732 1718 reg = <0x20 0xc>; 1719 + #clock-cells = <2>; 1720 + }; 1721 + }; 1722 + 1723 + cam_cm: cam-cm@1000 { 1724 + compatible = "ti,omap4-cm"; 1725 + reg = <0x1000 0x100>; 1726 + #address-cells = <1>; 1727 + #size-cells = <1>; 1728 + ranges = <0 0x1000 0x100>; 1729 + 1730 + cam_clkctrl: cam-clkctrl@20 { 1731 + compatible = "ti,clkctrl"; 1732 + reg = <0x20 0x2c>; 1733 1733 #clock-cells = <2>; 1734 1734 }; 1735 1735 };
+3 -2
arch/arm/boot/dts/motorola-cpcap-mapphone.dtsi
··· 27 27 compatible = "motorola,cpcap-battery"; 28 28 interrupts-extended = < 29 29 &cpcap 6 0 &cpcap 5 0 &cpcap 3 0 30 - &cpcap 20 0 &cpcap 54 0 30 + &cpcap 20 0 &cpcap 54 0 &cpcap 57 0 31 31 >; 32 32 interrupt-names = 33 33 "eol", "lowbph", "lowbpl", 34 - "chrgcurr1", "battdetb"; 34 + "chrgcurr1", "battdetb", 35 + "cccal"; 35 36 io-channels = <&cpcap_adc 0 &cpcap_adc 1 36 37 &cpcap_adc 5 &cpcap_adc 6>; 37 38 io-channel-names = "battdetb", "battp",
+19
arch/arm/boot/dts/motorola-mapphone-common.dtsi
··· 249 249 }; 250 250 }; 251 251 252 + /* Battery NVRAM on 1-wire handled by w1_ds250x driver */ 253 + &hdqw1w { 254 + pinctrl-0 = <&hdq_pins>; 255 + pinctrl-names = "default"; 256 + ti,mode = "1w"; 257 + }; 258 + 252 259 &i2c1 { 253 260 tmp105@48 { 254 261 compatible = "ti,tmp105"; ··· 444 437 hdmi_hpd_gpio: pinmux_hdmi_hpd_pins { 445 438 pinctrl-single,pins = < 446 439 OMAP4_IOPAD(0x098, PIN_INPUT | MUX_MODE3) 440 + >; 441 + }; 442 + 443 + hdq_pins: pinmux_hdq_pins { 444 + pinctrl-single,pins = < 445 + /* 0x4a100120 hdq_sio.hdq_sio aa27 */ 446 + OMAP4_IOPAD(0x120, PIN_INPUT | MUX_MODE0) 447 447 >; 448 448 }; 449 449 ··· 662 648 OMAP4_IOPAD(0x040, PIN_OUTPUT_PULLDOWN | MUX_MODE3) 663 649 >; 664 650 }; 651 + }; 652 + 653 + /* RNG is used by secure mode and not accessible */ 654 + &rng_target { 655 + status = "disabled"; 665 656 }; 666 657 667 658 /* Configure pwm clock source for timers 8 & 9 */
+46 -3
arch/arm/boot/dts/omap4-l4.dtsi
··· 1990 1990 }; 1991 1991 }; 1992 1992 1993 - target-module@90000 { /* 0x48090000, ap 57 2a.0 */ 1994 - compatible = "ti,sysc"; 1995 - status = "disabled"; 1993 + rng_target: target-module@90000 { /* 0x48090000, ap 57 2a.0 */ 1994 + compatible = "ti,sysc-omap2", "ti,sysc"; 1995 + reg = <0x91fe0 0x4>, 1996 + <0x91fe4 0x4>; 1997 + reg-names = "rev", "sysc"; 1998 + ti,sysc-mask = <(SYSC_OMAP2_AUTOIDLE)>; 1999 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 2000 + <SYSC_IDLE_NO>; 2001 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 2002 + clocks = <&l4_secure_clkctrl OMAP4_RNG_CLKCTRL 0>; 2003 + clock-names = "fck"; 1996 2004 #address-cells = <1>; 1997 2005 #size-cells = <1>; 1998 2006 ranges = <0x0 0x90000 0x2000>; 2007 + 2008 + rng: rng@0 { 2009 + compatible = "ti,omap4-rng"; 2010 + reg = <0x0 0x2000>; 2011 + interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 2012 + }; 1999 2013 }; 2000 2014 2001 2015 target-module@96000 { /* 0x48096000, ap 37 26.0 */ ··· 2171 2157 #size-cells = <1>; 2172 2158 ranges = <0x00000000 0x000a4000 0x00001000>, 2173 2159 <0x00001000 0x000a5000 0x00001000>; 2160 + }; 2161 + 2162 + des_target: target-module@a5000 { /* 0x480a5000 */ 2163 + compatible = "ti,sysc-omap2", "ti,sysc"; 2164 + reg = <0xa5030 0x4>, 2165 + <0xa5034 0x4>, 2166 + <0xa5038 0x4>; 2167 + reg-names = "rev", "sysc", "syss"; 2168 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 2169 + SYSC_OMAP2_AUTOIDLE)>; 2170 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 2171 + <SYSC_IDLE_NO>, 2172 + <SYSC_IDLE_SMART>, 2173 + <SYSC_IDLE_SMART_WKUP>; 2174 + ti,syss-mask = <1>; 2175 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 2176 + clocks = <&l4_secure_clkctrl OMAP4_DES3DES_CLKCTRL 0>; 2177 + clock-names = "fck"; 2178 + #address-cells = <1>; 2179 + #size-cells = <1>; 2180 + ranges = <0 0xa5000 0x00001000>; 2181 + 2182 + des: des@0 { 2183 + compatible = "ti,omap4-des"; 2184 + reg = <0 0xa0>; 2185 + interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 2186 + dmas = <&sdma 117>, <&sdma 116>; 2187 + dma-names = "tx", "rx"; 2188 + }; 2174 2189 }; 2175 2190 2176 2191 target-module@a8000 { /* 0x480a8000, ap 61 3e.0 */
+79 -29
arch/arm/boot/dts/omap4.dtsi
··· 278 278 hw-caps-temp-alert; 279 279 }; 280 280 281 - aes1: aes@4b501000 { 282 - compatible = "ti,omap4-aes"; 283 - ti,hwmods = "aes1"; 284 - reg = <0x4b501000 0xa0>; 285 - interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 286 - dmas = <&sdma 111>, <&sdma 110>; 287 - dma-names = "tx", "rx"; 281 + aes1_target: target-module@4b501000 { 282 + compatible = "ti,sysc-omap2", "ti,sysc"; 283 + reg = <0x4b501080 0x4>, 284 + <0x4b501084 0x4>, 285 + <0x4b501088 0x4>; 286 + reg-names = "rev", "sysc", "syss"; 287 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 288 + SYSC_OMAP2_AUTOIDLE)>; 289 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 290 + <SYSC_IDLE_NO>, 291 + <SYSC_IDLE_SMART>, 292 + <SYSC_IDLE_SMART_WKUP>; 293 + ti,syss-mask = <1>; 294 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 295 + clocks = <&l4_secure_clkctrl OMAP4_AES1_CLKCTRL 0>; 296 + clock-names = "fck"; 297 + #address-cells = <1>; 298 + #size-cells = <1>; 299 + ranges = <0x0 0x4b501000 0x1000>; 300 + 301 + aes1: aes@0 { 302 + compatible = "ti,omap4-aes"; 303 + reg = <0 0xa0>; 304 + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 305 + dmas = <&sdma 111>, <&sdma 110>; 306 + dma-names = "tx", "rx"; 307 + }; 288 308 }; 289 309 290 - aes2: aes@4b701000 { 291 - compatible = "ti,omap4-aes"; 292 - ti,hwmods = "aes2"; 293 - reg = <0x4b701000 0xa0>; 294 - interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; 295 - dmas = <&sdma 114>, <&sdma 113>; 296 - dma-names = "tx", "rx"; 310 + aes2_target: target-module@4b701000 { 311 + compatible = "ti,sysc-omap2", "ti,sysc"; 312 + reg = <0x4b701080 0x4>, 313 + <0x4b701084 0x4>, 314 + <0x4b701088 0x4>; 315 + reg-names = "rev", "sysc", "syss"; 316 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 317 + SYSC_OMAP2_AUTOIDLE)>; 318 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 319 + <SYSC_IDLE_NO>, 320 + <SYSC_IDLE_SMART>, 321 + <SYSC_IDLE_SMART_WKUP>; 322 + ti,syss-mask = <1>; 323 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 324 + clocks = <&l4_secure_clkctrl OMAP4_AES2_CLKCTRL 0>; 325 + clock-names = "fck"; 326 + #address-cells = <1>; 327 + #size-cells = <1>; 328 + ranges = <0x0 0x4b701000 0x1000>; 329 + 330 + aes2: aes@0 { 331 + compatible = "ti,omap4-aes"; 332 + reg = <0 0xa0>; 333 + interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; 334 + dmas = <&sdma 114>, <&sdma 113>; 335 + dma-names = "tx", "rx"; 336 + }; 297 337 }; 298 338 299 - des: des@480a5000 { 300 - compatible = "ti,omap4-des"; 301 - ti,hwmods = "des"; 302 - reg = <0x480a5000 0xa0>; 303 - interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 304 - dmas = <&sdma 117>, <&sdma 116>; 305 - dma-names = "tx", "rx"; 306 - }; 339 + sham_target: target-module@4b100000 { 340 + compatible = "ti,sysc-omap3-sham", "ti,sysc"; 341 + reg = <0x4b100100 0x4>, 342 + <0x4b100110 0x4>, 343 + <0x4b100114 0x4>; 344 + reg-names = "rev", "sysc", "syss"; 345 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 346 + SYSC_OMAP2_AUTOIDLE)>; 347 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 348 + <SYSC_IDLE_NO>, 349 + <SYSC_IDLE_SMART>; 350 + ti,syss-mask = <1>; 351 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 352 + clocks = <&l4_secure_clkctrl OMAP4_SHA2MD5_CLKCTRL 0>; 353 + clock-names = "fck"; 354 + #address-cells = <1>; 355 + #size-cells = <1>; 356 + ranges = <0x0 0x4b100000 0x1000>; 307 357 308 - sham: sham@4b100000 { 309 - compatible = "ti,omap4-sham"; 310 - ti,hwmods = "sham"; 311 - reg = <0x4b100000 0x300>; 312 - interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; 313 - dmas = <&sdma 119>; 314 - dma-names = "rx"; 358 + sham: sham@0 { 359 + compatible = "ti,omap4-sham"; 360 + reg = <0 0x300>; 361 + interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; 362 + dmas = <&sdma 119>; 363 + dma-names = "rx"; 364 + }; 315 365 }; 316 366 317 367 abb_mpu: regulator-abb-mpu {
+8 -3
arch/arm/boot/dts/omap44xx-clocks.dtsi
··· 1279 1279 #size-cells = <1>; 1280 1280 ranges = <0 0x1400 0x200>; 1281 1281 1282 - l4_per_clkctrl: clk@20 { 1283 - compatible = "ti,clkctrl"; 1282 + l4_per_clkctrl: clock@20 { 1283 + compatible = "ti,clkctrl-l4-per", "ti,clkctrl"; 1284 1284 reg = <0x20 0x144>; 1285 1285 #clock-cells = <2>; 1286 1286 }; 1287 - }; 1288 1287 1288 + l4_secure_clkctrl: clock@1a0 { 1289 + compatible = "ti,clkctrl-l4-secure", "ti,clkctrl"; 1290 + reg = <0x1a0 0x3c>; 1291 + #clock-cells = <2>; 1292 + }; 1293 + }; 1289 1294 }; 1290 1295 1291 1296 &prm {
+17 -3
arch/arm/boot/dts/omap5-l4.dtsi
··· 1764 1764 }; 1765 1765 }; 1766 1766 1767 - target-module@90000 { /* 0x48090000, ap 55 1a.0 */ 1768 - compatible = "ti,sysc"; 1769 - status = "disabled"; 1767 + rng_target: target-module@90000 { /* 0x48090000, ap 55 1a.0 */ 1768 + compatible = "ti,sysc-omap2", "ti,sysc"; 1769 + reg = <0x91fe0 0x4>, 1770 + <0x91fe4 0x4>; 1771 + reg-names = "rev", "sysc"; 1772 + ti,sysc-mask = <(SYSC_OMAP2_AUTOIDLE)>; 1773 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 1774 + <SYSC_IDLE_NO>; 1775 + /* Domains (P, C): l4per_pwrdm, l4sec_clkdm */ 1776 + clocks = <&l4sec_clkctrl OMAP5_RNG_CLKCTRL 0>; 1777 + clock-names = "fck"; 1770 1778 #address-cells = <1>; 1771 1779 #size-cells = <1>; 1772 1780 ranges = <0x0 0x90000 0x2000>; 1781 + 1782 + rng: rng@0 { 1783 + compatible = "ti,omap4-rng"; 1784 + reg = <0x0 0x2000>; 1785 + interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 1786 + }; 1773 1787 }; 1774 1788 1775 1789 target-module@98000 { /* 0x48098000, ap 47 08.0 */
+8 -2
arch/arm/boot/dts/omap54xx-clocks.dtsi
··· 1125 1125 #size-cells = <1>; 1126 1126 ranges = <0 0x1000 0x200>; 1127 1127 1128 - l4per_clkctrl: clk@20 { 1129 - compatible = "ti,clkctrl"; 1128 + l4per_clkctrl: clock@20 { 1129 + compatible = "ti,clkctrl-l4per", "ti,clkctrl"; 1130 1130 reg = <0x20 0x15c>; 1131 + #clock-cells = <2>; 1132 + }; 1133 + 1134 + l4sec_clkctrl: clock@1a0 { 1135 + compatible = "ti,clkctrl-l4sec", "ti,clkctrl"; 1136 + reg = <0x1a0 0x3c>; 1131 1137 #clock-cells = <2>; 1132 1138 }; 1133 1139 };
+1 -2
arch/arm/mach-davinci/Makefile
··· 7 7 ccflags-$(CONFIG_ARCH_MULTIPLATFORM) := -I$(srctree)/$(src)/include 8 8 9 9 # Common objects 10 - obj-y := time.o serial.o usb.o \ 11 - common.o sram.o 10 + obj-y := serial.o usb.o common.o sram.o 12 11 13 12 obj-$(CONFIG_DAVINCI_MUX) += mux.o 14 13
+20
arch/arm/mach-davinci/board-dm365-evm.c
··· 30 30 #include <linux/spi/eeprom.h> 31 31 #include <linux/v4l2-dv-timings.h> 32 32 #include <linux/platform_data/ti-aemif.h> 33 + #include <linux/regulator/fixed.h> 34 + #include <linux/regulator/machine.h> 33 35 34 36 #include <asm/mach-types.h> 35 37 #include <asm/mach/arch.h> ··· 245 243 static struct davinci_i2c_platform_data i2c_pdata = { 246 244 .bus_freq = 400 /* kHz */, 247 245 .bus_delay = 0 /* usec */, 246 + }; 247 + 248 + /* Fixed regulator support */ 249 + static struct regulator_consumer_supply fixed_supplies_3_3v[] = { 250 + /* Baseboard 3.3V: 5V -> TPS767D301 -> 3.3V */ 251 + REGULATOR_SUPPLY("AVDD", "1-0018"), 252 + REGULATOR_SUPPLY("DRVDD", "1-0018"), 253 + REGULATOR_SUPPLY("IOVDD", "1-0018"), 254 + }; 255 + 256 + static struct regulator_consumer_supply fixed_supplies_1_8v[] = { 257 + /* Baseboard 1.8V: 5V -> TPS767D301 -> 1.8V */ 258 + REGULATOR_SUPPLY("DVDD", "1-0018"), 248 259 }; 249 260 250 261 static int dm365evm_keyscan_enable(struct device *dev) ··· 814 799 ret = dm365_gpio_register(); 815 800 if (ret) 816 801 pr_warn("%s: GPIO init failed: %d\n", __func__, ret); 802 + 803 + regulator_register_always_on(0, "fixed-dummy", fixed_supplies_1_8v, 804 + ARRAY_SIZE(fixed_supplies_1_8v), 1800000); 805 + regulator_register_always_on(1, "fixed-dummy", fixed_supplies_3_3v, 806 + ARRAY_SIZE(fixed_supplies_3_3v), 3300000); 817 807 818 808 nvmem_add_cell_table(&davinci_nvmem_cell_table); 819 809 nvmem_add_cell_lookups(&davinci_nvmem_cell_lookup, 1);
+20
arch/arm/mach-davinci/board-dm644x-evm.c
··· 29 29 #include <linux/v4l2-dv-timings.h> 30 30 #include <linux/export.h> 31 31 #include <linux/leds.h> 32 + #include <linux/regulator/fixed.h> 33 + #include <linux/regulator/machine.h> 32 34 33 35 #include <media/i2c/tvp514x.h> 34 36 ··· 655 653 }, 656 654 }; 657 655 656 + /* Fixed regulator support */ 657 + static struct regulator_consumer_supply fixed_supplies_3_3v[] = { 658 + /* Baseboard 3.3V: 5V -> TPS54310PWP -> 3.3V */ 659 + REGULATOR_SUPPLY("AVDD", "1-001b"), 660 + REGULATOR_SUPPLY("DRVDD", "1-001b"), 661 + }; 662 + 663 + static struct regulator_consumer_supply fixed_supplies_1_8v[] = { 664 + /* Baseboard 1.8V: 5V -> TPS54310PWP -> 1.8V */ 665 + REGULATOR_SUPPLY("IOVDD", "1-001b"), 666 + REGULATOR_SUPPLY("DVDD", "1-001b"), 667 + }; 668 + 658 669 #define DM644X_I2C_SDA_PIN GPIO_TO_PIN(2, 12) 659 670 #define DM644X_I2C_SCL_PIN GPIO_TO_PIN(2, 11) 660 671 ··· 856 841 struct davinci_soc_info *soc_info = &davinci_soc_info; 857 842 858 843 dm644x_register_clocks(); 844 + 845 + regulator_register_always_on(0, "fixed-dummy", fixed_supplies_1_8v, 846 + ARRAY_SIZE(fixed_supplies_1_8v), 1800000); 847 + regulator_register_always_on(1, "fixed-dummy", fixed_supplies_3_3v, 848 + ARRAY_SIZE(fixed_supplies_3_3v), 3300000); 859 849 860 850 dm644x_init_devices(); 861 851
-1
arch/arm/mach-davinci/devices-da8xx.c
··· 21 21 #include <mach/common.h> 22 22 #include <mach/cputype.h> 23 23 #include <mach/da8xx.h> 24 - #include <mach/time.h> 25 24 26 25 #include "asp.h" 27 26 #include "cpuidle.h"
-19
arch/arm/mach-davinci/devices.c
··· 17 17 #include <mach/hardware.h> 18 18 #include <mach/cputype.h> 19 19 #include <mach/mux.h> 20 - #include <mach/time.h> 21 20 22 21 #include "davinci.h" 23 22 #include "irqs.h" ··· 302 303 davinci_gpio_device.dev.platform_data = pdata; 303 304 return platform_device_register(&davinci_gpio_device); 304 305 } 305 - 306 - /*-------------------------------------------------------------------------*/ 307 - 308 - /*-------------------------------------------------------------------------*/ 309 - 310 - struct davinci_timer_instance davinci_timer_instance[2] = { 311 - { 312 - .base = DAVINCI_TIMER0_BASE, 313 - .bottom_irq = DAVINCI_INTC_IRQ(IRQ_TINT0_TINT12), 314 - .top_irq = DAVINCI_INTC_IRQ(IRQ_TINT0_TINT34), 315 - }, 316 - { 317 - .base = DAVINCI_TIMER1_BASE, 318 - .bottom_irq = DAVINCI_INTC_IRQ(IRQ_TINT1_TINT12), 319 - .top_irq = DAVINCI_INTC_IRQ(IRQ_TINT1_TINT34), 320 - }, 321 - }; 322 -
+15 -7
arch/arm/mach-davinci/dm365.c
··· 35 35 #include <mach/cputype.h> 36 36 #include <mach/mux.h> 37 37 #include <mach/serial.h> 38 - #include <mach/time.h> 38 + 39 + #include <clocksource/timer-davinci.h> 39 40 40 41 #include "asp.h" 41 42 #include "davinci.h" ··· 661 660 }, 662 661 }; 663 662 664 - static struct davinci_timer_info dm365_timer_info = { 665 - .timers = davinci_timer_instance, 666 - .clockevent_id = T0_BOT, 667 - .clocksource_id = T0_TOP, 663 + /* 664 + * Bottom half of timer0 is used for clockevent, top half is used for 665 + * clocksource. 666 + */ 667 + static const struct davinci_timer_cfg dm365_timer_cfg = { 668 + .reg = DEFINE_RES_IO(DAVINCI_TIMER0_BASE, SZ_128), 669 + .irq = { 670 + DEFINE_RES_IRQ(DAVINCI_INTC_IRQ(IRQ_TINT0_TINT12)), 671 + DEFINE_RES_IRQ(DAVINCI_INTC_IRQ(IRQ_TINT0_TINT34)), 672 + }, 668 673 }; 669 674 670 675 #define DM365_UART1_BASE (IO_PHYS + 0x106000) ··· 730 723 .pinmux_base = DAVINCI_SYSTEM_MODULE_BASE, 731 724 .pinmux_pins = dm365_pins, 732 725 .pinmux_pins_num = ARRAY_SIZE(dm365_pins), 733 - .timer_info = &dm365_timer_info, 734 726 .emac_pdata = &dm365_emac_pdata, 735 727 .sram_dma = 0x00010000, 736 728 .sram_len = SZ_32K, ··· 777 771 { 778 772 void __iomem *pll1, *pll2, *psc; 779 773 struct clk *clk; 774 + int rv; 780 775 781 776 clk_register_fixed_rate(NULL, "ref_clk", NULL, 0, DM365_REF_FREQ); 782 777 ··· 796 789 return; 797 790 } 798 791 799 - davinci_timer_init(clk); 792 + rv = davinci_timer_register(clk, &dm365_timer_cfg); 793 + WARN(rv, "Unable to register the timer: %d\n", rv); 800 794 } 801 795 802 796 void __init dm365_register_clocks(void)
-17
arch/arm/mach-davinci/include/mach/common.h
··· 22 22 #define DAVINCI_INTC_START NR_IRQS 23 23 #define DAVINCI_INTC_IRQ(_irqnum) (DAVINCI_INTC_START + (_irqnum)) 24 24 25 - void davinci_timer_init(struct clk *clk); 26 - 27 - struct davinci_timer_instance { 28 - u32 base; 29 - u32 bottom_irq; 30 - u32 top_irq; 31 - unsigned long cmp_off; 32 - unsigned int cmp_irq; 33 - }; 34 - 35 - struct davinci_timer_info { 36 - struct davinci_timer_instance *timers; 37 - unsigned int clockevent_id; 38 - unsigned int clocksource_id; 39 - }; 40 - 41 25 struct davinci_gpio_controller; 42 26 43 27 /* ··· 42 58 u32 pinmux_base; 43 59 const struct mux_config *pinmux_pins; 44 60 unsigned long pinmux_pins_num; 45 - struct davinci_timer_info *timer_info; 46 61 int gpio_type; 47 62 u32 gpio_base; 48 63 unsigned gpio_num;
-33
arch/arm/mach-davinci/include/mach/time.h
··· 1 - /* 2 - * Local header file for DaVinci time code. 3 - * 4 - * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> 5 - * 6 - * 2007 (c) MontaVista Software, Inc. This file is licensed under 7 - * the terms of the GNU General Public License version 2. This program 8 - * is licensed "as is" without any warranty of any kind, whether express 9 - * or implied. 10 - */ 11 - #ifndef __ARCH_ARM_MACH_DAVINCI_TIME_H 12 - #define __ARCH_ARM_MACH_DAVINCI_TIME_H 13 - 14 - #define DAVINCI_TIMER1_BASE (IO_PHYS + 0x21800) 15 - 16 - enum { 17 - T0_BOT, 18 - T0_TOP, 19 - T1_BOT, 20 - T1_TOP, 21 - NUM_TIMERS 22 - }; 23 - 24 - #define IS_TIMER1(id) (id & 0x2) 25 - #define IS_TIMER0(id) (!IS_TIMER1(id)) 26 - #define IS_TIMER_TOP(id) ((id & 0x1)) 27 - #define IS_TIMER_BOT(id) (!IS_TIMER_TOP(id)) 28 - 29 - #define ID_TO_TIMER(id) (IS_TIMER1(id) != 0) 30 - 31 - extern struct davinci_timer_instance davinci_timer_instance[]; 32 - 33 - #endif /* __ARCH_ARM_MACH_DAVINCI_TIME_H */
-400
arch/arm/mach-davinci/time.c
··· 1 - /* 2 - * DaVinci timer subsystem 3 - * 4 - * Author: Kevin Hilman, MontaVista Software, Inc. <source@mvista.com> 5 - * 6 - * 2007 (c) MontaVista Software, Inc. This file is licensed under 7 - * the terms of the GNU General Public License version 2. This program 8 - * is licensed "as is" without any warranty of any kind, whether express 9 - * or implied. 10 - */ 11 - #include <linux/kernel.h> 12 - #include <linux/init.h> 13 - #include <linux/types.h> 14 - #include <linux/interrupt.h> 15 - #include <linux/clocksource.h> 16 - #include <linux/clockchips.h> 17 - #include <linux/io.h> 18 - #include <linux/clk.h> 19 - #include <linux/err.h> 20 - #include <linux/of.h> 21 - #include <linux/platform_device.h> 22 - #include <linux/sched_clock.h> 23 - 24 - #include <asm/mach/irq.h> 25 - #include <asm/mach/time.h> 26 - 27 - #include <mach/cputype.h> 28 - #include <mach/hardware.h> 29 - #include <mach/time.h> 30 - 31 - static struct clock_event_device clockevent_davinci; 32 - static unsigned int davinci_clock_tick_rate; 33 - 34 - /* 35 - * This driver configures the 2 64-bit count-up timers as 4 independent 36 - * 32-bit count-up timers used as follows: 37 - */ 38 - 39 - enum { 40 - TID_CLOCKEVENT, 41 - TID_CLOCKSOURCE, 42 - }; 43 - 44 - /* Timer register offsets */ 45 - #define PID12 0x0 46 - #define TIM12 0x10 47 - #define TIM34 0x14 48 - #define PRD12 0x18 49 - #define PRD34 0x1c 50 - #define TCR 0x20 51 - #define TGCR 0x24 52 - #define WDTCR 0x28 53 - 54 - /* Offsets of the 8 compare registers */ 55 - #define CMP12_0 0x60 56 - #define CMP12_1 0x64 57 - #define CMP12_2 0x68 58 - #define CMP12_3 0x6c 59 - #define CMP12_4 0x70 60 - #define CMP12_5 0x74 61 - #define CMP12_6 0x78 62 - #define CMP12_7 0x7c 63 - 64 - /* Timer register bitfields */ 65 - #define TCR_ENAMODE_DISABLE 0x0 66 - #define TCR_ENAMODE_ONESHOT 0x1 67 - #define TCR_ENAMODE_PERIODIC 0x2 68 - #define TCR_ENAMODE_MASK 0x3 69 - 70 - #define TGCR_TIMMODE_SHIFT 2 71 - #define TGCR_TIMMODE_64BIT_GP 0x0 72 - #define TGCR_TIMMODE_32BIT_UNCHAINED 0x1 73 - #define TGCR_TIMMODE_64BIT_WDOG 0x2 74 - #define TGCR_TIMMODE_32BIT_CHAINED 0x3 75 - 76 - #define TGCR_TIM12RS_SHIFT 0 77 - #define TGCR_TIM34RS_SHIFT 1 78 - #define TGCR_RESET 0x0 79 - #define TGCR_UNRESET 0x1 80 - #define TGCR_RESET_MASK 0x3 81 - 82 - struct timer_s { 83 - char *name; 84 - unsigned int id; 85 - unsigned long period; 86 - unsigned long opts; 87 - unsigned long flags; 88 - void __iomem *base; 89 - unsigned long tim_off; 90 - unsigned long prd_off; 91 - unsigned long enamode_shift; 92 - struct irqaction irqaction; 93 - }; 94 - static struct timer_s timers[]; 95 - 96 - /* values for 'opts' field of struct timer_s */ 97 - #define TIMER_OPTS_DISABLED 0x01 98 - #define TIMER_OPTS_ONESHOT 0x02 99 - #define TIMER_OPTS_PERIODIC 0x04 100 - #define TIMER_OPTS_STATE_MASK 0x07 101 - 102 - #define TIMER_OPTS_USE_COMPARE 0x80000000 103 - #define USING_COMPARE(t) ((t)->opts & TIMER_OPTS_USE_COMPARE) 104 - 105 - static char *id_to_name[] = { 106 - [T0_BOT] = "timer0_0", 107 - [T0_TOP] = "timer0_1", 108 - [T1_BOT] = "timer1_0", 109 - [T1_TOP] = "timer1_1", 110 - }; 111 - 112 - static int timer32_config(struct timer_s *t) 113 - { 114 - u32 tcr; 115 - struct davinci_soc_info *soc_info = &davinci_soc_info; 116 - 117 - if (USING_COMPARE(t)) { 118 - struct davinci_timer_instance *dtip = 119 - soc_info->timer_info->timers; 120 - int event_timer = ID_TO_TIMER(timers[TID_CLOCKEVENT].id); 121 - 122 - /* 123 - * Next interrupt should be the current time reg value plus 124 - * the new period (using 32-bit unsigned addition/wrapping 125 - * to 0 on overflow). This assumes that the clocksource 126 - * is setup to count to 2^32-1 before wrapping around to 0. 127 - */ 128 - __raw_writel(__raw_readl(t->base + t->tim_off) + t->period, 129 - t->base + dtip[event_timer].cmp_off); 130 - } else { 131 - tcr = __raw_readl(t->base + TCR); 132 - 133 - /* disable timer */ 134 - tcr &= ~(TCR_ENAMODE_MASK << t->enamode_shift); 135 - __raw_writel(tcr, t->base + TCR); 136 - 137 - /* reset counter to zero, set new period */ 138 - __raw_writel(0, t->base + t->tim_off); 139 - __raw_writel(t->period, t->base + t->prd_off); 140 - 141 - /* Set enable mode */ 142 - if (t->opts & TIMER_OPTS_ONESHOT) 143 - tcr |= TCR_ENAMODE_ONESHOT << t->enamode_shift; 144 - else if (t->opts & TIMER_OPTS_PERIODIC) 145 - tcr |= TCR_ENAMODE_PERIODIC << t->enamode_shift; 146 - 147 - __raw_writel(tcr, t->base + TCR); 148 - } 149 - return 0; 150 - } 151 - 152 - static inline u32 timer32_read(struct timer_s *t) 153 - { 154 - return __raw_readl(t->base + t->tim_off); 155 - } 156 - 157 - static irqreturn_t timer_interrupt(int irq, void *dev_id) 158 - { 159 - struct clock_event_device *evt = &clockevent_davinci; 160 - 161 - evt->event_handler(evt); 162 - return IRQ_HANDLED; 163 - } 164 - 165 - /* called when 32-bit counter wraps */ 166 - static irqreturn_t freerun_interrupt(int irq, void *dev_id) 167 - { 168 - return IRQ_HANDLED; 169 - } 170 - 171 - static struct timer_s timers[] = { 172 - [TID_CLOCKEVENT] = { 173 - .name = "clockevent", 174 - .opts = TIMER_OPTS_DISABLED, 175 - .irqaction = { 176 - .flags = IRQF_TIMER, 177 - .handler = timer_interrupt, 178 - } 179 - }, 180 - [TID_CLOCKSOURCE] = { 181 - .name = "free-run counter", 182 - .period = ~0, 183 - .opts = TIMER_OPTS_PERIODIC, 184 - .irqaction = { 185 - .flags = IRQF_TIMER, 186 - .handler = freerun_interrupt, 187 - } 188 - }, 189 - }; 190 - 191 - static void __init timer_init(void) 192 - { 193 - struct davinci_soc_info *soc_info = &davinci_soc_info; 194 - struct davinci_timer_instance *dtip = soc_info->timer_info->timers; 195 - void __iomem *base[2]; 196 - int i; 197 - 198 - /* Global init of each 64-bit timer as a whole */ 199 - for(i=0; i<2; i++) { 200 - u32 tgcr; 201 - 202 - base[i] = ioremap(dtip[i].base, SZ_4K); 203 - if (WARN_ON(!base[i])) 204 - continue; 205 - 206 - /* Disabled, Internal clock source */ 207 - __raw_writel(0, base[i] + TCR); 208 - 209 - /* reset both timers, no pre-scaler for timer34 */ 210 - tgcr = 0; 211 - __raw_writel(tgcr, base[i] + TGCR); 212 - 213 - /* Set both timers to unchained 32-bit */ 214 - tgcr = TGCR_TIMMODE_32BIT_UNCHAINED << TGCR_TIMMODE_SHIFT; 215 - __raw_writel(tgcr, base[i] + TGCR); 216 - 217 - /* Unreset timers */ 218 - tgcr |= (TGCR_UNRESET << TGCR_TIM12RS_SHIFT) | 219 - (TGCR_UNRESET << TGCR_TIM34RS_SHIFT); 220 - __raw_writel(tgcr, base[i] + TGCR); 221 - 222 - /* Init both counters to zero */ 223 - __raw_writel(0, base[i] + TIM12); 224 - __raw_writel(0, base[i] + TIM34); 225 - } 226 - 227 - /* Init of each timer as a 32-bit timer */ 228 - for (i=0; i< ARRAY_SIZE(timers); i++) { 229 - struct timer_s *t = &timers[i]; 230 - int timer = ID_TO_TIMER(t->id); 231 - u32 irq; 232 - 233 - t->base = base[timer]; 234 - if (!t->base) 235 - continue; 236 - 237 - if (IS_TIMER_BOT(t->id)) { 238 - t->enamode_shift = 6; 239 - t->tim_off = TIM12; 240 - t->prd_off = PRD12; 241 - irq = dtip[timer].bottom_irq; 242 - } else { 243 - t->enamode_shift = 22; 244 - t->tim_off = TIM34; 245 - t->prd_off = PRD34; 246 - irq = dtip[timer].top_irq; 247 - } 248 - 249 - /* Register interrupt */ 250 - t->irqaction.name = t->name; 251 - t->irqaction.dev_id = (void *)t; 252 - 253 - if (t->irqaction.handler != NULL) { 254 - irq = USING_COMPARE(t) ? dtip[i].cmp_irq : irq; 255 - setup_irq(irq, &t->irqaction); 256 - } 257 - } 258 - } 259 - 260 - /* 261 - * clocksource 262 - */ 263 - static u64 read_cycles(struct clocksource *cs) 264 - { 265 - struct timer_s *t = &timers[TID_CLOCKSOURCE]; 266 - 267 - return (cycles_t)timer32_read(t); 268 - } 269 - 270 - static struct clocksource clocksource_davinci = { 271 - .rating = 300, 272 - .read = read_cycles, 273 - .mask = CLOCKSOURCE_MASK(32), 274 - .flags = CLOCK_SOURCE_IS_CONTINUOUS, 275 - }; 276 - 277 - /* 278 - * Overwrite weak default sched_clock with something more precise 279 - */ 280 - static u64 notrace davinci_read_sched_clock(void) 281 - { 282 - return timer32_read(&timers[TID_CLOCKSOURCE]); 283 - } 284 - 285 - /* 286 - * clockevent 287 - */ 288 - static int davinci_set_next_event(unsigned long cycles, 289 - struct clock_event_device *evt) 290 - { 291 - struct timer_s *t = &timers[TID_CLOCKEVENT]; 292 - 293 - t->period = cycles; 294 - timer32_config(t); 295 - return 0; 296 - } 297 - 298 - static int davinci_shutdown(struct clock_event_device *evt) 299 - { 300 - struct timer_s *t = &timers[TID_CLOCKEVENT]; 301 - 302 - t->opts &= ~TIMER_OPTS_STATE_MASK; 303 - t->opts |= TIMER_OPTS_DISABLED; 304 - return 0; 305 - } 306 - 307 - static int davinci_set_oneshot(struct clock_event_device *evt) 308 - { 309 - struct timer_s *t = &timers[TID_CLOCKEVENT]; 310 - 311 - t->opts &= ~TIMER_OPTS_STATE_MASK; 312 - t->opts |= TIMER_OPTS_ONESHOT; 313 - return 0; 314 - } 315 - 316 - static int davinci_set_periodic(struct clock_event_device *evt) 317 - { 318 - struct timer_s *t = &timers[TID_CLOCKEVENT]; 319 - 320 - t->period = davinci_clock_tick_rate / (HZ); 321 - t->opts &= ~TIMER_OPTS_STATE_MASK; 322 - t->opts |= TIMER_OPTS_PERIODIC; 323 - timer32_config(t); 324 - return 0; 325 - } 326 - 327 - static struct clock_event_device clockevent_davinci = { 328 - .features = CLOCK_EVT_FEAT_PERIODIC | 329 - CLOCK_EVT_FEAT_ONESHOT, 330 - .set_next_event = davinci_set_next_event, 331 - .set_state_shutdown = davinci_shutdown, 332 - .set_state_periodic = davinci_set_periodic, 333 - .set_state_oneshot = davinci_set_oneshot, 334 - }; 335 - 336 - void __init davinci_timer_init(struct clk *timer_clk) 337 - { 338 - struct davinci_soc_info *soc_info = &davinci_soc_info; 339 - unsigned int clockevent_id; 340 - unsigned int clocksource_id; 341 - int i; 342 - 343 - clockevent_id = soc_info->timer_info->clockevent_id; 344 - clocksource_id = soc_info->timer_info->clocksource_id; 345 - 346 - timers[TID_CLOCKEVENT].id = clockevent_id; 347 - timers[TID_CLOCKSOURCE].id = clocksource_id; 348 - 349 - /* 350 - * If using same timer for both clock events & clocksource, 351 - * a compare register must be used to generate an event interrupt. 352 - * This is equivalent to a oneshot timer only (not periodic). 353 - */ 354 - if (clockevent_id == clocksource_id) { 355 - struct davinci_timer_instance *dtip = 356 - soc_info->timer_info->timers; 357 - int event_timer = ID_TO_TIMER(clockevent_id); 358 - 359 - /* Only bottom timers can use compare regs */ 360 - if (IS_TIMER_TOP(clockevent_id)) 361 - pr_warn("%s: Invalid use of system timers. Results unpredictable.\n", 362 - __func__); 363 - else if ((dtip[event_timer].cmp_off == 0) 364 - || (dtip[event_timer].cmp_irq == 0)) 365 - pr_warn("%s: Invalid timer instance setup. Results unpredictable.\n", 366 - __func__); 367 - else { 368 - timers[TID_CLOCKEVENT].opts |= TIMER_OPTS_USE_COMPARE; 369 - clockevent_davinci.features = CLOCK_EVT_FEAT_ONESHOT; 370 - } 371 - } 372 - 373 - BUG_ON(IS_ERR(timer_clk)); 374 - clk_prepare_enable(timer_clk); 375 - 376 - /* init timer hw */ 377 - timer_init(); 378 - 379 - davinci_clock_tick_rate = clk_get_rate(timer_clk); 380 - 381 - /* setup clocksource */ 382 - clocksource_davinci.name = id_to_name[clocksource_id]; 383 - if (clocksource_register_hz(&clocksource_davinci, 384 - davinci_clock_tick_rate)) 385 - pr_err("%s: can't register clocksource!\n", 386 - clocksource_davinci.name); 387 - 388 - sched_clock_register(davinci_read_sched_clock, 32, 389 - davinci_clock_tick_rate); 390 - 391 - /* setup clockevent */ 392 - clockevent_davinci.name = id_to_name[timers[TID_CLOCKEVENT].id]; 393 - 394 - clockevent_davinci.cpumask = cpumask_of(0); 395 - clockevents_config_and_register(&clockevent_davinci, 396 - davinci_clock_tick_rate, 1, 0xfffffffe); 397 - 398 - for (i=0; i< ARRAY_SIZE(timers); i++) 399 - timer32_config(&timers[i]); 400 - }
+1 -1
arch/arm/mach-omap2/clockdomains7xx_data.c
··· 606 606 .dep_bit = DRA7XX_CAM_STATDEP_SHIFT, 607 607 .wkdep_srcs = cam_wkup_sleep_deps, 608 608 .sleepdep_srcs = cam_wkup_sleep_deps, 609 - .flags = CLKDM_CAN_HWSUP_SWSUP, 609 + .flags = CLKDM_CAN_SWSUP, 610 610 }; 611 611 612 612 static struct clockdomain l4per_7xx_clkdm = {
-135
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
··· 653 653 .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks), 654 654 }; 655 655 656 - /* sha0 HIB2 (the 'P' (public) device) */ 657 - static struct omap_hwmod_class_sysconfig omap44xx_sha0_sysc = { 658 - .rev_offs = 0x100, 659 - .sysc_offs = 0x110, 660 - .syss_offs = 0x114, 661 - .sysc_flags = SYSS_HAS_RESET_STATUS, 662 - }; 663 - 664 - static struct omap_hwmod_class omap44xx_sha0_hwmod_class = { 665 - .name = "sham", 666 - .sysc = &omap44xx_sha0_sysc, 667 - }; 668 - 669 - static struct omap_hwmod omap44xx_sha0_hwmod = { 670 - .name = "sham", 671 - .class = &omap44xx_sha0_hwmod_class, 672 - .clkdm_name = "l4_secure_clkdm", 673 - .main_clk = "l3_div_ck", 674 - .prcm = { 675 - .omap4 = { 676 - .clkctrl_offs = OMAP4_CM_L4SEC_SHA2MD51_CLKCTRL_OFFSET, 677 - .context_offs = OMAP4_RM_L4SEC_SHA2MD51_CONTEXT_OFFSET, 678 - .modulemode = MODULEMODE_SWCTRL, 679 - }, 680 - }, 681 - }; 682 656 683 657 684 658 /* ··· 699 725 .modulemode = MODULEMODE_HWCTRL, 700 726 }, 701 727 }, 702 - }; 703 - 704 - /* 705 - Crypto modules AES0/1 belong to: 706 - PD_L4_PER power domain 707 - CD_L4_SEC clock domain 708 - On the L3, the AES modules are mapped to 709 - L3_CLK2: Peripherals and multimedia sub clock domain 710 - */ 711 - static struct omap_hwmod_class_sysconfig omap44xx_aes_sysc = { 712 - .rev_offs = 0x80, 713 - .sysc_offs = 0x84, 714 - .syss_offs = 0x88, 715 - .sysc_flags = SYSS_HAS_RESET_STATUS, 716 - }; 717 - 718 - static struct omap_hwmod_class omap44xx_aes_hwmod_class = { 719 - .name = "aes", 720 - .sysc = &omap44xx_aes_sysc, 721 - }; 722 - 723 - static struct omap_hwmod omap44xx_aes1_hwmod = { 724 - .name = "aes1", 725 - .class = &omap44xx_aes_hwmod_class, 726 - .clkdm_name = "l4_secure_clkdm", 727 - .main_clk = "l3_div_ck", 728 - .prcm = { 729 - .omap4 = { 730 - .context_offs = OMAP4_RM_L4SEC_AES1_CONTEXT_OFFSET, 731 - .clkctrl_offs = OMAP4_CM_L4SEC_AES1_CLKCTRL_OFFSET, 732 - .modulemode = MODULEMODE_SWCTRL, 733 - }, 734 - }, 735 - }; 736 - 737 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__aes1 = { 738 - .master = &omap44xx_l4_per_hwmod, 739 - .slave = &omap44xx_aes1_hwmod, 740 - .clk = "l3_div_ck", 741 - .user = OCP_USER_MPU | OCP_USER_SDMA, 742 - }; 743 - 744 - static struct omap_hwmod omap44xx_aes2_hwmod = { 745 - .name = "aes2", 746 - .class = &omap44xx_aes_hwmod_class, 747 - .clkdm_name = "l4_secure_clkdm", 748 - .main_clk = "l3_div_ck", 749 - .prcm = { 750 - .omap4 = { 751 - .context_offs = OMAP4_RM_L4SEC_AES2_CONTEXT_OFFSET, 752 - .clkctrl_offs = OMAP4_CM_L4SEC_AES2_CLKCTRL_OFFSET, 753 - .modulemode = MODULEMODE_SWCTRL, 754 - }, 755 - }, 756 - }; 757 - 758 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__aes2 = { 759 - .master = &omap44xx_l4_per_hwmod, 760 - .slave = &omap44xx_aes2_hwmod, 761 - .clk = "l3_div_ck", 762 - .user = OCP_USER_MPU | OCP_USER_SDMA, 763 - }; 764 - 765 - /* 766 - * 'des' class for DES3DES module 767 - */ 768 - static struct omap_hwmod_class_sysconfig omap44xx_des_sysc = { 769 - .rev_offs = 0x30, 770 - .sysc_offs = 0x34, 771 - .syss_offs = 0x38, 772 - .sysc_flags = SYSS_HAS_RESET_STATUS, 773 - }; 774 - 775 - static struct omap_hwmod_class omap44xx_des_hwmod_class = { 776 - .name = "des", 777 - .sysc = &omap44xx_des_sysc, 778 - }; 779 - 780 - static struct omap_hwmod omap44xx_des_hwmod = { 781 - .name = "des", 782 - .class = &omap44xx_des_hwmod_class, 783 - .clkdm_name = "l4_secure_clkdm", 784 - .main_clk = "l3_div_ck", 785 - .prcm = { 786 - .omap4 = { 787 - .context_offs = OMAP4_RM_L4SEC_DES3DES_CONTEXT_OFFSET, 788 - .clkctrl_offs = OMAP4_CM_L4SEC_DES3DES_CLKCTRL_OFFSET, 789 - .modulemode = MODULEMODE_SWCTRL, 790 - }, 791 - }, 792 - }; 793 - 794 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__des = { 795 - .master = &omap44xx_l3_main_2_hwmod, 796 - .slave = &omap44xx_des_hwmod, 797 - .clk = "l3_div_ck", 798 - .user = OCP_USER_MPU | OCP_USER_SDMA, 799 728 }; 800 729 801 730 /* ··· 1612 1735 .user = OCP_USER_MPU, 1613 1736 }; 1614 1737 1615 - /* l3_main_2 -> sham */ 1616 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__sha0 = { 1617 - .master = &omap44xx_l3_main_2_hwmod, 1618 - .slave = &omap44xx_sha0_hwmod, 1619 - .clk = "l3_div_ck", 1620 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1621 - }; 1622 - 1623 1738 /* l3_main_2 -> gpmc */ 1624 1739 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = { 1625 1740 .master = &omap44xx_l3_main_2_hwmod, ··· 1827 1958 &omap44xx_l4_cfg__usb_tll_hs, 1828 1959 &omap44xx_mpu__emif1, 1829 1960 &omap44xx_mpu__emif2, 1830 - &omap44xx_l3_main_2__aes1, 1831 - &omap44xx_l3_main_2__aes2, 1832 - &omap44xx_l3_main_2__des, 1833 - &omap44xx_l3_main_2__sha0, 1834 1961 NULL, 1835 1962 }; 1836 1963
+13
drivers/clk/ti/clk-44xx.c
··· 604 604 { 0 }, 605 605 }; 606 606 607 + static const struct 608 + omap_clkctrl_reg_data omap4_l4_secure_clkctrl_regs[] __initconst = { 609 + { OMAP4_AES1_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 610 + { OMAP4_AES2_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 611 + { OMAP4_DES3DES_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 612 + { OMAP4_PKA_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 613 + { OMAP4_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 614 + { OMAP4_SHA2MD5_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 615 + { OMAP4_CRYPTODMA_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 616 + { 0 }, 617 + }; 618 + 607 619 static const struct omap_clkctrl_bit_data omap4_gpio1_bit_data[] __initconst = { 608 620 { 8, TI_CLK_GATE, omap4_gpio2_dbclk_parents, NULL }, 609 621 { 0 }, ··· 703 691 { 0x4a009220, omap4_l3_gfx_clkctrl_regs }, 704 692 { 0x4a009320, omap4_l3_init_clkctrl_regs }, 705 693 { 0x4a009420, omap4_l4_per_clkctrl_regs }, 694 + { 0x4a0095a0, omap4_l4_secure_clkctrl_regs }, 706 695 { 0x4a307820, omap4_l4_wkup_clkctrl_regs }, 707 696 { 0x4a307a20, omap4_emu_sys_clkctrl_regs }, 708 697 { 0 },
+13
drivers/clk/ti/clk-54xx.c
··· 301 301 { 0 }, 302 302 }; 303 303 304 + static const struct 305 + omap_clkctrl_reg_data omap5_l4_secure_clkctrl_regs[] __initconst = { 306 + { OMAP5_AES1_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 307 + { OMAP5_AES2_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 308 + { OMAP5_DES3DES_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 309 + { OMAP5_FPKA_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 310 + { OMAP5_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 311 + { OMAP5_SHA2MD5_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 312 + { OMAP5_DMA_CRYPTO_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 313 + { 0 }, 314 + }; 315 + 304 316 static const struct omap_clkctrl_reg_data omap5_iva_clkctrl_regs[] __initconst = { 305 317 { OMAP5_IVA_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_iva_h12x2_ck" }, 306 318 { OMAP5_SL2IF_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_iva_h12x2_ck" }, ··· 535 523 { 0x4a008d20, omap5_l4cfg_clkctrl_regs }, 536 524 { 0x4a008e20, omap5_l3instr_clkctrl_regs }, 537 525 { 0x4a009020, omap5_l4per_clkctrl_regs }, 526 + { 0x4a0091a0, omap5_l4_secure_clkctrl_regs }, 538 527 { 0x4a009220, omap5_iva_clkctrl_regs }, 539 528 { 0x4a009420, omap5_dss_clkctrl_regs }, 540 529 { 0x4a009520, omap5_gpu_clkctrl_regs },
+4 -4
drivers/clocksource/timer-davinci.c
··· 302 302 return rv; 303 303 } 304 304 305 - clockevents_config_and_register(&clockevent->dev, tick_rate, 306 - DAVINCI_TIMER_MIN_DELTA, 307 - DAVINCI_TIMER_MAX_DELTA); 308 - 309 305 davinci_clocksource.dev.rating = 300; 310 306 davinci_clocksource.dev.read = davinci_clocksource_read; 311 307 davinci_clocksource.dev.mask = ··· 318 322 davinci_clocksource.tim_off = DAVINCI_TIMER_REG_TIM34; 319 323 davinci_clocksource_init_tim34(base); 320 324 } 325 + 326 + clockevents_config_and_register(&clockevent->dev, tick_rate, 327 + DAVINCI_TIMER_MIN_DELTA, 328 + DAVINCI_TIMER_MAX_DELTA); 321 329 322 330 rv = clocksource_register_hz(&davinci_clocksource.dev, tick_rate); 323 331 if (rv) {
+11
include/dt-bindings/clock/omap4.h
··· 124 124 #define OMAP4_UART4_CLKCTRL OMAP4_CLKCTRL_INDEX(0x158) 125 125 #define OMAP4_MMC5_CLKCTRL OMAP4_CLKCTRL_INDEX(0x160) 126 126 127 + /* l4_secure clocks */ 128 + #define OMAP4_L4_SECURE_CLKCTRL_OFFSET 0x1a0 129 + #define OMAP4_L4_SECURE_CLKCTRL_INDEX(offset) ((offset) - OMAP4_L4_SECURE_CLKCTRL_OFFSET) 130 + #define OMAP4_AES1_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1a0) 131 + #define OMAP4_AES2_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1a8) 132 + #define OMAP4_DES3DES_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1b0) 133 + #define OMAP4_PKA_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1b8) 134 + #define OMAP4_RNG_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1c0) 135 + #define OMAP4_SHA2MD5_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1c8) 136 + #define OMAP4_CRYPTODMA_CLKCTRL OMAP4_L4_SECURE_CLKCTRL_INDEX(0x1d8) 137 + 127 138 /* l4_wkup clocks */ 128 139 #define OMAP4_L4_WKUP_CLKCTRL OMAP4_CLKCTRL_INDEX(0x20) 129 140 #define OMAP4_WD_TIMER2_CLKCTRL OMAP4_CLKCTRL_INDEX(0x30)
+11
include/dt-bindings/clock/omap5.h
··· 87 87 #define OMAP5_UART5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x170) 88 88 #define OMAP5_UART6_CLKCTRL OMAP5_CLKCTRL_INDEX(0x178) 89 89 90 + /* l4_secure clocks */ 91 + #define OMAP5_L4_SECURE_CLKCTRL_OFFSET 0x1a0 92 + #define OMAP5_L4_SECURE_CLKCTRL_INDEX(offset) ((offset) - OMAP5_L4_SECURE_CLKCTRL_OFFSET) 93 + #define OMAP5_AES1_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1a0) 94 + #define OMAP5_AES2_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1a8) 95 + #define OMAP5_DES3DES_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1b0) 96 + #define OMAP5_FPKA_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1b8) 97 + #define OMAP5_RNG_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1c0) 98 + #define OMAP5_SHA2MD5_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1c8) 99 + #define OMAP5_DMA_CRYPTO_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1d8) 100 + 90 101 /* iva clocks */ 91 102 #define OMAP5_IVA_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20) 92 103 #define OMAP5_SL2IF_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28)