Commit 696314cf authored by Arnd Bergmann's avatar Arnd Bergmann

Merge branch 'fixes' of...

Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6 into fixes
parents 419bb4e0 e9d0b97e
...@@ -7,7 +7,6 @@ config ARCH_OMAP2PLUS_TYPICAL ...@@ -7,7 +7,6 @@ config ARCH_OMAP2PLUS_TYPICAL
default y default y
select AEABI select AEABI
select REGULATOR select REGULATOR
select PM
select PM_RUNTIME select PM_RUNTIME
select VFP select VFP
select NEON if ARCH_OMAP3 || ARCH_OMAP4 select NEON if ARCH_OMAP3 || ARCH_OMAP4
......
...@@ -45,8 +45,6 @@ static struct omap_board_config_kernel am3517_crane_config[] __initdata = { ...@@ -45,8 +45,6 @@ static struct omap_board_config_kernel am3517_crane_config[] __initdata = {
static struct omap_board_mux board_mux[] __initdata = { static struct omap_board_mux board_mux[] __initdata = {
{ .reg_offset = OMAP_MUX_TERMINATOR }, { .reg_offset = OMAP_MUX_TERMINATOR },
}; };
#else
#define board_mux NULL
#endif #endif
static void __init am3517_crane_init_early(void) static void __init am3517_crane_init_early(void)
......
...@@ -491,23 +491,22 @@ static void __init beagle_opp_init(void) ...@@ -491,23 +491,22 @@ static void __init beagle_opp_init(void)
/* Custom OPP enabled for all xM versions */ /* Custom OPP enabled for all xM versions */
if (cpu_is_omap3630()) { if (cpu_is_omap3630()) {
struct omap_hwmod *mh = omap_hwmod_lookup("mpu"); struct device *mpu_dev, *iva_dev;
struct omap_hwmod *dh = omap_hwmod_lookup("iva");
struct device *dev;
if (!mh || !dh) { mpu_dev = omap2_get_mpuss_device();
iva_dev = omap2_get_iva_device();
if (!mpu_dev || !iva_dev) {
pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n", pr_err("%s: Aiee.. no mpu/dsp devices? %p %p\n",
__func__, mh, dh); __func__, mpu_dev, iva_dev);
return; return;
} }
/* Enable MPU 1GHz and lower opps */ /* Enable MPU 1GHz and lower opps */
dev = &mh->od->pdev.dev; r = opp_enable(mpu_dev, 800000000);
r = opp_enable(dev, 800000000);
/* TODO: MPU 1GHz needs SR and ABB */ /* TODO: MPU 1GHz needs SR and ABB */
/* Enable IVA 800MHz and lower opps */ /* Enable IVA 800MHz and lower opps */
dev = &dh->od->pdev.dev; r |= opp_enable(iva_dev, 660000000);
r |= opp_enable(dev, 660000000);
/* TODO: DSP 800MHz needs SR and ABB */ /* TODO: DSP 800MHz needs SR and ABB */
if (r) { if (r) {
pr_err("%s: failed to enable higher opp %d\n", pr_err("%s: failed to enable higher opp %d\n",
...@@ -516,10 +515,8 @@ static void __init beagle_opp_init(void) ...@@ -516,10 +515,8 @@ static void __init beagle_opp_init(void)
* Cleanup - disable the higher freqs - we dont care * Cleanup - disable the higher freqs - we dont care
* about the results * about the results
*/ */
dev = &mh->od->pdev.dev; opp_disable(mpu_dev, 800000000);
opp_disable(dev, 800000000); opp_disable(iva_dev, 660000000);
dev = &dh->od->pdev.dev;
opp_disable(dev, 660000000);
} }
} }
return; return;
......
...@@ -18,13 +18,36 @@ extern void omap4_cminst_clkdm_force_sleep(u8 part, s16 inst, u16 cdoffs); ...@@ -18,13 +18,36 @@ extern void omap4_cminst_clkdm_force_sleep(u8 part, s16 inst, u16 cdoffs);
extern void omap4_cminst_clkdm_force_wakeup(u8 part, s16 inst, u16 cdoffs); extern void omap4_cminst_clkdm_force_wakeup(u8 part, s16 inst, u16 cdoffs);
extern int omap4_cminst_wait_module_ready(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs); extern int omap4_cminst_wait_module_ready(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs);
extern int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs, u16 clkctrl_offs);
# ifdef CONFIG_ARCH_OMAP4
extern int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs);
extern void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst, s16 cdoffs, extern void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs); u16 clkctrl_offs);
extern void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs, extern void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs); u16 clkctrl_offs);
# else
static inline int omap4_cminst_wait_module_idle(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs)
{
return 0;
}
static inline void omap4_cminst_module_enable(u8 mode, u8 part, u16 inst,
s16 cdoffs, u16 clkctrl_offs)
{
}
static inline void omap4_cminst_module_disable(u8 part, u16 inst, s16 cdoffs,
u16 clkctrl_offs)
{
}
# endif
/* /*
* In an ideal world, we would not export these low-level functions, * In an ideal world, we would not export these low-level functions,
* but this will probably take some time to fix properly * but this will probably take some time to fix properly
......
...@@ -821,11 +821,10 @@ static void __init omap_mux_set_cmdline_signals(void) ...@@ -821,11 +821,10 @@ static void __init omap_mux_set_cmdline_signals(void)
if (!omap_mux_options) if (!omap_mux_options)
return; return;
options = kmalloc(strlen(omap_mux_options) + 1, GFP_KERNEL); options = kstrdup(omap_mux_options, GFP_KERNEL);
if (!options) if (!options)
return; return;
strcpy(options, omap_mux_options);
next_opt = options; next_opt = options;
while ((token = strsep(&next_opt, ",")) != NULL) { while ((token = strsep(&next_opt, ",")) != NULL) {
...@@ -855,24 +854,19 @@ static int __init omap_mux_copy_names(struct omap_mux *src, ...@@ -855,24 +854,19 @@ static int __init omap_mux_copy_names(struct omap_mux *src,
for (i = 0; i < OMAP_MUX_NR_MODES; i++) { for (i = 0; i < OMAP_MUX_NR_MODES; i++) {
if (src->muxnames[i]) { if (src->muxnames[i]) {
dst->muxnames[i] = dst->muxnames[i] = kstrdup(src->muxnames[i],
kmalloc(strlen(src->muxnames[i]) + 1,
GFP_KERNEL); GFP_KERNEL);
if (!dst->muxnames[i]) if (!dst->muxnames[i])
goto free; goto free;
strcpy(dst->muxnames[i], src->muxnames[i]);
} }
} }
#ifdef CONFIG_DEBUG_FS #ifdef CONFIG_DEBUG_FS
for (i = 0; i < OMAP_MUX_NR_SIDES; i++) { for (i = 0; i < OMAP_MUX_NR_SIDES; i++) {
if (src->balls[i]) { if (src->balls[i]) {
dst->balls[i] = dst->balls[i] = kstrdup(src->balls[i], GFP_KERNEL);
kmalloc(strlen(src->balls[i]) + 1,
GFP_KERNEL);
if (!dst->balls[i]) if (!dst->balls[i])
goto free; goto free;
strcpy(dst->balls[i], src->balls[i]);
} }
} }
#endif #endif
......
...@@ -621,7 +621,7 @@ void sr_disable(struct voltagedomain *voltdm) ...@@ -621,7 +621,7 @@ void sr_disable(struct voltagedomain *voltdm)
sr_v2_disable(sr); sr_v2_disable(sr);
} }
pm_runtime_put_sync(&sr->pdev->dev); pm_runtime_put_sync_suspend(&sr->pdev->dev);
} }
/** /**
...@@ -860,6 +860,7 @@ static int __init omap_sr_probe(struct platform_device *pdev) ...@@ -860,6 +860,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
pm_runtime_enable(&pdev->dev); pm_runtime_enable(&pdev->dev);
pm_runtime_irq_safe(&pdev->dev);
sr_info->pdev = pdev; sr_info->pdev = pdev;
sr_info->srid = pdev->id; sr_info->srid = pdev->id;
......
...@@ -293,7 +293,8 @@ static void __init omap2_gp_clocksource_init(int gptimer_id, ...@@ -293,7 +293,8 @@ static void __init omap2_gp_clocksource_init(int gptimer_id,
pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n", pr_info("OMAP clocksource: GPTIMER%d at %lu Hz\n",
gptimer_id, clksrc.rate); gptimer_id, clksrc.rate);
__omap_dm_timer_load_start(clksrc.io_base, OMAP_TIMER_CTRL_ST, 0, 1); __omap_dm_timer_load_start(clksrc.io_base,
OMAP_TIMER_CTRL_ST | OMAP_TIMER_CTRL_AR, 0, 1);
init_sched_clock(&cd, dmtimer_update_sched_clock, 32, clksrc.rate); init_sched_clock(&cd, dmtimer_update_sched_clock, 32, clksrc.rate);
if (clocksource_register_hz(&clocksource_gpt, clksrc.rate)) if (clocksource_register_hz(&clocksource_gpt, clksrc.rate))
......
...@@ -48,14 +48,7 @@ void __init omap_pmic_init(int bus, u32 clkrate, ...@@ -48,14 +48,7 @@ void __init omap_pmic_init(int bus, u32 clkrate,
omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1); omap_register_i2c_bus(bus, clkrate, &pmic_i2c_board_info, 1);
} }
static struct twl4030_usb_data omap4_usb_pdata = { #if defined(CONFIG_ARCH_OMAP3)
.phy_init = omap4430_phy_init,
.phy_exit = omap4430_phy_exit,
.phy_power = omap4430_phy_power,
.phy_set_clock = omap4430_phy_set_clk,
.phy_suspend = omap4430_phy_suspend,
};
static struct twl4030_usb_data omap3_usb_pdata = { static struct twl4030_usb_data omap3_usb_pdata = {
.usb_mode = T2_USB_MODE_ULPI, .usb_mode = T2_USB_MODE_ULPI,
}; };
...@@ -122,6 +115,45 @@ static struct regulator_init_data omap3_vpll2_idata = { ...@@ -122,6 +115,45 @@ static struct regulator_init_data omap3_vpll2_idata = {
.consumer_supplies = omap3_vpll2_supplies, .consumer_supplies = omap3_vpll2_supplies,
}; };
void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
u32 pdata_flags, u32 regulators_flags)
{
if (!pmic_data->irq_base)
pmic_data->irq_base = TWL4030_IRQ_BASE;
if (!pmic_data->irq_end)
pmic_data->irq_end = TWL4030_IRQ_END;
/* Common platform data configurations */
if (pdata_flags & TWL_COMMON_PDATA_USB && !pmic_data->usb)
pmic_data->usb = &omap3_usb_pdata;
if (pdata_flags & TWL_COMMON_PDATA_BCI && !pmic_data->bci)
pmic_data->bci = &omap3_bci_pdata;
if (pdata_flags & TWL_COMMON_PDATA_MADC && !pmic_data->madc)
pmic_data->madc = &omap3_madc_pdata;
if (pdata_flags & TWL_COMMON_PDATA_AUDIO && !pmic_data->audio)
pmic_data->audio = &omap3_audio_pdata;
/* Common regulator configurations */
if (regulators_flags & TWL_COMMON_REGULATOR_VDAC && !pmic_data->vdac)
pmic_data->vdac = &omap3_vdac_idata;
if (regulators_flags & TWL_COMMON_REGULATOR_VPLL2 && !pmic_data->vpll2)
pmic_data->vpll2 = &omap3_vpll2_idata;
}
#endif /* CONFIG_ARCH_OMAP3 */
#if defined(CONFIG_ARCH_OMAP4)
static struct twl4030_usb_data omap4_usb_pdata = {
.phy_init = omap4430_phy_init,
.phy_exit = omap4430_phy_exit,
.phy_power = omap4430_phy_power,
.phy_set_clock = omap4430_phy_set_clk,
.phy_suspend = omap4430_phy_suspend,
};
static struct regulator_init_data omap4_vdac_idata = { static struct regulator_init_data omap4_vdac_idata = {
.constraints = { .constraints = {
.min_uV = 1800000, .min_uV = 1800000,
...@@ -273,32 +305,4 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data, ...@@ -273,32 +305,4 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data,
!pmic_data->clk32kg) !pmic_data->clk32kg)
pmic_data->clk32kg = &omap4_clk32kg_idata; pmic_data->clk32kg = &omap4_clk32kg_idata;
} }
#endif /* CONFIG_ARCH_OMAP4 */
void __init omap3_pmic_get_config(struct twl4030_platform_data *pmic_data,
u32 pdata_flags, u32 regulators_flags)
{
if (!pmic_data->irq_base)
pmic_data->irq_base = TWL4030_IRQ_BASE;
if (!pmic_data->irq_end)
pmic_data->irq_end = TWL4030_IRQ_END;
/* Common platform data configurations */
if (pdata_flags & TWL_COMMON_PDATA_USB && !pmic_data->usb)
pmic_data->usb = &omap3_usb_pdata;
if (pdata_flags & TWL_COMMON_PDATA_BCI && !pmic_data->bci)
pmic_data->bci = &omap3_bci_pdata;
if (pdata_flags & TWL_COMMON_PDATA_MADC && !pmic_data->madc)
pmic_data->madc = &omap3_madc_pdata;
if (pdata_flags & TWL_COMMON_PDATA_AUDIO && !pmic_data->audio)
pmic_data->audio = &omap3_audio_pdata;
/* Common regulator configurations */
if (regulators_flags & TWL_COMMON_REGULATOR_VDAC && !pmic_data->vdac)
pmic_data->vdac = &omap3_vdac_idata;
if (regulators_flags & TWL_COMMON_REGULATOR_VPLL2 && !pmic_data->vpll2)
pmic_data->vpll2 = &omap3_vpll2_idata;
}
...@@ -13,6 +13,7 @@ config ARCH_OMAP1 ...@@ -13,6 +13,7 @@ config ARCH_OMAP1
bool "TI OMAP1" bool "TI OMAP1"
select CLKDEV_LOOKUP select CLKDEV_LOOKUP
select CLKSRC_MMIO select CLKSRC_MMIO
select GENERIC_IRQ_CHIP
help help
"Systems based on omap7xx, omap15xx or omap16xx" "Systems based on omap7xx, omap15xx or omap16xx"
......
...@@ -195,6 +195,11 @@ ...@@ -195,6 +195,11 @@
#define OMAP36XX_DMA_UART4_TX 81 /* S_DMA_80 */ #define OMAP36XX_DMA_UART4_TX 81 /* S_DMA_80 */
#define OMAP36XX_DMA_UART4_RX 82 /* S_DMA_81 */ #define OMAP36XX_DMA_UART4_RX 82 /* S_DMA_81 */
/* Only for AM35xx */
#define AM35XX_DMA_UART4_TX 54
#define AM35XX_DMA_UART4_RX 55
/*----------------------------------------------------------------------------*/ /*----------------------------------------------------------------------------*/
#define OMAP1_DMA_TOUT_IRQ (1 << 0) #define OMAP1_DMA_TOUT_IRQ (1 << 0)
......
...@@ -357,6 +357,7 @@ ...@@ -357,6 +357,7 @@
#define INT_35XX_EMAC_C0_TX_PULSE_IRQ 69 #define INT_35XX_EMAC_C0_TX_PULSE_IRQ 69
#define INT_35XX_EMAC_C0_MISC_PULSE_IRQ 70 #define INT_35XX_EMAC_C0_MISC_PULSE_IRQ 70
#define INT_35XX_USBOTG_IRQ 71 #define INT_35XX_USBOTG_IRQ 71
#define INT_35XX_UART4 84
#define INT_35XX_CCDC_VD0_IRQ 88 #define INT_35XX_CCDC_VD0_IRQ 88
#define INT_35XX_CCDC_VD1_IRQ 92 #define INT_35XX_CCDC_VD1_IRQ 92
#define INT_35XX_CCDC_VD2_IRQ 93 #define INT_35XX_CCDC_VD2_IRQ 93
......
...@@ -56,6 +56,9 @@ ...@@ -56,6 +56,9 @@
#define TI816X_UART2_BASE 0x48022000 #define TI816X_UART2_BASE 0x48022000
#define TI816X_UART3_BASE 0x48024000 #define TI816X_UART3_BASE 0x48024000
/* AM3505/3517 UART4 */
#define AM35XX_UART4_BASE 0x4809E000 /* Only on AM3505/3517 */
/* External port on Zoom2/3 */ /* External port on Zoom2/3 */
#define ZOOM_UART_BASE 0x10000000 #define ZOOM_UART_BASE 0x10000000
#define ZOOM_UART_VIRT 0xfa400000 #define ZOOM_UART_VIRT 0xfa400000
......
...@@ -423,9 +423,6 @@ static void sgtable_fill_kmalloc(struct sg_table *sgt, u32 pa, u32 da, ...@@ -423,9 +423,6 @@ static void sgtable_fill_kmalloc(struct sg_table *sgt, u32 pa, u32 da,
{ {
unsigned int i; unsigned int i;
struct scatterlist *sg; struct scatterlist *sg;
void *va;
va = phys_to_virt(pa);
for_each_sg(sgt->sgl, sg, sgt->nents, i) { for_each_sg(sgt->sgl, sg, sgt->nents, i) {
unsigned bytes; unsigned bytes;
......
...@@ -910,7 +910,7 @@ omapl138_case_a3 MACH_OMAPL138_CASE_A3 OMAPL138_CASE_A3 3280 ...@@ -910,7 +910,7 @@ omapl138_case_a3 MACH_OMAPL138_CASE_A3 OMAPL138_CASE_A3 3280
uemd MACH_UEMD UEMD 3281 uemd MACH_UEMD UEMD 3281
ccwmx51mut MACH_CCWMX51MUT CCWMX51MUT 3282 ccwmx51mut MACH_CCWMX51MUT CCWMX51MUT 3282
rockhopper MACH_ROCKHOPPER ROCKHOPPER 3283 rockhopper MACH_ROCKHOPPER ROCKHOPPER 3283
nookcolor MACH_NOOKCOLOR NOOKCOLOR 3284 encore MACH_ENCORE ENCORE 3284
hkdkc100 MACH_HKDKC100 HKDKC100 3285 hkdkc100 MACH_HKDKC100 HKDKC100 3285
ts42xx MACH_TS42XX TS42XX 3286 ts42xx MACH_TS42XX TS42XX 3286
aebl MACH_AEBL AEBL 3287 aebl MACH_AEBL AEBL 3287
......
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