123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- diff --git a/drivers/input/misc/axp20x-pek.c b/drivers/input/misc/axp20x-pek.c
- index 9c6386b2af33..6cf1ddda0788 100644
- --- a/drivers/input/misc/axp20x-pek.c
- +++ b/drivers/input/misc/axp20x-pek.c
- @@ -215,10 +215,13 @@ static irqreturn_t axp20x_pek_irq(int irq, void *pwr)
- * The power-button is connected to ground so a falling edge (dbf)
- * means it is pressed.
- */
- - if (irq == axp20x_pek->irq_dbf)
- + if (irq == axp20x_pek->irq_dbf) {
- input_report_key(idev, KEY_POWER, true);
- - else if (irq == axp20x_pek->irq_dbr)
- + msleep(100);
- input_report_key(idev, KEY_POWER, false);
- + }
- + else if (irq == axp20x_pek->irq_dbr) {
- + }
-
- input_sync(idev);
-
- diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
- index 092eb59a7d32..00ab1f315f6b 100644
- --- a/drivers/leds/leds-gpio.c
- +++ b/drivers/leds/leds-gpio.c
- @@ -26,6 +26,8 @@ struct gpio_led_data {
- gpio_blink_set_t platform_gpio_blink_set;
- };
-
- +static int leds_gpio_proc_init(const char *name);
- +
- static inline struct gpio_led_data *
- cdev_to_gpio_led_data(struct led_classdev *led_cdev)
- {
- @@ -119,6 +121,8 @@ static int create_gpio_led(const struct gpio_led *template,
- &init_data);
- }
-
- + leds_gpio_proc_init(led_dat->cdev.name);
- +
- return ret;
- }
-
- @@ -127,6 +131,8 @@ struct gpio_leds_priv {
- struct gpio_led_data leds[];
- };
-
- +static struct gpio_leds_priv *leds_priv;
- +
- static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
- {
- struct device *dev = &pdev->dev;
- @@ -181,6 +187,7 @@ static struct gpio_leds_priv *gpio_leds_create(struct platform_device *pdev)
- priv->num_leds++;
- }
-
- + leds_priv = priv;
- return priv;
- }
-
- @@ -307,6 +314,82 @@ static struct platform_driver gpio_led_driver = {
-
- module_platform_driver(gpio_led_driver);
-
- +#ifdef CONFIG_PROC_FS
- +
- +#include <linux/proc_fs.h>
- +#include <linux/uaccess.h>
- +
- +static char global_buffer[64];
- +
- +static int leds_gpio_proc_show(struct seq_file *m, void *v)
- +{
- + seq_printf(m, "leds_gpio\n");
- + return 0;
- +}
- +
- +static int leds_gpio_proc_open(struct inode *inode, struct file *file)
- +{
- + return single_open(file, leds_gpio_proc_show, NULL);
- +}
- +
- +static int leds_gpio_proc_read(struct file * file, char __user * buf, size_t size, loff_t * loff)
- +{
- + int value, len, i;
- +
- + for(i = 0; i < leds_priv->num_leds; i++) {
- + if(strcmp(leds_priv->leds[i].cdev.name, file->f_path.dentry->d_iname) == 0) {
- + value = leds_priv->leds[i].cdev.brightness;
- + len = snprintf(global_buffer, sizeof(global_buffer), "%d\n", value);
- + return simple_read_from_buffer(buf, size, loff, global_buffer, len);
- + }
- + }
- +
- + return 0;
- +}
- +
- +static int leds_gpio_proc_write(struct file * file, const char __user * buf, size_t size, loff_t * loff)
- +{
- + int value, i;
- +
- + if(copy_from_user(global_buffer, buf, size))
- + return -EFAULT;
- +
- + global_buffer[size] = 0;
- + for(i = 0; i < leds_priv->num_leds; i++) {
- + if(strcmp(leds_priv->leds[i].cdev.name, file->f_path.dentry->d_iname) == 0) {
- + value = simple_strtol(global_buffer, 0, 10);
- + gpio_led_set(&leds_priv->leds[i].cdev, value);
- + leds_priv->leds[i].cdev.brightness = value;
- + break;
- + }
- + }
- +
- + return size;
- +}
- +
- +static const struct proc_ops leds_gpio_proc_fops = {
- + .proc_open = leds_gpio_proc_open,
- + .proc_read = leds_gpio_proc_read,
- + .proc_write = leds_gpio_proc_write,
- + .proc_lseek = seq_lseek,
- + .proc_release = single_release,
- +};
- +
- +static int leds_gpio_proc_init(const char *name)
- +{
- + struct proc_dir_entry *r;
- + char buf[50];
- +
- + sprintf(buf, "driver/%s", name);
- + r = proc_create(buf, S_IRWXUGO, NULL, &leds_gpio_proc_fops);
- + if (!r)
- + return -ENOMEM;
- + return 0;
- +}
- +#else
- +static inline int leds_gpio_proc_init(const char *name) { return 0; }
- +#endif /* CONFIG_PROC_FS */
- +
- MODULE_AUTHOR("Raphael Assenat <raph@8d.com>, Trent Piepho <tpiepho@freescale.com>");
- MODULE_DESCRIPTION("GPIO LED driver");
- MODULE_LICENSE("GPL");
- diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c
- index 8161a5dc68e8..3b342db209dc 100644
- --- a/drivers/mfd/axp20x.c
- +++ b/drivers/mfd/axp20x.c
- @@ -203,8 +203,8 @@ static const struct resource axp803_usb_power_supply_resources[] = {
- };
-
- static const struct resource axp22x_pek_resources[] = {
- - DEFINE_RES_IRQ_NAMED(AXP22X_IRQ_PEK_RIS_EDGE, "PEK_DBR"),
- - DEFINE_RES_IRQ_NAMED(AXP22X_IRQ_PEK_FAL_EDGE, "PEK_DBF"),
- + DEFINE_RES_IRQ_NAMED(AXP22X_IRQ_PEK_SHORT, "PEK_DBR"),
- + DEFINE_RES_IRQ_NAMED(AXP22X_IRQ_PEK_LONG, "PEK_DBF"),
- };
-
- static const struct resource axp288_power_button_resources[] = {
- diff --git a/drivers/mfd/sun6i-prcm.c b/drivers/mfd/sun6i-prcm.c
- index ee03db0b8485..a8c833df4f05 100644
- --- a/drivers/mfd/sun6i-prcm.c
- +++ b/drivers/mfd/sun6i-prcm.c
- @@ -12,7 +12,7 @@
- #include <linux/of.h>
-
- #define SUN8I_CODEC_ANALOG_BASE 0x1c0
- -#define SUN8I_CODEC_ANALOG_SIZE 0x4
- +#define SUN8I_CODEC_ANALOG_SIZE 0x10
-
- struct prcm_data {
- int nsubdevs;
|