Merge branch 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into fixes
* 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap: ARM: OMAP2+: arch/arm/mach-omap2/smartreflex.c: add missing iounmap ARM: OMAP2+: arch/arm/mach-omap2/devices.c: introduce missing kfree ARM: OMAP: fix MMC2 loopback clock handling ARM: OMAP: fix erroneous mmc2 clock change on mmc3 setup ARM: OMAP2+: GPMC: fix device size setup ARM: OMAP2+: timer: Fix crash due to wrong arg to __omap_dm_timer_read_counter ARM: OMAP3: hwmod data: register dss hwmods after dss_core ARM: OMAP2/3: PRM: fix missing plat/irqs.h build breakage ARM: OMAP2+: io: fix compilation breakage on 2420-only configs ARM: OMAP4: hwmod data: Add names for DMIC memory address space ARM: OMAP3: hwmod data: add SYSC_HAS_ENAWAKEUP for dispc ARM: OMAP2+: hwmod data: split omap2/3 dispc hwmod class ARM: OMAP2: fix regulator warnings ARM: OMAP2: fix omap3 touchbook kconfig warning i2c: OMAP: Fix OMAP1 build error
This commit is contained in:
commit
4a81220a61
|
@ -213,13 +213,12 @@ config MACH_OMAP3_PANDORA
|
||||||
depends on ARCH_OMAP3
|
depends on ARCH_OMAP3
|
||||||
default y
|
default y
|
||||||
select OMAP_PACKAGE_CBB
|
select OMAP_PACKAGE_CBB
|
||||||
select REGULATOR_FIXED_VOLTAGE
|
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||||
|
|
||||||
config MACH_OMAP3_TOUCHBOOK
|
config MACH_OMAP3_TOUCHBOOK
|
||||||
bool "OMAP3 Touch Book"
|
bool "OMAP3 Touch Book"
|
||||||
depends on ARCH_OMAP3
|
depends on ARCH_OMAP3
|
||||||
default y
|
default y
|
||||||
select BACKLIGHT_CLASS_DEVICE
|
|
||||||
|
|
||||||
config MACH_OMAP_3430SDP
|
config MACH_OMAP_3430SDP
|
||||||
bool "OMAP 3430 SDP board"
|
bool "OMAP 3430 SDP board"
|
||||||
|
@ -265,7 +264,7 @@ config MACH_OMAP_ZOOM2
|
||||||
select SERIAL_8250
|
select SERIAL_8250
|
||||||
select SERIAL_CORE_CONSOLE
|
select SERIAL_CORE_CONSOLE
|
||||||
select SERIAL_8250_CONSOLE
|
select SERIAL_8250_CONSOLE
|
||||||
select REGULATOR_FIXED_VOLTAGE
|
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||||
|
|
||||||
config MACH_OMAP_ZOOM3
|
config MACH_OMAP_ZOOM3
|
||||||
bool "OMAP3630 Zoom3 board"
|
bool "OMAP3630 Zoom3 board"
|
||||||
|
@ -275,7 +274,7 @@ config MACH_OMAP_ZOOM3
|
||||||
select SERIAL_8250
|
select SERIAL_8250
|
||||||
select SERIAL_CORE_CONSOLE
|
select SERIAL_CORE_CONSOLE
|
||||||
select SERIAL_8250_CONSOLE
|
select SERIAL_8250_CONSOLE
|
||||||
select REGULATOR_FIXED_VOLTAGE
|
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||||
|
|
||||||
config MACH_CM_T35
|
config MACH_CM_T35
|
||||||
bool "CompuLab CM-T35/CM-T3730 modules"
|
bool "CompuLab CM-T35/CM-T3730 modules"
|
||||||
|
@ -334,7 +333,7 @@ config MACH_OMAP_4430SDP
|
||||||
depends on ARCH_OMAP4
|
depends on ARCH_OMAP4
|
||||||
select OMAP_PACKAGE_CBL
|
select OMAP_PACKAGE_CBL
|
||||||
select OMAP_PACKAGE_CBS
|
select OMAP_PACKAGE_CBS
|
||||||
select REGULATOR_FIXED_VOLTAGE
|
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||||
|
|
||||||
config MACH_OMAP4_PANDA
|
config MACH_OMAP4_PANDA
|
||||||
bool "OMAP4 Panda Board"
|
bool "OMAP4 Panda Board"
|
||||||
|
@ -342,7 +341,7 @@ config MACH_OMAP4_PANDA
|
||||||
depends on ARCH_OMAP4
|
depends on ARCH_OMAP4
|
||||||
select OMAP_PACKAGE_CBL
|
select OMAP_PACKAGE_CBL
|
||||||
select OMAP_PACKAGE_CBS
|
select OMAP_PACKAGE_CBS
|
||||||
select REGULATOR_FIXED_VOLTAGE
|
select REGULATOR_FIXED_VOLTAGE if REGULATOR
|
||||||
|
|
||||||
config OMAP3_EMU
|
config OMAP3_EMU
|
||||||
bool "OMAP3 debugging peripherals"
|
bool "OMAP3 debugging peripherals"
|
||||||
|
|
|
@ -405,6 +405,7 @@ static int omap_mcspi_init(struct omap_hwmod *oh, void *unused)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
pr_err("Invalid McSPI Revision value\n");
|
pr_err("Invalid McSPI Revision value\n");
|
||||||
|
kfree(pdata);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -528,7 +528,13 @@ int gpmc_cs_configure(int cs, int cmd, int wval)
|
||||||
|
|
||||||
case GPMC_CONFIG_DEV_SIZE:
|
case GPMC_CONFIG_DEV_SIZE:
|
||||||
regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
|
regval = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
|
||||||
|
|
||||||
|
/* clear 2 target bits */
|
||||||
|
regval &= ~GPMC_CONFIG1_DEVICESIZE(3);
|
||||||
|
|
||||||
|
/* set the proper value */
|
||||||
regval |= GPMC_CONFIG1_DEVICESIZE(wval);
|
regval |= GPMC_CONFIG1_DEVICESIZE(wval);
|
||||||
|
|
||||||
gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
|
gpmc_cs_write_reg(cs, GPMC_CS_CONFIG1, regval);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -175,14 +175,15 @@ static void hsmmc2_select_input_clk_src(struct omap_mmc_platform_data *mmc)
|
||||||
{
|
{
|
||||||
u32 reg;
|
u32 reg;
|
||||||
|
|
||||||
if (mmc->slots[0].internal_clock) {
|
reg = omap_ctrl_readl(control_devconf1_offset);
|
||||||
reg = omap_ctrl_readl(control_devconf1_offset);
|
if (mmc->slots[0].internal_clock)
|
||||||
reg |= OMAP2_MMCSDIO2ADPCLKISEL;
|
reg |= OMAP2_MMCSDIO2ADPCLKISEL;
|
||||||
omap_ctrl_writel(reg, control_devconf1_offset);
|
else
|
||||||
}
|
reg &= ~OMAP2_MMCSDIO2ADPCLKISEL;
|
||||||
|
omap_ctrl_writel(reg, control_devconf1_offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hsmmc23_before_set_reg(struct device *dev, int slot,
|
static void hsmmc2_before_set_reg(struct device *dev, int slot,
|
||||||
int power_on, int vdd)
|
int power_on, int vdd)
|
||||||
{
|
{
|
||||||
struct omap_mmc_platform_data *mmc = dev->platform_data;
|
struct omap_mmc_platform_data *mmc = dev->platform_data;
|
||||||
|
@ -407,14 +408,13 @@ static int __init omap_hsmmc_pdata_init(struct omap2_hsmmc_info *c,
|
||||||
c->caps &= ~MMC_CAP_8_BIT_DATA;
|
c->caps &= ~MMC_CAP_8_BIT_DATA;
|
||||||
c->caps |= MMC_CAP_4_BIT_DATA;
|
c->caps |= MMC_CAP_4_BIT_DATA;
|
||||||
}
|
}
|
||||||
/* FALLTHROUGH */
|
|
||||||
case 3:
|
|
||||||
if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
|
if (mmc->slots[0].features & HSMMC_HAS_PBIAS) {
|
||||||
/* off-chip level shifting, or none */
|
/* off-chip level shifting, or none */
|
||||||
mmc->slots[0].before_set_reg = hsmmc23_before_set_reg;
|
mmc->slots[0].before_set_reg = hsmmc2_before_set_reg;
|
||||||
mmc->slots[0].after_set_reg = NULL;
|
mmc->slots[0].after_set_reg = NULL;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 3:
|
||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
mmc->slots[0].before_set_reg = NULL;
|
mmc->slots[0].before_set_reg = NULL;
|
||||||
|
|
|
@ -388,7 +388,7 @@ static void __init omap_hwmod_init_postsetup(void)
|
||||||
omap_pm_if_early_init();
|
omap_pm_if_early_init();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_ARCH_OMAP2
|
#ifdef CONFIG_SOC_OMAP2420
|
||||||
void __init omap2420_init_early(void)
|
void __init omap2420_init_early(void)
|
||||||
{
|
{
|
||||||
omap2_set_globals_242x();
|
omap2_set_globals_242x();
|
||||||
|
@ -400,7 +400,9 @@ void __init omap2420_init_early(void)
|
||||||
omap_hwmod_init_postsetup();
|
omap_hwmod_init_postsetup();
|
||||||
omap2420_clk_init();
|
omap2420_clk_init();
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_SOC_OMAP2430
|
||||||
void __init omap2430_init_early(void)
|
void __init omap2430_init_early(void)
|
||||||
{
|
{
|
||||||
omap2_set_globals_243x();
|
omap2_set_globals_243x();
|
||||||
|
|
|
@ -55,27 +55,6 @@ struct omap_hwmod_class omap2_dss_hwmod_class = {
|
||||||
.reset = omap_dss_reset,
|
.reset = omap_dss_reset,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
|
||||||
* 'dispc' class
|
|
||||||
* display controller
|
|
||||||
*/
|
|
||||||
|
|
||||||
static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
|
|
||||||
.rev_offs = 0x0000,
|
|
||||||
.sysc_offs = 0x0010,
|
|
||||||
.syss_offs = 0x0014,
|
|
||||||
.sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
|
|
||||||
SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
|
|
||||||
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
|
||||||
MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
|
|
||||||
.sysc_fields = &omap_hwmod_sysc_type1,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct omap_hwmod_class omap2_dispc_hwmod_class = {
|
|
||||||
.name = "dispc",
|
|
||||||
.sysc = &omap2_dispc_sysc,
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 'rfbi' class
|
* 'rfbi' class
|
||||||
* remote frame buffer interface
|
* remote frame buffer interface
|
||||||
|
|
|
@ -28,6 +28,28 @@ struct omap_hwmod_dma_info omap2xxx_dss_sdma_chs[] = {
|
||||||
{ .name = "dispc", .dma_req = 5 },
|
{ .name = "dispc", .dma_req = 5 },
|
||||||
{ .dma_req = -1 }
|
{ .dma_req = -1 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 'dispc' class
|
||||||
|
* display controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
static struct omap_hwmod_class_sysconfig omap2_dispc_sysc = {
|
||||||
|
.rev_offs = 0x0000,
|
||||||
|
.sysc_offs = 0x0010,
|
||||||
|
.syss_offs = 0x0014,
|
||||||
|
.sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
|
||||||
|
SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE),
|
||||||
|
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
||||||
|
MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
|
||||||
|
.sysc_fields = &omap_hwmod_sysc_type1,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct omap_hwmod_class omap2_dispc_hwmod_class = {
|
||||||
|
.name = "dispc",
|
||||||
|
.sysc = &omap2_dispc_sysc,
|
||||||
|
};
|
||||||
|
|
||||||
/* OMAP2xxx Timer Common */
|
/* OMAP2xxx Timer Common */
|
||||||
static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
|
static struct omap_hwmod_class_sysconfig omap2xxx_timer_sysc = {
|
||||||
.rev_offs = 0x0000,
|
.rev_offs = 0x0000,
|
||||||
|
|
|
@ -1480,6 +1480,28 @@ static struct omap_hwmod omap3xxx_dss_core_hwmod = {
|
||||||
.masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
|
.masters_cnt = ARRAY_SIZE(omap3xxx_dss_masters),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 'dispc' class
|
||||||
|
* display controller
|
||||||
|
*/
|
||||||
|
|
||||||
|
static struct omap_hwmod_class_sysconfig omap3_dispc_sysc = {
|
||||||
|
.rev_offs = 0x0000,
|
||||||
|
.sysc_offs = 0x0010,
|
||||||
|
.syss_offs = 0x0014,
|
||||||
|
.sysc_flags = (SYSC_HAS_SIDLEMODE | SYSC_HAS_MIDLEMODE |
|
||||||
|
SYSC_HAS_SOFTRESET | SYSC_HAS_AUTOIDLE |
|
||||||
|
SYSC_HAS_ENAWAKEUP),
|
||||||
|
.idlemodes = (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART |
|
||||||
|
MSTANDBY_FORCE | MSTANDBY_NO | MSTANDBY_SMART),
|
||||||
|
.sysc_fields = &omap_hwmod_sysc_type1,
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct omap_hwmod_class omap3_dispc_hwmod_class = {
|
||||||
|
.name = "dispc",
|
||||||
|
.sysc = &omap3_dispc_sysc,
|
||||||
|
};
|
||||||
|
|
||||||
/* l4_core -> dss_dispc */
|
/* l4_core -> dss_dispc */
|
||||||
static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
|
static struct omap_hwmod_ocp_if omap3xxx_l4_core__dss_dispc = {
|
||||||
.master = &omap3xxx_l4_core_hwmod,
|
.master = &omap3xxx_l4_core_hwmod,
|
||||||
|
@ -1503,7 +1525,7 @@ static struct omap_hwmod_ocp_if *omap3xxx_dss_dispc_slaves[] = {
|
||||||
|
|
||||||
static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
|
static struct omap_hwmod omap3xxx_dss_dispc_hwmod = {
|
||||||
.name = "dss_dispc",
|
.name = "dss_dispc",
|
||||||
.class = &omap2_dispc_hwmod_class,
|
.class = &omap3_dispc_hwmod_class,
|
||||||
.mpu_irqs = omap2_dispc_irqs,
|
.mpu_irqs = omap2_dispc_irqs,
|
||||||
.main_clk = "dss1_alwon_fck",
|
.main_clk = "dss1_alwon_fck",
|
||||||
.prcm = {
|
.prcm = {
|
||||||
|
@ -3523,12 +3545,6 @@ static __initdata struct omap_hwmod *omap3xxx_hwmods[] = {
|
||||||
&omap3xxx_uart2_hwmod,
|
&omap3xxx_uart2_hwmod,
|
||||||
&omap3xxx_uart3_hwmod,
|
&omap3xxx_uart3_hwmod,
|
||||||
|
|
||||||
/* dss class */
|
|
||||||
&omap3xxx_dss_dispc_hwmod,
|
|
||||||
&omap3xxx_dss_dsi1_hwmod,
|
|
||||||
&omap3xxx_dss_rfbi_hwmod,
|
|
||||||
&omap3xxx_dss_venc_hwmod,
|
|
||||||
|
|
||||||
/* i2c class */
|
/* i2c class */
|
||||||
&omap3xxx_i2c1_hwmod,
|
&omap3xxx_i2c1_hwmod,
|
||||||
&omap3xxx_i2c2_hwmod,
|
&omap3xxx_i2c2_hwmod,
|
||||||
|
@ -3635,6 +3651,15 @@ static __initdata struct omap_hwmod *am35xx_hwmods[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static __initdata struct omap_hwmod *omap3xxx_dss_hwmods[] = {
|
||||||
|
/* dss class */
|
||||||
|
&omap3xxx_dss_dispc_hwmod,
|
||||||
|
&omap3xxx_dss_dsi1_hwmod,
|
||||||
|
&omap3xxx_dss_rfbi_hwmod,
|
||||||
|
&omap3xxx_dss_venc_hwmod,
|
||||||
|
NULL
|
||||||
|
};
|
||||||
|
|
||||||
int __init omap3xxx_hwmod_init(void)
|
int __init omap3xxx_hwmod_init(void)
|
||||||
{
|
{
|
||||||
int r;
|
int r;
|
||||||
|
@ -3708,6 +3733,21 @@ int __init omap3xxx_hwmod_init(void)
|
||||||
|
|
||||||
if (h)
|
if (h)
|
||||||
r = omap_hwmod_register(h);
|
r = omap_hwmod_register(h);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DSS code presumes that dss_core hwmod is handled first,
|
||||||
|
* _before_ any other DSS related hwmods so register common
|
||||||
|
* DSS hwmods last to ensure that dss_core is already registered.
|
||||||
|
* Otherwise some change things may happen, for ex. if dispc
|
||||||
|
* is handled before dss_core and DSS is enabled in bootloader
|
||||||
|
* DIPSC will be reset with outputs enabled which sometimes leads
|
||||||
|
* to unrecoverable L3 error.
|
||||||
|
* XXX The long-term fix to this is to ensure modules are set up
|
||||||
|
* in dependency order in the hwmod core code.
|
||||||
|
*/
|
||||||
|
r = omap_hwmod_register(omap3xxx_dss_hwmods);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1031,6 +1031,7 @@ static struct omap_hwmod_dma_info omap44xx_dmic_sdma_reqs[] = {
|
||||||
|
|
||||||
static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
|
static struct omap_hwmod_addr_space omap44xx_dmic_addrs[] = {
|
||||||
{
|
{
|
||||||
|
.name = "mpu",
|
||||||
.pa_start = 0x4012e000,
|
.pa_start = 0x4012e000,
|
||||||
.pa_end = 0x4012e07f,
|
.pa_end = 0x4012e07f,
|
||||||
.flags = ADDR_TYPE_RT
|
.flags = ADDR_TYPE_RT
|
||||||
|
@ -1049,6 +1050,7 @@ static struct omap_hwmod_ocp_if omap44xx_l4_abe__dmic = {
|
||||||
|
|
||||||
static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
|
static struct omap_hwmod_addr_space omap44xx_dmic_dma_addrs[] = {
|
||||||
{
|
{
|
||||||
|
.name = "dma",
|
||||||
.pa_start = 0x4902e000,
|
.pa_start = 0x4902e000,
|
||||||
.pa_end = 0x4902e07f,
|
.pa_end = 0x4902e07f,
|
||||||
.flags = ADDR_TYPE_RT
|
.flags = ADDR_TYPE_RT
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
#include <plat/cpu.h>
|
#include <plat/cpu.h>
|
||||||
#include <plat/prcm.h>
|
#include <plat/prcm.h>
|
||||||
|
#include <plat/irqs.h>
|
||||||
|
|
||||||
#include "vp.h"
|
#include "vp.h"
|
||||||
|
|
||||||
|
|
|
@ -897,7 +897,7 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
||||||
ret = sr_late_init(sr_info);
|
ret = sr_late_init(sr_info);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
pr_warning("%s: Error in SR late init\n", __func__);
|
pr_warning("%s: Error in SR late init\n", __func__);
|
||||||
return ret;
|
goto err_iounmap;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -270,7 +270,7 @@ static struct clocksource clocksource_gpt = {
|
||||||
static u32 notrace dmtimer_read_sched_clock(void)
|
static u32 notrace dmtimer_read_sched_clock(void)
|
||||||
{
|
{
|
||||||
if (clksrc.reserved)
|
if (clksrc.reserved)
|
||||||
return __omap_dm_timer_read_counter(clksrc.io_base, 1);
|
return __omap_dm_timer_read_counter(&clksrc, 1);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1018,7 +1018,7 @@ omap_i2c_probe(struct platform_device *pdev)
|
||||||
goto err_release_region;
|
goto err_release_region;
|
||||||
}
|
}
|
||||||
|
|
||||||
match = of_match_device(omap_i2c_of_match, &pdev->dev);
|
match = of_match_device(of_match_ptr(omap_i2c_of_match), &pdev->dev);
|
||||||
if (match) {
|
if (match) {
|
||||||
u32 freq = 100000; /* default to 100000 Hz */
|
u32 freq = 100000; /* default to 100000 Hz */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue