Commit 4c752782 authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'fixes' of git://git.linaro.org/people/arnd/arm-soc

* 'fixes' of git://git.linaro.org/people/arnd/arm-soc:
  ARM: CSR: add missing sentinels to of_device_id tables
  ARM: cns3xxx: Fix newly introduced warnings in the PCIe code
  ARM: cns3xxx: Fix compile error caused by hardware.h removed
  ARM: davinci: fix cache flush build error
  ARM: davinci: correct MDSTAT_STATE_MASK
  ARM: davinci: da850 EVM: read mac address from SPI flash
  OMAP: omap_device: fix !CONFIG_SUSPEND case in _noirq handlers
  OMAP2430: hwmod: musb: add missing terminator to omap2430_usbhsotg_addrs[]
  OMAP3: clock: indicate that gpt12_fck and wdt1_fck are in the WKUP clockdomain
  OMAP4: clock: fix compile warning
  OMAP4: clock: re-enable previous clockdomain enable/disable sequence
  OMAP: clockdomain: Wait for powerdomain to be ON when using clockdomain force wakeup
  OMAP: powerdomains: Make all powerdomain target states as ON at init
parents 14d01ff5 15ce9286
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <mach/hardware.h>
#include <asm/hardware/entry-macro-gic.S> #include <asm/hardware/entry-macro-gic.S>
.macro disable_fiq .macro disable_fiq
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <linux/io.h> #include <linux/io.h>
#include <asm/proc-fns.h> #include <asm/proc-fns.h>
#include <mach/hardware.h>
static inline void arch_idle(void) static inline void arch_idle(void)
{ {
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
*/ */
#include <asm/mach-types.h> #include <asm/mach-types.h>
#include <mach/hardware.h>
#include <mach/cns3xxx.h> #include <mach/cns3xxx.h>
#define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00)) #define AMBA_UART_DR(base) (*(volatile unsigned char *)((base) + 0x00))
......
...@@ -49,7 +49,7 @@ static struct cns3xxx_pcie *sysdata_to_cnspci(void *sysdata) ...@@ -49,7 +49,7 @@ static struct cns3xxx_pcie *sysdata_to_cnspci(void *sysdata)
return &cns3xxx_pcie[root->domain]; return &cns3xxx_pcie[root->domain];
} }
static struct cns3xxx_pcie *pdev_to_cnspci(struct pci_dev *dev) static struct cns3xxx_pcie *pdev_to_cnspci(const struct pci_dev *dev)
{ {
return sysdata_to_cnspci(dev->sysdata); return sysdata_to_cnspci(dev->sysdata);
} }
......
...@@ -115,6 +115,32 @@ static struct spi_board_info da850evm_spi_info[] = { ...@@ -115,6 +115,32 @@ static struct spi_board_info da850evm_spi_info[] = {
}, },
}; };
#ifdef CONFIG_MTD
static void da850_evm_m25p80_notify_add(struct mtd_info *mtd)
{
char *mac_addr = davinci_soc_info.emac_pdata->mac_addr;
size_t retlen;
if (!strcmp(mtd->name, "MAC-Address")) {
mtd->read(mtd, 0, ETH_ALEN, &retlen, mac_addr);
if (retlen == ETH_ALEN)
pr_info("Read MAC addr from SPI Flash: %pM\n",
mac_addr);
}
}
static struct mtd_notifier da850evm_spi_notifier = {
.add = da850_evm_m25p80_notify_add,
};
static void da850_evm_setup_mac_addr(void)
{
register_mtd_user(&da850evm_spi_notifier);
}
#else
static void da850_evm_setup_mac_addr(void) { }
#endif
static struct mtd_partition da850_evm_norflash_partition[] = { static struct mtd_partition da850_evm_norflash_partition[] = {
{ {
.name = "bootloaders + env", .name = "bootloaders + env",
...@@ -1244,6 +1270,8 @@ static __init void da850_evm_init(void) ...@@ -1244,6 +1270,8 @@ static __init void da850_evm_init(void)
if (ret) if (ret)
pr_warning("da850_evm_init: sata registration failed: %d\n", pr_warning("da850_evm_init: sata registration failed: %d\n",
ret); ret);
da850_evm_setup_mac_addr();
} }
#ifdef CONFIG_SERIAL_8250_CONSOLE #ifdef CONFIG_SERIAL_8250_CONSOLE
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
#define PSC_STATE_DISABLE 2 #define PSC_STATE_DISABLE 2
#define PSC_STATE_ENABLE 3 #define PSC_STATE_ENABLE 3
#define MDSTAT_STATE_MASK 0x1f #define MDSTAT_STATE_MASK 0x3f
#define MDCTL_FORCE BIT(31) #define MDCTL_FORCE BIT(31)
#ifndef __ASSEMBLER__ #ifndef __ASSEMBLER__
......
...@@ -217,7 +217,11 @@ ddr2clk_stop_done: ...@@ -217,7 +217,11 @@ ddr2clk_stop_done:
ENDPROC(davinci_ddr_psc_config) ENDPROC(davinci_ddr_psc_config)
CACHE_FLUSH: CACHE_FLUSH:
.word arm926_flush_kern_cache_all #ifdef CONFIG_CPU_V6
.word v6_flush_kern_cache_all
#else
.word arm926_flush_kern_cache_all
#endif
ENTRY(davinci_cpu_suspend_sz) ENTRY(davinci_cpu_suspend_sz)
.word . - davinci_cpu_suspend .word . - davinci_cpu_suspend
......
...@@ -3078,6 +3078,7 @@ static struct clk gpt12_fck = { ...@@ -3078,6 +3078,7 @@ static struct clk gpt12_fck = {
.name = "gpt12_fck", .name = "gpt12_fck",
.ops = &clkops_null, .ops = &clkops_null,
.parent = &secure_32k_fck, .parent = &secure_32k_fck,
.clkdm_name = "wkup_clkdm",
.recalc = &followparent_recalc, .recalc = &followparent_recalc,
}; };
...@@ -3085,6 +3086,7 @@ static struct clk wdt1_fck = { ...@@ -3085,6 +3086,7 @@ static struct clk wdt1_fck = {
.name = "wdt1_fck", .name = "wdt1_fck",
.ops = &clkops_null, .ops = &clkops_null,
.parent = &secure_32k_fck, .parent = &secure_32k_fck,
.clkdm_name = "wkup_clkdm",
.recalc = &followparent_recalc, .recalc = &followparent_recalc,
}; };
......
...@@ -3376,10 +3376,18 @@ int __init omap4xxx_clk_init(void) ...@@ -3376,10 +3376,18 @@ int __init omap4xxx_clk_init(void)
} else if (cpu_is_omap446x()) { } else if (cpu_is_omap446x()) {
cpu_mask = RATE_IN_4460; cpu_mask = RATE_IN_4460;
cpu_clkflg = CK_446X; cpu_clkflg = CK_446X;
} else {
return 0;
} }
clk_init(&omap2_clk_functions); clk_init(&omap2_clk_functions);
omap2_clk_disable_clkdm_control();
/*
* Must stay commented until all OMAP SoC drivers are
* converted to runtime PM, or drivers may start crashing
*
* omap2_clk_disable_clkdm_control();
*/
for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks); for (c = omap44xx_clks; c < omap44xx_clks + ARRAY_SIZE(omap44xx_clks);
c++) c++)
......
...@@ -747,6 +747,7 @@ int clkdm_wakeup(struct clockdomain *clkdm) ...@@ -747,6 +747,7 @@ int clkdm_wakeup(struct clockdomain *clkdm)
spin_lock_irqsave(&clkdm->lock, flags); spin_lock_irqsave(&clkdm->lock, flags);
clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED; clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED;
ret = arch_clkdm->clkdm_wakeup(clkdm); ret = arch_clkdm->clkdm_wakeup(clkdm);
ret |= pwrdm_state_switch(clkdm->pwrdm.ptr);
spin_unlock_irqrestore(&clkdm->lock, flags); spin_unlock_irqrestore(&clkdm->lock, flags);
return ret; return ret;
} }
...@@ -818,6 +819,7 @@ void clkdm_deny_idle(struct clockdomain *clkdm) ...@@ -818,6 +819,7 @@ void clkdm_deny_idle(struct clockdomain *clkdm)
spin_lock_irqsave(&clkdm->lock, flags); spin_lock_irqsave(&clkdm->lock, flags);
clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED; clkdm->_flags &= ~_CLKDM_FLAG_HWSUP_ENABLED;
arch_clkdm->clkdm_deny_idle(clkdm); arch_clkdm->clkdm_deny_idle(clkdm);
pwrdm_state_switch(clkdm->pwrdm.ptr);
spin_unlock_irqrestore(&clkdm->lock, flags); spin_unlock_irqrestore(&clkdm->lock, flags);
} }
......
...@@ -192,6 +192,7 @@ static struct omap_hwmod_addr_space omap2430_usbhsotg_addrs[] = { ...@@ -192,6 +192,7 @@ static struct omap_hwmod_addr_space omap2430_usbhsotg_addrs[] = {
.pa_end = OMAP243X_HS_BASE + SZ_4K - 1, .pa_end = OMAP243X_HS_BASE + SZ_4K - 1,
.flags = ADDR_TYPE_RT .flags = ADDR_TYPE_RT
}, },
{ }
}; };
/* l4_core ->usbhsotg interface */ /* l4_core ->usbhsotg interface */
......
...@@ -130,7 +130,6 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) ...@@ -130,7 +130,6 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state)
} else { } else {
hwsup = clkdm_in_hwsup(pwrdm->pwrdm_clkdms[0]); hwsup = clkdm_in_hwsup(pwrdm->pwrdm_clkdms[0]);
clkdm_wakeup(pwrdm->pwrdm_clkdms[0]); clkdm_wakeup(pwrdm->pwrdm_clkdms[0]);
pwrdm_wait_transition(pwrdm);
sleep_switch = FORCEWAKEUP_SWITCH; sleep_switch = FORCEWAKEUP_SWITCH;
} }
} }
...@@ -156,7 +155,6 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state) ...@@ -156,7 +155,6 @@ int omap_set_pwrdm_state(struct powerdomain *pwrdm, u32 state)
return ret; return ret;
} }
pwrdm_wait_transition(pwrdm);
pwrdm_state_switch(pwrdm); pwrdm_state_switch(pwrdm);
err: err:
return ret; return ret;
......
...@@ -195,28 +195,35 @@ static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused) ...@@ -195,28 +195,35 @@ static int _pwrdm_post_transition_cb(struct powerdomain *pwrdm, void *unused)
/** /**
* pwrdm_init - set up the powerdomain layer * pwrdm_init - set up the powerdomain layer
* @pwrdm_list: array of struct powerdomain pointers to register * @pwrdms: array of struct powerdomain pointers to register
* @custom_funcs: func pointers for arch specific implementations * @custom_funcs: func pointers for arch specific implementations
* *
* Loop through the array of powerdomains @pwrdm_list, registering all * Loop through the array of powerdomains @pwrdms, registering all
* that are available on the current CPU. If pwrdm_list is supplied * that are available on the current CPU. Also, program all
* and not null, all of the referenced powerdomains will be * powerdomain target state as ON; this is to prevent domains from
* registered. No return value. XXX pwrdm_list is not really a * hitting low power states (if bootloader has target states set to
* "list"; it is an array. Rename appropriately. * something other than ON) and potentially even losing context while
* PM is not fully initialized. The PM late init code can then program
* the desired target state for all the power domains. No return
* value.
*/ */
void pwrdm_init(struct powerdomain **pwrdm_list, struct pwrdm_ops *custom_funcs) void pwrdm_init(struct powerdomain **pwrdms, struct pwrdm_ops *custom_funcs)
{ {
struct powerdomain **p = NULL; struct powerdomain **p = NULL;
struct powerdomain *temp_p;
if (!custom_funcs) if (!custom_funcs)
WARN(1, "powerdomain: No custom pwrdm functions registered\n"); WARN(1, "powerdomain: No custom pwrdm functions registered\n");
else else
arch_pwrdm = custom_funcs; arch_pwrdm = custom_funcs;
if (pwrdm_list) { if (pwrdms) {
for (p = pwrdm_list; *p; p++) for (p = pwrdms; *p; p++)
_pwrdm_register(*p); _pwrdm_register(*p);
} }
list_for_each_entry(temp_p, &pwrdm_list, node)
pwrdm_set_next_pwrst(temp_p, PWRDM_POWER_ON);
} }
/** /**
......
...@@ -481,6 +481,7 @@ static void __init sirfsoc_clk_init(void) ...@@ -481,6 +481,7 @@ static void __init sirfsoc_clk_init(void)
static struct of_device_id clkc_ids[] = { static struct of_device_id clkc_ids[] = {
{ .compatible = "sirf,prima2-clkc" }, { .compatible = "sirf,prima2-clkc" },
{},
}; };
void __init sirfsoc_of_clk_init(void) void __init sirfsoc_of_clk_init(void)
......
...@@ -51,6 +51,7 @@ static __init void sirfsoc_irq_init(void) ...@@ -51,6 +51,7 @@ static __init void sirfsoc_irq_init(void)
static struct of_device_id intc_ids[] = { static struct of_device_id intc_ids[] = {
{ .compatible = "sirf,prima2-intc" }, { .compatible = "sirf,prima2-intc" },
{},
}; };
void __init sirfsoc_of_irq_init(void) void __init sirfsoc_of_irq_init(void)
......
...@@ -19,6 +19,7 @@ static DEFINE_MUTEX(rstc_lock); ...@@ -19,6 +19,7 @@ static DEFINE_MUTEX(rstc_lock);
static struct of_device_id rstc_ids[] = { static struct of_device_id rstc_ids[] = {
{ .compatible = "sirf,prima2-rstc" }, { .compatible = "sirf,prima2-rstc" },
{},
}; };
static int __init sirfsoc_of_rstc_init(void) static int __init sirfsoc_of_rstc_init(void)
......
...@@ -190,6 +190,7 @@ static void __init sirfsoc_timer_init(void) ...@@ -190,6 +190,7 @@ static void __init sirfsoc_timer_init(void)
static struct of_device_id timer_ids[] = { static struct of_device_id timer_ids[] = {
{ .compatible = "sirf,prima2-tick" }, { .compatible = "sirf,prima2-tick" },
{},
}; };
static void __init sirfsoc_of_timer_map(void) static void __init sirfsoc_of_timer_map(void)
......
...@@ -615,6 +615,9 @@ static int _od_resume_noirq(struct device *dev) ...@@ -615,6 +615,9 @@ static int _od_resume_noirq(struct device *dev)
return pm_generic_resume_noirq(dev); return pm_generic_resume_noirq(dev);
} }
#else
#define _od_suspend_noirq NULL
#define _od_resume_noirq NULL
#endif #endif
static struct dev_pm_domain omap_device_pm_domain = { static struct dev_pm_domain omap_device_pm_domain = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment