Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney...
Linus Torvalds [Tue, 26 Feb 2013 17:29:02 +0000 (09:29 -0800)]
Pull LED subsystem update from Bryan Wu.

* 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds: (61 commits)
  leds: leds-sunfire: use dev_err()/pr_err() instead of printk()
  leds: 88pm860x: Add missing of_node_put()
  leds: tca6507: Use of_get_child_count()
  leds: leds-pwm: make it depend on PWM and not HAVE_PWM
  Documentation: leds: update LP55xx family devices
  leds-lp55xx: fix problem on removing LED attributes
  leds-lp5521/5523: add author and copyright description
  leds-lp5521/5523: use new lp55xx common header
  leds-lp55xx: clean up headers
  leds-lp55xx: clean up definitions
  leds-lp55xx: clean up unused data and functions
  leds-lp55xx: clean up _remove()
  leds-lp55xx: add new function for removing device attribtues
  leds-lp55xx: code refactoring on selftest function
  leds-lp55xx: use common device attribute driver function
  leds-lp55xx: support device specific attributes
  leds-lp5523: use generic firmware interface
  leds-lp5521: use generic firmware interface
  leds-lp55xx: support firmware interface
  leds-lp55xx: add new lp55xx_register_sysfs() for the firmware interface
  ...

1  2 
arch/arm/mach-omap2/board-rx51-peripherals.c
arch/arm/mach-ux500/board-mop500.c
drivers/leds/Kconfig

@@@ -40,9 -40,9 +40,9 @@@
  #include <sound/tpa6130a2-plat.h>
  #include <media/radio-si4713.h>
  #include <media/si4713.h>
- #include <linux/leds-lp5523.h>
+ #include <linux/platform_data/leds-lp55xx.h>
  
 -#include <../drivers/staging/iio/light/tsl2563.h>
 +#include <linux/platform_data/tsl2563.h>
  #include <linux/lis3lv02d.h>
  
  #if defined(CONFIG_IR_RX51) || defined(CONFIG_IR_RX51_MODULE)
@@@ -160,41 -160,32 +160,41 @@@ static struct tsl2563_platform_data rx5
  #endif
  
  #if defined(CONFIG_LEDS_LP5523) || defined(CONFIG_LEDS_LP5523_MODULE)
