root/drivers/leds/leds-net48xx.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. net48xx_error_led_set
  2. net48xx_led_probe
  3. net48xx_led_init
  4. net48xx_led_exit

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * LEDs driver for Soekris net48xx
   4  *
   5  * Copyright (C) 2006 Chris Boot <bootc@bootc.net>
   6  *
   7  * Based on leds-ams-delta.c
   8  */
   9 
  10 #include <linux/kernel.h>
  11 #include <linux/init.h>
  12 #include <linux/platform_device.h>
  13 #include <linux/leds.h>
  14 #include <linux/err.h>
  15 #include <linux/io.h>
  16 #include <linux/nsc_gpio.h>
  17 #include <linux/scx200_gpio.h>
  18 #include <linux/module.h>
  19 
  20 #define DRVNAME "net48xx-led"
  21 #define NET48XX_ERROR_LED_GPIO  20
  22 
  23 static struct platform_device *pdev;
  24 
  25 static void net48xx_error_led_set(struct led_classdev *led_cdev,
  26                 enum led_brightness value)
  27 {
  28         scx200_gpio_ops.gpio_set(NET48XX_ERROR_LED_GPIO, value ? 1 : 0);
  29 }
  30 
  31 static struct led_classdev net48xx_error_led = {
  32         .name           = "net48xx::error",
  33         .brightness_set = net48xx_error_led_set,
  34         .flags          = LED_CORE_SUSPENDRESUME,
  35 };
  36 
  37 static int net48xx_led_probe(struct platform_device *pdev)
  38 {
  39         return devm_led_classdev_register(&pdev->dev, &net48xx_error_led);
  40 }
  41 
  42 static struct platform_driver net48xx_led_driver = {
  43         .probe          = net48xx_led_probe,
  44         .driver         = {
  45                 .name           = DRVNAME,
  46         },
  47 };
  48 
  49 static int __init net48xx_led_init(void)
  50 {
  51         int ret;
  52 
  53         /* small hack, but scx200_gpio doesn't set .dev if the probe fails */
  54         if (!scx200_gpio_ops.dev) {
  55                 ret = -ENODEV;
  56                 goto out;
  57         }
  58 
  59         ret = platform_driver_register(&net48xx_led_driver);
  60         if (ret < 0)
  61                 goto out;
  62 
  63         pdev = platform_device_register_simple(DRVNAME, -1, NULL, 0);
  64         if (IS_ERR(pdev)) {
  65                 ret = PTR_ERR(pdev);
  66                 platform_driver_unregister(&net48xx_led_driver);
  67                 goto out;
  68         }
  69 
  70 out:
  71         return ret;
  72 }
  73 
  74 static void __exit net48xx_led_exit(void)
  75 {
  76         platform_device_unregister(pdev);
  77         platform_driver_unregister(&net48xx_led_driver);
  78 }
  79 
  80 module_init(net48xx_led_init);
  81 module_exit(net48xx_led_exit);
  82 
  83 MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");
  84 MODULE_DESCRIPTION("Soekris net48xx LED driver");
  85 MODULE_LICENSE("GPL");
  86 

/* [<][>][^][v][top][bottom][index][help] */