Commit b8f049ae authored by Linus Torvalds's avatar Linus Torvalds

Merge branch 'omap-fixes-for-linus' of...

Merge branch 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6

* 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
  arm: omap4: panda: remove usb_nop_xceiv_register(v1)
  OMAP1: Fix non-working LCD on OMAP310
  OMAP3: Devkit8000: Change lcd power pin
  omap1: remove duplicated #include
  arm: mach-omap2: mux: free allocated memory on error exit
  arm: mach-omap2: board-rm680: fix rm680_vemmc regulator constraints
  OMAP: PM: SmartReflex: Fix possible null pointer read access
  OMAP: PM: SmartReflex: Fix possible memory leak
  arm: mach-omap2: voltage: debugfs: fix memory leak
  OMAP3: PM: fix save secure RAM to restore MPU power state
  OMAP: PM: SmartReflex: Add missing IS_ERR test
parents 06262a6b ed2af92b
...@@ -37,7 +37,7 @@ int omap_lcd_dma_running(void) ...@@ -37,7 +37,7 @@ int omap_lcd_dma_running(void)
* On OMAP1510, internal LCD controller will start the transfer * On OMAP1510, internal LCD controller will start the transfer
* when it gets enabled, so assume DMA running if LCD enabled. * when it gets enabled, so assume DMA running if LCD enabled.
*/ */
if (cpu_is_omap1510()) if (cpu_is_omap15xx())
if (omap_readw(OMAP_LCDC_CONTROL) & OMAP_LCDC_CTRL_LCD_EN) if (omap_readw(OMAP_LCDC_CONTROL) & OMAP_LCDC_CTRL_LCD_EN)
return 1; return 1;
...@@ -95,7 +95,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_single_transfer); ...@@ -95,7 +95,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_single_transfer);
void omap_set_lcd_dma_b1_rotation(int rotate) void omap_set_lcd_dma_b1_rotation(int rotate)
{ {
if (cpu_is_omap1510()) { if (cpu_is_omap15xx()) {
printk(KERN_ERR "DMA rotation is not supported in 1510 mode\n"); printk(KERN_ERR "DMA rotation is not supported in 1510 mode\n");
BUG(); BUG();
return; return;
...@@ -106,7 +106,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_rotation); ...@@ -106,7 +106,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_rotation);
void omap_set_lcd_dma_b1_mirror(int mirror) void omap_set_lcd_dma_b1_mirror(int mirror)
{ {
if (cpu_is_omap1510()) { if (cpu_is_omap15xx()) {
printk(KERN_ERR "DMA mirror is not supported in 1510 mode\n"); printk(KERN_ERR "DMA mirror is not supported in 1510 mode\n");
BUG(); BUG();
} }
...@@ -116,7 +116,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_mirror); ...@@ -116,7 +116,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_omap1510()) { if (cpu_is_omap15xx()) {
printk(KERN_ERR "DMA virtual resulotion is not supported " printk(KERN_ERR "DMA virtual resulotion is not supported "
"in 1510 mode\n"); "in 1510 mode\n");
BUG(); BUG();
...@@ -127,7 +127,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_vxres); ...@@ -127,7 +127,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_vxres);
void omap_set_lcd_dma_b1_scale(unsigned int xscale, unsigned int yscale) void omap_set_lcd_dma_b1_scale(unsigned int xscale, unsigned int yscale)
{ {
if (cpu_is_omap1510()) { if (cpu_is_omap15xx()) {
printk(KERN_ERR "DMA scale is not supported in 1510 mode\n"); printk(KERN_ERR "DMA scale is not supported in 1510 mode\n");
BUG(); BUG();
} }
...@@ -177,7 +177,7 @@ static void set_b1_regs(void) ...@@ -177,7 +177,7 @@ static void set_b1_regs(void)
bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1); bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
/* 1510 DMA requires the bottom address to be 2 more /* 1510 DMA requires the bottom address to be 2 more
* than the actual last memory access location. */ * than the actual last memory access location. */
if (cpu_is_omap1510() && if (cpu_is_omap15xx() &&
lcd_dma.data_type == OMAP_DMA_DATA_TYPE_S32) lcd_dma.data_type == OMAP_DMA_DATA_TYPE_S32)
bottom += 2; bottom += 2;
ei = PIXSTEP(0, 0, 1, 0); ei = PIXSTEP(0, 0, 1, 0);
...@@ -241,7 +241,7 @@ static void set_b1_regs(void) ...@@ -241,7 +241,7 @@ static void set_b1_regs(void)
return; /* Suppress warning about uninitialized vars */ return; /* Suppress warning about uninitialized vars */
} }
if (cpu_is_omap1510()) { if (cpu_is_omap15xx()) {
omap_writew(top >> 16, OMAP1510_DMA_LCD_TOP_F1_U); omap_writew(top >> 16, OMAP1510_DMA_LCD_TOP_F1_U);
omap_writew(top, OMAP1510_DMA_LCD_TOP_F1_L); omap_writew(top, OMAP1510_DMA_LCD_TOP_F1_L);
omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U); omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U);
...@@ -343,7 +343,7 @@ void omap_free_lcd_dma(void) ...@@ -343,7 +343,7 @@ void omap_free_lcd_dma(void)
BUG(); BUG();
return; return;
} }
if (!cpu_is_omap1510()) if (!cpu_is_omap15xx())
omap_writew(omap_readw(OMAP1610_DMA_LCD_CCR) & ~1, omap_writew(omap_readw(OMAP1610_DMA_LCD_CCR) & ~1,
OMAP1610_DMA_LCD_CCR); OMAP1610_DMA_LCD_CCR);
lcd_dma.reserved = 0; lcd_dma.reserved = 0;
...@@ -360,7 +360,7 @@ void omap_enable_lcd_dma(void) ...@@ -360,7 +360,7 @@ void omap_enable_lcd_dma(void)
* connected. Otherwise the OMAP internal controller will * connected. Otherwise the OMAP internal controller will
* start the transfer when it gets enabled. * start the transfer when it gets enabled.
*/ */
if (cpu_is_omap1510() || !lcd_dma.ext_ctrl) if (cpu_is_omap15xx() || !lcd_dma.ext_ctrl)
return; return;
w = omap_readw(OMAP1610_DMA_LCD_CTRL); w = omap_readw(OMAP1610_DMA_LCD_CTRL);
...@@ -378,14 +378,14 @@ EXPORT_SYMBOL(omap_enable_lcd_dma); ...@@ -378,14 +378,14 @@ EXPORT_SYMBOL(omap_enable_lcd_dma);
void omap_setup_lcd_dma(void) void omap_setup_lcd_dma(void)
{ {
BUG_ON(lcd_dma.active); BUG_ON(lcd_dma.active);
if (!cpu_is_omap1510()) { if (!cpu_is_omap15xx()) {
/* Set some reasonable defaults */ /* Set some reasonable defaults */
omap_writew(0x5440, OMAP1610_DMA_LCD_CCR); omap_writew(0x5440, OMAP1610_DMA_LCD_CCR);
omap_writew(0x9102, OMAP1610_DMA_LCD_CSDP); omap_writew(0x9102, OMAP1610_DMA_LCD_CSDP);
omap_writew(0x0004, OMAP1610_DMA_LCD_LCH_CTRL); omap_writew(0x0004, OMAP1610_DMA_LCD_LCH_CTRL);
} }
set_b1_regs(); set_b1_regs();
if (!cpu_is_omap1510()) { if (!cpu_is_omap15xx()) {
u16 w; u16 w;
w = omap_readw(OMAP1610_DMA_LCD_CCR); w = omap_readw(OMAP1610_DMA_LCD_CCR);
...@@ -407,7 +407,7 @@ void omap_stop_lcd_dma(void) ...@@ -407,7 +407,7 @@ void omap_stop_lcd_dma(void)
u16 w; u16 w;
lcd_dma.active = 0; lcd_dma.active = 0;
if (cpu_is_omap1510() || !lcd_dma.ext_ctrl) if (cpu_is_omap15xx() || !lcd_dma.ext_ctrl)
return; return;
w = omap_readw(OMAP1610_DMA_LCD_CCR); w = omap_readw(OMAP1610_DMA_LCD_CCR);
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
#include <linux/clocksource.h> #include <linux/clocksource.h>
#include <linux/clockchips.h> #include <linux/clockchips.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/sched.h>
#include <asm/system.h> #include <asm/system.h>
#include <mach/hardware.h> #include <mach/hardware.h>
......
...@@ -115,9 +115,6 @@ static struct omap2_hsmmc_info mmc[] = { ...@@ -115,9 +115,6 @@ static struct omap2_hsmmc_info mmc[] = {
static int devkit8000_panel_enable_lcd(struct omap_dss_device *dssdev) static int devkit8000_panel_enable_lcd(struct omap_dss_device *dssdev)
{ {
twl_i2c_write_u8(TWL4030_MODULE_GPIO, 0x80, REG_GPIODATADIR1);
twl_i2c_write_u8(TWL4030_MODULE_LED, 0x0, 0x0);
if (gpio_is_valid(dssdev->reset_gpio)) if (gpio_is_valid(dssdev->reset_gpio))
gpio_set_value_cansleep(dssdev->reset_gpio, 1); gpio_set_value_cansleep(dssdev->reset_gpio, 1);
return 0; return 0;
...@@ -247,6 +244,8 @@ static struct gpio_led gpio_leds[]; ...@@ -247,6 +244,8 @@ static struct gpio_led gpio_leds[];
static int devkit8000_twl_gpio_setup(struct device *dev, static int devkit8000_twl_gpio_setup(struct device *dev,
unsigned gpio, unsigned ngpio) unsigned gpio, unsigned ngpio)
{ {
int ret;
omap_mux_init_gpio(29, OMAP_PIN_INPUT); omap_mux_init_gpio(29, OMAP_PIN_INPUT);
/* gpio + 0 is "mmc0_cd" (input/IRQ) */ /* gpio + 0 is "mmc0_cd" (input/IRQ) */
mmc[0].gpio_cd = gpio + 0; mmc[0].gpio_cd = gpio + 0;
...@@ -255,17 +254,23 @@ static int devkit8000_twl_gpio_setup(struct device *dev, ...@@ -255,17 +254,23 @@ static int devkit8000_twl_gpio_setup(struct device *dev,
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */ /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1; gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
/* gpio + 1 is "LCD_PWREN" (out, active high) */ /* TWL4030_GPIO_MAX + 0 is "LCD_PWREN" (out, active high) */
devkit8000_lcd_device.reset_gpio = gpio + 1; devkit8000_lcd_device.reset_gpio = gpio + TWL4030_GPIO_MAX + 0;
gpio_request(devkit8000_lcd_device.reset_gpio, "LCD_PWREN"); ret = gpio_request_one(devkit8000_lcd_device.reset_gpio,
/* Disable until needed */ GPIOF_DIR_OUT | GPIOF_INIT_LOW, "LCD_PWREN");
gpio_direction_output(devkit8000_lcd_device.reset_gpio, 0); if (ret < 0) {
devkit8000_lcd_device.reset_gpio = -EINVAL;
printk(KERN_ERR "Failed to request GPIO for LCD_PWRN\n");
}
/* gpio + 7 is "DVI_PD" (out, active low) */ /* gpio + 7 is "DVI_PD" (out, active low) */
devkit8000_dvi_device.reset_gpio = gpio + 7; devkit8000_dvi_device.reset_gpio = gpio + 7;
gpio_request(devkit8000_dvi_device.reset_gpio, "DVI PowerDown"); ret = gpio_request_one(devkit8000_dvi_device.reset_gpio,
/* Disable until needed */ GPIOF_DIR_OUT | GPIOF_INIT_LOW, "DVI PowerDown");
gpio_direction_output(devkit8000_dvi_device.reset_gpio, 0); if (ret < 0) {
devkit8000_dvi_device.reset_gpio = -EINVAL;
printk(KERN_ERR "Failed to request GPIO for DVI PowerDown\n");
}
return 0; return 0;
} }
......
...@@ -409,8 +409,6 @@ static void __init omap4_panda_init(void) ...@@ -409,8 +409,6 @@ static void __init omap4_panda_init(void)
platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices)); platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));
omap_serial_init(); omap_serial_init();
omap4_twl6030_hsmmc_init(mmc); omap4_twl6030_hsmmc_init(mmc);
/* OMAP4 Panda uses internal transceiver so register nop transceiver */
usb_nop_xceiv_register();
omap4_ehci_init(); omap4_ehci_init();
usb_musb_init(&musb_board_data); usb_musb_init(&musb_board_data);
} }
......
...@@ -40,9 +40,6 @@ static struct regulator_consumer_supply rm680_vemmc_consumers[] = { ...@@ -40,9 +40,6 @@ static struct regulator_consumer_supply rm680_vemmc_consumers[] = {
static struct regulator_init_data rm680_vemmc = { static struct regulator_init_data rm680_vemmc = {
.constraints = { .constraints = {
.name = "rm680_vemmc", .name = "rm680_vemmc",
.min_uV = 2900000,
.max_uV = 2900000,
.apply_uV = 1,
.valid_modes_mask = REGULATOR_MODE_NORMAL .valid_modes_mask = REGULATOR_MODE_NORMAL
| REGULATOR_MODE_STANDBY, | REGULATOR_MODE_STANDBY,
.valid_ops_mask = REGULATOR_CHANGE_STATUS .valid_ops_mask = REGULATOR_CHANGE_STATUS
......
...@@ -1000,6 +1000,7 @@ int __init omap_mux_init(const char *name, u32 flags, ...@@ -1000,6 +1000,7 @@ int __init omap_mux_init(const char *name, u32 flags,
if (!partition->base) { if (!partition->base) {
pr_err("%s: Could not ioremap mux partition at 0x%08x\n", pr_err("%s: Could not ioremap mux partition at 0x%08x\n",
__func__, partition->phys); __func__, partition->phys);
kfree(partition);
return -ENODEV; return -ENODEV;
} }
......
...@@ -168,9 +168,10 @@ static void omap3_core_restore_context(void) ...@@ -168,9 +168,10 @@ static void omap3_core_restore_context(void)
* once during boot sequence, but this works as we are not using secure * once during boot sequence, but this works as we are not using secure
* services. * services.
*/ */
static void omap3_save_secure_ram_context(u32 target_mpu_state) static void omap3_save_secure_ram_context(void)
{ {
u32 ret; u32 ret;
int mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
if (omap_type() != OMAP2_DEVICE_TYPE_GP) { if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
/* /*
...@@ -181,7 +182,7 @@ static void omap3_save_secure_ram_context(u32 target_mpu_state) ...@@ -181,7 +182,7 @@ static void omap3_save_secure_ram_context(u32 target_mpu_state)
pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON); pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON);
ret = _omap_save_secure_sram((u32 *) ret = _omap_save_secure_sram((u32 *)
__pa(omap3_secure_ram_storage)); __pa(omap3_secure_ram_storage));
pwrdm_set_next_pwrst(mpu_pwrdm, target_mpu_state); pwrdm_set_next_pwrst(mpu_pwrdm, mpu_next_state);
/* Following is for error tracking, it should not happen */ /* Following is for error tracking, it should not happen */
if (ret) { if (ret) {
printk(KERN_ERR "save_secure_sram() returns %08x\n", printk(KERN_ERR "save_secure_sram() returns %08x\n",
...@@ -1094,7 +1095,7 @@ static int __init omap3_pm_init(void) ...@@ -1094,7 +1095,7 @@ static int __init omap3_pm_init(void)
local_fiq_disable(); local_fiq_disable();
omap_dma_global_context_save(); omap_dma_global_context_save();
omap3_save_secure_ram_context(PWRDM_POWER_ON); omap3_save_secure_ram_context();
omap_dma_global_context_restore(); omap_dma_global_context_restore();
local_irq_enable(); local_irq_enable();
......
...@@ -780,8 +780,7 @@ static int omap_sr_autocomp_show(void *data, u64 *val) ...@@ -780,8 +780,7 @@ static int omap_sr_autocomp_show(void *data, u64 *val)
struct omap_sr *sr_info = (struct omap_sr *) data; struct omap_sr *sr_info = (struct omap_sr *) data;
if (!sr_info) { if (!sr_info) {
pr_warning("%s: omap_sr struct for sr_%s not found\n", pr_warning("%s: omap_sr struct not found\n", __func__);
__func__, sr_info->voltdm->name);
return -EINVAL; return -EINVAL;
} }
...@@ -795,8 +794,7 @@ static int omap_sr_autocomp_store(void *data, u64 val) ...@@ -795,8 +794,7 @@ static int omap_sr_autocomp_store(void *data, u64 val)
struct omap_sr *sr_info = (struct omap_sr *) data; struct omap_sr *sr_info = (struct omap_sr *) data;
if (!sr_info) { if (!sr_info) {
pr_warning("%s: omap_sr struct for sr_%s not found\n", pr_warning("%s: omap_sr struct not found\n", __func__);
__func__, sr_info->voltdm->name);
return -EINVAL; return -EINVAL;
} }
...@@ -834,7 +832,8 @@ static int __init omap_sr_probe(struct platform_device *pdev) ...@@ -834,7 +832,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
if (!pdata) { if (!pdata) {
dev_err(&pdev->dev, "%s: platform data missing\n", __func__); dev_err(&pdev->dev, "%s: platform data missing\n", __func__);
return -EINVAL; ret = -EINVAL;
goto err_free_devinfo;
} }
mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);
...@@ -966,7 +965,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev) ...@@ -966,7 +965,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev)
} }
sr_info = _sr_lookup(pdata->voltdm); sr_info = _sr_lookup(pdata->voltdm);
if (!sr_info) { if (IS_ERR(sr_info)) {
dev_warn(&pdev->dev, "%s: omap_sr struct not found\n", dev_warn(&pdev->dev, "%s: omap_sr struct not found\n",
__func__); __func__);
return -EINVAL; return -EINVAL;
......
...@@ -471,6 +471,7 @@ static void __init vdd_debugfs_init(struct omap_vdd_info *vdd) ...@@ -471,6 +471,7 @@ static void __init vdd_debugfs_init(struct omap_vdd_info *vdd)
strcat(name, vdd->voltdm.name); strcat(name, vdd->voltdm.name);
vdd->debug_dir = debugfs_create_dir(name, voltage_dir); vdd->debug_dir = debugfs_create_dir(name, voltage_dir);
kfree(name);
if (IS_ERR(vdd->debug_dir)) { if (IS_ERR(vdd->debug_dir)) {
pr_warning("%s: Unable to create debugfs directory for" pr_warning("%s: Unable to create debugfs directory for"
" vdd_%s\n", __func__, vdd->voltdm.name); " vdd_%s\n", __func__, vdd->voltdm.name);
......
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