cregit-Linux how code gets into the kernel

Release 4.11 drivers/leds/leds-s3c24xx.c

Directory: drivers/leds
/* drivers/leds/leds-s3c24xx.c
 *
 * (c) 2006 Simtec Electronics
 *      http://armlinux.simtec.co.uk/
 *      Ben Dooks <ben@simtec.co.uk>
 *
 * S3C24XX - LEDs GPIO 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.
*/

#include <linux/kernel.h>
#include <linux/platform_device.h>
#include <linux/leds.h>
#include <linux/gpio.h>
#include <linux/slab.h>
#include <linux/module.h>
#include <linux/platform_data/leds-s3c24xx.h>

#include <mach/regs-gpio.h>
#include <plat/gpio-cfg.h>

/* our context */


struct s3c24xx_gpio_led {
	
struct led_classdev		 cdev;
	
struct s3c24xx_led_platdata	*pdata;
};


static inline struct s3c24xx_gpio_led *to_gpio(struct led_classdev *led_cdev) { return container_of(led_cdev, struct s3c24xx_gpio_led, cdev); }

Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks25100.00%1100.00%
Total25100.00%1100.00%


static void s3c24xx_led_set(struct led_classdev *led_cdev, enum led_brightness value) { struct s3c24xx_gpio_led *led = to_gpio(led_cdev); struct s3c24xx_led_platdata *pd = led->pdata; int state = (value ? 1 : 0) ^ (pd->flags & S3C24XX_LEDF_ACTLOW); /* there will be a short delay between setting the output and * going from output to input when using tristate. */ gpio_set_value(pd->gpio, state); if (pd->flags & S3C24XX_LEDF_TRISTATE) { if (value) gpio_direction_output(pd->gpio, state); else gpio_direction_input(pd->gpio); } }

Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks6670.21%150.00%
Sylwester Nawrocki2829.79%150.00%
Total94100.00%2100.00%


static int s3c24xx_led_probe(struct platform_device *dev) { struct s3c24xx_led_platdata *pdata = dev_get_platdata(&dev->dev); struct s3c24xx_gpio_led *led; int ret; led = devm_kzalloc(&dev->dev, sizeof(struct s3c24xx_gpio_led), GFP_KERNEL); if (!led) return -ENOMEM; led->cdev.brightness_set = s3c24xx_led_set; led->cdev.default_trigger = pdata->def_trigger; led->cdev.name = pdata->name; led->cdev.flags |= LED_CORE_SUSPENDRESUME; led->pdata = pdata; ret = devm_gpio_request(&dev->dev, pdata->gpio, "S3C24XX_LED"); if (ret < 0) return ret; /* no point in having a pull-up if we are always driving */ s3c_gpio_setpull(pdata->gpio, S3C_GPIO_PULL_NONE); if (pdata->flags & S3C24XX_LEDF_TRISTATE) gpio_direction_input(pdata->gpio); else gpio_direction_output(pdata->gpio, pdata->flags & S3C24XX_LEDF_ACTLOW ? 1 : 0); /* register our new led device */ ret = devm_led_classdev_register(&dev->dev, &led->cdev); if (ret < 0) dev_err(&dev->dev, "led_classdev_register failed\n"); return ret; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks14169.12%110.00%
Sylwester Nawrocki3919.12%220.00%
Richard Purdie83.92%110.00%
Devendra Naga73.43%220.00%
Jingoo Han41.96%110.00%
Zhenwen Xu31.47%110.00%
Amitoj Kaur Chawla10.49%110.00%
Xiubo Li10.49%110.00%
Total204100.00%10100.00%

static struct platform_driver s3c24xx_led_driver = { .probe = s3c24xx_led_probe, .driver = { .name = "s3c24xx_led", }, }; module_platform_driver(s3c24xx_led_driver); MODULE_AUTHOR("Ben Dooks <ben@simtec.co.uk>"); MODULE_DESCRIPTION("S3C24XX LED driver"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:s3c24xx_led");

Overall Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks30674.09%211.11%
Sylwester Nawrocki6716.22%211.11%
Richard Purdie81.94%15.56%
Devendra Naga71.69%211.11%
Kay Sievers51.21%15.56%
Jingoo Han40.97%15.56%
Zhenwen Xu30.73%15.56%
Tejun Heo30.73%15.56%
Paul Gortmaker30.73%15.56%
Axel Lin20.48%15.56%
Tushar Behera10.24%15.56%
Amitoj Kaur Chawla10.24%15.56%
Xiubo Li10.24%15.56%
Russell King10.24%15.56%
Sachin Kamat10.24%15.56%
Total413100.00%18100.00%
Directory: drivers/leds
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.