brintos

brintos / linux-shallow public Read only

0
0
Text · 1.8 KiB · a93468c Raw
87 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * LEDs driver for Soekris net48xx4 *5 * Copyright (C) 2006 Chris Boot <bootc@bootc.net>6 *7 * Based on leds-ams-delta.c8 */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	2022 23static struct platform_device *pdev;24 25static 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 31static struct led_classdev net48xx_error_led = {32	.name		= "net48xx::error",33	.brightness_set	= net48xx_error_led_set,34	.flags		= LED_CORE_SUSPENDRESUME,35};36 37static int net48xx_led_probe(struct platform_device *pdev)38{39	return devm_led_classdev_register(&pdev->dev, &net48xx_error_led);40}41 42static struct platform_driver net48xx_led_driver = {43	.probe		= net48xx_led_probe,44	.driver		= {45		.name		= DRVNAME,46	},47};48 49static 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 70out:71	return ret;72}73 74static void __exit net48xx_led_exit(void)75{76	platform_device_unregister(pdev);77	platform_driver_unregister(&net48xx_led_driver);78}79 80module_init(net48xx_led_init);81module_exit(net48xx_led_exit);82 83MODULE_AUTHOR("Chris Boot <bootc@bootc.net>");84MODULE_DESCRIPTION("Soekris net48xx LED driver");85MODULE_LICENSE("GPL");86 87