Merge branch 'fixes-non-critical-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap into next/fixes-non-critical

* 'fixes-non-critical-part2' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap:
  ARM: OMAP3+: PM: VP: fix integer truncation error
  ARM: OMAP2+: PM: fix wakeupgen warning when hotplug disabled
  ARM: OMAP2+: PM: fix section mismatch with omap2_init_processor_devices()
  ARM: OMAP2: Fix section warning for n8x0 when CONFIG_MMC_OMAP is not set
  ARM: OMAP2+: Fix omap24xx_io_desc warning if SoC subtypes are not selected
  ARM: OMAP1: Fix section mismatch for omap1_init_early()
  ARM: OMAP1: Fix typo in lcd_dma.c
  ARM: OMAP: mailbox: trivial whitespace fix
  ARM: OMAP: Remove definition cpu_is_omap4430()
  ARM: OMAP2+: included some headers twice
  ARM: OMAP: clock.c: included linux/debugfs.h twice
  ARM: OMAP: don't build hwspinlock in vain
  ARM: OMAP2+: ads7846_init: put gpio_pendown into pdata if it's provided
  ARM: omap: pandora: fix usbhs platform data
  ARM: OMAP: sram: Add am33xx SRAM support (minimal)
  ARM: OMAP2+: id: Add am33xx SoC type detection
  ARM: OMAP2+: GPMC: Export gpmc_enable_hwecc and gpmc_calculate_ecc
  ARM: OMAP: dmtimer: fix missing content/correction in low-power mode support
This commit is contained in:
Olof Johansson 2012-03-07 15:02:47 -08:00
Родитель 412fe6b3a1 3223d007a3
Коммит 269f6a93f6
21 изменённых файлов: 90 добавлений и 56 удалений

Просмотреть файл

