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

Merge tag 'omap-for-v5.6/ti-sysc-drop-pdata-crypto-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/late

Late changes for omap secure accelerators for v5.6 merge window

A series of changes to configure secure accelerators for omap4 & 5
to finally get hardware random number generator working.

Apologies on a late pull request on these changes, but this pull
request could not be sent out earlier because of a dependency to
recent clock changes. This is based on earlier changes to drop omap
legacy platform data with Tero Kristo's for-5.6-ti-clk branch merged
in.

* tag 'omap-for-v5.6/ti-sysc-drop-pdata-crypto-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: (98 commits)
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
ARM: dts: Configure interconnect target module for omap4 des
ARM: dts: Configure interconnect target module for omap4 aes
ARM: dts: Configure interconnect target module for omap4 sham
ARM: dts: Configure omap5 rng to probe with ti-sysc
ARM: dts: Configure omap4 rng to probe with ti-sysc
ARM: dts: Add missing omap5 secure clocks
ARM: dts: Add missing omap4 secure clocks
clk: ti: clkctrl: Fix hidden dependency to node name
clk: ti: add clkctrl data dra7 sgx
clk: ti: omap5: Add missing AESS clock
clk: ti: dra7: fix parent for gmac_clkctrl
clk: ti: dra7: add vpe clkctrl data
clk: ti: dra7: add cam clkctrl data
dt-bindings: clock: Move ti-dra7-atl.h to dt-bindings/clock
dmaengine: ti: omap-dma: don't allow a null od->plat pointer to be dereferenced
ARM: OMAP2+: Drop legacy platform data for sdma
ARM: OMAP2+: Drop legacy init for sdma
...

Link: https://lore.kernel.org/r/pull-1579896427-50330@atomide.com-2
Signed-off-by: Olof Johansson <olof@lixom.net>

+1351 -5194
+8 -3
Documentation/devicetree/bindings/clock/ti-clkctrl.txt
··· 16 16 Documentation/devicetree/bindings/clock/clock-bindings.txt. 17 17 18 18 Required properties : 19 - - compatible : shall be "ti,clkctrl" 19 + - compatible : shall be "ti,clkctrl" or a clock domain specific name: 20 + "ti,clkctrl-l4-cfg" 21 + "ti,clkctrl-l4-per" 22 + "ti,clkctrl-l4-secure" 23 + "ti,clkctrl-l4-wkup" 20 24 - #clock-cells : shall contain 2 with the first entry being the instance 21 25 offset from the clock domain base and the second being the 22 26 clock index 27 + - reg : clock registers 23 28 24 29 Example: Clock controller node on omap 4430: 25 30 26 31 &cm2 { 27 32 l4per: cm@1400 { 28 33 cm_l4per@0 { 29 - cm_l4per_clkctrl: clk@20 { 30 - compatible = "ti,clkctrl"; 34 + cm_l4per_clkctrl: clock@20 { 35 + compatible = "ti,clkctrl-l4-per", "ti,clkctrl"; 31 36 reg = <0x20 0x1b0>; 32 37 #clock-cells = <2>; 33 38 };
+2 -2
Documentation/devicetree/bindings/clock/ti/dra7-atl.txt
··· 43 43 - aws : Audio word select signal selection 44 44 }; 45 45 46 - For valid word select signals, see the dt-bindings/clk/ti-dra7-atl.h include 46 + For valid word select signals, see the dt-bindings/clock/ti-dra7-atl.h include 47 47 file. 48 48 49 49 Examples: ··· 83 83 clock-names = "fck"; 84 84 }; 85 85 86 - #include <dt-bindings/clk/ti-dra7-atl.h> 86 + #include <dt-bindings/clock/ti-dra7-atl.h> 87 87 88 88 &atl { 89 89
+1 -1
arch/arm/boot/dts/am335x-sancloud-bbe.dts
··· 108 108 109 109 &cpsw_emac0 { 110 110 phy-handle = <&ethphy0>; 111 - phy-mode = "rgmii-txid"; 111 + phy-mode = "rgmii-id"; 112 112 }; 113 113 114 114 &i2c0 {
-16
arch/arm/boot/dts/am33xx-l4.dtsi
··· 225 225 226 226 target-module@d000 { /* 0x44e0d000, ap 20 38.0 */ 227 227 compatible = "ti,sysc-omap4", "ti,sysc"; 228 - ti,hwmods = "adc_tsc"; 229 228 reg = <0xd000 0x4>, 230 229 <0xd010 0x4>; 231 230 reg-names = "rev", "sysc"; ··· 1008 1009 1009 1010 target-module@30000 { /* 0x48030000, ap 77 08.0 */ 1010 1011 compatible = "ti,sysc-omap2", "ti,sysc"; 1011 - ti,hwmods = "spi0"; 1012 1012 reg = <0x30000 0x4>, 1013 1013 <0x30110 0x4>, 1014 1014 <0x30114 0x4>; ··· 1132 1134 1133 1135 target-module@42000 { /* 0x48042000, ap 24 1c.0 */ 1134 1136 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1135 - ti,hwmods = "timer3"; 1136 1137 reg = <0x42000 0x4>, 1137 1138 <0x42010 0x4>, 1138 1139 <0x42014 0x4>; ··· 1157 1160 1158 1161 target-module@44000 { /* 0x48044000, ap 26 26.0 */ 1159 1162 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1160 - ti,hwmods = "timer4"; 1161 1163 reg = <0x44000 0x4>, 1162 1164 <0x44010 0x4>, 1163 1165 <0x44014 0x4>; ··· 1183 1187 1184 1188 target-module@46000 { /* 0x48046000, ap 28 28.0 */ 1185 1189 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1186 - ti,hwmods = "timer5"; 1187 1190 reg = <0x46000 0x4>, 1188 1191 <0x46010 0x4>, 1189 1192 <0x46014 0x4>; ··· 1209 1214 1210 1215 target-module@48000 { /* 0x48048000, ap 30 22.0 */ 1211 1216 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1212 - ti,hwmods = "timer6"; 1213 1217 reg = <0x48000 0x4>, 1214 1218 <0x48010 0x4>, 1215 1219 <0x48014 0x4>; ··· 1235 1241 1236 1242 target-module@4a000 { /* 0x4804a000, ap 85 60.0 */ 1237 1243 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1238 - ti,hwmods = "timer7"; 1239 1244 reg = <0x4a000 0x4>, 1240 1245 <0x4a010 0x4>, 1241 1246 <0x4a014 0x4>; ··· 1337 1344 1338 1345 target-module@80000 { /* 0x48080000, ap 38 18.0 */ 1339 1346 compatible = "ti,sysc-omap2", "ti,sysc"; 1340 - ti,hwmods = "elm"; 1341 1347 reg = <0x80000 0x4>, 1342 1348 <0x80010 0x4>, 1343 1349 <0x80014 0x4>; ··· 1404 1412 1405 1413 target-module@ca000 { /* 0x480ca000, ap 91 40.0 */ 1406 1414 compatible = "ti,sysc-omap2", "ti,sysc"; 1407 - ti,hwmods = "spinlock"; 1408 1415 reg = <0xca000 0x4>, 1409 1416 <0xca010 0x4>, 1410 1417 <0xca014 0x4>; ··· 1524 1533 1525 1534 target-module@a0000 { /* 0x481a0000, ap 79 24.0 */ 1526 1535 compatible = "ti,sysc-omap2", "ti,sysc"; 1527 - ti,hwmods = "spi1"; 1528 1536 reg = <0xa0000 0x4>, 1529 1537 <0xa0110 0x4>, 1530 1538 <0xa0114 0x4>; ··· 1739 1749 compatible = "ti,sysc-omap4", "ti,sysc"; 1740 1750 reg = <0xcc020 0x4>; 1741 1751 reg-names = "rev"; 1742 - ti,hwmods = "d_can0"; 1743 1752 /* Domains (P, C): per_pwrdm, l4ls_clkdm */ 1744 1753 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN0_CLKCTRL 0>, 1745 1754 <&dcan0_fck>; ··· 1762 1773 compatible = "ti,sysc-omap4", "ti,sysc"; 1763 1774 reg = <0xd0020 0x4>; 1764 1775 reg-names = "rev"; 1765 - ti,hwmods = "d_can1"; 1766 1776 /* Domains (P, C): per_pwrdm, l4ls_clkdm */ 1767 1777 clocks = <&l4ls_clkctrl AM3_L4LS_D_CAN1_CLKCTRL 0>, 1768 1778 <&dcan1_fck>; ··· 1851 1863 1852 1864 target-module@0 { /* 0x48300000, ap 66 48.0 */ 1853 1865 compatible = "ti,sysc-omap4", "ti,sysc"; 1854 - ti,hwmods = "epwmss0"; 1855 1866 reg = <0x0 0x4>, 1856 1867 <0x4 0x4>; 1857 1868 reg-names = "rev", "sysc"; ··· 1903 1916 1904 1917 target-module@2000 { /* 0x48302000, ap 68 52.0 */ 1905 1918 compatible = "ti,sysc-omap4", "ti,sysc"; 1906 - ti,hwmods = "epwmss1"; 1907 1919 reg = <0x2000 0x4>, 1908 1920 <0x2004 0x4>; 1909 1921 reg-names = "rev", "sysc"; ··· 1955 1969 1956 1970 target-module@4000 { /* 0x48304000, ap 70 44.0 */ 1957 1971 compatible = "ti,sysc-omap4", "ti,sysc"; 1958 - ti,hwmods = "epwmss2"; 1959 1972 reg = <0x4000 0x4>, 1960 1973 <0x4004 0x4>; 1961 1974 reg-names = "rev", "sysc"; ··· 2007 2022 2008 2023 target-module@e000 { /* 0x4830e000, ap 72 4a.0 */ 2009 2024 compatible = "ti,sysc-omap4", "ti,sysc"; 2010 - ti,hwmods = "lcdc"; 2011 2025 reg = <0xe000 0x4>, 2012 2026 <0xe054 0x4>; 2013 2027 reg-names = "rev", "sysc";
+54 -15
arch/arm/boot/dts/am33xx.dtsi
··· 439 439 status = "disabled"; 440 440 }; 441 441 442 - sham: sham@53100000 { 443 - compatible = "ti,omap4-sham"; 444 - ti,hwmods = "sham"; 445 - reg = <0x53100000 0x200>; 446 - interrupts = <109>; 447 - dmas = <&edma 36 0>; 448 - dma-names = "rx"; 442 + sham_target: target-module@53100000 { 443 + compatible = "ti,sysc-omap3-sham", "ti,sysc"; 444 + reg = <0x53100100 0x4>, 445 + <0x53100110 0x4>, 446 + <0x53100114 0x4>; 447 + reg-names = "rev", "sysc", "syss"; 448 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 449 + SYSC_OMAP2_AUTOIDLE)>; 450 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 451 + <SYSC_IDLE_NO>, 452 + <SYSC_IDLE_SMART>; 453 + ti,syss-mask = <1>; 454 + /* Domains (P, C): per_pwrdm, l3_clkdm */ 455 + clocks = <&l3_clkctrl AM3_L3_SHAM_CLKCTRL 0>; 456 + clock-names = "fck"; 457 + #address-cells = <1>; 458 + #size-cells = <1>; 459 + ranges = <0x0 0x53100000 0x1000>; 460 + 461 + sham: sham@0 { 462 + compatible = "ti,omap4-sham"; 463 + reg = <0 0x200>; 464 + interrupts = <109>; 465 + dmas = <&edma 36 0>; 466 + dma-names = "rx"; 467 + }; 449 468 }; 450 469 451 - aes: aes@53500000 { 452 - compatible = "ti,omap4-aes"; 453 - ti,hwmods = "aes"; 454 - reg = <0x53500000 0xa0>; 455 - interrupts = <103>; 456 - dmas = <&edma 6 0>, 457 - <&edma 5 0>; 458 - dma-names = "tx", "rx"; 470 + aes_target: target-module@53500000 { 471 + compatible = "ti,sysc-omap2", "ti,sysc"; 472 + reg = <0x53500080 0x4>, 473 + <0x53500084 0x4>, 474 + <0x53500088 0x4>; 475 + reg-names = "rev", "sysc", "syss"; 476 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 477 + SYSC_OMAP2_AUTOIDLE)>; 478 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 479 + <SYSC_IDLE_NO>, 480 + <SYSC_IDLE_SMART>, 481 + <SYSC_IDLE_SMART_WKUP>; 482 + ti,syss-mask = <1>; 483 + /* Domains (P, C): per_pwrdm, l3_clkdm */ 484 + clocks = <&l3_clkctrl AM3_L3_AES_CLKCTRL 0>; 485 + clock-names = "fck"; 486 + #address-cells = <1>; 487 + #size-cells = <1>; 488 + ranges = <0x0 0x53500000 0x1000>; 489 + 490 + aes: aes@0 { 491 + compatible = "ti,omap4-aes"; 492 + reg = <0 0xa0>; 493 + interrupts = <103>; 494 + dmas = <&edma 6 0>, 495 + <&edma 5 0>; 496 + dma-names = "tx", "rx"; 497 + }; 459 498 }; 460 499 }; 461 500 };
+109 -33
arch/arm/boot/dts/am4372.dtsi
··· 256 256 }; 257 257 }; 258 258 259 - sham: sham@53100000 { 260 - compatible = "ti,omap5-sham"; 261 - ti,hwmods = "sham"; 262 - reg = <0x53100000 0x300>; 263 - dmas = <&edma 36 0>; 264 - dma-names = "rx"; 265 - interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; 259 + sham_target: target-module@53100000 { 260 + compatible = "ti,sysc-omap3-sham", "ti,sysc"; 261 + reg = <0x53100100 0x4>, 262 + <0x53100110 0x4>, 263 + <0x53100114 0x4>; 264 + reg-names = "rev", "sysc", "syss"; 265 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 266 + SYSC_OMAP2_AUTOIDLE)>; 267 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 268 + <SYSC_IDLE_NO>, 269 + <SYSC_IDLE_SMART>; 270 + ti,syss-mask = <1>; 271 + /* Domains (P, C): per_pwrdm, l3_clkdm */ 272 + clocks = <&l3_clkctrl AM4_L3_SHAM_CLKCTRL 0>; 273 + clock-names = "fck"; 274 + #address-cells = <1>; 275 + #size-cells = <1>; 276 + ranges = <0x0 0x53100000 0x1000>; 277 + 278 + sham: sham@0 { 279 + compatible = "ti,omap5-sham"; 280 + reg = <0 0x300>; 281 + dmas = <&edma 36 0>; 282 + dma-names = "rx"; 283 + interrupts = <GIC_SPI 109 IRQ_TYPE_LEVEL_HIGH>; 284 + }; 266 285 }; 267 286 268 - aes: aes@53501000 { 269 - compatible = "ti,omap4-aes"; 270 - ti,hwmods = "aes"; 271 - reg = <0x53501000 0xa0>; 272 - interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 273 - dmas = <&edma 6 0>, 274 - <&edma 5 0>; 275 - dma-names = "tx", "rx"; 287 + aes_target: target-module@53501000 { 288 + compatible = "ti,sysc-omap2", "ti,sysc"; 289 + reg = <0x53501080 0x4>, 290 + <0x53501084 0x4>, 291 + <0x53501088 0x4>; 292 + reg-names = "rev", "sysc", "syss"; 293 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 294 + SYSC_OMAP2_AUTOIDLE)>; 295 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 296 + <SYSC_IDLE_NO>, 297 + <SYSC_IDLE_SMART>, 298 + <SYSC_IDLE_SMART_WKUP>; 299 + ti,syss-mask = <1>; 300 + /* Domains (P, C): per_pwrdm, l3_clkdm */ 301 + clocks = <&l3_clkctrl AM4_L3_AES_CLKCTRL 0>; 302 + clock-names = "fck"; 303 + #address-cells = <1>; 304 + #size-cells = <1>; 305 + ranges = <0x0 0x53501000 0x1000>; 306 + 307 + aes: aes@0 { 308 + compatible = "ti,omap4-aes"; 309 + reg = <0 0xa0>; 310 + interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>; 311 + dmas = <&edma 6 0>, 312 + <&edma 5 0>; 313 + dma-names = "tx", "rx"; 314 + }; 276 315 }; 277 316 278 - des: des@53701000 { 279 - compatible = "ti,omap4-des"; 280 - ti,hwmods = "des"; 281 - reg = <0x53701000 0xa0>; 282 - interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>; 283 - dmas = <&edma 34 0>, 284 - <&edma 33 0>; 285 - dma-names = "tx", "rx"; 317 + des_target: target-module@53701000 { 318 + compatible = "ti,sysc-omap2", "ti,sysc"; 319 + reg = <0x53701030 0x4>, 320 + <0x53701034 0x4>, 321 + <0x53701038 0x4>; 322 + reg-names = "rev", "sysc", "syss"; 323 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 324 + SYSC_OMAP2_AUTOIDLE)>; 325 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 326 + <SYSC_IDLE_NO>, 327 + <SYSC_IDLE_SMART>, 328 + <SYSC_IDLE_SMART_WKUP>; 329 + ti,syss-mask = <1>; 330 + /* Domains (P, C): per_pwrdm, l3_clkdm */ 331 + clocks = <&l3_clkctrl AM4_L3_DES_CLKCTRL 0>; 332 + clock-names = "fck"; 333 + #address-cells = <1>; 334 + #size-cells = <1>; 335 + ranges = <0 0x53701000 0x1000>; 336 + 337 + des: des@0 { 338 + compatible = "ti,omap4-des"; 339 + reg = <0 0xa0>; 340 + interrupts = <GIC_SPI 130 IRQ_TYPE_LEVEL_HIGH>; 341 + dmas = <&edma 34 0>, 342 + <&edma 33 0>; 343 + dma-names = "tx", "rx"; 344 + }; 286 345 }; 287 346 288 347 gpmc: gpmc@50000000 { ··· 364 305 status = "disabled"; 365 306 }; 366 307 367 - qspi: spi@47900000 { 368 - compatible = "ti,am4372-qspi"; 369 - reg = <0x47900000 0x100>, 370 - <0x30000000 0x4000000>; 371 - reg-names = "qspi_base", "qspi_mmap"; 308 + target-module@47900000 { 309 + compatible = "ti,sysc-omap4", "ti,sysc"; 310 + reg = <0x47900000 0x4>, 311 + <0x47900010 0x4>; 312 + reg-names = "rev", "sysc"; 313 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 314 + <SYSC_IDLE_NO>, 315 + <SYSC_IDLE_SMART>, 316 + <SYSC_IDLE_SMART_WKUP>; 317 + clocks = <&l3s_clkctrl AM4_L3S_QSPI_CLKCTRL 0>; 318 + clock-names = "fck"; 372 319 #address-cells = <1>; 373 - #size-cells = <0>; 374 - ti,hwmods = "qspi"; 375 - interrupts = <0 138 0x4>; 376 - num-cs = <4>; 377 - status = "disabled"; 320 + #size-cells = <1>; 321 + ranges = <0x0 0x47900000 0x1000>, 322 + <0x30000000 0x30000000 0x4000000>; 323 + 324 + qspi: spi@0 { 325 + compatible = "ti,am4372-qspi"; 326 + reg = <0 0x100>, 327 + <0x30000000 0x4000000>; 328 + reg-names = "qspi_base", "qspi_mmap"; 329 + clocks = <&dpll_per_m2_div4_ck>; 330 + clock-names = "fck"; 331 + #address-cells = <1>; 332 + #size-cells = <0>; 333 + interrupts = <0 138 0x4>; 334 + num-cs = <4>; 335 + }; 378 336 }; 379 337 380 338 dss: dss@4832a000 {
+1 -1
arch/arm/boot/dts/am437x-gp-evm.dts
··· 86 86 }; 87 87 88 88 lcd0: display { 89 - compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; 89 + compatible = "osddisplays,osd070t1718-19ts", "panel-dpi"; 90 90 label = "lcd"; 91 91 92 92 backlight = <&lcd_bl>;
-29
arch/arm/boot/dts/am437x-l4.dtsi
··· 225 225 226 226 target-module@d000 { /* 0x44e0d000, ap 20 38.0 */ 227 227 compatible = "ti,sysc-omap4", "ti,sysc"; 228 - ti,hwmods = "adc_tsc"; 229 228 reg = <0xd000 0x4>, 230 229 <0xd010 0x4>; 231 230 reg-names = "rev", "sysc"; ··· 762 763 763 764 target-module@30000 { /* 0x48030000, ap 65 08.0 */ 764 765 compatible = "ti,sysc-omap2", "ti,sysc"; 765 - ti,hwmods = "spi0"; 766 766 reg = <0x30000 0x4>, 767 767 <0x30110 0x4>, 768 768 <0x30114 0x4>; ··· 898 900 899 901 target-module@42000 { /* 0x48042000, ap 20 24.0 */ 900 902 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 901 - ti,hwmods = "timer3"; 902 903 reg = <0x42000 0x4>, 903 904 <0x42010 0x4>, 904 905 <0x42014 0x4>; ··· 924 927 925 928 target-module@44000 { /* 0x48044000, ap 22 26.0 */ 926 929 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 927 - ti,hwmods = "timer4"; 928 930 reg = <0x44000 0x4>, 929 931 <0x44010 0x4>, 930 932 <0x44014 0x4>; ··· 951 955 952 956 target-module@46000 { /* 0x48046000, ap 24 28.0 */ 953 957 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 954 - ti,hwmods = "timer5"; 955 958 reg = <0x46000 0x4>, 956 959 <0x46010 0x4>, 957 960 <0x46014 0x4>; ··· 978 983 979 984 target-module@48000 { /* 0x48048000, ap 26 1a.0 */ 980 985 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 981 - ti,hwmods = "timer6"; 982 986 reg = <0x48000 0x4>, 983 987 <0x48010 0x4>, 984 988 <0x48014 0x4>; ··· 1005 1011 1006 1012 target-module@4a000 { /* 0x4804a000, ap 71 48.0 */ 1007 1013 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1008 - ti,hwmods = "timer7"; 1009 1014 reg = <0x4a000 0x4>, 1010 1015 <0x4a010 0x4>, 1011 1016 <0x4a014 0x4>; ··· 1100 1107 1101 1108 target-module@80000 { /* 0x48080000, ap 32 18.0 */ 1102 1109 compatible = "ti,sysc-omap2", "ti,sysc"; 1103 - ti,hwmods = "elm"; 1104 1110 reg = <0x80000 0x4>, 1105 1111 <0x80010 0x4>, 1106 1112 <0x80014 0x4>; ··· 1161 1169 1162 1170 target-module@ca000 { /* 0x480ca000, ap 77 38.0 */ 1163 1171 compatible = "ti,sysc-omap2", "ti,sysc"; 1164 - ti,hwmods = "spinlock"; 1165 1172 reg = <0xca000 0x4>, 1166 1173 <0xca010 0x4>, 1167 1174 <0xca014 0x4>; ··· 1273 1282 1274 1283 target-module@a0000 { /* 0x481a0000, ap 67 2c.0 */ 1275 1284 compatible = "ti,sysc-omap2", "ti,sysc"; 1276 - ti,hwmods = "spi1"; 1277 1285 reg = <0xa0000 0x4>, 1278 1286 <0xa0110 0x4>, 1279 1287 <0xa0114 0x4>; ··· 1303 1313 1304 1314 target-module@a2000 { /* 0x481a2000, ap 69 2e.0 */ 1305 1315 compatible = "ti,sysc-omap2", "ti,sysc"; 1306 - ti,hwmods = "spi2"; 1307 1316 reg = <0xa2000 0x4>, 1308 1317 <0xa2110 0x4>, 1309 1318 <0xa2114 0x4>; ··· 1333 1344 1334 1345 target-module@a4000 { /* 0x481a4000, ap 92 62.0 */ 1335 1346 compatible = "ti,sysc-omap2", "ti,sysc"; 1336 - ti,hwmods = "spi3"; 1337 1347 reg = <0xa4000 0x4>, 1338 1348 <0xa4110 0x4>, 1339 1349 <0xa4114 0x4>; ··· 1515 1527 1516 1528 target-module@c1000 { /* 0x481c1000, ap 94 68.0 */ 1517 1529 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1518 - ti,hwmods = "timer8"; 1519 1530 reg = <0xc1000 0x4>, 1520 1531 <0xc1010 0x4>, 1521 1532 <0xc1014 0x4>; ··· 1543 1556 compatible = "ti,sysc-omap4", "ti,sysc"; 1544 1557 reg = <0xcc020 0x4>; 1545 1558 reg-names = "rev"; 1546 - ti,hwmods = "d_can0"; 1547 1559 /* Domains (P, C): per_pwrdm, l4ls_clkdm */ 1548 1560 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN0_CLKCTRL 0>; 1549 1561 clock-names = "fck"; ··· 1563 1577 compatible = "ti,sysc-omap4", "ti,sysc"; 1564 1578 reg = <0xd0020 0x4>; 1565 1579 reg-names = "rev"; 1566 - ti,hwmods = "d_can1"; 1567 1580 /* Domains (P, C): per_pwrdm, l4ls_clkdm */ 1568 1581 clocks = <&l4ls_clkctrl AM4_L4LS_D_CAN1_CLKCTRL 0>; 1569 1582 clock-names = "fck"; ··· 1680 1695 1681 1696 target-module@0 { /* 0x48300000, ap 56 40.0 */ 1682 1697 compatible = "ti,sysc-omap4", "ti,sysc"; 1683 - ti,hwmods = "epwmss0"; 1684 1698 reg = <0x0 0x4>, 1685 1699 <0x4 0x4>; 1686 1700 reg-names = "rev", "sysc"; ··· 1732 1748 1733 1749 target-module@2000 { /* 0x48302000, ap 58 4a.0 */ 1734 1750 compatible = "ti,sysc-omap4", "ti,sysc"; 1735 - ti,hwmods = "epwmss1"; 1736 1751 reg = <0x2000 0x4>, 1737 1752 <0x2004 0x4>; 1738 1753 reg-names = "rev", "sysc"; ··· 1784 1801 1785 1802 target-module@4000 { /* 0x48304000, ap 60 44.0 */ 1786 1803 compatible = "ti,sysc-omap4", "ti,sysc"; 1787 - ti,hwmods = "epwmss2"; 1788 1804 reg = <0x4000 0x4>, 1789 1805 <0x4004 0x4>; 1790 1806 reg-names = "rev", "sysc"; ··· 1836 1854 1837 1855 target-module@6000 { /* 0x48306000, ap 96 58.0 */ 1838 1856 compatible = "ti,sysc-omap4", "ti,sysc"; 1839 - ti,hwmods = "epwmss3"; 1840 1857 reg = <0x6000 0x4>, 1841 1858 <0x6004 0x4>; 1842 1859 reg-names = "rev", "sysc"; ··· 1877 1896 1878 1897 target-module@8000 { /* 0x48308000, ap 98 54.0 */ 1879 1898 compatible = "ti,sysc-omap4", "ti,sysc"; 1880 - ti,hwmods = "epwmss4"; 1881 1899 reg = <0x8000 0x4>, 1882 1900 <0x8004 0x4>; 1883 1901 reg-names = "rev", "sysc"; ··· 1918 1938 1919 1939 target-module@a000 { /* 0x4830a000, ap 100 60.0 */ 1920 1940 compatible = "ti,sysc-omap4", "ti,sysc"; 1921 - ti,hwmods = "epwmss5"; 1922 1941 reg = <0xa000 0x4>, 1923 1942 <0xa004 0x4>; 1924 1943 reg-names = "rev", "sysc"; ··· 2065 2086 2066 2087 target-module@26000 { /* 0x48326000, ap 86 66.0 */ 2067 2088 compatible = "ti,sysc-omap4", "ti,sysc"; 2068 - ti,hwmods = "vpfe0"; 2069 2089 reg = <0x26000 0x4>, 2070 2090 <0x26104 0x4>; 2071 2091 reg-names = "rev", "sysc"; ··· 2091 2113 2092 2114 target-module@28000 { /* 0x48328000, ap 75 0e.0 */ 2093 2115 compatible = "ti,sysc-omap4", "ti,sysc"; 2094 - ti,hwmods = "vpfe1"; 2095 2116 reg = <0x28000 0x4>, 2096 2117 <0x28104 0x4>; 2097 2118 reg-names = "rev", "sysc"; ··· 2139 2162 2140 2163 target-module@3d000 { /* 0x4833d000, ap 102 6e.0 */ 2141 2164 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 2142 - ti,hwmods = "timer9"; 2143 2165 reg = <0x3d000 0x4>, 2144 2166 <0x3d010 0x4>, 2145 2167 <0x3d014 0x4>; ··· 2165 2189 2166 2190 target-module@3f000 { /* 0x4833f000, ap 104 5c.0 */ 2167 2191 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 2168 - ti,hwmods = "timer10"; 2169 2192 reg = <0x3f000 0x4>, 2170 2193 <0x3f010 0x4>, 2171 2194 <0x3f014 0x4>; ··· 2191 2216 2192 2217 target-module@41000 { /* 0x48341000, ap 106 76.0 */ 2193 2218 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 2194 - ti,hwmods = "timer11"; 2195 2219 reg = <0x41000 0x4>, 2196 2220 <0x41010 0x4>, 2197 2221 <0x41014 0x4>; ··· 2217 2243 2218 2244 target-module@45000 { /* 0x48345000, ap 108 6a.0 */ 2219 2245 compatible = "ti,sysc-omap2", "ti,sysc"; 2220 - ti,hwmods = "spi4"; 2221 2246 reg = <0x45000 0x4>, 2222 2247 <0x45110 0x4>, 2223 2248 <0x45114 0x4>; ··· 2331 2358 2332 2359 target-module@a8000 { /* 0x483a8000, ap 125 6c.0 */ 2333 2360 compatible = "ti,sysc-omap4", "ti,sysc"; 2334 - ti,hwmods = "ocp2scp0"; 2335 2361 reg = <0xa8000 0x4>; 2336 2362 reg-names = "rev"; 2337 2363 /* Domains (P, C): per_pwrdm, l4ls_clkdm */ ··· 2412 2440 2413 2441 target-module@e8000 { /* 0x483e8000, ap 129 78.0 */ 2414 2442 compatible = "ti,sysc-omap4", "ti,sysc"; 2415 - ti,hwmods = "ocp2scp1"; 2416 2443 reg = <0xe8000 0x4>; 2417 2444 reg-names = "rev"; 2418 2445 /* Domains (P, C): per_pwrdm, l4ls_clkdm */
+1 -1
arch/arm/boot/dts/am43x-epos-evm.dts
··· 42 42 }; 43 43 44 44 lcd0: display { 45 - compatible = "osddisplays,osd057T0559-34ts", "panel-dpi"; 45 + compatible = "osddisplays,osd070t1718-19ts", "panel-dpi"; 46 46 label = "lcd"; 47 47 48 48 backlight = <&lcd_bl>;
+1 -1
arch/arm/boot/dts/dra7-evm-common.dtsi
··· 4 4 */ 5 5 6 6 #include <dt-bindings/gpio/gpio.h> 7 - #include <dt-bindings/clk/ti-dra7-atl.h> 7 + #include <dt-bindings/clock/ti-dra7-atl.h> 8 8 #include <dt-bindings/input/input.h> 9 9 10 10 / {
+32 -23
arch/arm/boot/dts/dra7-l4.dtsi
··· 186 186 187 187 target-module@56000 { /* 0x4a056000, ap 9 02.0 */ 188 188 compatible = "ti,sysc-omap2", "ti,sysc"; 189 - ti,hwmods = "dma_system"; 190 189 reg = <0x56000 0x4>, 191 190 <0x5602c 0x4>, 192 191 <0x56028 0x4>; ··· 211 212 ranges = <0x0 0x56000 0x1000>; 212 213 213 214 sdma: dma-controller@0 { 214 - compatible = "ti,omap4430-sdma"; 215 + compatible = "ti,omap4430-sdma", "ti,omap-sdma"; 215 216 reg = <0x0 0x1000>; 216 217 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, 217 218 <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>, ··· 233 234 234 235 target-module@80000 { /* 0x4a080000, ap 13 20.0 */ 235 236 compatible = "ti,sysc-omap2", "ti,sysc"; 236 - ti,hwmods = "ocp2scp1"; 237 237 reg = <0x80000 0x4>, 238 238 <0x80010 0x4>, 239 239 <0x80014 0x4>; ··· 300 302 301 303 target-module@90000 { /* 0x4a090000, ap 59 42.0 */ 302 304 compatible = "ti,sysc-omap2", "ti,sysc"; 303 - ti,hwmods = "ocp2scp3"; 304 305 reg = <0x90000 0x4>, 305 306 <0x90010 0x4>, 306 307 <0x90014 0x4>; ··· 391 394 392 395 target-module@d9000 { /* 0x4a0d9000, ap 17 72.0 */ 393 396 compatible = "ti,sysc-omap4-sr", "ti,sysc"; 394 - ti,hwmods = "smartreflex_mpu"; 395 397 reg = <0xd9038 0x4>; 396 398 reg-names = "sysc"; 397 399 ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>; ··· 410 414 411 415 target-module@dd000 { /* 0x4a0dd000, ap 19 18.0 */ 412 416 compatible = "ti,sysc-omap4-sr", "ti,sysc"; 413 - ti,hwmods = "smartreflex_core"; 414 417 reg = <0xdd038 0x4>; 415 418 reg-names = "sysc"; 416 419 ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>; ··· 466 471 467 472 target-module@f6000 { /* 0x4a0f6000, ap 25 78.0 */ 468 473 compatible = "ti,sysc-omap2", "ti,sysc"; 469 - ti,hwmods = "spinlock"; 470 474 reg = <0xf6000 0x4>, 471 475 <0xf6010 0x4>, 472 476 <0xf6014 0x4>; ··· 1227 1233 1228 1234 target-module@3e000 { /* 0x4803e000, ap 11 56.0 */ 1229 1235 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1230 - ti,hwmods = "timer9"; 1231 1236 reg = <0x3e000 0x4>, 1232 1237 <0x3e010 0x4>; 1233 1238 reg-names = "rev", "sysc"; ··· 1741 1748 1742 1749 target-module@78000 { /* 0x48078000, ap 39 0a.0 */ 1743 1750 compatible = "ti,sysc-omap2", "ti,sysc"; 1744 - ti,hwmods = "elm"; 1745 1751 reg = <0x78000 0x4>, 1746 1752 <0x78010 0x4>, 1747 1753 <0x78014 0x4>; ··· 1834 1842 1835 1843 target-module@86000 { /* 0x48086000, ap 41 5e.0 */ 1836 1844 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1837 - ti,hwmods = "timer10"; 1838 1845 reg = <0x86000 0x4>, 1839 1846 <0x86010 0x4>; 1840 1847 reg-names = "rev", "sysc"; ··· 1861 1870 1862 1871 target-module@88000 { /* 0x48088000, ap 43 66.0 */ 1863 1872 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1864 - ti,hwmods = "timer11"; 1865 1873 reg = <0x88000 0x4>, 1866 1874 <0x88010 0x4>; 1867 1875 reg-names = "rev", "sysc"; ··· 2032 2042 #size-cells = <1>; 2033 2043 ranges = <0x00000000 0x000a4000 0x00001000>, 2034 2044 <0x00001000 0x000a5000 0x00001000>; 2045 + }; 2046 + 2047 + des_target: target-module@a5000 { /* 0x480a5000 */ 2048 + compatible = "ti,sysc-omap2", "ti,sysc"; 2049 + reg = <0xa5030 0x4>, 2050 + <0xa5034 0x4>, 2051 + <0xa5038 0x4>; 2052 + reg-names = "rev", "sysc", "syss"; 2053 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 2054 + SYSC_OMAP2_AUTOIDLE)>; 2055 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 2056 + <SYSC_IDLE_NO>, 2057 + <SYSC_IDLE_SMART>, 2058 + <SYSC_IDLE_SMART_WKUP>; 2059 + ti,syss-mask = <1>; 2060 + /* Domains (P, C): l4per_pwrdm, l4sec_clkdm */ 2061 + clocks = <&l4sec_clkctrl DRA7_L4SEC_DES_CLKCTRL 0>; 2062 + clock-names = "fck"; 2063 + #address-cells = <1>; 2064 + #size-cells = <1>; 2065 + ranges = <0 0xa5000 0x00001000>; 2066 + 2067 + des: des@0 { 2068 + compatible = "ti,omap4-des"; 2069 + reg = <0 0xa0>; 2070 + interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 2071 + dmas = <&sdma_xbar 117>, <&sdma_xbar 116>; 2072 + dma-names = "tx", "rx"; 2073 + clocks = <&l3_iclk_div>; 2074 + clock-names = "fck"; 2075 + }; 2035 2076 }; 2036 2077 2037 2078 target-module@a8000 { /* 0x480a8000, ap 59 1a.0 */ ··· 2511 2490 2512 2491 target-module@3e000 { /* 0x4843e000, ap 25 30.0 */ 2513 2492 compatible = "ti,sysc-omap4", "ti,sysc"; 2514 - ti,hwmods = "epwmss0"; 2515 2493 reg = <0x3e000 0x4>, 2516 2494 <0x3e004 0x4>; 2517 2495 reg-names = "rev", "sysc"; ··· 2557 2537 2558 2538 target-module@40000 { /* 0x48440000, ap 27 38.0 */ 2559 2539 compatible = "ti,sysc-omap4", "ti,sysc"; 2560 - ti,hwmods = "epwmss1"; 2561 2540 reg = <0x40000 0x4>, 2562 2541 <0x40004 0x4>; 2563 2542 reg-names = "rev", "sysc"; ··· 2603 2584 2604 2585 target-module@42000 { /* 0x48442000, ap 29 20.0 */ 2605 2586 compatible = "ti,sysc-omap4", "ti,sysc"; 2606 - ti,hwmods = "epwmss2"; 2607 2587 reg = <0x42000 0x4>, 2608 2588 <0x42004 0x4>; 2609 2589 reg-names = "rev", "sysc"; ··· 3344 3326 3345 3327 target-module@20000 { /* 0x48820000, ap 5 08.0 */ 3346 3328 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3347 - ti,hwmods = "timer5"; 3348 3329 reg = <0x20000 0x4>, 3349 3330 <0x20010 0x4>; 3350 3331 reg-names = "rev", "sysc"; ··· 3371 3354 3372 3355 target-module@22000 { /* 0x48822000, ap 7 24.0 */ 3373 3356 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3374 - ti,hwmods = "timer6"; 3375 3357 reg = <0x22000 0x4>, 3376 3358 <0x22010 0x4>; 3377 3359 reg-names = "rev", "sysc"; ··· 3398 3382 3399 3383 target-module@24000 { /* 0x48824000, ap 9 26.0 */ 3400 3384 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3401 - ti,hwmods = "timer7"; 3402 3385 reg = <0x24000 0x4>, 3403 3386 <0x24010 0x4>; 3404 3387 reg-names = "rev", "sysc"; ··· 3425 3410 3426 3411 target-module@26000 { /* 0x48826000, ap 11 0c.0 */ 3427 3412 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3428 - ti,hwmods = "timer8"; 3429 3413 reg = <0x26000 0x4>, 3430 3414 <0x26010 0x4>; 3431 3415 reg-names = "rev", "sysc"; ··· 3452 3438 3453 3439 target-module@28000 { /* 0x48828000, ap 13 16.0 */ 3454 3440 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3455 - ti,hwmods = "timer13"; 3456 3441 reg = <0x28000 0x4>, 3457 3442 <0x28010 0x4>; 3458 3443 reg-names = "rev", "sysc"; ··· 3479 3466 3480 3467 target-module@2a000 { /* 0x4882a000, ap 15 10.0 */ 3481 3468 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3482 - ti,hwmods = "timer14"; 3483 3469 reg = <0x2a000 0x4>, 3484 3470 <0x2a010 0x4>; 3485 3471 reg-names = "rev", "sysc"; ··· 3506 3494 3507 3495 target-module@2c000 { /* 0x4882c000, ap 17 02.0 */ 3508 3496 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3509 - ti,hwmods = "timer15"; 3510 3497 reg = <0x2c000 0x4>, 3511 3498 <0x2c010 0x4>; 3512 3499 reg-names = "rev", "sysc"; ··· 3533 3522 3534 3523 target-module@2e000 { /* 0x4882e000, ap 19 14.0 */ 3535 3524 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 3536 - ti,hwmods = "timer16"; 3537 3525 reg = <0x2e000 0x4>, 3538 3526 <0x2e010 0x4>; 3539 3527 reg-names = "rev", "sysc"; ··· 4432 4422 4433 4423 target-module@0 { /* 0x4ae20000, ap 19 08.0 */ 4434 4424 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 4435 - ti,hwmods = "timer12"; 4436 4425 reg = <0x0 0x4>, 4437 4426 <0x10 0x4>; 4438 4427 reg-names = "rev", "sysc";
+190 -66
arch/arm/boot/dts/dra7.dtsi
··· 377 377 ti,hwmods = "dmm"; 378 378 }; 379 379 380 - mmu0_dsp1: mmu@40d01000 { 381 - compatible = "ti,dra7-dsp-iommu"; 382 - reg = <0x40d01000 0x100>; 383 - interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 384 - ti,hwmods = "mmu0_dsp1"; 385 - #iommu-cells = <0>; 386 - ti,syscon-mmuconfig = <&dsp1_system 0x0>; 387 - status = "disabled"; 380 + target-module@40d01000 { 381 + compatible = "ti,sysc-omap2", "ti,sysc"; 382 + reg = <0x40d01000 0x4>, 383 + <0x40d01010 0x4>, 384 + <0x40d01014 0x4>; 385 + reg-names = "rev", "sysc", "syss"; 386 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 387 + <SYSC_IDLE_NO>, 388 + <SYSC_IDLE_SMART>; 389 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 390 + SYSC_OMAP2_SOFTRESET | 391 + SYSC_OMAP2_AUTOIDLE)>; 392 + clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>; 393 + clock-names = "fck"; 394 + resets = <&prm_dsp1 1>; 395 + reset-names = "rstctrl"; 396 + ranges = <0x0 0x40d01000 0x1000>; 397 + #size-cells = <1>; 398 + #address-cells = <1>; 399 + 400 + mmu0_dsp1: mmu@0 { 401 + compatible = "ti,dra7-dsp-iommu"; 402 + reg = <0x0 0x100>; 403 + interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 404 + #iommu-cells = <0>; 405 + ti,syscon-mmuconfig = <&dsp1_system 0x0>; 406 + }; 388 407 }; 389 408 390 - mmu1_dsp1: mmu@40d02000 { 391 - compatible = "ti,dra7-dsp-iommu"; 392 - reg = <0x40d02000 0x100>; 393 - interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>; 394 - ti,hwmods = "mmu1_dsp1"; 395 - #iommu-cells = <0>; 396 - ti,syscon-mmuconfig = <&dsp1_system 0x1>; 397 - status = "disabled"; 409 + target-module@40d02000 { 410 + compatible = "ti,sysc-omap2", "ti,sysc"; 411 + reg = <0x40d02000 0x4>, 412 + <0x40d02010 0x4>, 413 + <0x40d02014 0x4>; 414 + reg-names = "rev", "sysc", "syss"; 415 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 416 + <SYSC_IDLE_NO>, 417 + <SYSC_IDLE_SMART>; 418 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 419 + SYSC_OMAP2_SOFTRESET | 420 + SYSC_OMAP2_AUTOIDLE)>; 421 + clocks = <&dsp1_clkctrl DRA7_DSP1_MMU0_DSP1_CLKCTRL 0>; 422 + clock-names = "fck"; 423 + resets = <&prm_dsp1 1>; 424 + reset-names = "rstctrl"; 425 + ranges = <0x0 0x40d02000 0x1000>; 426 + #size-cells = <1>; 427 + #address-cells = <1>; 428 + 429 + mmu1_dsp1: mmu@0 { 430 + compatible = "ti,dra7-dsp-iommu"; 431 + reg = <0x0 0x100>; 432 + interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_HIGH>; 433 + #iommu-cells = <0>; 434 + ti,syscon-mmuconfig = <&dsp1_system 0x1>; 435 + }; 398 436 }; 399 437 400 - mmu_ipu1: mmu@58882000 { 401 - compatible = "ti,dra7-iommu"; 402 - reg = <0x58882000 0x100>; 403 - interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>; 404 - ti,hwmods = "mmu_ipu1"; 405 - #iommu-cells = <0>; 406 - ti,iommu-bus-err-back; 407 - status = "disabled"; 438 + target-module@58882000 { 439 + compatible = "ti,sysc-omap2", "ti,sysc"; 440 + reg = <0x58882000 0x4>, 441 + <0x58882010 0x4>, 442 + <0x58882014 0x4>; 443 + reg-names = "rev", "sysc", "syss"; 444 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 445 + <SYSC_IDLE_NO>, 446 + <SYSC_IDLE_SMART>; 447 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 448 + SYSC_OMAP2_SOFTRESET | 449 + SYSC_OMAP2_AUTOIDLE)>; 450 + clocks = <&ipu1_clkctrl DRA7_IPU1_MMU_IPU1_CLKCTRL 0>; 451 + clock-names = "fck"; 452 + resets = <&prm_ipu 2>; 453 + reset-names = "rstctrl"; 454 + #address-cells = <1>; 455 + #size-cells = <1>; 456 + ranges = <0x0 0x58882000 0x100>; 457 + 458 + mmu_ipu1: mmu@0 { 459 + compatible = "ti,dra7-iommu"; 460 + reg = <0x0 0x100>; 461 + interrupts = <GIC_SPI 395 IRQ_TYPE_LEVEL_HIGH>; 462 + #iommu-cells = <0>; 463 + ti,iommu-bus-err-back; 464 + }; 408 465 }; 409 466 410 - mmu_ipu2: mmu@55082000 { 411 - compatible = "ti,dra7-iommu"; 412 - reg = <0x55082000 0x100>; 413 - interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>; 414 - ti,hwmods = "mmu_ipu2"; 415 - #iommu-cells = <0>; 416 - ti,iommu-bus-err-back; 417 - status = "disabled"; 467 + target-module@55082000 { 468 + compatible = "ti,sysc-omap2", "ti,sysc"; 469 + reg = <0x55082000 0x4>, 470 + <0x55082010 0x4>, 471 + <0x55082014 0x4>; 472 + reg-names = "rev", "sysc", "syss"; 473 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 474 + <SYSC_IDLE_NO>, 475 + <SYSC_IDLE_SMART>; 476 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 477 + SYSC_OMAP2_SOFTRESET | 478 + SYSC_OMAP2_AUTOIDLE)>; 479 + clocks = <&ipu2_clkctrl DRA7_IPU2_MMU_IPU2_CLKCTRL 0>; 480 + clock-names = "fck"; 481 + resets = <&prm_core 2>; 482 + reset-names = "rstctrl"; 483 + #address-cells = <1>; 484 + #size-cells = <1>; 485 + ranges = <0x0 0x55082000 0x100>; 486 + 487 + mmu_ipu2: mmu@0 { 488 + compatible = "ti,dra7-iommu"; 489 + reg = <0x0 0x100>; 490 + interrupts = <GIC_SPI 396 IRQ_TYPE_LEVEL_HIGH>; 491 + #iommu-cells = <0>; 492 + ti,iommu-bus-err-back; 493 + }; 418 494 }; 419 495 420 496 abb_mpu: regulator-abb-mpu { ··· 728 652 }; 729 653 }; 730 654 731 - aes1: aes@4b500000 { 732 - compatible = "ti,omap4-aes"; 733 - ti,hwmods = "aes1"; 734 - reg = <0x4b500000 0xa0>; 735 - interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 736 - dmas = <&edma_xbar 111 0>, <&edma_xbar 110 0>; 737 - dma-names = "tx", "rx"; 738 - clocks = <&l3_iclk_div>; 655 + aes1_target: target-module@4b500000 { 656 + compatible = "ti,sysc-omap2", "ti,sysc"; 657 + reg = <0x4b500080 0x4>, 658 + <0x4b500084 0x4>, 659 + <0x4b500088 0x4>; 660 + reg-names = "rev", "sysc", "syss"; 661 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 662 + SYSC_OMAP2_AUTOIDLE)>; 663 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 664 + <SYSC_IDLE_NO>, 665 + <SYSC_IDLE_SMART>, 666 + <SYSC_IDLE_SMART_WKUP>; 667 + ti,syss-mask = <1>; 668 + /* Domains (P, C): per_pwrdm, l4sec_clkdm */ 669 + clocks = <&l4sec_clkctrl DRA7_L4SEC_AES1_CLKCTRL 0>; 739 670 clock-names = "fck"; 671 + #address-cells = <1>; 672 + #size-cells = <1>; 673 + ranges = <0x0 0x4b500000 0x1000>; 674 + 675 + aes1: aes@0 { 676 + compatible = "ti,omap4-aes"; 677 + reg = <0 0xa0>; 678 + interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>; 679 + dmas = <&edma_xbar 111 0>, <&edma_xbar 110 0>; 680 + dma-names = "tx", "rx"; 681 + clocks = <&l3_iclk_div>; 682 + clock-names = "fck"; 683 + }; 740 684 }; 741 685 742 - aes2: aes@4b700000 { 743 - compatible = "ti,omap4-aes"; 744 - ti,hwmods = "aes2"; 745 - reg = <0x4b700000 0xa0>; 746 - interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>; 747 - dmas = <&edma_xbar 114 0>, <&edma_xbar 113 0>; 748 - dma-names = "tx", "rx"; 749 - clocks = <&l3_iclk_div>; 686 + aes2_target: target-module@4b700000 { 687 + compatible = "ti,sysc-omap2", "ti,sysc"; 688 + reg = <0x4b700080 0x4>, 689 + <0x4b700084 0x4>, 690 + <0x4b700088 0x4>; 691 + reg-names = "rev", "sysc", "syss"; 692 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 693 + SYSC_OMAP2_AUTOIDLE)>; 694 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 695 + <SYSC_IDLE_NO>, 696 + <SYSC_IDLE_SMART>, 697 + <SYSC_IDLE_SMART_WKUP>; 698 + ti,syss-mask = <1>; 699 + /* Domains (P, C): per_pwrdm, l4sec_clkdm */ 700 + clocks = <&l4sec_clkctrl DRA7_L4SEC_AES2_CLKCTRL 0>; 750 701 clock-names = "fck"; 702 + #address-cells = <1>; 703 + #size-cells = <1>; 704 + ranges = <0x0 0x4b700000 0x1000>; 705 + 706 + aes2: aes@0 { 707 + compatible = "ti,omap4-aes"; 708 + reg = <0 0xa0>; 709 + interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>; 710 + dmas = <&edma_xbar 114 0>, <&edma_xbar 113 0>; 711 + dma-names = "tx", "rx"; 712 + clocks = <&l3_iclk_div>; 713 + clock-names = "fck"; 714 + }; 751 715 }; 752 716 753 - des: des@480a5000 { 754 - compatible = "ti,omap4-des"; 755 - ti,hwmods = "des"; 756 - reg = <0x480a5000 0xa0>; 757 - interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>; 758 - dmas = <&sdma_xbar 117>, <&sdma_xbar 116>; 759 - dma-names = "tx", "rx"; 760 - clocks = <&l3_iclk_div>; 717 + sham_target: target-module@4b101000 { 718 + compatible = "ti,sysc-omap3-sham", "ti,sysc"; 719 + reg = <0x4b101100 0x4>, 720 + <0x4b101110 0x4>, 721 + <0x4b101114 0x4>; 722 + reg-names = "rev", "sysc", "syss"; 723 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 724 + SYSC_OMAP2_AUTOIDLE)>; 725 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 726 + <SYSC_IDLE_NO>, 727 + <SYSC_IDLE_SMART>; 728 + ti,syss-mask = <1>; 729 + /* Domains (P, C): l4per_pwrdm, l4sec_clkdm */ 730 + clocks = <&l4sec_clkctrl DRA7_L4SEC_SHAM_CLKCTRL 0>; 761 731 clock-names = "fck"; 762 - }; 732 + #address-cells = <1>; 733 + #size-cells = <1>; 734 + ranges = <0x0 0x4b101000 0x1000>; 763 735 764 - sham: sham@53100000 { 765 - compatible = "ti,omap5-sham"; 766 - ti,hwmods = "sham"; 767 - reg = <0x4b101000 0x300>; 768 - interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 769 - dmas = <&edma_xbar 119 0>; 770 - dma-names = "rx"; 771 - clocks = <&l3_iclk_div>; 772 - clock-names = "fck"; 736 + sham: sham@0 { 737 + compatible = "ti,omap5-sham"; 738 + reg = <0 0x300>; 739 + interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>; 740 + dmas = <&edma_xbar 119 0>; 741 + dma-names = "rx"; 742 + clocks = <&l3_iclk_div>; 743 + clock-names = "fck"; 744 + }; 773 745 }; 774 746 775 747 opp_supply_mpu: opp-supply@4a003b20 {
+1 -1
arch/arm/boot/dts/dra72-evm-common.dtsi
··· 6 6 7 7 #include "dra72x.dtsi" 8 8 #include <dt-bindings/gpio/gpio.h> 9 - #include <dt-bindings/clk/ti-dra7-atl.h> 9 + #include <dt-bindings/clock/ti-dra7-atl.h> 10 10 11 11 / { 12 12 compatible = "ti,dra72-evm", "ti,dra722", "ti,dra72", "ti,dra7";
+55 -16
arch/arm/boot/dts/dra74x.dtsi
··· 66 66 }; 67 67 }; 68 68 69 - mmu0_dsp2: mmu@41501000 { 70 - compatible = "ti,dra7-dsp-iommu"; 71 - reg = <0x41501000 0x100>; 72 - interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; 73 - ti,hwmods = "mmu0_dsp2"; 74 - #iommu-cells = <0>; 75 - ti,syscon-mmuconfig = <&dsp2_system 0x0>; 76 - status = "disabled"; 69 + target-module@41501000 { 70 + compatible = "ti,sysc-omap2", "ti,sysc"; 71 + reg = <0x41501000 0x4>, 72 + <0x41501010 0x4>, 73 + <0x41501014 0x4>; 74 + reg-names = "rev", "sysc", "syss"; 75 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 76 + <SYSC_IDLE_NO>, 77 + <SYSC_IDLE_SMART>; 78 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 79 + SYSC_OMAP2_SOFTRESET | 80 + SYSC_OMAP2_AUTOIDLE)>; 81 + clocks = <&dsp2_clkctrl DRA7_DSP2_MMU0_DSP2_CLKCTRL 0>; 82 + clock-names = "fck"; 83 + resets = <&prm_dsp2 1>; 84 + reset-names = "rstctrl"; 85 + ranges = <0x0 0x41501000 0x1000>; 86 + #size-cells = <1>; 87 + #address-cells = <1>; 88 + 89 + mmu0_dsp2: mmu@0 { 90 + compatible = "ti,dra7-dsp-iommu"; 91 + reg = <0x0 0x100>; 92 + interrupts = <GIC_SPI 146 IRQ_TYPE_LEVEL_HIGH>; 93 + #iommu-cells = <0>; 94 + ti,syscon-mmuconfig = <&dsp2_system 0x0>; 95 + }; 77 96 }; 78 97 79 - mmu1_dsp2: mmu@41502000 { 80 - compatible = "ti,dra7-dsp-iommu"; 81 - reg = <0x41502000 0x100>; 82 - interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>; 83 - ti,hwmods = "mmu1_dsp2"; 84 - #iommu-cells = <0>; 85 - ti,syscon-mmuconfig = <&dsp2_system 0x1>; 86 - status = "disabled"; 98 + target-module@41502000 { 99 + compatible = "ti,sysc-omap2", "ti,sysc"; 100 + reg = <0x41502000 0x4>, 101 + <0x41502010 0x4>, 102 + <0x41502014 0x4>; 103 + reg-names = "rev", "sysc", "syss"; 104 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 105 + <SYSC_IDLE_NO>, 106 + <SYSC_IDLE_SMART>; 107 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 108 + SYSC_OMAP2_SOFTRESET | 109 + SYSC_OMAP2_AUTOIDLE)>; 110 + 111 + clocks = <&dsp2_clkctrl DRA7_DSP2_MMU0_DSP2_CLKCTRL 0>; 112 + clock-names = "fck"; 113 + resets = <&prm_dsp2 1>; 114 + reset-names = "rstctrl"; 115 + ranges = <0x0 0x41502000 0x1000>; 116 + #size-cells = <1>; 117 + #address-cells = <1>; 118 + 119 + mmu1_dsp2: mmu@0 { 120 + compatible = "ti,dra7-dsp-iommu"; 121 + reg = <0x0 0x100>; 122 + interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_HIGH>; 123 + #iommu-cells = <0>; 124 + ti,syscon-mmuconfig = <&dsp2_system 0x1>; 125 + }; 87 126 }; 88 127 }; 89 128 };
+14
arch/arm/boot/dts/dra7xx-clocks.dtsi
··· 1734 1734 }; 1735 1735 }; 1736 1736 1737 + gpu_cm: gpu-cm@1200 { 1738 + compatible = "ti,omap4-cm"; 1739 + reg = <0x1200 0x100>; 1740 + #address-cells = <1>; 1741 + #size-cells = <1>; 1742 + ranges = <0 0x1200 0x100>; 1743 + 1744 + gpu_clkctrl: gpu-clkctrl@20 { 1745 + compatible = "ti,clkctrl"; 1746 + reg = <0x20 0x4>; 1747 + #clock-cells = <2>; 1748 + }; 1749 + }; 1750 + 1737 1751 l3init_cm: l3init-cm@1300 { 1738 1752 compatible = "ti,omap4-cm"; 1739 1753 reg = <0x1300 0x100>;
+5
arch/arm/boot/dts/motorola-mapphone-common.dtsi
··· 650 650 }; 651 651 }; 652 652 653 + /* RNG is used by secure mode and not accessible */ 654 + &rng_target { 655 + status = "disabled"; 656 + }; 657 + 653 658 /* Configure pwm clock source for timers 8 & 9 */ 654 659 &timer8 { 655 660 assigned-clocks = <&abe_clkctrl OMAP4_TIMER8_CLKCTRL 24>;
+32 -11
arch/arm/boot/dts/omap2.dtsi
··· 8 8 * kind, whether express or implied. 9 9 */ 10 10 11 + #include <dt-bindings/bus/ti-sysc.h> 11 12 #include <dt-bindings/gpio/gpio.h> 12 13 #include <dt-bindings/interrupt-controller/irq.h> 13 14 #include <dt-bindings/pinctrl/omap.h> ··· 80 79 reg = <0x480FE000 0x1000>; 81 80 }; 82 81 83 - sdma: dma-controller@48056000 { 84 - compatible = "ti,omap2430-sdma", "ti,omap2420-sdma"; 85 - ti,hwmods = "dma"; 86 - reg = <0x48056000 0x1000>; 87 - interrupts = <12>, 88 - <13>, 89 - <14>, 90 - <15>; 91 - #dma-cells = <1>; 92 - dma-channels = <32>; 93 - dma-requests = <64>; 82 + target-module@48056000 { 83 + compatible = "ti,sysc-omap2", "ti,sysc"; 84 + reg = <0x48056000 0x4>, 85 + <0x4805602c 0x4>, 86 + <0x48056028 0x4>; 87 + reg-names = "rev", "sysc", "syss"; 88 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 89 + SYSC_OMAP2_EMUFREE | 90 + SYSC_OMAP2_SOFTRESET | 91 + SYSC_OMAP2_AUTOIDLE)>; 92 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 93 + <SYSC_IDLE_NO>, 94 + <SYSC_IDLE_SMART>; 95 + ti,syss-mask = <1>; 96 + clocks = <&core_l3_ck>; 97 + clock-names = "fck"; 98 + #address-cells = <1>; 99 + #size-cells = <1>; 100 + ranges = <0 0x48056000 0x1000>; 101 + 102 + sdma: dma-controller@0 { 103 + compatible = "ti,omap2420-sdma", "ti,omap-sdma"; 104 + reg = <0 0x1000>; 105 + interrupts = <12>, 106 + <13>, 107 + <14>, 108 + <15>; 109 + #dma-cells = <1>; 110 + dma-channels = <32>; 111 + dma-requests = <64>; 112 + }; 94 113 }; 95 114 96 115 i2c1: i2c@48070000 {
+4
arch/arm/boot/dts/omap2430.dtsi
··· 309 309 }; 310 310 }; 311 311 312 + &sdma { 313 + compatible = "ti,omap2430-sdma", "ti,omap-sdma"; 314 + }; 315 + 312 316 &i2c1 { 313 317 compatible = "ti,omap2430-i2c"; 314 318 };
+5
arch/arm/boot/dts/omap3-n900.dts
··· 482 482 regulator-always-on; 483 483 }; 484 484 485 + /* First two dma channels are reserved on secure omap3 */ 486 + &sdma { 487 + dma-channel-mask = <0xfffffffc>; 488 + }; 489 + 485 490 &twl { 486 491 twl_audio: audio { 487 492 compatible = "ti,twl4030-audio";
+35 -11
arch/arm/boot/dts/omap3.dtsi
··· 206 206 reg = <0x48200000 0x1000>; 207 207 }; 208 208 209 - sdma: dma-controller@48056000 { 210 - compatible = "ti,omap3630-sdma", "ti,omap3430-sdma"; 211 - reg = <0x48056000 0x1000>; 212 - interrupts = <12>, 213 - <13>, 214 - <14>, 215 - <15>; 216 - #dma-cells = <1>; 217 - dma-channels = <32>; 218 - dma-requests = <96>; 219 - ti,hwmods = "dma"; 209 + target-module@48056000 { 210 + compatible = "ti,sysc-omap2", "ti,sysc"; 211 + reg = <0x48056000 0x4>, 212 + <0x4805602c 0x4>, 213 + <0x48056028 0x4>; 214 + reg-names = "rev", "sysc", "syss"; 215 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 216 + SYSC_OMAP2_EMUFREE | 217 + SYSC_OMAP2_SOFTRESET | 218 + SYSC_OMAP2_AUTOIDLE)>; 219 + ti,sysc-midle = <SYSC_IDLE_FORCE>, 220 + <SYSC_IDLE_NO>, 221 + <SYSC_IDLE_SMART>; 222 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 223 + <SYSC_IDLE_NO>, 224 + <SYSC_IDLE_SMART>; 225 + ti,syss-mask = <1>; 226 + /* Domains (V, P, C): core, core_pwrdm, core_l3_clkdm */ 227 + clocks = <&core_l3_ick>; 228 + clock-names = "ick"; 229 + #address-cells = <1>; 230 + #size-cells = <1>; 231 + ranges = <0 0x48056000 0x1000>; 232 + 233 + sdma: dma-controller@0 { 234 + compatible = "ti,omap3430-sdma", "ti,omap-sdma"; 235 + reg = <0x0 0x1000>; 236 + interrupts = <12>, 237 + <13>, 238 + <14>, 239 + <15>; 240 + #dma-cells = <1>; 241 + dma-channels = <32>; 242 + dma-requests = <96>; 243 + }; 220 244 }; 221 245 222 246 gpio1: gpio@48310000 {
+4
arch/arm/boot/dts/omap36xx.dtsi
··· 223 223 }; 224 224 }; 225 225 226 + &sdma { 227 + compatible = "ti,omap3630-sdma", "ti,omap-sdma"; 228 + }; 229 + 226 230 /* OMAP3630 needs dss_96m_fck for VENC */ 227 231 &venc { 228 232 clocks = <&dss_tv_fck>, <&dss_96m_fck>;
-7
arch/arm/boot/dts/omap4-l4-abe.dtsi
··· 219 219 220 220 target-module@2e000 { /* 0x4012e000, ap 12 0c.0 */ 221 221 compatible = "ti,sysc-omap4", "ti,sysc"; 222 - ti,hwmods = "dmic"; 223 222 reg = <0x2e000 0x4>, 224 223 <0x2e010 0x4>; 225 224 reg-names = "rev", "sysc"; ··· 278 279 279 280 mcpdm_module: target-module@32000 { /* 0x40132000, ap 16 10.0 */ 280 281 compatible = "ti,sysc-omap4", "ti,sysc"; 281 - ti,hwmods = "mcpdm"; 282 282 reg = <0x32000 0x4>, 283 283 <0x32010 0x4>; 284 284 reg-names = "rev", "sysc"; ··· 312 314 313 315 target-module@38000 { /* 0x40138000, ap 18 12.0 */ 314 316 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 315 - ti,hwmods = "timer5"; 316 317 reg = <0x38000 0x4>, 317 318 <0x38010 0x4>; 318 319 reg-names = "rev", "sysc"; ··· 342 345 343 346 target-module@3a000 { /* 0x4013a000, ap 20 14.0 */ 344 347 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 345 - ti,hwmods = "timer6"; 346 348 reg = <0x3a000 0x4>, 347 349 <0x3a010 0x4>; 348 350 reg-names = "rev", "sysc"; ··· 372 376 373 377 target-module@3c000 { /* 0x4013c000, ap 22 16.0 */ 374 378 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 375 - ti,hwmods = "timer7"; 376 379 reg = <0x3c000 0x4>, 377 380 <0x3c010 0x4>; 378 381 reg-names = "rev", "sysc"; ··· 402 407 403 408 target-module@3e000 { /* 0x4013e000, ap 24 18.0 */ 404 409 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 405 - ti,hwmods = "timer8"; 406 410 reg = <0x3e000 0x4>, 407 411 <0x3e010 0x4>; 408 412 reg-names = "rev", "sysc"; ··· 460 466 461 467 target-module@f1000 { /* 0x401f1000, ap 32 20.0 */ 462 468 compatible = "ti,sysc-omap4", "ti,sysc"; 463 - ti,hwmods = "aess"; 464 469 reg = <0xf1000 0x4>, 465 470 <0xf1010 0x4>; 466 471 reg-names = "rev", "sysc";
+55 -24
arch/arm/boot/dts/omap4-l4.dtsi
··· 136 136 137 137 target-module@56000 { /* 0x4a056000, ap 7 0a.0 */ 138 138 compatible = "ti,sysc-omap2", "ti,sysc"; 139 - ti,hwmods = "dma_system"; 140 139 reg = <0x56000 0x4>, 141 140 <0x5602c 0x4>, 142 141 <0x56028 0x4>; ··· 159 160 ranges = <0x0 0x56000 0x1000>; 160 161 161 162 sdma: dma-controller@0 { 162 - compatible = "ti,omap4430-sdma"; 163 + compatible = "ti,omap4430-sdma", "ti,omap-sdma"; 163 164 reg = <0x0 0x1000>; 164 165 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, 165 166 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, ··· 173 174 174 175 target-module@58000 { /* 0x4a058000, ap 10 0e.0 */ 175 176 compatible = "ti,sysc-omap2", "ti,sysc"; 176 - ti,hwmods = "hsi"; 177 177 reg = <0x58000 0x4>, 178 178 <0x58010 0x4>, 179 179 <0x58014 0x4>; ··· 319 321 320 322 target-module@66000 { /* 0x4a066000, ap 25 26.0 */ 321 323 compatible = "ti,sysc-omap2", "ti,sysc"; 322 - ti,hwmods = "mmu_dsp"; 323 324 reg = <0x66000 0x4>, 324 325 <0x66010 0x4>, 325 326 <0x66014 0x4>; ··· 332 335 /* Domains (V, P, C): iva, tesla_pwrdm, tesla_clkdm */ 333 336 clocks = <&tesla_clkctrl OMAP4_DSP_CLKCTRL 0>; 334 337 clock-names = "fck"; 338 + resets = <&prm_tesla 1>; 339 + reset-names = "rstctrl"; 335 340 #address-cells = <1>; 336 341 #size-cells = <1>; 337 342 ranges = <0x0 0x66000 0x1000>; 338 343 339 - /* mmu_dsp cannot be moved before reset driver */ 340 - status = "disabled"; 344 + mmu_dsp: mmu@0 { 345 + compatible = "ti,omap4-iommu"; 346 + reg = <0x0 0x100>; 347 + interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 348 + #iommu-cells = <0>; 349 + }; 341 350 }; 342 351 }; 343 352 ··· 423 420 424 421 target-module@2d000 { /* 0x4a0ad000, ap 88 0c.0 */ 425 422 compatible = "ti,sysc-omap2", "ti,sysc"; 426 - ti,hwmods = "ocp2scp_usb_phy"; 427 423 reg = <0x2d000 0x4>, 428 424 <0x2d010 0x4>, 429 425 <0x2d014 0x4>; ··· 501 499 502 500 target-module@59000 { /* 0x4a0d9000, ap 13 1a.0 */ 503 501 compatible = "ti,sysc-omap4-sr", "ti,sysc"; 504 - ti,hwmods = "smartreflex_mpu"; 505 502 reg = <0x59038 0x4>; 506 503 reg-names = "sysc"; 507 504 ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>; ··· 524 523 525 524 target-module@5b000 { /* 0x4a0db000, ap 15 08.0 */ 526 525 compatible = "ti,sysc-omap4-sr", "ti,sysc"; 527 - ti,hwmods = "smartreflex_iva"; 528 526 reg = <0x5b038 0x4>; 529 527 reg-names = "sysc"; 530 528 ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>; ··· 547 547 548 548 target-module@5d000 { /* 0x4a0dd000, ap 17 22.0 */ 549 549 compatible = "ti,sysc-omap4-sr", "ti,sysc"; 550 - ti,hwmods = "smartreflex_core"; 551 550 reg = <0x5d038 0x4>; 552 551 reg-names = "sysc"; 553 552 ti,sysc-mask = <SYSC_OMAP3_SR_ENAWAKEUP>; ··· 612 613 613 614 target-module@76000 { /* 0x4a0f6000, ap 29 3a.0 */ 614 615 compatible = "ti,sysc-omap2", "ti,sysc"; 615 - ti,hwmods = "spinlock"; 616 616 reg = <0x76000 0x4>, 617 617 <0x76010 0x4>, 618 618 <0x76014 0x4>; ··· 719 721 720 722 target-module@a000 { /* 0x4a10a000, ap 65 50.0 */ 721 723 compatible = "ti,sysc-omap4", "ti,sysc"; 722 - ti,hwmods = "fdif"; 723 724 reg = <0xa000 0x4>, 724 725 <0xa010 0x4>; 725 726 reg-names = "rev", "sysc"; ··· 1174 1177 1175 1178 target-module@c000 { /* 0x4a31c000, ap 11 20.0 */ 1176 1179 compatible = "ti,sysc-omap2", "ti,sysc"; 1177 - ti,hwmods = "kbd"; 1178 1180 reg = <0xc000 0x4>, 1179 1181 <0xc010 0x4>, 1180 1182 <0xc014 0x4>; ··· 1418 1422 1419 1423 target-module@32000 { /* 0x48032000, ap 5 02.0 */ 1420 1424 compatible = "ti,sysc-omap2-timer", "ti,sysc"; 1421 - ti,hwmods = "timer2"; 1422 1425 reg = <0x32000 0x4>, 1423 1426 <0x32010 0x4>, 1424 1427 <0x32014 0x4>; ··· 1449 1454 1450 1455 target-module@34000 { /* 0x48034000, ap 7 04.0 */ 1451 1456 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1452 - ti,hwmods = "timer3"; 1453 1457 reg = <0x34000 0x4>, 1454 1458 <0x34010 0x4>; 1455 1459 reg-names = "rev", "sysc"; ··· 1476 1482 1477 1483 target-module@36000 { /* 0x48036000, ap 9 0e.0 */ 1478 1484 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1479 - ti,hwmods = "timer4"; 1480 1485 reg = <0x36000 0x4>, 1481 1486 <0x36010 0x4>; 1482 1487 reg-names = "rev", "sysc"; ··· 1503 1510 1504 1511 target-module@3e000 { /* 0x4803e000, ap 11 08.0 */ 1505 1512 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1506 - ti,hwmods = "timer9"; 1507 1513 reg = <0x3e000 0x4>, 1508 1514 <0x3e010 0x4>; 1509 1515 reg-names = "rev", "sysc"; ··· 1884 1892 1885 1893 target-module@76000 { /* 0x48076000, ap 39 38.0 */ 1886 1894 compatible = "ti,sysc-omap4", "ti,sysc"; 1887 - ti,hwmods = "slimbus2"; 1888 1895 reg = <0x76000 0x4>, 1889 1896 <0x76010 0x4>; 1890 1897 reg-names = "rev", "sysc"; ··· 1904 1913 1905 1914 target-module@78000 { /* 0x48078000, ap 41 1a.0 */ 1906 1915 compatible = "ti,sysc-omap2", "ti,sysc"; 1907 - ti,hwmods = "elm"; 1908 1916 reg = <0x78000 0x4>, 1909 1917 <0x78010 0x4>, 1910 1918 <0x78014 0x4>; ··· 1932 1942 1933 1943 target-module@86000 { /* 0x48086000, ap 43 24.0 */ 1934 1944 compatible = "ti,sysc-omap2-timer", "ti,sysc"; 1935 - ti,hwmods = "timer10"; 1936 1945 reg = <0x86000 0x4>, 1937 1946 <0x86010 0x4>, 1938 1947 <0x86014 0x4>; ··· 1964 1975 1965 1976 target-module@88000 { /* 0x48088000, ap 45 2e.0 */ 1966 1977 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1967 - ti,hwmods = "timer11"; 1968 1978 reg = <0x88000 0x4>, 1969 1979 <0x88010 0x4>; 1970 1980 reg-names = "rev", "sysc"; ··· 1990 2002 }; 1991 2003 }; 1992 2004 1993 - target-module@90000 { /* 0x48090000, ap 57 2a.0 */ 1994 - compatible = "ti,sysc"; 1995 - status = "disabled"; 2005 + rng_target: target-module@90000 { /* 0x48090000, ap 57 2a.0 */ 2006 + compatible = "ti,sysc-omap2", "ti,sysc"; 2007 + reg = <0x91fe0 0x4>, 2008 + <0x91fe4 0x4>; 2009 + reg-names = "rev", "sysc"; 2010 + ti,sysc-mask = <(SYSC_OMAP2_AUTOIDLE)>; 2011 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 2012 + <SYSC_IDLE_NO>; 2013 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 2014 + clocks = <&l4_secure_clkctrl OMAP4_RNG_CLKCTRL 0>; 2015 + clock-names = "fck"; 1996 2016 #address-cells = <1>; 1997 2017 #size-cells = <1>; 1998 2018 ranges = <0x0 0x90000 0x2000>; 2019 + 2020 + rng: rng@0 { 2021 + compatible = "ti,omap4-rng"; 2022 + reg = <0x0 0x2000>; 2023 + interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 2024 + }; 1999 2025 }; 2000 2026 2001 2027 target-module@96000 { /* 0x48096000, ap 37 26.0 */ ··· 2171 2169 #size-cells = <1>; 2172 2170 ranges = <0x00000000 0x000a4000 0x00001000>, 2173 2171 <0x00001000 0x000a5000 0x00001000>; 2172 + }; 2173 + 2174 + des_target: target-module@a5000 { /* 0x480a5000 */ 2175 + compatible = "ti,sysc-omap2", "ti,sysc"; 2176 + reg = <0xa5030 0x4>, 2177 + <0xa5034 0x4>, 2178 + <0xa5038 0x4>; 2179 + reg-names = "rev", "sysc", "syss"; 2180 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 2181 + SYSC_OMAP2_AUTOIDLE)>; 2182 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 2183 + <SYSC_IDLE_NO>, 2184 + <SYSC_IDLE_SMART>, 2185 + <SYSC_IDLE_SMART_WKUP>; 2186 + ti,syss-mask = <1>; 2187 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 2188 + clocks = <&l4_secure_clkctrl OMAP4_DES3DES_CLKCTRL 0>; 2189 + clock-names = "fck"; 2190 + #address-cells = <1>; 2191 + #size-cells = <1>; 2192 + ranges = <0 0xa5000 0x00001000>; 2193 + 2194 + des: des@0 { 2195 + compatible = "ti,omap4-des"; 2196 + reg = <0 0xa0>; 2197 + interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>; 2198 + dmas = <&sdma 117>, <&sdma 116>; 2199 + dma-names = "tx", "rx"; 2200 + }; 2174 2201 }; 2175 2202 2176 2203 target-module@a8000 { /* 0x480a8000, ap 61 3e.0 */
+107 -45
arch/arm/boot/dts/omap4.dtsi
··· 173 173 #gpio-cells = <2>; 174 174 }; 175 175 176 - mmu_dsp: mmu@4a066000 { 177 - compatible = "ti,omap4-iommu"; 178 - reg = <0x4a066000 0x100>; 179 - interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 180 - ti,hwmods = "mmu_dsp"; 181 - #iommu-cells = <0>; 182 - }; 183 - 184 176 target-module@52000000 { 185 177 compatible = "ti,sysc-omap4", "ti,sysc"; 186 178 ti,hwmods = "iss"; ··· 198 206 /* No child device binding, driver in staging */ 199 207 }; 200 208 201 - mmu_ipu: mmu@55082000 { 202 - compatible = "ti,omap4-iommu"; 203 - reg = <0x55082000 0x100>; 204 - interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 205 - ti,hwmods = "mmu_ipu"; 206 - #iommu-cells = <0>; 207 - ti,iommu-bus-err-back; 209 + target-module@55082000 { 210 + compatible = "ti,sysc-omap2", "ti,sysc"; 211 + reg = <0x55082000 0x4>, 212 + <0x55082010 0x4>, 213 + <0x55082014 0x4>; 214 + reg-names = "rev", "sysc", "syss"; 215 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 216 + <SYSC_IDLE_NO>, 217 + <SYSC_IDLE_SMART>; 218 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 219 + SYSC_OMAP2_SOFTRESET | 220 + SYSC_OMAP2_AUTOIDLE)>; 221 + clocks = <&ducati_clkctrl OMAP4_IPU_CLKCTRL 0>; 222 + clock-names = "fck"; 223 + resets = <&prm_core 2>; 224 + reset-names = "rstctrl"; 225 + ranges = <0x0 0x55082000 0x100>; 226 + #size-cells = <1>; 227 + #address-cells = <1>; 228 + 229 + mmu_ipu: mmu@0 { 230 + compatible = "ti,omap4-iommu"; 231 + reg = <0x0 0x100>; 232 + interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 233 + #iommu-cells = <0>; 234 + ti,iommu-bus-err-back; 235 + }; 208 236 }; 237 + 209 238 target-module@4012c000 { 210 239 compatible = "ti,sysc-omap4", "ti,sysc"; 211 - ti,hwmods = "slimbus1"; 212 240 reg = <0x4012c000 0x4>, 213 241 <0x4012c010 0x4>; 214 242 reg-names = "rev", "sysc"; ··· 278 266 hw-caps-temp-alert; 279 267 }; 280 268 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"; 269 + aes1_target: target-module@4b501000 { 270 + compatible = "ti,sysc-omap2", "ti,sysc"; 271 + reg = <0x4b501080 0x4>, 272 + <0x4b501084 0x4>, 273 + <0x4b501088 0x4>; 274 + reg-names = "rev", "sysc", "syss"; 275 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 276 + SYSC_OMAP2_AUTOIDLE)>; 277 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 278 + <SYSC_IDLE_NO>, 279 + <SYSC_IDLE_SMART>, 280 + <SYSC_IDLE_SMART_WKUP>; 281 + ti,syss-mask = <1>; 282 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 283 + clocks = <&l4_secure_clkctrl OMAP4_AES1_CLKCTRL 0>; 284 + clock-names = "fck"; 285 + #address-cells = <1>; 286 + #size-cells = <1>; 287 + ranges = <0x0 0x4b501000 0x1000>; 288 + 289 + aes1: aes@0 { 290 + compatible = "ti,omap4-aes"; 291 + reg = <0 0xa0>; 292 + interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>; 293 + dmas = <&sdma 111>, <&sdma 110>; 294 + dma-names = "tx", "rx"; 295 + }; 288 296 }; 289 297 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"; 298 + aes2_target: target-module@4b701000 { 299 + compatible = "ti,sysc-omap2", "ti,sysc"; 300 + reg = <0x4b701080 0x4>, 301 + <0x4b701084 0x4>, 302 + <0x4b701088 0x4>; 303 + reg-names = "rev", "sysc", "syss"; 304 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 305 + SYSC_OMAP2_AUTOIDLE)>; 306 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 307 + <SYSC_IDLE_NO>, 308 + <SYSC_IDLE_SMART>, 309 + <SYSC_IDLE_SMART_WKUP>; 310 + ti,syss-mask = <1>; 311 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 312 + clocks = <&l4_secure_clkctrl OMAP4_AES2_CLKCTRL 0>; 313 + clock-names = "fck"; 314 + #address-cells = <1>; 315 + #size-cells = <1>; 316 + ranges = <0x0 0x4b701000 0x1000>; 317 + 318 + aes2: aes@0 { 319 + compatible = "ti,omap4-aes"; 320 + reg = <0 0xa0>; 321 + interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>; 322 + dmas = <&sdma 114>, <&sdma 113>; 323 + dma-names = "tx", "rx"; 324 + }; 297 325 }; 298 326 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 - }; 327 + sham_target: target-module@4b100000 { 328 + compatible = "ti,sysc-omap3-sham", "ti,sysc"; 329 + reg = <0x4b100100 0x4>, 330 + <0x4b100110 0x4>, 331 + <0x4b100114 0x4>; 332 + reg-names = "rev", "sysc", "syss"; 333 + ti,sysc-mask = <(SYSC_OMAP2_SOFTRESET | 334 + SYSC_OMAP2_AUTOIDLE)>; 335 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 336 + <SYSC_IDLE_NO>, 337 + <SYSC_IDLE_SMART>; 338 + ti,syss-mask = <1>; 339 + /* Domains (P, C): l4per_pwrdm, l4_secure_clkdm */ 340 + clocks = <&l4_secure_clkctrl OMAP4_SHA2MD5_CLKCTRL 0>; 341 + clock-names = "fck"; 342 + #address-cells = <1>; 343 + #size-cells = <1>; 344 + ranges = <0x0 0x4b100000 0x1000>; 307 345 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"; 346 + sham: sham@0 { 347 + compatible = "ti,omap4-sham"; 348 + reg = <0 0x300>; 349 + interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>; 350 + dmas = <&sdma 119>; 351 + dma-names = "rx"; 352 + }; 315 353 }; 316 354 317 355 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 {
-6
arch/arm/boot/dts/omap5-l4-abe.dtsi
··· 203 203 204 204 target-module@2e000 { /* 0x4012e000, ap 12 0c.0 */ 205 205 compatible = "ti,sysc-omap4", "ti,sysc"; 206 - ti,hwmods = "dmic"; 207 206 reg = <0x2e000 0x4>, 208 207 <0x2e010 0x4>; 209 208 reg-names = "rev", "sysc"; ··· 243 244 244 245 mcpdm_module: target-module@32000 { /* 0x40132000, ap 16 10.0 */ 245 246 compatible = "ti,sysc-omap4", "ti,sysc"; 246 - ti,hwmods = "mcpdm"; 247 247 reg = <0x32000 0x4>, 248 248 <0x32010 0x4>; 249 249 reg-names = "rev", "sysc"; ··· 277 279 278 280 target-module@38000 { /* 0x40138000, ap 18 12.0 */ 279 281 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 280 - ti,hwmods = "timer5"; 281 282 reg = <0x38000 0x4>, 282 283 <0x38010 0x4>; 283 284 reg-names = "rev", "sysc"; ··· 308 311 309 312 target-module@3a000 { /* 0x4013a000, ap 20 14.0 */ 310 313 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 311 - ti,hwmods = "timer6"; 312 314 reg = <0x3a000 0x4>, 313 315 <0x3a010 0x4>; 314 316 reg-names = "rev", "sysc"; ··· 339 343 340 344 target-module@3c000 { /* 0x4013c000, ap 22 16.0 */ 341 345 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 342 - ti,hwmods = "timer7"; 343 346 reg = <0x3c000 0x4>, 344 347 <0x3c010 0x4>; 345 348 reg-names = "rev", "sysc"; ··· 369 374 370 375 target-module@3e000 { /* 0x4013e000, ap 24 18.0 */ 371 376 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 372 - ti,hwmods = "timer8"; 373 377 reg = <0x3e000 0x4>, 374 378 <0x3e010 0x4>; 375 379 reg-names = "rev", "sysc";
+26 -18
arch/arm/boot/dts/omap5-l4.dtsi
··· 213 213 214 214 target-module@56000 { /* 0x4a056000, ap 7 02.0 */ 215 215 compatible = "ti,sysc-omap2", "ti,sysc"; 216 - ti,hwmods = "dma_system"; 217 216 reg = <0x56000 0x4>, 218 217 <0x5602c 0x4>, 219 218 <0x56028 0x4>; ··· 236 237 ranges = <0x0 0x56000 0x1000>; 237 238 238 239 sdma: dma-controller@0 { 239 - compatible = "ti,omap4430-sdma"; 240 + compatible = "ti,omap4430-sdma", "ti,omap-sdma"; 240 241 reg = <0x0 0x1000>; 241 242 interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>, 242 243 <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>, ··· 348 349 349 350 target-module@66000 { /* 0x4a066000, ap 23 0a.0 */ 350 351 compatible = "ti,sysc-omap2", "ti,sysc"; 351 - ti,hwmods = "mmu_dsp"; 352 352 reg = <0x66000 0x4>, 353 353 <0x66010 0x4>, 354 354 <0x66014 0x4>; ··· 362 364 /* Domains (V, P, C): mm, dsp_pwrdm, dsp_clkdm */ 363 365 clocks = <&dsp_clkctrl OMAP5_MMU_DSP_CLKCTRL 0>; 364 366 clock-names = "fck"; 367 + resets = <&prm_dsp 1>; 368 + reset-names = "rstctrl"; 365 369 #address-cells = <1>; 366 370 #size-cells = <1>; 367 371 ranges = <0x0 0x66000 0x1000>; 368 372 369 - /* mmu_dsp cannot be moved before reset driver */ 370 - status = "disabled"; 373 + mmu_dsp: mmu@0 { 374 + compatible = "ti,omap4-iommu"; 375 + reg = <0x0 0x100>; 376 + interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 377 + #iommu-cells = <0>; 378 + }; 371 379 }; 372 380 373 381 target-module@70000 { /* 0x4a070000, ap 79 2e.0 */ ··· 434 430 435 431 target-module@0 { /* 0x4a080000, ap 83 28.0 */ 436 432 compatible = "ti,sysc-omap2", "ti,sysc"; 437 - ti,hwmods = "ocp2scp1"; 438 433 reg = <0x0 0x4>, 439 434 <0x10 0x4>, 440 435 <0x14 0x4>; ··· 491 488 492 489 target-module@10000 { /* 0x4a090000, ap 89 36.0 */ 493 490 compatible = "ti,sysc-omap2", "ti,sysc"; 494 - ti,hwmods = "ocp2scp3"; 495 491 reg = <0x10000 0x4>, 496 492 <0x10010 0x4>, 497 493 <0x10014 0x4>; ··· 629 627 630 628 target-module@76000 { /* 0x4a0f6000, ap 27 0c.0 */ 631 629 compatible = "ti,sysc-omap2", "ti,sysc"; 632 - ti,hwmods = "spinlock"; 633 630 reg = <0x76000 0x4>, 634 631 <0x76010 0x4>, 635 632 <0x76014 0x4>; ··· 1062 1061 1063 1062 target-module@32000 { /* 0x48032000, ap 5 3e.0 */ 1064 1063 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1065 - ti,hwmods = "timer2"; 1066 1064 reg = <0x32000 0x4>, 1067 1065 <0x32010 0x4>; 1068 1066 reg-names = "rev", "sysc"; ··· 1089 1089 1090 1090 target-module@34000 { /* 0x48034000, ap 7 46.0 */ 1091 1091 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1092 - ti,hwmods = "timer3"; 1093 1092 reg = <0x34000 0x4>, 1094 1093 <0x34010 0x4>; 1095 1094 reg-names = "rev", "sysc"; ··· 1116 1117 1117 1118 target-module@36000 { /* 0x48036000, ap 9 4e.0 */ 1118 1119 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1119 - ti,hwmods = "timer4"; 1120 1120 reg = <0x36000 0x4>, 1121 1121 <0x36010 0x4>; 1122 1122 reg-names = "rev", "sysc"; ··· 1143 1145 1144 1146 target-module@3e000 { /* 0x4803e000, ap 11 56.0 */ 1145 1147 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1146 - ti,hwmods = "timer9"; 1147 1148 reg = <0x3e000 0x4>, 1148 1149 <0x3e010 0x4>; 1149 1150 reg-names = "rev", "sysc"; ··· 1710 1713 1711 1714 target-module@86000 { /* 0x48086000, ap 41 5e.0 */ 1712 1715 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1713 - ti,hwmods = "timer10"; 1714 1716 reg = <0x86000 0x4>, 1715 1717 <0x86010 0x4>; 1716 1718 reg-names = "rev", "sysc"; ··· 1738 1742 1739 1743 target-module@88000 { /* 0x48088000, ap 43 66.0 */ 1740 1744 compatible = "ti,sysc-omap4-timer", "ti,sysc"; 1741 - ti,hwmods = "timer11"; 1742 1745 reg = <0x88000 0x4>, 1743 1746 <0x88010 0x4>; 1744 1747 reg-names = "rev", "sysc"; ··· 1764 1769 }; 1765 1770 }; 1766 1771 1767 - target-module@90000 { /* 0x48090000, ap 55 1a.0 */ 1768 - compatible = "ti,sysc"; 1769 - status = "disabled"; 1772 + rng_target: target-module@90000 { /* 0x48090000, ap 55 1a.0 */ 1773 + compatible = "ti,sysc-omap2", "ti,sysc"; 1774 + reg = <0x91fe0 0x4>, 1775 + <0x91fe4 0x4>; 1776 + reg-names = "rev", "sysc"; 1777 + ti,sysc-mask = <(SYSC_OMAP2_AUTOIDLE)>; 1778 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 1779 + <SYSC_IDLE_NO>; 1780 + /* Domains (P, C): l4per_pwrdm, l4sec_clkdm */ 1781 + clocks = <&l4sec_clkctrl OMAP5_RNG_CLKCTRL 0>; 1782 + clock-names = "fck"; 1770 1783 #address-cells = <1>; 1771 1784 #size-cells = <1>; 1772 1785 ranges = <0x0 0x90000 0x2000>; 1786 + 1787 + rng: rng@0 { 1788 + compatible = "ti,omap4-rng"; 1789 + reg = <0x0 0x2000>; 1790 + interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>; 1791 + }; 1773 1792 }; 1774 1793 1775 1794 target-module@98000 { /* 0x48098000, ap 47 08.0 */ ··· 2367 2358 2368 2359 target-module@c000 { /* 0x4ae1c000, ap 11 1c.0 */ 2369 2360 compatible = "ti,sysc-omap2", "ti,sysc"; 2370 - ti,hwmods = "kbd"; 2371 2361 reg = <0xc000 0x4>, 2372 2362 <0xc010 0x4>; 2373 2363 reg-names = "rev", "sysc";
+26 -14
arch/arm/boot/dts/omap5.dtsi
··· 186 186 #gpio-cells = <2>; 187 187 }; 188 188 189 - mmu_dsp: mmu@4a066000 { 190 - compatible = "ti,omap4-iommu"; 191 - reg = <0x4a066000 0x100>; 192 - interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>; 193 - ti,hwmods = "mmu_dsp"; 194 - #iommu-cells = <0>; 195 - }; 189 + target-module@55082000 { 190 + compatible = "ti,sysc-omap2", "ti,sysc"; 191 + reg = <0x55082000 0x4>, 192 + <0x55082010 0x4>, 193 + <0x55082014 0x4>; 194 + reg-names = "rev", "sysc", "syss"; 195 + ti,sysc-sidle = <SYSC_IDLE_FORCE>, 196 + <SYSC_IDLE_NO>, 197 + <SYSC_IDLE_SMART>; 198 + ti,sysc-mask = <(SYSC_OMAP2_CLOCKACTIVITY | 199 + SYSC_OMAP2_SOFTRESET | 200 + SYSC_OMAP2_AUTOIDLE)>; 201 + clocks = <&ipu_clkctrl OMAP5_MMU_IPU_CLKCTRL 0>; 202 + clock-names = "fck"; 203 + resets = <&prm_core 2>; 204 + reset-names = "rstctrl"; 205 + ranges = <0x0 0x55082000 0x100>; 206 + #size-cells = <1>; 207 + #address-cells = <1>; 196 208 197 - mmu_ipu: mmu@55082000 { 198 - compatible = "ti,omap4-iommu"; 199 - reg = <0x55082000 0x100>; 200 - interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 201 - ti,hwmods = "mmu_ipu"; 202 - #iommu-cells = <0>; 203 - ti,iommu-bus-err-back; 209 + mmu_ipu: mmu@0 { 210 + compatible = "ti,omap4-iommu"; 211 + reg = <0x0 0x100>; 212 + interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>; 213 + #iommu-cells = <0>; 214 + ti,iommu-bus-err-back; 215 + }; 204 216 }; 205 217 206 218 dmm@4e000000 {
+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 };
+3 -1
arch/arm/configs/omap2plus_defconfig
··· 92 92 CONFIG_IP_PNP_RARP=y 93 93 CONFIG_NETFILTER=y 94 94 CONFIG_PHONET=m 95 + CONFIG_NET_SWITCHDEV=y 95 96 CONFIG_CAN=m 96 97 CONFIG_CAN_C_CAN=m 97 98 CONFIG_CAN_C_CAN_PLATFORM=m ··· 182 181 # CONFIG_NET_VENDOR_STMICRO is not set 183 182 CONFIG_TI_DAVINCI_EMAC=y 184 183 CONFIG_TI_CPSW=y 184 + CONFIG_TI_CPSW_SWITCHDEV=y 185 185 CONFIG_TI_CPTS=y 186 186 # CONFIG_NET_VENDOR_VIA is not set 187 187 # CONFIG_NET_VENDOR_WIZNET is not set ··· 556 554 CONFIG_DEBUG_INFO_SPLIT=y 557 555 CONFIG_DEBUG_INFO_DWARF4=y 558 556 CONFIG_MAGIC_SYSRQ=y 557 + CONFIG_DEBUG_FS=y 559 558 CONFIG_SCHEDSTATS=y 560 559 # CONFIG_DEBUG_BUGVERBOSE is not set 561 - CONFIG_TI_CPSW_SWITCHDEV=y
+3
arch/arm/mach-omap2/common.h
··· 345 345 } 346 346 #endif 347 347 348 + struct omap_system_dma_plat_info; 349 + 348 350 void pdata_quirks_init(const struct of_device_id *); 349 351 void omap_auxdata_legacy_init(struct device *dev); 350 352 void omap_pcs_legacy_init(int irq, void (*rearm)(void)); 353 + extern struct omap_system_dma_plat_info dma_plat_info; 351 354 352 355 struct omap_sdrc_params; 353 356 extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
+16 -103
arch/arm/mach-omap2/dma.c
··· 30 30 #include <linux/omap-dma.h> 31 31 32 32 #include "soc.h" 33 - #include "omap_hwmod.h" 34 - #include "omap_device.h" 35 - 36 - static enum omap_reg_offsets dma_common_ch_end; 37 33 38 34 static const struct omap_dma_reg reg_map[] = { 39 35 [REVISION] = { 0x0000, 0x00, OMAP_DMA_REG_32BIT }, ··· 76 80 [CNDP] = { 0x00d4, 0x60, OMAP_DMA_REG_32BIT }, 77 81 [CCDN] = { 0x00d8, 0x60, OMAP_DMA_REG_32BIT }, 78 82 }; 79 - 80 - static void __iomem *dma_base; 81 - static inline void dma_write(u32 val, int reg, int lch) 82 - { 83 - void __iomem *addr = dma_base; 84 - 85 - addr += reg_map[reg].offset; 86 - addr += reg_map[reg].stride * lch; 87 - 88 - writel_relaxed(val, addr); 89 - } 90 - 91 - static inline u32 dma_read(int reg, int lch) 92 - { 93 - void __iomem *addr = dma_base; 94 - 95 - addr += reg_map[reg].offset; 96 - addr += reg_map[reg].stride * lch; 97 - 98 - return readl_relaxed(addr); 99 - } 100 - 101 - static void omap2_clear_dma(int lch) 102 - { 103 - int i; 104 - 105 - for (i = CSDP; i <= dma_common_ch_end; i += 1) 106 - dma_write(0, i, lch); 107 - } 108 - 109 - static void omap2_show_dma_caps(void) 110 - { 111 - u8 revision = dma_read(REVISION, 0) & 0xff; 112 - printk(KERN_INFO "OMAP DMA hardware revision %d.%d\n", 113 - revision >> 4, revision & 0xf); 114 - } 115 83 116 84 static unsigned configure_dma_errata(void) 117 85 { ··· 171 211 { "musb-hdrc.1.auto", "dmareq5", SDMA_FILTER_PARAM(64) }, /* OMAP2420 only */ 172 212 }; 173 213 174 - static struct omap_system_dma_plat_info dma_plat_info __initdata = { 175 - .reg_map = reg_map, 176 - .channel_stride = 0x60, 177 - .show_dma_caps = omap2_show_dma_caps, 178 - .clear_dma = omap2_clear_dma, 179 - .dma_write = dma_write, 180 - .dma_read = dma_read, 214 + static struct omap_dma_dev_attr dma_attr = { 215 + .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 216 + IS_CSSA_32 | IS_CDSA_32, 217 + .lch_count = 32, 181 218 }; 182 219 183 - static struct platform_device_info omap_dma_dev_info __initdata = { 184 - .name = "omap-dma-engine", 185 - .id = -1, 186 - .dma_mask = DMA_BIT_MASK(32), 220 + struct omap_system_dma_plat_info dma_plat_info = { 221 + .reg_map = reg_map, 222 + .channel_stride = 0x60, 223 + .dma_attr = &dma_attr, 187 224 }; 188 225 189 226 /* One time initializations */ 190 - static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) 227 + static int __init omap2_system_dma_init(void) 191 228 { 192 - struct platform_device *pdev; 193 - struct omap_system_dma_plat_info p; 194 - struct omap_dma_dev_attr *d; 195 - struct resource *mem; 196 - char *name = "omap_dma_system"; 197 - 198 - p = dma_plat_info; 199 - p.dma_attr = (struct omap_dma_dev_attr *)oh->dev_attr; 200 - p.errata = configure_dma_errata(); 229 + dma_plat_info.errata = configure_dma_errata(); 201 230 202 231 if (soc_is_omap24xx()) { 203 232 /* DMA slave map for drivers not yet converted to DT */ 204 - p.slave_map = omap24xx_sdma_dt_map; 205 - p.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map); 233 + dma_plat_info.slave_map = omap24xx_sdma_dt_map; 234 + dma_plat_info.slavecnt = ARRAY_SIZE(omap24xx_sdma_dt_map); 206 235 } 207 236 208 - pdev = omap_device_build(name, 0, oh, &p, sizeof(p)); 209 - if (IS_ERR(pdev)) { 210 - pr_err("%s: Can't build omap_device for %s:%s.\n", 211 - __func__, name, oh->name); 212 - return PTR_ERR(pdev); 213 - } 237 + if (!soc_is_omap242x()) 238 + dma_attr.dev_caps |= IS_RW_PRIORITY; 214 239 215 - omap_dma_dev_info.res = pdev->resource; 216 - omap_dma_dev_info.num_res = pdev->num_resources; 217 - 218 - mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); 219 - if (!mem) { 220 - dev_err(&pdev->dev, "%s: no mem resource\n", __func__); 221 - return -EINVAL; 222 - } 223 - 224 - dma_base = ioremap(mem->start, resource_size(mem)); 225 - if (!dma_base) { 226 - dev_err(&pdev->dev, "%s: ioremap fail\n", __func__); 227 - return -ENOMEM; 228 - } 229 - 230 - d = oh->dev_attr; 231 - 232 - if (cpu_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP)) 233 - d->dev_caps |= HS_CHANNELS_RESERVED; 234 - 235 - if (platform_get_irq_byname(pdev, "0") < 0) 236 - d->dev_caps |= DMA_ENGINE_HANDLE_IRQ; 237 - 238 - /* Check the capabilities register for descriptor loading feature */ 239 - if (dma_read(CAPS_0, 0) & DMA_HAS_DESCRIPTOR_CAPS) 240 - dma_common_ch_end = CCDN; 241 - else 242 - dma_common_ch_end = CCFN; 240 + if (soc_is_omap34xx() && (omap_type() != OMAP2_DEVICE_TYPE_GP)) 241 + dma_attr.dev_caps |= HS_CHANNELS_RESERVED; 243 242 244 243 return 0; 245 - } 246 - 247 - static int __init omap2_system_dma_init(void) 248 - { 249 - return omap_hwmod_for_each_by_class("dma", 250 - omap2_system_dma_init_dev, NULL); 251 244 } 252 245 omap_arch_initcall(omap2_system_dma_init);
-170
arch/arm/mach-omap2/omap_device.c
··· 373 373 kfree(od); 374 374 } 375 375 376 - /** 377 - * omap_device_copy_resources - Add legacy IO and IRQ resources 378 - * @oh: interconnect target module 379 - * @pdev: platform device to copy resources to 380 - * 381 - * We still have legacy DMA and smartreflex needing resources. 382 - * Let's populate what they need until we can eventually just 383 - * remove this function. Note that there should be no need to 384 - * call this from omap_device_build_from_dt(), nor should there 385 - * be any need to call it for other devices. 386 - */ 387 - static int 388 - omap_device_copy_resources(struct omap_hwmod *oh, 389 - struct platform_device *pdev) 390 - { 391 - struct device_node *np, *child; 392 - struct property *prop; 393 - struct resource *res; 394 - const char *name; 395 - int error, irq = 0; 396 - 397 - if (!oh || !oh->od || !oh->od->pdev) 398 - return -EINVAL; 399 - 400 - np = oh->od->pdev->dev.of_node; 401 - if (!np) { 402 - error = -ENODEV; 403 - goto error; 404 - } 405 - 406 - res = kcalloc(2, sizeof(*res), GFP_KERNEL); 407 - if (!res) 408 - return -ENOMEM; 409 - 410 - /* Do we have a dts range for the interconnect target module? */ 411 - error = omap_hwmod_parse_module_range(oh, np, res); 412 - 413 - /* No ranges, rely on device reg entry */ 414 - if (error) 415 - error = of_address_to_resource(np, 0, res); 416 - if (error) 417 - goto free; 418 - 419 - /* SmartReflex needs first IO resource name to be "mpu" */ 420 - res[0].name = "mpu"; 421 - 422 - /* 423 - * We may have a configured "ti,sysc" interconnect target with a 424 - * dts child with the interrupt. If so use the first child's 425 - * first interrupt for "ti-hwmods" legacy support. 426 - */ 427 - of_property_for_each_string(np, "compatible", prop, name) 428 - if (!strncmp("ti,sysc-", name, 8)) 429 - break; 430 - 431 - child = of_get_next_available_child(np, NULL); 432 - 433 - if (name) 434 - irq = irq_of_parse_and_map(child, 0); 435 - if (!irq) 436 - irq = irq_of_parse_and_map(np, 0); 437 - if (!irq) { 438 - error = -EINVAL; 439 - goto free; 440 - } 441 - 442 - /* Legacy DMA code needs interrupt name to be "0" */ 443 - res[1].start = irq; 444 - res[1].end = irq; 445 - res[1].flags = IORESOURCE_IRQ; 446 - res[1].name = "0"; 447 - 448 - error = platform_device_add_resources(pdev, res, 2); 449 - 450 - free: 451 - kfree(res); 452 - 453 - error: 454 - WARN(error, "%s: %s device %s failed: %i\n", 455 - __func__, oh->name, dev_name(&pdev->dev), 456 - error); 457 - 458 - return error; 459 - } 460 - 461 - /** 462 - * omap_device_build - build and register an omap_device with one omap_hwmod 463 - * @pdev_name: name of the platform_device driver to use 464 - * @pdev_id: this platform_device's connection ID 465 - * @oh: ptr to the single omap_hwmod that backs this omap_device 466 - * @pdata: platform_data ptr to associate with the platform_device 467 - * @pdata_len: amount of memory pointed to by @pdata 468 - * 469 - * Convenience function for building and registering a single 470 - * omap_device record, which in turn builds and registers a 471 - * platform_device record. See omap_device_build_ss() for more 472 - * information. Returns ERR_PTR(-EINVAL) if @oh is NULL; otherwise, 473 - * passes along the return value of omap_device_build_ss(). 474 - */ 475 - struct platform_device __init *omap_device_build(const char *pdev_name, 476 - int pdev_id, 477 - struct omap_hwmod *oh, 478 - void *pdata, int pdata_len) 479 - { 480 - int ret = -ENOMEM; 481 - struct platform_device *pdev; 482 - struct omap_device *od; 483 - 484 - if (!oh || !pdev_name) 485 - return ERR_PTR(-EINVAL); 486 - 487 - if (!pdata && pdata_len > 0) 488 - return ERR_PTR(-EINVAL); 489 - 490 - if (strncmp(oh->name, "smartreflex", 11) && 491 - strncmp(oh->name, "dma", 3)) { 492 - pr_warn("%s need to update %s to probe with dt\na", 493 - __func__, pdev_name); 494 - ret = -ENODEV; 495 - goto odbs_exit; 496 - } 497 - 498 - pdev = platform_device_alloc(pdev_name, pdev_id); 499 - if (!pdev) { 500 - ret = -ENOMEM; 501 - goto odbs_exit; 502 - } 503 - 504 - /* Set the dev_name early to allow dev_xxx in omap_device_alloc */ 505 - if (pdev->id != -1) 506 - dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id); 507 - else 508 - dev_set_name(&pdev->dev, "%s", pdev->name); 509 - 510 - /* 511 - * Must be called before omap_device_alloc() as oh->od 512 - * only contains the currently registered omap_device 513 - * and will get overwritten by omap_device_alloc(). 514 - */ 515 - ret = omap_device_copy_resources(oh, pdev); 516 - if (ret) 517 - goto odbs_exit1; 518 - 519 - od = omap_device_alloc(pdev, &oh, 1); 520 - if (IS_ERR(od)) { 521 - ret = PTR_ERR(od); 522 - goto odbs_exit1; 523 - } 524 - 525 - ret = platform_device_add_data(pdev, pdata, pdata_len); 526 - if (ret) 527 - goto odbs_exit2; 528 - 529 - ret = omap_device_register(pdev); 530 - if (ret) 531 - goto odbs_exit2; 532 - 533 - return pdev; 534 - 535 - odbs_exit2: 536 - omap_device_delete(od); 537 - odbs_exit1: 538 - platform_device_put(pdev); 539 - odbs_exit: 540 - 541 - pr_err("omap_device: %s: build failed (%d)\n", pdev_name, ret); 542 - 543 - return ERR_PTR(ret); 544 - } 545 - 546 376 #ifdef CONFIG_PM 547 377 static int _od_runtime_suspend(struct device *dev) 548 378 {
-4
arch/arm/mach-omap2/omap_device.h
··· 68 68 69 69 /* Core code interface */ 70 70 71 - struct platform_device *omap_device_build(const char *pdev_name, int pdev_id, 72 - struct omap_hwmod *oh, void *pdata, 73 - int pdata_len); 74 - 75 71 struct omap_device *omap_device_alloc(struct platform_device *pdev, 76 72 struct omap_hwmod **ohs, int oh_cnt); 77 73 void omap_device_delete(struct omap_device *od);
-18
arch/arm/mach-omap2/omap_hwmod.c
··· 1853 1853 } 1854 1854 1855 1855 /** 1856 - * _enable_preprogram - Pre-program an IP block during the _enable() process 1857 - * @oh: struct omap_hwmod * 1858 - * 1859 - * Some IP blocks (such as AESS) require some additional programming 1860 - * after enable before they can enter idle. If a function pointer to 1861 - * do so is present in the hwmod data, then call it and pass along the 1862 - * return value; otherwise, return 0. 1863 - */ 1864 - static int _enable_preprogram(struct omap_hwmod *oh) 1865 - { 1866 - if (!oh->class->enable_preprogram) 1867 - return 0; 1868 - 1869 - return oh->class->enable_preprogram(oh); 1870 - } 1871 - 1872 - /** 1873 1856 * _enable - enable an omap_hwmod 1874 1857 * @oh: struct omap_hwmod * 1875 1858 * ··· 1935 1952 _update_sysc_cache(oh); 1936 1953 _enable_sysc(oh); 1937 1954 } 1938 - r = _enable_preprogram(oh); 1939 1955 } else { 1940 1956 if (soc_ops.disable_module) 1941 1957 soc_ops.disable_module(oh);
-3
arch/arm/mach-omap2/omap_hwmod.h
··· 501 501 * @sysc: device SYSCONFIG/SYSSTATUS register data 502 502 * @pre_shutdown: ptr to fn to be executed immediately prior to device shutdown 503 503 * @reset: ptr to fn to be executed in place of the standard hwmod reset fn 504 - * @enable_preprogram: ptr to fn to be executed during device enable 505 504 * @lock: ptr to fn to be executed to lock IP registers 506 505 * @unlock: ptr to fn to be executed to unlock IP registers 507 506 * ··· 525 526 struct omap_hwmod_class_sysconfig *sysc; 526 527 int (*pre_shutdown)(struct omap_hwmod *oh); 527 528 int (*reset)(struct omap_hwmod *oh); 528 - int (*enable_preprogram)(struct omap_hwmod *oh); 529 529 void (*lock)(struct omap_hwmod *oh); 530 530 void (*unlock)(struct omap_hwmod *oh); 531 531 }; ··· 660 662 * 661 663 */ 662 664 663 - extern int omap_hwmod_aess_preprogram(struct omap_hwmod *oh); 664 665 void omap_hwmod_rtc_unlock(struct omap_hwmod *oh); 665 666 void omap_hwmod_rtc_lock(struct omap_hwmod *oh); 666 667
-34
arch/arm/mach-omap2/omap_hwmod_2420_data.c
··· 11 11 */ 12 12 13 13 #include <linux/platform_data/i2c-omap.h> 14 - #include <linux/omap-dma.h> 15 14 16 15 #include "omap_hwmod.h" 17 16 #include "l3_2xxx.h" ··· 123 124 }, 124 125 .class = &i2c_class, 125 126 .flags = HWMOD_16BIT_REG, 126 - }; 127 - 128 - /* dma attributes */ 129 - static struct omap_dma_dev_attr dma_dev_attr = { 130 - .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 131 - IS_CSSA_32 | IS_CDSA_32, 132 - .lch_count = 32, 133 - }; 134 - 135 - static struct omap_hwmod omap2420_dma_system_hwmod = { 136 - .name = "dma", 137 - .class = &omap2xxx_dma_hwmod_class, 138 - .main_clk = "core_l3_ck", 139 - .dev_attr = &dma_dev_attr, 140 - .flags = HWMOD_NO_IDLEST, 141 127 }; 142 128 143 129 /* mailbox */ ··· 312 328 .user = OCP_USER_MPU | OCP_USER_SDMA, 313 329 }; 314 330 315 - /* dma_system -> L3 */ 316 - static struct omap_hwmod_ocp_if omap2420_dma_system__l3 = { 317 - .master = &omap2420_dma_system_hwmod, 318 - .slave = &omap2xxx_l3_main_hwmod, 319 - .clk = "core_l3_ck", 320 - .user = OCP_USER_MPU | OCP_USER_SDMA, 321 - }; 322 - 323 - /* l4_core -> dma_system */ 324 - static struct omap_hwmod_ocp_if omap2420_l4_core__dma_system = { 325 - .master = &omap2xxx_l4_core_hwmod, 326 - .slave = &omap2420_dma_system_hwmod, 327 - .clk = "sdma_ick", 328 - .user = OCP_USER_MPU | OCP_USER_SDMA, 329 - }; 330 - 331 331 /* l4_core -> mailbox */ 332 332 static struct omap_hwmod_ocp_if omap2420_l4_core__mailbox = { 333 333 .master = &omap2xxx_l4_core_hwmod, ··· 403 435 &omap2420_l4_wkup__gpio2, 404 436 &omap2420_l4_wkup__gpio3, 405 437 &omap2420_l4_wkup__gpio4, 406 - &omap2420_dma_system__l3, 407 - &omap2420_l4_core__dma_system, 408 438 &omap2420_l4_core__mailbox, 409 439 &omap2420_l4_core__mcbsp1, 410 440 &omap2420_l4_core__mcbsp2,
-34
arch/arm/mach-omap2/omap_hwmod_2430_data.c
··· 12 12 13 13 #include <linux/platform_data/i2c-omap.h> 14 14 #include <linux/platform_data/hsmmc-omap.h> 15 - #include <linux/omap-dma.h> 16 15 17 16 #include "omap_hwmod.h" 18 17 #include "l3_2xxx.h" ··· 118 119 }, 119 120 }, 120 121 .class = &omap2xxx_gpio_hwmod_class, 121 - }; 122 - 123 - /* dma attributes */ 124 - static struct omap_dma_dev_attr dma_dev_attr = { 125 - .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 126 - IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY, 127 - .lch_count = 32, 128 - }; 129 - 130 - static struct omap_hwmod omap2430_dma_system_hwmod = { 131 - .name = "dma", 132 - .class = &omap2xxx_dma_hwmod_class, 133 - .main_clk = "core_l3_ck", 134 - .dev_attr = &dma_dev_attr, 135 - .flags = HWMOD_NO_IDLEST, 136 122 }; 137 123 138 124 /* mailbox */ ··· 492 508 .user = OCP_USER_MPU | OCP_USER_SDMA, 493 509 }; 494 510 495 - /* dma_system -> L3 */ 496 - static struct omap_hwmod_ocp_if omap2430_dma_system__l3 = { 497 - .master = &omap2430_dma_system_hwmod, 498 - .slave = &omap2xxx_l3_main_hwmod, 499 - .clk = "core_l3_ck", 500 - .user = OCP_USER_MPU | OCP_USER_SDMA, 501 - }; 502 - 503 - /* l4_core -> dma_system */ 504 - static struct omap_hwmod_ocp_if omap2430_l4_core__dma_system = { 505 - .master = &omap2xxx_l4_core_hwmod, 506 - .slave = &omap2430_dma_system_hwmod, 507 - .clk = "sdma_ick", 508 - .user = OCP_USER_MPU | OCP_USER_SDMA, 509 - }; 510 - 511 511 /* l4_core -> mailbox */ 512 512 static struct omap_hwmod_ocp_if omap2430_l4_core__mailbox = { 513 513 .master = &omap2xxx_l4_core_hwmod, ··· 603 635 &omap2430_l4_wkup__gpio3, 604 636 &omap2430_l4_wkup__gpio4, 605 637 &omap2430_l4_core__gpio5, 606 - &omap2430_dma_system__l3, 607 - &omap2430_l4_core__dma_system, 608 638 &omap2430_l4_core__mailbox, 609 639 &omap2430_l4_core__mcbsp1, 610 640 &omap2430_l4_core__mcbsp2,
-18
arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c
··· 7 7 */ 8 8 9 9 #include <linux/types.h> 10 - #include <linux/omap-dma.h> 11 10 12 11 #include "omap_hwmod.h" 13 12 #include "omap_hwmod_common_data.h" ··· 92 93 struct omap_hwmod_class omap2xxx_gpio_hwmod_class = { 93 94 .name = "gpio", 94 95 .sysc = &omap2xxx_gpio_sysc, 95 - }; 96 - 97 - /* system dma */ 98 - static struct omap_hwmod_class_sysconfig omap2xxx_dma_sysc = { 99 - .rev_offs = 0x0000, 100 - .sysc_offs = 0x002c, 101 - .syss_offs = 0x0028, 102 - .sysc_flags = (SYSC_HAS_SOFTRESET | SYSC_HAS_MIDLEMODE | 103 - SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_EMUFREE | 104 - SYSC_HAS_AUTOIDLE | SYSS_HAS_RESET_STATUS), 105 - .idlemodes = (MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 106 - .sysc_fields = &omap_hwmod_sysc_type1, 107 - }; 108 - 109 - struct omap_hwmod_class omap2xxx_dma_hwmod_class = { 110 - .name = "dma", 111 - .sysc = &omap2xxx_dma_sysc, 112 96 }; 113 97 114 98 /*
-33
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_common_data.h
··· 28 28 extern struct omap_hwmod_ocp_if am33xx_gfx__l3_main; 29 29 extern struct omap_hwmod_ocp_if am33xx_l3_main__gfx; 30 30 extern struct omap_hwmod_ocp_if am33xx_l4_wkup__rtc; 31 - extern struct omap_hwmod_ocp_if am33xx_l4_per__dcan0; 32 - extern struct omap_hwmod_ocp_if am33xx_l4_per__dcan1; 33 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__elm; 34 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0; 35 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1; 36 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2; 37 31 extern struct omap_hwmod_ocp_if am33xx_l3_s__gpmc; 38 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock; 39 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0; 40 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1; 41 32 extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer2; 42 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer3; 43 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer4; 44 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer5; 45 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer6; 46 - extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer7; 47 33 extern struct omap_hwmod_ocp_if am33xx_l3_main__tpcc; 48 34 extern struct omap_hwmod_ocp_if am33xx_l3_main__tptc0; 49 35 extern struct omap_hwmod_ocp_if am33xx_l3_main__tptc1; 50 36 extern struct omap_hwmod_ocp_if am33xx_l3_main__tptc2; 51 37 extern struct omap_hwmod_ocp_if am33xx_l3_main__ocmc; 52 - extern struct omap_hwmod_ocp_if am33xx_l3_main__sha0; 53 - extern struct omap_hwmod_ocp_if am33xx_l3_main__aes0; 54 38 55 39 extern struct omap_hwmod am33xx_l3_main_hwmod; 56 40 extern struct omap_hwmod am33xx_l3_s_hwmod; ··· 45 61 extern struct omap_hwmod am33xx_pruss_hwmod; 46 62 extern struct omap_hwmod am33xx_gfx_hwmod; 47 63 extern struct omap_hwmod am33xx_prcm_hwmod; 48 - extern struct omap_hwmod am33xx_aes0_hwmod; 49 - extern struct omap_hwmod am33xx_sha0_hwmod; 50 64 extern struct omap_hwmod am33xx_ocmcram_hwmod; 51 65 extern struct omap_hwmod am33xx_smartreflex0_hwmod; 52 66 extern struct omap_hwmod am33xx_smartreflex1_hwmod; 53 - extern struct omap_hwmod am33xx_dcan0_hwmod; 54 - extern struct omap_hwmod am33xx_dcan1_hwmod; 55 - extern struct omap_hwmod am33xx_elm_hwmod; 56 - extern struct omap_hwmod am33xx_epwmss0_hwmod; 57 - extern struct omap_hwmod am33xx_epwmss1_hwmod; 58 - extern struct omap_hwmod am33xx_epwmss2_hwmod; 59 67 extern struct omap_hwmod am33xx_gpmc_hwmod; 60 68 extern struct omap_hwmod am33xx_rtc_hwmod; 61 - extern struct omap_hwmod am33xx_spi0_hwmod; 62 - extern struct omap_hwmod am33xx_spi1_hwmod; 63 - extern struct omap_hwmod am33xx_spinlock_hwmod; 64 69 extern struct omap_hwmod am33xx_timer1_hwmod; 65 70 extern struct omap_hwmod am33xx_timer2_hwmod; 66 - extern struct omap_hwmod am33xx_timer3_hwmod; 67 - extern struct omap_hwmod am33xx_timer4_hwmod; 68 - extern struct omap_hwmod am33xx_timer5_hwmod; 69 - extern struct omap_hwmod am33xx_timer6_hwmod; 70 - extern struct omap_hwmod am33xx_timer7_hwmod; 71 71 extern struct omap_hwmod am33xx_tpcc_hwmod; 72 72 extern struct omap_hwmod am33xx_tptc0_hwmod; 73 73 extern struct omap_hwmod am33xx_tptc1_hwmod; ··· 62 94 extern struct omap_hwmod_class am33xx_wkup_m3_hwmod_class; 63 95 extern struct omap_hwmod_class am33xx_control_hwmod_class; 64 96 extern struct omap_hwmod_class am33xx_timer_hwmod_class; 65 - extern struct omap_hwmod_class am33xx_epwmss_hwmod_class; 66 97 extern struct omap_hwmod_class am33xx_ehrpwm_hwmod_class; 67 98 extern struct omap_hwmod_class am33xx_spi_hwmod_class; 68 99
-124
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_interconnect_data.c
··· 106 106 .user = OCP_USER_MPU, 107 107 }; 108 108 109 - /* l4 per/ls -> DCAN0 */ 110 - struct omap_hwmod_ocp_if am33xx_l4_per__dcan0 = { 111 - .master = &am33xx_l4_ls_hwmod, 112 - .slave = &am33xx_dcan0_hwmod, 113 - .clk = "l4ls_gclk", 114 - .user = OCP_USER_MPU | OCP_USER_SDMA, 115 - }; 116 - 117 - /* l4 per/ls -> DCAN1 */ 118 - struct omap_hwmod_ocp_if am33xx_l4_per__dcan1 = { 119 - .master = &am33xx_l4_ls_hwmod, 120 - .slave = &am33xx_dcan1_hwmod, 121 - .clk = "l4ls_gclk", 122 - .user = OCP_USER_MPU | OCP_USER_SDMA, 123 - }; 124 - 125 - struct omap_hwmod_ocp_if am33xx_l4_ls__elm = { 126 - .master = &am33xx_l4_ls_hwmod, 127 - .slave = &am33xx_elm_hwmod, 128 - .clk = "l4ls_gclk", 129 - .user = OCP_USER_MPU, 130 - }; 131 - 132 - struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss0 = { 133 - .master = &am33xx_l4_ls_hwmod, 134 - .slave = &am33xx_epwmss0_hwmod, 135 - .clk = "l4ls_gclk", 136 - .user = OCP_USER_MPU, 137 - }; 138 - 139 - struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss1 = { 140 - .master = &am33xx_l4_ls_hwmod, 141 - .slave = &am33xx_epwmss1_hwmod, 142 - .clk = "l4ls_gclk", 143 - .user = OCP_USER_MPU, 144 - }; 145 - 146 - struct omap_hwmod_ocp_if am33xx_l4_ls__epwmss2 = { 147 - .master = &am33xx_l4_ls_hwmod, 148 - .slave = &am33xx_epwmss2_hwmod, 149 - .clk = "l4ls_gclk", 150 - .user = OCP_USER_MPU, 151 - }; 152 - 153 109 /* l3s cfg -> gpmc */ 154 110 struct omap_hwmod_ocp_if am33xx_l3_s__gpmc = { 155 111 .master = &am33xx_l3_s_hwmod, ··· 114 158 .user = OCP_USER_MPU, 115 159 }; 116 160 117 - /* l4 ls -> spinlock */ 118 - struct omap_hwmod_ocp_if am33xx_l4_ls__spinlock = { 119 - .master = &am33xx_l4_ls_hwmod, 120 - .slave = &am33xx_spinlock_hwmod, 121 - .clk = "l4ls_gclk", 122 - .user = OCP_USER_MPU, 123 - }; 124 - 125 - /* l4 ls -> mcspi0 */ 126 - struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi0 = { 127 - .master = &am33xx_l4_ls_hwmod, 128 - .slave = &am33xx_spi0_hwmod, 129 - .clk = "l4ls_gclk", 130 - .user = OCP_USER_MPU, 131 - }; 132 - 133 - /* l4 ls -> mcspi1 */ 134 - struct omap_hwmod_ocp_if am33xx_l4_ls__mcspi1 = { 135 - .master = &am33xx_l4_ls_hwmod, 136 - .slave = &am33xx_spi1_hwmod, 137 - .clk = "l4ls_gclk", 138 - .user = OCP_USER_MPU, 139 - }; 140 - 141 161 /* l4 per -> timer2 */ 142 162 struct omap_hwmod_ocp_if am33xx_l4_ls__timer2 = { 143 163 .master = &am33xx_l4_ls_hwmod, 144 164 .slave = &am33xx_timer2_hwmod, 145 - .clk = "l4ls_gclk", 146 - .user = OCP_USER_MPU, 147 - }; 148 - 149 - /* l4 per -> timer3 */ 150 - struct omap_hwmod_ocp_if am33xx_l4_ls__timer3 = { 151 - .master = &am33xx_l4_ls_hwmod, 152 - .slave = &am33xx_timer3_hwmod, 153 - .clk = "l4ls_gclk", 154 - .user = OCP_USER_MPU, 155 - }; 156 - 157 - /* l4 per -> timer4 */ 158 - struct omap_hwmod_ocp_if am33xx_l4_ls__timer4 = { 159 - .master = &am33xx_l4_ls_hwmod, 160 - .slave = &am33xx_timer4_hwmod, 161 - .clk = "l4ls_gclk", 162 - .user = OCP_USER_MPU, 163 - }; 164 - 165 - /* l4 per -> timer5 */ 166 - struct omap_hwmod_ocp_if am33xx_l4_ls__timer5 = { 167 - .master = &am33xx_l4_ls_hwmod, 168 - .slave = &am33xx_timer5_hwmod, 169 - .clk = "l4ls_gclk", 170 - .user = OCP_USER_MPU, 171 - }; 172 - 173 - /* l4 per -> timer6 */ 174 - struct omap_hwmod_ocp_if am33xx_l4_ls__timer6 = { 175 - .master = &am33xx_l4_ls_hwmod, 176 - .slave = &am33xx_timer6_hwmod, 177 - .clk = "l4ls_gclk", 178 - .user = OCP_USER_MPU, 179 - }; 180 - 181 - /* l4 per -> timer7 */ 182 - struct omap_hwmod_ocp_if am33xx_l4_ls__timer7 = { 183 - .master = &am33xx_l4_ls_hwmod, 184 - .slave = &am33xx_timer7_hwmod, 185 165 .clk = "l4ls_gclk", 186 166 .user = OCP_USER_MPU, 187 167 }; ··· 158 266 struct omap_hwmod_ocp_if am33xx_l3_main__ocmc = { 159 267 .master = &am33xx_l3_main_hwmod, 160 268 .slave = &am33xx_ocmcram_hwmod, 161 - .user = OCP_USER_MPU | OCP_USER_SDMA, 162 - }; 163 - 164 - /* l3 main -> sha0 HIB2 */ 165 - struct omap_hwmod_ocp_if am33xx_l3_main__sha0 = { 166 - .master = &am33xx_l3_main_hwmod, 167 - .slave = &am33xx_sha0_hwmod, 168 - .clk = "sha0_fck", 169 - .user = OCP_USER_MPU | OCP_USER_SDMA, 170 - }; 171 - 172 - /* l3 main -> AES0 HIB2 */ 173 - struct omap_hwmod_ocp_if am33xx_l3_main__aes0 = { 174 - .master = &am33xx_l3_main_hwmod, 175 - .slave = &am33xx_aes0_hwmod, 176 - .clk = "aes0_fck", 177 269 .user = OCP_USER_MPU | OCP_USER_SDMA, 178 270 };
-335
arch/arm/mach-omap2/omap_hwmod_33xx_43xx_ipblock_data.c
··· 213 213 .sysc = &am33xx_emif_sysc, 214 214 }; 215 215 216 - /* 217 - * 'aes0' class 218 - */ 219 - static struct omap_hwmod_class_sysconfig am33xx_aes0_sysc = { 220 - .rev_offs = 0x80, 221 - .sysc_offs = 0x84, 222 - .syss_offs = 0x88, 223 - .sysc_flags = SYSS_HAS_RESET_STATUS, 224 - }; 225 216 226 - static struct omap_hwmod_class am33xx_aes0_hwmod_class = { 227 - .name = "aes0", 228 - .sysc = &am33xx_aes0_sysc, 229 - }; 230 - 231 - struct omap_hwmod am33xx_aes0_hwmod = { 232 - .name = "aes", 233 - .class = &am33xx_aes0_hwmod_class, 234 - .clkdm_name = "l3_clkdm", 235 - .main_clk = "aes0_fck", 236 - .prcm = { 237 - .omap4 = { 238 - .modulemode = MODULEMODE_SWCTRL, 239 - }, 240 - }, 241 - }; 242 - 243 - /* sha0 HIB2 (the 'P' (public) device) */ 244 - static struct omap_hwmod_class_sysconfig am33xx_sha0_sysc = { 245 - .rev_offs = 0x100, 246 - .sysc_offs = 0x110, 247 - .syss_offs = 0x114, 248 - .sysc_flags = SYSS_HAS_RESET_STATUS, 249 - }; 250 - 251 - static struct omap_hwmod_class am33xx_sha0_hwmod_class = { 252 - .name = "sha0", 253 - .sysc = &am33xx_sha0_sysc, 254 - }; 255 - 256 - struct omap_hwmod am33xx_sha0_hwmod = { 257 - .name = "sham", 258 - .class = &am33xx_sha0_hwmod_class, 259 - .clkdm_name = "l3_clkdm", 260 - .main_clk = "l3_gclk", 261 - .prcm = { 262 - .omap4 = { 263 - .modulemode = MODULEMODE_SWCTRL, 264 - }, 265 - }, 266 - }; 267 217 268 218 /* ocmcram */ 269 219 static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = { ··· 271 321 .name = "control", 272 322 }; 273 323 274 - /* 275 - * dcan class 276 - */ 277 - static struct omap_hwmod_class am33xx_dcan_hwmod_class = { 278 - .name = "d_can", 279 - }; 280 - 281 - /* dcan0 */ 282 - struct omap_hwmod am33xx_dcan0_hwmod = { 283 - .name = "d_can0", 284 - .class = &am33xx_dcan_hwmod_class, 285 - .clkdm_name = "l4ls_clkdm", 286 - .main_clk = "dcan0_fck", 287 - .prcm = { 288 - .omap4 = { 289 - .modulemode = MODULEMODE_SWCTRL, 290 - }, 291 - }, 292 - }; 293 - 294 - /* dcan1 */ 295 - struct omap_hwmod am33xx_dcan1_hwmod = { 296 - .name = "d_can1", 297 - .class = &am33xx_dcan_hwmod_class, 298 - .clkdm_name = "l4ls_clkdm", 299 - .main_clk = "dcan1_fck", 300 - .prcm = { 301 - .omap4 = { 302 - .modulemode = MODULEMODE_SWCTRL, 303 - }, 304 - }, 305 - }; 306 - 307 - /* elm */ 308 - static struct omap_hwmod_class_sysconfig am33xx_elm_sysc = { 309 - .rev_offs = 0x0000, 310 - .sysc_offs = 0x0010, 311 - .syss_offs = 0x0014, 312 - .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 313 - SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 314 - SYSS_HAS_RESET_STATUS), 315 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 316 - .sysc_fields = &omap_hwmod_sysc_type1, 317 - }; 318 - 319 - static struct omap_hwmod_class am33xx_elm_hwmod_class = { 320 - .name = "elm", 321 - .sysc = &am33xx_elm_sysc, 322 - }; 323 - 324 - struct omap_hwmod am33xx_elm_hwmod = { 325 - .name = "elm", 326 - .class = &am33xx_elm_hwmod_class, 327 - .clkdm_name = "l4ls_clkdm", 328 - .main_clk = "l4ls_gclk", 329 - .prcm = { 330 - .omap4 = { 331 - .modulemode = MODULEMODE_SWCTRL, 332 - }, 333 - }, 334 - }; 335 - 336 - /* pwmss */ 337 - static struct omap_hwmod_class_sysconfig am33xx_epwmss_sysc = { 338 - .rev_offs = 0x0, 339 - .sysc_offs = 0x4, 340 - .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE), 341 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 342 - SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | 343 - MSTANDBY_SMART | MSTANDBY_SMART_WKUP), 344 - .sysc_fields = &omap_hwmod_sysc_type2, 345 - }; 346 - 347 - struct omap_hwmod_class am33xx_epwmss_hwmod_class = { 348 - .name = "epwmss", 349 - .sysc = &am33xx_epwmss_sysc, 350 - }; 351 - 352 - /* epwmss0 */ 353 - struct omap_hwmod am33xx_epwmss0_hwmod = { 354 - .name = "epwmss0", 355 - .class = &am33xx_epwmss_hwmod_class, 356 - .clkdm_name = "l4ls_clkdm", 357 - .main_clk = "l4ls_gclk", 358 - .prcm = { 359 - .omap4 = { 360 - .modulemode = MODULEMODE_SWCTRL, 361 - }, 362 - }, 363 - }; 364 - 365 - /* epwmss1 */ 366 - struct omap_hwmod am33xx_epwmss1_hwmod = { 367 - .name = "epwmss1", 368 - .class = &am33xx_epwmss_hwmod_class, 369 - .clkdm_name = "l4ls_clkdm", 370 - .main_clk = "l4ls_gclk", 371 - .prcm = { 372 - .omap4 = { 373 - .modulemode = MODULEMODE_SWCTRL, 374 - }, 375 - }, 376 - }; 377 - 378 - /* epwmss2 */ 379 - struct omap_hwmod am33xx_epwmss2_hwmod = { 380 - .name = "epwmss2", 381 - .class = &am33xx_epwmss_hwmod_class, 382 - .clkdm_name = "l4ls_clkdm", 383 - .main_clk = "l4ls_gclk", 384 - .prcm = { 385 - .omap4 = { 386 - .modulemode = MODULEMODE_SWCTRL, 387 - }, 388 - }, 389 - }; 390 324 391 325 /* gpmc */ 392 326 static struct omap_hwmod_class_sysconfig gpmc_sysc = { ··· 335 501 }, 336 502 }; 337 503 338 - /* 'spi' class */ 339 - static struct omap_hwmod_class_sysconfig am33xx_mcspi_sysc = { 340 - .rev_offs = 0x0000, 341 - .sysc_offs = 0x0110, 342 - .syss_offs = 0x0114, 343 - .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 344 - SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE | 345 - SYSS_HAS_RESET_STATUS), 346 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 347 - .sysc_fields = &omap_hwmod_sysc_type1, 348 - }; 349 - 350 - struct omap_hwmod_class am33xx_spi_hwmod_class = { 351 - .name = "mcspi", 352 - .sysc = &am33xx_mcspi_sysc, 353 - }; 354 - 355 - /* spi0 */ 356 - struct omap_hwmod am33xx_spi0_hwmod = { 357 - .name = "spi0", 358 - .class = &am33xx_spi_hwmod_class, 359 - .clkdm_name = "l4ls_clkdm", 360 - .main_clk = "dpll_per_m2_div4_ck", 361 - .prcm = { 362 - .omap4 = { 363 - .modulemode = MODULEMODE_SWCTRL, 364 - }, 365 - }, 366 - }; 367 - 368 - /* spi1 */ 369 - struct omap_hwmod am33xx_spi1_hwmod = { 370 - .name = "spi1", 371 - .class = &am33xx_spi_hwmod_class, 372 - .clkdm_name = "l4ls_clkdm", 373 - .main_clk = "dpll_per_m2_div4_ck", 374 - .prcm = { 375 - .omap4 = { 376 - .modulemode = MODULEMODE_SWCTRL, 377 - }, 378 - }, 379 - }; 380 - 381 - /* 382 - * 'spinlock' class 383 - * spinlock provides hardware assistance for synchronizing the 384 - * processes running on multiple processors 385 - */ 386 - 387 - static struct omap_hwmod_class_sysconfig am33xx_spinlock_sysc = { 388 - .rev_offs = 0x0000, 389 - .sysc_offs = 0x0010, 390 - .syss_offs = 0x0014, 391 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 392 - SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 393 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 394 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 395 - .sysc_fields = &omap_hwmod_sysc_type1, 396 - }; 397 - 398 - static struct omap_hwmod_class am33xx_spinlock_hwmod_class = { 399 - .name = "spinlock", 400 - .sysc = &am33xx_spinlock_sysc, 401 - }; 402 - 403 - struct omap_hwmod am33xx_spinlock_hwmod = { 404 - .name = "spinlock", 405 - .class = &am33xx_spinlock_hwmod_class, 406 - .clkdm_name = "l4ls_clkdm", 407 - .main_clk = "l4ls_gclk", 408 - .prcm = { 409 - .omap4 = { 410 - .modulemode = MODULEMODE_SWCTRL, 411 - }, 412 - }, 413 - }; 414 - 415 504 /* 'timer 2-7' class */ 416 505 static struct omap_hwmod_class_sysconfig am33xx_timer_sysc = { 417 506 .rev_offs = 0x0000, ··· 386 629 .class = &am33xx_timer_hwmod_class, 387 630 .clkdm_name = "l4ls_clkdm", 388 631 .main_clk = "timer2_fck", 389 - .prcm = { 390 - .omap4 = { 391 - .modulemode = MODULEMODE_SWCTRL, 392 - }, 393 - }, 394 - }; 395 - 396 - struct omap_hwmod am33xx_timer3_hwmod = { 397 - .name = "timer3", 398 - .class = &am33xx_timer_hwmod_class, 399 - .clkdm_name = "l4ls_clkdm", 400 - .main_clk = "timer3_fck", 401 - .prcm = { 402 - .omap4 = { 403 - .modulemode = MODULEMODE_SWCTRL, 404 - }, 405 - }, 406 - }; 407 - 408 - struct omap_hwmod am33xx_timer4_hwmod = { 409 - .name = "timer4", 410 - .class = &am33xx_timer_hwmod_class, 411 - .clkdm_name = "l4ls_clkdm", 412 - .main_clk = "timer4_fck", 413 - .prcm = { 414 - .omap4 = { 415 - .modulemode = MODULEMODE_SWCTRL, 416 - }, 417 - }, 418 - }; 419 - 420 - struct omap_hwmod am33xx_timer5_hwmod = { 421 - .name = "timer5", 422 - .class = &am33xx_timer_hwmod_class, 423 - .clkdm_name = "l4ls_clkdm", 424 - .main_clk = "timer5_fck", 425 - .prcm = { 426 - .omap4 = { 427 - .modulemode = MODULEMODE_SWCTRL, 428 - }, 429 - }, 430 - }; 431 - 432 - struct omap_hwmod am33xx_timer6_hwmod = { 433 - .name = "timer6", 434 - .class = &am33xx_timer_hwmod_class, 435 - .clkdm_name = "l4ls_clkdm", 436 - .main_clk = "timer6_fck", 437 - .prcm = { 438 - .omap4 = { 439 - .modulemode = MODULEMODE_SWCTRL, 440 - }, 441 - }, 442 - }; 443 - 444 - struct omap_hwmod am33xx_timer7_hwmod = { 445 - .name = "timer7", 446 - .class = &am33xx_timer_hwmod_class, 447 - .clkdm_name = "l4ls_clkdm", 448 - .main_clk = "timer7_fck", 449 632 .prcm = { 450 633 .omap4 = { 451 634 .modulemode = MODULEMODE_SWCTRL, ··· 469 772 470 773 static void omap_hwmod_am33xx_clkctrl(void) 471 774 { 472 - CLKCTRL(am33xx_dcan0_hwmod, AM33XX_CM_PER_DCAN0_CLKCTRL_OFFSET); 473 - CLKCTRL(am33xx_dcan1_hwmod, AM33XX_CM_PER_DCAN1_CLKCTRL_OFFSET); 474 - CLKCTRL(am33xx_elm_hwmod, AM33XX_CM_PER_ELM_CLKCTRL_OFFSET); 475 - CLKCTRL(am33xx_epwmss0_hwmod, AM33XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET); 476 - CLKCTRL(am33xx_epwmss1_hwmod, AM33XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET); 477 - CLKCTRL(am33xx_epwmss2_hwmod, AM33XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET); 478 - CLKCTRL(am33xx_spi0_hwmod, AM33XX_CM_PER_SPI0_CLKCTRL_OFFSET); 479 - CLKCTRL(am33xx_spi1_hwmod, AM33XX_CM_PER_SPI1_CLKCTRL_OFFSET); 480 - CLKCTRL(am33xx_spinlock_hwmod, AM33XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET); 481 775 CLKCTRL(am33xx_timer2_hwmod, AM33XX_CM_PER_TIMER2_CLKCTRL_OFFSET); 482 - CLKCTRL(am33xx_timer3_hwmod, AM33XX_CM_PER_TIMER3_CLKCTRL_OFFSET); 483 - CLKCTRL(am33xx_timer4_hwmod, AM33XX_CM_PER_TIMER4_CLKCTRL_OFFSET); 484 - CLKCTRL(am33xx_timer5_hwmod, AM33XX_CM_PER_TIMER5_CLKCTRL_OFFSET); 485 - CLKCTRL(am33xx_timer6_hwmod, AM33XX_CM_PER_TIMER6_CLKCTRL_OFFSET); 486 - CLKCTRL(am33xx_timer7_hwmod, AM33XX_CM_PER_TIMER7_CLKCTRL_OFFSET); 487 776 CLKCTRL(am33xx_smartreflex0_hwmod, 488 777 AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET); 489 778 CLKCTRL(am33xx_smartreflex1_hwmod, ··· 490 807 CLKCTRL(am33xx_mpu_hwmod , AM33XX_CM_MPU_MPU_CLKCTRL_OFFSET); 491 808 CLKCTRL(am33xx_l3_instr_hwmod , AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET); 492 809 CLKCTRL(am33xx_ocmcram_hwmod , AM33XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET); 493 - CLKCTRL(am33xx_sha0_hwmod , AM33XX_CM_PER_SHA0_CLKCTRL_OFFSET); 494 - CLKCTRL(am33xx_aes0_hwmod , AM33XX_CM_PER_AES0_CLKCTRL_OFFSET); 495 810 } 496 811 497 812 static void omap_hwmod_am33xx_rst(void) ··· 507 826 508 827 static void omap_hwmod_am43xx_clkctrl(void) 509 828 { 510 - CLKCTRL(am33xx_dcan0_hwmod, AM43XX_CM_PER_DCAN0_CLKCTRL_OFFSET); 511 - CLKCTRL(am33xx_dcan1_hwmod, AM43XX_CM_PER_DCAN1_CLKCTRL_OFFSET); 512 - CLKCTRL(am33xx_elm_hwmod, AM43XX_CM_PER_ELM_CLKCTRL_OFFSET); 513 - CLKCTRL(am33xx_epwmss0_hwmod, AM43XX_CM_PER_EPWMSS0_CLKCTRL_OFFSET); 514 - CLKCTRL(am33xx_epwmss1_hwmod, AM43XX_CM_PER_EPWMSS1_CLKCTRL_OFFSET); 515 - CLKCTRL(am33xx_epwmss2_hwmod, AM43XX_CM_PER_EPWMSS2_CLKCTRL_OFFSET); 516 - CLKCTRL(am33xx_spi0_hwmod, AM43XX_CM_PER_SPI0_CLKCTRL_OFFSET); 517 - CLKCTRL(am33xx_spi1_hwmod, AM43XX_CM_PER_SPI1_CLKCTRL_OFFSET); 518 - CLKCTRL(am33xx_spinlock_hwmod, AM43XX_CM_PER_SPINLOCK_CLKCTRL_OFFSET); 519 829 CLKCTRL(am33xx_timer2_hwmod, AM43XX_CM_PER_TIMER2_CLKCTRL_OFFSET); 520 - CLKCTRL(am33xx_timer3_hwmod, AM43XX_CM_PER_TIMER3_CLKCTRL_OFFSET); 521 - CLKCTRL(am33xx_timer4_hwmod, AM43XX_CM_PER_TIMER4_CLKCTRL_OFFSET); 522 - CLKCTRL(am33xx_timer5_hwmod, AM43XX_CM_PER_TIMER5_CLKCTRL_OFFSET); 523 - CLKCTRL(am33xx_timer6_hwmod, AM43XX_CM_PER_TIMER6_CLKCTRL_OFFSET); 524 - CLKCTRL(am33xx_timer7_hwmod, AM43XX_CM_PER_TIMER7_CLKCTRL_OFFSET); 525 830 CLKCTRL(am33xx_smartreflex0_hwmod, 526 831 AM43XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET); 527 832 CLKCTRL(am33xx_smartreflex1_hwmod, ··· 527 860 CLKCTRL(am33xx_mpu_hwmod , AM43XX_CM_MPU_MPU_CLKCTRL_OFFSET); 528 861 CLKCTRL(am33xx_l3_instr_hwmod , AM43XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET); 529 862 CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET); 530 - CLKCTRL(am33xx_sha0_hwmod , AM43XX_CM_PER_SHA0_CLKCTRL_OFFSET); 531 - CLKCTRL(am33xx_aes0_hwmod , AM43XX_CM_PER_AES0_CLKCTRL_OFFSET); 532 863 } 533 864 534 865 static void omap_hwmod_am43xx_rst(void)
-91
arch/arm/mach-omap2/omap_hwmod_33xx_data.c
··· 81 81 .rst_lines_cnt = ARRAY_SIZE(am33xx_wkup_m3_resets), 82 82 }; 83 83 84 - /* 85 - * 'adc/tsc' class 86 - * TouchScreen Controller (Anolog-To-Digital Converter) 87 - */ 88 - static struct omap_hwmod_class_sysconfig am33xx_adc_tsc_sysc = { 89 - .rev_offs = 0x00, 90 - .sysc_offs = 0x10, 91 - .sysc_flags = SYSC_HAS_SIDLEMODE, 92 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 93 - SIDLE_SMART_WKUP), 94 - .sysc_fields = &omap_hwmod_sysc_type2, 95 - }; 96 - 97 - static struct omap_hwmod_class am33xx_adc_tsc_hwmod_class = { 98 - .name = "adc_tsc", 99 - .sysc = &am33xx_adc_tsc_sysc, 100 - }; 101 - 102 - static struct omap_hwmod am33xx_adc_tsc_hwmod = { 103 - .name = "adc_tsc", 104 - .class = &am33xx_adc_tsc_hwmod_class, 105 - .clkdm_name = "l4_wkup_clkdm", 106 - .main_clk = "adc_tsc_fck", 107 - .prcm = { 108 - .omap4 = { 109 - .clkctrl_offs = AM33XX_CM_WKUP_ADC_TSC_CLKCTRL_OFFSET, 110 - .modulemode = MODULEMODE_SWCTRL, 111 - }, 112 - }, 113 - }; 114 84 115 85 /* 116 86 * Modules omap_hwmod structures ··· 196 226 }, 197 227 }; 198 228 199 - /* lcdc */ 200 - static struct omap_hwmod_class_sysconfig lcdc_sysc = { 201 - .rev_offs = 0x0, 202 - .sysc_offs = 0x54, 203 - .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE, 204 - .idlemodes = SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 205 - MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART, 206 - .sysc_fields = &omap_hwmod_sysc_type2, 207 - }; 208 - 209 - static struct omap_hwmod_class am33xx_lcdc_hwmod_class = { 210 - .name = "lcdc", 211 - .sysc = &lcdc_sysc, 212 - }; 213 - 214 - static struct omap_hwmod am33xx_lcdc_hwmod = { 215 - .name = "lcdc", 216 - .class = &am33xx_lcdc_hwmod_class, 217 - .clkdm_name = "lcdc_clkdm", 218 - .flags = HWMOD_SWSUP_SIDLE | HWMOD_SWSUP_MSTANDBY, 219 - .main_clk = "lcd_gclk", 220 - .prcm = { 221 - .omap4 = { 222 - .clkctrl_offs = AM33XX_CM_PER_LCDC_CLKCTRL_OFFSET, 223 - .modulemode = MODULEMODE_SWCTRL, 224 - }, 225 - }, 226 - }; 227 229 228 230 /* 229 231 * Interfaces ··· 273 331 .user = OCP_USER_MPU, 274 332 }; 275 333 276 - /* L4 WKUP -> ADC_TSC */ 277 - static struct omap_hwmod_ocp_if am33xx_l4_wkup__adc_tsc = { 278 - .master = &am33xx_l4_wkup_hwmod, 279 - .slave = &am33xx_adc_tsc_hwmod, 280 - .clk = "dpll_core_m4_div2_ck", 281 - .user = OCP_USER_MPU, 282 - }; 283 - 284 - static struct omap_hwmod_ocp_if am33xx_l3_main__lcdc = { 285 - .master = &am33xx_l3_main_hwmod, 286 - .slave = &am33xx_lcdc_hwmod, 287 - .clk = "dpll_core_m4_ck", 288 - .user = OCP_USER_MPU, 289 - }; 290 - 291 334 /* l4 wkup -> timer1 */ 292 335 static struct omap_hwmod_ocp_if am33xx_l4_wkup__timer1 = { 293 336 .master = &am33xx_l4_wkup_hwmod, ··· 302 375 &am33xx_l4_wkup__smartreflex1, 303 376 &am33xx_l4_wkup__timer1, 304 377 &am33xx_l4_wkup__rtc, 305 - &am33xx_l4_wkup__adc_tsc, 306 378 &am33xx_l4_hs__pruss, 307 - &am33xx_l4_per__dcan0, 308 - &am33xx_l4_per__dcan1, 309 379 &am33xx_l4_ls__timer2, 310 - &am33xx_l4_ls__timer3, 311 - &am33xx_l4_ls__timer4, 312 - &am33xx_l4_ls__timer5, 313 - &am33xx_l4_ls__timer6, 314 - &am33xx_l4_ls__timer7, 315 380 &am33xx_l3_main__tpcc, 316 - &am33xx_l4_ls__spinlock, 317 - &am33xx_l4_ls__elm, 318 - &am33xx_l4_ls__epwmss0, 319 - &am33xx_l4_ls__epwmss1, 320 - &am33xx_l4_ls__epwmss2, 321 381 &am33xx_l3_s__gpmc, 322 - &am33xx_l3_main__lcdc, 323 - &am33xx_l4_ls__mcspi0, 324 - &am33xx_l4_ls__mcspi1, 325 382 &am33xx_l3_main__tptc0, 326 383 &am33xx_l3_main__tptc1, 327 384 &am33xx_l3_main__tptc2, 328 385 &am33xx_l3_main__ocmc, 329 - &am33xx_l3_main__sha0, 330 - &am33xx_l3_main__aes0, 331 386 NULL, 332 387 }; 333 388
-61
arch/arm/mach-omap2/omap_hwmod_3xxx_data.c
··· 16 16 #include <linux/power/smartreflex.h> 17 17 #include <linux/platform_data/hsmmc-omap.h> 18 18 19 - #include <linux/omap-dma.h> 20 19 #include "l3_3xxx.h" 21 20 #include "l4_3xxx.h" 22 21 ··· 830 831 }, 831 832 }, 832 833 .class = &omap3xxx_gpio_hwmod_class, 833 - }; 834 - 835 - /* dma attributes */ 836 - static struct omap_dma_dev_attr dma_dev_attr = { 837 - .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 838 - IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY, 839 - .lch_count = 32, 840 - }; 841 - 842 - static struct omap_hwmod_class_sysconfig omap3xxx_dma_sysc = { 843 - .rev_offs = 0x0000, 844 - .sysc_offs = 0x002c, 845 - .syss_offs = 0x0028, 846 - .sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 847 - SYSC_HAS_MIDLEMODE | SYSC_HAS_CLOCKACTIVITY | 848 - SYSC_HAS_EMUFREE | SYSC_HAS_AUTOIDLE | 849 - SYSS_HAS_RESET_STATUS), 850 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 851 - MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 852 - .sysc_fields = &omap_hwmod_sysc_type1, 853 - }; 854 - 855 - static struct omap_hwmod_class omap3xxx_dma_hwmod_class = { 856 - .name = "dma", 857 - .sysc = &omap3xxx_dma_sysc, 858 - }; 859 - 860 - /* dma_system */ 861 - static struct omap_hwmod omap3xxx_dma_system_hwmod = { 862 - .name = "dma", 863 - .class = &omap3xxx_dma_hwmod_class, 864 - .main_clk = "core_l3_ick", 865 - .prcm = { 866 - .omap2 = { 867 - .module_offs = CORE_MOD, 868 - .idlest_reg_id = 1, 869 - .idlest_idle_bit = OMAP3430_ST_SDMA_SHIFT, 870 - }, 871 - }, 872 - .dev_attr = &dma_dev_attr, 873 - .flags = HWMOD_NO_IDLEST, 874 834 }; 875 835 876 836 /* ··· 2191 2233 .user = OCP_USER_MPU | OCP_USER_SDMA, 2192 2234 }; 2193 2235 2194 - /* dma_system -> L3 */ 2195 - static struct omap_hwmod_ocp_if omap3xxx_dma_system__l3 = { 2196 - .master = &omap3xxx_dma_system_hwmod, 2197 - .slave = &omap3xxx_l3_main_hwmod, 2198 - .clk = "core_l3_ick", 2199 - .user = OCP_USER_MPU | OCP_USER_SDMA, 2200 - }; 2201 - 2202 - /* l4_cfg -> dma_system */ 2203 - static struct omap_hwmod_ocp_if omap3xxx_l4_core__dma_system = { 2204 - .master = &omap3xxx_l4_core_hwmod, 2205 - .slave = &omap3xxx_dma_system_hwmod, 2206 - .clk = "core_l4_ick", 2207 - .user = OCP_USER_MPU | OCP_USER_SDMA, 2208 - }; 2209 - 2210 - 2211 2236 /* l4_core -> mcbsp1 */ 2212 2237 static struct omap_hwmod_ocp_if omap3xxx_l4_core__mcbsp1 = { 2213 2238 .master = &omap3xxx_l4_core_hwmod, ··· 2569 2628 &omap3xxx_l4_per__gpio4, 2570 2629 &omap3xxx_l4_per__gpio5, 2571 2630 &omap3xxx_l4_per__gpio6, 2572 - &omap3xxx_dma_system__l3, 2573 - &omap3xxx_l4_core__dma_system, 2574 2631 &omap3xxx_l4_core__mcbsp1, 2575 2632 &omap3xxx_l4_per__mcbsp2, 2576 2633 &omap3xxx_l4_per__mcbsp3,
-448
arch/arm/mach-omap2/omap_hwmod_43xx_data.c
··· 112 112 }, 113 113 }; 114 114 115 - static struct omap_hwmod am43xx_timer8_hwmod = { 116 - .name = "timer8", 117 - .class = &am33xx_timer_hwmod_class, 118 - .clkdm_name = "l4ls_clkdm", 119 - .main_clk = "timer8_fck", 120 - .prcm = { 121 - .omap4 = { 122 - .clkctrl_offs = AM43XX_CM_PER_TIMER8_CLKCTRL_OFFSET, 123 - .modulemode = MODULEMODE_SWCTRL, 124 - }, 125 - }, 126 - }; 127 - 128 - static struct omap_hwmod am43xx_timer9_hwmod = { 129 - .name = "timer9", 130 - .class = &am33xx_timer_hwmod_class, 131 - .clkdm_name = "l4ls_clkdm", 132 - .main_clk = "timer9_fck", 133 - .prcm = { 134 - .omap4 = { 135 - .clkctrl_offs = AM43XX_CM_PER_TIMER9_CLKCTRL_OFFSET, 136 - .modulemode = MODULEMODE_SWCTRL, 137 - }, 138 - }, 139 - }; 140 - 141 - static struct omap_hwmod am43xx_timer10_hwmod = { 142 - .name = "timer10", 143 - .class = &am33xx_timer_hwmod_class, 144 - .clkdm_name = "l4ls_clkdm", 145 - .main_clk = "timer10_fck", 146 - .prcm = { 147 - .omap4 = { 148 - .clkctrl_offs = AM43XX_CM_PER_TIMER10_CLKCTRL_OFFSET, 149 - .modulemode = MODULEMODE_SWCTRL, 150 - }, 151 - }, 152 - }; 153 - 154 - static struct omap_hwmod am43xx_timer11_hwmod = { 155 - .name = "timer11", 156 - .class = &am33xx_timer_hwmod_class, 157 - .clkdm_name = "l4ls_clkdm", 158 - .main_clk = "timer11_fck", 159 - .prcm = { 160 - .omap4 = { 161 - .clkctrl_offs = AM43XX_CM_PER_TIMER11_CLKCTRL_OFFSET, 162 - .modulemode = MODULEMODE_SWCTRL, 163 - }, 164 - }, 165 - }; 166 - 167 - static struct omap_hwmod am43xx_epwmss3_hwmod = { 168 - .name = "epwmss3", 169 - .class = &am33xx_epwmss_hwmod_class, 170 - .clkdm_name = "l4ls_clkdm", 171 - .main_clk = "l4ls_gclk", 172 - .prcm = { 173 - .omap4 = { 174 - .clkctrl_offs = AM43XX_CM_PER_EPWMSS3_CLKCTRL_OFFSET, 175 - .modulemode = MODULEMODE_SWCTRL, 176 - }, 177 - }, 178 - }; 179 - 180 - static struct omap_hwmod am43xx_epwmss4_hwmod = { 181 - .name = "epwmss4", 182 - .class = &am33xx_epwmss_hwmod_class, 183 - .clkdm_name = "l4ls_clkdm", 184 - .main_clk = "l4ls_gclk", 185 - .prcm = { 186 - .omap4 = { 187 - .clkctrl_offs = AM43XX_CM_PER_EPWMSS4_CLKCTRL_OFFSET, 188 - .modulemode = MODULEMODE_SWCTRL, 189 - }, 190 - }, 191 - }; 192 - 193 - static struct omap_hwmod am43xx_epwmss5_hwmod = { 194 - .name = "epwmss5", 195 - .class = &am33xx_epwmss_hwmod_class, 196 - .clkdm_name = "l4ls_clkdm", 197 - .main_clk = "l4ls_gclk", 198 - .prcm = { 199 - .omap4 = { 200 - .clkctrl_offs = AM43XX_CM_PER_EPWMSS5_CLKCTRL_OFFSET, 201 - .modulemode = MODULEMODE_SWCTRL, 202 - }, 203 - }, 204 - }; 205 - 206 - static struct omap_hwmod am43xx_spi2_hwmod = { 207 - .name = "spi2", 208 - .class = &am33xx_spi_hwmod_class, 209 - .clkdm_name = "l4ls_clkdm", 210 - .main_clk = "dpll_per_m2_div4_ck", 211 - .prcm = { 212 - .omap4 = { 213 - .clkctrl_offs = AM43XX_CM_PER_SPI2_CLKCTRL_OFFSET, 214 - .modulemode = MODULEMODE_SWCTRL, 215 - }, 216 - }, 217 - }; 218 - 219 - static struct omap_hwmod am43xx_spi3_hwmod = { 220 - .name = "spi3", 221 - .class = &am33xx_spi_hwmod_class, 222 - .clkdm_name = "l4ls_clkdm", 223 - .main_clk = "dpll_per_m2_div4_ck", 224 - .prcm = { 225 - .omap4 = { 226 - .clkctrl_offs = AM43XX_CM_PER_SPI3_CLKCTRL_OFFSET, 227 - .modulemode = MODULEMODE_SWCTRL, 228 - }, 229 - }, 230 - }; 231 - 232 - static struct omap_hwmod am43xx_spi4_hwmod = { 233 - .name = "spi4", 234 - .class = &am33xx_spi_hwmod_class, 235 - .clkdm_name = "l4ls_clkdm", 236 - .main_clk = "dpll_per_m2_div4_ck", 237 - .prcm = { 238 - .omap4 = { 239 - .clkctrl_offs = AM43XX_CM_PER_SPI4_CLKCTRL_OFFSET, 240 - .modulemode = MODULEMODE_SWCTRL, 241 - }, 242 - }, 243 - }; 244 - 245 - static struct omap_hwmod_class am43xx_ocp2scp_hwmod_class = { 246 - .name = "ocp2scp", 247 - }; 248 - 249 - static struct omap_hwmod am43xx_ocp2scp0_hwmod = { 250 - .name = "ocp2scp0", 251 - .class = &am43xx_ocp2scp_hwmod_class, 252 - .clkdm_name = "l4ls_clkdm", 253 - .main_clk = "l4ls_gclk", 254 - .prcm = { 255 - .omap4 = { 256 - .clkctrl_offs = AM43XX_CM_PER_USBPHYOCP2SCP0_CLKCTRL_OFFSET, 257 - .modulemode = MODULEMODE_SWCTRL, 258 - }, 259 - }, 260 - }; 261 - 262 - static struct omap_hwmod am43xx_ocp2scp1_hwmod = { 263 - .name = "ocp2scp1", 264 - .class = &am43xx_ocp2scp_hwmod_class, 265 - .clkdm_name = "l4ls_clkdm", 266 - .main_clk = "l4ls_gclk", 267 - .prcm = { 268 - .omap4 = { 269 - .clkctrl_offs = AM43XX_CM_PER_USBPHYOCP2SCP1_CLKCTRL_OFFSET, 270 - .modulemode = MODULEMODE_SWCTRL, 271 - }, 272 - }, 273 - }; 274 115 275 116 static struct omap_hwmod_class_sysconfig am43xx_usb_otg_ss_sysc = { 276 117 .rev_offs = 0x0000, ··· 151 310 .prcm = { 152 311 .omap4 = { 153 312 .clkctrl_offs = AM43XX_CM_PER_USB_OTG_SS1_CLKCTRL_OFFSET, 154 - .modulemode = MODULEMODE_SWCTRL, 155 - }, 156 - }, 157 - }; 158 - 159 - static struct omap_hwmod_class_sysconfig am43xx_qspi_sysc = { 160 - .rev_offs = 0, 161 - .sysc_offs = 0x0010, 162 - .sysc_flags = SYSC_HAS_SIDLEMODE, 163 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 164 - SIDLE_SMART_WKUP), 165 - .sysc_fields = &omap_hwmod_sysc_type2, 166 - }; 167 - 168 - static struct omap_hwmod_class am43xx_qspi_hwmod_class = { 169 - .name = "qspi", 170 - .sysc = &am43xx_qspi_sysc, 171 - }; 172 - 173 - static struct omap_hwmod am43xx_qspi_hwmod = { 174 - .name = "qspi", 175 - .class = &am43xx_qspi_hwmod_class, 176 - .clkdm_name = "l3s_clkdm", 177 - .main_clk = "l3s_gclk", 178 - .prcm = { 179 - .omap4 = { 180 - .clkctrl_offs = AM43XX_CM_PER_QSPI_CLKCTRL_OFFSET, 181 - .modulemode = MODULEMODE_SWCTRL, 182 - }, 183 - }, 184 - }; 185 - 186 - /* 187 - * 'adc/tsc' class 188 - * TouchScreen Controller (Analog-To-Digital Converter) 189 - */ 190 - static struct omap_hwmod_class_sysconfig am43xx_adc_tsc_sysc = { 191 - .rev_offs = 0x00, 192 - .sysc_offs = 0x10, 193 - .sysc_flags = SYSC_HAS_SIDLEMODE, 194 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 195 - SIDLE_SMART_WKUP), 196 - .sysc_fields = &omap_hwmod_sysc_type2, 197 - }; 198 - 199 - static struct omap_hwmod_class am43xx_adc_tsc_hwmod_class = { 200 - .name = "adc_tsc", 201 - .sysc = &am43xx_adc_tsc_sysc, 202 - }; 203 - 204 - static struct omap_hwmod am43xx_adc_tsc_hwmod = { 205 - .name = "adc_tsc", 206 - .class = &am43xx_adc_tsc_hwmod_class, 207 - .clkdm_name = "l3s_tsc_clkdm", 208 - .main_clk = "adc_tsc_fck", 209 - .prcm = { 210 - .omap4 = { 211 - .clkctrl_offs = AM43XX_CM_WKUP_ADC_TSC_CLKCTRL_OFFSET, 212 - .modulemode = MODULEMODE_SWCTRL, 213 - }, 214 - }, 215 - }; 216 - 217 - static struct omap_hwmod_class_sysconfig am43xx_des_sysc = { 218 - .rev_offs = 0x30, 219 - .sysc_offs = 0x34, 220 - .syss_offs = 0x38, 221 - .sysc_flags = SYSS_HAS_RESET_STATUS, 222 - }; 223 - 224 - static struct omap_hwmod_class am43xx_des_hwmod_class = { 225 - .name = "des", 226 - .sysc = &am43xx_des_sysc, 227 - }; 228 - 229 - static struct omap_hwmod am43xx_des_hwmod = { 230 - .name = "des", 231 - .class = &am43xx_des_hwmod_class, 232 - .clkdm_name = "l3_clkdm", 233 - .main_clk = "l3_gclk", 234 - .prcm = { 235 - .omap4 = { 236 - .clkctrl_offs = AM43XX_CM_PER_DES_CLKCTRL_OFFSET, 237 313 .modulemode = MODULEMODE_SWCTRL, 238 314 }, 239 315 }, ··· 225 467 }; 226 468 227 469 228 - static struct omap_hwmod_class_sysconfig am43xx_vpfe_sysc = { 229 - .rev_offs = 0x0, 230 - .sysc_offs = 0x104, 231 - .sysc_flags = SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE, 232 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 233 - MSTANDBY_FORCE | MSTANDBY_SMART | MSTANDBY_NO), 234 - .sysc_fields = &omap_hwmod_sysc_type2, 235 - }; 236 - 237 - static struct omap_hwmod_class am43xx_vpfe_hwmod_class = { 238 - .name = "vpfe", 239 - .sysc = &am43xx_vpfe_sysc, 240 - }; 241 - 242 - static struct omap_hwmod am43xx_vpfe0_hwmod = { 243 - .name = "vpfe0", 244 - .class = &am43xx_vpfe_hwmod_class, 245 - .clkdm_name = "l3s_clkdm", 246 - .prcm = { 247 - .omap4 = { 248 - .modulemode = MODULEMODE_SWCTRL, 249 - .clkctrl_offs = AM43XX_CM_PER_VPFE0_CLKCTRL_OFFSET, 250 - }, 251 - }, 252 - }; 253 - 254 - static struct omap_hwmod am43xx_vpfe1_hwmod = { 255 - .name = "vpfe1", 256 - .class = &am43xx_vpfe_hwmod_class, 257 - .clkdm_name = "l3s_clkdm", 258 - .prcm = { 259 - .omap4 = { 260 - .modulemode = MODULEMODE_SWCTRL, 261 - .clkctrl_offs = AM43XX_CM_PER_VPFE1_CLKCTRL_OFFSET, 262 - }, 263 - }, 264 - }; 265 - 266 470 /* Interfaces */ 267 471 static struct omap_hwmod_ocp_if am43xx_l3_main__emif = { 268 472 .master = &am33xx_l3_main_hwmod, ··· 282 562 .user = OCP_USER_MPU, 283 563 }; 284 564 285 - static struct omap_hwmod_ocp_if am43xx_l4_wkup__adc_tsc = { 286 - .master = &am33xx_l4_wkup_hwmod, 287 - .slave = &am43xx_adc_tsc_hwmod, 288 - .clk = "dpll_core_m4_div2_ck", 289 - .user = OCP_USER_MPU, 290 - }; 291 - 292 565 static struct omap_hwmod_ocp_if am43xx_l4_wkup__timer1 = { 293 566 .master = &am33xx_l4_wkup_hwmod, 294 567 .slave = &am33xx_timer1_hwmod, ··· 296 583 .user = OCP_USER_MPU, 297 584 }; 298 585 299 - static struct omap_hwmod_ocp_if am43xx_l4_ls__timer8 = { 300 - .master = &am33xx_l4_ls_hwmod, 301 - .slave = &am43xx_timer8_hwmod, 302 - .clk = "l4ls_gclk", 303 - .user = OCP_USER_MPU, 304 - }; 305 - 306 - static struct omap_hwmod_ocp_if am43xx_l4_ls__timer9 = { 307 - .master = &am33xx_l4_ls_hwmod, 308 - .slave = &am43xx_timer9_hwmod, 309 - .clk = "l4ls_gclk", 310 - .user = OCP_USER_MPU, 311 - }; 312 - 313 - static struct omap_hwmod_ocp_if am43xx_l4_ls__timer10 = { 314 - .master = &am33xx_l4_ls_hwmod, 315 - .slave = &am43xx_timer10_hwmod, 316 - .clk = "l4ls_gclk", 317 - .user = OCP_USER_MPU, 318 - }; 319 - 320 - static struct omap_hwmod_ocp_if am43xx_l4_ls__timer11 = { 321 - .master = &am33xx_l4_ls_hwmod, 322 - .slave = &am43xx_timer11_hwmod, 323 - .clk = "l4ls_gclk", 324 - .user = OCP_USER_MPU, 325 - }; 326 - 327 - static struct omap_hwmod_ocp_if am43xx_l4_ls__epwmss3 = { 328 - .master = &am33xx_l4_ls_hwmod, 329 - .slave = &am43xx_epwmss3_hwmod, 330 - .clk = "l4ls_gclk", 331 - .user = OCP_USER_MPU, 332 - }; 333 - 334 - static struct omap_hwmod_ocp_if am43xx_l4_ls__epwmss4 = { 335 - .master = &am33xx_l4_ls_hwmod, 336 - .slave = &am43xx_epwmss4_hwmod, 337 - .clk = "l4ls_gclk", 338 - .user = OCP_USER_MPU, 339 - }; 340 - 341 - static struct omap_hwmod_ocp_if am43xx_l4_ls__epwmss5 = { 342 - .master = &am33xx_l4_ls_hwmod, 343 - .slave = &am43xx_epwmss5_hwmod, 344 - .clk = "l4ls_gclk", 345 - .user = OCP_USER_MPU, 346 - }; 347 - 348 - static struct omap_hwmod_ocp_if am43xx_l4_ls__mcspi2 = { 349 - .master = &am33xx_l4_ls_hwmod, 350 - .slave = &am43xx_spi2_hwmod, 351 - .clk = "l4ls_gclk", 352 - .user = OCP_USER_MPU, 353 - }; 354 - 355 - static struct omap_hwmod_ocp_if am43xx_l4_ls__mcspi3 = { 356 - .master = &am33xx_l4_ls_hwmod, 357 - .slave = &am43xx_spi3_hwmod, 358 - .clk = "l4ls_gclk", 359 - .user = OCP_USER_MPU, 360 - }; 361 - 362 - static struct omap_hwmod_ocp_if am43xx_l4_ls__mcspi4 = { 363 - .master = &am33xx_l4_ls_hwmod, 364 - .slave = &am43xx_spi4_hwmod, 365 - .clk = "l4ls_gclk", 366 - .user = OCP_USER_MPU, 367 - }; 368 - 369 - static struct omap_hwmod_ocp_if am43xx_l4_ls__ocp2scp0 = { 370 - .master = &am33xx_l4_ls_hwmod, 371 - .slave = &am43xx_ocp2scp0_hwmod, 372 - .clk = "l4ls_gclk", 373 - .user = OCP_USER_MPU, 374 - }; 375 - 376 - static struct omap_hwmod_ocp_if am43xx_l4_ls__ocp2scp1 = { 377 - .master = &am33xx_l4_ls_hwmod, 378 - .slave = &am43xx_ocp2scp1_hwmod, 379 - .clk = "l4ls_gclk", 380 - .user = OCP_USER_MPU, 381 - }; 382 - 383 586 static struct omap_hwmod_ocp_if am43xx_l3_s__usbotgss0 = { 384 587 .master = &am33xx_l3_s_hwmod, 385 588 .slave = &am43xx_usb_otg_ss0_hwmod, ··· 306 677 static struct omap_hwmod_ocp_if am43xx_l3_s__usbotgss1 = { 307 678 .master = &am33xx_l3_s_hwmod, 308 679 .slave = &am43xx_usb_otg_ss1_hwmod, 309 - .clk = "l3s_gclk", 310 - .user = OCP_USER_MPU | OCP_USER_SDMA, 311 - }; 312 - 313 - static struct omap_hwmod_ocp_if am43xx_l3_s__qspi = { 314 - .master = &am33xx_l3_s_hwmod, 315 - .slave = &am43xx_qspi_hwmod, 316 680 .clk = "l3s_gclk", 317 681 .user = OCP_USER_MPU | OCP_USER_SDMA, 318 682 }; ··· 338 716 .user = OCP_USER_MPU | OCP_USER_SDMA, 339 717 }; 340 718 341 - static struct omap_hwmod_ocp_if am43xx_l3__vpfe0 = { 342 - .master = &am43xx_vpfe0_hwmod, 343 - .slave = &am33xx_l3_main_hwmod, 344 - .clk = "l3_gclk", 345 - .user = OCP_USER_MPU | OCP_USER_SDMA, 346 - }; 347 - 348 - static struct omap_hwmod_ocp_if am43xx_l3__vpfe1 = { 349 - .master = &am43xx_vpfe1_hwmod, 350 - .slave = &am33xx_l3_main_hwmod, 351 - .clk = "l3_gclk", 352 - .user = OCP_USER_MPU | OCP_USER_SDMA, 353 - }; 354 - 355 - static struct omap_hwmod_ocp_if am43xx_l4_ls__vpfe0 = { 356 - .master = &am33xx_l4_ls_hwmod, 357 - .slave = &am43xx_vpfe0_hwmod, 358 - .clk = "l4ls_gclk", 359 - .user = OCP_USER_MPU | OCP_USER_SDMA, 360 - }; 361 - 362 - static struct omap_hwmod_ocp_if am43xx_l4_ls__vpfe1 = { 363 - .master = &am33xx_l4_ls_hwmod, 364 - .slave = &am43xx_vpfe1_hwmod, 365 - .clk = "l4ls_gclk", 366 - .user = OCP_USER_MPU | OCP_USER_SDMA, 367 - }; 368 - 369 - static struct omap_hwmod_ocp_if am43xx_l3_main__des = { 370 - .master = &am33xx_l3_main_hwmod, 371 - .slave = &am43xx_des_hwmod, 372 - .clk = "l3_gclk", 373 - .user = OCP_USER_MPU, 374 - }; 375 - 376 719 static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = { 377 720 &am33xx_l4_wkup__synctimer, 378 - &am43xx_l4_ls__timer8, 379 - &am43xx_l4_ls__timer9, 380 - &am43xx_l4_ls__timer10, 381 - &am43xx_l4_ls__timer11, 382 - &am43xx_l4_ls__epwmss3, 383 - &am43xx_l4_ls__epwmss4, 384 - &am43xx_l4_ls__epwmss5, 385 - &am43xx_l4_ls__mcspi2, 386 - &am43xx_l4_ls__mcspi3, 387 - &am43xx_l4_ls__mcspi4, 388 721 &am43xx_l3_main__pruss, 389 722 &am33xx_mpu__l3_main, 390 723 &am33xx_mpu__prcm, ··· 359 782 &am43xx_l4_wkup__smartreflex0, 360 783 &am43xx_l4_wkup__smartreflex1, 361 784 &am43xx_l4_wkup__timer1, 362 - &am43xx_l4_wkup__adc_tsc, 363 - &am43xx_l3_s__qspi, 364 - &am33xx_l4_per__dcan0, 365 - &am33xx_l4_per__dcan1, 366 785 &am33xx_l4_ls__timer2, 367 - &am33xx_l4_ls__timer3, 368 - &am33xx_l4_ls__timer4, 369 - &am33xx_l4_ls__timer5, 370 - &am33xx_l4_ls__timer6, 371 - &am33xx_l4_ls__timer7, 372 786 &am33xx_l3_main__tpcc, 373 - &am33xx_l4_ls__spinlock, 374 - &am33xx_l4_ls__elm, 375 - &am33xx_l4_ls__epwmss0, 376 - &am33xx_l4_ls__epwmss1, 377 - &am33xx_l4_ls__epwmss2, 378 787 &am33xx_l3_s__gpmc, 379 - &am33xx_l4_ls__mcspi0, 380 - &am33xx_l4_ls__mcspi1, 381 788 &am33xx_l3_main__tptc0, 382 789 &am33xx_l3_main__tptc1, 383 790 &am33xx_l3_main__tptc2, 384 791 &am33xx_l3_main__ocmc, 385 - &am33xx_l3_main__sha0, 386 - &am33xx_l3_main__aes0, 387 - &am43xx_l3_main__des, 388 - &am43xx_l4_ls__ocp2scp0, 389 - &am43xx_l4_ls__ocp2scp1, 390 792 &am43xx_l3_s__usbotgss0, 391 793 &am43xx_l3_s__usbotgss1, 392 794 &am43xx_dss__l3_main, 393 795 &am43xx_l4_ls__dss, 394 796 &am43xx_l4_ls__dss_dispc, 395 797 &am43xx_l4_ls__dss_rfbi, 396 - &am43xx_l3__vpfe0, 397 - &am43xx_l3__vpfe1, 398 - &am43xx_l4_ls__vpfe0, 399 - &am43xx_l4_ls__vpfe1, 400 798 NULL, 401 799 }; 402 800
-1222
arch/arm/mach-omap2/omap_hwmod_44xx_data.c
··· 18 18 */ 19 19 20 20 #include <linux/io.h> 21 - #include <linux/power/smartreflex.h> 22 - 23 - #include <linux/omap-dma.h> 24 21 25 22 #include "omap_hwmod.h" 26 23 #include "omap_hwmod_common_data.h" ··· 28 31 29 32 /* Base offset for all OMAP4 interrupts external to MPUSS */ 30 33 #define OMAP44XX_IRQ_GIC_START 32 31 - 32 - /* Base offset for all OMAP4 dma requests */ 33 - #define OMAP44XX_DMA_REQ_START 1 34 34 35 35 /* 36 36 * IP blocks ··· 232 238 */ 233 239 234 240 /* 235 - * 'aess' class 236 - * audio engine sub system 237 - */ 238 - 239 - static struct omap_hwmod_class_sysconfig omap44xx_aess_sysc = { 240 - .rev_offs = 0x0000, 241 - .sysc_offs = 0x0010, 242 - .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE), 243 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 244 - MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART | 245 - MSTANDBY_SMART_WKUP), 246 - .sysc_fields = &omap_hwmod_sysc_type2, 247 - }; 248 - 249 - static struct omap_hwmod_class omap44xx_aess_hwmod_class = { 250 - .name = "aess", 251 - .sysc = &omap44xx_aess_sysc, 252 - .enable_preprogram = omap_hwmod_aess_preprogram, 253 - }; 254 - 255 - /* aess */ 256 - static struct omap_hwmod omap44xx_aess_hwmod = { 257 - .name = "aess", 258 - .class = &omap44xx_aess_hwmod_class, 259 - .clkdm_name = "abe_clkdm", 260 - .main_clk = "aess_fclk", 261 - .prcm = { 262 - .omap4 = { 263 - .clkctrl_offs = OMAP4_CM1_ABE_AESS_CLKCTRL_OFFSET, 264 - .context_offs = OMAP4_RM_ABE_AESS_CONTEXT_OFFSET, 265 - .lostcontext_mask = OMAP4430_LOSTCONTEXT_DFF_MASK, 266 - .modulemode = MODULEMODE_SWCTRL, 267 - }, 268 - }, 269 - }; 270 - 271 - /* 272 241 * 'counter' class 273 242 * 32-bit ordinary counter, clocked by the falling edge of the 32 khz clock 274 243 */ ··· 351 394 .omap4 = { 352 395 .clkctrl_offs = OMAP4_CM_EMU_DEBUGSS_CLKCTRL_OFFSET, 353 396 .context_offs = OMAP4_RM_EMU_DEBUGSS_CONTEXT_OFFSET, 354 - }, 355 - }, 356 - }; 357 - 358 - /* 359 - * 'dma' class 360 - * dma controller for data exchange between memory to memory (i.e. internal or 361 - * external memory) and gp peripherals to memory or memory to gp peripherals 362 - */ 363 - 364 - static struct omap_hwmod_class_sysconfig omap44xx_dma_sysc = { 365 - .rev_offs = 0x0000, 366 - .sysc_offs = 0x002c, 367 - .syss_offs = 0x0028, 368 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 369 - SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE | 370 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 371 - SYSS_HAS_RESET_STATUS), 372 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 373 - MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 374 - .sysc_fields = &omap_hwmod_sysc_type1, 375 - }; 376 - 377 - static struct omap_hwmod_class omap44xx_dma_hwmod_class = { 378 - .name = "dma", 379 - .sysc = &omap44xx_dma_sysc, 380 - }; 381 - 382 - /* dma dev_attr */ 383 - static struct omap_dma_dev_attr dma_dev_attr = { 384 - .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 385 - IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY, 386 - .lch_count = 32, 387 - }; 388 - 389 - /* dma_system */ 390 - static struct omap_hwmod omap44xx_dma_system_hwmod = { 391 - .name = "dma_system", 392 - .class = &omap44xx_dma_hwmod_class, 393 - .clkdm_name = "l3_dma_clkdm", 394 - .main_clk = "l3_div_ck", 395 - .prcm = { 396 - .omap4 = { 397 - .clkctrl_offs = OMAP4_CM_SDMA_SDMA_CLKCTRL_OFFSET, 398 - .context_offs = OMAP4_RM_SDMA_SDMA_CONTEXT_OFFSET, 399 - }, 400 - }, 401 - .dev_attr = &dma_dev_attr, 402 - }; 403 - 404 - /* 405 - * 'dmic' class 406 - * digital microphone controller 407 - */ 408 - 409 - static struct omap_hwmod_class_sysconfig omap44xx_dmic_sysc = { 410 - .rev_offs = 0x0000, 411 - .sysc_offs = 0x0010, 412 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | 413 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 414 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 415 - SIDLE_SMART_WKUP), 416 - .sysc_fields = &omap_hwmod_sysc_type2, 417 - }; 418 - 419 - static struct omap_hwmod_class omap44xx_dmic_hwmod_class = { 420 - .name = "dmic", 421 - .sysc = &omap44xx_dmic_sysc, 422 - }; 423 - 424 - /* dmic */ 425 - static struct omap_hwmod omap44xx_dmic_hwmod = { 426 - .name = "dmic", 427 - .class = &omap44xx_dmic_hwmod_class, 428 - .clkdm_name = "abe_clkdm", 429 - .main_clk = "func_dmic_abe_gfclk", 430 - .prcm = { 431 - .omap4 = { 432 - .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET, 433 - .context_offs = OMAP4_RM_ABE_DMIC_CONTEXT_OFFSET, 434 - .modulemode = MODULEMODE_SWCTRL, 435 397 }, 436 398 }, 437 399 }; ··· 653 777 .opt_clks_cnt = ARRAY_SIZE(dss_venc_opt_clks), 654 778 }; 655 779 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 780 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 - 683 - /* 684 - * 'elm' class 685 - * bch error location module 686 - */ 687 - 688 - static struct omap_hwmod_class_sysconfig omap44xx_elm_sysc = { 689 - .rev_offs = 0x0000, 690 - .sysc_offs = 0x0010, 691 - .syss_offs = 0x0014, 692 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 693 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 694 - SYSS_HAS_RESET_STATUS), 695 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 696 - .sysc_fields = &omap_hwmod_sysc_type1, 697 - }; 698 - 699 - static struct omap_hwmod_class omap44xx_elm_hwmod_class = { 700 - .name = "elm", 701 - .sysc = &omap44xx_elm_sysc, 702 - }; 703 - 704 - /* elm */ 705 - static struct omap_hwmod omap44xx_elm_hwmod = { 706 - .name = "elm", 707 - .class = &omap44xx_elm_hwmod_class, 708 - .clkdm_name = "l4_per_clkdm", 709 - .prcm = { 710 - .omap4 = { 711 - .clkctrl_offs = OMAP4_CM_L4PER_ELM_CLKCTRL_OFFSET, 712 - .context_offs = OMAP4_RM_L4PER_ELM_CONTEXT_OFFSET, 713 - }, 714 - }, 715 - }; 716 781 717 782 /* 718 783 * 'emif' class ··· 702 885 }; 703 886 704 887 /* 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 - }; 800 - 801 - /* 802 - * 'fdif' class 803 - * face detection hw accelerator module 804 - */ 805 - 806 - static struct omap_hwmod_class_sysconfig omap44xx_fdif_sysc = { 807 - .rev_offs = 0x0000, 808 - .sysc_offs = 0x0010, 809 - /* 810 - * FDIF needs 100 OCP clk cycles delay after a softreset before 811 - * accessing sysconfig again. 812 - * The lowest frequency at the moment for L3 bus is 100 MHz, so 813 - * 1usec delay is needed. Add an x2 margin to be safe (2 usecs). 814 - * 815 - * TODO: Indicate errata when available. 816 - */ 817 - .srst_udelay = 2, 818 - .sysc_flags = (SYSC_HAS_MIDLEMODE | SYSC_HAS_RESET_STATUS | 819 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 820 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 821 - MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 822 - .sysc_fields = &omap_hwmod_sysc_type2, 823 - }; 824 - 825 - static struct omap_hwmod_class omap44xx_fdif_hwmod_class = { 826 - .name = "fdif", 827 - .sysc = &omap44xx_fdif_sysc, 828 - }; 829 - 830 - /* fdif */ 831 - static struct omap_hwmod omap44xx_fdif_hwmod = { 832 - .name = "fdif", 833 - .class = &omap44xx_fdif_hwmod_class, 834 - .clkdm_name = "iss_clkdm", 835 - .main_clk = "fdif_fck", 836 - .prcm = { 837 - .omap4 = { 838 - .clkctrl_offs = OMAP4_CM_CAM_FDIF_CLKCTRL_OFFSET, 839 - .context_offs = OMAP4_RM_CAM_FDIF_CONTEXT_OFFSET, 840 - .modulemode = MODULEMODE_SWCTRL, 841 - }, 842 - }, 843 - }; 844 - 845 - /* 846 888 * 'gpmc' class 847 889 * general purpose memory controller 848 890 */ ··· 737 1061 }, 738 1062 }; 739 1063 740 - 741 - /* 742 - * 'hsi' class 743 - * mipi high-speed synchronous serial interface (multichannel and full-duplex 744 - * serial if) 745 - */ 746 - 747 - static struct omap_hwmod_class_sysconfig omap44xx_hsi_sysc = { 748 - .rev_offs = 0x0000, 749 - .sysc_offs = 0x0010, 750 - .syss_offs = 0x0014, 751 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_EMUFREE | 752 - SYSC_HAS_MIDLEMODE | SYSC_HAS_SIDLEMODE | 753 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 754 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 755 - SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | 756 - MSTANDBY_SMART | MSTANDBY_SMART_WKUP), 757 - .sysc_fields = &omap_hwmod_sysc_type1, 758 - }; 759 - 760 - static struct omap_hwmod_class omap44xx_hsi_hwmod_class = { 761 - .name = "hsi", 762 - .sysc = &omap44xx_hsi_sysc, 763 - }; 764 - 765 - /* hsi */ 766 - static struct omap_hwmod omap44xx_hsi_hwmod = { 767 - .name = "hsi", 768 - .class = &omap44xx_hsi_hwmod_class, 769 - .clkdm_name = "l3_init_clkdm", 770 - .main_clk = "hsi_fck", 771 - .prcm = { 772 - .omap4 = { 773 - .clkctrl_offs = OMAP4_CM_L3INIT_HSI_CLKCTRL_OFFSET, 774 - .context_offs = OMAP4_RM_L3INIT_HSI_CONTEXT_OFFSET, 775 - .modulemode = MODULEMODE_HWCTRL, 776 - }, 777 - }, 778 - }; 779 1064 780 1065 /* 781 1066 * 'ipu' class ··· 855 1218 }; 856 1219 857 1220 /* 858 - * 'kbd' class 859 - * keyboard controller 860 - */ 861 - 862 - static struct omap_hwmod_class_sysconfig omap44xx_kbd_sysc = { 863 - .rev_offs = 0x0000, 864 - .sysc_offs = 0x0010, 865 - .syss_offs = 0x0014, 866 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 867 - SYSC_HAS_EMUFREE | SYSC_HAS_ENAWAKEUP | 868 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 869 - SYSS_HAS_RESET_STATUS), 870 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 871 - .sysc_fields = &omap_hwmod_sysc_type1, 872 - }; 873 - 874 - static struct omap_hwmod_class omap44xx_kbd_hwmod_class = { 875 - .name = "kbd", 876 - .sysc = &omap44xx_kbd_sysc, 877 - }; 878 - 879 - /* kbd */ 880 - static struct omap_hwmod omap44xx_kbd_hwmod = { 881 - .name = "kbd", 882 - .class = &omap44xx_kbd_hwmod_class, 883 - .clkdm_name = "l4_wkup_clkdm", 884 - .main_clk = "sys_32k_ck", 885 - .prcm = { 886 - .omap4 = { 887 - .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET, 888 - .context_offs = OMAP4_RM_WKUP_KEYBOARD_CONTEXT_OFFSET, 889 - .modulemode = MODULEMODE_SWCTRL, 890 - }, 891 - }, 892 - }; 893 - 894 - 895 - /* 896 - * 'mcpdm' class 897 - * multi channel pdm controller (proprietary interface with phoenix power 898 - * ic) 899 - */ 900 - 901 - static struct omap_hwmod_class_sysconfig omap44xx_mcpdm_sysc = { 902 - .rev_offs = 0x0000, 903 - .sysc_offs = 0x0010, 904 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | 905 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 906 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 907 - SIDLE_SMART_WKUP), 908 - .sysc_fields = &omap_hwmod_sysc_type2, 909 - }; 910 - 911 - static struct omap_hwmod_class omap44xx_mcpdm_hwmod_class = { 912 - .name = "mcpdm", 913 - .sysc = &omap44xx_mcpdm_sysc, 914 - }; 915 - 916 - /* mcpdm */ 917 - static struct omap_hwmod omap44xx_mcpdm_hwmod = { 918 - .name = "mcpdm", 919 - .class = &omap44xx_mcpdm_hwmod_class, 920 - .clkdm_name = "abe_clkdm", 921 - /* 922 - * It's suspected that the McPDM requires an off-chip main 923 - * functional clock, controlled via I2C. This IP block is 924 - * currently reset very early during boot, before I2C is 925 - * available, so it doesn't seem that we have any choice in 926 - * the kernel other than to avoid resetting it. 927 - * 928 - * Also, McPDM needs to be configured to NO_IDLE mode when it 929 - * is in used otherwise vital clocks will be gated which 930 - * results 'slow motion' audio playback. 931 - */ 932 - .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, 933 - .main_clk = "pad_clks_ck", 934 - .prcm = { 935 - .omap4 = { 936 - .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET, 937 - .context_offs = OMAP4_RM_ABE_PDM_CONTEXT_OFFSET, 938 - .modulemode = MODULEMODE_SWCTRL, 939 - }, 940 - }, 941 - }; 942 - 943 - /* 944 - * 'mmu' class 945 - * The memory management unit performs virtual to physical address translation 946 - * for its requestors. 947 - */ 948 - 949 - static struct omap_hwmod_class_sysconfig mmu_sysc = { 950 - .rev_offs = 0x000, 951 - .sysc_offs = 0x010, 952 - .syss_offs = 0x014, 953 - .sysc_flags = (SYSC_HAS_CLOCKACTIVITY | SYSC_HAS_SIDLEMODE | 954 - SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE), 955 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 956 - .sysc_fields = &omap_hwmod_sysc_type1, 957 - }; 958 - 959 - static struct omap_hwmod_class omap44xx_mmu_hwmod_class = { 960 - .name = "mmu", 961 - .sysc = &mmu_sysc, 962 - }; 963 - 964 - /* mmu ipu */ 965 - 966 - static struct omap_hwmod omap44xx_mmu_ipu_hwmod; 967 - static struct omap_hwmod_rst_info omap44xx_mmu_ipu_resets[] = { 968 - { .name = "mmu_cache", .rst_shift = 2 }, 969 - }; 970 - 971 - /* l3_main_2 -> mmu_ipu */ 972 - static struct omap_hwmod_ocp_if omap44xx_l3_main_2__mmu_ipu = { 973 - .master = &omap44xx_l3_main_2_hwmod, 974 - .slave = &omap44xx_mmu_ipu_hwmod, 975 - .clk = "l3_div_ck", 976 - .user = OCP_USER_MPU | OCP_USER_SDMA, 977 - }; 978 - 979 - static struct omap_hwmod omap44xx_mmu_ipu_hwmod = { 980 - .name = "mmu_ipu", 981 - .class = &omap44xx_mmu_hwmod_class, 982 - .clkdm_name = "ducati_clkdm", 983 - .rst_lines = omap44xx_mmu_ipu_resets, 984 - .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_ipu_resets), 985 - .main_clk = "ducati_clk_mux_ck", 986 - .prcm = { 987 - .omap4 = { 988 - .clkctrl_offs = OMAP4_CM_DUCATI_DUCATI_CLKCTRL_OFFSET, 989 - .rstctrl_offs = OMAP4_RM_DUCATI_RSTCTRL_OFFSET, 990 - .context_offs = OMAP4_RM_DUCATI_DUCATI_CONTEXT_OFFSET, 991 - .modulemode = MODULEMODE_HWCTRL, 992 - }, 993 - }, 994 - }; 995 - 996 - /* mmu dsp */ 997 - 998 - static struct omap_hwmod omap44xx_mmu_dsp_hwmod; 999 - static struct omap_hwmod_rst_info omap44xx_mmu_dsp_resets[] = { 1000 - { .name = "mmu_cache", .rst_shift = 1 }, 1001 - }; 1002 - 1003 - /* l4_cfg -> dsp */ 1004 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__mmu_dsp = { 1005 - .master = &omap44xx_l4_cfg_hwmod, 1006 - .slave = &omap44xx_mmu_dsp_hwmod, 1007 - .clk = "l4_div_ck", 1008 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1009 - }; 1010 - 1011 - static struct omap_hwmod omap44xx_mmu_dsp_hwmod = { 1012 - .name = "mmu_dsp", 1013 - .class = &omap44xx_mmu_hwmod_class, 1014 - .clkdm_name = "tesla_clkdm", 1015 - .rst_lines = omap44xx_mmu_dsp_resets, 1016 - .rst_lines_cnt = ARRAY_SIZE(omap44xx_mmu_dsp_resets), 1017 - .main_clk = "dpll_iva_m4x2_ck", 1018 - .prcm = { 1019 - .omap4 = { 1020 - .clkctrl_offs = OMAP4_CM_TESLA_TESLA_CLKCTRL_OFFSET, 1021 - .rstctrl_offs = OMAP4_RM_TESLA_RSTCTRL_OFFSET, 1022 - .context_offs = OMAP4_RM_TESLA_TESLA_CONTEXT_OFFSET, 1023 - .modulemode = MODULEMODE_HWCTRL, 1024 - }, 1025 - }, 1026 - }; 1027 - 1028 - /* 1029 1221 * 'mpu' class 1030 1222 * mpu sub-system 1031 1223 */ ··· 900 1434 }, 901 1435 }; 902 1436 903 - /* 904 - * 'ocp2scp' class 905 - * bridge to transform ocp interface protocol to scp (serial control port) 906 - * protocol 907 - */ 908 - 909 - static struct omap_hwmod_class_sysconfig omap44xx_ocp2scp_sysc = { 910 - .rev_offs = 0x0000, 911 - .sysc_offs = 0x0010, 912 - .syss_offs = 0x0014, 913 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | 914 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 915 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 916 - .sysc_fields = &omap_hwmod_sysc_type1, 917 - }; 918 - 919 - static struct omap_hwmod_class omap44xx_ocp2scp_hwmod_class = { 920 - .name = "ocp2scp", 921 - .sysc = &omap44xx_ocp2scp_sysc, 922 - }; 923 - 924 - /* ocp2scp_usb_phy */ 925 - static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { 926 - .name = "ocp2scp_usb_phy", 927 - .class = &omap44xx_ocp2scp_hwmod_class, 928 - .clkdm_name = "l3_init_clkdm", 929 - /* 930 - * ocp2scp_usb_phy_phy_48m is provided by the OMAP4 PRCM IP 931 - * block as an "optional clock," and normally should never be 932 - * specified as the main_clk for an OMAP IP block. However it 933 - * turns out that this clock is actually the main clock for 934 - * the ocp2scp_usb_phy IP block: 935 - * http://lists.infradead.org/pipermail/linux-arm-kernel/2012-September/119943.html 936 - * So listing ocp2scp_usb_phy_phy_48m as a main_clk here seems 937 - * to be the best workaround. 938 - */ 939 - .main_clk = "ocp2scp_usb_phy_phy_48m", 940 - .prcm = { 941 - .omap4 = { 942 - .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, 943 - .context_offs = OMAP4_RM_L3INIT_USBPHYOCP2SCP_CONTEXT_OFFSET, 944 - .modulemode = MODULEMODE_HWCTRL, 945 - }, 946 - }, 947 - }; 948 1437 949 1438 /* 950 1439 * 'prcm' class ··· 1006 1585 }; 1007 1586 1008 1587 /* 1009 - * 'slimbus' class 1010 - * bidirectional, multi-drop, multi-channel two-line serial interface between 1011 - * the device and external components 1012 - */ 1013 - 1014 - static struct omap_hwmod_class_sysconfig omap44xx_slimbus_sysc = { 1015 - .rev_offs = 0x0000, 1016 - .sysc_offs = 0x0010, 1017 - .sysc_flags = (SYSC_HAS_RESET_STATUS | SYSC_HAS_SIDLEMODE | 1018 - SYSC_HAS_SOFTRESET), 1019 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 1020 - SIDLE_SMART_WKUP), 1021 - .sysc_fields = &omap_hwmod_sysc_type2, 1022 - }; 1023 - 1024 - static struct omap_hwmod_class omap44xx_slimbus_hwmod_class = { 1025 - .name = "slimbus", 1026 - .sysc = &omap44xx_slimbus_sysc, 1027 - }; 1028 - 1029 - /* slimbus1 */ 1030 - static struct omap_hwmod_opt_clk slimbus1_opt_clks[] = { 1031 - { .role = "fclk_1", .clk = "slimbus1_fclk_1" }, 1032 - { .role = "fclk_0", .clk = "slimbus1_fclk_0" }, 1033 - { .role = "fclk_2", .clk = "slimbus1_fclk_2" }, 1034 - { .role = "slimbus_clk", .clk = "slimbus1_slimbus_clk" }, 1035 - }; 1036 - 1037 - static struct omap_hwmod omap44xx_slimbus1_hwmod = { 1038 - .name = "slimbus1", 1039 - .class = &omap44xx_slimbus_hwmod_class, 1040 - .clkdm_name = "abe_clkdm", 1041 - .prcm = { 1042 - .omap4 = { 1043 - .clkctrl_offs = OMAP4_CM1_ABE_SLIMBUS_CLKCTRL_OFFSET, 1044 - .context_offs = OMAP4_RM_ABE_SLIMBUS_CONTEXT_OFFSET, 1045 - .modulemode = MODULEMODE_SWCTRL, 1046 - }, 1047 - }, 1048 - .opt_clks = slimbus1_opt_clks, 1049 - .opt_clks_cnt = ARRAY_SIZE(slimbus1_opt_clks), 1050 - }; 1051 - 1052 - /* slimbus2 */ 1053 - static struct omap_hwmod_opt_clk slimbus2_opt_clks[] = { 1054 - { .role = "fclk_1", .clk = "slimbus2_fclk_1" }, 1055 - { .role = "fclk_0", .clk = "slimbus2_fclk_0" }, 1056 - { .role = "slimbus_clk", .clk = "slimbus2_slimbus_clk" }, 1057 - }; 1058 - 1059 - static struct omap_hwmod omap44xx_slimbus2_hwmod = { 1060 - .name = "slimbus2", 1061 - .class = &omap44xx_slimbus_hwmod_class, 1062 - .clkdm_name = "l4_per_clkdm", 1063 - .prcm = { 1064 - .omap4 = { 1065 - .clkctrl_offs = OMAP4_CM_L4PER_SLIMBUS2_CLKCTRL_OFFSET, 1066 - .context_offs = OMAP4_RM_L4PER_SLIMBUS2_CONTEXT_OFFSET, 1067 - .modulemode = MODULEMODE_SWCTRL, 1068 - }, 1069 - }, 1070 - .opt_clks = slimbus2_opt_clks, 1071 - .opt_clks_cnt = ARRAY_SIZE(slimbus2_opt_clks), 1072 - }; 1073 - 1074 - /* 1075 - * 'smartreflex' class 1076 - * smartreflex module (monitor silicon performance and outputs a measure of 1077 - * performance error) 1078 - */ 1079 - 1080 - /* The IP is not compliant to type1 / type2 scheme */ 1081 - static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = { 1082 - .rev_offs = -ENODEV, 1083 - .sysc_offs = 0x0038, 1084 - .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE), 1085 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 1086 - SIDLE_SMART_WKUP), 1087 - .sysc_fields = &omap36xx_sr_sysc_fields, 1088 - }; 1089 - 1090 - static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = { 1091 - .name = "smartreflex", 1092 - .sysc = &omap44xx_smartreflex_sysc, 1093 - }; 1094 - 1095 - /* smartreflex_core */ 1096 - static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = { 1097 - .sensor_voltdm_name = "core", 1098 - }; 1099 - 1100 - static struct omap_hwmod omap44xx_smartreflex_core_hwmod = { 1101 - .name = "smartreflex_core", 1102 - .class = &omap44xx_smartreflex_hwmod_class, 1103 - .clkdm_name = "l4_ao_clkdm", 1104 - 1105 - .main_clk = "smartreflex_core_fck", 1106 - .prcm = { 1107 - .omap4 = { 1108 - .clkctrl_offs = OMAP4_CM_ALWON_SR_CORE_CLKCTRL_OFFSET, 1109 - .context_offs = OMAP4_RM_ALWON_SR_CORE_CONTEXT_OFFSET, 1110 - .modulemode = MODULEMODE_SWCTRL, 1111 - }, 1112 - }, 1113 - .dev_attr = &smartreflex_core_dev_attr, 1114 - }; 1115 - 1116 - /* smartreflex_iva */ 1117 - static struct omap_smartreflex_dev_attr smartreflex_iva_dev_attr = { 1118 - .sensor_voltdm_name = "iva", 1119 - }; 1120 - 1121 - static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = { 1122 - .name = "smartreflex_iva", 1123 - .class = &omap44xx_smartreflex_hwmod_class, 1124 - .clkdm_name = "l4_ao_clkdm", 1125 - .main_clk = "smartreflex_iva_fck", 1126 - .prcm = { 1127 - .omap4 = { 1128 - .clkctrl_offs = OMAP4_CM_ALWON_SR_IVA_CLKCTRL_OFFSET, 1129 - .context_offs = OMAP4_RM_ALWON_SR_IVA_CONTEXT_OFFSET, 1130 - .modulemode = MODULEMODE_SWCTRL, 1131 - }, 1132 - }, 1133 - .dev_attr = &smartreflex_iva_dev_attr, 1134 - }; 1135 - 1136 - /* smartreflex_mpu */ 1137 - static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = { 1138 - .sensor_voltdm_name = "mpu", 1139 - }; 1140 - 1141 - static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = { 1142 - .name = "smartreflex_mpu", 1143 - .class = &omap44xx_smartreflex_hwmod_class, 1144 - .clkdm_name = "l4_ao_clkdm", 1145 - .main_clk = "smartreflex_mpu_fck", 1146 - .prcm = { 1147 - .omap4 = { 1148 - .clkctrl_offs = OMAP4_CM_ALWON_SR_MPU_CLKCTRL_OFFSET, 1149 - .context_offs = OMAP4_RM_ALWON_SR_MPU_CONTEXT_OFFSET, 1150 - .modulemode = MODULEMODE_SWCTRL, 1151 - }, 1152 - }, 1153 - .dev_attr = &smartreflex_mpu_dev_attr, 1154 - }; 1155 - 1156 - /* 1157 - * 'spinlock' class 1158 - * spinlock provides hardware assistance for synchronizing the processes 1159 - * running on multiple processors 1160 - */ 1161 - 1162 - static struct omap_hwmod_class_sysconfig omap44xx_spinlock_sysc = { 1163 - .rev_offs = 0x0000, 1164 - .sysc_offs = 0x0010, 1165 - .syss_offs = 0x0014, 1166 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 1167 - SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 1168 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 1169 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 1170 - .sysc_fields = &omap_hwmod_sysc_type1, 1171 - }; 1172 - 1173 - static struct omap_hwmod_class omap44xx_spinlock_hwmod_class = { 1174 - .name = "spinlock", 1175 - .sysc = &omap44xx_spinlock_sysc, 1176 - }; 1177 - 1178 - /* spinlock */ 1179 - static struct omap_hwmod omap44xx_spinlock_hwmod = { 1180 - .name = "spinlock", 1181 - .class = &omap44xx_spinlock_hwmod_class, 1182 - .clkdm_name = "l4_cfg_clkdm", 1183 - .prcm = { 1184 - .omap4 = { 1185 - .clkctrl_offs = OMAP4_CM_L4CFG_HW_SEM_CLKCTRL_OFFSET, 1186 - .context_offs = OMAP4_RM_L4CFG_HW_SEM_CONTEXT_OFFSET, 1187 - }, 1188 - }, 1189 - }; 1190 - 1191 - /* 1192 1588 * 'timer' class 1193 1589 * general purpose timer module with accurate 1ms tick 1194 1590 * This class contains several variants: ['timer_1ms', 'timer'] ··· 1028 1790 .sysc = &omap44xx_timer_1ms_sysc, 1029 1791 }; 1030 1792 1031 - static struct omap_hwmod_class_sysconfig omap44xx_timer_sysc = { 1032 - .rev_offs = 0x0000, 1033 - .sysc_offs = 0x0010, 1034 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | 1035 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 1036 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 1037 - SIDLE_SMART_WKUP), 1038 - .sysc_fields = &omap_hwmod_sysc_type2, 1039 - }; 1040 - 1041 - static struct omap_hwmod_class omap44xx_timer_hwmod_class = { 1042 - .name = "timer", 1043 - .sysc = &omap44xx_timer_sysc, 1044 - }; 1045 - 1046 1793 /* timer1 */ 1047 1794 static struct omap_hwmod omap44xx_timer1_hwmod = { 1048 1795 .name = "timer1", ··· 1039 1816 .omap4 = { 1040 1817 .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET, 1041 1818 .context_offs = OMAP4_RM_WKUP_TIMER1_CONTEXT_OFFSET, 1042 - .modulemode = MODULEMODE_SWCTRL, 1043 - }, 1044 - }, 1045 - }; 1046 - 1047 - /* timer2 */ 1048 - static struct omap_hwmod omap44xx_timer2_hwmod = { 1049 - .name = "timer2", 1050 - .class = &omap44xx_timer_1ms_hwmod_class, 1051 - .clkdm_name = "l4_per_clkdm", 1052 - .flags = HWMOD_SET_DEFAULT_CLOCKACT, 1053 - .main_clk = "cm2_dm2_mux", 1054 - .prcm = { 1055 - .omap4 = { 1056 - .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET, 1057 - .context_offs = OMAP4_RM_L4PER_DMTIMER2_CONTEXT_OFFSET, 1058 - .modulemode = MODULEMODE_SWCTRL, 1059 - }, 1060 - }, 1061 - }; 1062 - 1063 - /* timer3 */ 1064 - static struct omap_hwmod omap44xx_timer3_hwmod = { 1065 - .name = "timer3", 1066 - .class = &omap44xx_timer_hwmod_class, 1067 - .clkdm_name = "l4_per_clkdm", 1068 - .main_clk = "cm2_dm3_mux", 1069 - .prcm = { 1070 - .omap4 = { 1071 - .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET, 1072 - .context_offs = OMAP4_RM_L4PER_DMTIMER3_CONTEXT_OFFSET, 1073 - .modulemode = MODULEMODE_SWCTRL, 1074 - }, 1075 - }, 1076 - }; 1077 - 1078 - /* timer4 */ 1079 - static struct omap_hwmod omap44xx_timer4_hwmod = { 1080 - .name = "timer4", 1081 - .class = &omap44xx_timer_hwmod_class, 1082 - .clkdm_name = "l4_per_clkdm", 1083 - .main_clk = "cm2_dm4_mux", 1084 - .prcm = { 1085 - .omap4 = { 1086 - .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET, 1087 - .context_offs = OMAP4_RM_L4PER_DMTIMER4_CONTEXT_OFFSET, 1088 - .modulemode = MODULEMODE_SWCTRL, 1089 - }, 1090 - }, 1091 - }; 1092 - 1093 - /* timer5 */ 1094 - static struct omap_hwmod omap44xx_timer5_hwmod = { 1095 - .name = "timer5", 1096 - .class = &omap44xx_timer_hwmod_class, 1097 - .clkdm_name = "abe_clkdm", 1098 - .main_clk = "timer5_sync_mux", 1099 - .prcm = { 1100 - .omap4 = { 1101 - .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET, 1102 - .context_offs = OMAP4_RM_ABE_TIMER5_CONTEXT_OFFSET, 1103 - .modulemode = MODULEMODE_SWCTRL, 1104 - }, 1105 - }, 1106 - }; 1107 - 1108 - /* timer6 */ 1109 - static struct omap_hwmod omap44xx_timer6_hwmod = { 1110 - .name = "timer6", 1111 - .class = &omap44xx_timer_hwmod_class, 1112 - .clkdm_name = "abe_clkdm", 1113 - .main_clk = "timer6_sync_mux", 1114 - .prcm = { 1115 - .omap4 = { 1116 - .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET, 1117 - .context_offs = OMAP4_RM_ABE_TIMER6_CONTEXT_OFFSET, 1118 - .modulemode = MODULEMODE_SWCTRL, 1119 - }, 1120 - }, 1121 - }; 1122 - 1123 - /* timer7 */ 1124 - static struct omap_hwmod omap44xx_timer7_hwmod = { 1125 - .name = "timer7", 1126 - .class = &omap44xx_timer_hwmod_class, 1127 - .clkdm_name = "abe_clkdm", 1128 - .main_clk = "timer7_sync_mux", 1129 - .prcm = { 1130 - .omap4 = { 1131 - .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET, 1132 - .context_offs = OMAP4_RM_ABE_TIMER7_CONTEXT_OFFSET, 1133 - .modulemode = MODULEMODE_SWCTRL, 1134 - }, 1135 - }, 1136 - }; 1137 - 1138 - /* timer8 */ 1139 - static struct omap_hwmod omap44xx_timer8_hwmod = { 1140 - .name = "timer8", 1141 - .class = &omap44xx_timer_hwmod_class, 1142 - .clkdm_name = "abe_clkdm", 1143 - .main_clk = "timer8_sync_mux", 1144 - .prcm = { 1145 - .omap4 = { 1146 - .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET, 1147 - .context_offs = OMAP4_RM_ABE_TIMER8_CONTEXT_OFFSET, 1148 - .modulemode = MODULEMODE_SWCTRL, 1149 - }, 1150 - }, 1151 - }; 1152 - 1153 - /* timer9 */ 1154 - static struct omap_hwmod omap44xx_timer9_hwmod = { 1155 - .name = "timer9", 1156 - .class = &omap44xx_timer_hwmod_class, 1157 - .clkdm_name = "l4_per_clkdm", 1158 - .main_clk = "cm2_dm9_mux", 1159 - .prcm = { 1160 - .omap4 = { 1161 - .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET, 1162 - .context_offs = OMAP4_RM_L4PER_DMTIMER9_CONTEXT_OFFSET, 1163 - .modulemode = MODULEMODE_SWCTRL, 1164 - }, 1165 - }, 1166 - }; 1167 - 1168 - /* timer10 */ 1169 - static struct omap_hwmod omap44xx_timer10_hwmod = { 1170 - .name = "timer10", 1171 - .class = &omap44xx_timer_1ms_hwmod_class, 1172 - .clkdm_name = "l4_per_clkdm", 1173 - .flags = HWMOD_SET_DEFAULT_CLOCKACT, 1174 - .main_clk = "cm2_dm10_mux", 1175 - .prcm = { 1176 - .omap4 = { 1177 - .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET, 1178 - .context_offs = OMAP4_RM_L4PER_DMTIMER10_CONTEXT_OFFSET, 1179 - .modulemode = MODULEMODE_SWCTRL, 1180 - }, 1181 - }, 1182 - }; 1183 - 1184 - /* timer11 */ 1185 - static struct omap_hwmod omap44xx_timer11_hwmod = { 1186 - .name = "timer11", 1187 - .class = &omap44xx_timer_hwmod_class, 1188 - .clkdm_name = "l4_per_clkdm", 1189 - .main_clk = "cm2_dm11_mux", 1190 - .prcm = { 1191 - .omap4 = { 1192 - .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET, 1193 - .context_offs = OMAP4_RM_L4PER_DMTIMER11_CONTEXT_OFFSET, 1194 1819 .modulemode = MODULEMODE_SWCTRL, 1195 1820 }, 1196 1821 }, ··· 1284 2213 .user = OCP_USER_MPU | OCP_USER_SDMA, 1285 2214 }; 1286 2215 1287 - /* dma_system -> l3_main_2 */ 1288 - static struct omap_hwmod_ocp_if omap44xx_dma_system__l3_main_2 = { 1289 - .master = &omap44xx_dma_system_hwmod, 1290 - .slave = &omap44xx_l3_main_2_hwmod, 1291 - .clk = "l3_div_ck", 1292 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1293 - }; 1294 - 1295 - /* fdif -> l3_main_2 */ 1296 - static struct omap_hwmod_ocp_if omap44xx_fdif__l3_main_2 = { 1297 - .master = &omap44xx_fdif_hwmod, 1298 - .slave = &omap44xx_l3_main_2_hwmod, 1299 - .clk = "l3_div_ck", 1300 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1301 - }; 1302 - 1303 - /* hsi -> l3_main_2 */ 1304 - static struct omap_hwmod_ocp_if omap44xx_hsi__l3_main_2 = { 1305 - .master = &omap44xx_hsi_hwmod, 1306 - .slave = &omap44xx_l3_main_2_hwmod, 1307 - .clk = "l3_div_ck", 1308 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1309 - }; 1310 - 1311 2216 /* ipu -> l3_main_2 */ 1312 2217 static struct omap_hwmod_ocp_if omap44xx_ipu__l3_main_2 = { 1313 2218 .master = &omap44xx_ipu_hwmod, ··· 1364 2317 .user = OCP_USER_MPU | OCP_USER_SDMA, 1365 2318 }; 1366 2319 1367 - /* aess -> l4_abe */ 1368 - static struct omap_hwmod_ocp_if __maybe_unused omap44xx_aess__l4_abe = { 1369 - .master = &omap44xx_aess_hwmod, 1370 - .slave = &omap44xx_l4_abe_hwmod, 1371 - .clk = "ocp_abe_iclk", 1372 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1373 - }; 1374 - 1375 2320 /* dsp -> l4_abe */ 1376 2321 static struct omap_hwmod_ocp_if omap44xx_dsp__l4_abe = { 1377 2322 .master = &omap44xx_dsp_hwmod, ··· 1428 2389 .user = OCP_USER_MPU | OCP_USER_SDMA, 1429 2390 }; 1430 2391 1431 - /* l4_abe -> aess */ 1432 - static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess = { 1433 - .master = &omap44xx_l4_abe_hwmod, 1434 - .slave = &omap44xx_aess_hwmod, 1435 - .clk = "ocp_abe_iclk", 1436 - .user = OCP_USER_MPU, 1437 - }; 1438 - 1439 - /* l4_abe -> aess (dma) */ 1440 - static struct omap_hwmod_ocp_if __maybe_unused omap44xx_l4_abe__aess_dma = { 1441 - .master = &omap44xx_l4_abe_hwmod, 1442 - .slave = &omap44xx_aess_hwmod, 1443 - .clk = "ocp_abe_iclk", 1444 - .user = OCP_USER_SDMA, 1445 - }; 1446 - 1447 2392 /* l4_wkup -> counter_32k */ 1448 2393 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__counter_32k = { 1449 2394 .master = &omap44xx_l4_wkup_hwmod, ··· 1473 2450 .master = &omap44xx_l3_instr_hwmod, 1474 2451 .slave = &omap44xx_debugss_hwmod, 1475 2452 .clk = "l3_div_ck", 1476 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1477 - }; 1478 - 1479 - /* l4_cfg -> dma_system */ 1480 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__dma_system = { 1481 - .master = &omap44xx_l4_cfg_hwmod, 1482 - .slave = &omap44xx_dma_system_hwmod, 1483 - .clk = "l4_div_ck", 1484 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1485 - }; 1486 - 1487 - /* l4_abe -> dmic */ 1488 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = { 1489 - .master = &omap44xx_l4_abe_hwmod, 1490 - .slave = &omap44xx_dmic_hwmod, 1491 - .clk = "ocp_abe_iclk", 1492 2453 .user = OCP_USER_MPU | OCP_USER_SDMA, 1493 2454 }; 1494 2455 ··· 1612 2605 .user = OCP_USER_MPU, 1613 2606 }; 1614 2607 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 - /* l4_per -> elm */ 1624 - static struct omap_hwmod_ocp_if omap44xx_l4_per__elm = { 1625 - .master = &omap44xx_l4_per_hwmod, 1626 - .slave = &omap44xx_elm_hwmod, 1627 - .clk = "l4_div_ck", 1628 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1629 - }; 1630 - 1631 - /* l4_cfg -> fdif */ 1632 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__fdif = { 1633 - .master = &omap44xx_l4_cfg_hwmod, 1634 - .slave = &omap44xx_fdif_hwmod, 1635 - .clk = "l4_div_ck", 1636 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1637 - }; 1638 - 1639 2608 /* l3_main_2 -> gpmc */ 1640 2609 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__gpmc = { 1641 2610 .master = &omap44xx_l3_main_2_hwmod, 1642 2611 .slave = &omap44xx_gpmc_hwmod, 1643 2612 .clk = "l3_div_ck", 1644 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1645 - }; 1646 - 1647 - /* l4_cfg -> hsi */ 1648 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__hsi = { 1649 - .master = &omap44xx_l4_cfg_hwmod, 1650 - .slave = &omap44xx_hsi_hwmod, 1651 - .clk = "l4_div_ck", 1652 2613 .user = OCP_USER_MPU | OCP_USER_SDMA, 1653 2614 }; 1654 2615 ··· 1652 2677 .user = OCP_USER_MPU, 1653 2678 }; 1654 2679 1655 - /* l4_wkup -> kbd */ 1656 - static struct omap_hwmod_ocp_if omap44xx_l4_wkup__kbd = { 1657 - .master = &omap44xx_l4_wkup_hwmod, 1658 - .slave = &omap44xx_kbd_hwmod, 1659 - .clk = "l4_wkup_clk_mux_ck", 1660 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1661 - }; 1662 - 1663 - /* l4_abe -> mcpdm */ 1664 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__mcpdm = { 1665 - .master = &omap44xx_l4_abe_hwmod, 1666 - .slave = &omap44xx_mcpdm_hwmod, 1667 - .clk = "ocp_abe_iclk", 1668 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1669 - }; 1670 - 1671 2680 /* l3_main_2 -> ocmc_ram */ 1672 2681 static struct omap_hwmod_ocp_if omap44xx_l3_main_2__ocmc_ram = { 1673 2682 .master = &omap44xx_l3_main_2_hwmod, 1674 2683 .slave = &omap44xx_ocmc_ram_hwmod, 1675 2684 .clk = "l3_div_ck", 1676 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1677 - }; 1678 - 1679 - /* l4_cfg -> ocp2scp_usb_phy */ 1680 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__ocp2scp_usb_phy = { 1681 - .master = &omap44xx_l4_cfg_hwmod, 1682 - .slave = &omap44xx_ocp2scp_usb_phy_hwmod, 1683 - .clk = "l4_div_ck", 1684 2685 .user = OCP_USER_MPU | OCP_USER_SDMA, 1685 2686 }; 1686 2687 ··· 1708 2757 .user = OCP_USER_MPU | OCP_USER_SDMA, 1709 2758 }; 1710 2759 1711 - /* l4_abe -> slimbus1 */ 1712 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1 = { 1713 - .master = &omap44xx_l4_abe_hwmod, 1714 - .slave = &omap44xx_slimbus1_hwmod, 1715 - .clk = "ocp_abe_iclk", 1716 - .user = OCP_USER_MPU, 1717 - }; 1718 - 1719 - /* l4_abe -> slimbus1 (dma) */ 1720 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__slimbus1_dma = { 1721 - .master = &omap44xx_l4_abe_hwmod, 1722 - .slave = &omap44xx_slimbus1_hwmod, 1723 - .clk = "ocp_abe_iclk", 1724 - .user = OCP_USER_SDMA, 1725 - }; 1726 - 1727 - /* l4_per -> slimbus2 */ 1728 - static struct omap_hwmod_ocp_if omap44xx_l4_per__slimbus2 = { 1729 - .master = &omap44xx_l4_per_hwmod, 1730 - .slave = &omap44xx_slimbus2_hwmod, 1731 - .clk = "l4_div_ck", 1732 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1733 - }; 1734 - 1735 - /* l4_cfg -> smartreflex_core */ 1736 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = { 1737 - .master = &omap44xx_l4_cfg_hwmod, 1738 - .slave = &omap44xx_smartreflex_core_hwmod, 1739 - .clk = "l4_div_ck", 1740 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1741 - }; 1742 - 1743 - /* l4_cfg -> smartreflex_iva */ 1744 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = { 1745 - .master = &omap44xx_l4_cfg_hwmod, 1746 - .slave = &omap44xx_smartreflex_iva_hwmod, 1747 - .clk = "l4_div_ck", 1748 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1749 - }; 1750 - 1751 - /* l4_cfg -> smartreflex_mpu */ 1752 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = { 1753 - .master = &omap44xx_l4_cfg_hwmod, 1754 - .slave = &omap44xx_smartreflex_mpu_hwmod, 1755 - .clk = "l4_div_ck", 1756 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1757 - }; 1758 - 1759 - /* l4_cfg -> spinlock */ 1760 - static struct omap_hwmod_ocp_if omap44xx_l4_cfg__spinlock = { 1761 - .master = &omap44xx_l4_cfg_hwmod, 1762 - .slave = &omap44xx_spinlock_hwmod, 1763 - .clk = "l4_div_ck", 1764 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1765 - }; 1766 - 1767 2760 /* l4_wkup -> timer1 */ 1768 2761 static struct omap_hwmod_ocp_if omap44xx_l4_wkup__timer1 = { 1769 2762 .master = &omap44xx_l4_wkup_hwmod, 1770 2763 .slave = &omap44xx_timer1_hwmod, 1771 2764 .clk = "l4_wkup_clk_mux_ck", 1772 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1773 - }; 1774 - 1775 - /* l4_per -> timer2 */ 1776 - static struct omap_hwmod_ocp_if omap44xx_l4_per__timer2 = { 1777 - .master = &omap44xx_l4_per_hwmod, 1778 - .slave = &omap44xx_timer2_hwmod, 1779 - .clk = "l4_div_ck", 1780 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1781 - }; 1782 - 1783 - /* l4_per -> timer3 */ 1784 - static struct omap_hwmod_ocp_if omap44xx_l4_per__timer3 = { 1785 - .master = &omap44xx_l4_per_hwmod, 1786 - .slave = &omap44xx_timer3_hwmod, 1787 - .clk = "l4_div_ck", 1788 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1789 - }; 1790 - 1791 - /* l4_per -> timer4 */ 1792 - static struct omap_hwmod_ocp_if omap44xx_l4_per__timer4 = { 1793 - .master = &omap44xx_l4_per_hwmod, 1794 - .slave = &omap44xx_timer4_hwmod, 1795 - .clk = "l4_div_ck", 1796 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1797 - }; 1798 - 1799 - /* l4_abe -> timer5 */ 1800 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer5 = { 1801 - .master = &omap44xx_l4_abe_hwmod, 1802 - .slave = &omap44xx_timer5_hwmod, 1803 - .clk = "ocp_abe_iclk", 1804 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1805 - }; 1806 - 1807 - /* l4_abe -> timer6 */ 1808 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer6 = { 1809 - .master = &omap44xx_l4_abe_hwmod, 1810 - .slave = &omap44xx_timer6_hwmod, 1811 - .clk = "ocp_abe_iclk", 1812 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1813 - }; 1814 - 1815 - /* l4_abe -> timer7 */ 1816 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer7 = { 1817 - .master = &omap44xx_l4_abe_hwmod, 1818 - .slave = &omap44xx_timer7_hwmod, 1819 - .clk = "ocp_abe_iclk", 1820 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1821 - }; 1822 - 1823 - /* l4_abe -> timer8 */ 1824 - static struct omap_hwmod_ocp_if omap44xx_l4_abe__timer8 = { 1825 - .master = &omap44xx_l4_abe_hwmod, 1826 - .slave = &omap44xx_timer8_hwmod, 1827 - .clk = "ocp_abe_iclk", 1828 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1829 - }; 1830 - 1831 - /* l4_per -> timer9 */ 1832 - static struct omap_hwmod_ocp_if omap44xx_l4_per__timer9 = { 1833 - .master = &omap44xx_l4_per_hwmod, 1834 - .slave = &omap44xx_timer9_hwmod, 1835 - .clk = "l4_div_ck", 1836 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1837 - }; 1838 - 1839 - /* l4_per -> timer10 */ 1840 - static struct omap_hwmod_ocp_if omap44xx_l4_per__timer10 = { 1841 - .master = &omap44xx_l4_per_hwmod, 1842 - .slave = &omap44xx_timer10_hwmod, 1843 - .clk = "l4_div_ck", 1844 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1845 - }; 1846 - 1847 - /* l4_per -> timer11 */ 1848 - static struct omap_hwmod_ocp_if omap44xx_l4_per__timer11 = { 1849 - .master = &omap44xx_l4_per_hwmod, 1850 - .slave = &omap44xx_timer11_hwmod, 1851 - .clk = "l4_div_ck", 1852 2765 .user = OCP_USER_MPU | OCP_USER_SDMA, 1853 2766 }; 1854 2767 ··· 1768 2953 &omap44xx_l4_cfg__l3_main_1, 1769 2954 &omap44xx_mpu__l3_main_1, 1770 2955 &omap44xx_debugss__l3_main_2, 1771 - &omap44xx_dma_system__l3_main_2, 1772 - &omap44xx_fdif__l3_main_2, 1773 - &omap44xx_hsi__l3_main_2, 1774 2956 &omap44xx_ipu__l3_main_2, 1775 2957 &omap44xx_iss__l3_main_2, 1776 2958 &omap44xx_iva__l3_main_2, ··· 1778 2966 &omap44xx_l3_main_1__l3_main_3, 1779 2967 &omap44xx_l3_main_2__l3_main_3, 1780 2968 &omap44xx_l4_cfg__l3_main_3, 1781 - &omap44xx_aess__l4_abe, 1782 2969 &omap44xx_dsp__l4_abe, 1783 2970 &omap44xx_l3_main_1__l4_abe, 1784 2971 &omap44xx_mpu__l4_abe, ··· 1786 2975 &omap44xx_l4_cfg__l4_wkup, 1787 2976 &omap44xx_mpu__mpu_private, 1788 2977 &omap44xx_l4_cfg__ocp_wp_noc, 1789 - &omap44xx_l4_abe__aess, 1790 - &omap44xx_l4_abe__aess_dma, 1791 2978 &omap44xx_l4_wkup__counter_32k, 1792 2979 &omap44xx_l4_cfg__ctrl_module_core, 1793 2980 &omap44xx_l4_cfg__ctrl_module_pad_core, 1794 2981 &omap44xx_l4_wkup__ctrl_module_wkup, 1795 2982 &omap44xx_l4_wkup__ctrl_module_pad_wkup, 1796 2983 &omap44xx_l3_instr__debugss, 1797 - &omap44xx_l4_cfg__dma_system, 1798 - &omap44xx_l4_abe__dmic, 1799 2984 &omap44xx_dsp__iva, 1800 2985 /* &omap44xx_dsp__sl2if, */ 1801 2986 &omap44xx_l4_cfg__dsp, ··· 1809 3002 &omap44xx_l4_per__dss_rfbi, 1810 3003 &omap44xx_l3_main_2__dss_venc, 1811 3004 &omap44xx_l4_per__dss_venc, 1812 - &omap44xx_l4_per__elm, 1813 - &omap44xx_l4_cfg__fdif, 1814 3005 &omap44xx_l3_main_2__gpmc, 1815 - &omap44xx_l4_cfg__hsi, 1816 3006 &omap44xx_l3_main_2__ipu, 1817 3007 &omap44xx_l3_main_2__iss, 1818 3008 /* &omap44xx_iva__sl2if, */ 1819 3009 &omap44xx_l3_main_2__iva, 1820 - &omap44xx_l4_wkup__kbd, 1821 - &omap44xx_l4_abe__mcpdm, 1822 - &omap44xx_l3_main_2__mmu_ipu, 1823 - &omap44xx_l4_cfg__mmu_dsp, 1824 3010 &omap44xx_l3_main_2__ocmc_ram, 1825 - &omap44xx_l4_cfg__ocp2scp_usb_phy, 1826 3011 &omap44xx_mpu_private__prcm_mpu, 1827 3012 &omap44xx_l4_wkup__cm_core_aon, 1828 3013 &omap44xx_l4_cfg__cm_core, 1829 3014 &omap44xx_l4_wkup__prm, 1830 3015 &omap44xx_l4_wkup__scrm, 1831 3016 /* &omap44xx_l3_main_2__sl2if, */ 1832 - &omap44xx_l4_abe__slimbus1, 1833 - &omap44xx_l4_abe__slimbus1_dma, 1834 - &omap44xx_l4_per__slimbus2, 1835 - &omap44xx_l4_cfg__smartreflex_core, 1836 - &omap44xx_l4_cfg__smartreflex_iva, 1837 - &omap44xx_l4_cfg__smartreflex_mpu, 1838 - &omap44xx_l4_cfg__spinlock, 1839 3017 &omap44xx_l4_wkup__timer1, 1840 - &omap44xx_l4_per__timer2, 1841 - &omap44xx_l4_per__timer3, 1842 - &omap44xx_l4_per__timer4, 1843 - &omap44xx_l4_abe__timer5, 1844 - &omap44xx_l4_abe__timer6, 1845 - &omap44xx_l4_abe__timer7, 1846 - &omap44xx_l4_abe__timer8, 1847 - &omap44xx_l4_per__timer9, 1848 - &omap44xx_l4_per__timer10, 1849 - &omap44xx_l4_per__timer11, 1850 3018 /* &omap44xx_l4_cfg__usb_host_fs, */ 1851 3019 &omap44xx_l4_cfg__usb_host_hs, 1852 3020 &omap44xx_l4_cfg__usb_tll_hs, 1853 3021 &omap44xx_mpu__emif1, 1854 3022 &omap44xx_mpu__emif2, 1855 - &omap44xx_l3_main_2__aes1, 1856 - &omap44xx_l3_main_2__aes2, 1857 - &omap44xx_l3_main_2__des, 1858 - &omap44xx_l3_main_2__sha0, 1859 3023 NULL, 1860 3024 }; 1861 3025
-662
arch/arm/mach-omap2/omap_hwmod_54xx_data.c
··· 17 17 #include <linux/io.h> 18 18 #include <linux/power/smartreflex.h> 19 19 20 - #include <linux/omap-dma.h> 21 - 22 20 #include "omap_hwmod.h" 23 21 #include "omap_hwmod_common_data.h" 24 22 #include "cm1_54xx.h" ··· 25 27 26 28 /* Base offset for all OMAP5 interrupts external to MPUSS */ 27 29 #define OMAP54XX_IRQ_GIC_START 32 28 - 29 - /* Base offset for all OMAP5 dma requests */ 30 - #define OMAP54XX_DMA_REQ_START 1 31 - 32 30 33 31 /* 34 32 * IP blocks ··· 222 228 .omap4 = { 223 229 .clkctrl_offs = OMAP54XX_CM_WKUPAON_COUNTER_32K_CLKCTRL_OFFSET, 224 230 .context_offs = OMAP54XX_RM_WKUPAON_COUNTER_32K_CONTEXT_OFFSET, 225 - }, 226 - }, 227 - }; 228 - 229 - /* 230 - * 'dma' class 231 - * dma controller for data exchange between memory to memory (i.e. internal or 232 - * external memory) and gp peripherals to memory or memory to gp peripherals 233 - */ 234 - 235 - static struct omap_hwmod_class_sysconfig omap54xx_dma_sysc = { 236 - .rev_offs = 0x0000, 237 - .sysc_offs = 0x002c, 238 - .syss_offs = 0x0028, 239 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 240 - SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE | 241 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 242 - SYSS_HAS_RESET_STATUS), 243 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 244 - MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART), 245 - .sysc_fields = &omap_hwmod_sysc_type1, 246 - }; 247 - 248 - static struct omap_hwmod_class omap54xx_dma_hwmod_class = { 249 - .name = "dma", 250 - .sysc = &omap54xx_dma_sysc, 251 - }; 252 - 253 - /* dma dev_attr */ 254 - static struct omap_dma_dev_attr dma_dev_attr = { 255 - .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 256 - IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY, 257 - .lch_count = 32, 258 - }; 259 - 260 - /* dma_system */ 261 - static struct omap_hwmod omap54xx_dma_system_hwmod = { 262 - .name = "dma_system", 263 - .class = &omap54xx_dma_hwmod_class, 264 - .clkdm_name = "dma_clkdm", 265 - .main_clk = "l3_iclk_div", 266 - .prcm = { 267 - .omap4 = { 268 - .clkctrl_offs = OMAP54XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET, 269 - .context_offs = OMAP54XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET, 270 - }, 271 - }, 272 - .dev_attr = &dma_dev_attr, 273 - }; 274 - 275 - /* 276 - * 'dmic' class 277 - * digital microphone controller 278 - */ 279 - 280 - static struct omap_hwmod_class_sysconfig omap54xx_dmic_sysc = { 281 - .rev_offs = 0x0000, 282 - .sysc_offs = 0x0010, 283 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | 284 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 285 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 286 - SIDLE_SMART_WKUP), 287 - .sysc_fields = &omap_hwmod_sysc_type2, 288 - }; 289 - 290 - static struct omap_hwmod_class omap54xx_dmic_hwmod_class = { 291 - .name = "dmic", 292 - .sysc = &omap54xx_dmic_sysc, 293 - }; 294 - 295 - /* dmic */ 296 - static struct omap_hwmod omap54xx_dmic_hwmod = { 297 - .name = "dmic", 298 - .class = &omap54xx_dmic_hwmod_class, 299 - .clkdm_name = "abe_clkdm", 300 - .main_clk = "dmic_gfclk", 301 - .prcm = { 302 - .omap4 = { 303 - .clkctrl_offs = OMAP54XX_CM_ABE_DMIC_CLKCTRL_OFFSET, 304 - .context_offs = OMAP54XX_RM_ABE_DMIC_CONTEXT_OFFSET, 305 - .modulemode = MODULEMODE_SWCTRL, 306 231 }, 307 232 }, 308 233 }; ··· 506 593 }, 507 594 }; 508 595 509 - /* 510 - * 'kbd' class 511 - * keyboard controller 512 - */ 513 - 514 - static struct omap_hwmod_class_sysconfig omap54xx_kbd_sysc = { 515 - .rev_offs = 0x0000, 516 - .sysc_offs = 0x0010, 517 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_SIDLEMODE | 518 - SYSC_HAS_SOFTRESET), 519 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 520 - .sysc_fields = &omap_hwmod_sysc_type1, 521 - }; 522 - 523 - static struct omap_hwmod_class omap54xx_kbd_hwmod_class = { 524 - .name = "kbd", 525 - .sysc = &omap54xx_kbd_sysc, 526 - }; 527 - 528 - /* kbd */ 529 - static struct omap_hwmod omap54xx_kbd_hwmod = { 530 - .name = "kbd", 531 - .class = &omap54xx_kbd_hwmod_class, 532 - .clkdm_name = "wkupaon_clkdm", 533 - .main_clk = "sys_32k_ck", 534 - .prcm = { 535 - .omap4 = { 536 - .clkctrl_offs = OMAP54XX_CM_WKUPAON_KBD_CLKCTRL_OFFSET, 537 - .context_offs = OMAP54XX_RM_WKUPAON_KBD_CONTEXT_OFFSET, 538 - .modulemode = MODULEMODE_SWCTRL, 539 - }, 540 - }, 541 - }; 542 - 543 - /* 544 - * 'mcpdm' class 545 - * multi channel pdm controller (proprietary interface with phoenix power 546 - * ic) 547 - */ 548 - 549 - static struct omap_hwmod_class_sysconfig omap54xx_mcpdm_sysc = { 550 - .rev_offs = 0x0000, 551 - .sysc_offs = 0x0010, 552 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | 553 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 554 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 555 - SIDLE_SMART_WKUP), 556 - .sysc_fields = &omap_hwmod_sysc_type2, 557 - }; 558 - 559 - static struct omap_hwmod_class omap54xx_mcpdm_hwmod_class = { 560 - .name = "mcpdm", 561 - .sysc = &omap54xx_mcpdm_sysc, 562 - }; 563 - 564 - /* mcpdm */ 565 - static struct omap_hwmod omap54xx_mcpdm_hwmod = { 566 - .name = "mcpdm", 567 - .class = &omap54xx_mcpdm_hwmod_class, 568 - .clkdm_name = "abe_clkdm", 569 - /* 570 - * It's suspected that the McPDM requires an off-chip main 571 - * functional clock, controlled via I2C. This IP block is 572 - * currently reset very early during boot, before I2C is 573 - * available, so it doesn't seem that we have any choice in 574 - * the kernel other than to avoid resetting it. XXX This is 575 - * really a hardware issue workaround: every IP block should 576 - * be able to source its main functional clock from either 577 - * on-chip or off-chip sources. McPDM seems to be the only 578 - * current exception. 579 - */ 580 - 581 - .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, 582 - .main_clk = "pad_clks_ck", 583 - .prcm = { 584 - .omap4 = { 585 - .clkctrl_offs = OMAP54XX_CM_ABE_MCPDM_CLKCTRL_OFFSET, 586 - .context_offs = OMAP54XX_RM_ABE_MCPDM_CONTEXT_OFFSET, 587 - .modulemode = MODULEMODE_SWCTRL, 588 - }, 589 - }, 590 - }; 591 596 592 597 593 - /* 594 - * 'mmu' class 595 - * The memory management unit performs virtual to physical address translation 596 - * for its requestors. 597 - */ 598 - 599 - static struct omap_hwmod_class_sysconfig omap54xx_mmu_sysc = { 600 - .rev_offs = 0x0000, 601 - .sysc_offs = 0x0010, 602 - .syss_offs = 0x0014, 603 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 604 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 605 - SYSS_HAS_RESET_STATUS), 606 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 607 - .sysc_fields = &omap_hwmod_sysc_type1, 608 - }; 609 - 610 - static struct omap_hwmod_class omap54xx_mmu_hwmod_class = { 611 - .name = "mmu", 612 - .sysc = &omap54xx_mmu_sysc, 613 - }; 614 - 615 - static struct omap_hwmod_rst_info omap54xx_mmu_dsp_resets[] = { 616 - { .name = "mmu_cache", .rst_shift = 1 }, 617 - }; 618 - 619 - static struct omap_hwmod omap54xx_mmu_dsp_hwmod = { 620 - .name = "mmu_dsp", 621 - .class = &omap54xx_mmu_hwmod_class, 622 - .clkdm_name = "dsp_clkdm", 623 - .rst_lines = omap54xx_mmu_dsp_resets, 624 - .rst_lines_cnt = ARRAY_SIZE(omap54xx_mmu_dsp_resets), 625 - .main_clk = "dpll_iva_h11x2_ck", 626 - .prcm = { 627 - .omap4 = { 628 - .clkctrl_offs = OMAP54XX_CM_DSP_DSP_CLKCTRL_OFFSET, 629 - .rstctrl_offs = OMAP54XX_RM_DSP_RSTCTRL_OFFSET, 630 - .context_offs = OMAP54XX_RM_DSP_DSP_CONTEXT_OFFSET, 631 - .modulemode = MODULEMODE_HWCTRL, 632 - }, 633 - }, 634 - }; 635 - 636 - /* mmu ipu */ 637 - static struct omap_hwmod_rst_info omap54xx_mmu_ipu_resets[] = { 638 - { .name = "mmu_cache", .rst_shift = 2 }, 639 - }; 640 - 641 - static struct omap_hwmod omap54xx_mmu_ipu_hwmod = { 642 - .name = "mmu_ipu", 643 - .class = &omap54xx_mmu_hwmod_class, 644 - .clkdm_name = "ipu_clkdm", 645 - .rst_lines = omap54xx_mmu_ipu_resets, 646 - .rst_lines_cnt = ARRAY_SIZE(omap54xx_mmu_ipu_resets), 647 - .main_clk = "dpll_core_h22x2_ck", 648 - .prcm = { 649 - .omap4 = { 650 - .clkctrl_offs = OMAP54XX_CM_IPU_IPU_CLKCTRL_OFFSET, 651 - .rstctrl_offs = OMAP54XX_RM_IPU_RSTCTRL_OFFSET, 652 - .context_offs = OMAP54XX_RM_IPU_IPU_CONTEXT_OFFSET, 653 - .modulemode = MODULEMODE_HWCTRL, 654 - }, 655 - }, 656 - }; 657 598 658 599 /* 659 600 * 'mpu' class ··· 533 766 }, 534 767 }; 535 768 536 - /* 537 - * 'spinlock' class 538 - * spinlock provides hardware assistance for synchronizing the processes 539 - * running on multiple processors 540 - */ 541 - 542 - static struct omap_hwmod_class_sysconfig omap54xx_spinlock_sysc = { 543 - .rev_offs = 0x0000, 544 - .sysc_offs = 0x0010, 545 - .syss_offs = 0x0014, 546 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 547 - SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE | 548 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 549 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 550 - .sysc_fields = &omap_hwmod_sysc_type1, 551 - }; 552 - 553 - static struct omap_hwmod_class omap54xx_spinlock_hwmod_class = { 554 - .name = "spinlock", 555 - .sysc = &omap54xx_spinlock_sysc, 556 - }; 557 - 558 - /* spinlock */ 559 - static struct omap_hwmod omap54xx_spinlock_hwmod = { 560 - .name = "spinlock", 561 - .class = &omap54xx_spinlock_hwmod_class, 562 - .clkdm_name = "l4cfg_clkdm", 563 - .prcm = { 564 - .omap4 = { 565 - .clkctrl_offs = OMAP54XX_CM_L4CFG_SPINLOCK_CLKCTRL_OFFSET, 566 - .context_offs = OMAP54XX_RM_L4CFG_SPINLOCK_CONTEXT_OFFSET, 567 - }, 568 - }, 569 - }; 570 - 571 - /* 572 - * 'ocp2scp' class 573 - * bridge to transform ocp interface protocol to scp (serial control port) 574 - * protocol 575 - */ 576 - 577 - static struct omap_hwmod_class_sysconfig omap54xx_ocp2scp_sysc = { 578 - .rev_offs = 0x0000, 579 - .sysc_offs = 0x0010, 580 - .syss_offs = 0x0014, 581 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | 582 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 583 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 584 - .sysc_fields = &omap_hwmod_sysc_type1, 585 - }; 586 - 587 - static struct omap_hwmod_class omap54xx_ocp2scp_hwmod_class = { 588 - .name = "ocp2scp", 589 - .sysc = &omap54xx_ocp2scp_sysc, 590 - }; 591 - 592 - /* ocp2scp1 */ 593 - static struct omap_hwmod omap54xx_ocp2scp1_hwmod = { 594 - .name = "ocp2scp1", 595 - .class = &omap54xx_ocp2scp_hwmod_class, 596 - .clkdm_name = "l3init_clkdm", 597 - .main_clk = "l4_root_clk_div", 598 - .prcm = { 599 - .omap4 = { 600 - .clkctrl_offs = OMAP54XX_CM_L3INIT_OCP2SCP1_CLKCTRL_OFFSET, 601 - .context_offs = OMAP54XX_RM_L3INIT_OCP2SCP1_CONTEXT_OFFSET, 602 - .modulemode = MODULEMODE_HWCTRL, 603 - }, 604 - }, 605 - }; 606 769 607 770 /* 608 771 * 'timer' class ··· 555 858 .sysc = &omap54xx_timer_1ms_sysc, 556 859 }; 557 860 558 - static struct omap_hwmod_class_sysconfig omap54xx_timer_sysc = { 559 - .rev_offs = 0x0000, 560 - .sysc_offs = 0x0010, 561 - .sysc_flags = (SYSC_HAS_EMUFREE | SYSC_HAS_RESET_STATUS | 562 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET), 563 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 564 - SIDLE_SMART_WKUP), 565 - .sysc_fields = &omap_hwmod_sysc_type2, 566 - }; 567 - 568 - static struct omap_hwmod_class omap54xx_timer_hwmod_class = { 569 - .name = "timer", 570 - .sysc = &omap54xx_timer_sysc, 571 - }; 572 - 573 861 /* timer1 */ 574 862 static struct omap_hwmod omap54xx_timer1_hwmod = { 575 863 .name = "timer1", ··· 566 884 .omap4 = { 567 885 .clkctrl_offs = OMAP54XX_CM_WKUPAON_TIMER1_CLKCTRL_OFFSET, 568 886 .context_offs = OMAP54XX_RM_WKUPAON_TIMER1_CONTEXT_OFFSET, 569 - .modulemode = MODULEMODE_SWCTRL, 570 - }, 571 - }, 572 - }; 573 - 574 - /* timer2 */ 575 - static struct omap_hwmod omap54xx_timer2_hwmod = { 576 - .name = "timer2", 577 - .class = &omap54xx_timer_1ms_hwmod_class, 578 - .clkdm_name = "l4per_clkdm", 579 - .main_clk = "timer2_gfclk_mux", 580 - .flags = HWMOD_SET_DEFAULT_CLOCKACT, 581 - .prcm = { 582 - .omap4 = { 583 - .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER2_CLKCTRL_OFFSET, 584 - .context_offs = OMAP54XX_RM_L4PER_TIMER2_CONTEXT_OFFSET, 585 - .modulemode = MODULEMODE_SWCTRL, 586 - }, 587 - }, 588 - }; 589 - 590 - /* timer3 */ 591 - static struct omap_hwmod omap54xx_timer3_hwmod = { 592 - .name = "timer3", 593 - .class = &omap54xx_timer_hwmod_class, 594 - .clkdm_name = "l4per_clkdm", 595 - .main_clk = "timer3_gfclk_mux", 596 - .prcm = { 597 - .omap4 = { 598 - .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER3_CLKCTRL_OFFSET, 599 - .context_offs = OMAP54XX_RM_L4PER_TIMER3_CONTEXT_OFFSET, 600 - .modulemode = MODULEMODE_SWCTRL, 601 - }, 602 - }, 603 - }; 604 - 605 - /* timer4 */ 606 - static struct omap_hwmod omap54xx_timer4_hwmod = { 607 - .name = "timer4", 608 - .class = &omap54xx_timer_hwmod_class, 609 - .clkdm_name = "l4per_clkdm", 610 - .main_clk = "timer4_gfclk_mux", 611 - .prcm = { 612 - .omap4 = { 613 - .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER4_CLKCTRL_OFFSET, 614 - .context_offs = OMAP54XX_RM_L4PER_TIMER4_CONTEXT_OFFSET, 615 - .modulemode = MODULEMODE_SWCTRL, 616 - }, 617 - }, 618 - }; 619 - 620 - /* timer5 */ 621 - static struct omap_hwmod omap54xx_timer5_hwmod = { 622 - .name = "timer5", 623 - .class = &omap54xx_timer_hwmod_class, 624 - .clkdm_name = "abe_clkdm", 625 - .main_clk = "timer5_gfclk_mux", 626 - .prcm = { 627 - .omap4 = { 628 - .clkctrl_offs = OMAP54XX_CM_ABE_TIMER5_CLKCTRL_OFFSET, 629 - .context_offs = OMAP54XX_RM_ABE_TIMER5_CONTEXT_OFFSET, 630 - .modulemode = MODULEMODE_SWCTRL, 631 - }, 632 - }, 633 - }; 634 - 635 - /* timer6 */ 636 - static struct omap_hwmod omap54xx_timer6_hwmod = { 637 - .name = "timer6", 638 - .class = &omap54xx_timer_hwmod_class, 639 - .clkdm_name = "abe_clkdm", 640 - .main_clk = "timer6_gfclk_mux", 641 - .prcm = { 642 - .omap4 = { 643 - .clkctrl_offs = OMAP54XX_CM_ABE_TIMER6_CLKCTRL_OFFSET, 644 - .context_offs = OMAP54XX_RM_ABE_TIMER6_CONTEXT_OFFSET, 645 - .modulemode = MODULEMODE_SWCTRL, 646 - }, 647 - }, 648 - }; 649 - 650 - /* timer7 */ 651 - static struct omap_hwmod omap54xx_timer7_hwmod = { 652 - .name = "timer7", 653 - .class = &omap54xx_timer_hwmod_class, 654 - .clkdm_name = "abe_clkdm", 655 - .main_clk = "timer7_gfclk_mux", 656 - .prcm = { 657 - .omap4 = { 658 - .clkctrl_offs = OMAP54XX_CM_ABE_TIMER7_CLKCTRL_OFFSET, 659 - .context_offs = OMAP54XX_RM_ABE_TIMER7_CONTEXT_OFFSET, 660 - .modulemode = MODULEMODE_SWCTRL, 661 - }, 662 - }, 663 - }; 664 - 665 - /* timer8 */ 666 - static struct omap_hwmod omap54xx_timer8_hwmod = { 667 - .name = "timer8", 668 - .class = &omap54xx_timer_hwmod_class, 669 - .clkdm_name = "abe_clkdm", 670 - .main_clk = "timer8_gfclk_mux", 671 - .prcm = { 672 - .omap4 = { 673 - .clkctrl_offs = OMAP54XX_CM_ABE_TIMER8_CLKCTRL_OFFSET, 674 - .context_offs = OMAP54XX_RM_ABE_TIMER8_CONTEXT_OFFSET, 675 - .modulemode = MODULEMODE_SWCTRL, 676 - }, 677 - }, 678 - }; 679 - 680 - /* timer9 */ 681 - static struct omap_hwmod omap54xx_timer9_hwmod = { 682 - .name = "timer9", 683 - .class = &omap54xx_timer_hwmod_class, 684 - .clkdm_name = "l4per_clkdm", 685 - .main_clk = "timer9_gfclk_mux", 686 - .prcm = { 687 - .omap4 = { 688 - .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER9_CLKCTRL_OFFSET, 689 - .context_offs = OMAP54XX_RM_L4PER_TIMER9_CONTEXT_OFFSET, 690 - .modulemode = MODULEMODE_SWCTRL, 691 - }, 692 - }, 693 - }; 694 - 695 - /* timer10 */ 696 - static struct omap_hwmod omap54xx_timer10_hwmod = { 697 - .name = "timer10", 698 - .class = &omap54xx_timer_1ms_hwmod_class, 699 - .clkdm_name = "l4per_clkdm", 700 - .main_clk = "timer10_gfclk_mux", 701 - .flags = HWMOD_SET_DEFAULT_CLOCKACT, 702 - .prcm = { 703 - .omap4 = { 704 - .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER10_CLKCTRL_OFFSET, 705 - .context_offs = OMAP54XX_RM_L4PER_TIMER10_CONTEXT_OFFSET, 706 - .modulemode = MODULEMODE_SWCTRL, 707 - }, 708 - }, 709 - }; 710 - 711 - /* timer11 */ 712 - static struct omap_hwmod omap54xx_timer11_hwmod = { 713 - .name = "timer11", 714 - .class = &omap54xx_timer_hwmod_class, 715 - .clkdm_name = "l4per_clkdm", 716 - .main_clk = "timer11_gfclk_mux", 717 - .prcm = { 718 - .omap4 = { 719 - .clkctrl_offs = OMAP54XX_CM_L4PER_TIMER11_CLKCTRL_OFFSET, 720 - .context_offs = OMAP54XX_RM_L4PER_TIMER11_CONTEXT_OFFSET, 721 887 .modulemode = MODULEMODE_SWCTRL, 722 888 }, 723 889 }, ··· 723 1193 .opt_clks_cnt = ARRAY_SIZE(usb_otg_ss_opt_clks), 724 1194 }; 725 1195 726 - 727 - /* 728 - * 'ocp2scp' class 729 - * bridge to transform ocp interface protocol to scp (serial control port) 730 - * protocol 731 - */ 732 - /* ocp2scp3 */ 733 - static struct omap_hwmod omap54xx_ocp2scp3_hwmod; 734 - /* l4_cfg -> ocp2scp3 */ 735 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__ocp2scp3 = { 736 - .master = &omap54xx_l4_cfg_hwmod, 737 - .slave = &omap54xx_ocp2scp3_hwmod, 738 - .clk = "l4_root_clk_div", 739 - .user = OCP_USER_MPU | OCP_USER_SDMA, 740 - }; 741 - 742 - static struct omap_hwmod omap54xx_ocp2scp3_hwmod = { 743 - .name = "ocp2scp3", 744 - .class = &omap54xx_ocp2scp_hwmod_class, 745 - .clkdm_name = "l3init_clkdm", 746 - .prcm = { 747 - .omap4 = { 748 - .clkctrl_offs = OMAP54XX_CM_L3INIT_OCP2SCP3_CLKCTRL_OFFSET, 749 - .context_offs = OMAP54XX_RM_L3INIT_OCP2SCP3_CONTEXT_OFFSET, 750 - .modulemode = MODULEMODE_HWCTRL, 751 - }, 752 - }, 753 - }; 754 - 755 1196 /* 756 1197 * 'sata' class 757 1198 * sata: serial ata interface gen2 compliant ( 1 rx/ 1 tx) ··· 804 1303 .user = OCP_USER_MPU | OCP_USER_SDMA, 805 1304 }; 806 1305 807 - /* l4_cfg -> mmu_dsp */ 808 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mmu_dsp = { 809 - .master = &omap54xx_l4_cfg_hwmod, 810 - .slave = &omap54xx_mmu_dsp_hwmod, 811 - .clk = "l4_root_clk_div", 812 - .user = OCP_USER_MPU | OCP_USER_SDMA, 813 - }; 814 - 815 1306 /* mpu -> l3_main_1 */ 816 1307 static struct omap_hwmod_ocp_if omap54xx_mpu__l3_main_1 = { 817 1308 .master = &omap54xx_mpu_hwmod, ··· 824 1331 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__l3_main_2 = { 825 1332 .master = &omap54xx_l4_cfg_hwmod, 826 1333 .slave = &omap54xx_l3_main_2_hwmod, 827 - .clk = "l3_iclk_div", 828 - .user = OCP_USER_MPU | OCP_USER_SDMA, 829 - }; 830 - 831 - /* l3_main_2 -> mmu_ipu */ 832 - static struct omap_hwmod_ocp_if omap54xx_l3_main_2__mmu_ipu = { 833 - .master = &omap54xx_l3_main_2_hwmod, 834 - .slave = &omap54xx_mmu_ipu_hwmod, 835 1334 .clk = "l3_iclk_div", 836 1335 .user = OCP_USER_MPU | OCP_USER_SDMA, 837 1336 }; ··· 908 1423 .user = OCP_USER_MPU | OCP_USER_SDMA, 909 1424 }; 910 1425 911 - /* l4_cfg -> dma_system */ 912 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__dma_system = { 913 - .master = &omap54xx_l4_cfg_hwmod, 914 - .slave = &omap54xx_dma_system_hwmod, 915 - .clk = "l4_root_clk_div", 916 - .user = OCP_USER_MPU | OCP_USER_SDMA, 917 - }; 918 - 919 - /* l4_abe -> dmic */ 920 - static struct omap_hwmod_ocp_if omap54xx_l4_abe__dmic = { 921 - .master = &omap54xx_l4_abe_hwmod, 922 - .slave = &omap54xx_dmic_hwmod, 923 - .clk = "abe_iclk", 924 - .user = OCP_USER_MPU, 925 - }; 926 - 927 1426 /* l3_main_2 -> dss */ 928 1427 static struct omap_hwmod_ocp_if omap54xx_l3_main_2__dss = { 929 1428 .master = &omap54xx_l3_main_2_hwmod, ··· 972 1503 .user = OCP_USER_MPU | OCP_USER_SDMA, 973 1504 }; 974 1505 975 - /* l4_wkup -> kbd */ 976 - static struct omap_hwmod_ocp_if omap54xx_l4_wkup__kbd = { 977 - .master = &omap54xx_l4_wkup_hwmod, 978 - .slave = &omap54xx_kbd_hwmod, 979 - .clk = "wkupaon_iclk_mux", 980 - .user = OCP_USER_MPU | OCP_USER_SDMA, 981 - }; 982 - 983 - /* l4_abe -> mcpdm */ 984 - static struct omap_hwmod_ocp_if omap54xx_l4_abe__mcpdm = { 985 - .master = &omap54xx_l4_abe_hwmod, 986 - .slave = &omap54xx_mcpdm_hwmod, 987 - .clk = "abe_iclk", 988 - .user = OCP_USER_MPU, 989 - }; 990 - 991 1506 /* l4_cfg -> mpu */ 992 1507 static struct omap_hwmod_ocp_if omap54xx_l4_cfg__mpu = { 993 1508 .master = &omap54xx_l4_cfg_hwmod, 994 1509 .slave = &omap54xx_mpu_hwmod, 995 - .clk = "l4_root_clk_div", 996 - .user = OCP_USER_MPU | OCP_USER_SDMA, 997 - }; 998 - 999 - /* l4_cfg -> spinlock */ 1000 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__spinlock = { 1001 - .master = &omap54xx_l4_cfg_hwmod, 1002 - .slave = &omap54xx_spinlock_hwmod, 1003 - .clk = "l4_root_clk_div", 1004 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1005 - }; 1006 - 1007 - /* l4_cfg -> ocp2scp1 */ 1008 - static struct omap_hwmod_ocp_if omap54xx_l4_cfg__ocp2scp1 = { 1009 - .master = &omap54xx_l4_cfg_hwmod, 1010 - .slave = &omap54xx_ocp2scp1_hwmod, 1011 1510 .clk = "l4_root_clk_div", 1012 1511 .user = OCP_USER_MPU | OCP_USER_SDMA, 1013 1512 }; ··· 985 1548 .master = &omap54xx_l4_wkup_hwmod, 986 1549 .slave = &omap54xx_timer1_hwmod, 987 1550 .clk = "wkupaon_iclk_mux", 988 - .user = OCP_USER_MPU | OCP_USER_SDMA, 989 - }; 990 - 991 - /* l4_per -> timer2 */ 992 - static struct omap_hwmod_ocp_if omap54xx_l4_per__timer2 = { 993 - .master = &omap54xx_l4_per_hwmod, 994 - .slave = &omap54xx_timer2_hwmod, 995 - .clk = "l4_root_clk_div", 996 - .user = OCP_USER_MPU | OCP_USER_SDMA, 997 - }; 998 - 999 - /* l4_per -> timer3 */ 1000 - static struct omap_hwmod_ocp_if omap54xx_l4_per__timer3 = { 1001 - .master = &omap54xx_l4_per_hwmod, 1002 - .slave = &omap54xx_timer3_hwmod, 1003 - .clk = "l4_root_clk_div", 1004 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1005 - }; 1006 - 1007 - /* l4_per -> timer4 */ 1008 - static struct omap_hwmod_ocp_if omap54xx_l4_per__timer4 = { 1009 - .master = &omap54xx_l4_per_hwmod, 1010 - .slave = &omap54xx_timer4_hwmod, 1011 - .clk = "l4_root_clk_div", 1012 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1013 - }; 1014 - 1015 - /* l4_abe -> timer5 */ 1016 - static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer5 = { 1017 - .master = &omap54xx_l4_abe_hwmod, 1018 - .slave = &omap54xx_timer5_hwmod, 1019 - .clk = "abe_iclk", 1020 - .user = OCP_USER_MPU, 1021 - }; 1022 - 1023 - /* l4_abe -> timer6 */ 1024 - static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer6 = { 1025 - .master = &omap54xx_l4_abe_hwmod, 1026 - .slave = &omap54xx_timer6_hwmod, 1027 - .clk = "abe_iclk", 1028 - .user = OCP_USER_MPU, 1029 - }; 1030 - 1031 - /* l4_abe -> timer7 */ 1032 - static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer7 = { 1033 - .master = &omap54xx_l4_abe_hwmod, 1034 - .slave = &omap54xx_timer7_hwmod, 1035 - .clk = "abe_iclk", 1036 - .user = OCP_USER_MPU, 1037 - }; 1038 - 1039 - /* l4_abe -> timer8 */ 1040 - static struct omap_hwmod_ocp_if omap54xx_l4_abe__timer8 = { 1041 - .master = &omap54xx_l4_abe_hwmod, 1042 - .slave = &omap54xx_timer8_hwmod, 1043 - .clk = "abe_iclk", 1044 - .user = OCP_USER_MPU, 1045 - }; 1046 - 1047 - /* l4_per -> timer9 */ 1048 - static struct omap_hwmod_ocp_if omap54xx_l4_per__timer9 = { 1049 - .master = &omap54xx_l4_per_hwmod, 1050 - .slave = &omap54xx_timer9_hwmod, 1051 - .clk = "l4_root_clk_div", 1052 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1053 - }; 1054 - 1055 - /* l4_per -> timer10 */ 1056 - static struct omap_hwmod_ocp_if omap54xx_l4_per__timer10 = { 1057 - .master = &omap54xx_l4_per_hwmod, 1058 - .slave = &omap54xx_timer10_hwmod, 1059 - .clk = "l4_root_clk_div", 1060 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1061 - }; 1062 - 1063 - /* l4_per -> timer11 */ 1064 - static struct omap_hwmod_ocp_if omap54xx_l4_per__timer11 = { 1065 - .master = &omap54xx_l4_per_hwmod, 1066 - .slave = &omap54xx_timer11_hwmod, 1067 - .clk = "l4_root_clk_div", 1068 1551 .user = OCP_USER_MPU | OCP_USER_SDMA, 1069 1552 }; 1070 1553 ··· 1030 1673 &omap54xx_l3_main_1__l4_wkup, 1031 1674 &omap54xx_mpu__mpu_private, 1032 1675 &omap54xx_l4_wkup__counter_32k, 1033 - &omap54xx_l4_cfg__dma_system, 1034 - &omap54xx_l4_abe__dmic, 1035 - &omap54xx_l4_cfg__mmu_dsp, 1036 1676 &omap54xx_l3_main_2__dss, 1037 1677 &omap54xx_l3_main_2__dss_dispc, 1038 1678 &omap54xx_l3_main_2__dss_dsi1_a, ··· 1038 1684 &omap54xx_l3_main_2__dss_rfbi, 1039 1685 &omap54xx_mpu__emif1, 1040 1686 &omap54xx_mpu__emif2, 1041 - &omap54xx_l3_main_2__mmu_ipu, 1042 - &omap54xx_l4_wkup__kbd, 1043 - &omap54xx_l4_abe__mcpdm, 1044 1687 &omap54xx_l4_cfg__mpu, 1045 - &omap54xx_l4_cfg__spinlock, 1046 - &omap54xx_l4_cfg__ocp2scp1, 1047 1688 &omap54xx_l4_wkup__timer1, 1048 - &omap54xx_l4_per__timer2, 1049 - &omap54xx_l4_per__timer3, 1050 - &omap54xx_l4_per__timer4, 1051 - &omap54xx_l4_abe__timer5, 1052 - &omap54xx_l4_abe__timer6, 1053 - &omap54xx_l4_abe__timer7, 1054 - &omap54xx_l4_abe__timer8, 1055 - &omap54xx_l4_per__timer9, 1056 - &omap54xx_l4_per__timer10, 1057 - &omap54xx_l4_per__timer11, 1058 1689 &omap54xx_l4_cfg__usb_host_hs, 1059 1690 &omap54xx_l4_cfg__usb_tll_hs, 1060 1691 &omap54xx_l4_cfg__usb_otg_ss, 1061 - &omap54xx_l4_cfg__ocp2scp3, 1062 1692 &omap54xx_l4_cfg__sata, 1063 1693 NULL, 1064 1694 };
-873
arch/arm/mach-omap2/omap_hwmod_7xx_data.c
··· 15 15 */ 16 16 17 17 #include <linux/io.h> 18 - #include <linux/power/smartreflex.h> 19 - 20 - #include <linux/omap-dma.h> 21 18 22 19 #include "omap_hwmod.h" 23 20 #include "omap_hwmod_common_data.h" ··· 25 28 26 29 /* Base offset for all DRA7XX interrupts external to MPUSS */ 27 30 #define DRA7XX_IRQ_GIC_START 32 28 - 29 - /* Base offset for all DRA7XX dma requests */ 30 - #define DRA7XX_DMA_REQ_START 1 31 - 32 31 33 32 /* 34 33 * IP blocks ··· 277 284 }; 278 285 279 286 /* 280 - * 'dcan' class 281 - * 282 - */ 283 - 284 - static struct omap_hwmod_class dra7xx_dcan_hwmod_class = { 285 - .name = "dcan", 286 - }; 287 - 288 - /* dcan1 */ 289 - static struct omap_hwmod dra7xx_dcan1_hwmod = { 290 - .name = "dcan1", 291 - .class = &dra7xx_dcan_hwmod_class, 292 - .clkdm_name = "wkupaon_clkdm", 293 - .main_clk = "dcan1_sys_clk_mux", 294 - .flags = HWMOD_CLKDM_NOAUTO, 295 - .prcm = { 296 - .omap4 = { 297 - .clkctrl_offs = DRA7XX_CM_WKUPAON_DCAN1_CLKCTRL_OFFSET, 298 - .context_offs = DRA7XX_RM_WKUPAON_DCAN1_CONTEXT_OFFSET, 299 - .modulemode = MODULEMODE_SWCTRL, 300 - }, 301 - }, 302 - }; 303 - 304 - /* dcan2 */ 305 - static struct omap_hwmod dra7xx_dcan2_hwmod = { 306 - .name = "dcan2", 307 - .class = &dra7xx_dcan_hwmod_class, 308 - .clkdm_name = "l4per2_clkdm", 309 - .main_clk = "sys_clkin1", 310 - .flags = HWMOD_CLKDM_NOAUTO, 311 - .prcm = { 312 - .omap4 = { 313 - .clkctrl_offs = DRA7XX_CM_L4PER2_DCAN2_CLKCTRL_OFFSET, 314 - .context_offs = DRA7XX_RM_L4PER2_DCAN2_CONTEXT_OFFSET, 315 - .modulemode = MODULEMODE_SWCTRL, 316 - }, 317 - }, 318 - }; 319 - 320 - /* pwmss */ 321 - static struct omap_hwmod_class_sysconfig dra7xx_epwmss_sysc = { 322 - .rev_offs = 0x0, 323 - .sysc_offs = 0x4, 324 - .sysc_flags = SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 325 - SYSC_HAS_RESET_STATUS, 326 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 327 - .sysc_fields = &omap_hwmod_sysc_type2, 328 - }; 329 - 330 - /* 331 - * epwmss class 332 - */ 333 - static struct omap_hwmod_class dra7xx_epwmss_hwmod_class = { 334 - .name = "epwmss", 335 - .sysc = &dra7xx_epwmss_sysc, 336 - }; 337 - 338 - /* epwmss0 */ 339 - static struct omap_hwmod dra7xx_epwmss0_hwmod = { 340 - .name = "epwmss0", 341 - .class = &dra7xx_epwmss_hwmod_class, 342 - .clkdm_name = "l4per2_clkdm", 343 - .main_clk = "l4_root_clk_div", 344 - .prcm = { 345 - .omap4 = { 346 - .modulemode = MODULEMODE_SWCTRL, 347 - .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS1_CLKCTRL_OFFSET, 348 - .context_offs = DRA7XX_RM_L4PER2_PWMSS1_CONTEXT_OFFSET, 349 - }, 350 - }, 351 - }; 352 - 353 - /* epwmss1 */ 354 - static struct omap_hwmod dra7xx_epwmss1_hwmod = { 355 - .name = "epwmss1", 356 - .class = &dra7xx_epwmss_hwmod_class, 357 - .clkdm_name = "l4per2_clkdm", 358 - .main_clk = "l4_root_clk_div", 359 - .prcm = { 360 - .omap4 = { 361 - .modulemode = MODULEMODE_SWCTRL, 362 - .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS2_CLKCTRL_OFFSET, 363 - .context_offs = DRA7XX_RM_L4PER2_PWMSS2_CONTEXT_OFFSET, 364 - }, 365 - }, 366 - }; 367 - 368 - /* epwmss2 */ 369 - static struct omap_hwmod dra7xx_epwmss2_hwmod = { 370 - .name = "epwmss2", 371 - .class = &dra7xx_epwmss_hwmod_class, 372 - .clkdm_name = "l4per2_clkdm", 373 - .main_clk = "l4_root_clk_div", 374 - .prcm = { 375 - .omap4 = { 376 - .modulemode = MODULEMODE_SWCTRL, 377 - .clkctrl_offs = DRA7XX_CM_L4PER2_PWMSS3_CLKCTRL_OFFSET, 378 - .context_offs = DRA7XX_RM_L4PER2_PWMSS3_CONTEXT_OFFSET, 379 - }, 380 - }, 381 - }; 382 - 383 - /* 384 - * 'dma' class 385 - * 386 - */ 387 - 388 - static struct omap_hwmod_class_sysconfig dra7xx_dma_sysc = { 389 - .rev_offs = 0x0000, 390 - .sysc_offs = 0x002c, 391 - .syss_offs = 0x0028, 392 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 393 - SYSC_HAS_EMUFREE | SYSC_HAS_MIDLEMODE | 394 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 395 - SYSS_HAS_RESET_STATUS), 396 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 397 - SIDLE_SMART_WKUP | MSTANDBY_FORCE | MSTANDBY_NO | 398 - MSTANDBY_SMART | MSTANDBY_SMART_WKUP), 399 - .sysc_fields = &omap_hwmod_sysc_type1, 400 - }; 401 - 402 - static struct omap_hwmod_class dra7xx_dma_hwmod_class = { 403 - .name = "dma", 404 - .sysc = &dra7xx_dma_sysc, 405 - }; 406 - 407 - /* dma dev_attr */ 408 - static struct omap_dma_dev_attr dma_dev_attr = { 409 - .dev_caps = RESERVE_CHANNEL | DMA_LINKED_LCH | GLOBAL_PRIORITY | 410 - IS_CSSA_32 | IS_CDSA_32 | IS_RW_PRIORITY, 411 - .lch_count = 32, 412 - }; 413 - 414 - /* dma_system */ 415 - static struct omap_hwmod dra7xx_dma_system_hwmod = { 416 - .name = "dma_system", 417 - .class = &dra7xx_dma_hwmod_class, 418 - .clkdm_name = "dma_clkdm", 419 - .main_clk = "l3_iclk_div", 420 - .prcm = { 421 - .omap4 = { 422 - .clkctrl_offs = DRA7XX_CM_DMA_DMA_SYSTEM_CLKCTRL_OFFSET, 423 - .context_offs = DRA7XX_RM_DMA_DMA_SYSTEM_CONTEXT_OFFSET, 424 - }, 425 - }, 426 - .dev_attr = &dma_dev_attr, 427 - }; 428 - 429 - /* 430 287 * 'tpcc' class 431 288 * 432 289 */ ··· 469 626 .parent_hwmod = &dra7xx_dss_hwmod, 470 627 }; 471 628 472 - /* AES (the 'P' (public) device) */ 473 - static struct omap_hwmod_class_sysconfig dra7xx_aes_sysc = { 474 - .rev_offs = 0x0080, 475 - .sysc_offs = 0x0084, 476 - .syss_offs = 0x0088, 477 - .sysc_flags = SYSS_HAS_RESET_STATUS, 478 - }; 479 629 480 - static struct omap_hwmod_class dra7xx_aes_hwmod_class = { 481 - .name = "aes", 482 - .sysc = &dra7xx_aes_sysc, 483 - }; 484 630 485 - /* AES1 */ 486 - static struct omap_hwmod dra7xx_aes1_hwmod = { 487 - .name = "aes1", 488 - .class = &dra7xx_aes_hwmod_class, 489 - .clkdm_name = "l4sec_clkdm", 490 - .main_clk = "l3_iclk_div", 491 - .prcm = { 492 - .omap4 = { 493 - .clkctrl_offs = DRA7XX_CM_L4SEC_AES1_CLKCTRL_OFFSET, 494 - .context_offs = DRA7XX_RM_L4SEC_AES1_CONTEXT_OFFSET, 495 - .modulemode = MODULEMODE_HWCTRL, 496 - }, 497 - }, 498 - }; 499 631 500 - /* AES2 */ 501 - static struct omap_hwmod dra7xx_aes2_hwmod = { 502 - .name = "aes2", 503 - .class = &dra7xx_aes_hwmod_class, 504 - .clkdm_name = "l4sec_clkdm", 505 - .main_clk = "l3_iclk_div", 506 - .prcm = { 507 - .omap4 = { 508 - .clkctrl_offs = DRA7XX_CM_L4SEC_AES2_CLKCTRL_OFFSET, 509 - .context_offs = DRA7XX_RM_L4SEC_AES2_CONTEXT_OFFSET, 510 - .modulemode = MODULEMODE_HWCTRL, 511 - }, 512 - }, 513 - }; 514 - 515 - /* sha0 HIB2 (the 'P' (public) device) */ 516 - static struct omap_hwmod_class_sysconfig dra7xx_sha0_sysc = { 517 - .rev_offs = 0x100, 518 - .sysc_offs = 0x110, 519 - .syss_offs = 0x114, 520 - .sysc_flags = SYSS_HAS_RESET_STATUS, 521 - }; 522 - 523 - static struct omap_hwmod_class dra7xx_sha0_hwmod_class = { 524 - .name = "sham", 525 - .sysc = &dra7xx_sha0_sysc, 526 - }; 527 - 528 - static struct omap_hwmod dra7xx_sha0_hwmod = { 529 - .name = "sham", 530 - .class = &dra7xx_sha0_hwmod_class, 531 - .clkdm_name = "l4sec_clkdm", 532 - .main_clk = "l3_iclk_div", 533 - .prcm = { 534 - .omap4 = { 535 - .clkctrl_offs = DRA7XX_CM_L4SEC_SHA2MD51_CLKCTRL_OFFSET, 536 - .context_offs = DRA7XX_RM_L4SEC_SHA2MD51_CONTEXT_OFFSET, 537 - .modulemode = MODULEMODE_HWCTRL, 538 - }, 539 - }, 540 - }; 541 - 542 - /* 543 - * 'elm' class 544 - * 545 - */ 546 - 547 - static struct omap_hwmod_class_sysconfig dra7xx_elm_sysc = { 548 - .rev_offs = 0x0000, 549 - .sysc_offs = 0x0010, 550 - .syss_offs = 0x0014, 551 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_CLOCKACTIVITY | 552 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 553 - SYSS_HAS_RESET_STATUS), 554 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 555 - SIDLE_SMART_WKUP), 556 - .sysc_fields = &omap_hwmod_sysc_type1, 557 - }; 558 - 559 - static struct omap_hwmod_class dra7xx_elm_hwmod_class = { 560 - .name = "elm", 561 - .sysc = &dra7xx_elm_sysc, 562 - }; 563 - 564 - /* elm */ 565 - 566 - static struct omap_hwmod dra7xx_elm_hwmod = { 567 - .name = "elm", 568 - .class = &dra7xx_elm_hwmod_class, 569 - .clkdm_name = "l4per_clkdm", 570 - .main_clk = "l3_iclk_div", 571 - .prcm = { 572 - .omap4 = { 573 - .clkctrl_offs = DRA7XX_CM_L4PER_ELM_CLKCTRL_OFFSET, 574 - .context_offs = DRA7XX_RM_L4PER_ELM_CONTEXT_OFFSET, 575 - }, 576 - }, 577 - }; 578 632 579 633 /* 580 634 * 'gpmc' class ··· 537 797 }, 538 798 }; 539 799 540 - /* 541 - * 'ocp2scp' class 542 - * 543 - */ 544 - 545 - static struct omap_hwmod_class_sysconfig dra7xx_ocp2scp_sysc = { 546 - .rev_offs = 0x0000, 547 - .sysc_offs = 0x0010, 548 - .syss_offs = 0x0014, 549 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | 550 - SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), 551 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 552 - .sysc_fields = &omap_hwmod_sysc_type1, 553 - }; 554 - 555 - static struct omap_hwmod_class dra7xx_ocp2scp_hwmod_class = { 556 - .name = "ocp2scp", 557 - .sysc = &dra7xx_ocp2scp_sysc, 558 - }; 559 - 560 - /* ocp2scp1 */ 561 - static struct omap_hwmod dra7xx_ocp2scp1_hwmod = { 562 - .name = "ocp2scp1", 563 - .class = &dra7xx_ocp2scp_hwmod_class, 564 - .clkdm_name = "l3init_clkdm", 565 - .main_clk = "l4_root_clk_div", 566 - .prcm = { 567 - .omap4 = { 568 - .clkctrl_offs = DRA7XX_CM_L3INIT_OCP2SCP1_CLKCTRL_OFFSET, 569 - .context_offs = DRA7XX_RM_L3INIT_OCP2SCP1_CONTEXT_OFFSET, 570 - .modulemode = MODULEMODE_HWCTRL, 571 - }, 572 - }, 573 - }; 574 - 575 - /* ocp2scp3 */ 576 - static struct omap_hwmod dra7xx_ocp2scp3_hwmod = { 577 - .name = "ocp2scp3", 578 - .class = &dra7xx_ocp2scp_hwmod_class, 579 - .clkdm_name = "l3init_clkdm", 580 - .main_clk = "l4_root_clk_div", 581 - .prcm = { 582 - .omap4 = { 583 - .clkctrl_offs = DRA7XX_CM_L3INIT_OCP2SCP3_CLKCTRL_OFFSET, 584 - .context_offs = DRA7XX_RM_L3INIT_OCP2SCP3_CONTEXT_OFFSET, 585 - .modulemode = MODULEMODE_HWCTRL, 586 - }, 587 - }, 588 - }; 589 800 590 801 /* 591 802 * 'PCIE' class ··· 723 1032 }; 724 1033 725 1034 /* 726 - * 'smartreflex' class 727 - * 728 - */ 729 - 730 - /* The IP is not compliant to type1 / type2 scheme */ 731 - static struct omap_hwmod_class_sysconfig dra7xx_smartreflex_sysc = { 732 - .rev_offs = -ENODEV, 733 - .sysc_offs = 0x0038, 734 - .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE), 735 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART | 736 - SIDLE_SMART_WKUP), 737 - .sysc_fields = &omap36xx_sr_sysc_fields, 738 - }; 739 - 740 - static struct omap_hwmod_class dra7xx_smartreflex_hwmod_class = { 741 - .name = "smartreflex", 742 - .sysc = &dra7xx_smartreflex_sysc, 743 - }; 744 - 745 - /* smartreflex_core */ 746 - /* smartreflex_core dev_attr */ 747 - static struct omap_smartreflex_dev_attr smartreflex_core_dev_attr = { 748 - .sensor_voltdm_name = "core", 749 - }; 750 - 751 - static struct omap_hwmod dra7xx_smartreflex_core_hwmod = { 752 - .name = "smartreflex_core", 753 - .class = &dra7xx_smartreflex_hwmod_class, 754 - .clkdm_name = "coreaon_clkdm", 755 - .main_clk = "wkupaon_iclk_mux", 756 - .prcm = { 757 - .omap4 = { 758 - .clkctrl_offs = DRA7XX_CM_COREAON_SMARTREFLEX_CORE_CLKCTRL_OFFSET, 759 - .context_offs = DRA7XX_RM_COREAON_SMARTREFLEX_CORE_CONTEXT_OFFSET, 760 - .modulemode = MODULEMODE_SWCTRL, 761 - }, 762 - }, 763 - .dev_attr = &smartreflex_core_dev_attr, 764 - }; 765 - 766 - /* smartreflex_mpu */ 767 - /* smartreflex_mpu dev_attr */ 768 - static struct omap_smartreflex_dev_attr smartreflex_mpu_dev_attr = { 769 - .sensor_voltdm_name = "mpu", 770 - }; 771 - 772 - static struct omap_hwmod dra7xx_smartreflex_mpu_hwmod = { 773 - .name = "smartreflex_mpu", 774 - .class = &dra7xx_smartreflex_hwmod_class, 775 - .clkdm_name = "coreaon_clkdm", 776 - .main_clk = "wkupaon_iclk_mux", 777 - .prcm = { 778 - .omap4 = { 779 - .clkctrl_offs = DRA7XX_CM_COREAON_SMARTREFLEX_MPU_CLKCTRL_OFFSET, 780 - .context_offs = DRA7XX_RM_COREAON_SMARTREFLEX_MPU_CONTEXT_OFFSET, 781 - .modulemode = MODULEMODE_SWCTRL, 782 - }, 783 - }, 784 - .dev_attr = &smartreflex_mpu_dev_attr, 785 - }; 786 - 787 - /* 788 - * 'spinlock' class 789 - * 790 - */ 791 - 792 - static struct omap_hwmod_class_sysconfig dra7xx_spinlock_sysc = { 793 - .rev_offs = 0x0000, 794 - .sysc_offs = 0x0010, 795 - .syss_offs = 0x0014, 796 - .sysc_flags = (SYSC_HAS_AUTOIDLE | SYSC_HAS_ENAWAKEUP | 797 - SYSC_HAS_SIDLEMODE | SYSC_HAS_SOFTRESET | 798 - SYSS_HAS_RESET_STATUS), 799 - .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), 800 - .sysc_fields = &omap_hwmod_sysc_type1, 801 - }; 802 - 803 - static struct omap_hwmod_class dra7xx_spinlock_hwmod_class = { 804 - .name = "spinlock", 805 - .sysc = &dra7xx_spinlock_sysc, 806 - }; 807 - 808 - /* spinlock */ 809 - static struct omap_hwmod dra7xx_spinlock_hwmod = { 810 - .name = "spinlock", 811 - .class = &dra7xx_spinlock_hwmod_class, 812 - .clkdm_name = "l4cfg_clkdm", 813 - .main_clk = "l3_iclk_div", 814 - .prcm = { 815 - .omap4 = { 816 - .clkctrl_offs = DRA7XX_CM_L4CFG_SPINLOCK_CLKCTRL_OFFSET, 817 - .context_offs = DRA7XX_RM_L4CFG_SPINLOCK_CONTEXT_OFFSET, 818 - }, 819 - }, 820 - }; 821 - 822 - /* 823 1035 * 'timer' class 824 1036 * 825 1037 * This class contains several variants: ['timer_1ms', 'timer_secure', ··· 815 1221 .clkctrl_offs = DRA7XX_CM_L4PER_TIMER4_CLKCTRL_OFFSET, 816 1222 .context_offs = DRA7XX_RM_L4PER_TIMER4_CONTEXT_OFFSET, 817 1223 .modulemode = MODULEMODE_SWCTRL, 818 - }, 819 - }, 820 - }; 821 - 822 - /* timer5 */ 823 - static struct omap_hwmod dra7xx_timer5_hwmod = { 824 - .name = "timer5", 825 - .class = &dra7xx_timer_hwmod_class, 826 - .clkdm_name = "ipu_clkdm", 827 - .main_clk = "timer5_gfclk_mux", 828 - .prcm = { 829 - .omap4 = { 830 - .clkctrl_offs = DRA7XX_CM_IPU_TIMER5_CLKCTRL_OFFSET, 831 - .context_offs = DRA7XX_RM_IPU_TIMER5_CONTEXT_OFFSET, 832 - .modulemode = MODULEMODE_SWCTRL, 833 - }, 834 - }, 835 - }; 836 - 837 - /* timer6 */ 838 - static struct omap_hwmod dra7xx_timer6_hwmod = { 839 - .name = "timer6", 840 - .class = &dra7xx_timer_hwmod_class, 841 - .clkdm_name = "ipu_clkdm", 842 - .main_clk = "timer6_gfclk_mux", 843 - .prcm = { 844 - .omap4 = { 845 - .clkctrl_offs = DRA7XX_CM_IPU_TIMER6_CLKCTRL_OFFSET, 846 - .context_offs = DRA7XX_RM_IPU_TIMER6_CONTEXT_OFFSET, 847 - .modulemode = MODULEMODE_SWCTRL, 848 - }, 849 - }, 850 - }; 851 - 852 - /* timer7 */ 853 - static struct omap_hwmod dra7xx_timer7_hwmod = { 854 - .name = "timer7", 855 - .class = &dra7xx_timer_hwmod_class, 856 - .clkdm_name = "ipu_clkdm", 857 - .main_clk = "timer7_gfclk_mux", 858 - .prcm = { 859 - .omap4 = { 860 - .clkctrl_offs = DRA7XX_CM_IPU_TIMER7_CLKCTRL_OFFSET, 861 - .context_offs = DRA7XX_RM_IPU_TIMER7_CONTEXT_OFFSET, 862 - .modulemode = MODULEMODE_SWCTRL, 863 - }, 864 - }, 865 - }; 866 - 867 - /* timer8 */ 868 - static struct omap_hwmod dra7xx_timer8_hwmod = { 869 - .name = "timer8", 870 - .class = &dra7xx_timer_hwmod_class, 871 - .clkdm_name = "ipu_clkdm", 872 - .main_clk = "timer8_gfclk_mux", 873 - .prcm = { 874 - .omap4 = { 875 - .clkctrl_offs = DRA7XX_CM_IPU_TIMER8_CLKCTRL_OFFSET, 876 - .context_offs = DRA7XX_RM_IPU_TIMER8_CONTEXT_OFFSET, 877 - .modulemode = MODULEMODE_SWCTRL, 878 - }, 879 - }, 880 - }; 881 - 882 - /* timer9 */ 883 - static struct omap_hwmod dra7xx_timer9_hwmod = { 884 - .name = "timer9", 885 - .class = &dra7xx_timer_hwmod_class, 886 - .clkdm_name = "l4per_clkdm", 887 - .main_clk = "timer9_gfclk_mux", 888 - .prcm = { 889 - .omap4 = { 890 - .clkctrl_offs = DRA7XX_CM_L4PER_TIMER9_CLKCTRL_OFFSET, 891 - .context_offs = DRA7XX_RM_L4PER_TIMER9_CONTEXT_OFFSET, 892 - .modulemode = MODULEMODE_SWCTRL, 893 - }, 894 - }, 895 - }; 896 - 897 - /* timer10 */ 898 - static struct omap_hwmod dra7xx_timer10_hwmod = { 899 - .name = "timer10", 900 - .class = &dra7xx_timer_1ms_hwmod_class, 901 - .clkdm_name = "l4per_clkdm", 902 - .main_clk = "timer10_gfclk_mux", 903 - .prcm = { 904 - .omap4 = { 905 - .clkctrl_offs = DRA7XX_CM_L4PER_TIMER10_CLKCTRL_OFFSET, 906 - .context_offs = DRA7XX_RM_L4PER_TIMER10_CONTEXT_OFFSET, 907 - .modulemode = MODULEMODE_SWCTRL, 908 - }, 909 - }, 910 - }; 911 - 912 - /* timer11 */ 913 - static struct omap_hwmod dra7xx_timer11_hwmod = { 914 - .name = "timer11", 915 - .class = &dra7xx_timer_hwmod_class, 916 - .clkdm_name = "l4per_clkdm", 917 - .main_clk = "timer11_gfclk_mux", 918 - .prcm = { 919 - .omap4 = { 920 - .clkctrl_offs = DRA7XX_CM_L4PER_TIMER11_CLKCTRL_OFFSET, 921 - .context_offs = DRA7XX_RM_L4PER_TIMER11_CONTEXT_OFFSET, 922 - .modulemode = MODULEMODE_SWCTRL, 923 - }, 924 - }, 925 - }; 926 - 927 - /* timer12 */ 928 - static struct omap_hwmod dra7xx_timer12_hwmod = { 929 - .name = "timer12", 930 - .class = &dra7xx_timer_hwmod_class, 931 - .clkdm_name = "wkupaon_clkdm", 932 - .main_clk = "secure_32k_clk_src_ck", 933 - .prcm = { 934 - .omap4 = { 935 - .clkctrl_offs = DRA7XX_CM_WKUPAON_TIMER12_CLKCTRL_OFFSET, 936 - .context_offs = DRA7XX_RM_WKUPAON_TIMER12_CONTEXT_OFFSET, 937 - }, 938 - }, 939 - }; 940 - 941 - /* timer13 */ 942 - static struct omap_hwmod dra7xx_timer13_hwmod = { 943 - .name = "timer13", 944 - .class = &dra7xx_timer_hwmod_class, 945 - .clkdm_name = "l4per3_clkdm", 946 - .main_clk = "timer13_gfclk_mux", 947 - .prcm = { 948 - .omap4 = { 949 - .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER13_CLKCTRL_OFFSET, 950 - .context_offs = DRA7XX_RM_L4PER3_TIMER13_CONTEXT_OFFSET, 951 - .modulemode = MODULEMODE_SWCTRL, 952 - }, 953 - }, 954 - }; 955 - 956 - /* timer14 */ 957 - static struct omap_hwmod dra7xx_timer14_hwmod = { 958 - .name = "timer14", 959 - .class = &dra7xx_timer_hwmod_class, 960 - .clkdm_name = "l4per3_clkdm", 961 - .main_clk = "timer14_gfclk_mux", 962 - .prcm = { 963 - .omap4 = { 964 - .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER14_CLKCTRL_OFFSET, 965 - .context_offs = DRA7XX_RM_L4PER3_TIMER14_CONTEXT_OFFSET, 966 - .modulemode = MODULEMODE_SWCTRL, 967 - }, 968 - }, 969 - }; 970 - 971 - /* timer15 */ 972 - static struct omap_hwmod dra7xx_timer15_hwmod = { 973 - .name = "timer15", 974 - .class = &dra7xx_timer_hwmod_class, 975 - .clkdm_name = "l4per3_clkdm", 976 - .main_clk = "timer15_gfclk_mux", 977 - .prcm = { 978 - .omap4 = { 979 - .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER15_CLKCTRL_OFFSET, 980 - .context_offs = DRA7XX_RM_L4PER3_TIMER15_CONTEXT_OFFSET, 981 - .modulemode = MODULEMODE_SWCTRL, 982 - }, 983 - }, 984 - }; 985 - 986 - /* timer16 */ 987 - static struct omap_hwmod dra7xx_timer16_hwmod = { 988 - .name = "timer16", 989 - .class = &dra7xx_timer_hwmod_class, 990 - .clkdm_name = "l4per3_clkdm", 991 - .main_clk = "timer16_gfclk_mux", 992 - .prcm = { 993 - .omap4 = { 994 - .clkctrl_offs = DRA7XX_CM_L4PER3_TIMER16_CLKCTRL_OFFSET, 995 - .context_offs = DRA7XX_RM_L4PER3_TIMER16_CONTEXT_OFFSET, 996 - .modulemode = MODULEMODE_SWCTRL, 997 - }, 998 - }, 999 - }; 1000 - 1001 - /* DES (the 'P' (public) device) */ 1002 - static struct omap_hwmod_class_sysconfig dra7xx_des_sysc = { 1003 - .rev_offs = 0x0030, 1004 - .sysc_offs = 0x0034, 1005 - .syss_offs = 0x0038, 1006 - .sysc_flags = SYSS_HAS_RESET_STATUS, 1007 - }; 1008 - 1009 - static struct omap_hwmod_class dra7xx_des_hwmod_class = { 1010 - .name = "des", 1011 - .sysc = &dra7xx_des_sysc, 1012 - }; 1013 - 1014 - /* DES */ 1015 - static struct omap_hwmod dra7xx_des_hwmod = { 1016 - .name = "des", 1017 - .class = &dra7xx_des_hwmod_class, 1018 - .clkdm_name = "l4sec_clkdm", 1019 - .main_clk = "l3_iclk_div", 1020 - .prcm = { 1021 - .omap4 = { 1022 - .clkctrl_offs = DRA7XX_CM_L4SEC_DES3DES_CLKCTRL_OFFSET, 1023 - .context_offs = DRA7XX_RM_L4SEC_DES3DES_CONTEXT_OFFSET, 1024 - .modulemode = MODULEMODE_HWCTRL, 1025 1224 }, 1026 1225 }, 1027 1226 }; ··· 1077 1690 .user = OCP_USER_MPU | OCP_USER_SDMA, 1078 1691 }; 1079 1692 1080 - /* l4_wkup -> dcan1 */ 1081 - static struct omap_hwmod_ocp_if dra7xx_l4_wkup__dcan1 = { 1082 - .master = &dra7xx_l4_wkup_hwmod, 1083 - .slave = &dra7xx_dcan1_hwmod, 1084 - .clk = "wkupaon_iclk_mux", 1085 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1086 - }; 1087 - 1088 - /* l4_per2 -> dcan2 */ 1089 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__dcan2 = { 1090 - .master = &dra7xx_l4_per2_hwmod, 1091 - .slave = &dra7xx_dcan2_hwmod, 1092 - .clk = "l3_iclk_div", 1093 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1094 - }; 1095 - 1096 - /* l4_cfg -> dma_system */ 1097 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__dma_system = { 1098 - .master = &dra7xx_l4_cfg_hwmod, 1099 - .slave = &dra7xx_dma_system_hwmod, 1100 - .clk = "l3_iclk_div", 1101 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1102 - }; 1103 - 1104 1693 /* l3_main_1 -> tpcc */ 1105 1694 static struct omap_hwmod_ocp_if dra7xx_l3_main_1__tpcc = { 1106 1695 .master = &dra7xx_l3_main_1_hwmod, ··· 1125 1762 .user = OCP_USER_MPU | OCP_USER_SDMA, 1126 1763 }; 1127 1764 1128 - /* l3_main_1 -> aes1 */ 1129 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__aes1 = { 1130 - .master = &dra7xx_l3_main_1_hwmod, 1131 - .slave = &dra7xx_aes1_hwmod, 1132 - .clk = "l3_iclk_div", 1133 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1134 - }; 1135 - 1136 - /* l3_main_1 -> aes2 */ 1137 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__aes2 = { 1138 - .master = &dra7xx_l3_main_1_hwmod, 1139 - .slave = &dra7xx_aes2_hwmod, 1140 - .clk = "l3_iclk_div", 1141 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1142 - }; 1143 - 1144 - /* l3_main_1 -> sha0 */ 1145 - static struct omap_hwmod_ocp_if dra7xx_l3_main_1__sha0 = { 1146 - .master = &dra7xx_l3_main_1_hwmod, 1147 - .slave = &dra7xx_sha0_hwmod, 1148 - .clk = "l3_iclk_div", 1149 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1150 - }; 1151 - 1152 - /* l4_per1 -> elm */ 1153 - static struct omap_hwmod_ocp_if dra7xx_l4_per1__elm = { 1154 - .master = &dra7xx_l4_per1_hwmod, 1155 - .slave = &dra7xx_elm_hwmod, 1156 - .clk = "l3_iclk_div", 1157 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1158 - }; 1159 - 1160 1765 /* l3_main_1 -> gpmc */ 1161 1766 static struct omap_hwmod_ocp_if dra7xx_l3_main_1__gpmc = { 1162 1767 .master = &dra7xx_l3_main_1_hwmod, ··· 1138 1807 .master = &dra7xx_l4_cfg_hwmod, 1139 1808 .slave = &dra7xx_mpu_hwmod, 1140 1809 .clk = "l3_iclk_div", 1141 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1142 - }; 1143 - 1144 - /* l4_cfg -> ocp2scp1 */ 1145 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__ocp2scp1 = { 1146 - .master = &dra7xx_l4_cfg_hwmod, 1147 - .slave = &dra7xx_ocp2scp1_hwmod, 1148 - .clk = "l4_root_clk_div", 1149 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1150 - }; 1151 - 1152 - /* l4_cfg -> ocp2scp3 */ 1153 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__ocp2scp3 = { 1154 - .master = &dra7xx_l4_cfg_hwmod, 1155 - .slave = &dra7xx_ocp2scp3_hwmod, 1156 - .clk = "l4_root_clk_div", 1157 1810 .user = OCP_USER_MPU | OCP_USER_SDMA, 1158 1811 }; 1159 1812 ··· 1197 1882 .user = OCP_USER_MPU | OCP_USER_SDMA, 1198 1883 }; 1199 1884 1200 - /* l4_cfg -> smartreflex_core */ 1201 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__smartreflex_core = { 1202 - .master = &dra7xx_l4_cfg_hwmod, 1203 - .slave = &dra7xx_smartreflex_core_hwmod, 1204 - .clk = "l4_root_clk_div", 1205 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1206 - }; 1207 - 1208 - /* l4_cfg -> smartreflex_mpu */ 1209 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__smartreflex_mpu = { 1210 - .master = &dra7xx_l4_cfg_hwmod, 1211 - .slave = &dra7xx_smartreflex_mpu_hwmod, 1212 - .clk = "l4_root_clk_div", 1213 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1214 - }; 1215 - 1216 - /* l4_cfg -> spinlock */ 1217 - static struct omap_hwmod_ocp_if dra7xx_l4_cfg__spinlock = { 1218 - .master = &dra7xx_l4_cfg_hwmod, 1219 - .slave = &dra7xx_spinlock_hwmod, 1220 - .clk = "l3_iclk_div", 1221 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1222 - }; 1223 - 1224 1885 /* l4_wkup -> timer1 */ 1225 1886 static struct omap_hwmod_ocp_if dra7xx_l4_wkup__timer1 = { 1226 1887 .master = &dra7xx_l4_wkup_hwmod, ··· 1225 1934 static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer4 = { 1226 1935 .master = &dra7xx_l4_per1_hwmod, 1227 1936 .slave = &dra7xx_timer4_hwmod, 1228 - .clk = "l3_iclk_div", 1229 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1230 - }; 1231 - 1232 - /* l4_per3 -> timer5 */ 1233 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer5 = { 1234 - .master = &dra7xx_l4_per3_hwmod, 1235 - .slave = &dra7xx_timer5_hwmod, 1236 - .clk = "l3_iclk_div", 1237 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1238 - }; 1239 - 1240 - /* l4_per3 -> timer6 */ 1241 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer6 = { 1242 - .master = &dra7xx_l4_per3_hwmod, 1243 - .slave = &dra7xx_timer6_hwmod, 1244 - .clk = "l3_iclk_div", 1245 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1246 - }; 1247 - 1248 - /* l4_per3 -> timer7 */ 1249 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer7 = { 1250 - .master = &dra7xx_l4_per3_hwmod, 1251 - .slave = &dra7xx_timer7_hwmod, 1252 - .clk = "l3_iclk_div", 1253 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1254 - }; 1255 - 1256 - /* l4_per3 -> timer8 */ 1257 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer8 = { 1258 - .master = &dra7xx_l4_per3_hwmod, 1259 - .slave = &dra7xx_timer8_hwmod, 1260 - .clk = "l3_iclk_div", 1261 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1262 - }; 1263 - 1264 - /* l4_per1 -> timer9 */ 1265 - static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer9 = { 1266 - .master = &dra7xx_l4_per1_hwmod, 1267 - .slave = &dra7xx_timer9_hwmod, 1268 - .clk = "l3_iclk_div", 1269 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1270 - }; 1271 - 1272 - /* l4_per1 -> timer10 */ 1273 - static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer10 = { 1274 - .master = &dra7xx_l4_per1_hwmod, 1275 - .slave = &dra7xx_timer10_hwmod, 1276 - .clk = "l3_iclk_div", 1277 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1278 - }; 1279 - 1280 - /* l4_per1 -> timer11 */ 1281 - static struct omap_hwmod_ocp_if dra7xx_l4_per1__timer11 = { 1282 - .master = &dra7xx_l4_per1_hwmod, 1283 - .slave = &dra7xx_timer11_hwmod, 1284 - .clk = "l3_iclk_div", 1285 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1286 - }; 1287 - 1288 - /* l4_wkup -> timer12 */ 1289 - static struct omap_hwmod_ocp_if dra7xx_l4_wkup__timer12 = { 1290 - .master = &dra7xx_l4_wkup_hwmod, 1291 - .slave = &dra7xx_timer12_hwmod, 1292 - .clk = "wkupaon_iclk_mux", 1293 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1294 - }; 1295 - 1296 - /* l4_per3 -> timer13 */ 1297 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer13 = { 1298 - .master = &dra7xx_l4_per3_hwmod, 1299 - .slave = &dra7xx_timer13_hwmod, 1300 - .clk = "l3_iclk_div", 1301 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1302 - }; 1303 - 1304 - /* l4_per3 -> timer14 */ 1305 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer14 = { 1306 - .master = &dra7xx_l4_per3_hwmod, 1307 - .slave = &dra7xx_timer14_hwmod, 1308 - .clk = "l3_iclk_div", 1309 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1310 - }; 1311 - 1312 - /* l4_per3 -> timer15 */ 1313 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer15 = { 1314 - .master = &dra7xx_l4_per3_hwmod, 1315 - .slave = &dra7xx_timer15_hwmod, 1316 - .clk = "l3_iclk_div", 1317 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1318 - }; 1319 - 1320 - /* l4_per3 -> timer16 */ 1321 - static struct omap_hwmod_ocp_if dra7xx_l4_per3__timer16 = { 1322 - .master = &dra7xx_l4_per3_hwmod, 1323 - .slave = &dra7xx_timer16_hwmod, 1324 - .clk = "l3_iclk_div", 1325 - .user = OCP_USER_MPU | OCP_USER_SDMA, 1326 - }; 1327 - 1328 - /* l4_per1 -> des */ 1329 - static struct omap_hwmod_ocp_if dra7xx_l4_per1__des = { 1330 - .master = &dra7xx_l4_per1_hwmod, 1331 - .slave = &dra7xx_des_hwmod, 1332 1937 .clk = "l3_iclk_div", 1333 1938 .user = OCP_USER_MPU | OCP_USER_SDMA, 1334 1939 }; ··· 1293 2106 .user = OCP_USER_MPU | OCP_USER_SDMA, 1294 2107 }; 1295 2108 1296 - /* l4_per2 -> epwmss0 */ 1297 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss0 = { 1298 - .master = &dra7xx_l4_per2_hwmod, 1299 - .slave = &dra7xx_epwmss0_hwmod, 1300 - .clk = "l4_root_clk_div", 1301 - .user = OCP_USER_MPU, 1302 - }; 1303 - 1304 - /* l4_per2 -> epwmss1 */ 1305 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss1 = { 1306 - .master = &dra7xx_l4_per2_hwmod, 1307 - .slave = &dra7xx_epwmss1_hwmod, 1308 - .clk = "l4_root_clk_div", 1309 - .user = OCP_USER_MPU, 1310 - }; 1311 - 1312 - /* l4_per2 -> epwmss2 */ 1313 - static struct omap_hwmod_ocp_if dra7xx_l4_per2__epwmss2 = { 1314 - .master = &dra7xx_l4_per2_hwmod, 1315 - .slave = &dra7xx_epwmss2_hwmod, 1316 - .clk = "l4_root_clk_div", 1317 - .user = OCP_USER_MPU, 1318 - }; 1319 - 1320 2109 static struct omap_hwmod_ocp_if *dra7xx_hwmod_ocp_ifs[] __initdata = { 1321 2110 &dra7xx_l3_main_1__dmm, 1322 2111 &dra7xx_l3_main_2__l3_instr, ··· 1309 2146 &dra7xx_l3_main_1__bb2d, 1310 2147 &dra7xx_l4_wkup__counter_32k, 1311 2148 &dra7xx_l4_wkup__ctrl_module_wkup, 1312 - &dra7xx_l4_wkup__dcan1, 1313 - &dra7xx_l4_per2__dcan2, 1314 - &dra7xx_l4_cfg__dma_system, 1315 2149 &dra7xx_l3_main_1__tpcc, 1316 2150 &dra7xx_l3_main_1__tptc0, 1317 2151 &dra7xx_l3_main_1__tptc1, 1318 2152 &dra7xx_l3_main_1__dss, 1319 2153 &dra7xx_l3_main_1__dispc, 1320 2154 &dra7xx_l3_main_1__hdmi, 1321 - &dra7xx_l3_main_1__aes1, 1322 - &dra7xx_l3_main_1__aes2, 1323 - &dra7xx_l3_main_1__sha0, 1324 - &dra7xx_l4_per1__elm, 1325 2155 &dra7xx_l3_main_1__gpmc, 1326 2156 &dra7xx_l4_cfg__mpu, 1327 - &dra7xx_l4_cfg__ocp2scp1, 1328 - &dra7xx_l4_cfg__ocp2scp3, 1329 2157 &dra7xx_l3_main_1__pciess1, 1330 2158 &dra7xx_l4_cfg__pciess1, 1331 2159 &dra7xx_l3_main_1__pciess2, 1332 2160 &dra7xx_l4_cfg__pciess2, 1333 2161 &dra7xx_l3_main_1__qspi, 1334 2162 &dra7xx_l4_cfg__sata, 1335 - &dra7xx_l4_cfg__smartreflex_core, 1336 - &dra7xx_l4_cfg__smartreflex_mpu, 1337 - &dra7xx_l4_cfg__spinlock, 1338 2163 &dra7xx_l4_wkup__timer1, 1339 2164 &dra7xx_l4_per1__timer2, 1340 2165 &dra7xx_l4_per1__timer3, 1341 2166 &dra7xx_l4_per1__timer4, 1342 - &dra7xx_l4_per3__timer5, 1343 - &dra7xx_l4_per3__timer6, 1344 - &dra7xx_l4_per3__timer7, 1345 - &dra7xx_l4_per3__timer8, 1346 - &dra7xx_l4_per1__timer9, 1347 - &dra7xx_l4_per1__timer10, 1348 - &dra7xx_l4_per1__timer11, 1349 - &dra7xx_l4_per3__timer13, 1350 - &dra7xx_l4_per3__timer14, 1351 - &dra7xx_l4_per3__timer15, 1352 - &dra7xx_l4_per3__timer16, 1353 - &dra7xx_l4_per1__des, 1354 2167 &dra7xx_l4_per3__usb_otg_ss1, 1355 2168 &dra7xx_l4_per3__usb_otg_ss2, 1356 2169 &dra7xx_l4_per3__usb_otg_ss3, ··· 1334 2195 &dra7xx_l4_per2__vcp1, 1335 2196 &dra7xx_l3_main_1__vcp2, 1336 2197 &dra7xx_l4_per2__vcp2, 1337 - &dra7xx_l4_per2__epwmss0, 1338 - &dra7xx_l4_per2__epwmss1, 1339 - &dra7xx_l4_per2__epwmss2, 1340 - NULL, 1341 - }; 1342 - 1343 - /* GP-only hwmod links */ 1344 - static struct omap_hwmod_ocp_if *dra7xx_gp_hwmod_ocp_ifs[] __initdata = { 1345 - &dra7xx_l4_wkup__timer12, 1346 2198 NULL, 1347 2199 }; 1348 2200 ··· 1385 2255 ret = omap_hwmod_register_links(rtc_hwmod_ocp_ifs); 1386 2256 } 1387 2257 } 1388 - 1389 - if (!ret && omap_type() == OMAP2_DEVICE_TYPE_GP) 1390 - ret = omap_hwmod_register_links(dra7xx_gp_hwmod_ocp_ifs); 1391 2258 1392 2259 return ret; 1393 2260 }
-1
arch/arm/mach-omap2/omap_hwmod_common_data.h
··· 98 98 extern struct omap_hwmod_class omap2xxx_timer_hwmod_class; 99 99 extern struct omap_hwmod_class omap2xxx_wd_timer_hwmod_class; 100 100 extern struct omap_hwmod_class omap2xxx_gpio_hwmod_class; 101 - extern struct omap_hwmod_class omap2xxx_dma_hwmod_class; 102 101 extern struct omap_hwmod_class omap2xxx_mailbox_hwmod_class; 103 102 extern struct omap_hwmod_class omap2xxx_mcspi_class; 104 103
-24
arch/arm/mach-omap2/omap_hwmod_reset.c
··· 26 26 #include <linux/kernel.h> 27 27 #include <linux/errno.h> 28 28 29 - #include <sound/aess.h> 30 - 31 29 #include "omap_hwmod.h" 32 30 #include "common.h" 33 31 ··· 37 39 #define OMAP_RTC_KICK1_VALUE 0x95A4F1E0 38 40 #define OMAP_RTC_STATUS_BUSY BIT(0) 39 41 #define OMAP_RTC_MAX_READY_TIME 50 40 - 41 - /** 42 - * omap_hwmod_aess_preprogram - enable AESS internal autogating 43 - * @oh: struct omap_hwmod * 44 - * 45 - * The AESS will not IdleAck to the PRCM until its internal autogating 46 - * is enabled. Since internal autogating is disabled by default after 47 - * AESS reset, we must enable autogating after the hwmod code resets 48 - * the AESS. Returns 0. 49 - */ 50 - int omap_hwmod_aess_preprogram(struct omap_hwmod *oh) 51 - { 52 - void __iomem *va; 53 - 54 - va = omap_hwmod_get_mpu_rt_va(oh); 55 - if (!va) 56 - return -EINVAL; 57 - 58 - aess_enable_autogating(va); 59 - 60 - return 0; 61 - } 62 42 63 43 /** 64 44 * omap_rtc_wait_not_busy - Wait for the RTC BUSY flag
+6 -1
arch/arm/mach-omap2/pdata-quirks.c
··· 306 306 307 307 static struct clockdomain *ti_sysc_find_one_clockdomain(struct clk *clk) 308 308 { 309 + struct clk_hw *hw = __clk_get_hw(clk); 309 310 struct clockdomain *clkdm = NULL; 310 311 struct clk_hw_omap *hwclk; 311 312 312 - hwclk = to_clk_hw_omap(__clk_get_hw(clk)); 313 + hwclk = to_clk_hw_omap(hw); 314 + if (!omap2_clk_is_hw_omap(hw)) 315 + return NULL; 316 + 313 317 if (hwclk && hwclk->clkdm_name) 314 318 clkdm = clkdm_lookup(hwclk->clkdm_name); 315 319 ··· 514 510 /* Common auxdata */ 515 511 OF_DEV_AUXDATA("ti,sysc", 0, NULL, &ti_sysc_pdata), 516 512 OF_DEV_AUXDATA("pinctrl-single", 0, NULL, &pcs_pdata), 513 + OF_DEV_AUXDATA("ti,omap-sdma", 0, NULL, &dma_plat_info), 517 514 { /* sentinel */ }, 518 515 }; 519 516
+10 -12
arch/arm/mach-omap2/pm24xx.c
··· 83 83 l = omap_ctrl_readl(OMAP2_CONTROL_DEVCONF0) | OMAP24XX_USBSTANDBYCTRL; 84 84 omap_ctrl_writel(l, OMAP2_CONTROL_DEVCONF0); 85 85 86 - cpu_cluster_pm_enter(); 87 - 88 86 /* One last check for pending IRQs to avoid extra latency due 89 87 * to sleeping unnecessarily. */ 90 88 if (omap_irq_pending()) ··· 94 96 OMAP_SDRC_REGADDR(SDRC_POWER)); 95 97 96 98 no_sleep: 97 - cpu_cluster_pm_exit(); 98 - 99 99 clk_enable(osc_ck); 100 100 101 101 /* clear CORE wake-up events */ ··· 158 162 return 0; 159 163 if (__clk_is_enabled(osc_ck)) 160 164 return 0; 161 - if (omap_dma_running()) 162 - return 0; 163 165 164 166 return 1; 165 167 } 166 168 167 169 static void omap2_pm_idle(void) 168 170 { 169 - if (!omap2_can_sleep()) { 170 - if (omap_irq_pending()) 171 - return; 172 - omap2_enter_mpu_retention(); 173 - return; 174 - } 171 + int error; 175 172 176 173 if (omap_irq_pending()) 177 174 return; 178 175 176 + error = cpu_cluster_pm_enter(); 177 + if (error || !omap2_can_sleep()) { 178 + omap2_enter_mpu_retention(); 179 + goto out_cpu_cluster_pm; 180 + } 181 + 179 182 omap2_enter_full_retention(); 183 + 184 + out_cpu_cluster_pm: 185 + cpu_cluster_pm_exit(); 180 186 } 181 187 182 188 static void __init prcm_setup_regs(void)
-5
arch/arm/mach-omap2/pm34xx.c
··· 25 25 #include <linux/clk.h> 26 26 #include <linux/delay.h> 27 27 #include <linux/slab.h> 28 - #include <linux/omap-dma.h> 29 28 #include <linux/omap-gpmc.h> 30 29 31 30 #include <trace/events/power.h> ··· 84 85 omap3_gpmc_save_context(); 85 86 /* Save the system control module context, padconf already save above*/ 86 87 omap3_control_save_context(); 87 - omap_dma_global_context_save(); 88 88 } 89 89 90 90 static void omap3_core_restore_context(void) ··· 94 96 omap3_gpmc_restore_context(); 95 97 /* Restore the interrupt controller context */ 96 98 omap_intc_restore_context(); 97 - omap_dma_global_context_restore(); 98 99 } 99 100 100 101 /* ··· 544 547 545 548 local_irq_disable(); 546 549 547 - omap_dma_global_context_save(); 548 550 omap3_save_secure_ram_context(); 549 - omap_dma_global_context_restore(); 550 551 551 552 local_irq_enable(); 552 553 }
+8 -463
arch/arm/plat-omap/dma.c
··· 65 65 static struct omap_system_dma_plat_info *p; 66 66 static struct omap_dma_dev_attr *d; 67 67 static void omap_clear_dma(int lch); 68 - static int omap_dma_set_prio_lch(int lch, unsigned char read_prio, 69 - unsigned char write_prio); 70 68 static int enable_1510_mode; 71 69 static u32 errata; 72 - 73 - static struct omap_dma_global_context_registers { 74 - u32 dma_irqenable_l0; 75 - u32 dma_irqenable_l1; 76 - u32 dma_ocp_sysconfig; 77 - u32 dma_gcr; 78 - } omap_dma_global_context; 79 70 80 71 struct dma_link_info { 81 72 int *linked_dmach_q; ··· 81 90 82 91 }; 83 92 84 - static struct dma_link_info *dma_linked_lch; 85 - 86 - #ifndef CONFIG_ARCH_OMAP1 87 - 88 - /* Chain handling macros */ 89 - #define OMAP_DMA_CHAIN_QINIT(chain_id) \ 90 - do { \ 91 - dma_linked_lch[chain_id].q_head = \ 92 - dma_linked_lch[chain_id].q_tail = \ 93 - dma_linked_lch[chain_id].q_count = 0; \ 94 - } while (0) 95 - #define OMAP_DMA_CHAIN_QFULL(chain_id) \ 96 - (dma_linked_lch[chain_id].no_of_lchs_linked == \ 97 - dma_linked_lch[chain_id].q_count) 98 - #define OMAP_DMA_CHAIN_QLAST(chain_id) \ 99 - do { \ 100 - ((dma_linked_lch[chain_id].no_of_lchs_linked-1) == \ 101 - dma_linked_lch[chain_id].q_count) \ 102 - } while (0) 103 - #define OMAP_DMA_CHAIN_QEMPTY(chain_id) \ 104 - (0 == dma_linked_lch[chain_id].q_count) 105 - #define __OMAP_DMA_CHAIN_INCQ(end) \ 106 - ((end) = ((end)+1) % dma_linked_lch[chain_id].no_of_lchs_linked) 107 - #define OMAP_DMA_CHAIN_INCQHEAD(chain_id) \ 108 - do { \ 109 - __OMAP_DMA_CHAIN_INCQ(dma_linked_lch[chain_id].q_head); \ 110 - dma_linked_lch[chain_id].q_count--; \ 111 - } while (0) 112 - 113 - #define OMAP_DMA_CHAIN_INCQTAIL(chain_id) \ 114 - do { \ 115 - __OMAP_DMA_CHAIN_INCQ(dma_linked_lch[chain_id].q_tail); \ 116 - dma_linked_lch[chain_id].q_count++; \ 117 - } while (0) 118 - #endif 119 - 120 93 static int dma_lch_count; 121 94 static int dma_chan_count; 122 95 static int omap_dma_reserve_channels; ··· 91 136 static inline void disable_lnk(int lch); 92 137 static void omap_disable_channel_irq(int lch); 93 138 static inline void omap_enable_channel_irq(int lch); 94 - 95 - #define REVISIT_24XX() printk(KERN_ERR "FIXME: no %s on 24xx\n", \ 96 - __func__); 97 139 98 140 #ifdef CONFIG_ARCH_OMAP15XX 99 141 /* Returns 1 if the DMA module is in OMAP1510-compatible mode, 0 otherwise */ ··· 230 278 } 231 279 EXPORT_SYMBOL(omap_set_dma_transfer_params); 232 280 233 - void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode) 234 - { 235 - if (dma_omap2plus()) { 236 - u32 csdp; 237 - 238 - csdp = p->dma_read(CSDP, lch); 239 - csdp &= ~(0x3 << 16); 240 - csdp |= (mode << 16); 241 - p->dma_write(csdp, CSDP, lch); 242 - } 243 - } 244 - EXPORT_SYMBOL(omap_set_dma_write_mode); 245 - 246 281 void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode) 247 282 { 248 283 if (dma_omap1() && !dma_omap15xx()) { ··· 270 331 p->dma_write(src_fi, CSFI, lch); 271 332 } 272 333 EXPORT_SYMBOL(omap_set_dma_src_params); 273 - 274 - void omap_set_dma_params(int lch, struct omap_dma_channel_params *params) 275 - { 276 - omap_set_dma_transfer_params(lch, params->data_type, 277 - params->elem_count, params->frame_count, 278 - params->sync_mode, params->trigger, 279 - params->src_or_dst_synch); 280 - omap_set_dma_src_params(lch, params->src_port, 281 - params->src_amode, params->src_start, 282 - params->src_ei, params->src_fi); 283 - 284 - omap_set_dma_dest_params(lch, params->dst_port, 285 - params->dst_amode, params->dst_start, 286 - params->dst_ei, params->dst_fi); 287 - if (params->read_prio || params->write_prio) 288 - omap_dma_set_prio_lch(lch, params->read_prio, 289 - params->write_prio); 290 - } 291 - EXPORT_SYMBOL(omap_set_dma_params); 292 334 293 335 void omap_set_dma_src_data_pack(int lch, int enable) 294 336 { ··· 427 507 p->dma_write(OMAP2_DMA_CSR_CLEAR_MASK, CSR, lch); 428 508 } 429 509 430 - void omap_enable_dma_irq(int lch, u16 bits) 431 - { 432 - dma_chan[lch].enabled_irqs |= bits; 433 - } 434 - EXPORT_SYMBOL(omap_enable_dma_irq); 435 - 436 510 void omap_disable_dma_irq(int lch, u16 bits) 437 511 { 438 512 dma_chan[lch].enabled_irqs &= ~bits; ··· 445 531 /* Set the ENABLE_LNK bits */ 446 532 if (dma_chan[lch].next_lch != -1) 447 533 l = dma_chan[lch].next_lch | (1 << 15); 448 - 449 - #ifndef CONFIG_ARCH_OMAP1 450 - if (dma_omap2plus()) 451 - if (dma_chan[lch].next_linked_ch != -1) 452 - l = dma_chan[lch].next_linked_ch | (1 << 15); 453 - #endif 454 534 455 535 p->dma_write(l, CLNK_CTRL, lch); 456 536 } ··· 470 562 471 563 p->dma_write(l, CLNK_CTRL, lch); 472 564 dma_chan[lch].flags &= ~OMAP_DMA_ACTIVE; 473 - } 474 - 475 - static inline void omap2_enable_irq_lch(int lch) 476 - { 477 - u32 val; 478 - unsigned long flags; 479 - 480 - if (dma_omap1()) 481 - return; 482 - 483 - spin_lock_irqsave(&dma_chan_lock, flags); 484 - /* clear IRQ STATUS */ 485 - p->dma_write(1 << lch, IRQSTATUS_L0, lch); 486 - /* Enable interrupt */ 487 - val = p->dma_read(IRQENABLE_L0, lch); 488 - val |= 1 << lch; 489 - p->dma_write(val, IRQENABLE_L0, lch); 490 - spin_unlock_irqrestore(&dma_chan_lock, flags); 491 - } 492 - 493 - static inline void omap2_disable_irq_lch(int lch) 494 - { 495 - u32 val; 496 - unsigned long flags; 497 - 498 - if (dma_omap1()) 499 - return; 500 - 501 - spin_lock_irqsave(&dma_chan_lock, flags); 502 - /* Disable interrupt */ 503 - val = p->dma_read(IRQENABLE_L0, lch); 504 - val &= ~(1 << lch); 505 - p->dma_write(val, IRQENABLE_L0, lch); 506 - /* clear IRQ STATUS */ 507 - p->dma_write(1 << lch, IRQSTATUS_L0, lch); 508 - spin_unlock_irqrestore(&dma_chan_lock, flags); 509 565 } 510 566 511 567 int omap_request_dma(int dev_id, const char *dev_name, ··· 500 628 if (p->clear_lch_regs) 501 629 p->clear_lch_regs(free_ch); 502 630 503 - if (dma_omap2plus()) 504 - omap_clear_dma(free_ch); 505 - 506 631 spin_unlock_irqrestore(&dma_chan_lock, flags); 507 632 508 633 chan->dev_name = dev_name; ··· 507 638 chan->data = data; 508 639 chan->flags = 0; 509 640 510 - #ifndef CONFIG_ARCH_OMAP1 511 - if (dma_omap2plus()) { 512 - chan->chain_id = -1; 513 - chan->next_linked_ch = -1; 514 - } 515 - #endif 516 - 517 641 chan->enabled_irqs = OMAP_DMA_DROP_IRQ | OMAP_DMA_BLOCK_IRQ; 518 642 519 643 if (dma_omap1()) 520 644 chan->enabled_irqs |= OMAP1_DMA_TOUT_IRQ; 521 - else if (dma_omap2plus()) 522 - chan->enabled_irqs |= OMAP2_DMA_MISALIGNED_ERR_IRQ | 523 - OMAP2_DMA_TRANS_ERR_IRQ; 524 645 525 646 if (dma_omap16xx()) { 526 647 /* If the sync device is set, configure it dynamically. */ ··· 525 666 p->dma_write(dev_id | (1 << 10), CCR, free_ch); 526 667 } else if (dma_omap1()) { 527 668 p->dma_write(dev_id, CCR, free_ch); 528 - } 529 - 530 - if (dma_omap2plus()) { 531 - omap_enable_channel_irq(free_ch); 532 - omap2_enable_irq_lch(free_ch); 533 669 } 534 670 535 671 *dma_ch_out = free_ch; ··· 543 689 return; 544 690 } 545 691 546 - /* Disable interrupt for logical channel */ 547 - if (dma_omap2plus()) 548 - omap2_disable_irq_lch(lch); 549 - 550 692 /* Disable all DMA interrupts for the channel. */ 551 693 omap_disable_channel_irq(lch); 552 694 553 695 /* Make sure the DMA transfer is stopped. */ 554 696 p->dma_write(0, CCR, lch); 555 - 556 - /* Clear registers */ 557 - if (dma_omap2plus()) 558 - omap_clear_dma(lch); 559 697 560 698 spin_lock_irqsave(&dma_chan_lock, flags); 561 699 dma_chan[lch].dev_id = -1; ··· 556 710 spin_unlock_irqrestore(&dma_chan_lock, flags); 557 711 } 558 712 EXPORT_SYMBOL(omap_free_dma); 559 - 560 - /** 561 - * @brief omap_dma_set_global_params : Set global priority settings for dma 562 - * 563 - * @param arb_rate 564 - * @param max_fifo_depth 565 - * @param tparams - Number of threads to reserve : DMA_THREAD_RESERVE_NORM 566 - * DMA_THREAD_RESERVE_ONET 567 - * DMA_THREAD_RESERVE_TWOT 568 - * DMA_THREAD_RESERVE_THREET 569 - */ 570 - void 571 - omap_dma_set_global_params(int arb_rate, int max_fifo_depth, int tparams) 572 - { 573 - u32 reg; 574 - 575 - if (dma_omap1()) { 576 - printk(KERN_ERR "FIXME: no %s on 15xx/16xx\n", __func__); 577 - return; 578 - } 579 - 580 - if (max_fifo_depth == 0) 581 - max_fifo_depth = 1; 582 - if (arb_rate == 0) 583 - arb_rate = 1; 584 - 585 - reg = 0xff & max_fifo_depth; 586 - reg |= (0x3 & tparams) << 12; 587 - reg |= (arb_rate & 0xff) << 16; 588 - 589 - p->dma_write(reg, GCR, 0); 590 - } 591 - EXPORT_SYMBOL(omap_dma_set_global_params); 592 - 593 - /** 594 - * @brief omap_dma_set_prio_lch : Set channel wise priority settings 595 - * 596 - * @param lch 597 - * @param read_prio - Read priority 598 - * @param write_prio - Write priority 599 - * Both of the above can be set with one of the following values : 600 - * DMA_CH_PRIO_HIGH/DMA_CH_PRIO_LOW 601 - */ 602 - static int 603 - omap_dma_set_prio_lch(int lch, unsigned char read_prio, 604 - unsigned char write_prio) 605 - { 606 - u32 l; 607 - 608 - if (unlikely((lch < 0 || lch >= dma_lch_count))) { 609 - printk(KERN_ERR "Invalid channel id\n"); 610 - return -EINVAL; 611 - } 612 - l = p->dma_read(CCR, lch); 613 - l &= ~((1 << 6) | (1 << 26)); 614 - if (d->dev_caps & IS_RW_PRIORITY) 615 - l |= ((read_prio & 0x1) << 6) | ((write_prio & 0x1) << 26); 616 - else 617 - l |= ((read_prio & 0x1) << 6); 618 - 619 - p->dma_write(l, CCR, lch); 620 - 621 - return 0; 622 - } 623 - 624 713 625 714 /* 626 715 * Clears any DMA state so the DMA engine is ready to restart with new buffers ··· 707 926 * Allows changing the DMA callback function or data. This may be needed if 708 927 * the driver shares a single DMA channel for multiple dma triggers. 709 928 */ 710 - int omap_set_dma_callback(int lch, 711 - void (*callback)(int lch, u16 ch_status, void *data), 712 - void *data) 713 - { 714 - unsigned long flags; 715 - 716 - if (lch < 0) 717 - return -ENODEV; 718 - 719 - spin_lock_irqsave(&dma_chan_lock, flags); 720 - if (dma_chan[lch].dev_id == -1) { 721 - printk(KERN_ERR "DMA callback for not set for free channel\n"); 722 - spin_unlock_irqrestore(&dma_chan_lock, flags); 723 - return -EINVAL; 724 - } 725 - dma_chan[lch].callback = callback; 726 - dma_chan[lch].data = data; 727 - spin_unlock_irqrestore(&dma_chan_lock, flags); 728 - 729 - return 0; 730 - } 731 - EXPORT_SYMBOL(omap_set_dma_callback); 732 - 733 929 /* 734 930 * Returns current physical source address for the given DMA channel. 735 931 * If the channel is running the caller must disable interrupts prior calling ··· 806 1048 return 0; 807 1049 } 808 1050 809 - /* 810 - * lch_queue DMA will start right after lch_head one is finished. 811 - * For this DMA link to start, you still need to start (see omap_start_dma) 812 - * the first one. That will fire up the entire queue. 813 - */ 814 - void omap_dma_link_lch(int lch_head, int lch_queue) 815 - { 816 - if (omap_dma_in_1510_mode()) { 817 - if (lch_head == lch_queue) { 818 - p->dma_write(p->dma_read(CCR, lch_head) | (3 << 8), 819 - CCR, lch_head); 820 - return; 821 - } 822 - printk(KERN_ERR "DMA linking is not supported in 1510 mode\n"); 823 - BUG(); 824 - return; 825 - } 826 - 827 - if ((dma_chan[lch_head].dev_id == -1) || 828 - (dma_chan[lch_queue].dev_id == -1)) { 829 - pr_err("omap_dma: trying to link non requested channels\n"); 830 - dump_stack(); 831 - } 832 - 833 - dma_chan[lch_head].next_lch = lch_queue; 834 - } 835 - EXPORT_SYMBOL(omap_dma_link_lch); 836 - 837 1051 /*----------------------------------------------------------------------------*/ 838 1052 839 1053 #ifdef CONFIG_ARCH_OMAP1 ··· 866 1136 #define omap1_dma_irq_handler NULL 867 1137 #endif 868 1138 869 - #ifdef CONFIG_ARCH_OMAP2PLUS 870 - 871 - static int omap2_dma_handle_ch(int ch) 872 - { 873 - u32 status = p->dma_read(CSR, ch); 874 - 875 - if (!status) { 876 - if (printk_ratelimit()) 877 - pr_warn("Spurious DMA IRQ for lch %d\n", ch); 878 - p->dma_write(1 << ch, IRQSTATUS_L0, ch); 879 - return 0; 880 - } 881 - if (unlikely(dma_chan[ch].dev_id == -1)) { 882 - if (printk_ratelimit()) 883 - pr_warn("IRQ %04x for non-allocated DMA channel %d\n", 884 - status, ch); 885 - return 0; 886 - } 887 - if (unlikely(status & OMAP_DMA_DROP_IRQ)) 888 - pr_info("DMA synchronization event drop occurred with device %d\n", 889 - dma_chan[ch].dev_id); 890 - if (unlikely(status & OMAP2_DMA_TRANS_ERR_IRQ)) { 891 - printk(KERN_INFO "DMA transaction error with device %d\n", 892 - dma_chan[ch].dev_id); 893 - if (IS_DMA_ERRATA(DMA_ERRATA_i378)) { 894 - u32 ccr; 895 - 896 - ccr = p->dma_read(CCR, ch); 897 - ccr &= ~OMAP_DMA_CCR_EN; 898 - p->dma_write(ccr, CCR, ch); 899 - dma_chan[ch].flags &= ~OMAP_DMA_ACTIVE; 900 - } 901 - } 902 - if (unlikely(status & OMAP2_DMA_SECURE_ERR_IRQ)) 903 - printk(KERN_INFO "DMA secure error with device %d\n", 904 - dma_chan[ch].dev_id); 905 - if (unlikely(status & OMAP2_DMA_MISALIGNED_ERR_IRQ)) 906 - printk(KERN_INFO "DMA misaligned error with device %d\n", 907 - dma_chan[ch].dev_id); 908 - 909 - p->dma_write(status, CSR, ch); 910 - p->dma_write(1 << ch, IRQSTATUS_L0, ch); 911 - /* read back the register to flush the write */ 912 - p->dma_read(IRQSTATUS_L0, ch); 913 - 914 - /* If the ch is not chained then chain_id will be -1 */ 915 - if (dma_chan[ch].chain_id != -1) { 916 - int chain_id = dma_chan[ch].chain_id; 917 - dma_chan[ch].state = DMA_CH_NOTSTARTED; 918 - if (p->dma_read(CLNK_CTRL, ch) & (1 << 15)) 919 - dma_chan[dma_chan[ch].next_linked_ch].state = 920 - DMA_CH_STARTED; 921 - if (dma_linked_lch[chain_id].chain_mode == 922 - OMAP_DMA_DYNAMIC_CHAIN) 923 - disable_lnk(ch); 924 - 925 - if (!OMAP_DMA_CHAIN_QEMPTY(chain_id)) 926 - OMAP_DMA_CHAIN_INCQHEAD(chain_id); 927 - 928 - status = p->dma_read(CSR, ch); 929 - p->dma_write(status, CSR, ch); 930 - } 931 - 932 - if (likely(dma_chan[ch].callback != NULL)) 933 - dma_chan[ch].callback(ch, status, dma_chan[ch].data); 934 - 935 - return 0; 936 - } 937 - 938 - /* STATUS register count is from 1-32 while our is 0-31 */ 939 - static irqreturn_t omap2_dma_irq_handler(int irq, void *dev_id) 940 - { 941 - u32 val, enable_reg; 942 - int i; 943 - 944 - val = p->dma_read(IRQSTATUS_L0, 0); 945 - if (val == 0) { 946 - if (printk_ratelimit()) 947 - printk(KERN_WARNING "Spurious DMA IRQ\n"); 948 - return IRQ_HANDLED; 949 - } 950 - enable_reg = p->dma_read(IRQENABLE_L0, 0); 951 - val &= enable_reg; /* Dispatch only relevant interrupts */ 952 - for (i = 0; i < dma_lch_count && val != 0; i++) { 953 - if (val & 1) 954 - omap2_dma_handle_ch(i); 955 - val >>= 1; 956 - } 957 - 958 - return IRQ_HANDLED; 959 - } 960 - 961 - static struct irqaction omap24xx_dma_irq = { 962 - .name = "DMA", 963 - .handler = omap2_dma_irq_handler, 964 - }; 965 - 966 - #else 967 - static struct irqaction omap24xx_dma_irq; 968 - #endif 969 - 970 - /*----------------------------------------------------------------------------*/ 971 - 972 - /* 973 - * Note that we are currently using only IRQENABLE_L0 and L1. 974 - * As the DSP may be using IRQENABLE_L2 and L3, let's not 975 - * touch those for now. 976 - */ 977 - void omap_dma_global_context_save(void) 978 - { 979 - omap_dma_global_context.dma_irqenable_l0 = 980 - p->dma_read(IRQENABLE_L0, 0); 981 - omap_dma_global_context.dma_irqenable_l1 = 982 - p->dma_read(IRQENABLE_L1, 0); 983 - omap_dma_global_context.dma_ocp_sysconfig = 984 - p->dma_read(OCP_SYSCONFIG, 0); 985 - omap_dma_global_context.dma_gcr = p->dma_read(GCR, 0); 986 - } 987 - 988 - void omap_dma_global_context_restore(void) 989 - { 990 - int ch; 991 - 992 - p->dma_write(omap_dma_global_context.dma_gcr, GCR, 0); 993 - p->dma_write(omap_dma_global_context.dma_ocp_sysconfig, 994 - OCP_SYSCONFIG, 0); 995 - p->dma_write(omap_dma_global_context.dma_irqenable_l0, 996 - IRQENABLE_L0, 0); 997 - p->dma_write(omap_dma_global_context.dma_irqenable_l1, 998 - IRQENABLE_L1, 0); 999 - 1000 - if (IS_DMA_ERRATA(DMA_ROMCODE_BUG)) 1001 - p->dma_write(0x3 , IRQSTATUS_L0, 0); 1002 - 1003 - for (ch = 0; ch < dma_chan_count; ch++) 1004 - if (dma_chan[ch].dev_id != -1) 1005 - omap_clear_dma(ch); 1006 - } 1007 - 1008 1139 struct omap_system_dma_plat_info *omap_get_plat_info(void) 1009 1140 { 1010 1141 return p; ··· 877 1286 int ch, ret = 0; 878 1287 int dma_irq; 879 1288 char irq_name[4]; 880 - int irq_rel; 881 1289 882 1290 p = pdev->dev.platform_data; 883 1291 if (!p) { ··· 902 1312 if (!dma_chan) 903 1313 return -ENOMEM; 904 1314 905 - if (dma_omap2plus()) { 906 - dma_linked_lch = kcalloc(dma_lch_count, 907 - sizeof(*dma_linked_lch), 908 - GFP_KERNEL); 909 - if (!dma_linked_lch) { 910 - ret = -ENOMEM; 911 - goto exit_dma_lch_fail; 912 - } 913 - } 914 - 915 1315 spin_lock_init(&dma_chan_lock); 916 1316 for (ch = 0; ch < dma_chan_count; ch++) { 917 1317 omap_clear_dma(ch); 918 - if (dma_omap2plus()) 919 - omap2_disable_irq_lch(ch); 920 1318 921 1319 dma_chan[ch].dev_id = -1; 922 1320 dma_chan[ch].next_lch = -1; ··· 937 1359 } 938 1360 } 939 1361 940 - if (d->dev_caps & IS_RW_PRIORITY) 941 - omap_dma_set_global_params(DMA_DEFAULT_ARB_RATE, 942 - DMA_DEFAULT_FIFO_DEPTH, 0); 943 - 944 - if (dma_omap2plus() && !(d->dev_caps & DMA_ENGINE_HANDLE_IRQ)) { 945 - strcpy(irq_name, "0"); 946 - dma_irq = platform_get_irq_byname(pdev, irq_name); 947 - if (dma_irq < 0) { 948 - dev_err(&pdev->dev, "failed: request IRQ %d", dma_irq); 949 - ret = dma_irq; 950 - goto exit_dma_lch_fail; 951 - } 952 - ret = setup_irq(dma_irq, &omap24xx_dma_irq); 953 - if (ret) { 954 - dev_err(&pdev->dev, "set_up failed for IRQ %d for DMA (error %d)\n", 955 - dma_irq, ret); 956 - goto exit_dma_lch_fail; 957 - } 958 - } 959 - 960 1362 /* reserve dma channels 0 and 1 in high security devices on 34xx */ 961 1363 if (d->dev_caps & HS_CHANNELS_RESERVED) { 962 1364 pr_info("Reserving DMA channels 0 and 1 for HS ROM code\n"); ··· 947 1389 return 0; 948 1390 949 1391 exit_dma_irq_fail: 950 - dev_err(&pdev->dev, "unable to request IRQ %d for DMA (error %d)\n", 951 - dma_irq, ret); 952 - for (irq_rel = 0; irq_rel < ch; irq_rel++) { 953 - dma_irq = platform_get_irq(pdev, irq_rel); 954 - free_irq(dma_irq, (void *)(irq_rel + 1)); 955 - } 956 - 957 - exit_dma_lch_fail: 958 1392 return ret; 959 1393 } 960 1394 961 1395 static int omap_system_dma_remove(struct platform_device *pdev) 962 1396 { 963 - int dma_irq; 1397 + int dma_irq, irq_rel = 0; 964 1398 965 - if (dma_omap2plus()) { 966 - char irq_name[4]; 967 - strcpy(irq_name, "0"); 968 - dma_irq = platform_get_irq_byname(pdev, irq_name); 969 - if (dma_irq >= 0) 970 - remove_irq(dma_irq, &omap24xx_dma_irq); 971 - } else { 972 - int irq_rel = 0; 973 - for ( ; irq_rel < dma_chan_count; irq_rel++) { 974 - dma_irq = platform_get_irq(pdev, irq_rel); 975 - free_irq(dma_irq, (void *)(irq_rel + 1)); 976 - } 1399 + if (dma_omap2plus()) 1400 + return 0; 1401 + 1402 + for ( ; irq_rel < dma_chan_count; irq_rel++) { 1403 + dma_irq = platform_get_irq(pdev, irq_rel); 1404 + free_irq(dma_irq, (void *)(irq_rel + 1)); 977 1405 } 1406 + 978 1407 return 0; 979 1408 } 980 1409
+14 -3
drivers/bus/ti-sysc.c
··· 343 343 return -EINVAL; 344 344 } 345 345 346 + /* Always add a slot for main clocks fck and ick even if unused */ 347 + if (!nr_fck) 348 + ddata->nr_clocks++; 349 + if (!nr_ick) 350 + ddata->nr_clocks++; 351 + 346 352 ddata->clocks = devm_kcalloc(ddata->dev, 347 353 ddata->nr_clocks, sizeof(*ddata->clocks), 348 354 GFP_KERNEL); ··· 427 421 struct clk *clock; 428 422 int i, error; 429 423 430 - if (!ddata->clocks) 424 + if (!ddata->clocks || ddata->nr_clocks < SYSC_OPTFCK0 + 1) 431 425 return 0; 432 426 433 427 for (i = SYSC_OPTFCK0; i < SYSC_MAX_CLOCKS; i++) { ··· 461 455 struct clk *clock; 462 456 int i; 463 457 464 - if (!ddata->clocks) 458 + if (!ddata->clocks || ddata->nr_clocks < SYSC_OPTFCK0 + 1) 465 459 return; 466 460 467 461 for (i = SYSC_OPTFCK0; i < SYSC_MAX_CLOCKS; i++) { ··· 987 981 return ret; 988 982 } 989 983 990 - if (ddata->cfg.quirks & SYSC_QUIRK_SWSUP_MSTANDBY) 984 + if (ddata->cfg.quirks & (SYSC_QUIRK_SWSUP_MSTANDBY) || 985 + ddata->cfg.quirks & (SYSC_QUIRK_FORCE_MSTANDBY)) 991 986 best_mode = SYSC_IDLE_FORCE; 992 987 993 988 reg &= ~(SYSC_IDLE_MASK << regbits->midle_shift); ··· 1589 1582 sysc_val = sysc_read_sysconfig(ddata); 1590 1583 sysc_val |= sysc_mask; 1591 1584 sysc_write(ddata, sysc_offset, sysc_val); 1585 + 1586 + if (ddata->cfg.srst_udelay) 1587 + usleep_range(ddata->cfg.srst_udelay, 1588 + ddata->cfg.srst_udelay * 2); 1592 1589 1593 1590 if (ddata->clk_enable_quirk) 1594 1591 ddata->clk_enable_quirk(ddata);
+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 },
+28
drivers/clk/ti/clk-54xx.c
··· 35 35 { 0 }, 36 36 }; 37 37 38 + static const char * const omap5_aess_fclk_parents[] __initconst = { 39 + "abe_clk", 40 + NULL, 41 + }; 42 + 43 + static const struct omap_clkctrl_div_data omap5_aess_fclk_data __initconst = { 44 + .max_div = 2, 45 + }; 46 + 47 + static const struct omap_clkctrl_bit_data omap5_aess_bit_data[] __initconst = { 48 + { 24, TI_CLK_DIVIDER, omap5_aess_fclk_parents, &omap5_aess_fclk_data }, 49 + { 0 }, 50 + }; 51 + 38 52 static const char * const omap5_dmic_gfclk_parents[] __initconst = { 39 53 "abe_cm:clk:0018:26", 40 54 "pad_clks_ck", ··· 136 122 137 123 static const struct omap_clkctrl_reg_data omap5_abe_clkctrl_regs[] __initconst = { 138 124 { OMAP5_L4_ABE_CLKCTRL, NULL, 0, "abe_iclk" }, 125 + { OMAP5_AESS_CLKCTRL, omap5_aess_bit_data, CLKF_SW_SUP, "abe_cm:clk:0008:24" }, 139 126 { OMAP5_MCPDM_CLKCTRL, NULL, CLKF_SW_SUP, "pad_clks_ck" }, 140 127 { OMAP5_DMIC_CLKCTRL, omap5_dmic_bit_data, CLKF_SW_SUP, "abe_cm:clk:0018:24" }, 141 128 { OMAP5_MCBSP1_CLKCTRL, omap5_mcbsp1_bit_data, CLKF_SW_SUP, "abe_cm:clk:0028:24" }, ··· 298 283 { OMAP5_I2C5_CLKCTRL, NULL, CLKF_SW_SUP, "func_96m_fclk" }, 299 284 { OMAP5_UART5_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 300 285 { OMAP5_UART6_CLKCTRL, NULL, CLKF_SW_SUP, "func_48m_fclk" }, 286 + { 0 }, 287 + }; 288 + 289 + static const struct 290 + omap_clkctrl_reg_data omap5_l4_secure_clkctrl_regs[] __initconst = { 291 + { OMAP5_AES1_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 292 + { OMAP5_AES2_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 293 + { OMAP5_DES3DES_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 294 + { OMAP5_FPKA_CLKCTRL, NULL, CLKF_SW_SUP, "" }, 295 + { OMAP5_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 296 + { OMAP5_SHA2MD5_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 297 + { OMAP5_DMA_CRYPTO_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 301 298 { 0 }, 302 299 }; 303 300 ··· 535 508 { 0x4a008d20, omap5_l4cfg_clkctrl_regs }, 536 509 { 0x4a008e20, omap5_l3instr_clkctrl_regs }, 537 510 { 0x4a009020, omap5_l4per_clkctrl_regs }, 511 + { 0x4a0091a0, omap5_l4_secure_clkctrl_regs }, 538 512 { 0x4a009220, omap5_iva_clkctrl_regs }, 539 513 { 0x4a009420, omap5_dss_clkctrl_regs }, 540 514 { 0x4a009520, omap5_gpu_clkctrl_regs },
+61 -1
drivers/clk/ti/clk-7xx.c
··· 146 146 { 0 }, 147 147 }; 148 148 149 + static const char * const dra7_cam_gfclk_mux_parents[] __initconst = { 150 + "l3_iclk_div", 151 + "core_iss_main_clk", 152 + NULL, 153 + }; 154 + 155 + static const struct omap_clkctrl_bit_data dra7_cam_bit_data[] __initconst = { 156 + { 24, TI_CLK_MUX, dra7_cam_gfclk_mux_parents, NULL }, 157 + { 0 }, 158 + }; 159 + 160 + static const struct omap_clkctrl_reg_data dra7_cam_clkctrl_regs[] __initconst = { 161 + { DRA7_CAM_VIP1_CLKCTRL, dra7_cam_bit_data, CLKF_HW_SUP, "l3_iclk_div" }, 162 + { DRA7_CAM_VIP2_CLKCTRL, dra7_cam_bit_data, CLKF_HW_SUP, "l3_iclk_div" }, 163 + { DRA7_CAM_VIP3_CLKCTRL, dra7_cam_bit_data, CLKF_HW_SUP, "l3_iclk_div" }, 164 + { 0 }, 165 + }; 166 + 167 + static const struct omap_clkctrl_reg_data dra7_vpe_clkctrl_regs[] __initconst = { 168 + { DRA7_VPE_VPE_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h23x2_ck" }, 169 + { 0 }, 170 + }; 171 + 149 172 static const struct omap_clkctrl_reg_data dra7_coreaon_clkctrl_regs[] __initconst = { 150 173 { DRA7_COREAON_SMARTREFLEX_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "wkupaon_iclk_mux" }, 151 174 { DRA7_COREAON_SMARTREFLEX_CORE_CLKCTRL, NULL, CLKF_SW_SUP, "wkupaon_iclk_mux" }, ··· 295 272 static const struct omap_clkctrl_reg_data dra7_dss_clkctrl_regs[] __initconst = { 296 273 { DRA7_DSS_DSS_CORE_CLKCTRL, dra7_dss_core_bit_data, CLKF_SW_SUP, "dss-clkctrl:0000:8" }, 297 274 { DRA7_DSS_BB2D_CLKCTRL, NULL, CLKF_SW_SUP, "dpll_core_h24x2_ck" }, 275 + { 0 }, 276 + }; 277 + 278 + static const char * const dra7_gpu_core_mux_parents[] __initconst = { 279 + "dpll_core_h14x2_ck", 280 + "dpll_per_h14x2_ck", 281 + "dpll_gpu_m2_ck", 282 + NULL, 283 + }; 284 + 285 + static const char * const dra7_gpu_hyd_mux_parents[] __initconst = { 286 + "dpll_core_h14x2_ck", 287 + "dpll_per_h14x2_ck", 288 + "dpll_gpu_m2_ck", 289 + NULL, 290 + }; 291 + 292 + static const char * const dra7_gpu_sys_clk_parents[] __initconst = { 293 + "sys_clkin", 294 + NULL, 295 + }; 296 + 297 + static const struct omap_clkctrl_div_data dra7_gpu_sys_clk_data __initconst = { 298 + .max_div = 2, 299 + }; 300 + 301 + static const struct omap_clkctrl_bit_data dra7_gpu_core_bit_data[] __initconst = { 302 + { 24, TI_CLK_MUX, dra7_gpu_core_mux_parents, NULL, }, 303 + { 26, TI_CLK_MUX, dra7_gpu_hyd_mux_parents, NULL, }, 304 + { 0 }, 305 + }; 306 + 307 + static const struct omap_clkctrl_reg_data dra7_gpu_clkctrl_regs[] __initconst = { 308 + { DRA7_GPU_CLKCTRL, dra7_gpu_core_bit_data, CLKF_SW_SUP, "gpu_cm:clk:0000:24", }, 298 309 { 0 }, 299 310 }; 300 311 ··· 462 405 }; 463 406 464 407 static const struct omap_clkctrl_reg_data dra7_gmac_clkctrl_regs[] __initconst = { 465 - { DRA7_GMAC_GMAC_CLKCTRL, dra7_gmac_bit_data, CLKF_SW_SUP, "dpll_gmac_ck" }, 408 + { DRA7_GMAC_GMAC_CLKCTRL, dra7_gmac_bit_data, CLKF_SW_SUP, "gmac_main_clk" }, 466 409 { 0 }, 467 410 }; 468 411 ··· 826 769 { 0x4a005550, dra7_ipu_clkctrl_regs }, 827 770 { 0x4a005620, dra7_dsp2_clkctrl_regs }, 828 771 { 0x4a005720, dra7_rtc_clkctrl_regs }, 772 + { 0x4a005760, dra7_vpe_clkctrl_regs }, 829 773 { 0x4a008620, dra7_coreaon_clkctrl_regs }, 830 774 { 0x4a008720, dra7_l3main1_clkctrl_regs }, 831 775 { 0x4a008920, dra7_ipu2_clkctrl_regs }, ··· 835 777 { 0x4a008c00, dra7_atl_clkctrl_regs }, 836 778 { 0x4a008d20, dra7_l4cfg_clkctrl_regs }, 837 779 { 0x4a008e20, dra7_l3instr_clkctrl_regs }, 780 + { 0x4a009020, dra7_cam_clkctrl_regs }, 838 781 { 0x4a009120, dra7_dss_clkctrl_regs }, 782 + { 0x4a009220, dra7_gpu_clkctrl_regs }, 839 783 { 0x4a009320, dra7_l3init_clkctrl_regs }, 840 784 { 0x4a0093b0, dra7_pcie_clkctrl_regs }, 841 785 { 0x4a0093d0, dra7_gmac_clkctrl_regs },
+3 -1
drivers/clk/ti/clk.c
··· 171 171 node = of_find_node_by_name(NULL, buf); 172 172 if (num_args && compat_mode) { 173 173 parent = node; 174 - node = of_get_child_by_name(parent, "clk"); 174 + node = of_get_child_by_name(parent, "clock"); 175 + if (!node) 176 + node = of_get_child_by_name(parent, "clk"); 175 177 of_node_put(parent); 176 178 } 177 179
+85 -11
drivers/clk/ti/clkctrl.c
··· 440 440 of_clk_add_hw_provider(np, _ti_omap4_clkctrl_xlate, data); 441 441 } 442 442 443 + /* Get clock name based on compatible string for clkctrl */ 444 + static char * __init clkctrl_get_name(struct device_node *np) 445 + { 446 + struct property *prop; 447 + const int prefix_len = 11; 448 + const char *compat; 449 + char *name; 450 + 451 + of_property_for_each_string(np, "compatible", prop, compat) { 452 + if (!strncmp("ti,clkctrl-", compat, prefix_len)) { 453 + /* Two letter minimum name length for l3, l4 etc */ 454 + if (strnlen(compat + prefix_len, 16) < 2) 455 + continue; 456 + name = kasprintf(GFP_KERNEL, "%s", compat + prefix_len); 457 + if (!name) 458 + continue; 459 + strreplace(name, '-', '_'); 460 + 461 + return name; 462 + } 463 + } 464 + of_node_put(np); 465 + 466 + return NULL; 467 + } 468 + 469 + /* Get clkctrl clock base name based on clkctrl_name or dts node */ 470 + static const char * __init clkctrl_get_clock_name(struct device_node *np, 471 + const char *clkctrl_name, 472 + int offset, int index, 473 + bool legacy_naming) 474 + { 475 + char *clock_name; 476 + 477 + /* l4per-clkctrl:1234:0 style naming based on clkctrl_name */ 478 + if (clkctrl_name && !legacy_naming) { 479 + clock_name = kasprintf(GFP_KERNEL, "%s-clkctrl:%04x:%d", 480 + clkctrl_name, offset, index); 481 + strreplace(clock_name, '_', '-'); 482 + 483 + return clock_name; 484 + } 485 + 486 + /* l4per:1234:0 old style naming based on clkctrl_name */ 487 + if (clkctrl_name) 488 + return kasprintf(GFP_KERNEL, "%s_cm:clk:%04x:%d", 489 + clkctrl_name, offset, index); 490 + 491 + /* l4per_cm:1234:0 old style naming based on parent node name */ 492 + if (legacy_naming) 493 + return kasprintf(GFP_KERNEL, "%pOFn:clk:%04x:%d", 494 + np->parent, offset, index); 495 + 496 + /* l4per-clkctrl:1234:0 style naming based on node name */ 497 + return kasprintf(GFP_KERNEL, "%pOFn:%04x:%d", np, offset, index); 498 + } 499 + 443 500 static void __init _ti_omap4_clkctrl_setup(struct device_node *node) 444 501 { 445 502 struct omap_clkctrl_provider *provider; ··· 505 448 struct clk_init_data init = { NULL }; 506 449 struct clk_hw_omap *hw; 507 450 struct clk *clk; 508 - struct omap_clkctrl_clk *clkctrl_clk; 451 + struct omap_clkctrl_clk *clkctrl_clk = NULL; 509 452 const __be32 *addrp; 453 + bool legacy_naming; 454 + char *clkctrl_name; 510 455 u32 addr; 511 456 int ret; 512 457 char *c; ··· 596 537 597 538 provider->base = of_iomap(node, 0); 598 539 599 - if (ti_clk_get_features()->flags & TI_CLK_CLKCTRL_COMPAT) { 540 + legacy_naming = ti_clk_get_features()->flags & TI_CLK_CLKCTRL_COMPAT; 541 + clkctrl_name = clkctrl_get_name(node); 542 + if (clkctrl_name) { 543 + provider->clkdm_name = kasprintf(GFP_KERNEL, 544 + "%s_clkdm", clkctrl_name); 545 + goto clkdm_found; 546 + } 547 + 548 + /* 549 + * The code below can be removed when all clkctrl nodes use domain 550 + * specific compatible proprerty and standard clock node naming 551 + */ 552 + if (legacy_naming) { 600 553 provider->clkdm_name = kasprintf(GFP_KERNEL, "%pOFnxxx", node->parent); 601 554 if (!provider->clkdm_name) { 602 555 kfree(provider); ··· 644 573 *c = '_'; 645 574 c++; 646 575 } 647 - 576 + clkdm_found: 648 577 INIT_LIST_HEAD(&provider->clocks); 649 578 650 579 /* Generate clocks */ ··· 683 612 init.flags = 0; 684 613 if (reg_data->flags & CLKF_SET_RATE_PARENT) 685 614 init.flags |= CLK_SET_RATE_PARENT; 686 - if (ti_clk_get_features()->flags & TI_CLK_CLKCTRL_COMPAT) 687 - init.name = kasprintf(GFP_KERNEL, "%pOFn:%pOFn:%04x:%d", 688 - node->parent, node, 689 - reg_data->offset, 0); 690 - else 691 - init.name = kasprintf(GFP_KERNEL, "%pOFn:%04x:%d", 692 - node, reg_data->offset, 0); 615 + 616 + init.name = clkctrl_get_clock_name(node, clkctrl_name, 617 + reg_data->offset, 0, 618 + legacy_naming); 619 + if (!init.name) 620 + goto cleanup; 621 + 693 622 clkctrl_clk = kzalloc(sizeof(*clkctrl_clk), GFP_KERNEL); 694 - if (!init.name || !clkctrl_clk) 623 + if (!clkctrl_clk) 695 624 goto cleanup; 696 625 697 626 init.ops = &omap4_clkctrl_clk_ops; ··· 713 642 if (ret == -EPROBE_DEFER) 714 643 ti_clk_retry_init(node, provider, _clkctrl_add_provider); 715 644 645 + kfree(clkctrl_name); 646 + 716 647 return; 717 648 718 649 cleanup: 719 650 kfree(hw); 720 651 kfree(init.name); 652 + kfree(clkctrl_name); 721 653 kfree(clkctrl_clk); 722 654 } 723 655 CLK_OF_DECLARE(ti_omap4_clkctrl_clock, "ti,clkctrl",
+270 -18
drivers/dma/ti/omap-dma.c
··· 2 2 /* 3 3 * OMAP DMAengine support 4 4 */ 5 + #include <linux/cpu_pm.h> 5 6 #include <linux/delay.h> 6 7 #include <linux/dmaengine.h> 7 8 #include <linux/dma-mapping.h> ··· 24 23 #define OMAP_SDMA_REQUESTS 127 25 24 #define OMAP_SDMA_CHANNELS 32 26 25 26 + struct omap_dma_config { 27 + int lch_end; 28 + unsigned int rw_priority:1; 29 + unsigned int needs_busy_check:1; 30 + unsigned int may_lose_context:1; 31 + unsigned int needs_lch_clear:1; 32 + }; 33 + 34 + struct omap_dma_context { 35 + u32 irqenable_l0; 36 + u32 irqenable_l1; 37 + u32 ocp_sysconfig; 38 + u32 gcr; 39 + }; 40 + 27 41 struct omap_dmadev { 28 42 struct dma_device ddev; 29 43 spinlock_t lock; 30 44 void __iomem *base; 31 45 const struct omap_dma_reg *reg_map; 32 46 struct omap_system_dma_plat_info *plat; 47 + const struct omap_dma_config *cfg; 48 + struct notifier_block nb; 49 + struct omap_dma_context context; 50 + int lch_count; 51 + DECLARE_BITMAP(lch_bitmap, OMAP_SDMA_CHANNELS); 52 + struct mutex lch_lock; /* for assigning logical channels */ 33 53 bool legacy; 34 54 bool ll123_supported; 35 55 struct dma_pool *desc_pool; ··· 398 376 return val; 399 377 } 400 378 379 + static void omap_dma_clear_lch(struct omap_dmadev *od, int lch) 380 + { 381 + struct omap_chan *c; 382 + int i; 383 + 384 + c = od->lch_map[lch]; 385 + if (!c) 386 + return; 387 + 388 + for (i = CSDP; i <= od->cfg->lch_end; i++) 389 + omap_dma_chan_write(c, i, 0); 390 + } 391 + 401 392 static void omap_dma_assign(struct omap_dmadev *od, struct omap_chan *c, 402 393 unsigned lch) 403 394 { ··· 668 633 return IRQ_HANDLED; 669 634 } 670 635 636 + static int omap_dma_get_lch(struct omap_dmadev *od, int *lch) 637 + { 638 + int channel; 639 + 640 + mutex_lock(&od->lch_lock); 641 + channel = find_first_zero_bit(od->lch_bitmap, od->lch_count); 642 + if (channel >= od->lch_count) 643 + goto out_busy; 644 + set_bit(channel, od->lch_bitmap); 645 + mutex_unlock(&od->lch_lock); 646 + 647 + omap_dma_clear_lch(od, channel); 648 + *lch = channel; 649 + 650 + return 0; 651 + 652 + out_busy: 653 + mutex_unlock(&od->lch_lock); 654 + *lch = -EINVAL; 655 + 656 + return -EBUSY; 657 + } 658 + 659 + static void omap_dma_put_lch(struct omap_dmadev *od, int lch) 660 + { 661 + omap_dma_clear_lch(od, lch); 662 + mutex_lock(&od->lch_lock); 663 + clear_bit(lch, od->lch_bitmap); 664 + mutex_unlock(&od->lch_lock); 665 + } 666 + 671 667 static int omap_dma_alloc_chan_resources(struct dma_chan *chan) 672 668 { 673 669 struct omap_dmadev *od = to_omap_dma_dev(chan->device); ··· 710 644 ret = omap_request_dma(c->dma_sig, "DMA engine", 711 645 omap_dma_callback, c, &c->dma_ch); 712 646 } else { 713 - ret = omap_request_dma(c->dma_sig, "DMA engine", NULL, NULL, 714 - &c->dma_ch); 647 + ret = omap_dma_get_lch(od, &c->dma_ch); 715 648 } 716 649 717 650 dev_dbg(dev, "allocating channel %u for %u\n", c->dma_ch, c->dma_sig); ··· 767 702 c->channel_base = NULL; 768 703 od->lch_map[c->dma_ch] = NULL; 769 704 vchan_free_chan_resources(&c->vc); 770 - omap_free_dma(c->dma_ch); 705 + 706 + if (od->legacy) 707 + omap_free_dma(c->dma_ch); 708 + else 709 + omap_dma_put_lch(od, c->dma_ch); 771 710 772 711 dev_dbg(od->ddev.dev, "freeing channel %u used for %u\n", c->dma_ch, 773 712 c->dma_sig); ··· 1522 1453 } 1523 1454 } 1524 1455 1456 + /* Currently only used for omap2. For omap1, also a check for lcd_dma is needed */ 1457 + static int omap_dma_busy_notifier(struct notifier_block *nb, 1458 + unsigned long cmd, void *v) 1459 + { 1460 + struct omap_dmadev *od; 1461 + struct omap_chan *c; 1462 + int lch = -1; 1463 + 1464 + od = container_of(nb, struct omap_dmadev, nb); 1465 + 1466 + switch (cmd) { 1467 + case CPU_CLUSTER_PM_ENTER: 1468 + while (1) { 1469 + lch = find_next_bit(od->lch_bitmap, od->lch_count, 1470 + lch + 1); 1471 + if (lch >= od->lch_count) 1472 + break; 1473 + c = od->lch_map[lch]; 1474 + if (!c) 1475 + continue; 1476 + if (omap_dma_chan_read(c, CCR) & CCR_ENABLE) 1477 + return NOTIFY_BAD; 1478 + } 1479 + break; 1480 + case CPU_CLUSTER_PM_ENTER_FAILED: 1481 + case CPU_CLUSTER_PM_EXIT: 1482 + break; 1483 + } 1484 + 1485 + return NOTIFY_OK; 1486 + } 1487 + 1488 + /* 1489 + * We are using IRQENABLE_L1, and legacy DMA code was using IRQENABLE_L0. 1490 + * As the DSP may be using IRQENABLE_L2 and L3, let's not touch those for 1491 + * now. Context save seems to be only currently needed on omap3. 1492 + */ 1493 + static void omap_dma_context_save(struct omap_dmadev *od) 1494 + { 1495 + od->context.irqenable_l0 = omap_dma_glbl_read(od, IRQENABLE_L0); 1496 + od->context.irqenable_l1 = omap_dma_glbl_read(od, IRQENABLE_L1); 1497 + od->context.ocp_sysconfig = omap_dma_glbl_read(od, OCP_SYSCONFIG); 1498 + od->context.gcr = omap_dma_glbl_read(od, GCR); 1499 + } 1500 + 1501 + static void omap_dma_context_restore(struct omap_dmadev *od) 1502 + { 1503 + int i; 1504 + 1505 + omap_dma_glbl_write(od, GCR, od->context.gcr); 1506 + omap_dma_glbl_write(od, OCP_SYSCONFIG, od->context.ocp_sysconfig); 1507 + omap_dma_glbl_write(od, IRQENABLE_L0, od->context.irqenable_l0); 1508 + omap_dma_glbl_write(od, IRQENABLE_L1, od->context.irqenable_l1); 1509 + 1510 + /* Clear IRQSTATUS_L0 as legacy DMA code is no longer doing it */ 1511 + if (od->plat->errata & DMA_ROMCODE_BUG) 1512 + omap_dma_glbl_write(od, IRQSTATUS_L0, 0); 1513 + 1514 + /* Clear dma channels */ 1515 + for (i = 0; i < od->lch_count; i++) 1516 + omap_dma_clear_lch(od, i); 1517 + } 1518 + 1519 + /* Currently only used for omap3 */ 1520 + static int omap_dma_context_notifier(struct notifier_block *nb, 1521 + unsigned long cmd, void *v) 1522 + { 1523 + struct omap_dmadev *od; 1524 + 1525 + od = container_of(nb, struct omap_dmadev, nb); 1526 + 1527 + switch (cmd) { 1528 + case CPU_CLUSTER_PM_ENTER: 1529 + omap_dma_context_save(od); 1530 + break; 1531 + case CPU_CLUSTER_PM_ENTER_FAILED: 1532 + case CPU_CLUSTER_PM_EXIT: 1533 + omap_dma_context_restore(od); 1534 + break; 1535 + } 1536 + 1537 + return NOTIFY_OK; 1538 + } 1539 + 1540 + static void omap_dma_init_gcr(struct omap_dmadev *od, int arb_rate, 1541 + int max_fifo_depth, int tparams) 1542 + { 1543 + u32 val; 1544 + 1545 + /* Set only for omap2430 and later */ 1546 + if (!od->cfg->rw_priority) 1547 + return; 1548 + 1549 + if (max_fifo_depth == 0) 1550 + max_fifo_depth = 1; 1551 + if (arb_rate == 0) 1552 + arb_rate = 1; 1553 + 1554 + val = 0xff & max_fifo_depth; 1555 + val |= (0x3 & tparams) << 12; 1556 + val |= (arb_rate & 0xff) << 16; 1557 + 1558 + omap_dma_glbl_write(od, GCR, val); 1559 + } 1560 + 1525 1561 #define OMAP_DMA_BUSWIDTHS (BIT(DMA_SLAVE_BUSWIDTH_1_BYTE) | \ 1526 1562 BIT(DMA_SLAVE_BUSWIDTH_2_BYTES) | \ 1527 1563 BIT(DMA_SLAVE_BUSWIDTH_4_BYTES)) 1528 1564 1565 + /* 1566 + * No flags currently set for default configuration as omap1 is still 1567 + * using platform data. 1568 + */ 1569 + static const struct omap_dma_config default_cfg; 1570 + 1529 1571 static int omap_dma_probe(struct platform_device *pdev) 1530 1572 { 1573 + const struct omap_dma_config *conf; 1531 1574 struct omap_dmadev *od; 1532 1575 struct resource *res; 1533 1576 int rc, i, irq; 1534 - u32 lch_count; 1577 + u32 val; 1535 1578 1536 1579 od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL); 1537 1580 if (!od) ··· 1654 1473 if (IS_ERR(od->base)) 1655 1474 return PTR_ERR(od->base); 1656 1475 1657 - od->plat = omap_get_plat_info(); 1658 - if (!od->plat) 1659 - return -EPROBE_DEFER; 1476 + conf = of_device_get_match_data(&pdev->dev); 1477 + if (conf) { 1478 + od->cfg = conf; 1479 + od->plat = dev_get_platdata(&pdev->dev); 1480 + if (!od->plat) { 1481 + dev_err(&pdev->dev, "omap_system_dma_plat_info is missing"); 1482 + return -ENODEV; 1483 + } 1484 + } else { 1485 + od->cfg = &default_cfg; 1486 + 1487 + od->plat = omap_get_plat_info(); 1488 + if (!od->plat) 1489 + return -EPROBE_DEFER; 1490 + } 1660 1491 1661 1492 od->reg_map = od->plat->reg_map; 1662 1493 ··· 1700 1507 od->ddev.max_burst = SZ_16M - 1; /* CCEN: 24bit unsigned */ 1701 1508 od->ddev.dev = &pdev->dev; 1702 1509 INIT_LIST_HEAD(&od->ddev.channels); 1510 + mutex_init(&od->lch_lock); 1703 1511 spin_lock_init(&od->lock); 1704 1512 spin_lock_init(&od->irq_lock); 1705 1513 ··· 1716 1522 1717 1523 /* Number of available logical channels */ 1718 1524 if (!pdev->dev.of_node) { 1719 - lch_count = od->plat->dma_attr->lch_count; 1720 - if (unlikely(!lch_count)) 1721 - lch_count = OMAP_SDMA_CHANNELS; 1525 + od->lch_count = od->plat->dma_attr->lch_count; 1526 + if (unlikely(!od->lch_count)) 1527 + od->lch_count = OMAP_SDMA_CHANNELS; 1722 1528 } else if (of_property_read_u32(pdev->dev.of_node, "dma-channels", 1723 - &lch_count)) { 1529 + &od->lch_count)) { 1724 1530 dev_info(&pdev->dev, 1725 1531 "Missing dma-channels property, using %u.\n", 1726 1532 OMAP_SDMA_CHANNELS); 1727 - lch_count = OMAP_SDMA_CHANNELS; 1533 + od->lch_count = OMAP_SDMA_CHANNELS; 1728 1534 } 1729 1535 1730 - od->lch_map = devm_kcalloc(&pdev->dev, lch_count, sizeof(*od->lch_map), 1536 + /* Mask of allowed logical channels */ 1537 + if (pdev->dev.of_node && !of_property_read_u32(pdev->dev.of_node, 1538 + "dma-channel-mask", 1539 + &val)) { 1540 + /* Tag channels not in mask as reserved */ 1541 + val = ~val; 1542 + bitmap_from_arr32(od->lch_bitmap, &val, od->lch_count); 1543 + } 1544 + if (od->plat->dma_attr->dev_caps & HS_CHANNELS_RESERVED) 1545 + bitmap_set(od->lch_bitmap, 0, 2); 1546 + 1547 + od->lch_map = devm_kcalloc(&pdev->dev, od->lch_count, 1548 + sizeof(*od->lch_map), 1731 1549 GFP_KERNEL); 1732 1550 if (!od->lch_map) 1733 1551 return -ENOMEM; ··· 1811 1605 } 1812 1606 } 1813 1607 1608 + omap_dma_init_gcr(od, DMA_DEFAULT_ARB_RATE, DMA_DEFAULT_FIFO_DEPTH, 0); 1609 + 1610 + if (od->cfg->needs_busy_check) { 1611 + od->nb.notifier_call = omap_dma_busy_notifier; 1612 + cpu_pm_register_notifier(&od->nb); 1613 + } else if (od->cfg->may_lose_context) { 1614 + od->nb.notifier_call = omap_dma_context_notifier; 1615 + cpu_pm_register_notifier(&od->nb); 1616 + } 1617 + 1814 1618 dev_info(&pdev->dev, "OMAP DMA engine driver%s\n", 1815 1619 od->ll123_supported ? " (LinkedList1/2/3 supported)" : ""); 1816 1620 ··· 1831 1615 { 1832 1616 struct omap_dmadev *od = platform_get_drvdata(pdev); 1833 1617 int irq; 1618 + 1619 + if (od->cfg->may_lose_context) 1620 + cpu_pm_unregister_notifier(&od->nb); 1834 1621 1835 1622 if (pdev->dev.of_node) 1836 1623 of_dma_controller_free(pdev->dev.of_node); ··· 1856 1637 return 0; 1857 1638 } 1858 1639 1640 + static const struct omap_dma_config omap2420_data = { 1641 + .lch_end = CCFN, 1642 + .rw_priority = true, 1643 + .needs_lch_clear = true, 1644 + .needs_busy_check = true, 1645 + }; 1646 + 1647 + static const struct omap_dma_config omap2430_data = { 1648 + .lch_end = CCFN, 1649 + .rw_priority = true, 1650 + .needs_lch_clear = true, 1651 + }; 1652 + 1653 + static const struct omap_dma_config omap3430_data = { 1654 + .lch_end = CCFN, 1655 + .rw_priority = true, 1656 + .needs_lch_clear = true, 1657 + .may_lose_context = true, 1658 + }; 1659 + 1660 + static const struct omap_dma_config omap3630_data = { 1661 + .lch_end = CCDN, 1662 + .rw_priority = true, 1663 + .needs_lch_clear = true, 1664 + .may_lose_context = true, 1665 + }; 1666 + 1667 + static const struct omap_dma_config omap4_data = { 1668 + .lch_end = CCDN, 1669 + .rw_priority = true, 1670 + .needs_lch_clear = true, 1671 + }; 1672 + 1859 1673 static const struct of_device_id omap_dma_match[] = { 1860 - { .compatible = "ti,omap2420-sdma", }, 1861 - { .compatible = "ti,omap2430-sdma", }, 1862 - { .compatible = "ti,omap3430-sdma", }, 1863 - { .compatible = "ti,omap3630-sdma", }, 1864 - { .compatible = "ti,omap4430-sdma", }, 1674 + { .compatible = "ti,omap2420-sdma", .data = &omap2420_data, }, 1675 + { .compatible = "ti,omap2430-sdma", .data = &omap2430_data, }, 1676 + { .compatible = "ti,omap3430-sdma", .data = &omap3430_data, }, 1677 + { .compatible = "ti,omap3630-sdma", .data = &omap3630_data, }, 1678 + { .compatible = "ti,omap4430-sdma", .data = &omap4_data, }, 1865 1679 {}, 1866 1680 }; 1867 1681 MODULE_DEVICE_TABLE(of, omap_dma_match);
include/dt-bindings/clk/ti-dra7-atl.h include/dt-bindings/clock/ti-dra7-atl.h
+23
include/dt-bindings/clock/dra7.h
··· 29 29 #define DRA7_RTC_CLKCTRL_INDEX(offset) ((offset) - DRA7_RTC_CLKCTRL_OFFSET) 30 30 #define DRA7_RTCSS_CLKCTRL DRA7_RTC_CLKCTRL_INDEX(0x44) 31 31 32 + /* vip clocks */ 33 + #define DRA7_VIP1_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) 34 + #define DRA7_VIP2_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) 35 + #define DRA7_VIP3_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) 36 + 37 + /* vpe clocks */ 38 + #define DRA7_VPE_CLKCTRL_OFFSET 0x60 39 + #define DRA7_VPE_CLKCTRL_INDEX(offset) ((offset) - DRA7_VPE_CLKCTRL_OFFSET) 40 + #define DRA7_VPE_CLKCTRL DRA7_VPE_CLKCTRL_INDEX(0x64) 41 + 32 42 /* coreaon clocks */ 33 43 #define DRA7_SMARTREFLEX_MPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) 34 44 #define DRA7_SMARTREFLEX_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x38) ··· 87 77 /* dss clocks */ 88 78 #define DRA7_DSS_CORE_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) 89 79 #define DRA7_BB2D_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) 80 + 81 + /* gpu clocks */ 82 + #define DRA7_GPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) 90 83 91 84 /* l3init clocks */ 92 85 #define DRA7_MMC1_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) ··· 204 191 205 192 /* rtc clocks */ 206 193 #define DRA7_RTC_RTCSS_CLKCTRL DRA7_CLKCTRL_INDEX(0x44) 194 + 195 + /* vip clocks */ 196 + #define DRA7_CAM_VIP1_CLKCTRL DRA7_CLKCTRL_INDEX(0x20) 197 + #define DRA7_CAM_VIP2_CLKCTRL DRA7_CLKCTRL_INDEX(0x28) 198 + #define DRA7_CAM_VIP3_CLKCTRL DRA7_CLKCTRL_INDEX(0x30) 199 + 200 + /* vpe clocks */ 201 + #define DRA7_VPE_CLKCTRL_OFFSET 0x60 202 + #define DRA7_VPE_CLKCTRL_INDEX(offset) ((offset) - DRA7_VPE_CLKCTRL_OFFSET) 203 + #define DRA7_VPE_VPE_CLKCTRL DRA7_VPE_CLKCTRL_INDEX(0x64) 207 204 208 205 /* coreaon clocks */ 209 206 #define DRA7_COREAON_SMARTREFLEX_MPU_CLKCTRL DRA7_CLKCTRL_INDEX(0x28)
+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)
+12
include/dt-bindings/clock/omap5.h
··· 16 16 17 17 /* abe clocks */ 18 18 #define OMAP5_L4_ABE_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20) 19 + #define OMAP5_AESS_CLKCTRL OMAP5_CLKCTRL_INDEX(0x28) 19 20 #define OMAP5_MCPDM_CLKCTRL OMAP5_CLKCTRL_INDEX(0x30) 20 21 #define OMAP5_DMIC_CLKCTRL OMAP5_CLKCTRL_INDEX(0x38) 21 22 #define OMAP5_MCBSP1_CLKCTRL OMAP5_CLKCTRL_INDEX(0x48) ··· 86 85 #define OMAP5_I2C5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x168) 87 86 #define OMAP5_UART5_CLKCTRL OMAP5_CLKCTRL_INDEX(0x170) 88 87 #define OMAP5_UART6_CLKCTRL OMAP5_CLKCTRL_INDEX(0x178) 88 + 89 + /* l4_secure clocks */ 90 + #define OMAP5_L4_SECURE_CLKCTRL_OFFSET 0x1a0 91 + #define OMAP5_L4_SECURE_CLKCTRL_INDEX(offset) ((offset) - OMAP5_L4_SECURE_CLKCTRL_OFFSET) 92 + #define OMAP5_AES1_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1a0) 93 + #define OMAP5_AES2_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1a8) 94 + #define OMAP5_DES3DES_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1b0) 95 + #define OMAP5_FPKA_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1b8) 96 + #define OMAP5_RNG_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1c0) 97 + #define OMAP5_SHA2MD5_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1c8) 98 + #define OMAP5_DMA_CRYPTO_CLKCTRL OMAP5_L4_SECURE_CLKCTRL_INDEX(0x1d8) 89 99 90 100 /* iva clocks */ 91 101 #define OMAP5_IVA_CLKCTRL OMAP5_CLKCTRL_INDEX(0x20)
-18
include/linux/omap-dma.h
··· 129 129 #define IS_WORD_16 BIT(0xd) 130 130 #define ENABLE_16XX_MODE BIT(0xe) 131 131 #define HS_CHANNELS_RESERVED BIT(0xf) 132 - #define DMA_ENGINE_HANDLE_IRQ BIT(0x10) 133 132 134 133 /* Defines for DMA Capabilities */ 135 134 #define DMA_HAS_TRANSPARENT_CAPS (0x1 << 18) ··· 238 239 void (*callback)(int lch, u16 ch_status, void *data); 239 240 void *data; 240 241 long flags; 241 - /* required for Dynamic chaining */ 242 - int prev_linked_ch; 243 - int next_linked_ch; 244 242 int state; 245 243 int chain_id; 246 244 int status; ··· 299 303 extern int omap_request_dma(int dev_id, const char *dev_name, 300 304 void (*callback)(int lch, u16 ch_status, void *data), 301 305 void *data, int *dma_ch); 302 - extern void omap_enable_dma_irq(int ch, u16 irq_bits); 303 306 extern void omap_disable_dma_irq(int ch, u16 irq_bits); 304 307 extern void omap_free_dma(int ch); 305 308 extern void omap_start_dma(int lch); ··· 307 312 int elem_count, int frame_count, 308 313 int sync_mode, 309 314 int dma_trigger, int src_or_dst_synch); 310 - extern void omap_set_dma_write_mode(int lch, enum omap_dma_write_mode mode); 311 315 extern void omap_set_dma_channel_mode(int lch, enum omap_dma_channel_mode mode); 312 316 313 317 extern void omap_set_dma_src_params(int lch, int src_port, int src_amode, ··· 323 329 extern void omap_set_dma_dest_burst_mode(int lch, 324 330 enum omap_dma_burst_mode burst_mode); 325 331 326 - extern void omap_set_dma_params(int lch, 327 - struct omap_dma_channel_params *params); 328 - 329 - extern void omap_dma_link_lch(int lch_head, int lch_queue); 330 - 331 - extern int omap_set_dma_callback(int lch, 332 - void (*callback)(int lch, u16 ch_status, void *data), 333 - void *data); 334 332 extern dma_addr_t omap_get_dma_src_pos(int lch); 335 333 extern dma_addr_t omap_get_dma_dst_pos(int lch); 336 334 extern int omap_get_dma_active_status(int lch); 337 335 extern int omap_dma_running(void); 338 - extern void omap_dma_set_global_params(int arb_rate, int max_fifo_depth, 339 - int tparams); 340 - void omap_dma_global_context_save(void); 341 - void omap_dma_global_context_restore(void); 342 336 343 337 #if defined(CONFIG_ARCH_OMAP1) && IS_ENABLED(CONFIG_FB_OMAP) 344 338 #include <mach/lcd_dma.h>
+1
include/linux/platform_data/ti-sysc.h
··· 49 49 s8 emufree_shift; 50 50 }; 51 51 52 + #define SYSC_QUIRK_FORCE_MSTANDBY BIT(20) 52 53 #define SYSC_MODULE_QUIRK_AESS BIT(19) 53 54 #define SYSC_MODULE_QUIRK_SGX BIT(18) 54 55 #define SYSC_MODULE_QUIRK_HDQ1W BIT(17)
-53
include/sound/aess.h
··· 1 - /* 2 - * AESS IP block reset 3 - * 4 - * Copyright (C) 2012 Texas Instruments, Inc. 5 - * Paul Walmsley 6 - * 7 - * This program is free software; you can redistribute it and/or 8 - * modify it under the terms of the GNU General Public License as 9 - * published by the Free Software Foundation version 2. 10 - * 11 - * This program is distributed "as is" WITHOUT ANY WARRANTY of any 12 - * kind, whether express or implied; without even the implied warranty 13 - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 - * GNU General Public License for more details. 15 - * 16 - * You should have received a copy of the GNU General Public License 17 - * along with this program; if not, write to the Free Software 18 - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 19 - * 02110-1301 USA 20 - */ 21 - #ifndef __SOUND_AESS_H__ 22 - #define __SOUND_AESS_H__ 23 - 24 - #include <linux/kernel.h> 25 - #include <linux/io.h> 26 - 27 - /* 28 - * AESS_AUTO_GATING_ENABLE_OFFSET: offset in bytes of the AESS IP 29 - * block's AESS_AUTO_GATING_ENABLE__1 register from the IP block's 30 - * base address 31 - */ 32 - #define AESS_AUTO_GATING_ENABLE_OFFSET 0x07c 33 - 34 - /* Register bitfields in the AESS_AUTO_GATING_ENABLE__1 register */ 35 - #define AESS_AUTO_GATING_ENABLE_SHIFT 0 36 - 37 - /** 38 - * aess_enable_autogating - enable AESS internal autogating 39 - * @oh: struct omap_hwmod * 40 - * 41 - * Enable internal autogating on the AESS. This allows the AESS to 42 - * indicate that it is idle to the OMAP PRCM. Returns 0. 43 - */ 44 - static inline void aess_enable_autogating(void __iomem *base) 45 - { 46 - u32 v; 47 - 48 - /* Set AESS_AUTO_GATING_ENABLE__1.ENABLE to allow idle entry */ 49 - v = 1 << AESS_AUTO_GATING_ENABLE_SHIFT; 50 - writel(v, base + AESS_AUTO_GATING_ENABLE_OFFSET); 51 - } 52 - 53 - #endif /* __SOUND_AESS_H__ */