aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/arm/mach-omap2/omap_hwmod_44xx_data.c168
1 files changed, 168 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
index c9c98ee81191..e2ad1b6b9c0a 100644
--- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
+++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c
@@ -1842,6 +1842,169 @@ static struct omap_hwmod omap44xx_dma_system_hwmod = {
1842 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430), 1842 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1843}; 1843};
1844 1844
1845/*
1846 * 'smartreflex' class
1847 * smartreflex module (monitor silicon performance and outputs a measure of
1848 * performance error)
1849 */
1850
1851/* The IP is not compliant to type1 / type2 scheme */
1852static struct omap_hwmod_sysc_fields omap_hwmod_sysc_type_smartreflex = {
1853 .sidle_shift = 24,
1854 .enwkup_shift = 26,
1855};
1856
1857static struct omap_hwmod_class_sysconfig omap44xx_smartreflex_sysc = {
1858 .sysc_offs = 0x0038,
1859 .sysc_flags = (SYSC_HAS_ENAWAKEUP | SYSC_HAS_SIDLEMODE),
1860 .idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART),
1861 .sysc_fields = &omap_hwmod_sysc_type_smartreflex,
1862};
1863
1864static struct omap_hwmod_class omap44xx_smartreflex_hwmod_class = {
1865 .name = "smartreflex",
1866 .sysc = &omap44xx_smartreflex_sysc,
1867 .rev = 2,
1868};
1869
1870/* smartreflex_core */
1871static struct omap_hwmod omap44xx_smartreflex_core_hwmod;
1872static struct omap_hwmod_irq_info omap44xx_smartreflex_core_irqs[] = {
1873 { .irq = 19 + OMAP44XX_IRQ_GIC_START },
1874};
1875
1876static struct omap_hwmod_addr_space omap44xx_smartreflex_core_addrs[] = {
1877 {
1878 .pa_start = 0x4a0dd000,
1879 .pa_end = 0x4a0dd03f,
1880 .flags = ADDR_TYPE_RT
1881 },
1882};
1883
1884/* l4_cfg -> smartreflex_core */
1885static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_core = {
1886 .master = &omap44xx_l4_cfg_hwmod,
1887 .slave = &omap44xx_smartreflex_core_hwmod,
1888 .clk = "l4_div_ck",
1889 .addr = omap44xx_smartreflex_core_addrs,
1890 .addr_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_addrs),
1891 .user = OCP_USER_MPU | OCP_USER_SDMA,
1892};
1893
1894/* smartreflex_core slave ports */
1895static struct omap_hwmod_ocp_if *omap44xx_smartreflex_core_slaves[] = {
1896 &omap44xx_l4_cfg__smartreflex_core,
1897};
1898
1899static struct omap_hwmod omap44xx_smartreflex_core_hwmod = {
1900 .name = "smartreflex_core",
1901 .class = &omap44xx_smartreflex_hwmod_class,
1902 .mpu_irqs = omap44xx_smartreflex_core_irqs,
1903 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_irqs),
1904 .main_clk = "smartreflex_core_fck",
1905 .vdd_name = "core",
1906 .prcm = {
1907 .omap4 = {
1908 .clkctrl_reg = OMAP4430_CM_ALWON_SR_CORE_CLKCTRL,
1909 },
1910 },
1911 .slaves = omap44xx_smartreflex_core_slaves,
1912 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_core_slaves),
1913 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1914};
1915
1916/* smartreflex_iva */
1917static struct omap_hwmod omap44xx_smartreflex_iva_hwmod;
1918static struct omap_hwmod_irq_info omap44xx_smartreflex_iva_irqs[] = {
1919 { .irq = 102 + OMAP44XX_IRQ_GIC_START },
1920};
1921
1922static struct omap_hwmod_addr_space omap44xx_smartreflex_iva_addrs[] = {
1923 {
1924 .pa_start = 0x4a0db000,
1925 .pa_end = 0x4a0db03f,
1926 .flags = ADDR_TYPE_RT
1927 },
1928};
1929
1930/* l4_cfg -> smartreflex_iva */
1931static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_iva = {
1932 .master = &omap44xx_l4_cfg_hwmod,
1933 .slave = &omap44xx_smartreflex_iva_hwmod,
1934 .clk = "l4_div_ck",
1935 .addr = omap44xx_smartreflex_iva_addrs,
1936 .addr_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_addrs),
1937 .user = OCP_USER_MPU | OCP_USER_SDMA,
1938};
1939
1940/* smartreflex_iva slave ports */
1941static struct omap_hwmod_ocp_if *omap44xx_smartreflex_iva_slaves[] = {
1942 &omap44xx_l4_cfg__smartreflex_iva,
1943};
1944
1945static struct omap_hwmod omap44xx_smartreflex_iva_hwmod = {
1946 .name = "smartreflex_iva",
1947 .class = &omap44xx_smartreflex_hwmod_class,
1948 .mpu_irqs = omap44xx_smartreflex_iva_irqs,
1949 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_irqs),
1950 .main_clk = "smartreflex_iva_fck",
1951 .vdd_name = "iva",
1952 .prcm = {
1953 .omap4 = {
1954 .clkctrl_reg = OMAP4430_CM_ALWON_SR_IVA_CLKCTRL,
1955 },
1956 },
1957 .slaves = omap44xx_smartreflex_iva_slaves,
1958 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_iva_slaves),
1959 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
1960};
1961
1962/* smartreflex_mpu */
1963static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod;
1964static struct omap_hwmod_irq_info omap44xx_smartreflex_mpu_irqs[] = {
1965 { .irq = 18 + OMAP44XX_IRQ_GIC_START },
1966};
1967
1968static struct omap_hwmod_addr_space omap44xx_smartreflex_mpu_addrs[] = {
1969 {
1970 .pa_start = 0x4a0d9000,
1971 .pa_end = 0x4a0d903f,
1972 .flags = ADDR_TYPE_RT
1973 },
1974};
1975
1976/* l4_cfg -> smartreflex_mpu */
1977static struct omap_hwmod_ocp_if omap44xx_l4_cfg__smartreflex_mpu = {
1978 .master = &omap44xx_l4_cfg_hwmod,
1979 .slave = &omap44xx_smartreflex_mpu_hwmod,
1980 .clk = "l4_div_ck",
1981 .addr = omap44xx_smartreflex_mpu_addrs,
1982 .addr_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_addrs),
1983 .user = OCP_USER_MPU | OCP_USER_SDMA,
1984};
1985
1986/* smartreflex_mpu slave ports */
1987static struct omap_hwmod_ocp_if *omap44xx_smartreflex_mpu_slaves[] = {
1988 &omap44xx_l4_cfg__smartreflex_mpu,
1989};
1990
1991static struct omap_hwmod omap44xx_smartreflex_mpu_hwmod = {
1992 .name = "smartreflex_mpu",
1993 .class = &omap44xx_smartreflex_hwmod_class,
1994 .mpu_irqs = omap44xx_smartreflex_mpu_irqs,
1995 .mpu_irqs_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_irqs),
1996 .main_clk = "smartreflex_mpu_fck",
1997 .vdd_name = "mpu",
1998 .prcm = {
1999 .omap4 = {
2000 .clkctrl_reg = OMAP4430_CM_ALWON_SR_MPU_CLKCTRL,
2001 },
2002 },
2003 .slaves = omap44xx_smartreflex_mpu_slaves,
2004 .slaves_cnt = ARRAY_SIZE(omap44xx_smartreflex_mpu_slaves),
2005 .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP4430),
2006};
2007
1845static __initdata struct omap_hwmod *omap44xx_hwmods[] = { 2008static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
1846 /* dmm class */ 2009 /* dmm class */
1847 &omap44xx_dmm_hwmod, 2010 &omap44xx_dmm_hwmod,
@@ -1903,6 +2066,11 @@ static __initdata struct omap_hwmod *omap44xx_hwmods[] = {
1903 &omap44xx_wd_timer2_hwmod, 2066 &omap44xx_wd_timer2_hwmod,
1904 &omap44xx_wd_timer3_hwmod, 2067 &omap44xx_wd_timer3_hwmod,
1905 2068
2069 /* smartreflex class */
2070 &omap44xx_smartreflex_core_hwmod,
2071 &omap44xx_smartreflex_iva_hwmod,
2072 &omap44xx_smartreflex_mpu_hwmod,
2073
1906 NULL, 2074 NULL,
1907}; 2075};
1908 2076