- static struct lp5523_led_config rx51_lp5523_led_config[] = {
+ static struct lp55xx_led_config rx51_lp5523_led_config[] = {
        {
 +              .name           = "lp5523:kb1",
                .chan_nr        = 0,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:kb2",
                .chan_nr        = 1,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:kb3",
                .chan_nr        = 2,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:kb4",
                .chan_nr        = 3,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:b",
                .chan_nr        = 4,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:g",
                .chan_nr        = 5,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:r",
                .chan_nr        = 6,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:kb5",
                .chan_nr        = 7,
                .led_current    = 50,
        }, {
 +              .name           = "lp5523:kb6",
                .chan_nr        = 8,
                .led_current    = 50,
        }
@@@ -216,10 -207,10 +216,10 @@@ static void rx51_lp5523_enable(bool sta
        gpio_set_value(RX51_LP5523_CHIP_EN_GPIO, !!state);
  }
  
- static struct lp5523_platform_data rx51_lp5523_platform_data = {
+ static struct lp55xx_platform_data rx51_lp5523_platform_data = {
        .led_config             = rx51_lp5523_led_config,
        .num_channels           = ARRAY_SIZE(rx51_lp5523_led_config),
-       .clock_mode             = LP5523_CLOCK_AUTO,
+       .clock_mode             = LP55XX_CLOCK_AUTO,
        .setup_resources        = rx51_lp5523_setup,
        .release_resources      = rx51_lp5523_release,
        .enable                 = rx51_lp5523_enable,
@@@ -1262,16 -1253,6 +1262,16 @@@ static void __init rx51_init_lirc(void
  }
  #endif
  
 +static struct platform_device madc_hwmon = {
 +      .name   = "twl4030_madc_hwmon",
 +      .id     = -1,
 +};
 +
 +static void __init rx51_init_twl4030_hwmon(void)
 +{
 +      platform_device_register(&madc_hwmon);
 +}
 +
  void __init rx51_peripherals_init(void)
  {
        rx51_i2c_init();
                omap_hsmmc_init(mmc);
  
        rx51_charger_init();
 +      rx51_init_twl4030_hwmon();
  }
  
@@@ -28,7 -28,7 +28,7 @@@
  #include <linux/mfd/tps6105x.h>
  #include <linux/mfd/abx500/ab8500-gpio.h>
  #include <linux/mfd/abx500/ab8500-codec.h>
- #include <linux/leds-lp5521.h>
+ #include <linux/platform_data/leds-lp55xx.h>
  #include <linux/input.h>
  #include <linux/smsc911x.h>
  #include <linux/gpio_keys.h>
@@@ -40,6 -40,7 +40,6 @@@
  
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
 -#include <asm/hardware/gic.h>
  
  #include <mach/hardware.h>
  #include <mach/setup.h>
@@@ -89,8 -90,26 +89,8 @@@ static struct platform_device snowball_
         },
  };
  
 -static struct ab8500_gpio_platform_data ab8500_gpio_pdata = {
 +static struct abx500_gpio_platform_data ab8500_gpio_pdata = {
        .gpio_base              = MOP500_AB8500_PIN_GPIO(1),
 -      .irq_base               = MOP500_AB8500_VIR_GPIO_IRQ_BASE,
 -      /* config_reg is the initial configuration of ab8500 pins.
 -       * The pins can be configured as GPIO or alt functions based
 -       * on value present in GpioSel1 to GpioSel6 and AlternatFunction
 -       * register. This is the array of 7 configuration settings.
 -       * One has to compile time decide these settings. Below is the
 -       * explanation of these setting
 -       * GpioSel1 = 0x00 => Pins GPIO1 to GPIO8 are not used as GPIO
 -       * GpioSel2 = 0x1E => Pins GPIO10 to GPIO13 are configured as GPIO
 -       * GpioSel3 = 0x80 => Pin GPIO24 is configured as GPIO
 -       * GpioSel4 = 0x01 => Pin GPIo25 is configured as GPIO
 -       * GpioSel5 = 0x7A => Pins GPIO34, GPIO36 to GPIO39 are conf as GPIO
 -       * GpioSel6 = 0x00 => Pins GPIO41 & GPIo42 are not configured as GPIO
 -       * AlternaFunction = 0x00 => If Pins GPIO10 to 13 are not configured
 -       * as GPIO then this register selectes the alternate fucntions
 -       */
 -      .config_reg             = {0x00, 0x1E, 0x80, 0x01,
 -                                      0x7A, 0x00, 0x00},
  };
  
  /* ab8500-codec */
@@@ -196,7 -215,7 +196,7 @@@ static struct platform_device snowball_
        },
  };
  
 -static struct ab8500_platform_data ab8500_platdata = {
 +struct ab8500_platform_data ab8500_platdata = {
        .irq_base       = MOP500_AB8500_IRQ_BASE,
        .regulator_reg_init = ab8500_regulator_reg_init,
        .num_regulator_reg_init = ARRAY_SIZE(ab8500_regulator_reg_init),
@@@ -301,7 -320,7 +301,7 @@@ static struct tc3589x_platform_data mop
        .irq_base       = MOP500_EGPIO_IRQ_BASE,
  };
  
- static struct lp5521_led_config lp5521_pri_led[] = {
+ static struct lp55xx_led_config lp5521_pri_led[] = {
         [0] = {
               .chan_nr = 0,
               .led_current = 0x2f,
         },
  };
  
- static struct lp5521_platform_data __initdata lp5521_pri_data = {
+ static struct lp55xx_platform_data __initdata lp5521_pri_data = {
         .label = "lp5521_pri",
         .led_config     = &lp5521_pri_led[0],
         .num_channels   = 3,
-        .clock_mode     = LP5521_CLOCK_EXT,
+        .clock_mode     = LP55XX_CLOCK_EXT,
  };
  
- static struct lp5521_led_config lp5521_sec_led[] = {
+ static struct lp55xx_led_config lp5521_sec_led[] = {
         [0] = {
               .chan_nr = 0,
               .led_current = 0x2f,
         },
  };
  
- static struct lp5521_platform_data __initdata lp5521_sec_data = {
+ static struct lp55xx_platform_data __initdata lp5521_sec_data = {
         .label = "lp5521_sec",
         .led_config     = &lp5521_sec_led[0],
         .num_channels   = 3,
-        .clock_mode     = LP5521_CLOCK_EXT,
+        .clock_mode     = LP55XX_CLOCK_EXT,
  };
  
  static struct i2c_board_info __initdata mop500_i2c0_devices[] = {
@@@ -632,7 -651,6 +632,7 @@@ static void __init mop500_init_machine(
        int i2c0_devs;
        int i;
  
 +      platform_device_register(&db8500_prcmu_device);
        mop500_gpio_keys[0].gpio = GPIO_PROX_SENSOR;
  
        mop500_pinmaps_init();
@@@ -667,7 -685,6 +667,7 @@@ static void __init snowball_init_machin
        struct device *parent = NULL;
        int i;
  
 +      platform_device_register(&db8500_prcmu_device);
        snowball_pinmaps_init();
        parent = u8500_init_devices(&ab8500_platdata);
  
@@@ -693,7 -710,6 +693,7 @@@ static void __init hrefv60_init_machine
        int i2c0_devs;
        int i;
  
 +      platform_device_register(&db8500_prcmu_device);
        /*
         * The HREFv60 board removed a GPIO expander and routed
         * all these GPIO pins to the internal GPIO controller
@@@ -735,7 -751,8 +735,7 @@@ MACHINE_START(U8500, "ST-Ericsson MOP50
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
        /* we re-use nomadik timer here */
 -      .timer          = &ux500_timer,
 -      .handle_irq     = gic_handle_irq,
 +      .init_time      = ux500_timer_init,
        .init_machine   = mop500_init_machine,
        .init_late      = ux500_init_late,
  MACHINE_END
@@@ -744,7 -761,8 +744,7 @@@ MACHINE_START(U8520, "ST-Ericsson U852
        .atag_offset    = 0x100,
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
 -      .timer          = &ux500_timer,
 -      .handle_irq     = gic_handle_irq,
 +      .init_time      = ux500_timer_init,
        .init_machine   = mop500_init_machine,
        .init_late      = ux500_init_late,
  MACHINE_END
@@@ -754,7 -772,8 +754,7 @@@ MACHINE_START(HREFV60, "ST-Ericsson U85
        .smp            = smp_ops(ux500_smp_ops),
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
 -      .timer          = &ux500_timer,
 -      .handle_irq     = gic_handle_irq,
 +      .init_time      = ux500_timer_init,
        .init_machine   = hrefv60_init_machine,
        .init_late      = ux500_init_late,
  MACHINE_END
@@@ -765,7 -784,8 +765,7 @@@ MACHINE_START(SNOWBALL, "Calao Systems 
        .map_io         = u8500_map_io,
        .init_irq       = ux500_init_irq,
        /* we re-use nomadik timer here */
 -      .timer          = &ux500_timer,
 -      .handle_irq     = gic_handle_irq,
 +      .init_time      = ux500_timer_init,
        .init_machine   = snowball_init_machine,
        .init_late      = NULL,
  MACHINE_END
diff --combined drivers/leds/Kconfig
@@@ -154,7 -154,7 +154,7 @@@ config LEDS_HP6X
  config LEDS_PCA9532
        tristate "LED driver for PCA9532 dimmer"
        depends on LEDS_CLASS
 -      depends on I2C && INPUT && EXPERIMENTAL
 +      depends on I2C && INPUT
        help
          This option enables support for NXP pca9532
          LED controller. It is generally only useful
@@@ -193,9 -193,18 +193,18 @@@ config LEDS_LP394
          To compile this driver as a module, choose M here: the
          module will be called leds-lp3944.
  
+ config LEDS_LP55XX_COMMON
+       tristate "Common Driver for TI/National LP5521 and LP5523/55231"
+       depends on LEDS_LP5521 || LEDS_LP5523
+       select FW_LOADER
+       help
+         This option supports common operations for LP5521 and LP5523/55231
+         devices.
  config LEDS_LP5521
        tristate "LED Support for N.S. LP5521 LED driver chip"
        depends on LEDS_CLASS && I2C
+       select LEDS_LP55XX_COMMON
        help
          If you say yes here you get support for the National Semiconductor
          LP5521 LED driver. It is 3 channel chip with programmable engines.
  config LEDS_LP5523
        tristate "LED Support for TI/National LP5523/55231 LED driver chip"
        depends on LEDS_CLASS && I2C
+       select LEDS_LP55XX_COMMON
        help
          If you say yes here you get support for TI/National Semiconductor
          LP5523/55231 LED driver.
@@@ -310,7 -320,7 +320,7 @@@ config LEDS_DAC124S08
  config LEDS_PWM
        tristate "PWM driven LED Support"
        depends on LEDS_CLASS
-       depends on HAVE_PWM
+       depends on PWM
        help
          This option enables support for pwm driven LEDs