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
This commit is contained in:
@@ -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 @@
|
|||||||
|
|
||||||
#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 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#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)
|
|||||||
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[] = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#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)
|
|||||||
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 @@
|
|||||||
#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:
|
|||||||
ENDPROC(davinci_ddr_psc_config)
|
ENDPROC(davinci_ddr_psc_config)
|
||||||
|
|
||||||
CACHE_FLUSH:
|
CACHE_FLUSH:
|
||||||
|
#ifdef CONFIG_CPU_V6
|
||||||
|
.word v6_flush_kern_cache_all
|
||||||
|
#else
|
||||||
.word arm926_flush_kern_cache_all
|
.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 = {
|
|||||||
.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 = {
|
|||||||
.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)
|
|||||||
} 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)
|
|||||||
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)
|
|||||||
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[] = {
|
|||||||
.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)
|
|||||||
} 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)
|
|||||||
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)
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 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)
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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);
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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)
|
|||||||
|
|
||||||
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 = {
|
||||||
|
Reference in New Issue
Block a user