diff options
Diffstat (limited to 'drivers/video/backlight/ili9320.c')
| -rw-r--r-- | drivers/video/backlight/ili9320.c | 74 | 
1 files changed, 23 insertions, 51 deletions
diff --git a/drivers/video/backlight/ili9320.c b/drivers/video/backlight/ili9320.c index 5118a9f029a..2cf39e6d519 100644 --- a/drivers/video/backlight/ili9320.c +++ b/drivers/video/backlight/ili9320.c @@ -45,7 +45,7 @@ static inline int ili9320_write_spi(struct ili9320 *ili,  	/* second message is the data to transfer */  	data[0] = spi->id | ILI9320_SPI_DATA  | ILI9320_SPI_WRITE; - 	data[1] = value >> 8; +	data[1] = value >> 8;  	data[2] = value;  	return spi_sync(spi->dev, &spi->message); @@ -56,11 +56,10 @@ int ili9320_write(struct ili9320 *ili, unsigned int reg, unsigned int value)  	dev_dbg(ili->dev, "write: reg=%02x, val=%04x\n", reg, value);  	return ili->write(ili, reg, value);  } -  EXPORT_SYMBOL_GPL(ili9320_write);  int ili9320_write_regs(struct ili9320 *ili, -		       struct ili9320_reg *values, +		       const struct ili9320_reg *values,  		       int nr_values)  {  	int index; @@ -74,7 +73,6 @@ int ili9320_write_regs(struct ili9320 *ili,  	return 0;  } -  EXPORT_SYMBOL_GPL(ili9320_write_regs);  static void ili9320_reset(struct ili9320 *lcd) @@ -171,7 +169,7 @@ static struct lcd_ops ili9320_ops = {  	.set_power	= ili9320_set_power,  }; -static void __devinit ili9320_setup_spi(struct ili9320 *ili, +static void ili9320_setup_spi(struct ili9320 *ili,  					struct spi_device *dev)  {  	struct ili9320_spi *spi = &ili->access.spi; @@ -197,10 +195,10 @@ static void __devinit ili9320_setup_spi(struct ili9320 *ili,  	spi_message_add_tail(&spi->xfer[1], &spi->message);  } -int __devinit ili9320_probe_spi(struct spi_device *spi, +int ili9320_probe_spi(struct spi_device *spi,  				struct ili9320_client *client)  { -	struct ili9320_platdata *cfg = spi->dev.platform_data; +	struct ili9320_platdata *cfg = dev_get_platdata(&spi->dev);  	struct device *dev = &spi->dev;  	struct ili9320 *ili;  	struct lcd_device *lcd; @@ -220,11 +218,9 @@ int __devinit ili9320_probe_spi(struct spi_device *spi,  	/* allocate and initialse our state */ -	ili = kzalloc(sizeof(struct ili9320), GFP_KERNEL); -	if (ili == NULL) { -		dev_err(dev, "no memory for device\n"); +	ili = devm_kzalloc(&spi->dev, sizeof(struct ili9320), GFP_KERNEL); +	if (ili == NULL)  		return -ENOMEM; -	}  	ili->access.spi.id = ILI9320_SPI_IDCODE | ILI9320_SPI_ID(1); @@ -233,15 +229,15 @@ int __devinit ili9320_probe_spi(struct spi_device *spi,  	ili->power = FB_BLANK_POWERDOWN;  	ili->platdata = cfg; -	dev_set_drvdata(&spi->dev, ili); +	spi_set_drvdata(spi, ili);  	ili9320_setup_spi(ili, spi); -	lcd = lcd_device_register("ili9320", dev, ili, &ili9320_ops); +	lcd = devm_lcd_device_register(&spi->dev, "ili9320", dev, ili, +					&ili9320_ops);  	if (IS_ERR(lcd)) {  		dev_err(dev, "failed to register lcd device\n"); -		ret = PTR_ERR(lcd); -		goto err_free; +		return PTR_ERR(lcd);  	}  	ili->lcd = lcd; @@ -251,70 +247,47 @@ int __devinit ili9320_probe_spi(struct spi_device *spi,  	ret = ili9320_power(ili, FB_BLANK_UNBLANK);  	if (ret != 0) {  		dev_err(dev, "failed to set lcd power state\n"); -		goto err_unregister; +		return ret;  	}  	return 0; - - err_unregister: -	lcd_device_unregister(lcd); - - err_free: -	kfree(ili); - -	return ret;  } -  EXPORT_SYMBOL_GPL(ili9320_probe_spi); -int __devexit ili9320_remove(struct ili9320 *ili) +int ili9320_remove(struct ili9320 *ili)  {  	ili9320_power(ili, FB_BLANK_POWERDOWN); - -	lcd_device_unregister(ili->lcd); -	kfree(ili); -  	return 0;  } -  EXPORT_SYMBOL_GPL(ili9320_remove); -#ifdef CONFIG_PM -int ili9320_suspend(struct ili9320 *lcd, pm_message_t state) +#ifdef CONFIG_PM_SLEEP +int ili9320_suspend(struct ili9320 *lcd)  {  	int ret; -	dev_dbg(lcd->dev, "%s: event %d\n", __func__, state.event); +	ret = ili9320_power(lcd, FB_BLANK_POWERDOWN); -	if (state.event == PM_EVENT_SUSPEND) { -		ret = ili9320_power(lcd, FB_BLANK_POWERDOWN); - -		if (lcd->platdata->suspend == ILI9320_SUSPEND_DEEP) { -			ili9320_write(lcd, ILI9320_POWER1, lcd->power1 | -				      ILI9320_POWER1_SLP | -				      ILI9320_POWER1_DSTB); -			lcd->initialised = 0; -		} - -		return ret; +	if (lcd->platdata->suspend == ILI9320_SUSPEND_DEEP) { +		ili9320_write(lcd, ILI9320_POWER1, lcd->power1 | +			      ILI9320_POWER1_SLP | +			      ILI9320_POWER1_DSTB); +		lcd->initialised = 0;  	} -	return 0; +	return ret;  } -  EXPORT_SYMBOL_GPL(ili9320_suspend);  int ili9320_resume(struct ili9320 *lcd)  {  	dev_info(lcd->dev, "resuming from power state %d\n", lcd->power); -	if (lcd->platdata->suspend == ILI9320_SUSPEND_DEEP) { +	if (lcd->platdata->suspend == ILI9320_SUSPEND_DEEP)  		ili9320_write(lcd, ILI9320_POWER1, 0x00); -	}  	return ili9320_power(lcd, FB_BLANK_UNBLANK);  } -  EXPORT_SYMBOL_GPL(ili9320_resume);  #endif @@ -323,7 +296,6 @@ void ili9320_shutdown(struct ili9320 *lcd)  {  	ili9320_power(lcd, FB_BLANK_POWERDOWN);  } -  EXPORT_SYMBOL_GPL(ili9320_shutdown);  MODULE_AUTHOR("Ben Dooks <ben-linux@fluff.org>");  | 
