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
This commit is contained in:
commit
b8f049ae55
9 changed files with 39 additions and 38 deletions
|
@ -37,7 +37,7 @@ int omap_lcd_dma_running(void)
|
|||
* On OMAP1510, internal LCD controller will start the transfer
|
||||
* 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)
|
||||
return 1;
|
||||
|
||||
|
@ -95,7 +95,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_single_transfer);
|
|||
|
||||
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");
|
||||
BUG();
|
||||
return;
|
||||
|
@ -106,7 +106,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_rotation);
|
|||
|
||||
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");
|
||||
BUG();
|
||||
}
|
||||
|
@ -116,7 +116,7 @@ EXPORT_SYMBOL(omap_set_lcd_dma_b1_mirror);
|
|||
|
||||
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 "
|
||||
"in 1510 mode\n");
|
||||
BUG();
|
||||
|
@ -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)
|
||||
{
|
||||
if (cpu_is_omap1510()) {
|
||||
if (cpu_is_omap15xx()) {
|
||||
printk(KERN_ERR "DMA scale is not supported in 1510 mode\n");
|
||||
BUG();
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ static void set_b1_regs(void)
|
|||
bottom = PIXADDR(lcd_dma.xres - 1, lcd_dma.yres - 1);
|
||||
/* 1510 DMA requires the bottom address to be 2 more
|
||||
* than the actual last memory access location. */
|
||||
if (cpu_is_omap1510() &&
|
||||
if (cpu_is_omap15xx() &&
|
||||
lcd_dma.data_type == OMAP_DMA_DATA_TYPE_S32)
|
||||
bottom += 2;
|
||||
ei = PIXSTEP(0, 0, 1, 0);
|
||||
|
@ -241,7 +241,7 @@ static void set_b1_regs(void)
|
|||
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, OMAP1510_DMA_LCD_TOP_F1_L);
|
||||
omap_writew(bottom >> 16, OMAP1510_DMA_LCD_BOT_F1_U);
|
||||
|
@ -343,7 +343,7 @@ void omap_free_lcd_dma(void)
|
|||
BUG();
|
||||
return;
|
||||
}
|
||||
if (!cpu_is_omap1510())
|
||||
if (!cpu_is_omap15xx())
|
||||
omap_writew(omap_readw(OMAP1610_DMA_LCD_CCR) & ~1,
|
||||
OMAP1610_DMA_LCD_CCR);
|
||||
lcd_dma.reserved = 0;
|
||||
|
@ -360,7 +360,7 @@ void omap_enable_lcd_dma(void)
|
|||
* connected. Otherwise the OMAP internal controller will
|
||||
* start the transfer when it gets enabled.
|
||||
*/
|
||||
if (cpu_is_omap1510() || !lcd_dma.ext_ctrl)
|
||||
if (cpu_is_omap15xx() || !lcd_dma.ext_ctrl)
|
||||
return;
|
||||
|
||||
w = omap_readw(OMAP1610_DMA_LCD_CTRL);
|
||||
|
@ -378,14 +378,14 @@ EXPORT_SYMBOL(omap_enable_lcd_dma);
|
|||
void omap_setup_lcd_dma(void)
|
||||
{
|
||||
BUG_ON(lcd_dma.active);
|
||||
if (!cpu_is_omap1510()) {
|
||||
if (!cpu_is_omap15xx()) {
|
||||
/* Set some reasonable defaults */
|
||||
omap_writew(0x5440, OMAP1610_DMA_LCD_CCR);
|
||||
omap_writew(0x9102, OMAP1610_DMA_LCD_CSDP);
|
||||
omap_writew(0x0004, OMAP1610_DMA_LCD_LCH_CTRL);
|
||||
}
|
||||
set_b1_regs();
|
||||
if (!cpu_is_omap1510()) {
|
||||
if (!cpu_is_omap15xx()) {
|
||||
u16 w;
|
||||
|
||||
w = omap_readw(OMAP1610_DMA_LCD_CCR);
|
||||
|
@ -407,7 +407,7 @@ void omap_stop_lcd_dma(void)
|
|||
u16 w;
|
||||
|
||||
lcd_dma.active = 0;
|
||||
if (cpu_is_omap1510() || !lcd_dma.ext_ctrl)
|
||||
if (cpu_is_omap15xx() || !lcd_dma.ext_ctrl)
|
||||
return;
|
||||
|
||||
w = omap_readw(OMAP1610_DMA_LCD_CCR);
|
||||
|
|
|
@ -44,7 +44,6 @@
|
|||
#include <linux/clocksource.h>
|
||||
#include <linux/clockchips.h>
|
||||
#include <linux/io.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
#include <asm/system.h>
|
||||
#include <mach/hardware.h>
|
||||
|
|
|
@ -115,9 +115,6 @@ static struct omap2_hsmmc_info mmc[] = {
|
|||
|
||||
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))
|
||||
gpio_set_value_cansleep(dssdev->reset_gpio, 1);
|
||||
return 0;
|
||||
|
@ -247,6 +244,8 @@ static struct gpio_led gpio_leds[];
|
|||
static int devkit8000_twl_gpio_setup(struct device *dev,
|
||||
unsigned gpio, unsigned ngpio)
|
||||
{
|
||||
int ret;
|
||||
|
||||
omap_mux_init_gpio(29, OMAP_PIN_INPUT);
|
||||
/* gpio + 0 is "mmc0_cd" (input/IRQ) */
|
||||
mmc[0].gpio_cd = gpio + 0;
|
||||
|
@ -255,17 +254,23 @@ static int devkit8000_twl_gpio_setup(struct device *dev,
|
|||
/* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
|
||||
gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
|
||||
|
||||
/* gpio + 1 is "LCD_PWREN" (out, active high) */
|
||||
devkit8000_lcd_device.reset_gpio = gpio + 1;
|
||||
gpio_request(devkit8000_lcd_device.reset_gpio, "LCD_PWREN");
|
||||
/* Disable until needed */
|
||||
gpio_direction_output(devkit8000_lcd_device.reset_gpio, 0);
|
||||
/* TWL4030_GPIO_MAX + 0 is "LCD_PWREN" (out, active high) */
|
||||
devkit8000_lcd_device.reset_gpio = gpio + TWL4030_GPIO_MAX + 0;
|
||||
ret = gpio_request_one(devkit8000_lcd_device.reset_gpio,
|
||||
GPIOF_DIR_OUT | GPIOF_INIT_LOW, "LCD_PWREN");
|
||||
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) */
|
||||
devkit8000_dvi_device.reset_gpio = gpio + 7;
|
||||
gpio_request(devkit8000_dvi_device.reset_gpio, "DVI PowerDown");
|
||||
/* Disable until needed */
|
||||
gpio_direction_output(devkit8000_dvi_device.reset_gpio, 0);
|
||||
ret = gpio_request_one(devkit8000_dvi_device.reset_gpio,
|
||||
GPIOF_DIR_OUT | GPIOF_INIT_LOW, "DVI PowerDown");
|
||||
if (ret < 0) {
|
||||
devkit8000_dvi_device.reset_gpio = -EINVAL;
|
||||
printk(KERN_ERR "Failed to request GPIO for DVI PowerDown\n");
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -409,8 +409,6 @@ static void __init omap4_panda_init(void)
|
|||
platform_add_devices(panda_devices, ARRAY_SIZE(panda_devices));
|
||||
omap_serial_init();
|
||||
omap4_twl6030_hsmmc_init(mmc);
|
||||
/* OMAP4 Panda uses internal transceiver so register nop transceiver */
|
||||
usb_nop_xceiv_register();
|
||||
omap4_ehci_init();
|
||||
usb_musb_init(&musb_board_data);
|
||||
}
|
||||
|
|
|
@ -40,9 +40,6 @@ static struct regulator_consumer_supply rm680_vemmc_consumers[] = {
|
|||
static struct regulator_init_data rm680_vemmc = {
|
||||
.constraints = {
|
||||
.name = "rm680_vemmc",
|
||||
.min_uV = 2900000,
|
||||
.max_uV = 2900000,
|
||||
.apply_uV = 1,
|
||||
.valid_modes_mask = REGULATOR_MODE_NORMAL
|
||||
| REGULATOR_MODE_STANDBY,
|
||||
.valid_ops_mask = REGULATOR_CHANGE_STATUS
|
||||
|
|
|
@ -1000,6 +1000,7 @@ int __init omap_mux_init(const char *name, u32 flags,
|
|||
if (!partition->base) {
|
||||
pr_err("%s: Could not ioremap mux partition at 0x%08x\n",
|
||||
__func__, partition->phys);
|
||||
kfree(partition);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
|
|
@ -168,9 +168,10 @@ static void omap3_core_restore_context(void)
|
|||
* once during boot sequence, but this works as we are not using secure
|
||||
* services.
|
||||
*/
|
||||
static void omap3_save_secure_ram_context(u32 target_mpu_state)
|
||||
static void omap3_save_secure_ram_context(void)
|
||||
{
|
||||
u32 ret;
|
||||
int mpu_next_state = pwrdm_read_next_pwrst(mpu_pwrdm);
|
||||
|
||||
if (omap_type() != OMAP2_DEVICE_TYPE_GP) {
|
||||
/*
|
||||
|
@ -181,7 +182,7 @@ static void omap3_save_secure_ram_context(u32 target_mpu_state)
|
|||
pwrdm_set_next_pwrst(mpu_pwrdm, PWRDM_POWER_ON);
|
||||
ret = _omap_save_secure_sram((u32 *)
|
||||
__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 */
|
||||
if (ret) {
|
||||
printk(KERN_ERR "save_secure_sram() returns %08x\n",
|
||||
|
@ -1094,7 +1095,7 @@ static int __init omap3_pm_init(void)
|
|||
local_fiq_disable();
|
||||
|
||||
omap_dma_global_context_save();
|
||||
omap3_save_secure_ram_context(PWRDM_POWER_ON);
|
||||
omap3_save_secure_ram_context();
|
||||
omap_dma_global_context_restore();
|
||||
|
||||
local_irq_enable();
|
||||
|
|
|
@ -780,8 +780,7 @@ static int omap_sr_autocomp_show(void *data, u64 *val)
|
|||
struct omap_sr *sr_info = (struct omap_sr *) data;
|
||||
|
||||
if (!sr_info) {
|
||||
pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
||||
__func__, sr_info->voltdm->name);
|
||||
pr_warning("%s: omap_sr struct not found\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -795,8 +794,7 @@ static int omap_sr_autocomp_store(void *data, u64 val)
|
|||
struct omap_sr *sr_info = (struct omap_sr *) data;
|
||||
|
||||
if (!sr_info) {
|
||||
pr_warning("%s: omap_sr struct for sr_%s not found\n",
|
||||
__func__, sr_info->voltdm->name);
|
||||
pr_warning("%s: omap_sr struct not found\n", __func__);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
@ -834,7 +832,8 @@ static int __init omap_sr_probe(struct platform_device *pdev)
|
|||
|
||||
if (!pdata) {
|
||||
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);
|
||||
|
@ -966,7 +965,7 @@ static int __devexit omap_sr_remove(struct platform_device *pdev)
|
|||
}
|
||||
|
||||
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",
|
||||
__func__);
|
||||
return -EINVAL;
|
||||
|
|
|
@ -471,6 +471,7 @@ static void __init vdd_debugfs_init(struct omap_vdd_info *vdd)
|
|||
strcat(name, vdd->voltdm.name);
|
||||
|
||||
vdd->debug_dir = debugfs_create_dir(name, voltage_dir);
|
||||
kfree(name);
|
||||
if (IS_ERR(vdd->debug_dir)) {
|
||||
pr_warning("%s: Unable to create debugfs directory for"
|
||||
" vdd_%s\n", __func__, vdd->voltdm.name);
|
||||
|
|
Loading…
Reference in a new issue