brintos

brintos / linux-shallow public Read only

0
0
Text · 2.3 KiB · 726c186 Raw
68 lines · c
1// SPDX-License-Identifier: GPL-2.02/*3 * Siemens SIMATIC IPC driver for GPIO based LEDs4 *5 * Copyright (c) Siemens AG, 20236 *7 * Author:8 *  Henning Schild <henning.schild@siemens.com>9 */10 11#include <linux/gpio/machine.h>12#include <linux/gpio/consumer.h>13#include <linux/leds.h>14#include <linux/module.h>15#include <linux/platform_device.h>16#include <linux/platform_data/x86/simatic-ipc-base.h>17 18#include "simatic-ipc-leds-gpio.h"19 20static struct gpiod_lookup_table simatic_ipc_led_gpio_table = {21	.dev_id = "leds-gpio",22	.table = {23		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 52, NULL, 0, GPIO_ACTIVE_LOW),24		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 53, NULL, 1, GPIO_ACTIVE_LOW),25		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 57, NULL, 2, GPIO_ACTIVE_LOW),26		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 58, NULL, 3, GPIO_ACTIVE_LOW),27		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 60, NULL, 4, GPIO_ACTIVE_LOW),28		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 51, NULL, 5, GPIO_ACTIVE_LOW),29		{} /* Terminating entry */30	},31};32 33static struct gpiod_lookup_table simatic_ipc_led_gpio_table_extra = {34	.dev_id = NULL, /* Filled during initialization */35	.table = {36		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 56, NULL, 6, GPIO_ACTIVE_LOW),37		GPIO_LOOKUP_IDX("apollolake-pinctrl.0", 59, NULL, 7, GPIO_ACTIVE_HIGH),38		{} /* Terminating entry */39	},40};41 42static int simatic_ipc_leds_gpio_apollolake_probe(struct platform_device *pdev)43{44	return simatic_ipc_leds_gpio_probe(pdev, &simatic_ipc_led_gpio_table,45					   &simatic_ipc_led_gpio_table_extra);46}47 48static void simatic_ipc_leds_gpio_apollolake_remove(struct platform_device *pdev)49{50	simatic_ipc_leds_gpio_remove(pdev, &simatic_ipc_led_gpio_table,51				     &simatic_ipc_led_gpio_table_extra);52}53 54static struct platform_driver simatic_ipc_led_gpio_apollolake_driver = {55	.probe = simatic_ipc_leds_gpio_apollolake_probe,56	.remove_new = simatic_ipc_leds_gpio_apollolake_remove,57	.driver = {58		.name = KBUILD_MODNAME,59	},60};61module_platform_driver(simatic_ipc_led_gpio_apollolake_driver);62 63MODULE_DESCRIPTION("LED driver for Siemens Simatic IPCs based on Intel Apollo Lake GPIO");64MODULE_LICENSE("GPL v2");65MODULE_ALIAS("platform:" KBUILD_MODNAME);66MODULE_SOFTDEP("pre: simatic-ipc-leds-gpio-core platform:apollolake-pinctrl");67MODULE_AUTHOR("Henning Schild <henning.schild@siemens.com>");68