]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branches 'tpu-pwm', 'backlight' and 'soc' into cleanup2-base
authorSimon Horman <horms+renesas@verge.net.au>
Wed, 24 Jul 2013 07:35:12 +0000 (16:35 +0900)
committerSimon Horman <horms+renesas@verge.net.au>
Wed, 24 Jul 2013 07:35:12 +0000 (16:35 +0900)
22 files changed:
arch/arm/mach-shmobile/board-ag5evm.c
arch/arm/mach-shmobile/board-armadillo800eva.c
arch/arm/mach-shmobile/board-kota2.c
arch/arm/mach-shmobile/board-mackerel.c
arch/arm/mach-shmobile/clock-sh73a0.c
arch/arm/mach-shmobile/include/mach/sh73a0.h
arch/sh/boards/mach-ecovec24/setup.c
arch/sh/boards/mach-kfr2r09/lcd_wqvga.c
arch/sh/boards/mach-kfr2r09/setup.c
arch/sh/include/mach-kfr2r09/mach/kfr2r09.h
drivers/leds/Kconfig
drivers/leds/Makefile
drivers/leds/leds-renesas-tpu.c [deleted file]
drivers/video/backlight/Kconfig
drivers/video/backlight/Makefile
drivers/video/backlight/bd6107.c [new file with mode: 0644]
drivers/video/backlight/gpio_backlight.c [new file with mode: 0644]
drivers/video/backlight/lv5207lp.c [new file with mode: 0644]
include/linux/platform_data/bd6107.h [new file with mode: 0644]
include/linux/platform_data/gpio_backlight.h [new file with mode: 0644]
include/linux/platform_data/leds-renesas-tpu.h [deleted file]
include/linux/platform_data/lv5207lp.h [new file with mode: 0644]

index c7540710906fa596f8fc4e60b47783e4d3f7270b..f6d64495c405b8d1dd89e0f25ea389cd3daf3e62 100644 (file)
@@ -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));
 }
 
index 66cfd56865784d766add3d14b4602361b6de0b26..f62719dc3bd6c57a84426fae91ed14865b3b5f35 100644 (file)
@@ -31,6 +31,8 @@
 #include <linux/gpio_keys.h>
 #include <linux/regulator/driver.h>
 #include <linux/pinctrl/machine.h>
+#include <linux/platform_data/pwm-renesas-tpu.h>
+#include <linux/pwm_backlight.h>
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/gpio-regulator.h>
 #include <linux/regulator/machine.h>
@@ -387,7 +389,50 @@ static struct platform_device sh_eth_device = {
        .num_resources = ARRAY_SIZE(sh_eth_resources),
 };
 