@ -118,7 +118,7 @@ void __init omap16xx_map_io(void)
/* /*
* Common low-level hardware init for omap1. * Common low-level hardware init for omap1.
*/ */
void omap1_init_early(void) void __init omap1_init_early(void)
{ {
omap_check_revision(); omap_check_revision();

Просмотреть файл

@ -117,7 +117,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_mirror);
void omap_set_lcd_dma_b1_vxres(unsigned long vxres) void omap_set_lcd_dma_b1_vxres(unsigned long vxres)
{ {
if (cpu_is_omap15xx()) { if (cpu_is_omap15xx()) {
printk(KERN_ERR "DMA virtual resulotion is not supported " printk(KERN_ERR "DMA virtual resolution is not supported "
"in 1510 mode\n"); "in 1510 mode\n");
BUG(); BUG();
} }

Просмотреть файл

@ -265,6 +265,8 @@ obj-y += $(smc91x-m) $(smc91x-y)
smsc911x-$(CONFIG_SMSC911X) := gpmc-smsc911x.o smsc911x-$(CONFIG_SMSC911X) := gpmc-smsc911x.o
obj-y += $(smsc911x-m) $(smsc911x-y) obj-y += $(smsc911x-m) $(smsc911x-y)
obj-$(CONFIG_ARCH_OMAP4) += hwspinlock.o ifneq ($(CONFIG_HWSPINLOCK_OMAP),)
obj-y += hwspinlock.o
endif
obj-y += common-board-devices.o twl-common.o obj-y += common-board-devices.o twl-common.o

Просмотреть файл

@ -27,7 +27,6 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/smsc911x.h> #include <linux/smsc911x.h>
#include <linux/mmc/host.h> #include <linux/mmc/host.h>
#include <linux/gpio.h>
#include <mach/hardware.h> #include <mach/hardware.h>
#include <asm/mach-types.h> #include <asm/mach-types.h>

Просмотреть файл

@ -36,10 +36,6 @@
#include "mux.h" #include "mux.h"
static int slot1_cover_open;
static int slot2_cover_open;
static struct device *mmc_device;
#define TUSB6010_ASYNC_CS 1 #define TUSB6010_ASYNC_CS 1
#define TUSB6010_SYNC_CS 4 #define TUSB6010_SYNC_CS 4
#define TUSB6010_GPIO_INT 58 #define TUSB6010_GPIO_INT 58
@ -211,6 +207,10 @@ static struct omap_onenand_platform_data board_onenand_data[] = {
#define N810_EMMC_VSD_GPIO 23 #define N810_EMMC_VSD_GPIO 23
#define N810_EMMC_VIO_GPIO 9 #define N810_EMMC_VIO_GPIO 9
static int slot1_cover_open;
static int slot2_cover_open;
static struct device *mmc_device;
static int n8x0_mmc_switch_slot(struct device *dev, int slot) static int n8x0_mmc_switch_slot(struct device *dev, int slot)
{ {
#ifdef CONFIG_MMC_DEBUG #ifdef CONFIG_MMC_DEBUG

Просмотреть файл

@ -345,7 +345,7 @@ static struct regulator_consumer_supply pandora_vcc_lcd_supply[] = {
}; };
static struct regulator_consumer_supply pandora_usb_phy_supply[] = { static struct regulator_consumer_supply pandora_usb_phy_supply[] = {
REGULATOR_SUPPLY("hsusb0", "ehci-omap.0"), REGULATOR_SUPPLY("hsusb1", "ehci-omap.0"),
}; };
/* ads7846 on SPI and 2 nub controllers on I2C */ /* ads7846 on SPI and 2 nub controllers on I2C */
@ -563,13 +563,13 @@ static struct platform_device *omap3pandora_devices[] __initdata = {
static const struct usbhs_omap_board_data usbhs_bdata __initconst = { static const struct usbhs_omap_board_data usbhs_bdata __initconst = {
.port_mode[0] = OMAP_EHCI_PORT_MODE_PHY, .port_mode[0] = OMAP_USBHS_PORT_MODE_UNUSED,
.port_mode[1] = OMAP_USBHS_PORT_MODE_UNUSED, .port_mode[1] = OMAP_EHCI_PORT_MODE_PHY,
.port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED, .port_mode[2] = OMAP_USBHS_PORT_MODE_UNUSED,
.phy_reset = true, .phy_reset = true,
.reset_gpio_port[0] = 16, .reset_gpio_port[0] = -EINVAL,
.reset_gpio_port[1] = -EINVAL, .reset_gpio_port[1] = 16,
.reset_gpio_port[2] = -EINVAL .reset_gpio_port[2] = -EINVAL
}; };

Просмотреть файл

@ -76,13 +76,15 @@ void __init omap_ads7846_init(int bus_num, int gpio_pendown, int gpio_debounce,
gpio_set_debounce(gpio_pendown, gpio_debounce); gpio_set_debounce(gpio_pendown, gpio_debounce);
} }
ads7846_config.gpio_pendown = gpio_pendown;
spi_bi->bus_num = bus_num; spi_bi->bus_num = bus_num;
spi_bi->irq = OMAP_GPIO_IRQ(gpio_pendown); spi_bi->irq = OMAP_GPIO_IRQ(gpio_pendown);
if (board_pdata) if (board_pdata) {
board_pdata->gpio_pendown = gpio_pendown;
spi_bi->platform_data = board_pdata; spi_bi->platform_data = board_pdata;
} else {
ads7846_config.gpio_pendown = gpio_pendown;
}
spi_register_board_info(&ads7846_spi_board_info, 1); spi_register_board_info(&ads7846_spi_board_info, 1);
} }

Просмотреть файл

@ -338,6 +338,11 @@
#define AM35XX_HECC_SW_RST BIT(3) #define AM35XX_HECC_SW_RST BIT(3)
#define AM35XX_VPFE_PCLK_SW_RST BIT(4) #define AM35XX_VPFE_PCLK_SW_RST BIT(4)
/*
* CONTROL AM33XX STATUS register
*/
#define AM33XX_CONTROL_STATUS 0x040
/* /*
* CONTROL OMAP STATUS register to identify OMAP3 features * CONTROL OMAP STATUS register to identify OMAP3 features
*/ */

Просмотреть файл

@ -888,6 +888,7 @@ int gpmc_enable_hwecc(int cs, int mode, int dev_width, int ecc_size)
gpmc_write_reg(GPMC_ECC_CONFIG, val); gpmc_write_reg(GPMC_ECC_CONFIG, val);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(gpmc_enable_hwecc);
/** /**
* gpmc_calculate_ecc - generate non-inverted ecc bytes * gpmc_calculate_ecc - generate non-inverted ecc bytes
@ -918,3 +919,4 @@ int gpmc_calculate_ecc(int cs, const u_char *dat, u_char *ecc_code)
gpmc_ecc_used = -EINVAL; gpmc_ecc_used = -EINVAL;
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(gpmc_calculate_ecc);

Просмотреть файл

@ -44,6 +44,8 @@ int omap_type(void)
if (cpu_is_omap24xx()) { if (cpu_is_omap24xx()) {
val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS); val = omap_ctrl_readl(OMAP24XX_CONTROL_STATUS);
} else if (cpu_is_am33xx()) {
val = omap_ctrl_readl(AM33XX_CONTROL_STATUS);
} else if (cpu_is_omap34xx()) { } else if (cpu_is_omap34xx()) {
val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS); val = omap_ctrl_readl(OMAP343X_CONTROL_STATUS);
} else if (cpu_is_omap44xx()) { } else if (cpu_is_omap44xx()) {

Просмотреть файл

@ -43,14 +43,13 @@
#include "clockdomain.h" #include "clockdomain.h"
#include <plat/omap_hwmod.h> #include <plat/omap_hwmod.h>
#include <plat/multi.h> #include <plat/multi.h>
#include "common.h"
/* /*
* The machine specific code may provide the extra mapping besides the * The machine specific code may provide the extra mapping besides the
* default mapping provided here. * default mapping provided here.
*/ */
#ifdef CONFIG_ARCH_OMAP2 #if defined(CONFIG_SOC_OMAP2420) || defined(CONFIG_SOC_OMAP2430)
static struct map_desc omap24xx_io_desc[] __initdata = { static struct map_desc omap24xx_io_desc[] __initdata = {
{ {
.virtual = L3_24XX_VIRT, .virtual = L3_24XX_VIRT,

Просмотреть файл

@ -43,7 +43,6 @@
static void __iomem *wakeupgen_base; static void __iomem *wakeupgen_base;
static void __iomem *sar_base; static void __iomem *sar_base;
static DEFINE_PER_CPU(u32 [NR_REG_BANKS], irqmasks);
static DEFINE_SPINLOCK(wakeupgen_lock); static DEFINE_SPINLOCK(wakeupgen_lock);
static unsigned int irq_target_cpu[NR_IRQS]; static unsigned int irq_target_cpu[NR_IRQS];
@ -67,14 +66,6 @@ static inline void sar_writel(u32 val, u32 offset, u8 idx)
__raw_writel(val, sar_base + offset + (idx * 4)); __raw_writel(val, sar_base + offset + (idx * 4));
} }
static void _wakeupgen_set_all(unsigned int cpu, unsigned int reg)
{
u8 i;
for (i = 0; i < NR_REG_BANKS; i++)
wakeupgen_writel(reg, i, cpu);
}
static inline int _wakeupgen_get_irq_info(u32 irq, u32 *bit_posn, u8 *reg_index) static inline int _wakeupgen_get_irq_info(u32 irq, u32 *bit_posn, u8 *reg_index)
{ {
unsigned int spi_irq; unsigned int spi_irq;
@ -130,22 +121,6 @@ static void _wakeupgen_set(unsigned int irq, unsigned int cpu)
wakeupgen_writel(val, i, cpu); wakeupgen_writel(val, i, cpu);
} }
static void _wakeupgen_save_masks(unsigned int cpu)
{
u8 i;
for (i = 0; i < NR_REG_BANKS; i++)
per_cpu(irqmasks, cpu)[i] = wakeupgen_readl(i, cpu);
}
static void _wakeupgen_restore_masks(unsigned int cpu)
{
u8 i;
for (i = 0; i < NR_REG_BANKS; i++)
wakeupgen_writel(per_cpu(irqmasks, cpu)[i], i, cpu);
}
/* /*
* Architecture specific Mask extension * Architecture specific Mask extension
*/ */
@ -170,6 +145,33 @@ static void wakeupgen_unmask(struct irq_data *d)
spin_unlock_irqrestore(&wakeupgen_lock, flags); spin_unlock_irqrestore(&wakeupgen_lock, flags);
} }
#ifdef CONFIG_HOTPLUG_CPU
static DEFINE_PER_CPU(u32 [NR_REG_BANKS], irqmasks);
static void _wakeupgen_save_masks(unsigned int cpu)
{
u8 i;
for (i = 0; i < NR_REG_BANKS; i++)
per_cpu(irqmasks, cpu)[i] = wakeupgen_readl(i, cpu);
}
static void _wakeupgen_restore_masks(unsigned int cpu)
{
u8 i;
for (i = 0; i < NR_REG_BANKS; i++)
wakeupgen_writel(per_cpu(irqmasks, cpu)[i], i, cpu);
}
static void _wakeupgen_set_all(unsigned int cpu, unsigned int reg)
{
u8 i;
for (i = 0; i < NR_REG_BANKS; i++)
wakeupgen_writel(reg, i, cpu);
}
/* /*
* Mask or unmask all interrupts on given CPU. * Mask or unmask all interrupts on given CPU.
* 0 = Mask all interrupts on the 'cpu' * 0 = Mask all interrupts on the 'cpu'
@ -191,6 +193,7 @@ static void wakeupgen_irqmask_all(unsigned int cpu, unsigned int set)
} }
spin_unlock_irqrestore(&wakeupgen_lock, flags); spin_unlock_irqrestore(&wakeupgen_lock, flags);
} }
#endif
#ifdef CONFIG_CPU_PM #ifdef CONFIG_CPU_PM
/* /*

Просмотреть файл

@ -28,7 +28,6 @@
#include <plat/mcspi.h> #include <plat/mcspi.h>
#include <plat/mcbsp.h> #include <plat/mcbsp.h>
#include <plat/mmc.h> #include <plat/mmc.h>
#include <plat/i2c.h>
#include <plat/dmtimer.h> #include <plat/dmtimer.h>
#include <plat/common.h> #include <plat/common.h>

Просмотреть файл

@ -49,7 +49,7 @@ static int __init _init_omap_device(char *name)
/* /*
* Build omap_devices for processors and bus. * Build omap_devices for processors and bus.
*/ */
static void omap2_init_processor_devices(void) static void __init omap2_init_processor_devices(void)
{ {
_init_omap_device("mpu"); _init_omap_device("mpu");
if (omap3_has_iva()) if (omap3_has_iva())

Просмотреть файл

@ -61,8 +61,8 @@ void __init omap_vp_init(struct voltagedomain *voltdm)
vddmin = voltdm->pmic->vp_vddmin; vddmin = voltdm->pmic->vp_vddmin;
vddmax = voltdm->pmic->vp_vddmax; vddmax = voltdm->pmic->vp_vddmax;
waittime = ((voltdm->pmic->step_size / voltdm->pmic->slew_rate) * waittime = DIV_ROUND_UP(voltdm->pmic->step_size * sys_clk_rate,
sys_clk_rate) / 1000; 1000 * voltdm->pmic->slew_rate);
vstepmin = voltdm->pmic->vp_vstepmin; vstepmin = voltdm->pmic->vp_vstepmin;
vstepmax = voltdm->pmic->vp_vstepmax; vstepmax = voltdm->pmic->vp_vstepmax;

Просмотреть файл

@ -20,7 +20,6 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/cpufreq.h> #include <linux/cpufreq.h>
#include <linux/debugfs.h>
#include <linux/io.h> #include <linux/io.h>
#include <plat/clock.h> #include <plat/clock.h>

Просмотреть файл

@ -80,9 +80,9 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer *timer, u32 reg,
static void omap_timer_restore_context(struct omap_dm_timer *timer) static void omap_timer_restore_context(struct omap_dm_timer *timer)
{ {
omap_dm_timer_write_reg(timer, OMAP_TIMER_OCP_CFG_OFFSET, __raw_writel(timer->context.tiocp_cfg,
timer->context.tiocp_cfg); timer->io_base + OMAP_TIMER_OCP_CFG_OFFSET);
if (timer->revision > 1) if (timer->revision == 1)
__raw_writel(timer->context.tistat, timer->sys_stat); __raw_writel(timer->context.tistat, timer->sys_stat);
__raw_writel(timer->context.tisr, timer->irq_stat); __raw_writel(timer->context.tisr, timer->irq_stat);
@ -357,6 +357,19 @@ int omap_dm_timer_stop(struct omap_dm_timer *timer)
__omap_dm_timer_stop(timer, timer->posted, rate); __omap_dm_timer_stop(timer, timer->posted, rate);
if (timer->loses_context && timer->get_context_loss_count)
timer->ctx_loss_count =
timer->get_context_loss_count(&timer->pdev->dev);
/*
* Since the register values are computed and written within
* __omap_dm_timer_stop, we need to use read to retrieve the
* context.
*/
timer->context.tclr =
omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
timer->context.tisr = __raw_readl(timer->irq_stat);
omap_dm_timer_disable(timer);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(omap_dm_timer_stop); EXPORT_SYMBOL_GPL(omap_dm_timer_stop);

Просмотреть файл

@ -250,7 +250,6 @@ IS_AM_SUBCLASS(335x, 0x335)
* cpu_is_omap2423(): True for OMAP2423 * cpu_is_omap2423(): True for OMAP2423
* cpu_is_omap2430(): True for OMAP2430 * cpu_is_omap2430(): True for OMAP2430
* cpu_is_omap3430(): True for OMAP3430 * cpu_is_omap3430(): True for OMAP3430
* cpu_is_omap4430(): True for OMAP4430
* cpu_is_omap3505(): True for OMAP3505 * cpu_is_omap3505(): True for OMAP3505
* cpu_is_omap3517(): True for OMAP3517 * cpu_is_omap3517(): True for OMAP3517
*/ */
@ -299,7 +298,6 @@ IS_OMAP_TYPE(3517, 0x3517)
#define cpu_is_omap3505() 0 #define cpu_is_omap3505() 0
#define cpu_is_omap3517() 0 #define cpu_is_omap3517() 0
#define cpu_is_omap3430() 0 #define cpu_is_omap3430() 0
#define cpu_is_omap4430() 0
#define cpu_is_omap3630() 0 #define cpu_is_omap3630() 0
/* /*

Просмотреть файл

@ -101,4 +101,5 @@ static inline void omap_push_sram_idle(void) {}
#else #else
#define OMAP4_SRAM_PA 0x40300000 #define OMAP4_SRAM_PA 0x40300000
#endif #endif
#define AM33XX_SRAM_PA 0x40300000
#endif #endif

Просмотреть файл

@ -307,7 +307,7 @@ static void omap_mbox_fini(struct omap_mbox *mbox)
if (!--mbox->use_count) { if (!--mbox->use_count) {
free_irq(mbox->irq, mbox); free_irq(mbox->irq, mbox);
tasklet_kill(&mbox->txq->tasklet); tasklet_kill(&mbox->txq->tasklet);
flush_work_sync(&mbox->rxq->work); flush_work_sync(&mbox->rxq->work);
mbox_queue_free(mbox->txq); mbox_queue_free(mbox->txq);
mbox_queue_free(mbox->rxq); mbox_queue_free(mbox->rxq);
} }

Просмотреть файл

@ -86,7 +86,7 @@ static int is_sram_locked(void)
__raw_writel(0xCFDE, OMAP24XX_VA_READPERM0); /* all i-read */ __raw_writel(0xCFDE, OMAP24XX_VA_READPERM0); /* all i-read */
__raw_writel(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */ __raw_writel(0xCFDE, OMAP24XX_VA_WRITEPERM0); /* all i-write */
} }
if (cpu_is_omap34xx()) { if (cpu_is_omap34xx() && !cpu_is_am33xx()) {
__raw_writel(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */ __raw_writel(0xFFFF, OMAP34XX_VA_REQINFOPERM0); /* all q-vects */
__raw_writel(0xFFFF, OMAP34XX_VA_READPERM0); /* all i-read */ __raw_writel(0xFFFF, OMAP34XX_VA_READPERM0); /* all i-read */
__raw_writel(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */ __raw_writel(0xFFFF, OMAP34XX_VA_WRITEPERM0); /* all i-write */
@ -124,7 +124,10 @@ static void __init omap_detect_sram(void)
omap_sram_size = 0x800; /* 2K */ omap_sram_size = 0x800; /* 2K */
} }
} else { } else {
if (cpu_is_omap34xx()) { if (cpu_is_am33xx()) {
omap_sram_start = AM33XX_SRAM_PA;
omap_sram_size = 0x10000; /* 64K */
} else if (cpu_is_omap34xx()) {
omap_sram_start = OMAP3_SRAM_PA; omap_sram_start = OMAP3_SRAM_PA;
omap_sram_size = 0x10000; /* 64K */ omap_sram_size = 0x10000; /* 64K */
} else if (cpu_is_omap44xx()) { } else if (cpu_is_omap44xx()) {
@ -368,6 +371,11 @@ static inline int omap34xx_sram_init(void)
return 0; return 0;
} }
static inline int am33xx_sram_init(void)
{
return 0;
}
int __init omap_sram_init(void) int __init omap_sram_init(void)
{ {
omap_detect_sram(); omap_detect_sram();
@ -379,6 +387,8 @@ int __init omap_sram_init(void)
omap242x_sram_init(); omap242x_sram_init();
else if (cpu_is_omap2430()) else if (cpu_is_omap2430())
omap243x_sram_init(); omap243x_sram_init();
else if (cpu_is_am33xx())
am33xx_sram_init();
else if (cpu_is_omap34xx()) else if (cpu_is_omap34xx())
omap34xx_sram_init(); omap34xx_sram_init();