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