-/* LCDC */
+/* PWM */
+static struct resource pwm_resources[] = {
+       [0] = {
+               .start = 0xe6600000,
+               .end = 0xe66000ff,
+               .flags = IORESOURCE_MEM,
+       },
+};
+
+static struct tpu_pwm_platform_data pwm_device_data = {
+       .channels[2] = {
+               .polarity = PWM_POLARITY_INVERSED,
+       }
+};
+
+static struct platform_device pwm_device = {
+       .name = "renesas-tpu-pwm",
+       .id = -1,
+       .dev = {
+               .platform_data = &pwm_device_data,
+       },
+       .num_resources = ARRAY_SIZE(pwm_resources),
+       .resource = pwm_resources,
+};
+
+static struct pwm_lookup pwm_lookup[] = {
+       PWM_LOOKUP("renesas-tpu-pwm", 2, "pwm-backlight.0", NULL),
+};
+
+/* LCDC and backlight */
+static struct platform_pwm_backlight_data pwm_backlight_data = {
+       .lth_brightness = 50,
+       .max_brightness = 255,
+       .dft_brightness = 255,
+       .pwm_period_ns = 33333, /* 30kHz */
+};
+
+static struct platform_device pwm_backlight_device = {
+       .name = "pwm-backlight",
+       .dev = {
+               .platform_data = &pwm_backlight_data,
+       },
+};
+
 static struct fb_videomode lcdc0_mode = {
        .name           = "AMPIER/AM-800480",
        .xres           = 800,
@@ -1021,6 +1066,8 @@ static struct i2c_board_info i2c2_devices[] = {
  */
 static struct platform_device *eva_devices[] __initdata = {
        &lcdc0_device,
+       &pwm_device,
+       &pwm_backlight_device,
        &gpio_keys_device,
        &sh_eth_device,
        &vcc_sdhi0,
@@ -1092,6 +1139,9 @@ static const struct pinctrl_map eva_pinctrl_map[] = {
        /* ST1232 */
        PIN_MAP_MUX_GROUP_DEFAULT("0-0055", "pfc-r8a7740",
                                  "intc_irq10", "intc"),
+       /* TPU0 */
+       PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm", "pfc-r8a7740",
+                                 "tpu0_to2_1", "tpu0"),
        /* USBHS */
        PIN_MAP_MUX_GROUP_DEFAULT("renesas_usbhs", "pfc-r8a7740",
                                  "intc_irq7_1", "intc"),
@@ -1145,13 +1195,13 @@ static void __init eva_init(void)
                                     ARRAY_SIZE(fixed3v3_power_consumers), 3300000);
 
        pinctrl_register_mappings(eva_pinctrl_map, ARRAY_SIZE(eva_pinctrl_map));
+       pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
 
        r8a7740_pinmux_init();
        r8a7740_meram_workaround();
 
        /* LCDC0 */
        gpio_request_one(61, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
-       gpio_request_one(202, GPIOF_OUT_INIT_LOW, NULL); /* LCD0_LED_CONT */
 
        /* Touchscreen */
        gpio_request_one(166, GPIOF_OUT_INIT_HIGH, NULL); /* TP_RST_B */
index ef5ca0ef0cb5179b666ce4dc2f298fcda6ed1bf6..6af20d909bdbdc59645aa7bd32606c05f3ab05fb 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/irq.h>
 #include <linux/pinctrl/machine.h>
 #include <linux/pinctrl/pinconf-generic.h>
+#include <linux/platform_data/pwm-renesas-tpu.h>
 #include <linux/platform_device.h>
 #include <linux/delay.h>
 #include <linux/io.h>
@@ -37,8 +38,8 @@
 #include <linux/input/sh_keysc.h>
 #include <linux/gpio_keys.h>
 #include <linux/leds.h>
+#include <linux/leds_pwm.h>
 #include <linux/irqchip/arm-gic.h>
-#include <linux/platform_data/leds-renesas-tpu.h>
 #include <linux/mmc/host.h>
 #include <linux/mmc/sh_mmcif.h>
 #include <linux/mfd/tmio.h>
@@ -186,116 +187,100 @@ static struct platform_device gpio_leds_device = {
 };
 
 /* TPU LED */
-static struct led_renesas_tpu_config led_renesas_tpu12_pdata = {
-       .name           = "V2513",
-       .pin_gpio_fn    = GPIO_FN_TPU1TO2,
-       .pin_gpio       = 153,
-       .channel_offset = 0x90,
-       .timer_bit = 2,
-       .max_brightness = 1000,
-};
-
-static struct resource tpu12_resources[] = {
+static struct resource tpu1_pwm_resources[] = {
        [0] = {
-               .name   = "TPU12",
-               .start  = 0xe6610090,
-               .end    = 0xe66100b5,
+               .start  = 0xe6610000,
+               .end    = 0xe66100ff,
                .flags  = IORESOURCE_MEM,
        },
 };
 
-static struct platform_device leds_tpu12_device = {
-       .name = "leds-renesas-tpu",
-       .id = 12,
-       .dev = {
-               .platform_data  = &led_renesas_tpu12_pdata,
-       },
-       .num_resources  = ARRAY_SIZE(tpu12_resources),
-       .resource       = tpu12_resources,
+static struct platform_device tpu1_pwm_device = {
+       .name = "renesas-tpu-pwm",
+       .id = 1,
+       .num_resources  = ARRAY_SIZE(tpu1_pwm_resources),
+       .resource       = tpu1_pwm_resources,
 };
 
-static struct led_renesas_tpu_config led_renesas_tpu41_pdata = {
-       .name           = "V2514",
-       .pin_gpio_fn    = GPIO_FN_TPU4TO1,
-       .pin_gpio       = 199,
-       .channel_offset = 0x50,
-       .timer_bit = 1,
-       .max_brightness = 1000,
-};
-
-static struct resource tpu41_resources[] = {
+static struct resource tpu2_pwm_resources[] = {
        [0] = {
-               .name   = "TPU41",
-               .start  = 0xe6640050,
-               .end    = 0xe6640075,
+               .start  = 0xe6620000,
+               .end    = 0xe66200ff,
                .flags  = IORESOURCE_MEM,
        },
 };
 
-static struct platform_device leds_tpu41_device = {
-       .name = "leds-renesas-tpu",
-       .id = 41,
-       .dev = {
-               .platform_data  = &led_renesas_tpu41_pdata,
+static struct platform_device tpu2_pwm_device = {
+       .name = "renesas-tpu-pwm",
+       .id = 2,
+       .num_resources  = ARRAY_SIZE(tpu2_pwm_resources),
+       .resource       = tpu2_pwm_resources,
+};
+
+static struct resource tpu3_pwm_resources[] = {
+       [0] = {
+               .start  = 0xe6630000,
+               .end    = 0xe66300ff,
+               .flags  = IORESOURCE_MEM,
        },
-       .num_resources  = ARRAY_SIZE(tpu41_resources),
-       .resource       = tpu41_resources,
 };
 
-static struct led_renesas_tpu_config led_renesas_tpu21_pdata = {
-       .name           = "V2515",
-       .pin_gpio_fn    = GPIO_FN_TPU2TO1,
-       .pin_gpio       = 197,
-       .channel_offset = 0x50,
-       .timer_bit = 1,
-       .max_brightness = 1000,
+static struct platform_device tpu3_pwm_device = {
+       .name = "renesas-tpu-pwm",
+       .id = 3,
+       .num_resources  = ARRAY_SIZE(tpu3_pwm_resources),
+       .resource       = tpu3_pwm_resources,
 };
 
-static struct resource tpu21_resources[] = {
+static struct resource tpu4_pwm_resources[] = {
        [0] = {
-               .name   = "TPU21",
-               .start  = 0xe6620050,
-               .end    = 0xe6620075,
+               .start  = 0xe6640000,
+               .end    = 0xe66400ff,
                .flags  = IORESOURCE_MEM,
        },
 };
 
-static struct platform_device leds_tpu21_device = {
-       .name = "leds-renesas-tpu",
-       .id = 21,
-       .dev = {
-               .platform_data  = &led_renesas_tpu21_pdata,
+static struct platform_device tpu4_pwm_device = {
+       .name = "renesas-tpu-pwm",
+       .id = 4,
+       .num_resources  = ARRAY_SIZE(tpu4_pwm_resources),
+       .resource       = tpu4_pwm_resources,
+};
+
+static struct pwm_lookup pwm_lookup[] = {
+       PWM_LOOKUP("renesas-tpu-pwm.1", 2, "leds-pwm.0", "V2513"),
+       PWM_LOOKUP("renesas-tpu-pwm.2", 1, "leds-pwm.0", "V2515"),
+       PWM_LOOKUP("renesas-tpu-pwm.3", 0, "leds-pwm.0", "KEYLED"),
+       PWM_LOOKUP("renesas-tpu-pwm.4", 1, "leds-pwm.0", "V2514"),
+};
+
+static struct led_pwm tpu_pwm_leds[] = {
+       {
+               .name           = "V2513",
+               .max_brightness = 1000,
+       }, {
+               .name           = "V2515",
+               .max_brightness = 1000,
+       }, {
+               .name           = "KEYLED",
+               .max_brightness = 1000,
+       }, {
+               .name           = "V2514",
+               .max_brightness = 1000,
        },
-       .num_resources  = ARRAY_SIZE(tpu21_resources),
-       .resource       = tpu21_resources,
 };
 
-static struct led_renesas_tpu_config led_renesas_tpu30_pdata = {
-       .name           = "KEYLED",
-       .pin_gpio_fn    = GPIO_FN_TPU3TO0,
-       .pin_gpio       = 163,
-       .channel_offset = 0x10,
-       .timer_bit = 0,
-       .max_brightness = 1000,
+static struct led_pwm_platform_data leds_pwm_pdata = {
+       .num_leds = ARRAY_SIZE(tpu_pwm_leds),
+       .leds = tpu_pwm_leds,
 };
 
-static struct resource tpu30_resources[] = {
-       [0] = {
-               .name   = "TPU30",
-               .start  = 0xe6630010,
-               .end    = 0xe6630035,
-               .flags  = IORESOURCE_MEM,
-       },
-};
-
-static struct platform_device leds_tpu30_device = {
-       .name = "leds-renesas-tpu",
-       .id = 30,
+static struct platform_device leds_pwm_device = {
+       .name = "leds-pwm",
+       .id = 0,
        .dev = {
-               .platform_data  = &led_renesas_tpu30_pdata,
+               .platform_data = &leds_pwm_pdata,
        },
-       .num_resources  = ARRAY_SIZE(tpu30_resources),
-       .resource       = tpu30_resources,
 };
 
 /* Fixed 1.8V regulator to be used by MMCIF */
@@ -426,10 +411,11 @@ static struct platform_device *kota2_devices[] __initdata = {
        &keysc_device,
        &gpio_keys_device,
        &gpio_leds_device,
-       &leds_tpu12_device,
-       &leds_tpu41_device,
-       &leds_tpu21_device,
-       &leds_tpu30_device,
+       &tpu1_pwm_device,
+       &tpu2_pwm_device,
+       &tpu3_pwm_device,
+       &tpu4_pwm_device,
+       &leds_pwm_device,
        &mmcif_device,
        &sdhi0_device,
        &sdhi1_device,
@@ -512,6 +498,15 @@ static const struct pinctrl_map kota2_pinctrl_map[] = {
                                  "bsc_cs5_a", "bsc"),
        PIN_MAP_MUX_GROUP_DEFAULT("smsc911x.0", "pfc-sh73a0",
                                  "bsc_we0", "bsc"),
+       /* TPU */
+       PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.1", "pfc-sh73a0",
+                                 "tpu1_to2", "tpu1"),
+       PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.2", "pfc-sh73a0",
+                                 "tpu2_to1", "tpu2"),
+       PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.3", "pfc-sh73a0",
+                                 "tpu3_to0", "tpu3"),
+       PIN_MAP_MUX_GROUP_DEFAULT("renesas-tpu-pwm.4", "pfc-sh73a0",
+                                 "tpu4_to1", "tpu4"),
 };
 
 static void __init kota2_init(void)
@@ -524,6 +519,8 @@ static void __init kota2_init(void)
 
        pinctrl_register_mappings(kota2_pinctrl_map,
                                  ARRAY_SIZE(kota2_pinctrl_map));
+       pwm_add_table(pwm_lookup, ARRAY_SIZE(pwm_lookup));
+
        sh73a0_pinmux_init();
 
        /* SMSC911X */
index 85f51a849a5043a7f122c6a25c7c63dd97877ec1..af06753eb8092500de41707ac68216bd3ed244a0 100644 (file)
@@ -41,6 +41,7 @@
 #include <linux/mtd/physmap.h>
 #include <linux/mtd/sh_flctl.h>
 #include <linux/pinctrl/machine.h>
+#include <linux/platform_data/gpio_backlight.h>
 #include <linux/pm_clock.h>
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/machine.h>
@@ -49,7 +50,6 @@
 #include <linux/tca6416_keypad.h>
 #include <linux/usb/renesas_usbhs.h>
 #include <linux/dma-mapping.h>
-
 #include <video/sh_mobile_hdmi.h>
 #include <video/sh_mobile_lcdc.h>
 #include <media/sh_mobile_ceu.h>
@@ -346,7 +346,7 @@ static struct platform_device meram_device = {
        },
 };
 
-/* LCDC */
+/* LCDC and backlight */
 static struct fb_videomode mackerel_lcdc_modes[] = {
        {
                .name           = "WVGA Panel",
@@ -362,13 +362,6 @@ static struct fb_videomode mackerel_lcdc_modes[] = {
        },
 };
 
-static int mackerel_set_brightness(int brightness)
-{
-       gpio_set_value(31, brightness);
-
-       return 0;
-}
-
 static const struct sh_mobile_meram_cfg lcd_meram_cfg = {
        .icb[0] = {
                .meram_size     = 0x40,
@@ -393,11 +386,6 @@ static struct sh_mobile_lcdc_info lcdc_info = {
                        .width          = 152,
                        .height         = 91,
                },
-               .bl_info = {
-                       .name = "sh_mobile_lcdc_bl",
-                       .max_brightness = 1,
-                       .set_brightness = mackerel_set_brightness,
-               },
                .meram_cfg = &lcd_meram_cfg,
        }
 };
@@ -425,6 +413,20 @@ static struct platform_device lcdc_device = {
        },
 };
 
+static struct gpio_backlight_platform_data gpio_backlight_data = {
+       .fbdev = &lcdc_device.dev,
+       .gpio = 31,
+       .def_value = 1,
+       .name = "backlight",
+};
+
+static struct platform_device gpio_backlight_device = {
+       .name = "gpio-backlight",
+       .dev = {
+               .platform_data = &gpio_backlight_data,
+       },
+};
+
 /* HDMI */
 static struct sh_mobile_hdmi_info hdmi_info = {
        .flags          = HDMI_SND_SRC_SPDIF,
@@ -1231,6 +1233,7 @@ static struct platform_device *mackerel_devices[] __initdata = {
        &nor_flash_device,
        &smc911x_device,
        &lcdc_device,
+       &gpio_backlight_device,
        &usbhs0_device,
        &usbhs1_device,
        &leds_device,
@@ -1441,9 +1444,6 @@ static void __init mackerel_init(void)
                                  ARRAY_SIZE(mackerel_pinctrl_map));
        sh7372_pinmux_init();
 
-       /* backlight, off by default */
-       gpio_request_one(31, GPIOF_OUT_INIT_LOW, NULL);
-
        gpio_request_one(151, GPIOF_OUT_INIT_HIGH, NULL); /* LCDDON */
 
        /* USBHS0 */
index d9fd0336b910b9fd1cbb79de09a9e5fdca612385..1942eaef518134804110ed14cc5a61c94550af27 100644 (file)
@@ -555,7 +555,7 @@ enum { MSTP001,
        MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
        MSTP331, MSTP329, MSTP328, MSTP325, MSTP323, MSTP322,
        MSTP314, MSTP313, MSTP312, MSTP311,
-       MSTP303, MSTP302, MSTP301, MSTP300,
+       MSTP304, MSTP303, MSTP302, MSTP301, MSTP300,
        MSTP411, MSTP410, MSTP403,
        MSTP_NR };
 
@@ -593,6 +593,7 @@ static struct clk mstp_clks[MSTP_NR] = {
        [MSTP313] = MSTP(&div6_clks[DIV6_SDHI1], SMSTPCR3, 13, 0), /* SDHI1 */
        [MSTP312] = MSTP(&div4_clks[DIV4_HP], SMSTPCR3, 12, 0), /* MMCIF0 */
        [MSTP311] = MSTP(&div6_clks[DIV6_SDHI2], SMSTPCR3, 11, 0), /* SDHI2 */
+       [MSTP304] = MSTP(&main_div2_clk, SMSTPCR3, 4, 0), /* TPU0 */
        [MSTP303] = MSTP(&main_div2_clk, SMSTPCR3, 3, 0), /* TPU1 */
        [MSTP302] = MSTP(&main_div2_clk, SMSTPCR3, 2, 0), /* TPU2 */
        [MSTP301] = MSTP(&main_div2_clk, SMSTPCR3, 1, 0), /* TPU3 */
@@ -669,10 +670,11 @@ static struct clk_lookup lookups[] = {
        CLKDEV_DEV_ID("e6bd0000.mmcif", &mstp_clks[MSTP312]), /* MMCIF0 */
        CLKDEV_DEV_ID("sh_mobile_sdhi.2", &mstp_clks[MSTP311]), /* SDHI2 */
        CLKDEV_DEV_ID("ee140000.sdhi", &mstp_clks[MSTP311]), /* SDHI2 */
-       CLKDEV_DEV_ID("leds-renesas-tpu.12", &mstp_clks[MSTP303]), /* TPU1 */
-       CLKDEV_DEV_ID("leds-renesas-tpu.21", &mstp_clks[MSTP302]), /* TPU2 */
-       CLKDEV_DEV_ID("leds-renesas-tpu.30", &mstp_clks[MSTP301]), /* TPU3 */
-       CLKDEV_DEV_ID("leds-renesas-tpu.41", &mstp_clks[MSTP300]), /* TPU4 */
+       CLKDEV_DEV_ID("renesas-tpu-pwm.0", &mstp_clks[MSTP304]), /* TPU0 */
+       CLKDEV_DEV_ID("renesas-tpu-pwm.1", &mstp_clks[MSTP303]), /* TPU1 */
+       CLKDEV_DEV_ID("renesas-tpu-pwm.2", &mstp_clks[MSTP302]), /* TPU2 */
+       CLKDEV_DEV_ID("renesas-tpu-pwm.3", &mstp_clks[MSTP301]), /* TPU3 */
+       CLKDEV_DEV_ID("renesas-tpu-pwm.4", &mstp_clks[MSTP300]), /* TPU4 */
        CLKDEV_DEV_ID("i2c-sh_mobile.3", &mstp_clks[MSTP411]), /* I2C3 */
        CLKDEV_DEV_ID("e6826000.i2c", &mstp_clks[MSTP411]), /* I2C3 */
        CLKDEV_DEV_ID("i2c-sh_mobile.4", &mstp_clks[MSTP410]), /* I2C4 */
index eb7a4320d487e1327dc6c961fa5bbae033f0770d..680dc5f1655ab46c4eaafc7a46c430bd141a6ccd 100644 (file)
@@ -1,378 +1,7 @@
 #ifndef __ASM_SH73A0_H__
 #define __ASM_SH73A0_H__
 
-/* Pin Function Controller:
- * GPIO_FN_xx - GPIO used to select pin function and MSEL switch
- * GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
- */
-enum {
-       /* Hardware manual Table 25-1 (GPIO) */
-       GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
-       GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,
-
-       GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
-       GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,
-
-       GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
-       GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,
-
-       GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
-       GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,
-
-       GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44,
-       GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49,
-
-       GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54,
-       GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59,
-
-       GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64,
-       GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,
-
-       GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
-       GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,
-
-       GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
-       GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89,
-
-       GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94,
-       GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,
-
-       GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
-       GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,
-
-       GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
-       GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118,
-
-       GPIO_PORT128, GPIO_PORT129,
-
-       GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,
-       GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139,
-
-       GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144,
-       GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149,
-
-       GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154,
-       GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159,
-
-       GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
-
-       GPIO_PORT192, GPIO_PORT193, GPIO_PORT194,
-       GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199,
-
-       GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204,
-       GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209,
-
-       GPIO_PORT210, GPIO_PORT211, GPIO_PORT212, GPIO_PORT213, GPIO_PORT214,
-       GPIO_PORT215, GPIO_PORT216, GPIO_PORT217, GPIO_PORT218, GPIO_PORT219,
-
-       GPIO_PORT220, GPIO_PORT221, GPIO_PORT222, GPIO_PORT223, GPIO_PORT224,
-       GPIO_PORT225, GPIO_PORT226, GPIO_PORT227, GPIO_PORT228, GPIO_PORT229,
-
-       GPIO_PORT230, GPIO_PORT231, GPIO_PORT232, GPIO_PORT233, GPIO_PORT234,
-       GPIO_PORT235, GPIO_PORT236, GPIO_PORT237, GPIO_PORT238, GPIO_PORT239,
-
-       GPIO_PORT240, GPIO_PORT241, GPIO_PORT242, GPIO_PORT243, GPIO_PORT244,
-       GPIO_PORT245, GPIO_PORT246, GPIO_PORT247, GPIO_PORT248, GPIO_PORT249,
-
-       GPIO_PORT250, GPIO_PORT251, GPIO_PORT252, GPIO_PORT253, GPIO_PORT254,
-       GPIO_PORT255, GPIO_PORT256, GPIO_PORT257, GPIO_PORT258, GPIO_PORT259,
-
-       GPIO_PORT260, GPIO_PORT261, GPIO_PORT262, GPIO_PORT263, GPIO_PORT264,
-       GPIO_PORT265, GPIO_PORT266, GPIO_PORT267, GPIO_PORT268, GPIO_PORT269,
-
-       GPIO_PORT270, GPIO_PORT271, GPIO_PORT272, GPIO_PORT273, GPIO_PORT274,
-       GPIO_PORT275, GPIO_PORT276, GPIO_PORT277, GPIO_PORT278, GPIO_PORT279,
-
-       GPIO_PORT280, GPIO_PORT281, GPIO_PORT282,
-
-       GPIO_PORT288, GPIO_PORT289,
-
-       GPIO_PORT290, GPIO_PORT291, GPIO_PORT292, GPIO_PORT293, GPIO_PORT294,
-       GPIO_PORT295, GPIO_PORT296, GPIO_PORT297, GPIO_PORT298, GPIO_PORT299,
-
-       GPIO_PORT300, GPIO_PORT301, GPIO_PORT302, GPIO_PORT303, GPIO_PORT304,
-       GPIO_PORT305, GPIO_PORT306, GPIO_PORT307, GPIO_PORT308, GPIO_PORT309,
-
-       /* Table 25-1 (Function 0-7) */
-       GPIO_FN_GPI0 = 310,
-       GPIO_FN_GPI1,
-       GPIO_FN_GPI2,
-       GPIO_FN_GPI3,
-       GPIO_FN_GPI4,
-       GPIO_FN_GPI5,
-       GPIO_FN_GPI6,
-       GPIO_FN_GPI7,
-       GPIO_FN_GPO7, GPIO_FN_MFG0_OUT2,
-       GPIO_FN_GPO6, GPIO_FN_MFG1_OUT2,
-       GPIO_FN_GPO5,
-       GPIO_FN_PORT16_VIO_CKOR,
-       GPIO_FN_PORT19_VIO_CKO2,
-       GPIO_FN_GPO0,
-       GPIO_FN_GPO1,
-       GPIO_FN_GPO2, GPIO_FN_STATUS0,
-       GPIO_FN_GPO3, GPIO_FN_STATUS1,
-       GPIO_FN_GPO4, GPIO_FN_STATUS2,
-       GPIO_FN_VINT,
-       GPIO_FN_TCKON,
-       GPIO_FN_XDVFS1,
-       GPIO_FN_MFG0_OUT1, GPIO_FN_PORT27_IROUT,
-       GPIO_FN_XDVFS2,
-       GPIO_FN_PORT28_TPU1TO1,
-       GPIO_FN_SIM_RST, GPIO_FN_PORT29_TPU1TO1,
-       GPIO_FN_SIM_CLK, GPIO_FN_PORT30_VIO_CKOR,
-       GPIO_FN_SIM_D, GPIO_FN_PORT31_IROUT,
-       GPIO_FN_XWUP,
-       GPIO_FN_VACK,
-       GPIO_FN_XTAL1L,
-       GPIO_FN_PORT49_IROUT,
-       GPIO_FN_BBIF2_TSYNC2, GPIO_FN_TPU2TO2,
-
-       GPIO_FN_BBIF2_TSCK2, GPIO_FN_TPU2TO3,
-       GPIO_FN_BBIF2_TXD2,
-       GPIO_FN_TPU3TO3,
-       GPIO_FN_TPU3TO2,
-       GPIO_FN_TPU0TO0,
-       GPIO_FN_A0, GPIO_FN_BS_,
-       GPIO_FN_A12, GPIO_FN_TPU4TO2,
-       GPIO_FN_A13, GPIO_FN_TPU0TO1,
-       GPIO_FN_A14,
-       GPIO_FN_A15,
-       GPIO_FN_A16, GPIO_FN_MSIOF0_SS1,
-       GPIO_FN_A17, GPIO_FN_MSIOF0_TSYNC,
-       GPIO_FN_A18, GPIO_FN_MSIOF0_TSCK,
-       GPIO_FN_A19, GPIO_FN_MSIOF0_TXD,
-       GPIO_FN_A20, GPIO_FN_MSIOF0_RSCK,
-       GPIO_FN_A21, GPIO_FN_MSIOF0_RSYNC,
-       GPIO_FN_A22, GPIO_FN_MSIOF0_MCK0,
-       GPIO_FN_A23, GPIO_FN_MSIOF0_MCK1,
-       GPIO_FN_A24, GPIO_FN_MSIOF0_RXD,
-       GPIO_FN_A25, GPIO_FN_MSIOF0_SS2,
-       GPIO_FN_A26,
-       GPIO_FN_FCE1_,
-       GPIO_FN_DACK0,
-       GPIO_FN_FCE0_,
-       GPIO_FN_WAIT_, GPIO_FN_DREQ0,
-       GPIO_FN_FRB,
-       GPIO_FN_CKO,
-       GPIO_FN_NBRSTOUT_,
-       GPIO_FN_NBRST_,
-       GPIO_FN_BBIF2_TXD,
-       GPIO_FN_BBIF2_RXD,
-       GPIO_FN_BBIF2_SYNC,
-       GPIO_FN_BBIF2_SCK,
-       GPIO_FN_MFG3_IN2,
-       GPIO_FN_MFG3_IN1,
-       GPIO_FN_BBIF1_SS2, GPIO_FN_MFG3_OUT1,
-       GPIO_FN_HSI_RX_DATA, GPIO_FN_BBIF1_RXD,
-       GPIO_FN_HSI_TX_WAKE, GPIO_FN_BBIF1_TSCK,
-       GPIO_FN_HSI_TX_DATA, GPIO_FN_BBIF1_TSYNC,
-       GPIO_FN_HSI_TX_READY, GPIO_FN_BBIF1_TXD,
-       GPIO_FN_HSI_RX_READY, GPIO_FN_BBIF1_RSCK,
-       GPIO_FN_HSI_RX_WAKE, GPIO_FN_BBIF1_RSYNC,
-       GPIO_FN_HSI_RX_FLAG, GPIO_FN_BBIF1_SS1, GPIO_FN_BBIF1_FLOW,
-       GPIO_FN_HSI_TX_FLAG,
-       GPIO_FN_VIO_VD, GPIO_FN_VIO2_VD,
-
-       GPIO_FN_VIO_HD,
-       GPIO_FN_VIO2_HD,
-       GPIO_FN_VIO_D0, GPIO_FN_PORT130_MSIOF2_RXD,
-       GPIO_FN_VIO_D1, GPIO_FN_PORT131_MSIOF2_SS1,
-       GPIO_FN_VIO_D2, GPIO_FN_PORT132_MSIOF2_SS2,
-       GPIO_FN_VIO_D3, GPIO_FN_MSIOF2_TSYNC,
-       GPIO_FN_VIO_D4, GPIO_FN_MSIOF2_TXD,
-       GPIO_FN_VIO_D5, GPIO_FN_MSIOF2_TSCK,
-       GPIO_FN_VIO_D6,
-       GPIO_FN_VIO_D7,
-       GPIO_FN_VIO_D8, GPIO_FN_VIO2_D0,
-       GPIO_FN_VIO_D9, GPIO_FN_VIO2_D1,
-       GPIO_FN_VIO_D10, GPIO_FN_TPU0TO2, GPIO_FN_VIO2_D2,
-       GPIO_FN_VIO_D11, GPIO_FN_TPU0TO3, GPIO_FN_VIO2_D3,
-       GPIO_FN_VIO_D12, GPIO_FN_VIO2_D4,
-       GPIO_FN_VIO_D13,
-       GPIO_FN_VIO2_D5,
-       GPIO_FN_VIO_D14, GPIO_FN_VIO2_D6,
-       GPIO_FN_VIO_D15, GPIO_FN_TPU1TO3,
-       GPIO_FN_VIO2_D7,
-       GPIO_FN_VIO_CLK,
-       GPIO_FN_VIO2_CLK,
-       GPIO_FN_VIO_FIELD, GPIO_FN_VIO2_FIELD,
-       GPIO_FN_VIO_CKO,
-       GPIO_FN_A27, GPIO_FN_MFG0_IN1,
-       GPIO_FN_MFG0_IN2,
-       GPIO_FN_TS_SPSYNC3, GPIO_FN_MSIOF2_RSCK,
-       GPIO_FN_TS_SDAT3, GPIO_FN_MSIOF2_RSYNC,
-       GPIO_FN_TPU1TO2, GPIO_FN_TS_SDEN3, GPIO_FN_PORT153_MSIOF2_SS1,
-       GPIO_FN_MSIOF2_MCK0,
-       GPIO_FN_MSIOF2_MCK1,
-       GPIO_FN_PORT156_MSIOF2_SS2,
-       GPIO_FN_PORT157_MSIOF2_RXD,
-       GPIO_FN_DINT_, GPIO_FN_TS_SCK3,
-       GPIO_FN_NMI,
-       GPIO_FN_TPU3TO0,
-       GPIO_FN_BBIF2_TSYNC1,
-       GPIO_FN_BBIF2_TSCK1,
-       GPIO_FN_BBIF2_TXD1,
-       GPIO_FN_MFG2_OUT2,
-       GPIO_FN_TPU2TO1,
-       GPIO_FN_TPU4TO1, GPIO_FN_MFG4_OUT2,
-       GPIO_FN_D16,
-       GPIO_FN_D17,
-       GPIO_FN_D18,
-       GPIO_FN_D19,
-       GPIO_FN_D20,
-       GPIO_FN_D21,
-       GPIO_FN_D22,
-       GPIO_FN_PORT207_MSIOF0L_SS1, GPIO_FN_D23,
-       GPIO_FN_PORT208_MSIOF0L_SS2, GPIO_FN_D24,
-       GPIO_FN_D25,
-       GPIO_FN_DREQ2, GPIO_FN_PORT210_MSIOF0L_SS1, GPIO_FN_D26,
-       GPIO_FN_PORT211_MSIOF0L_SS2, GPIO_FN_D27,
-       GPIO_FN_TS_SPSYNC1, GPIO_FN_MSIOF0L_MCK0, GPIO_FN_D28,
-       GPIO_FN_TS_SDAT1, GPIO_FN_MSIOF0L_MCK1, GPIO_FN_D29,
-       GPIO_FN_TS_SDEN1, GPIO_FN_MSIOF0L_RSCK, GPIO_FN_D30,
-       GPIO_FN_TS_SCK1, GPIO_FN_MSIOF0L_RSYNC, GPIO_FN_D31,
-       GPIO_FN_DACK2,
-       GPIO_FN_MSIOF0L_TSYNC, GPIO_FN_VIO2_FIELD3,
-       GPIO_FN_DACK3,
-       GPIO_FN_PORT218_VIO_CKOR,
-       GPIO_FN_DREQ3, GPIO_FN_MSIOF0L_TSCK, GPIO_FN_VIO2_CLK3, \
-       GPIO_FN_DREQ1,
-       GPIO_FN_PWEN, GPIO_FN_MSIOF0L_RXD, GPIO_FN_VIO2_HD3, \
-       GPIO_FN_DACK1, GPIO_FN_OVCN,
-       GPIO_FN_MSIOF0L_TXD, GPIO_FN_VIO2_VD3,
-
-       GPIO_FN_OVCN2,
-       GPIO_FN_EXTLP, GPIO_FN_PORT226_VIO_CKO2,
-       GPIO_FN_IDIN,
-       GPIO_FN_MFG1_IN1,
-       GPIO_FN_MSIOF1_TXD,
-       GPIO_FN_MSIOF1_TSYNC,
-       GPIO_FN_MSIOF1_TSCK,
-       GPIO_FN_MSIOF1_RXD,
-       GPIO_FN_MSIOF1_RSCK, GPIO_FN_VIO2_CLK2,
-       GPIO_FN_MSIOF1_RSYNC, GPIO_FN_MFG1_IN2, GPIO_FN_VIO2_VD2, \
-       GPIO_FN_MSIOF1_MCK0,
-       GPIO_FN_MSIOF1_MCK1,
-       GPIO_FN_MSIOF1_SS1, GPIO_FN_VIO2_FIELD2,
-       GPIO_FN_MSIOF1_SS2, GPIO_FN_VIO2_HD2,
-       GPIO_FN_PORT241_IROUT, GPIO_FN_MFG4_OUT1, \
-       GPIO_FN_TPU4TO0,
-       GPIO_FN_MFG4_IN2,
-       GPIO_FN_PORT243_VIO_CKO2,
-       GPIO_FN_MFG2_IN1,
-       GPIO_FN_MSIOF2R_RXD,
-       GPIO_FN_MFG2_IN2,
-       GPIO_FN_MSIOF2R_TXD,
-       GPIO_FN_MFG1_OUT1,
-       GPIO_FN_TPU1TO0,
-       GPIO_FN_MFG3_OUT2,
-       GPIO_FN_TPU3TO1,
-       GPIO_FN_MFG2_OUT1,
-       GPIO_FN_TPU2TO0,
-       GPIO_FN_MSIOF2R_TSCK,
-       GPIO_FN_PORT249_IROUT, GPIO_FN_MFG4_IN1, \
-       GPIO_FN_MSIOF2R_TSYNC,
-       GPIO_FN_SDHICLK0,
-       GPIO_FN_SDHICD0,
-       GPIO_FN_SDHID0_0,
-       GPIO_FN_SDHID0_1,
-       GPIO_FN_SDHID0_2,
-       GPIO_FN_SDHID0_3,
-       GPIO_FN_SDHICMD0,
-       GPIO_FN_SDHIWP0,
-       GPIO_FN_SDHICLK1,
-       GPIO_FN_SDHID1_0, GPIO_FN_TS_SPSYNC2,
-       GPIO_FN_SDHID1_1, GPIO_FN_TS_SDAT2,
-       GPIO_FN_SDHID1_2, GPIO_FN_TS_SDEN2,
-       GPIO_FN_SDHID1_3, GPIO_FN_TS_SCK2,
-       GPIO_FN_SDHICMD1,
-       GPIO_FN_SDHICLK2,
-       GPIO_FN_SDHID2_0, GPIO_FN_TS_SPSYNC4,
-       GPIO_FN_SDHID2_1, GPIO_FN_TS_SDAT4,
-       GPIO_FN_SDHID2_2, GPIO_FN_TS_SDEN4,
-       GPIO_FN_SDHID2_3, GPIO_FN_TS_SCK4,
-       GPIO_FN_SDHICMD2,
-       GPIO_FN_MMCCLK0,
-       GPIO_FN_MMCD0_0,
-       GPIO_FN_MMCD0_1,
-       GPIO_FN_MMCD0_2,
-       GPIO_FN_MMCD0_3,
-       GPIO_FN_MMCD0_4, GPIO_FN_TS_SPSYNC5,
-       GPIO_FN_MMCD0_5, GPIO_FN_TS_SDAT5,
-       GPIO_FN_MMCD0_6, GPIO_FN_TS_SDEN5,
-       GPIO_FN_MMCD0_7, GPIO_FN_TS_SCK5,
-       GPIO_FN_MMCCMD0,
-       GPIO_FN_RESETOUTS_, GPIO_FN_EXTAL2OUT,
-       GPIO_FN_MCP_WAIT__MCP_FRB,
-       GPIO_FN_MCP_CKO, GPIO_FN_MMCCLK1,
-       GPIO_FN_MCP_D15_MCP_NAF15,
-       GPIO_FN_MCP_D14_MCP_NAF14,
-       GPIO_FN_MCP_D13_MCP_NAF13,
-       GPIO_FN_MCP_D12_MCP_NAF12,
-       GPIO_FN_MCP_D11_MCP_NAF11,
-       GPIO_FN_MCP_D10_MCP_NAF10,
-       GPIO_FN_MCP_D9_MCP_NAF9,
-       GPIO_FN_MCP_D8_MCP_NAF8, GPIO_FN_MMCCMD1,
-       GPIO_FN_MCP_D7_MCP_NAF7, GPIO_FN_MMCD1_7,
-
-       GPIO_FN_MCP_D6_MCP_NAF6, GPIO_FN_MMCD1_6,
-       GPIO_FN_MCP_D5_MCP_NAF5, GPIO_FN_MMCD1_5,
-       GPIO_FN_MCP_D4_MCP_NAF4, GPIO_FN_MMCD1_4,
-       GPIO_FN_MCP_D3_MCP_NAF3, GPIO_FN_MMCD1_3,
-       GPIO_FN_MCP_D2_MCP_NAF2, GPIO_FN_MMCD1_2,
-       GPIO_FN_MCP_D1_MCP_NAF1, GPIO_FN_MMCD1_1,
-       GPIO_FN_MCP_D0_MCP_NAF0, GPIO_FN_MMCD1_0,
-       GPIO_FN_MCP_NBRSTOUT_,
-       GPIO_FN_MCP_WE0__MCP_FWE, GPIO_FN_MCP_RDWR_MCP_FWE,
-
-       /* MSEL2 special case */
-       GPIO_FN_TSIF2_TS_XX1,
-       GPIO_FN_TSIF2_TS_XX2,
-       GPIO_FN_TSIF2_TS_XX3,
-       GPIO_FN_TSIF2_TS_XX4,
-       GPIO_FN_TSIF2_TS_XX5,
-       GPIO_FN_TSIF1_TS_XX1,
-       GPIO_FN_TSIF1_TS_XX2,
-       GPIO_FN_TSIF1_TS_XX3,
-       GPIO_FN_TSIF1_TS_XX4,
-       GPIO_FN_TSIF1_TS_XX5,
-       GPIO_FN_TSIF0_TS_XX1,
-       GPIO_FN_TSIF0_TS_XX2,
-       GPIO_FN_TSIF0_TS_XX3,
-       GPIO_FN_TSIF0_TS_XX4,
-       GPIO_FN_TSIF0_TS_XX5,
-       GPIO_FN_MST1_TS_XX1,
-       GPIO_FN_MST1_TS_XX2,
-       GPIO_FN_MST1_TS_XX3,
-       GPIO_FN_MST1_TS_XX4,
-       GPIO_FN_MST1_TS_XX5,
-       GPIO_FN_MST0_TS_XX1,
-       GPIO_FN_MST0_TS_XX2,
-       GPIO_FN_MST0_TS_XX3,
-       GPIO_FN_MST0_TS_XX4,
-       GPIO_FN_MST0_TS_XX5,
-
-       /* MSEL3 special cases */
-       GPIO_FN_SDHI0_VCCQ_MC0_ON,
-       GPIO_FN_SDHI0_VCCQ_MC0_OFF,
-       GPIO_FN_DEBUG_MON_VIO,
-       GPIO_FN_DEBUG_MON_LCDD,
-       GPIO_FN_LCDC_LCDC0,
-       GPIO_FN_LCDC_LCDC1,
-
-       /* MSEL4 special cases */
-       GPIO_FN_IRQ9_MEM_INT,
-       GPIO_FN_IRQ9_MCP_INT,
-       GPIO_FN_A11,
-       GPIO_FN_TPU4TO3,
-       GPIO_FN_RESETA_N_PU_ON,
-       GPIO_FN_RESETA_N_PU_OFF,
-       GPIO_FN_EDBGREQ_PD,
-       GPIO_FN_EDBGREQ_PU,
-
-       /* end of GPIO */
-       GPIO_NR,
-};
+#define GPIO_NR                        310
 
 /* DMA slave IDs */
 enum {
index 61fade0ffa965736427b2b2091ad50d097b59d39..bcbb86bd659ee460784bd7dba7522c221cf6cf45 100644 (file)
@@ -30,6 +30,7 @@
 #include <linux/spi/mmc_spi.h>
 #include <linux/input.h>
 #include <linux/input/sh_keysc.h>
+#include <linux/platform_data/gpio_backlight.h>
 #include <linux/sh_eth.h>
 #include <linux/sh_intc.h>
 #include <linux/videodev2.h>
@@ -303,7 +304,7 @@ static struct platform_device usbhs_device = {
        .resource       = usbhs_resources,
 };
 
-/* LCDC */
+/* LCDC and backlight */
 static const struct fb_videomode ecovec_lcd_modes[] = {
        {
                .name           = "Panel",
@@ -334,13 +335,6 @@ static const struct fb_videomode ecovec_dvi_modes[] = {
        },
 };
 
-static int ecovec24_set_brightness(int brightness)
-{
-       gpio_set_value(GPIO_PTR1, brightness);
-
-       return 0;
-}
-
 static struct sh_mobile_lcdc_info lcdc_info = {
        .ch[0] = {
                .interface_type = RGB18,
@@ -350,11 +344,6 @@ static struct sh_mobile_lcdc_info lcdc_info = {
                        .width = 152,
                        .height = 91,
                },
-               .bl_info = {
-                       .name = "sh_mobile_lcdc_bl",
-                       .max_brightness = 1,
-                       .set_brightness = ecovec24_set_brightness,
-               },
        }
 };
 
@@ -380,6 +369,20 @@ static struct platform_device lcdc_device = {
        },
 };
 
+static struct gpio_backlight_platform_data gpio_backlight_data = {
+       .fbdev = &lcdc_device.dev,
+       .gpio = GPIO_PTR1,
+       .def_value = 1,
+       .name = "backlight",
+};
+
+static struct platform_device gpio_backlight_device = {
+       .name = "gpio-backlight",
+       .dev = {
+               .platform_data = &gpio_backlight_data,
+       },
+};
+
 /* CEU0 */
 static struct sh_mobile_ceu_info sh_mobile_ceu0_info = {
        .flags = SH_CEU_FLAG_USE_8BIT_BUS,
@@ -1049,6 +1052,7 @@ static struct platform_device *ecovec_devices[] __initdata = {
        &usb1_common_device,
        &usbhs_device,
        &lcdc_device,
+       &gpio_backlight_device,
        &ceu0_device,
        &ceu1_device,
        &keysc_device,
@@ -1239,11 +1243,9 @@ static int __init arch_setup(void)
 
        gpio_request(GPIO_PTE6, NULL);
        gpio_request(GPIO_PTU1, NULL);
-       gpio_request(GPIO_PTR1, NULL);
        gpio_request(GPIO_PTA2, NULL);
        gpio_direction_input(GPIO_PTE6);
        gpio_direction_output(GPIO_PTU1, 0);
-       gpio_direction_output(GPIO_PTR1, 0);
        gpio_direction_output(GPIO_PTA2, 0);
 
        /* I/O buffer drive ability is high */
@@ -1256,6 +1258,9 @@ static int __init arch_setup(void)
                lcdc_info.ch[0].lcd_modes               = ecovec_dvi_modes;
                lcdc_info.ch[0].num_modes               = ARRAY_SIZE(ecovec_dvi_modes);
 
+               /* No backlight */
+               gpio_backlight_data.fbdev = NULL;
+
                gpio_set_value(GPIO_PTA2, 1);
                gpio_set_value(GPIO_PTU1, 1);
        } else {
@@ -1265,8 +1270,6 @@ static int __init arch_setup(void)
                lcdc_info.ch[0].lcd_modes               = ecovec_lcd_modes;
                lcdc_info.ch[0].num_modes               = ARRAY_SIZE(ecovec_lcd_modes);
 
-               gpio_set_value(GPIO_PTR1, 1);
-
                /* FIXME
                 *
                 * LCDDON control is needed for Panel,
index c620503326295f0d7bc30b58b71e58b0c5f5175c..355a78a3b3132d82b95eef93732b31c41e415580 100644 (file)
@@ -276,51 +276,3 @@ void kfr2r09_lcd_start(void *sohandle, struct sh_mobile_lcdc_sys_bus_ops *so)
 {
        write_memory_start(sohandle, so);
 }
-
-#define CTRL_CKSW       0x10
-#define CTRL_C10        0x20
-#define CTRL_CPSW       0x80
-#define MAIN_MLED4      0x40
-#define MAIN_MSW        0x80
-
-int kfr2r09_lcd_set_brightness(int brightness)
-{
-       struct i2c_adapter *a;
-       struct i2c_msg msg;
-       unsigned char buf[2];
-       int ret;
-
-       a = i2c_get_adapter(0);
-       if (!a)
-               return -ENODEV;
-
-       buf[0] = 0x00;
-       if (brightness)
-               buf[1] = CTRL_CPSW | CTRL_C10 | CTRL_CKSW;
-       else
-               buf[1] = 0;
-
-       msg.addr = 0x75;
-       msg.buf = buf;
-       msg.len = 2;
-       msg.flags = 0;
-       ret = i2c_transfer(a, &msg, 1);
-       if (ret != 1)
-               return -ENODEV;
-
-       buf[0] = 0x01;
-       if (brightness)
-               buf[1] = MAIN_MSW | MAIN_MLED4 | 0x0c;
-       else
-               buf[1] = 0;
-
-       msg.addr = 0x75;
-       msg.buf = buf;
-       msg.len = 2;
-       msg.flags = 0;
-       ret = i2c_transfer(a, &msg, 1);
-       if (ret != 1)
-               return -ENODEV;
-
-       return 0;
-}
index ab502f12ef57ad1025b504645608447a2e115840..1df4398f83757d20503688f166fd57b0831fd4f9 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/input.h>
 #include <linux/input/sh_keysc.h>
 #include <linux/i2c.h>
+#include <linux/platform_data/lv5207lp.h>
 #include <linux/regulator/fixed.h>
 #include <linux/regulator/machine.h>
 #include <linux/usb/r8a66597.h>
@@ -159,11 +160,6 @@ static struct sh_mobile_lcdc_info kfr2r09_sh_lcdc_info = {
                        .setup_sys = kfr2r09_lcd_setup,
                        .start_transfer = kfr2r09_lcd_start,
                },
-               .bl_info = {
-                       .name = "sh_mobile_lcdc_bl",
-                       .max_brightness = 1,
-                       .set_brightness = kfr2r09_lcd_set_brightness,
-               },
                .sys_bus_cfg = {
                        .ldmt2r = 0x07010904,
                        .ldmt3r = 0x14012914,
@@ -195,6 +191,17 @@ static struct platform_device kfr2r09_sh_lcdc_device = {
        },
 };
 
+static struct lv5207lp_platform_data kfr2r09_backlight_data = {
+       .fbdev = &kfr2r09_sh_lcdc_device.dev,
+       .def_value = 13,
+       .max_value = 13,
+};
+
+static struct i2c_board_info kfr2r09_backlight_board_info = {
+       I2C_BOARD_INFO("lv5207lp", 0x75),
+       .platform_data = &kfr2r09_backlight_data,
+};
+
 static struct r8a66597_platdata kfr2r09_usb0_gadget_data = {
        .on_chip = 1,
 };
@@ -627,6 +634,8 @@ static int __init kfr2r09_devices_setup(void)
        gpio_request(GPIO_FN_SDHI0CMD, NULL);
        gpio_request(GPIO_FN_SDHI0CLK, NULL);
 
+       i2c_register_board_info(0, &kfr2r09_backlight_board_info, 1);
+
        return platform_add_devices(kfr2r09_devices,
                                    ARRAY_SIZE(kfr2r09_devices));
 }
index c20c9e5f5eabe9279c1738d85354ba1a636a6207..79f154e5cb9c93f88d6ddb839b95dc0b2c04011e 100644 (file)
@@ -4,13 +4,11 @@
 #include <video/sh_mobile_lcdc.h>
 
 #if defined(CONFIG_FB_SH_MOBILE_LCDC) || defined(CONFIG_FB_SH_MOBILE_LCDC_MODULE)
-int kfr2r09_lcd_set_brightness(int brightness);
 int kfr2r09_lcd_setup(void *sys_ops_handle,
                      struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
 void kfr2r09_lcd_start(void *sys_ops_handle,
                       struct sh_mobile_lcdc_sys_bus_ops *sys_ops);
 #else
-static int kfr2r09_lcd_set_brightness(int brightness) {}
 static int kfr2r09_lcd_setup(void *sys_ops_handle,
                                struct sh_mobile_lcdc_sys_bus_ops *sys_ops)
 {
index e43402dd1dead6aa6e2e77cc4b392287402727a0..074bcb3892b56ad92aea059694b5f3d4ef89bea2 100644 (file)
@@ -429,18 +429,6 @@ config LEDS_ASIC3
          cannot be used. This driver supports hardware blinking with an on+off
          period from 62ms to 125s. Say Y to enable LEDs on the HP iPAQ hx4700.
 
-config LEDS_RENESAS_TPU
-       bool "LED support for Renesas TPU"
-       depends on LEDS_CLASS=y && HAVE_CLK && GPIOLIB
-       help
-         This option enables build of the LED TPU platform driver,
-         suitable to drive any TPU channel on newer Renesas SoCs.
-         The driver controls the GPIO pin connected to the LED via
-         the GPIO framework and expects the LED to be connected to
-         a pin that can be driven in both GPIO mode and using TPU
-         pin function. The latter to support brightness control.
-         Brightness control is supported but hardware blinking is not.
-
 config LEDS_TCA6507
        tristate "LED Support for TCA6507 I2C chip"
        depends on LEDS_CLASS && I2C
index ac2897732b0219c071f4e60ea1dea84047d9c78f..ae4b6135f66513fb7f3eefc90ad6d261ab2ca2a6 100644 (file)
@@ -49,7 +49,6 @@ obj-$(CONFIG_LEDS_MC13783)            += leds-mc13783.o
 obj-$(CONFIG_LEDS_NS2)                 += leds-ns2.o
 obj-$(CONFIG_LEDS_NETXBIG)             += leds-netxbig.o
 obj-$(CONFIG_LEDS_ASIC3)               += leds-asic3.o
-obj-$(CONFIG_LEDS_RENESAS_TPU)         += leds-renesas-tpu.o
 obj-$(CONFIG_LEDS_MAX8997)             += leds-max8997.o
 obj-$(CONFIG_LEDS_LM355x)              += leds-lm355x.o
 obj-$(CONFIG_LEDS_BLINKM)              += leds-blinkm.o
diff --git a/drivers/leds/leds-renesas-tpu.c b/drivers/leds/leds-renesas-tpu.c
deleted file mode 100644 (file)
index adebf49..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * LED control using Renesas TPU
- *
- *  Copyright (C) 2011 Magnus Damm
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- */
-
-#include <linux/module.h>
-#include <linux/init.h>
-#include <linux/platform_device.h>
-#include <linux/spinlock.h>
-#include <linux/printk.h>
-#include <linux/ioport.h>
-#include <linux/io.h>
-#include <linux/clk.h>
-#include <linux/leds.h>
-#include <linux/platform_data/leds-renesas-tpu.h>
-#include <linux/gpio.h>
-#include <linux/err.h>
-#include <linux/slab.h>
-#include <linux/pm_runtime.h>
-#include <linux/workqueue.h>
-
-enum r_tpu_pin { R_TPU_PIN_UNUSED, R_TPU_PIN_GPIO, R_TPU_PIN_GPIO_FN };
-enum r_tpu_timer { R_TPU_TIMER_UNUSED, R_TPU_TIMER_ON };
-
-struct r_tpu_priv {
-       struct led_classdev ldev;
-       void __iomem *mapbase;
-       struct clk *clk;
-       struct platform_device *pdev;
-       enum r_tpu_pin pin_state;
-       enum r_tpu_timer timer_state;
-       unsigned long min_rate;
-       unsigned int refresh_rate;
-       struct work_struct work;
-       enum led_brightness new_brightness;
-};
-
-static DEFINE_SPINLOCK(r_tpu_lock);
-
-#define TSTR -1 /* Timer start register (shared register) */
-#define TCR  0 /* Timer control register (+0x00) */
-#define TMDR 1 /* Timer mode register (+0x04) */
-#define TIOR 2 /* Timer I/O control register (+0x08) */
-#define TIER 3 /* Timer interrupt enable register (+0x0c) */
-#define TSR  4 /* Timer status register (+0x10) */
-#define TCNT 5 /* Timer counter (+0x14) */
-#define TGRA 6 /* Timer general register A (+0x18) */
-#define TGRB 7 /* Timer general register B (+0x1c) */
-#define TGRC 8 /* Timer general register C (+0x20) */
-#define TGRD 9 /* Timer general register D (+0x24) */
-
-static inline u16 r_tpu_read(struct r_tpu_priv *p, int reg_nr)
-{
-       struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data;
-       void __iomem *base = p->mapbase;
-       unsigned long offs = reg_nr << 2;
-
-       if (reg_nr == TSTR)
-               return ioread16(base - cfg->channel_offset);
-
-       return ioread16(base + offs);
-}
-
-static inline void r_tpu_write(struct r_tpu_priv *p, int reg_nr, u16 value)
-{
-       struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data;
-       void __iomem *base = p->mapbase;
-       unsigned long offs = reg_nr << 2;
-
-       if (reg_nr == TSTR) {
-               iowrite16(value, base - cfg->channel_offset);
-               return;
-       }
-
-       iowrite16(value, base + offs);
-}
-
-static void r_tpu_start_stop_ch(struct r_tpu_priv *p, int start)
-{
-       struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data;
-       unsigned long flags;
-       u16 value;
-
-       /* start stop register shared by multiple timer channels */
-       spin_lock_irqsave(&r_tpu_lock, flags);
-       value = r_tpu_read(p, TSTR);
-
-       if (start)
-               value |= 1 << cfg->timer_bit;
-       else
-               value &= ~(1 << cfg->timer_bit);
-
-       r_tpu_write(p, TSTR, value);
-       spin_unlock_irqrestore(&r_tpu_lock, flags);
-}
-
-static int r_tpu_enable(struct r_tpu_priv *p, enum led_brightness brightness)
-{
-       struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data;
-       int prescaler[] = { 1, 4, 16, 64 };
-       int k, ret;
-       unsigned long rate, tmp;
-
-       if (p->timer_state == R_TPU_TIMER_ON)
-               return 0;
-
-       /* wake up device and enable clock */
-       pm_runtime_get_sync(&p->pdev->dev);
-       ret = clk_enable(p->clk);
-       if (ret) {
-               dev_err(&p->pdev->dev, "cannot enable clock\n");
-               return ret;
-       }
-
-       /* make sure channel is disabled */
-       r_tpu_start_stop_ch(p, 0);
-
-       /* get clock rate after enabling it */
-       rate = clk_get_rate(p->clk);
-
-       /* pick the lowest acceptable rate */
-       for (k = ARRAY_SIZE(prescaler) - 1; k >= 0; k--)
-               if ((rate / prescaler[k]) >= p->min_rate)
-                       break;
-
-       if (k < 0) {
-               dev_err(&p->pdev->dev, "clock rate mismatch\n");
-               goto err0;
-       }
-       dev_dbg(&p->pdev->dev, "rate = %lu, prescaler %u\n",
-               rate, prescaler[k]);
-
-       /* clear TCNT on TGRB match, count on rising edge, set prescaler */
-       r_tpu_write(p, TCR, 0x0040 | k);
-
-       /* output 0 until TGRA, output 1 until TGRB */
-       r_tpu_write(p, TIOR, 0x0002);
-
-       rate /= prescaler[k] * p->refresh_rate;
-       r_tpu_write(p, TGRB, rate);
-       dev_dbg(&p->pdev->dev, "TRGB = 0x%04lx\n", rate);
-
-       tmp = (cfg->max_brightness - brightness) * rate;
-       r_tpu_write(p, TGRA, tmp / cfg->max_brightness);
-       dev_dbg(&p->pdev->dev, "TRGA = 0x%04lx\n", tmp / cfg->max_brightness);
-
-       /* PWM mode */
-       r_tpu_write(p, TMDR, 0x0002);
-
-       /* enable channel */
-       r_tpu_start_stop_ch(p, 1);
-
-       p->timer_state = R_TPU_TIMER_ON;
-       return 0;
- err0:
-       clk_disable(p->clk);
-       pm_runtime_put_sync(&p->pdev->dev);
-       return -ENOTSUPP;
-}
-
-static void r_tpu_disable(struct r_tpu_priv *p)
-{
-       if (p->timer_state == R_TPU_TIMER_UNUSED)
-               return;
-
-       /* disable channel */
-       r_tpu_start_stop_ch(p, 0);
-
-       /* stop clock and mark device as idle */
-       clk_disable(p->clk);
-       pm_runtime_put_sync(&p->pdev->dev);
-
-       p->timer_state = R_TPU_TIMER_UNUSED;
-}
-
-static void r_tpu_set_pin(struct r_tpu_priv *p, enum r_tpu_pin new_state,
-                         enum led_brightness brightness)
-{
-       struct led_renesas_tpu_config *cfg = p->pdev->dev.platform_data;
-
-       if (p->pin_state == new_state) {
-               if (p->pin_state == R_TPU_PIN_GPIO)
-                       gpio_set_value(cfg->pin_gpio, brightness);
-               return;
-       }
-
-       if (p->pin_state == R_TPU_PIN_GPIO)
-               gpio_free(cfg->pin_gpio);
-
-       if (p->pin_state == R_TPU_PIN_GPIO_FN)
-               gpio_free(cfg->pin_gpio_fn);
-
-       if (new_state == R_TPU_PIN_GPIO)
-               gpio_request_one(cfg->pin_gpio, !!brightness ?
-                               GPIOF_OUT_INIT_HIGH : GPIOF_OUT_INIT_LOW,
-                               cfg->name);
-
-       if (new_state == R_TPU_PIN_GPIO_FN)
-               gpio_request(cfg->pin_gpio_fn, cfg->name);
-
-       p->pin_state = new_state;
-}
-
-static void r_tpu_work(struct work_struct *work)
-{
-       struct r_tpu_priv *p = container_of(work, struct r_tpu_priv, work);
-       enum led_brightness brightness = p->new_brightness;
-
-       r_tpu_disable(p);
-
-       /* off and maximum are handled as GPIO pins, in between PWM */
-       if ((brightness == 0) || (brightness == p->ldev.max_brightness))
-               r_tpu_set_pin(p, R_TPU_PIN_GPIO, brightness);
-       else {
-               r_tpu_set_pin(p, R_TPU_PIN_GPIO_FN, 0);
-               r_tpu_enable(p, brightness);
-       }
-}
-
-static void r_tpu_set_brightness(struct led_classdev *ldev,
-                                enum led_brightness brightness)
-{
-       struct r_tpu_priv *p = container_of(ldev, struct r_tpu_priv, ldev);
-       p->new_brightness = brightness;
-       schedule_work(&p->work);
-}
-
-static int r_tpu_probe(struct platform_device *pdev)
-{
-       struct led_renesas_tpu_config *cfg = pdev->dev.platform_data;
-       struct r_tpu_priv *p;
-       struct resource *res;
-       int ret;
-
-       if (!cfg) {
-               dev_err(&pdev->dev, "missing platform data\n");
-               return -ENODEV;
-       }
-
-       p = devm_kzalloc(&pdev->dev, sizeof(*p), GFP_KERNEL);
-       if (p == NULL) {
-               dev_err(&pdev->dev, "failed to allocate driver data\n");
-               return -ENOMEM;
-       }
-
-       res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
-       if (!res) {
-               dev_err(&pdev->dev, "failed to get I/O memory\n");
-               return -ENXIO;
-       }
-
-       /* map memory, let mapbase point to our channel */
-       p->mapbase = devm_ioremap_nocache(&pdev->dev, res->start,
-                                       resource_size(res));
-       if (p->mapbase == NULL) {
-               dev_err(&pdev->dev, "failed to remap I/O memory\n");
-               return -ENXIO;
-       }
-
-       /* get hold of clock */
-       p->clk = devm_clk_get(&pdev->dev, NULL);
-       if (IS_ERR(p->clk)) {
-               dev_err(&pdev->dev, "cannot get clock\n");
-               return PTR_ERR(p->clk);
-       }
-
-       p->pdev = pdev;
-       p->pin_state = R_TPU_PIN_UNUSED;
-       p->timer_state = R_TPU_TIMER_UNUSED;
-       p->refresh_rate = cfg->refresh_rate ? cfg->refresh_rate : 100;
-       r_tpu_set_pin(p, R_TPU_PIN_GPIO, LED_OFF);
-       platform_set_drvdata(pdev, p);
-
-       INIT_WORK(&p->work, r_tpu_work);
-
-       p->ldev.name = cfg->name;
-       p->ldev.brightness = LED_OFF;
-       p->ldev.max_brightness = cfg->max_brightness;
-       p->ldev.brightness_set = r_tpu_set_brightness;
-       p->ldev.flags |= LED_CORE_SUSPENDRESUME;
-       ret = led_classdev_register(&pdev->dev, &p->ldev);
-       if (ret < 0)
-               goto err0;
-
-       /* max_brightness may be updated by the LED core code */
-       p->min_rate = p->ldev.max_brightness * p->refresh_rate;
-
-       pm_runtime_enable(&pdev->dev);
-       return 0;
-
- err0:
-       r_tpu_set_pin(p, R_TPU_PIN_UNUSED, LED_OFF);
-       return ret;
-}
-
-static int r_tpu_remove(struct platform_device *pdev)
-{
-       struct r_tpu_priv *p = platform_get_drvdata(pdev);
-
-       r_tpu_set_brightness(&p->ldev, LED_OFF);
-       led_classdev_unregister(&p->ldev);
-       cancel_work_sync(&p->work);
-       r_tpu_disable(p);
-       r_tpu_set_pin(p, R_TPU_PIN_UNUSED, LED_OFF);
-
-       pm_runtime_disable(&pdev->dev);
-
-       return 0;
-}
-
-static struct platform_driver r_tpu_device_driver = {
-       .probe          = r_tpu_probe,
-       .remove         = r_tpu_remove,
-       .driver         = {
-               .name   = "leds-renesas-tpu",
-       }
-};
-
-module_platform_driver(r_tpu_device_driver);
-
-MODULE_AUTHOR("Magnus Damm");
-MODULE_DESCRIPTION("Renesas TPU LED Driver");
-MODULE_LICENSE("GPL v2");
index d5ab6583f440492fe1c3caa77001e32bcfcf0efa..d4a7a351d67c801fc3cb7e36b779f21561882177 100644 (file)
@@ -425,6 +425,25 @@ config BACKLIGHT_AS3711
          If you have an Austrian Microsystems AS3711 say Y to enable the
          backlight driver.
 
+config BACKLIGHT_GPIO
+       tristate "Generic GPIO based Backlight Driver"
+       depends on GPIOLIB
+       help
+         If you have a LCD backlight adjustable by GPIO, say Y to enable
+         this driver.
+
+config BACKLIGHT_LV5207LP
+       tristate "Sanyo LV5207LP Backlight"
+       depends on I2C
+       help
+         If you have a Sanyo LV5207LP say Y to enable the backlight driver.
+
+config BACKLIGHT_BD6107
+       tristate "Rohm BD6107 Backlight"
+       depends on I2C
+       help
+         If you have a Rohm BD6107 say Y to enable the backlight driver.
+
 endif # BACKLIGHT_CLASS_DEVICE
 
 endif # BACKLIGHT_LCD_SUPPORT
index 92711fe60464e80b3f57d27c4210d0065b4a3fc8..38e1babb194636b7e886347a689d9133e09f4153 100644 (file)
@@ -26,12 +26,14 @@ obj-$(CONFIG_BACKLIGHT_ADP8870)             += adp8870_bl.o
 obj-$(CONFIG_BACKLIGHT_APPLE)          += apple_bl.o
 obj-$(CONFIG_BACKLIGHT_AS3711)         += as3711_bl.o
 obj-$(CONFIG_BACKLIGHT_ATMEL_PWM)      += atmel-pwm-bl.o
+obj-$(CONFIG_BACKLIGHT_BD6107)         += bd6107.o
 obj-$(CONFIG_BACKLIGHT_CARILLO_RANCH)  += cr_bllcd.o
 obj-$(CONFIG_BACKLIGHT_CLASS_DEVICE)   += backlight.o
 obj-$(CONFIG_BACKLIGHT_DA903X)         += da903x_bl.o
 obj-$(CONFIG_BACKLIGHT_DA9052)         += da9052_bl.o
 obj-$(CONFIG_BACKLIGHT_EP93XX)         += ep93xx_bl.o
 obj-$(CONFIG_BACKLIGHT_GENERIC)                += generic_bl.o
+obj-$(CONFIG_BACKLIGHT_GPIO)           += gpio_backlight.o
 obj-$(CONFIG_BACKLIGHT_HP680)          += hp680_bl.o
 obj-$(CONFIG_BACKLIGHT_HP700)          += jornada720_bl.o
 obj-$(CONFIG_BACKLIGHT_LM3533)         += lm3533_bl.o
@@ -40,6 +42,7 @@ obj-$(CONFIG_BACKLIGHT_LM3639)                += lm3639_bl.o
 obj-$(CONFIG_BACKLIGHT_LOCOMO)         += locomolcd.o
 obj-$(CONFIG_BACKLIGHT_LP855X)         += lp855x_bl.o
 obj-$(CONFIG_BACKLIGHT_LP8788)         += lp8788_bl.o
+obj-$(CONFIG_BACKLIGHT_LV5207LP)       += lv5207lp.o
 obj-$(CONFIG_BACKLIGHT_MAX8925)                += max8925_bl.o
 obj-$(CONFIG_BACKLIGHT_OMAP1)          += omap1_bl.o
 obj-$(CONFIG_BACKLIGHT_OT200)          += ot200_bl.o
diff --git a/drivers/video/backlight/bd6107.c b/drivers/video/backlight/bd6107.c
new file mode 100644 (file)
index 0000000..15e3294
--- /dev/null
@@ -0,0 +1,213 @@
+/*
+ * ROHM Semiconductor BD6107 LED Driver
+ *
+ * Copyright (C) 2013 Ideas on board SPRL
+ *
+ * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/backlight.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/fb.h>
+#include <linux/gpio.h>
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/platform_data/bd6107.h>
+#include <linux/slab.h>
+
+#define BD6107_PSCNT1                          0x00
+#define BD6107_PSCNT1_PSCNTREG2                        (1 << 2)
+#define BD6107_PSCNT1_PSCNTREG1                        (1 << 0)
+#define BD6107_REGVSET                         0x02
+#define BD6107_REGVSET_REG1VSET_2_85V          (1 << 2)
+#define BD6107_REGVSET_REG1VSET_2_80V          (0 << 2)
+#define BD6107_LEDCNT1                         0x03
+#define BD6107_LEDCNT1_LEDONOFF2               (1 << 1)
+#define BD6107_LEDCNT1_LEDONOFF1               (1 << 0)
+#define BD6107_PORTSEL                         0x04
+#define BD6107_PORTSEL_LEDM(n)                 (1 << (n))
+#define BD6107_RGB1CNT1                                0x05
+#define BD6107_RGB1CNT2                                0x06
+#define BD6107_RGB1CNT3                                0x07
+#define BD6107_RGB1CNT4                                0x08
+#define BD6107_RGB1CNT5                                0x09
+#define BD6107_RGB1FLM                         0x0a
+#define BD6107_RGB2CNT1                                0x0b
+#define BD6107_RGB2CNT2                                0x0c
+#define BD6107_RGB2CNT3                                0x0d
+#define BD6107_RGB2CNT4                                0x0e
+#define BD6107_RGB2CNT5                                0x0f
+#define BD6107_RGB2FLM                         0x10
+#define BD6107_PSCONT3                         0x11
+#define BD6107_SMMONCNT                                0x12
+#define BD6107_DCDCCNT                         0x13
+#define BD6107_IOSEL                           0x14
+#define BD6107_OUT1                            0x15
+#define BD6107_OUT2                            0x16
+#define BD6107_MASK1                           0x17
+#define BD6107_MASK2                           0x18
+#define BD6107_FACTOR1                         0x19
+#define BD6107_FACTOR2                         0x1a
+#define BD6107_CLRFACT1                                0x1b
+#define BD6107_CLRFACT2                                0x1c
+#define BD6107_STATE1                          0x1d
+#define BD6107_LSIVER                          0x1e
+#define BD6107_GRPSEL                          0x1f
+#define BD6107_LEDCNT2                         0x20
+#define BD6107_LEDCNT3                         0x21
+#define BD6107_MCURRENT                                0x22
+#define BD6107_MAINCNT1                                0x23
+#define BD6107_MAINCNT2                                0x24
+#define BD6107_SLOPECNT                                0x25
+#define BD6107_MSLOPE                          0x26
+#define BD6107_RGBSLOPE                                0x27
+#define BD6107_TEST                            0x29
+#define BD6107_SFTRST                          0x2a
+#define BD6107_SFTRSTGD                                0x2b
+
+struct bd6107 {
+       struct i2c_client *client;
+       struct backlight_device *backlight;
+       struct bd6107_platform_data *pdata;
+};
+
+static int bd6107_write(struct bd6107 *bd, u8 reg, u8 data)
+{
+       return i2c_smbus_write_byte_data(bd->client, reg, data);
+}
+
+static int bd6107_backlight_update_status(struct backlight_device *backlight)
+{
+       struct bd6107 *bd = bl_get_data(backlight);
+       int brightness = backlight->props.brightness;
+
+       if (backlight->props.power != FB_BLANK_UNBLANK ||
+           backlight->props.fb_blank != FB_BLANK_UNBLANK ||
+           backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
+               brightness = 0;
+
+       if (brightness) {
+               bd6107_write(bd, BD6107_PORTSEL, BD6107_PORTSEL_LEDM(2) |
+                            BD6107_PORTSEL_LEDM(1) | BD6107_PORTSEL_LEDM(0));
+               bd6107_write(bd, BD6107_MAINCNT1, brightness);
+               bd6107_write(bd, BD6107_LEDCNT1, BD6107_LEDCNT1_LEDONOFF1);
+       } else {
+               gpio_set_value(bd->pdata->reset, 0);
+               msleep(24);
+               gpio_set_value(bd->pdata->reset, 1);
+       }
+
+       return 0;
+}
+
+static int bd6107_backlight_get_brightness(struct backlight_device *backlight)
+{
+       return backlight->props.brightness;
+}
+
+static int bd6107_backlight_check_fb(struct backlight_device *backlight,
+                                      struct fb_info *info)
+{
+       struct bd6107 *bd = bl_get_data(backlight);
+
+       return bd->pdata->fbdev == NULL || bd->pdata->fbdev == info->dev;
+}
+
+static const struct backlight_ops bd6107_backlight_ops = {
+       .options        = BL_CORE_SUSPENDRESUME,
+       .update_status  = bd6107_backlight_update_status,
+       .get_brightness = bd6107_backlight_get_brightness,
+       .check_fb       = bd6107_backlight_check_fb,
+};
+
+static int bd6107_probe(struct i2c_client *client,
+                         const struct i2c_device_id *id)
+{
+       struct bd6107_platform_data *pdata = client->dev.platform_data;
+       struct backlight_device *backlight;
+       struct backlight_properties props;
+       struct bd6107 *bd;
+       int ret;
+
+       if (pdata == NULL || !pdata->reset) {
+               dev_err(&client->dev, "No reset GPIO in platform data\n");
+               return -EINVAL;
+       }
+
+       if (!i2c_check_functionality(client->adapter,
+                                    I2C_FUNC_SMBUS_BYTE_DATA)) {
+               dev_warn(&client->dev,
+                        "I2C adapter doesn't support I2C_FUNC_SMBUS_BYTE\n");
+               return -EIO;
+       }
+
+       bd = devm_kzalloc(&client->dev, sizeof(*bd), GFP_KERNEL);
+       if (!bd)
+               return -ENOMEM;
+
+       bd->client = client;
+       bd->pdata = pdata;
+
+       ret = devm_gpio_request_one(&client->dev, pdata->reset,
+                                   GPIOF_DIR_OUT | GPIOF_INIT_LOW, "reset");
+       if (ret < 0) {
+               dev_err(&client->dev, "unable to request reset GPIO\n");
+               return ret;
+       }
+
+       memset(&props, 0, sizeof(props));
+       props.type = BACKLIGHT_RAW;
+       props.max_brightness = 128;
+       props.brightness = clamp_t(unsigned int, pdata->def_value, 0,
+                                  props.max_brightness);
+
+       backlight = backlight_device_register(dev_name(&client->dev),
+                                             &bd->client->dev, bd,
+                                             &bd6107_backlight_ops, &props);
+       if (IS_ERR(backlight)) {
+               dev_err(&client->dev, "failed to register backlight\n");
+               return PTR_ERR(backlight);
+       }
+
+       backlight_update_status(backlight);
+       i2c_set_clientdata(client, backlight);
+
+       return 0;
+}
+
+static int bd6107_remove(struct i2c_client *client)
+{
+       struct backlight_device *backlight = i2c_get_clientdata(client);
+
+       backlight->props.brightness = 0;
+       backlight_update_status(backlight);
+       backlight_device_unregister(backlight);
+
+       return 0;
+}
+
+static const struct i2c_device_id bd6107_ids[] = {
+       { "bd6107", 0 },
+       { }
+};
+MODULE_DEVICE_TABLE(i2c, bd6107_ids);
+
+static struct i2c_driver bd6107_driver = {
+       .driver = {
+               .name = "bd6107",
+       },
+       .probe = bd6107_probe,
+       .remove = bd6107_remove,
+       .id_table = bd6107_ids,
+};
+
+module_i2c_driver(bd6107_driver);
+
+MODULE_DESCRIPTION("Rohm BD6107 Backlight Driver");
+MODULE_AUTHOR("Laurent Pinchart <laurent.pinchart@ideasonboard.com>");
+MODULE_LICENSE("GPL");
diff --git a/drivers/video/backlight/gpio_backlight.c b/drivers/video/backlight/gpio_backlight.c
new file mode 100644 (file)
index 0000000..5fa217f
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * gpio_backlight.c - Simple GPIO-controlled backlight
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/backlight.h>
+#include <linux/err.h>
+#include <linux/fb.h>
+#include <linux/gpio.h>
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/module.h>
+#include <linux/platform_data/gpio_backlight.h>
+#include <linux/platform_device.h>
+#include <linux/slab.h>
+
+struct gpio_backlight {
+       struct device *dev;
+       struct device *fbdev;
+
+       int gpio;
+       int active;
+};
+
+static int gpio_backlight_update_status(struct backlight_device *bl)
+{
+       struct gpio_backlight *gbl = bl_get_data(bl);
+       int brightness = bl->props.brightness;
+
+       if (bl->props.power != FB_BLANK_UNBLANK ||
+           bl->props.fb_blank != FB_BLANK_UNBLANK ||
+           bl->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
+               brightness = 0;
+
+       gpio_set_value(gbl->gpio, brightness ? gbl->active : !gbl->active);
+
+       return 0;
+}
+
+static int gpio_backlight_get_brightness(struct backlight_device *bl)
+{
+       return bl->props.brightness;
+}
+
+static int gpio_backlight_check_fb(struct backlight_device *bl,
+                                  struct fb_info *info)
+{
+       struct gpio_backlight *gbl = bl_get_data(bl);
+
+       return gbl->fbdev == NULL || gbl->fbdev == info->dev;
+}
+
+static const struct backlight_ops gpio_backlight_ops = {
+       .options        = BL_CORE_SUSPENDRESUME,
+       .update_status  = gpio_backlight_update_status,
+       .get_brightness = gpio_backlight_get_brightness,
+       .check_fb       = gpio_backlight_check_fb,
+};
+
+static int gpio_backlight_probe(struct platform_device *pdev)
+{
+       struct gpio_backlight_platform_data *pdata = pdev->dev.platform_data;
+       struct backlight_properties props;
+       struct backlight_device *bl;
+       struct gpio_backlight *gbl;
+       int ret;
+
+       if (!pdata) {
+               dev_err(&pdev->dev, "failed to find platform data\n");
+               return -ENODEV;
+       }
+
+       gbl = devm_kzalloc(&pdev->dev, sizeof(*gbl), GFP_KERNEL);
+       if (gbl == NULL)
+               return -ENOMEM;
+
+       gbl->dev = &pdev->dev;
+       gbl->fbdev = pdata->fbdev;
+       gbl->gpio = pdata->gpio;
+       gbl->active = pdata->active_low ? 0 : 1;
+
+       ret = devm_gpio_request_one(gbl->dev, gbl->gpio, GPIOF_DIR_OUT |
+                                   (gbl->active ? GPIOF_INIT_LOW
+                                                : GPIOF_INIT_HIGH),
+                                   pdata->name);
+       if (ret < 0) {
+               dev_err(&pdev->dev, "unable to request GPIO\n");
+               return ret;
+       }
+
+       memset(&props, 0, sizeof(props));
+       props.type = BACKLIGHT_RAW;
+       props.max_brightness = 1;
+       bl = backlight_device_register(dev_name(&pdev->dev), &pdev->dev, gbl,
+                                      &gpio_backlight_ops, &props);
+       if (IS_ERR(bl)) {
+               dev_err(&pdev->dev, "failed to register backlight\n");
+               return PTR_ERR(bl);
+       }
+
+       bl->props.brightness = pdata->def_value;
+       backlight_update_status(bl);
+
+       platform_set_drvdata(pdev, bl);
+       return 0;
+}
+
+static int gpio_backlight_remove(struct platform_device *pdev)
+{
+       struct backlight_device *bl = platform_get_drvdata(pdev);
+
+       backlight_device_unregister(bl);
+       return 0;
+}
+
+static struct platform_driver gpio_backlight_driver = {
+       .driver         = {
+               .name           = "gpio-backlight",
+               .owner          = THIS_MODULE,
+       },
+       .probe          = gpio_backlight_probe,
+       .remove         = gpio_backlight_remove,
+};
+
+module_platform_driver(gpio_backlight_driver);
+
+MODULE_AUTHOR("Laurent Pinchart <laurent.pinchart@ideasonboard.com>");
+MODULE_DESCRIPTION("GPIO-based Backlight Driver");
+MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:gpio-backlight");
diff --git a/drivers/video/backlight/lv5207lp.c b/drivers/video/backlight/lv5207lp.c
new file mode 100644 (file)
index 0000000..498fd73
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Sanyo LV5207LP LED Driver
+ *
+ * Copyright (C) 2013 Ideas on board SPRL
+ *
+ * Contact: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+
+#include <linux/backlight.h>
+#include <linux/err.h>
+#include <linux/fb.h>
+#include <linux/i2c.h>
+#include <linux/module.h>
+#include <linux/platform_data/lv5207lp.h>
+#include <linux/slab.h>
+
+#define LV5207LP_CTRL1                 0x00
+#define LV5207LP_CPSW                  (1 << 7)
+#define LV5207LP_SCTEN                 (1 << 6)
+#define LV5207LP_C10                   (1 << 5)
+#define LV5207LP_CKSW                  (1 << 4)
+#define LV5207LP_RSW                   (1 << 3)
+#define LV5207LP_GSW                   (1 << 2)
+#define LV5207LP_BSW                   (1 << 1)
+#define LV5207LP_CTRL2                 0x01
+#define LV5207LP_MSW                   (1 << 7)
+#define LV5207LP_MLED4                 (1 << 6)
+#define LV5207LP_RED                   0x02
+#define LV5207LP_GREEN                 0x03
+#define LV5207LP_BLUE                  0x04
+
+#define LV5207LP_MAX_BRIGHTNESS                32
+
+struct lv5207lp {
+       struct i2c_client *client;
+       struct backlight_device *backlight;
+       struct lv5207lp_platform_data *pdata;
+};
+
+static int lv5207lp_write(struct lv5207lp *lv, u8 reg, u8 data)
+{
+       return i2c_smbus_write_byte_data(lv->client, reg, data);
+}
+
+static int lv5207lp_backlight_update_status(struct backlight_device *backlight)
+{
+       struct lv5207lp *lv = bl_get_data(backlight);
+       int brightness = backlight->props.brightness;
+
+       if (backlight->props.power != FB_BLANK_UNBLANK ||
+           backlight->props.fb_blank != FB_BLANK_UNBLANK ||
+           backlight->props.state & (BL_CORE_SUSPENDED | BL_CORE_FBBLANK))
+               brightness = 0;
+
+       if (brightness) {
+               lv5207lp_write(lv, LV5207LP_CTRL1,
+                              LV5207LP_CPSW | LV5207LP_C10 | LV5207LP_CKSW);
+               lv5207lp_write(lv, LV5207LP_CTRL2,
+                              LV5207LP_MSW | LV5207LP_MLED4 |
+                              (brightness - 1));
+       } else {
+               lv5207lp_write(lv, LV5207LP_CTRL1, 0);
+               lv5207lp_write(lv, LV5207LP_CTRL2, 0);
+       }
+
+       return 0;
+}
+
+static int lv5207lp_backlight_get_brightness(struct backlight_device *backlight)
+{
+       return backlight->props.brightness;
+}
+
+static int lv5207lp_backlight_check_fb(struct backlight_device *backlight,
+                                      struct fb_info *info)
+{
+       struct lv5207lp *lv = bl_get_data(backlight);
+
+       return lv->pdata->fbdev == NULL || lv->pdata->fbdev == info->dev;
+}
+
+static const struct backlight_ops lv5207lp_backlight_ops = {
+       .options        = BL_CORE_SUSPENDRESUME,
+       .update_status  = lv5207lp_backlight_update_status,
+       .get_brightness = lv5207lp_backlight_get_brightness,
+       .check_fb       = lv5207lp_backlight_check_fb,
+};
+
+static int lv5207lp_probe(struct i2c_client *client,
+                         const struct i2c_device_id *id)
+{
+       struct lv5207lp_platform_data *pdata = client->dev.platform_data;
+       struct backlight_device *backlight;
+       struct backlight_properties props;
+       struct lv5207lp *lv;
+
+       if (pdata == NULL) {
+               dev_err(&client->dev, "No platform data supplied\n");
+               return -EINVAL;
+       }
+
+       if (!i2c_check_functionality(client->adapter,
+                                    I2C_FUNC_SMBUS_BYTE_DATA)) {
+               dev_warn(&client->dev,
+                        "I2C adapter doesn't support I2C_FUNC_SMBUS_BYTE\n");
+               return -EIO;
+       }
+
+       lv = devm_kzalloc(&client->dev, sizeof(*lv), GFP_KERNEL);
+       if (!lv)
+               return -ENOMEM;
+
+       lv->client = client;
+       lv->pdata = pdata;
+
+       memset(&props, 0, sizeof(props));
+       props.type = BACKLIGHT_RAW;
+       props.max_brightness = min_t(unsigned int, pdata->max_value,
+                                    LV5207LP_MAX_BRIGHTNESS);
+       props.brightness = clamp_t(unsigned int, pdata->def_value, 0,
+                                  props.max_brightness);
+
+       backlight = backlight_device_register(dev_name(&client->dev),
+                                             &lv->client->dev, lv,
+                                             &lv5207lp_backlight_ops, &props);
+       if (IS_ERR(backlight)) {
+               dev_err(&client->dev, "failed to register backlight\n");
+               return PTR_ERR(backlight);
+       }
+
+       backlight_update_status(backlight);
+       i2c_set_clientdata(client, backlight);
+
+       return 0;
+}
+
+static int lv5207lp_remove(struct i2c_client *client)
+{
+       struct backlight_device *backlight = i2c_get_clientdata(client);
+
+       backlight->props.brightness = 0;
+       backlight_update_status(backlight);
+       backlight_device_unregister(backlight);
+
+       return 0;
+}
+
+static const struct i2c_device_id lv5207lp_ids[] = {
+       { "lv5207lp", 0 },
+       { }
+};
+MODULE_DEVICE_TABLE(i2c, lv5207lp_ids);
+
+static struct i2c_driver lv5207lp_driver = {
+       .driver = {
+               .name = "lv5207lp",
+       },
+       .probe = lv5207lp_probe,
+       .remove = lv5207lp_remove,
+       .id_table = lv5207lp_ids,
+};
+
+module_i2c_driver(lv5207lp_driver);
+
+MODULE_DESCRIPTION("Sanyo LV5207LP Backlight Driver");
+MODULE_AUTHOR("Laurent Pinchart <laurent.pinchart@ideasonboard.com>");
+MODULE_LICENSE("GPL");
diff --git a/include/linux/platform_data/bd6107.h b/include/linux/platform_data/bd6107.h
new file mode 100644 (file)
index 0000000..671d650
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * bd6107.h - Rohm BD6107 LEDs Driver
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __BD6107_H__
+#define __BD6107_H__
+
+struct device;
+
+struct bd6107_platform_data {
+       struct device *fbdev;
+       int reset;                      /* Reset GPIO */
+       unsigned int def_value;
+};
+
+#endif
diff --git a/include/linux/platform_data/gpio_backlight.h b/include/linux/platform_data/gpio_backlight.h
new file mode 100644 (file)
index 0000000..5ae0d9c
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * gpio_backlight.h - Simple GPIO-controlled backlight
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __GPIO_BACKLIGHT_H__
+#define __GPIO_BACKLIGHT_H__
+
+struct device;
+
+struct gpio_backlight_platform_data {
+       struct device *fbdev;
+       int gpio;
+       int def_value;
+       bool active_low;
+       const char *name;
+};
+
+#endif
diff --git a/include/linux/platform_data/leds-renesas-tpu.h b/include/linux/platform_data/leds-renesas-tpu.h
deleted file mode 100644 (file)
index 0553870..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#ifndef __LEDS_RENESAS_TPU_H__
-#define __LEDS_RENESAS_TPU_H__
-
-struct led_renesas_tpu_config {
-       char *name;
-       unsigned pin_gpio_fn;
-       unsigned pin_gpio;
-       unsigned int channel_offset;
-       unsigned int timer_bit;
-       unsigned int max_brightness;
-       unsigned int refresh_rate;
-};
-
-#endif /* __LEDS_RENESAS_TPU_H__ */
diff --git a/include/linux/platform_data/lv5207lp.h b/include/linux/platform_data/lv5207lp.h
new file mode 100644 (file)
index 0000000..7dc4d9a
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * lv5207lp.h - Sanyo LV5207LP LEDs Driver
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef __LV5207LP_H__
+#define __LV5207LP_H__
+
+struct device;
+
+struct lv5207lp_platform_data {
+       struct device *fbdev;
+       unsigned int max_value;
+       unsigned int def_value;
+};
+
+#endif