Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0fb19cda authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Simon Horman
Browse files

ARM: mach-shmobile: ag5evm: Use bd6107 backlight driver



Replace the backlight callback with a bd6107 backlight platform device.

Signed-off-by: default avatarLaurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Signed-off-by: default avatarSimon Horman <horms+renesas@verge.net.au>
parent 3f3bee2e
Loading
Loading
Loading
Loading
+16 −49
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@
#include <linux/mmc/sh_mmcif.h>
#include <linux/mmc/sh_mobile_sdhi.h>
#include <linux/mfd/tmio.h>
#include <linux/platform_data/bd6107.h>
#include <linux/sh_clk.h>
#include <linux/irqchip/arm-gic.h>
#include <video/sh_mobile_lcdc.h>
@@ -291,47 +292,7 @@ static struct platform_device mipidsi0_device = {
	},
};

static unsigned char lcd_backlight_seq[3][2] = {
	{ 0x04, 0x07 },
	{ 0x23, 0x80 },
	{ 0x03, 0x01 },
};

static int lcd_backlight_set_brightness(int brightness)
{
	struct i2c_adapter *adap;
	struct i2c_msg msg;
	unsigned int i;
	int ret;

	if (brightness == 0) {
		/* Reset the chip */
		gpio_set_value(235, 0);
		mdelay(24);
		gpio_set_value(235, 1);
		return 0;
	}

	adap = i2c_get_adapter(1);
	if (adap == NULL)
		return -ENODEV;

	for (i = 0; i < ARRAY_SIZE(lcd_backlight_seq); i++) {
		msg.addr = 0x6d;
		msg.buf = &lcd_backlight_seq[i][0];
		msg.len = 2;
		msg.flags = 0;

		ret = i2c_transfer(adap, &msg, 1);
		if (ret < 0)
			break;
	}

	i2c_put_adapter(adap);
	return ret < 0 ? ret : 0;
}

/* LCDC0 */
/* LCDC0 and backlight */
static const struct fb_videomode lcdc0_modes[] = {
	{
		.name		= "R63302(QHD)",
@@ -361,11 +322,6 @@ static struct sh_mobile_lcdc_info lcdc0_info = {
			.width = 44,
			.height = 79,
		},
		.bl_info = {
			.name = "sh_mobile_lcdc_bl",
			.max_brightness = 1,
			.set_brightness = lcd_backlight_set_brightness,
		},
		.tx_dev = &mipidsi0_device,
	}
};
@@ -394,6 +350,17 @@ static struct platform_device lcdc0_device = {
	},
};

static struct bd6107_platform_data backlight_data = {
	.fbdev = &lcdc0_device.dev,
	.reset = 235,
	.def_value = 0,
};

static struct i2c_board_info backlight_board_info = {
	I2C_BOARD_INFO("bd6107", 0x6d),
	.platform_data = &backlight_data,
};

/* Fixed 2.8V regulators to be used by SDHI0 */
static struct regulator_consumer_supply fixed2v8_power_consumers[] =
{
@@ -648,15 +615,15 @@ static void __init ag5evm_init(void)
	gpio_set_value(217, 1);
	mdelay(100);

	/* LCD backlight controller */
	gpio_request_one(235, GPIOF_OUT_INIT_LOW, NULL); /* RESET */
	lcd_backlight_set_brightness(0);

#ifdef CONFIG_CACHE_L2X0
	/* Shared attribute override enable, 64K*8way */
	l2x0_init(IOMEM(0xf0100000), 0x00460000, 0xc2000fff);
#endif
	sh73a0_add_standard_devices();

	i2c_register_board_info(1, &backlight_board_info, 1);

	platform_add_devices(ag5evm_devices, ARRAY_SIZE(ag5evm_devices));
}