brintos

brintos / linux-shallow public Read only

0
0
Text · 1.6 KiB · ef22e1e Raw
68 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Copyright 2006 - Florian Fainelli <florian@openwrt.org>4 *5 * Control the Cobalt Qube/RaQ front LED6 */7#include <linux/io.h>8#include <linux/ioport.h>9#include <linux/leds.h>10#include <linux/module.h>11#include <linux/platform_device.h>12#include <linux/types.h>13 14#define LED_FRONT_LEFT	0x0115#define LED_FRONT_RIGHT	0x0216 17static void __iomem *led_port;18static u8 led_value;19 20static void qube_front_led_set(struct led_classdev *led_cdev,21			       enum led_brightness brightness)22{23	if (brightness)24		led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT;25	else26		led_value = ~(LED_FRONT_LEFT | LED_FRONT_RIGHT);27	writeb(led_value, led_port);28}29 30static struct led_classdev qube_front_led = {31	.name			= "qube::front",32	.brightness		= LED_FULL,33	.brightness_set		= qube_front_led_set,34	.default_trigger	= "default-on",35};36 37static int cobalt_qube_led_probe(struct platform_device *pdev)38{39	struct resource *res;40 41	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);42	if (!res)43		return -EBUSY;44 45	led_port = devm_ioremap(&pdev->dev, res->start, resource_size(res));46	if (!led_port)47		return -ENOMEM;48 49	led_value = LED_FRONT_LEFT | LED_FRONT_RIGHT;50	writeb(led_value, led_port);51 52	return devm_led_classdev_register(&pdev->dev, &qube_front_led);53}54 55static struct platform_driver cobalt_qube_led_driver = {56	.probe	= cobalt_qube_led_probe,57	.driver	= {58		.name	= "cobalt-qube-leds",59	},60};61 62module_platform_driver(cobalt_qube_led_driver);63 64MODULE_LICENSE("GPL");65MODULE_DESCRIPTION("Front LED support for Cobalt Server");66MODULE_AUTHOR("Florian Fainelli <florian@openwrt.org>");67MODULE_ALIAS("platform:cobalt-qube-leds");68