arm-soc: non-critical bug fixes
These bug fixes were not important enough to have them included in the v3.4 release, mostly because they cover harmless warnings or unrealistic configurations. Instead we queue them up to be picked up in the next merge window. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJPuw0dAAoJEIwa5zzehBx3CtUQAKLIckkoArg4Z9OBTT+bfTQG PU1PFOtL8hbqlXDy228tz2iG4GZQKyytN65SjE4cPdYjdE6Qfz/eq/EDnD7wkFsJ JSm9GlvPSzGOTNmORccc04V4vhfLZWdapzzgrqXGM0/OwoTgJLzJ21sezbFUdSGV AWSq/fXzuc45x7JC4ATQDN9uKG2EGIWF0K0Kn0nTc/h13mjlzwkKOT4yXIdNuudj vCmyoDRWwVzItfvA1RLpXfeAYneSWxb6r2QDhfaOaG4a0PL2bSdC0gw5DAGd0fdt xGDho125AJlmY+rlbkB5Ddn+eL6SroOCkYJF7nYQ/m5+1cpcnj0Wz19X9w04NX1Y QLcOW7H5Gn3GOdscJYANZ3GnOG7fdyCYHJDUcwF4U9HzW9QBKBJrcQYbarNsWNn0 J2OpyLfVrkf1EvUmHB1s/qJmTzjLzpq8/ky9BIi+MO3rdEJtny5FHZ2UZAfMIEGY nxK703Q8Cu7vvPSWclyJWSw8p5zwpeYwuxmLkMyLJ6nP/o5AA+VY6WLIuzQBW0BF rrZDdfKYptJnFgA4/ldRr/PSXadqICxj4r7M0UxZ4JHVP/a8gLLTmrvSHPyBWEdt t8tFBTeEoaz5Fx4Pv/SxWYr/wphWh4LT5bzLXdz9SCB1BwrbxlwbPyC7AVhz4yk3 4smRtKcQNFJqUMi+vIWU =yCUM -----END PGP SIGNATURE----- Merge tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc Pull non-critical arm-soc bug fixes from Olof Johansson: "These bug fixes were not important enough to have them included in the v3.4 release, mostly because they cover harmless warnings or unrealistic configurations. Instead we queue them up to be picked up in the next merge window." Fixed up trivial conflict in arch/arm/mach-omap2/board-omap4panda.c * tag 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: ARM: spear6xx: remove board selection options ARM: OMAP: igep0020: Specify the VPLL2 regulator unconditionally ARM: OMAP2+: INTC: fix Kconfig option for TI81XX ARM: OMAP2+: remove incorrect irq_chip ack field ARM: OMAP4: Adding ID for OMAP4460 ES1.1 ARM: OMAP4: panda: add statics to remove warnings ARM: OMAP2+: Incorrect Register Offsets in OMAP Mailbox ARM: OMAP: fix trivial warnings for dspbridge arm: davinci: use for_each_set_bit_from ARM: OMAP4: hsmmc: check for null pointer ARM: OMAP1: fix compilation issue in board-sx1.c ARM: disable SUSPEND/ARCH_SUSPEND_POSSIBLE for ARCH_TEGRA ARM: davinci: da850-evm: fix section mismatch ARM: tegra: add pll_x freq table entry for 750MHz ARM: davinci: mark spi_board_info arguments as const ARM: davinci: fix incorrect pdctl next bit position
This commit is contained in:
commit
8dca6010d4
|
@ -2253,7 +2253,7 @@ menu "Power management options"
|
||||||
source "kernel/power/Kconfig"
|
source "kernel/power/Kconfig"
|
||||||
|
|
||||||
config ARCH_SUSPEND_POSSIBLE
|
config ARCH_SUSPEND_POSSIBLE
|
||||||
depends on !ARCH_S5PC100
|
depends on !ARCH_S5PC100 && !ARCH_TEGRA
|
||||||
depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
|
depends on CPU_ARM920T || CPU_ARM926T || CPU_SA1100 || \
|
||||||
CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
|
CPU_V6 || CPU_V6K || CPU_V7 || CPU_XSC3 || CPU_XSCALE
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
|
@ -284,7 +284,7 @@ static struct platform_device da850_evm_nandflash_device = {
|
||||||
.resource = da850_evm_nandflash_resource,
|
.resource = da850_evm_nandflash_resource,
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct platform_device *da850_evm_devices[] __initdata = {
|
static struct platform_device *da850_evm_devices[] = {
|
||||||
&da850_evm_nandflash_device,
|
&da850_evm_nandflash_device,
|
||||||
&da850_evm_norflash_device,
|
&da850_evm_norflash_device,
|
||||||
};
|
};
|
||||||
|
|
|
@ -72,7 +72,7 @@ void davinci_map_sysmod(void);
|
||||||
/* DM355 function declarations */
|
/* DM355 function declarations */
|
||||||
void __init dm355_init(void);
|
void __init dm355_init(void);
|
||||||
void dm355_init_spi0(unsigned chipselect_mask,
|
void dm355_init_spi0(unsigned chipselect_mask,
|
||||||
struct spi_board_info *info, unsigned len);
|
const struct spi_board_info *info, unsigned len);
|
||||||
void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata);
|
void __init dm355_init_asp1(u32 evt_enable, struct snd_platform_data *pdata);
|
||||||
void dm355_set_vpfe_config(struct vpfe_config *cfg);
|
void dm355_set_vpfe_config(struct vpfe_config *cfg);
|
||||||
|
|
||||||
|
@ -83,7 +83,7 @@ void __init dm365_init_vc(struct snd_platform_data *pdata);
|
||||||
void __init dm365_init_ks(struct davinci_ks_platform_data *pdata);
|
void __init dm365_init_ks(struct davinci_ks_platform_data *pdata);
|
||||||
void __init dm365_init_rtc(void);
|
void __init dm365_init_rtc(void);
|
||||||
void dm365_init_spi0(unsigned chipselect_mask,
|
void dm365_init_spi0(unsigned chipselect_mask,
|
||||||
struct spi_board_info *info, unsigned len);
|
const struct spi_board_info *info, unsigned len);
|
||||||
void dm365_set_vpfe_config(struct vpfe_config *cfg);
|
void dm365_set_vpfe_config(struct vpfe_config *cfg);
|
||||||
|
|
||||||
/* DM644x function declarations */
|
/* DM644x function declarations */
|
||||||
|
|
|
@ -831,7 +831,7 @@ static struct platform_device da8xx_spi_device[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
int __init da8xx_register_spi(int instance, struct spi_board_info *info,
|
int __init da8xx_register_spi(int instance, const struct spi_board_info *info,
|
||||||
unsigned len)
|
unsigned len)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
|
@ -424,7 +424,7 @@ static struct platform_device dm355_spi0_device = {
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init dm355_init_spi0(unsigned chipselect_mask,
|
void __init dm355_init_spi0(unsigned chipselect_mask,
|
||||||
struct spi_board_info *info, unsigned len)
|
const struct spi_board_info *info, unsigned len)
|
||||||
{
|
{
|
||||||
/* for now, assume we need MISO */
|
/* for now, assume we need MISO */
|
||||||
davinci_cfg_reg(DM355_SPI0_SDI);
|
davinci_cfg_reg(DM355_SPI0_SDI);
|
||||||
|
|
|
@ -676,7 +676,7 @@ static struct platform_device dm365_spi0_device = {
|
||||||
};
|
};
|
||||||
|
|
||||||
void __init dm365_init_spi0(unsigned chipselect_mask,
|
void __init dm365_init_spi0(unsigned chipselect_mask,
|
||||||
struct spi_board_info *info, unsigned len)
|
const struct spi_board_info *info, unsigned len)
|
||||||
{
|
{
|
||||||
davinci_cfg_reg(DM365_SPI0_SCLK);
|
davinci_cfg_reg(DM365_SPI0_SCLK);
|
||||||
davinci_cfg_reg(DM365_SPI0_SDI);
|
davinci_cfg_reg(DM365_SPI0_SDI);
|
||||||
|
|
|
@ -557,9 +557,9 @@ static int reserve_contiguous_slots(int ctlr, unsigned int id,
|
||||||
if (i == edma_cc[ctlr]->num_slots)
|
if (i == edma_cc[ctlr]->num_slots)
|
||||||
stop_slot = i;
|
stop_slot = i;
|
||||||
|
|
||||||
for (j = start_slot; j < stop_slot; j++)
|
j = start_slot;
|
||||||
if (test_bit(j, tmp_inuse))
|
for_each_set_bit_from(j, tmp_inuse, stop_slot)
|
||||||
clear_bit(j, edma_cc[ctlr]->edma_inuse);
|
clear_bit(j, edma_cc[ctlr]->edma_inuse);
|
||||||
|
|
||||||
if (count)
|
if (count)
|
||||||
return -EBUSY;
|
return -EBUSY;
|
||||||
|
|
|
@ -76,7 +76,8 @@ void __init da850_init(void);
|
||||||
int da830_register_edma(struct edma_rsv_info *rsv);
|
int da830_register_edma(struct edma_rsv_info *rsv);
|
||||||
int da850_register_edma(struct edma_rsv_info *rsv[2]);
|
int da850_register_edma(struct edma_rsv_info *rsv[2]);
|
||||||
int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
|
int da8xx_register_i2c(int instance, struct davinci_i2c_platform_data *pdata);
|
||||||
int da8xx_register_spi(int instance, struct spi_board_info *info, unsigned len);
|
int da8xx_register_spi(int instance,
|
||||||
|
const struct spi_board_info *info, unsigned len);
|
||||||
int da8xx_register_watchdog(void);
|
int da8xx_register_watchdog(void);
|
||||||
int da8xx_register_usb20(unsigned mA, unsigned potpgt);
|
int da8xx_register_usb20(unsigned mA, unsigned potpgt);
|
||||||
int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata);
|
int da8xx_register_usb11(struct da8xx_ohci_root_hub *pdata);
|
||||||
|
|
|
@ -246,7 +246,7 @@
|
||||||
#define MDSTAT_STATE_MASK 0x3f
|
#define MDSTAT_STATE_MASK 0x3f
|
||||||
#define PDSTAT_STATE_MASK 0x1f
|
#define PDSTAT_STATE_MASK 0x1f
|
||||||
#define MDCTL_FORCE BIT(31)
|
#define MDCTL_FORCE BIT(31)
|
||||||
#define PDCTL_NEXT BIT(1)
|
#define PDCTL_NEXT BIT(0)
|
||||||
#define PDCTL_EPCGOOD BIT(8)
|
#define PDCTL_EPCGOOD BIT(8)
|
||||||
|
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
|
|
|
@ -132,6 +132,7 @@ config MACH_OMAP_PALMTT
|
||||||
|
|
||||||
config MACH_SX1
|
config MACH_SX1
|
||||||
bool "Siemens SX1"
|
bool "Siemens SX1"
|
||||||
|
select I2C
|
||||||
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
depends on ARCH_OMAP1 && ARCH_OMAP15XX
|
||||||
help
|
help
|
||||||
Support for the Siemens SX1 phone. To boot the kernel,
|
Support for the Siemens SX1 phone. To boot the kernel,
|
||||||
|
|
|
@ -489,50 +489,6 @@ static struct platform_device omap_vwlan_device = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
static int omap4_twl6030_hsmmc_late_init(struct device *dev)
|
|
||||||
{
|
|
||||||
int irq = 0;
|
|
||||||
struct platform_device *pdev = container_of(dev,
|
|
||||||
struct platform_device, dev);
|
|
||||||
struct omap_mmc_platform_data *pdata = dev->platform_data;
|
|
||||||
|
|
||||||
/* Setting MMC1 Card detect Irq */
|
|
||||||
if (pdev->id == 0) {
|
|
||||||
irq = twl6030_mmc_card_detect_config();
|
|
||||||
if (irq < 0) {
|
|
||||||
pr_err("Failed configuring MMC1 card detect\n");
|
|
||||||
return irq;
|
|
||||||
}
|
|
||||||
pdata->slots[0].card_detect_irq = irq;
|
|
||||||
pdata->slots[0].card_detect = twl6030_mmc_card_detect;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
|
|
||||||
{
|
|
||||||
struct omap_mmc_platform_data *pdata;
|
|
||||||
|
|
||||||
/* dev can be null if CONFIG_MMC_OMAP_HS is not set */
|
|
||||||
if (!dev) {
|
|
||||||
pr_err("Failed %s\n", __func__);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pdata = dev->platform_data;
|
|
||||||
pdata->init = omap4_twl6030_hsmmc_late_init;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
|
|
||||||
{
|
|
||||||
struct omap2_hsmmc_info *c;
|
|
||||||
|
|
||||||
omap_hsmmc_init(controllers);
|
|
||||||
for (c = controllers; c->mmc; c++)
|
|
||||||
omap4_twl6030_hsmmc_set_late_init(&c->pdev->dev);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct regulator_init_data sdp4430_vaux1 = {
|
static struct regulator_init_data sdp4430_vaux1 = {
|
||||||
.constraints = {
|
.constraints = {
|
||||||
.min_uV = 1000000,
|
.min_uV = 1000000,
|
||||||
|
|
|
@ -519,7 +519,10 @@ static void __init igep_i2c_init(void)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB, 0);
|
omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_USB,
|
||||||
|
TWL_COMMON_REGULATOR_VPLL2);
|
||||||
|
igep_twldata.vpll2->constraints.apply_uV = true;
|
||||||
|
igep_twldata.vpll2->constraints.name = "VDVI";
|
||||||
|
|
||||||
if (machine_is_igep0020()) {
|
if (machine_is_igep0020()) {
|
||||||
/*
|
/*
|
||||||
|
@ -533,10 +536,7 @@ static void __init igep_i2c_init(void)
|
||||||
|
|
||||||
igep_twldata.keypad = &igep2_keypad_pdata;
|
igep_twldata.keypad = &igep2_keypad_pdata;
|
||||||
/* Get common pmic data */
|
/* Get common pmic data */
|
||||||
omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO,
|
omap3_pmic_get_config(&igep_twldata, TWL_COMMON_PDATA_AUDIO, 0);
|
||||||
TWL_COMMON_REGULATOR_VPLL2);
|
|
||||||
igep_twldata.vpll2->constraints.apply_uV = true;
|
|
||||||
igep_twldata.vpll2->constraints.name = "VDVI";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
omap3_pmic_init("twl4030", &igep_twldata);
|
omap3_pmic_init("twl4030", &igep_twldata);
|
||||||
|
|
|
@ -236,55 +236,6 @@ static struct wl12xx_platform_data omap_panda_wlan_data __initdata = {
|
||||||
.board_ref_clock = 2,
|
.board_ref_clock = 2,
|
||||||
};
|
};
|
||||||
|
|
||||||
static int omap4_twl6030_hsmmc_late_init(struct device *dev)
|
|
||||||
{
|
|
||||||
int irq = 0;
|
|
||||||
struct platform_device *pdev = container_of(dev,
|
|
||||||
struct platform_device, dev);
|
|
||||||
struct omap_mmc_platform_data *pdata = dev->platform_data;
|
|
||||||
|
|
||||||
if (!pdata) {
|
|
||||||
dev_err(dev, "%s: NULL platform data\n", __func__);
|
|
||||||
return -EINVAL;
|
|
||||||
}
|
|
||||||
/* Setting MMC1 Card detect Irq */
|
|
||||||
if (pdev->id == 0) {
|
|
||||||
irq = twl6030_mmc_card_detect_config();
|
|
||||||
if (irq < 0) {
|
|
||||||
dev_err(dev, "%s: Error card detect config(%d)\n",
|
|
||||||
__func__, irq);
|
|
||||||
return irq;
|
|
||||||
}
|
|
||||||
pdata->slots[0].card_detect = twl6030_mmc_card_detect;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
|
|
||||||
{
|
|
||||||
struct omap_mmc_platform_data *pdata;
|
|
||||||
|
|
||||||
/* dev can be null if CONFIG_MMC_OMAP_HS is not set */
|
|
||||||
if (!dev) {
|
|
||||||
pr_err("Failed omap4_twl6030_hsmmc_set_late_init\n");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
pdata = dev->platform_data;
|
|
||||||
|
|
||||||
pdata->init = omap4_twl6030_hsmmc_late_init;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
|
|
||||||
{
|
|
||||||
struct omap2_hsmmc_info *c;
|
|
||||||
|
|
||||||
omap_hsmmc_init(controllers);
|
|
||||||
for (c = controllers; c->mmc; c++)
|
|
||||||
omap4_twl6030_hsmmc_set_late_init(&c->pdev->dev);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static struct twl6040_codec_data twl6040_codec = {
|
static struct twl6040_codec_data twl6040_codec = {
|
||||||
/* single-step ramp for headset and handsfree */
|
/* single-step ramp for headset and handsfree */
|
||||||
.hs_left_step = 0x0f,
|
.hs_left_step = 0x0f,
|
||||||
|
|
|
@ -27,6 +27,7 @@
|
||||||
#ifndef __ASSEMBLER__
|
#ifndef __ASSEMBLER__
|
||||||
|
|
||||||
#include <linux/delay.h>
|
#include <linux/delay.h>
|
||||||
|
#include <linux/i2c/twl.h>
|
||||||
#include <plat/common.h>
|
#include <plat/common.h>
|
||||||
#include <asm/proc-fns.h>
|
#include <asm/proc-fns.h>
|
||||||
|
|
||||||
|
@ -252,6 +253,8 @@ static inline u32 omap4_mpuss_read_prev_context_state(void)
|
||||||
struct omap_sdrc_params;
|
struct omap_sdrc_params;
|
||||||
extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
|
extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
|
||||||
struct omap_sdrc_params *sdrc_cs1);
|
struct omap_sdrc_params *sdrc_cs1);
|
||||||
|
struct omap2_hsmmc_info;
|
||||||
|
extern int omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers);
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
|
#endif /* __ARCH_ARM_MACH_OMAP2PLUS_COMMON_H */
|
||||||
|
|
|
@ -57,8 +57,9 @@ static int __init omap_dsp_init(void)
|
||||||
|
|
||||||
if (pdata->phys_mempool_base) {
|
if (pdata->phys_mempool_base) {
|
||||||
pdata->phys_mempool_size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE;
|
pdata->phys_mempool_size = CONFIG_TIDSPBRIDGE_MEMPOOL_SIZE;
|
||||||
pr_info("%s: %x bytes @ %x\n", __func__,
|
pr_info("%s: %llx bytes @ %llx\n", __func__,
|
||||||
pdata->phys_mempool_size, pdata->phys_mempool_base);
|
(unsigned long long)pdata->phys_mempool_size,
|
||||||
|
(unsigned long long)pdata->phys_mempool_base);
|
||||||
}
|
}
|
||||||
|
|
||||||
pdev = platform_device_alloc("omap-dsp", -1);
|
pdev = platform_device_alloc("omap-dsp", -1);
|
||||||
|
|
|
@ -478,9 +478,12 @@ void __init omap4xxx_check_revision(void)
|
||||||
case 0xb94e:
|
case 0xb94e:
|
||||||
switch (rev) {
|
switch (rev) {
|
||||||
case 0:
|
case 0:
|
||||||
default:
|
|
||||||
omap_revision = OMAP4460_REV_ES1_0;
|
omap_revision = OMAP4460_REV_ES1_0;
|
||||||
break;
|
break;
|
||||||
|
case 2:
|
||||||
|
default:
|
||||||
|
omap_revision = OMAP4460_REV_ES1_1;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 0xb975:
|
case 0xb975:
|
||||||
|
|
|
@ -150,7 +150,6 @@ omap_alloc_gc(void __iomem *base, unsigned int irq_start, unsigned int num)
|
||||||
ct->chip.irq_mask = irq_gc_mask_disable_reg;
|
ct->chip.irq_mask = irq_gc_mask_disable_reg;
|
||||||
ct->chip.irq_unmask = irq_gc_unmask_enable_reg;
|
ct->chip.irq_unmask = irq_gc_unmask_enable_reg;
|
||||||
|
|
||||||
ct->regs.ack = INTC_CONTROL;
|
|
||||||
ct->regs.enable = INTC_MIR_CLEAR0;
|
ct->regs.enable = INTC_MIR_CLEAR0;
|
||||||
ct->regs.disable = INTC_MIR_SET0;
|
ct->regs.disable = INTC_MIR_SET0;
|
||||||
irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE,
|
irq_setup_generic_chip(gc, IRQ_MSK(num), IRQ_GC_INIT_MASK_CACHE,
|
||||||
|
@ -232,7 +231,7 @@ static inline void omap_intc_handle_irq(void __iomem *base_addr, struct pt_regs
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
irqnr = readl_relaxed(base_addr + 0xd8);
|
irqnr = readl_relaxed(base_addr + 0xd8);
|
||||||
#ifdef CONFIG_SOC_OMAPTI816X
|
#ifdef CONFIG_SOC_OMAPTI81XX
|
||||||
if (irqnr)
|
if (irqnr)
|
||||||
goto out;
|
goto out;
|
||||||
irqnr = readl_relaxed(base_addr + 0xf8);
|
irqnr = readl_relaxed(base_addr + 0xf8);
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
#define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u))
|
#define MAILBOX_IRQSTATUS(u) (0x100 + 8 * (u))
|
||||||
#define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u))
|
#define MAILBOX_IRQENABLE(u) (0x104 + 8 * (u))
|
||||||
|
|
||||||
#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 10 * (u))
|
#define OMAP4_MAILBOX_IRQSTATUS(u) (0x104 + 0x10 * (u))
|
||||||
#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 10 * (u))
|
#define OMAP4_MAILBOX_IRQENABLE(u) (0x108 + 0x10 * (u))
|
||||||
#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 10 * (u))
|
#define OMAP4_MAILBOX_IRQENABLE_CLR(u) (0x10c + 0x10 * (u))
|
||||||
|
|
||||||
#define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m)))
|
#define MAILBOX_IRQ_NEWMSG(m) (1 << (2 * (m)))
|
||||||
#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1))
|
#define MAILBOX_IRQ_NOTFULL(m) (1 << (2 * (m) + 1))
|
||||||
|
|
|
@ -25,11 +25,13 @@
|
||||||
#include <plat/irqs.h>
|
#include <plat/irqs.h>
|
||||||
#include <plat/sram.h>
|
#include <plat/sram.h>
|
||||||
#include <plat/omap-secure.h>
|
#include <plat/omap-secure.h>
|
||||||
|
#include <plat/mmc.h>
|
||||||
|
|
||||||
#include <mach/hardware.h>
|
#include <mach/hardware.h>
|
||||||
#include <mach/omap-wakeupgen.h>
|
#include <mach/omap-wakeupgen.h>
|
||||||
|
|
||||||
#include "common.h"
|
#include "common.h"
|
||||||
|
#include "hsmmc.h"
|
||||||
#include "omap4-sar-layout.h"
|
#include "omap4-sar-layout.h"
|
||||||
#include <linux/export.h>
|
#include <linux/export.h>
|
||||||
|
|
||||||
|
@ -207,3 +209,59 @@ static int __init omap4_sar_ram_init(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
early_initcall(omap4_sar_ram_init);
|
early_initcall(omap4_sar_ram_init);
|
||||||
|
|
||||||
|
#if defined(CONFIG_MMC_OMAP_HS) || defined(CONFIG_MMC_OMAP_HS_MODULE)
|
||||||
|
static int omap4_twl6030_hsmmc_late_init(struct device *dev)
|
||||||
|
{
|
||||||
|
int irq = 0;
|
||||||
|
struct platform_device *pdev = container_of(dev,
|
||||||
|
struct platform_device, dev);
|
||||||
|
struct omap_mmc_platform_data *pdata = dev->platform_data;
|
||||||
|
|
||||||
|
/* Setting MMC1 Card detect Irq */
|
||||||
|
if (pdev->id == 0) {
|
||||||
|
irq = twl6030_mmc_card_detect_config();
|
||||||
|
if (irq < 0) {
|
||||||
|
dev_err(dev, "%s: Error card detect config(%d)\n",
|
||||||
|
__func__, irq);
|
||||||
|
return irq;
|
||||||
|
}
|
||||||
|
pdata->slots[0].card_detect_irq = irq;
|
||||||
|
pdata->slots[0].card_detect = twl6030_mmc_card_detect;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static __init void omap4_twl6030_hsmmc_set_late_init(struct device *dev)
|
||||||
|
{
|
||||||
|
struct omap_mmc_platform_data *pdata;
|
||||||
|
|
||||||
|
/* dev can be null if CONFIG_MMC_OMAP_HS is not set */
|
||||||
|
if (!dev) {
|
||||||
|
pr_err("Failed %s\n", __func__);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
pdata = dev->platform_data;
|
||||||
|
pdata->init = omap4_twl6030_hsmmc_late_init;
|
||||||
|
}
|
||||||
|
|
||||||
|
int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
|
||||||
|
{
|
||||||
|
struct omap2_hsmmc_info *c;
|
||||||
|
|
||||||
|
omap_hsmmc_init(controllers);
|
||||||
|
for (c = controllers; c->mmc; c++) {
|
||||||
|
/* pdev can be null if CONFIG_MMC_OMAP_HS is not set */
|
||||||
|
if (!c->pdev)
|
||||||
|
continue;
|
||||||
|
omap4_twl6030_hsmmc_set_late_init(&c->pdev->dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
int __init omap4_twl6030_hsmmc_init(struct omap2_hsmmc_info *controllers)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
|
@ -2,21 +2,9 @@
|
||||||
# SPEAr6XX Machine configuration file
|
# SPEAr6XX Machine configuration file
|
||||||
#
|
#
|
||||||
|
|
||||||
if ARCH_SPEAR6XX
|
config MACH_SPEAR600
|
||||||
|
def_bool y
|
||||||
menu "SPEAr6xx Implementations"
|
depends on ARCH_SPEAR6XX
|
||||||
config BOARD_SPEAR600_DT
|
|
||||||
bool "SPEAr600 generic board configured via device-tree"
|
|
||||||
select MACH_SPEAR600
|
|
||||||
select USE_OF
|
select USE_OF
|
||||||
help
|
help
|
||||||
Supports ST SPEAr600 boards configured via the device-tree
|
Supports ST SPEAr600 boards configured via the device-tree
|
||||||
|
|
||||||
endmenu
|
|
||||||
|
|
||||||
config MACH_SPEAR600
|
|
||||||
bool "SPEAr600"
|
|
||||||
help
|
|
||||||
Supports ST SPEAr600 Machine
|
|
||||||
|
|
||||||
endif #ARCH_SPEAR6XX
|
|
||||||
|
|
|
@ -1764,6 +1764,12 @@ static struct clk_pll_freq_table tegra_pll_x_freq_table[] = {
|
||||||
{ 19200000, 760000000, 950, 24, 1, 8},
|
{ 19200000, 760000000, 950, 24, 1, 8},
|
||||||
{ 26000000, 760000000, 760, 26, 1, 12},
|
{ 26000000, 760000000, 760, 26, 1, 12},
|
||||||
|
|
||||||
|
/* 750 MHz */
|
||||||
|
{ 12000000, 750000000, 750, 12, 1, 12},
|
||||||
|
{ 13000000, 750000000, 750, 13, 1, 12},
|
||||||
|
{ 19200000, 750000000, 625, 16, 1, 8},
|
||||||
|
{ 26000000, 750000000, 750, 26, 1, 12},
|
||||||
|
|
||||||
/* 608 MHz */
|
/* 608 MHz */
|
||||||
{ 12000000, 608000000, 608, 12, 1, 12},
|
{ 12000000, 608000000, 608, 12, 1, 12},
|
||||||
{ 13000000, 608000000, 608, 13, 1, 12},
|
{ 13000000, 608000000, 608, 13, 1, 12},
|
||||||
|
|
|
@ -167,8 +167,8 @@ void __init omap_dsp_reserve_sdram_memblock(void)
|
||||||
|
|
||||||
paddr = arm_memblock_steal(size, SZ_1M);
|
paddr = arm_memblock_steal(size, SZ_1M);
|
||||||
if (!paddr) {
|
if (!paddr) {
|
||||||
pr_err("%s: failed to reserve %x bytes\n",
|
pr_err("%s: failed to reserve %llx bytes\n",
|
||||||
__func__, size);
|
__func__, (unsigned long long)size);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -445,6 +445,7 @@ IS_OMAP_TYPE(3517, 0x3517)
|
||||||
|
|
||||||
#define OMAP446X_CLASS 0x44600044
|
#define OMAP446X_CLASS 0x44600044
|
||||||
#define OMAP4460_REV_ES1_0 (OMAP446X_CLASS | (0x10 << 8))
|
#define OMAP4460_REV_ES1_0 (OMAP446X_CLASS | (0x10 << 8))
|
||||||
|
#define OMAP4460_REV_ES1_1 (OMAP446X_CLASS | (0x11 << 8))
|
||||||
|
|
||||||
#define OMAP447X_CLASS 0x44700044
|
#define OMAP447X_CLASS 0x44700044
|
||||||
#define OMAP4470_REV_ES1_0 (OMAP447X_CLASS | (0x10 << 8))
|
#define OMAP4470_REV_ES1_0 (OMAP447X_CLASS | (0x10 << 8))
|
||||||
|
|
Loading…
Reference in New Issue