From 744fc2dada5073b8d9822c8c838c8141037ec651 Mon Sep 17 00:00:00 2001 From: Arnd Bergmann Date: Thu, 5 Jan 2023 14:46:04 +0100 Subject: backlight: Remove pxa tosa support The PXA tosa machine was removed, so this backlight driver is no longer needed. Signed-off-by: Arnd Bergmann Reviewed-by: Daniel Thompson Signed-off-by: Lee Jones Link: https://lore.kernel.org/r/20230105134622.254560-10-arnd@kernel.org --- drivers/video/backlight/Kconfig | 14 -- drivers/video/backlight/Makefile | 2 - drivers/video/backlight/tosa_bl.c | 172 ---------------------- drivers/video/backlight/tosa_bl.h | 8 -- drivers/video/backlight/tosa_lcd.c | 284 ------------------------------------- 5 files changed, 480 deletions(-) delete mode 100644 drivers/video/backlight/tosa_bl.c delete mode 100644 drivers/video/backlight/tosa_bl.h delete mode 100644 drivers/video/backlight/tosa_lcd.c diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig index 936ba1e4d35e..01804847c39f 100644 --- a/drivers/video/backlight/Kconfig +++ b/drivers/video/backlight/Kconfig @@ -90,13 +90,6 @@ config LCD_PLATFORM This driver provides a platform-device registered LCD power control interface. -config LCD_TOSA - tristate "Sharp SL-6000 LCD Driver" - depends on I2C && SPI && MACH_TOSA - help - If you have an Sharp SL-6000 Zaurus say Y to enable a driver - for its LCD. - config LCD_HP700 tristate "HP Jornada 700 series LCD Driver" depends on SA1100_JORNADA720_SSP && !PREEMPTION @@ -288,13 +281,6 @@ config BACKLIGHT_APPLE If you have an Intel-based Apple say Y to enable a driver for its backlight. -config BACKLIGHT_TOSA - tristate "Sharp SL-6000 Backlight Driver" - depends on I2C && MACH_TOSA && LCD_TOSA - help - If you have an Sharp SL-6000 Zaurus say Y to enable a driver - for its backlight - config BACKLIGHT_QCOM_WLED tristate "Qualcomm PMIC WLED Driver" select REGMAP diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Makefile index e815f3f1deff..2a9126dbfe79 100644 --- a/drivers/video/backlight/Makefile +++ b/drivers/video/backlight/Makefile @@ -15,7 +15,6 @@ obj-$(CONFIG_LCD_LTV350QV) += ltv350qv.o obj-$(CONFIG_LCD_OTM3225A) += otm3225a.o obj-$(CONFIG_LCD_PLATFORM) += platform_lcd.o obj-$(CONFIG_LCD_TDO24M) += tdo24m.o -obj-$(CONFIG_LCD_TOSA) += tosa_lcd.o obj-$(CONFIG_LCD_VGG2432A4) += vgg2432a4.o obj-$(CONFIG_BACKLIGHT_88PM860X) += 88pm860x_bl.o @@ -53,7 +52,6 @@ obj-$(CONFIG_BACKLIGHT_QCOM_WLED) += qcom-wled.o obj-$(CONFIG_BACKLIGHT_RT4831) += rt4831-backlight.o obj-$(CONFIG_BACKLIGHT_SAHARA) += kb3886_bl.o obj-$(CONFIG_BACKLIGHT_SKY81452) += sky81452-backlight.o -obj-$(CONFIG_BACKLIGHT_TOSA) += tosa_bl.o obj-$(CONFIG_BACKLIGHT_TPS65217) += tps65217_bl.o obj-$(CONFIG_BACKLIGHT_WM831X) += wm831x_bl.o obj-$(CONFIG_BACKLIGHT_ARCXCNN) += arcxcnn_bl.o diff --git a/drivers/video/backlight/tosa_bl.c b/drivers/video/backlight/tosa_bl.c deleted file mode 100644 index 77b71f6c19b5..000000000000 --- a/drivers/video/backlight/tosa_bl.c +++ /dev/null @@ -1,172 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * LCD / Backlight control code for Sharp SL-6000x (tosa) - * - * Copyright (c) 2005 Dirk Opfer - * Copyright (c) 2007,2008 Dmitry Baryshkov - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "tosa_bl.h" - -#define COMADJ_DEFAULT 97 - -#define DAC_CH1 0 -#define DAC_CH2 1 - -struct tosa_bl_data { - struct i2c_client *i2c; - struct backlight_device *bl; - struct gpio_desc *gpio; - - int comadj; -}; - -static void tosa_bl_set_backlight(struct tosa_bl_data *data, int brightness) -{ - struct spi_device *spi = dev_get_platdata(&data->i2c->dev); - - i2c_smbus_write_byte_data(data->i2c, DAC_CH1, data->comadj); - - /* SetBacklightDuty */ - i2c_smbus_write_byte_data(data->i2c, DAC_CH2, (u8)(brightness & 0xff)); - - /* SetBacklightVR */ - gpiod_set_value(data->gpio, brightness & 0x100); - - tosa_bl_enable(spi, brightness); -} - -static int tosa_bl_update_status(struct backlight_device *dev) -{ - struct backlight_properties *props = &dev->props; - struct tosa_bl_data *data = bl_get_data(dev); - int power = max(props->power, props->fb_blank); - int brightness = props->brightness; - - if (power) - brightness = 0; - - tosa_bl_set_backlight(data, brightness); - - return 0; -} - -static int tosa_bl_get_brightness(struct backlight_device *dev) -{ - struct backlight_properties *props = &dev->props; - - return props->brightness; -} - -static const struct backlight_ops bl_ops = { - .get_brightness = tosa_bl_get_brightness, - .update_status = tosa_bl_update_status, -}; - -static int tosa_bl_probe(struct i2c_client *client) -{ - struct backlight_properties props; - struct tosa_bl_data *data; - int ret = 0; - - data = devm_kzalloc(&client->dev, sizeof(struct tosa_bl_data), - GFP_KERNEL); - if (!data) - return -ENOMEM; - - data->comadj = sharpsl_param.comadj == -1 ? COMADJ_DEFAULT : sharpsl_param.comadj; - data->gpio = devm_gpiod_get(&client->dev, "backlight", GPIOD_OUT_LOW); - ret = PTR_ERR_OR_ZERO(data->gpio); - if (ret) { - dev_dbg(&data->bl->dev, "Unable to request gpio!\n"); - return ret; - } - - i2c_set_clientdata(client, data); - data->i2c = client; - - memset(&props, 0, sizeof(struct backlight_properties)); - props.type = BACKLIGHT_RAW; - props.max_brightness = 512 - 1; - data->bl = devm_backlight_device_register(&client->dev, "tosa-bl", - &client->dev, data, &bl_ops, - &props); - if (IS_ERR(data->bl)) { - ret = PTR_ERR(data->bl); - goto err_reg; - } - - data->bl->props.brightness = 69; - data->bl->props.power = FB_BLANK_UNBLANK; - - backlight_update_status(data->bl); - - return 0; - -err_reg: - data->bl = NULL; - return ret; -} - -static void tosa_bl_remove(struct i2c_client *client) -{ - struct tosa_bl_data *data = i2c_get_clientdata(client); - - data->bl = NULL; -} - -#ifdef CONFIG_PM_SLEEP -static int tosa_bl_suspend(struct device *dev) -{ - struct tosa_bl_data *data = dev_get_drvdata(dev); - - tosa_bl_set_backlight(data, 0); - - return 0; -} - -static int tosa_bl_resume(struct device *dev) -{ - struct tosa_bl_data *data = dev_get_drvdata(dev); - - backlight_update_status(data->bl); - return 0; -} -#endif - -static SIMPLE_DEV_PM_OPS(tosa_bl_pm_ops, tosa_bl_suspend, tosa_bl_resume); - -static const struct i2c_device_id tosa_bl_id[] = { - { "tosa-bl", 0 }, - { }, -}; -MODULE_DEVICE_TABLE(i2c, tosa_bl_id); - -static struct i2c_driver tosa_bl_driver = { - .driver = { - .name = "tosa-bl", - .pm = &tosa_bl_pm_ops, - }, - .probe_new = tosa_bl_probe, - .remove = tosa_bl_remove, - .id_table = tosa_bl_id, -}; - -module_i2c_driver(tosa_bl_driver); - -MODULE_AUTHOR("Dmitry Baryshkov"); -MODULE_LICENSE("GPL v2"); -MODULE_DESCRIPTION("LCD/Backlight control for Sharp SL-6000 PDA"); - diff --git a/drivers/video/backlight/tosa_bl.h b/drivers/video/backlight/tosa_bl.h deleted file mode 100644 index 589e17e6fdb2..000000000000 --- a/drivers/video/backlight/tosa_bl.h +++ /dev/null @@ -1,8 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -#ifndef _TOSA_BL_H -#define _TOSA_BL_H - -struct spi_device; -extern int tosa_bl_enable(struct spi_device *spi, int enable); - -#endif diff --git a/drivers/video/backlight/tosa_lcd.c b/drivers/video/backlight/tosa_lcd.c deleted file mode 100644 index 23d6c6bf0f54..000000000000 --- a/drivers/video/backlight/tosa_lcd.c +++ /dev/null @@ -1,284 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * LCD / Backlight control code for Sharp SL-6000x (tosa) - * - * Copyright (c) 2005 Dirk Opfer - * Copyright (c) 2007,2008 Dmitry Baryshkov - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "tosa_bl.h" - -#define POWER_IS_ON(pwr) ((pwr) <= FB_BLANK_NORMAL) - -#define TG_REG0_VQV 0x0001 -#define TG_REG0_COLOR 0x0002 -#define TG_REG0_UD 0x0004 -#define TG_REG0_LR 0x0008 - -/* - * Timing Generator - */ -#define TG_PNLCTL 0x00 -#define TG_TPOSCTL 0x01 -#define TG_DUTYCTL 0x02 -#define TG_GPOSR 0x03 -#define TG_GPODR1 0x04 -#define TG_GPODR2 0x05 -#define TG_PINICTL 0x06 -#define TG_HPOSCTL 0x07 - - -#define DAC_BASE 0x4e - -struct tosa_lcd_data { - struct spi_device *spi; - struct lcd_device *lcd; - struct i2c_client *i2c; - struct gpio_desc *gpiod_tg; - - int lcd_power; - bool is_vga; -}; - -static int tosa_tg_send(struct spi_device *spi, int adrs, uint8_t data) -{ - u8 buf[1]; - struct spi_message msg; - struct spi_transfer xfer = { - .len = 1, - .cs_change = 0, - .tx_buf = buf, - }; - - buf[0] = ((adrs & 0x07) << 5) | (data & 0x1f); - spi_message_init(&msg); - spi_message_add_tail(&xfer, &msg); - - return spi_sync(spi, &msg); -} - -int tosa_bl_enable(struct spi_device *spi, int enable) -{ - /* bl_enable GP04=1 otherwise GP04=0*/ - return tosa_tg_send(spi, TG_GPODR2, enable ? 0x01 : 0x00); -} -EXPORT_SYMBOL(tosa_bl_enable); - -static void tosa_lcd_tg_init(struct tosa_lcd_data *data) -{ - /* TG on */ - gpiod_set_value(data->gpiod_tg, 0); - - mdelay(60); - - /* delayed 0clk TCTL signal for VGA */ - tosa_tg_send(data->spi, TG_TPOSCTL, 0x00); - /* GPOS0=powercontrol, GPOS1=GPIO, GPOS2=TCTL */ - tosa_tg_send(data->spi, TG_GPOSR, 0x02); -} - -static void tosa_lcd_tg_on(struct tosa_lcd_data *data) -{ - struct spi_device *spi = data->spi; - int value = TG_REG0_COLOR | TG_REG0_UD | TG_REG0_LR; - - if (data->is_vga) - value |= TG_REG0_VQV; - - tosa_tg_send(spi, TG_PNLCTL, value); - - /* TG LCD pannel power up */ - tosa_tg_send(spi, TG_PINICTL, 0x4); - mdelay(50); - - /* TG LCD GVSS */ - tosa_tg_send(spi, TG_PINICTL, 0x0); - - if (IS_ERR_OR_NULL(data->i2c)) { - /* - * after the pannel is powered up the first time, - * we can access the i2c bus so probe for the DAC - */ - struct i2c_adapter *adap = i2c_get_adapter(0); - struct i2c_board_info info = { - .dev_name = "tosa-bl", - .type = "tosa-bl", - .addr = DAC_BASE, - .platform_data = data->spi, - }; - data->i2c = i2c_new_client_device(adap, &info); - } -} - -static void tosa_lcd_tg_off(struct tosa_lcd_data *data) -{ - struct spi_device *spi = data->spi; - - /* TG LCD VHSA off */ - tosa_tg_send(spi, TG_PINICTL, 0x4); - mdelay(50); - - /* TG LCD signal off */ - tosa_tg_send(spi, TG_PINICTL, 0x6); - mdelay(50); - - /* TG Off */ - gpiod_set_value(data->gpiod_tg, 1); - mdelay(100); -} - -int tosa_lcd_set_power(struct lcd_device *lcd, int power) -{ - struct tosa_lcd_data *data = lcd_get_data(lcd); - - if (POWER_IS_ON(power) && !POWER_IS_ON(data->lcd_power)) - tosa_lcd_tg_on(data); - - if (!POWER_IS_ON(power) && POWER_IS_ON(data->lcd_power)) - tosa_lcd_tg_off(data); - - data->lcd_power = power; - return 0; -} - -static int tosa_lcd_get_power(struct lcd_device *lcd) -{ - struct tosa_lcd_data *data = lcd_get_data(lcd); - - return data->lcd_power; -} - -static int tosa_lcd_set_mode(struct lcd_device *lcd, struct fb_videomode *mode) -{ - struct tosa_lcd_data *data = lcd_get_data(lcd); - - if (mode->xres == 320 || mode->yres == 320) - data->is_vga = false; - else - data->is_vga = true; - - if (POWER_IS_ON(data->lcd_power)) - tosa_lcd_tg_on(data); - - return 0; -} - -static struct lcd_ops tosa_lcd_ops = { - .set_power = tosa_lcd_set_power, - .get_power = tosa_lcd_get_power, - .set_mode = tosa_lcd_set_mode, -}; - -static int tosa_lcd_probe(struct spi_device *spi) -{ - int ret; - struct tosa_lcd_data *data; - - data = devm_kzalloc(&spi->dev, sizeof(struct tosa_lcd_data), - GFP_KERNEL); - if (!data) - return -ENOMEM; - - data->is_vga = true; /* default to VGA mode */ - - /* - * bits_per_word cannot be configured in platform data - */ - spi->bits_per_word = 8; - - ret = spi_setup(spi); - if (ret < 0) - return ret; - - data->spi = spi; - spi_set_drvdata(spi, data); - - data->gpiod_tg = devm_gpiod_get(&spi->dev, "tg #pwr", GPIOD_OUT_LOW); - if (IS_ERR(data->gpiod_tg)) - return PTR_ERR(data->gpiod_tg); - - mdelay(60); - - tosa_lcd_tg_init(data); - - tosa_lcd_tg_on(data); - - data->lcd = devm_lcd_device_register(&spi->dev, "tosa-lcd", &spi->dev, - data, &tosa_lcd_ops); - - if (IS_ERR(data->lcd)) { - ret = PTR_ERR(data->lcd); - data->lcd = NULL; - goto err_register; - } - - return 0; - -err_register: - tosa_lcd_tg_off(data); - return ret; -} - -static void tosa_lcd_remove(struct spi_device *spi) -{ - struct tosa_lcd_data *data = spi_get_drvdata(spi); - - i2c_unregister_device(data->i2c); - - tosa_lcd_tg_off(data); -} - -#ifdef CONFIG_PM_SLEEP -static int tosa_lcd_suspend(struct device *dev) -{ - struct tosa_lcd_data *data = dev_get_drvdata(dev); - - tosa_lcd_tg_off(data); - - return 0; -} - -static int tosa_lcd_resume(struct device *dev) -{ - struct tosa_lcd_data *data = dev_get_drvdata(dev); - - tosa_lcd_tg_init(data); - if (POWER_IS_ON(data->lcd_power)) - tosa_lcd_tg_on(data); - else - tosa_lcd_tg_off(data); - - return 0; -} -#endif - -static SIMPLE_DEV_PM_OPS(tosa_lcd_pm_ops, tosa_lcd_suspend, tosa_lcd_resume); - -static struct spi_driver tosa_lcd_driver = { - .driver = { - .name = "tosa-lcd", - .pm = &tosa_lcd_pm_ops, - }, - .probe = tosa_lcd_probe, - .remove = tosa_lcd_remove, -}; - -module_spi_driver(tosa_lcd_driver); - -MODULE_AUTHOR("Dmitry Baryshkov"); -MODULE_LICENSE("GPL v2"); -MODULE_DESCRIPTION("LCD/Backlight control for Sharp SL-6000 PDA"); -MODULE_ALIAS("spi:tosa-lcd"); -- cgit v1.2.3