Merge tag 'omap-for-v5.11/genpd-am437x-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into arm/omap-genpd
Update am473x to boot without platform data Similar to am335x, we can now update am437x dts files to boot with genpd and simple-pm-bus, and drop the related platform data. To do that, we need to do the following changes for am437x: - Update the clock driver to keep the l3_main clock always on for suspend and resume to work - Add power domain and reset controller data to omap-prm driver - Configure interconnect clocks for system timers as those are now managed separately by the drivers/clocksource drivers - Update control module, wkup_m3, emif, ocmcram, mpuss and l3_noc for device tree data and drop the legacy platform data - Update the interconnect instances to boot with gendp and simple-pm-bus - Drop the remaining platform data for am437x * tag 'omap-for-v5.11/genpd-am437x-signed' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: OMAP2+: Drop legacy remaining legacy platform data for am4 ARM: dts: Use simple-pm-bus for genpd for am4 l3 ARM: dts: Move am4 l3 noc to a separate node ARM: dts: Use simple-pm-bus for genpd for am4 l4_per ARM: dts: Use simple-pm-bus for genpd for am4 l4_fast ARM: dts: Use simple-pm-bus for genpd for am4 l4_wkup ARM: OMAP2+: Drop legacy platform data for am4 mpuss ARM: OMAP2+: Drop legacy platform data for am4 ocmcram ARM: OMAP2+: Drop legacy platform data for am4 emif ARM: OMAP2+: Drop legacy platform data for am4 wkup_m3 ARM: dts: Configure interconnect target module for am4 wkup_m3 ARM: dts: Configure RTC powerdomain for am4 ARM: OMAP2+: Drop legacy platform data for am4 control module ARM: dts: Configure also interconnect clocks for am4 system timer ARM: dts: am43xx: add remaining PRM instances soc: ti: omap-prm: am4: add genpd support for remaining PRM instances clk: ti: am437x: Keep am4 l3 main clock always on for genpd Link: https://lore.kernel.org/r/pull-1606806458-694517@atomide.com-3 Signed-off-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
@@ -107,12 +107,6 @@
|
||||
|
||||
soc {
|
||||
compatible = "ti,omap-infra";
|
||||
mpu {
|
||||
compatible = "ti,omap4-mpu";
|
||||
ti,hwmods = "mpu";
|
||||
pm-sram = <&pm_sram_code
|
||||
&pm_sram_data>;
|
||||
};
|
||||
};
|
||||
|
||||
gic: interrupt-controller@48241000 {
|
||||
@@ -161,40 +155,48 @@
|
||||
};
|
||||
|
||||
ocp@44000000 {
|
||||
compatible = "ti,am4372-l3-noc", "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
power-domains = <&prm_per>;
|
||||
clocks = <&l3_clkctrl AM4_L3_L3_MAIN_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges;
|
||||
ti,hwmods = "l3_main";
|
||||
ti,no-idle;
|
||||
reg = <0x44000000 0x400000
|
||||
0x44800000 0x400000>;
|
||||
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
||||
|
||||
l3-noc@44000000 {
|
||||
compatible = "ti,am4372-l3-noc";
|
||||
reg = <0x44000000 0x400000>,
|
||||
<0x44800000 0x400000>;
|
||||
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
|
||||
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
||||
};
|
||||
|
||||
l4_wkup: interconnect@44c00000 {
|
||||
wkup_m3: wkup_m3@100000 {
|
||||
compatible = "ti,am4372-wkup-m3";
|
||||
reg = <0x100000 0x4000>,
|
||||
<0x180000 0x2000>;
|
||||
reg-names = "umem", "dmem";
|
||||
ti,hwmods = "wkup_m3";
|
||||
ti,pm-firmware = "am335x-pm-firmware.elf";
|
||||
};
|
||||
};
|
||||
l4_per: interconnect@48000000 {
|
||||
};
|
||||
l4_fast: interconnect@4a000000 {
|
||||
};
|
||||
|
||||
emif: emif@4c000000 {
|
||||
compatible = "ti,emif-am4372";
|
||||
reg = <0x4c000000 0x1000000>;
|
||||
ti,hwmods = "emif";
|
||||
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
target-module@4c000000 {
|
||||
compatible = "ti,sysc-omap4-simple", "ti,sysc";
|
||||
reg = <0x4c000000 0x4>;
|
||||
reg-names = "rev";
|
||||
clocks = <&emif_clkctrl AM4_EMIF_EMIF_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
ti,no-idle;
|
||||
sram = <&pm_sram_code
|
||||
&pm_sram_data>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x4c000000 0x1000000>;
|
||||
|
||||
emif: emif@0 {
|
||||
compatible = "ti,emif-am4372";
|
||||
reg = <0 0x1000000>;
|
||||
interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
|
||||
sram = <&pm_sram_code
|
||||
&pm_sram_data>;
|
||||
};
|
||||
};
|
||||
|
||||
target-module@49000000 {
|
||||
@@ -501,23 +503,33 @@
|
||||
};
|
||||
};
|
||||
|
||||
ocmcram: sram@40300000 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0x40300000 0x40000>; /* 256k */
|
||||
ranges = <0x0 0x40300000 0x40000>;
|
||||
target-module@40300000 {
|
||||
compatible = "ti,sysc-omap4-simple", "ti,sysc";
|
||||
clocks = <&l3_clkctrl AM4_L3_OCMCRAM_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
ti,no-idle;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x40300000 0x40000>;
|
||||
|
||||
pm_sram_code: pm-code-sram@0 {
|
||||
compatible = "ti,sram";
|
||||
reg = <0x0 0x1000>;
|
||||
protect-exec;
|
||||
};
|
||||
ocmcram: sram@0 {
|
||||
compatible = "mmio-sram";
|
||||
reg = <0 0x40000>; /* 256k */
|
||||
ranges = <0 0 0x40000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
pm_sram_data: pm-data-sram@1000 {
|
||||
compatible = "ti,sram";
|
||||
reg = <0x1000 0x1000>;
|
||||
pool;
|
||||
pm_sram_code: pm-code-sram@0 {
|
||||
compatible = "ti,sram";
|
||||
reg = <0x0 0x1000>;
|
||||
protect-exec;
|
||||
};
|
||||
|
||||
pm_sram_data: pm-data-sram@1000 {
|
||||
compatible = "ti,sram";
|
||||
reg = <0x1000 0x1000>;
|
||||
pool;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -548,6 +560,12 @@
|
||||
#include "am43xx-clocks.dtsi"
|
||||
|
||||
&prcm {
|
||||
prm_mpu: prm@300 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x300 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_gfx: prm@400 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x400 0x100>;
|
||||
@@ -555,16 +573,36 @@
|
||||
#reset-cells = <1>;
|
||||
};
|
||||
|
||||
prm_rtc: prm@500 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x500 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_tamper: prm@600 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x600 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_cefuse: prm@700 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x700 0x100>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_per: prm@800 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x800 0x100>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_wkup: prm@2000 {
|
||||
compatible = "ti,am4-prm-inst", "ti,omap-prm-inst";
|
||||
reg = <0x2000 0x100>;
|
||||
#reset-cells = <1>;
|
||||
#power-domain-cells = <0>;
|
||||
};
|
||||
|
||||
prm_device: prm@4000 {
|
||||
@@ -578,6 +616,9 @@
|
||||
&timer1_target {
|
||||
ti,no-reset-on-init;
|
||||
ti,no-idle;
|
||||
clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_TIMER1_CLKCTRL 0>,
|
||||
<&l4_wkup_clkctrl AM4_L4_WKUP_L4_WKUP_CLKCTRL 0>;
|
||||
clock-names = "fck", "ick";
|
||||
timer@0 {
|
||||
assigned-clocks = <&timer1_fck>;
|
||||
assigned-clock-parents = <&sys_clkin_ck>;
|
||||
@@ -588,6 +629,9 @@
|
||||
&timer2_target {
|
||||
ti,no-reset-on-init;
|
||||
ti,no-idle;
|
||||
clocks = <&l4ls_clkctrl AM4_L4LS_TIMER2_CLKCTRL 0>,
|
||||
<&l4ls_clkctrl AM4_L4LS_L4_LS_CLKCTRL 0>;
|
||||
clock-names = "fck", "ick";
|
||||
timer@0 {
|
||||
assigned-clocks = <&timer2_fck>;
|
||||
assigned-clock-parents = <&sys_clkin_ck>;
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
&l4_wkup { /* 0x44c00000 */
|
||||
compatible = "ti,am4-l4-wkup", "simple-bus";
|
||||
compatible = "ti,am4-l4-wkup", "simple-pm-bus";
|
||||
power-domains = <&prm_wkup>;
|
||||
clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_L4_WKUP_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
reg = <0x44c00000 0x800>,
|
||||
<0x44c00800 0x800>,
|
||||
<0x44c01000 0x400>,
|
||||
@@ -12,7 +15,7 @@
|
||||
<0x00200000 0x44e00000 0x100000>; /* segment 2 */
|
||||
|
||||
segment@0 { /* 0x44c00000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
|
||||
@@ -22,7 +25,7 @@
|
||||
};
|
||||
|
||||
segment@100000 { /* 0x44d00000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00100000 0x004000>, /* ap 4 */
|
||||
@@ -32,19 +35,25 @@
|
||||
<0x000f0000 0x001f0000 0x010000>; /* ap 8 */
|
||||
|
||||
target-module@0 { /* 0x44d00000, ap 4 28.0 */
|
||||
compatible = "ti,sysc";
|
||||
status = "disabled";
|
||||
compatible = "ti,sysc-omap4", "ti,sysc";
|
||||
reg = <0x0 0x4>;
|
||||
reg-names = "rev";
|
||||
clocks = <&l4_wkup_aon_clkctrl AM4_L4_WKUP_AON_WKUP_M3_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x0 0x4000>;
|
||||
};
|
||||
ranges = <0x00000000 0x00000000 0x4000>,
|
||||
<0x00080000 0x00080000 0x2000>;
|
||||
|
||||
target-module@80000 { /* 0x44d80000, ap 6 10.0 */
|
||||
compatible = "ti,sysc";
|
||||
status = "disabled";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x80000 0x2000>;
|
||||
wkup_m3: cpu@0 {
|
||||
compatible = "ti,am4372-wkup-m3";
|
||||
reg = <0x00000000 0x4000>,
|
||||
<0x00080000 0x2000>;
|
||||
reg-names = "umem", "dmem";
|
||||
resets = <&prm_wkup 3>;
|
||||
reset-names = "rstctrl";
|
||||
ti,pm-firmware = "am335x-pm-firmware.elf";
|
||||
};
|
||||
};
|
||||
|
||||
target-module@f0000 { /* 0x44df0000, ap 8 58.0 */
|
||||
@@ -75,7 +84,7 @@
|
||||
};
|
||||
|
||||
segment@200000 { /* 0x44e00000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00200000 0x001000>, /* ap 9 */
|
||||
@@ -265,6 +274,9 @@
|
||||
compatible = "ti,sysc-omap4", "ti,sysc";
|
||||
reg = <0x10000 0x4>;
|
||||
reg-names = "rev";
|
||||
clocks = <&l4_wkup_clkctrl AM4_L4_WKUP_CONTROL_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
ti,no-idle;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0 0x10000 0x10000>;
|
||||
@@ -419,6 +431,7 @@
|
||||
<SYSC_IDLE_SMART>,
|
||||
<SYSC_IDLE_SMART_WKUP>;
|
||||
/* Domains (P, C): rtc_pwrdm, l4_rtc_clkdm */
|
||||
power-domains = <&prm_rtc>;
|
||||
clocks = <&l4_rtc_clkctrl AM4_L4_RTC_RTC_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
#address-cells = <1>;
|
||||
@@ -479,7 +492,10 @@
|
||||
};
|
||||
|
||||
&l4_fast { /* 0x4a000000 */
|
||||
compatible = "ti,am4-l4-fast", "simple-bus";
|
||||
compatible = "ti,am4-l4-fast", "simple-pm-bus";
|
||||
power-domains = <&prm_per>;
|
||||
clocks = <&l3_clkctrl AM4_L3_L4_HS_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
reg = <0x4a000000 0x800>,
|
||||
<0x4a000800 0x800>,
|
||||
<0x4a001000 0x400>;
|
||||
@@ -489,7 +505,7 @@
|
||||
ranges = <0x00000000 0x4a000000 0x1000000>; /* segment 0 */
|
||||
|
||||
segment@0 { /* 0x4a000000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
|
||||
@@ -594,7 +610,10 @@
|
||||
};
|
||||
|
||||
&l4_per { /* 0x48000000 */
|
||||
compatible = "ti,am4-l4-per", "simple-bus";
|
||||
compatible = "ti,am4-l4-per", "simple-pm-bus";
|
||||
power-domains = <&prm_per>;
|
||||
clocks = <&l4ls_clkctrl AM4_L4LS_L4_LS_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
reg = <0x48000000 0x800>,
|
||||
<0x48000800 0x800>,
|
||||
<0x48001000 0x400>,
|
||||
@@ -612,7 +631,7 @@
|
||||
<0x46400000 0x46400000 0x400000>; /* l3 data port */
|
||||
|
||||
segment@0 { /* 0x48000000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00000000 0x000800>, /* ap 0 */
|
||||
@@ -1187,7 +1206,7 @@
|
||||
};
|
||||
|
||||
segment@100000 { /* 0x48100000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x0008c000 0x0018c000 0x001000>, /* ap 34 */
|
||||
@@ -1618,13 +1637,31 @@
|
||||
};
|
||||
|
||||
segment@200000 { /* 0x48200000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00200000 0x010000>;
|
||||
|
||||
target-module@0 {
|
||||
compatible = "ti,sysc-omap4-simple", "ti,sysc";
|
||||
power-domains = <&prm_mpu>;
|
||||
clocks = <&mpu_clkctrl AM4_MPU_MPU_CLKCTRL 0>;
|
||||
clock-names = "fck";
|
||||
ti,no-idle;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0 0x10000>;
|
||||
|
||||
mpu@0 {
|
||||
compatible = "ti,omap4-mpu";
|
||||
pm-sram = <&pm_sram_code
|
||||
&pm_sram_data>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
segment@300000 { /* 0x48300000 */
|
||||
compatible = "simple-bus";
|
||||
compatible = "simple-pm-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0x00000000 0x00300000 0x001000>, /* ap 56 */
|
||||
|
||||
@@ -78,7 +78,6 @@ config SOC_AM43XX
|
||||
select HAVE_ARM_TWD
|
||||
select ARM_ERRATA_754322
|
||||
select ARM_ERRATA_775420
|
||||
select OMAP_HWMOD
|
||||
select OMAP_INTERCONNECT
|
||||
select ARM_CPU_SUSPEND if PM
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ obj-$(CONFIG_ARCH_OMAP3) += $(omap-2-3-common) $(hwmod-common) $(secure-common)
|
||||
obj-$(CONFIG_ARCH_OMAP4) += $(hwmod-common) $(secure-common)
|
||||
obj-$(CONFIG_SOC_AM33XX) += $(secure-common)
|
||||
obj-$(CONFIG_SOC_OMAP5) += $(hwmod-common) $(secure-common)
|
||||
obj-$(CONFIG_SOC_AM43XX) += $(hwmod-common) $(secure-common)
|
||||
obj-$(CONFIG_SOC_AM43XX) += $(secure-common)
|
||||
obj-$(CONFIG_SOC_DRA7XX) += $(hwmod-common) $(secure-common)
|
||||
|
||||
ifneq ($(CONFIG_SND_SOC_OMAP_MCBSP),)
|
||||
@@ -206,9 +206,6 @@ obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2xxx_interconnect_data.o
|
||||
obj-$(CONFIG_SOC_OMAP2430) += omap_hwmod_2430_data.o
|
||||
obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_2xxx_3xxx_ipblock_data.o
|
||||
obj-$(CONFIG_ARCH_OMAP3) += omap_hwmod_3xxx_data.o
|
||||
obj-$(CONFIG_SOC_AM43XX) += omap_hwmod_43xx_data.o
|
||||
obj-$(CONFIG_SOC_AM43XX) += omap_hwmod_33xx_43xx_interconnect_data.o
|
||||
obj-$(CONFIG_SOC_AM43XX) += omap_hwmod_33xx_43xx_ipblock_data.o
|
||||
obj-$(CONFIG_SOC_TI81XX) += omap_hwmod_81xx_data.o
|
||||
obj-$(CONFIG_ARCH_OMAP4) += omap_hwmod_44xx_data.o
|
||||
obj-$(CONFIG_SOC_OMAP5) += omap_hwmod_54xx_data.o
|
||||
|
||||
@@ -588,7 +588,6 @@ void __init am43xx_init_early(void)
|
||||
omap2_prcm_base_init();
|
||||
am43xx_powerdomains_init();
|
||||
am43xx_clockdomains_init();
|
||||
am43xx_hwmod_init();
|
||||
omap_hwmod_init_postsetup();
|
||||
omap_l2_cache_init();
|
||||
omap_clk_soc_init = am43xx_dt_clk_init;
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated
|
||||
*
|
||||
* Data common for AM335x and AM43x
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifndef __ARCH_ARM_MACH_OMAP2_OMAP_HWMOD_33XX_43XX_COMMON_DATA_H
|
||||
#define __ARCH_ARM_MACH_OMAP2_OMAP_HWMOD_33XX_43XX_COMMON_DATA_H
|
||||
|
||||
extern struct omap_hwmod_ocp_if am33xx_mpu__l3_main;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_main__l3_s;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_s__l4_ls;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_s__l4_wkup;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_main__l3_instr;
|
||||
extern struct omap_hwmod_ocp_if am33xx_mpu__prcm;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_s__l3_main;
|
||||
extern struct omap_hwmod_ocp_if am33xx_gfx__l3_main;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_main__gfx;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l4_ls__timer2;
|
||||
extern struct omap_hwmod_ocp_if am33xx_l3_main__ocmc;
|
||||
|
||||
extern struct omap_hwmod am33xx_l3_main_hwmod;
|
||||
extern struct omap_hwmod am33xx_l3_s_hwmod;
|
||||
extern struct omap_hwmod am33xx_l3_instr_hwmod;
|
||||
extern struct omap_hwmod am33xx_l4_ls_hwmod;
|
||||
extern struct omap_hwmod am33xx_l4_wkup_hwmod;
|
||||
extern struct omap_hwmod am33xx_mpu_hwmod;
|
||||
extern struct omap_hwmod am33xx_gfx_hwmod;
|
||||
extern struct omap_hwmod am33xx_prcm_hwmod;
|
||||
extern struct omap_hwmod am33xx_ocmcram_hwmod;
|
||||
extern struct omap_hwmod am33xx_smartreflex0_hwmod;
|
||||
extern struct omap_hwmod am33xx_smartreflex1_hwmod;
|
||||
|
||||
extern struct omap_hwmod_class am33xx_emif_hwmod_class;
|
||||
extern struct omap_hwmod_class am33xx_l4_hwmod_class;
|
||||
extern struct omap_hwmod_class am33xx_wkup_m3_hwmod_class;
|
||||
extern struct omap_hwmod_class am33xx_control_hwmod_class;
|
||||
extern struct omap_hwmod_class am33xx_timer_hwmod_class;
|
||||
extern struct omap_hwmod_class am33xx_ehrpwm_hwmod_class;
|
||||
extern struct omap_hwmod_class am33xx_spi_hwmod_class;
|
||||
|
||||
void omap_hwmod_am33xx_reg(void);
|
||||
void omap_hwmod_am43xx_reg(void);
|
||||
|
||||
#endif
|
||||
@@ -1,82 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated
|
||||
*
|
||||
* Interconnects common for AM335x and AM43x
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/sizes.h>
|
||||
#include "omap_hwmod.h"
|
||||
#include "omap_hwmod_33xx_43xx_common_data.h"
|
||||
|
||||
/* mpu -> l3 main */
|
||||
struct omap_hwmod_ocp_if am33xx_mpu__l3_main = {
|
||||
.master = &am33xx_mpu_hwmod,
|
||||
.slave = &am33xx_l3_main_hwmod,
|
||||
.clk = "dpll_mpu_m2_ck",
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
/* l3 main -> l3 s */
|
||||
struct omap_hwmod_ocp_if am33xx_l3_main__l3_s = {
|
||||
.master = &am33xx_l3_main_hwmod,
|
||||
.slave = &am33xx_l3_s_hwmod,
|
||||
.clk = "l3s_gclk",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
/* l3 s -> l4 per/ls */
|
||||
struct omap_hwmod_ocp_if am33xx_l3_s__l4_ls = {
|
||||
.master = &am33xx_l3_s_hwmod,
|
||||
.slave = &am33xx_l4_ls_hwmod,
|
||||
.clk = "l3s_gclk",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
/* l3 s -> l4 wkup */
|
||||
struct omap_hwmod_ocp_if am33xx_l3_s__l4_wkup = {
|
||||
.master = &am33xx_l3_s_hwmod,
|
||||
.slave = &am33xx_l4_wkup_hwmod,
|
||||
.clk = "l3s_gclk",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
/* l3 main -> l3 instr */
|
||||
struct omap_hwmod_ocp_if am33xx_l3_main__l3_instr = {
|
||||
.master = &am33xx_l3_main_hwmod,
|
||||
.slave = &am33xx_l3_instr_hwmod,
|
||||
.clk = "l3s_gclk",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
/* mpu -> prcm */
|
||||
struct omap_hwmod_ocp_if am33xx_mpu__prcm = {
|
||||
.master = &am33xx_mpu_hwmod,
|
||||
.slave = &am33xx_prcm_hwmod,
|
||||
.clk = "dpll_mpu_m2_ck",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
/* l3 s -> l3 main*/
|
||||
struct omap_hwmod_ocp_if am33xx_l3_s__l3_main = {
|
||||
.master = &am33xx_l3_s_hwmod,
|
||||
.slave = &am33xx_l3_main_hwmod,
|
||||
.clk = "l3s_gclk",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
/* l3 main -> ocmc */
|
||||
struct omap_hwmod_ocp_if am33xx_l3_main__ocmc = {
|
||||
.master = &am33xx_l3_main_hwmod,
|
||||
.slave = &am33xx_ocmcram_hwmod,
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
@@ -1,254 +0,0 @@
|
||||
/*
|
||||
*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated
|
||||
*
|
||||
* Hwmod common for AM335x and AM43x
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#include "omap_hwmod.h"
|
||||
#include "cm33xx.h"
|
||||
#include "prm33xx.h"
|
||||
#include "omap_hwmod_33xx_43xx_common_data.h"
|
||||
#include "prcm43xx.h"
|
||||
#include "common.h"
|
||||
|
||||
#define CLKCTRL(oh, clkctrl) ((oh).prcm.omap4.clkctrl_offs = (clkctrl))
|
||||
#define RSTCTRL(oh, rstctrl) ((oh).prcm.omap4.rstctrl_offs = (rstctrl))
|
||||
#define RSTST(oh, rstst) ((oh).prcm.omap4.rstst_offs = (rstst))
|
||||
|
||||
/*
|
||||
* 'l3' class
|
||||
* instance(s): l3_main, l3_s, l3_instr
|
||||
*/
|
||||
static struct omap_hwmod_class am33xx_l3_hwmod_class = {
|
||||
.name = "l3",
|
||||
};
|
||||
|
||||
struct omap_hwmod am33xx_l3_main_hwmod = {
|
||||
.name = "l3_main",
|
||||
.class = &am33xx_l3_hwmod_class,
|
||||
.clkdm_name = "l3_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "l3_gclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* l3_s */
|
||||
struct omap_hwmod am33xx_l3_s_hwmod = {
|
||||
.name = "l3_s",
|
||||
.class = &am33xx_l3_hwmod_class,
|
||||
.clkdm_name = "l3s_clkdm",
|
||||
};
|
||||
|
||||
/* l3_instr */
|
||||
struct omap_hwmod am33xx_l3_instr_hwmod = {
|
||||
.name = "l3_instr",
|
||||
.class = &am33xx_l3_hwmod_class,
|
||||
.clkdm_name = "l3_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "l3_gclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* 'l4' class
|
||||
* instance(s): l4_ls, l4_hs, l4_wkup, l4_fw
|
||||
*/
|
||||
struct omap_hwmod_class am33xx_l4_hwmod_class = {
|
||||
.name = "l4",
|
||||
};
|
||||
|
||||
/* l4_ls */
|
||||
struct omap_hwmod am33xx_l4_ls_hwmod = {
|
||||
.name = "l4_ls",
|
||||
.class = &am33xx_l4_hwmod_class,
|
||||
.clkdm_name = "l4ls_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "l4ls_gclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* l4_wkup */
|
||||
struct omap_hwmod am33xx_l4_wkup_hwmod = {
|
||||
.name = "l4_wkup",
|
||||
.class = &am33xx_l4_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* 'mpu' class
|
||||
*/
|
||||
static struct omap_hwmod_class am33xx_mpu_hwmod_class = {
|
||||
.name = "mpu",
|
||||
};
|
||||
|
||||
struct omap_hwmod am33xx_mpu_hwmod = {
|
||||
.name = "mpu",
|
||||
.class = &am33xx_mpu_hwmod_class,
|
||||
.clkdm_name = "mpu_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "dpll_mpu_m2_ck",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* 'wakeup m3' class
|
||||
* Wakeup controller sub-system under wakeup domain
|
||||
*/
|
||||
struct omap_hwmod_class am33xx_wkup_m3_hwmod_class = {
|
||||
.name = "wkup_m3",
|
||||
};
|
||||
|
||||
/*
|
||||
* 'prcm' class
|
||||
* power and reset manager (whole prcm infrastructure)
|
||||
*/
|
||||
static struct omap_hwmod_class am33xx_prcm_hwmod_class = {
|
||||
.name = "prcm",
|
||||
};
|
||||
|
||||
/* prcm */
|
||||
struct omap_hwmod am33xx_prcm_hwmod = {
|
||||
.name = "prcm",
|
||||
.class = &am33xx_prcm_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
};
|
||||
|
||||
/*
|
||||
* 'emif' class
|
||||
* instance(s): emif
|
||||
*/
|
||||
static struct omap_hwmod_class_sysconfig am33xx_emif_sysc = {
|
||||
.rev_offs = 0x0000,
|
||||
};
|
||||
|
||||
struct omap_hwmod_class am33xx_emif_hwmod_class = {
|
||||
.name = "emif",
|
||||
.sysc = &am33xx_emif_sysc,
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* ocmcram */
|
||||
static struct omap_hwmod_class am33xx_ocmcram_hwmod_class = {
|
||||
.name = "ocmcram",
|
||||
};
|
||||
|
||||
struct omap_hwmod am33xx_ocmcram_hwmod = {
|
||||
.name = "ocmcram",
|
||||
.class = &am33xx_ocmcram_hwmod_class,
|
||||
.clkdm_name = "l3_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "l3_gclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* 'smartreflex' class */
|
||||
static struct omap_hwmod_class am33xx_smartreflex_hwmod_class = {
|
||||
.name = "smartreflex",
|
||||
};
|
||||
|
||||
/* smartreflex0 */
|
||||
struct omap_hwmod am33xx_smartreflex0_hwmod = {
|
||||
.name = "smartreflex0",
|
||||
.class = &am33xx_smartreflex_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.main_clk = "smartreflex0_fck",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* smartreflex1 */
|
||||
struct omap_hwmod am33xx_smartreflex1_hwmod = {
|
||||
.name = "smartreflex1",
|
||||
.class = &am33xx_smartreflex_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.main_clk = "smartreflex1_fck",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/*
|
||||
* 'control' module class
|
||||
*/
|
||||
struct omap_hwmod_class am33xx_control_hwmod_class = {
|
||||
.name = "control",
|
||||
};
|
||||
|
||||
static void omap_hwmod_am33xx_clkctrl(void)
|
||||
{
|
||||
CLKCTRL(am33xx_smartreflex0_hwmod,
|
||||
AM33XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_smartreflex1_hwmod,
|
||||
AM33XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l4_ls_hwmod, AM33XX_CM_PER_L4LS_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l4_wkup_hwmod, AM33XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l3_main_hwmod, AM33XX_CM_PER_L3_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l3_instr_hwmod , AM33XX_CM_PER_L3_INSTR_CLKCTRL_OFFSET);
|
||||
}
|
||||
|
||||
void omap_hwmod_am33xx_reg(void)
|
||||
{
|
||||
omap_hwmod_am33xx_clkctrl();
|
||||
}
|
||||
|
||||
static void omap_hwmod_am43xx_clkctrl(void)
|
||||
{
|
||||
CLKCTRL(am33xx_smartreflex0_hwmod,
|
||||
AM43XX_CM_WKUP_SMARTREFLEX0_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_smartreflex1_hwmod,
|
||||
AM43XX_CM_WKUP_SMARTREFLEX1_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l4_ls_hwmod, AM43XX_CM_PER_L4LS_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l4_wkup_hwmod, AM43XX_CM_WKUP_L4WKUP_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_l3_main_hwmod, AM43XX_CM_PER_L3_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_mpu_hwmod , AM43XX_CM_MPU_MPU_CLKCTRL_OFFSET);
|
||||
CLKCTRL(am33xx_ocmcram_hwmod , AM43XX_CM_PER_OCMCRAM_CLKCTRL_OFFSET);
|
||||
}
|
||||
|
||||
void omap_hwmod_am43xx_reg(void)
|
||||
{
|
||||
omap_hwmod_am43xx_clkctrl();
|
||||
}
|
||||
@@ -1,166 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2013 Texas Instruments Incorporated
|
||||
*
|
||||
* Hwmod present only in AM43x and those that differ other than register
|
||||
* offsets as compared to AM335x.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation version 2.
|
||||
*
|
||||
* This program is distributed "as is" WITHOUT ANY WARRANTY of any
|
||||
* kind, whether express or implied; without even the implied warranty
|
||||
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include "omap_hwmod.h"
|
||||
#include "omap_hwmod_33xx_43xx_common_data.h"
|
||||
#include "prcm43xx.h"
|
||||
#include "omap_hwmod_common_data.h"
|
||||
|
||||
/* IP blocks */
|
||||
static struct omap_hwmod am43xx_emif_hwmod = {
|
||||
.name = "emif",
|
||||
.class = &am33xx_emif_hwmod_class,
|
||||
.clkdm_name = "emif_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "dpll_ddr_m2_ck",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.clkctrl_offs = AM43XX_CM_PER_EMIF_CLKCTRL_OFFSET,
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_hwmod am43xx_l4_hs_hwmod = {
|
||||
.name = "l4_hs",
|
||||
.class = &am33xx_l4_hwmod_class,
|
||||
.clkdm_name = "l3_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "l4hs_gclk",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.clkctrl_offs = AM43XX_CM_PER_L4HS_CLKCTRL_OFFSET,
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
static struct omap_hwmod_rst_info am33xx_wkup_m3_resets[] = {
|
||||
{ .name = "wkup_m3", .rst_shift = 3, .st_shift = 5 },
|
||||
};
|
||||
|
||||
static struct omap_hwmod am43xx_wkup_m3_hwmod = {
|
||||
.name = "wkup_m3",
|
||||
.class = &am33xx_wkup_m3_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_aon_clkdm",
|
||||
/* Keep hardreset asserted */
|
||||
.flags = HWMOD_INIT_NO_RESET | HWMOD_NO_IDLEST,
|
||||
.main_clk = "sys_clkin_ck",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.clkctrl_offs = AM43XX_CM_WKUP_WKUP_M3_CLKCTRL_OFFSET,
|
||||
.rstctrl_offs = AM43XX_RM_WKUP_RSTCTRL_OFFSET,
|
||||
.rstst_offs = AM43XX_RM_WKUP_RSTST_OFFSET,
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
.rst_lines = am33xx_wkup_m3_resets,
|
||||
.rst_lines_cnt = ARRAY_SIZE(am33xx_wkup_m3_resets),
|
||||
};
|
||||
|
||||
static struct omap_hwmod am43xx_control_hwmod = {
|
||||
.name = "control",
|
||||
.class = &am33xx_control_hwmod_class,
|
||||
.clkdm_name = "l4_wkup_clkdm",
|
||||
.flags = HWMOD_INIT_NO_IDLE,
|
||||
.main_clk = "sys_clkin_ck",
|
||||
.prcm = {
|
||||
.omap4 = {
|
||||
.clkctrl_offs = AM43XX_CM_WKUP_CONTROL_CLKCTRL_OFFSET,
|
||||
.modulemode = MODULEMODE_SWCTRL,
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
/* Interfaces */
|
||||
static struct omap_hwmod_ocp_if am43xx_l3_main__emif = {
|
||||
.master = &am33xx_l3_main_hwmod,
|
||||
.slave = &am43xx_emif_hwmod,
|
||||
.clk = "dpll_core_m4_ck",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if am43xx_l3_main__l4_hs = {
|
||||
.master = &am33xx_l3_main_hwmod,
|
||||
.slave = &am43xx_l4_hs_hwmod,
|
||||
.clk = "l3s_gclk",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if am43xx_wkup_m3__l4_wkup = {
|
||||
.master = &am43xx_wkup_m3_hwmod,
|
||||
.slave = &am33xx_l4_wkup_hwmod,
|
||||
.clk = "sys_clkin_ck",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if am43xx_l4_wkup__wkup_m3 = {
|
||||
.master = &am33xx_l4_wkup_hwmod,
|
||||
.slave = &am43xx_wkup_m3_hwmod,
|
||||
.clk = "sys_clkin_ck",
|
||||
.user = OCP_USER_MPU | OCP_USER_SDMA,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if am43xx_l4_wkup__smartreflex0 = {
|
||||
.master = &am33xx_l4_wkup_hwmod,
|
||||
.slave = &am33xx_smartreflex0_hwmod,
|
||||
.clk = "sys_clkin_ck",
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if am43xx_l4_wkup__smartreflex1 = {
|
||||
.master = &am33xx_l4_wkup_hwmod,
|
||||
.slave = &am33xx_smartreflex1_hwmod,
|
||||
.clk = "sys_clkin_ck",
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if am43xx_l4_wkup__control = {
|
||||
.master = &am33xx_l4_wkup_hwmod,
|
||||
.slave = &am43xx_control_hwmod,
|
||||
.clk = "sys_clkin_ck",
|
||||
.user = OCP_USER_MPU,
|
||||
};
|
||||
|
||||
static struct omap_hwmod_ocp_if *am43xx_hwmod_ocp_ifs[] __initdata = {
|
||||
&am33xx_mpu__l3_main,
|
||||
&am33xx_mpu__prcm,
|
||||
&am33xx_l3_s__l4_ls,
|
||||
&am33xx_l3_s__l4_wkup,
|
||||
&am43xx_l3_main__l4_hs,
|
||||
&am33xx_l3_main__l3_s,
|
||||
&am33xx_l3_main__l3_instr,
|
||||
&am33xx_l3_s__l3_main,
|
||||
&am43xx_l3_main__emif,
|
||||
&am43xx_wkup_m3__l4_wkup,
|
||||
&am43xx_l4_wkup__wkup_m3,
|
||||
&am43xx_l4_wkup__control,
|
||||
&am43xx_l4_wkup__smartreflex0,
|
||||
&am43xx_l4_wkup__smartreflex1,
|
||||
&am33xx_l3_main__ocmc,
|
||||
NULL,
|
||||
};
|
||||
|
||||
int __init am43xx_hwmod_init(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
omap_hwmod_am43xx_reg();
|
||||
omap_hwmod_init();
|
||||
ret = omap_hwmod_register_links(am43xx_hwmod_ocp_ifs);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@@ -272,6 +272,11 @@ static struct ti_dt_clk am43xx_clks[] = {
|
||||
{ .node_name = NULL },
|
||||
};
|
||||
|
||||
static const char *enable_init_clks[] = {
|
||||
/* AM4_L3_L3_MAIN_CLKCTRL, needed during suspend */
|
||||
"l3-clkctrl:0000:0",
|
||||
};
|
||||
|
||||
int __init am43xx_dt_clk_init(void)
|
||||
{
|
||||
struct clk *clk1, *clk2;
|
||||
@@ -283,6 +288,9 @@ int __init am43xx_dt_clk_init(void)
|
||||
|
||||
omap2_clk_disable_autoidle_all();
|
||||
|
||||
omap2_clk_enable_init_clocks(enable_init_clks,
|
||||
ARRAY_SIZE(enable_init_clks));
|
||||
|
||||
ti_clk_add_aliases();
|
||||
|
||||
/*
|
||||
|
||||
@@ -243,14 +243,44 @@ static const struct omap_rst_map am4_device_rst_map[] = {
|
||||
};
|
||||
|
||||
static const struct omap_prm_data am4_prm_data[] = {
|
||||
{
|
||||
.name = "mpu", .base = 0x44df0300,
|
||||
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_noinact,
|
||||
},
|
||||
{
|
||||
.name = "gfx", .base = 0x44df0400,
|
||||
.pwrstctrl = 0, .pwrstst = 0x4, .dmap = &omap_prm_onoff_noauto,
|
||||
.rstctrl = 0x10, .rstst = 0x14, .rstmap = rst_map_0, .clkdm_name = "gfx_l3",
|
||||
},
|
||||
{ .name = "per", .base = 0x44df0800, .rstctrl = 0x10, .rstst = 0x14, .rstmap = am4_per_rst_map, .clkdm_name = "pruss_ocp" },
|
||||
{ .name = "wkup", .base = 0x44df2000, .rstctrl = 0x10, .rstst = 0x14, .rstmap = am3_wkup_rst_map, .flags = OMAP_PRM_HAS_NO_CLKDM },
|
||||
{ .name = "device", .base = 0x44df4000, .rstctrl = 0x0, .rstst = 0x4, .rstmap = am4_device_rst_map, .flags = OMAP_PRM_HAS_RSTCTRL | OMAP_PRM_HAS_NO_CLKDM },
|
||||
{
|
||||
.name = "rtc", .base = 0x44df0500,
|
||||
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_alwon,
|
||||
},
|
||||
{
|
||||
.name = "tamper", .base = 0x44df0600,
|
||||
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_alwon,
|
||||
},
|
||||
{
|
||||
.name = "cefuse", .base = 0x44df0700,
|
||||
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_onoff_noauto,
|
||||
},
|
||||
{
|
||||
.name = "per", .base = 0x44df0800,
|
||||
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_noinact,
|
||||
.rstctrl = 0x10, .rstst = 0x14, .rstmap = am4_per_rst_map,
|
||||
.clkdm_name = "pruss_ocp"
|
||||
},
|
||||
{
|
||||
.name = "wkup", .base = 0x44df2000,
|
||||
.pwrstctrl = 0x0, .pwrstst = 0x4, .dmap = &omap_prm_alwon,
|
||||
.rstctrl = 0x10, .rstst = 0x14, .rstmap = am3_wkup_rst_map,
|
||||
.flags = OMAP_PRM_HAS_NO_CLKDM
|
||||
},
|
||||
{
|
||||
.name = "device", .base = 0x44df4000,
|
||||
.rstctrl = 0x0, .rstst = 0x4, .rstmap = am4_device_rst_map,
|
||||
.flags = OMAP_PRM_HAS_RSTCTRL | OMAP_PRM_HAS_NO_CLKDM
|
||||
},
|
||||
{ },
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user