linux/drivers/platform/x86/barco-p50-gpio.c

// SPDX-License-Identifier: GPL-2.0+

/*
 * Support for EC-connected GPIOs for identify
 * LED/button on Barco P50 board
 *
 * Copyright (C) 2021 Barco NV
 * Author: Santosh Kumar Yadav <[email protected]>
 */

#define pr_fmt(fmt)

#include <linux/delay.h>
#include <linux/dmi.h>
#include <linux/err.h>
#include <linux/io.h>
#include <linux/kernel.h>
#include <linux/leds.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/gpio_keys.h>
#include <linux/gpio/driver.h>
#include <linux/gpio/machine.h>
#include <linux/input.h>


#define DRIVER_NAME

/* GPIO lines */
#define P50_GPIO_LINE_LED
#define P50_GPIO_LINE_BTN

/* GPIO IO Ports */
#define P50_GPIO_IO_PORT_BASE

#define P50_PORT_DATA
#define P50_PORT_CMD

#define P50_STATUS_OBF
#define P50_STATUS_IBF

#define P50_CMD_READ
#define P50_CMD_WRITE

/* EC mailbox registers */
#define P50_MBOX_REG_CMD
#define P50_MBOX_REG_STATUS
#define P50_MBOX_REG_PARAM
#define P50_MBOX_REG_DATA

#define P50_MBOX_CMD_READ_GPIO
#define P50_MBOX_CMD_WRITE_GPIO
#define P50_MBOX_CMD_CLEAR

#define P50_MBOX_STATUS_SUCCESS

#define P50_MBOX_PARAM_LED
#define P50_MBOX_PARAM_BTN


struct p50_gpio {};

static struct platform_device *gpio_pdev;

static int gpio_params[] =;

static const char * const gpio_names[] =;


static struct gpiod_lookup_table p50_gpio_led_table =;

/* GPIO LEDs */
static struct gpio_led leds[] =;

static struct gpio_led_platform_data leds_pdata =;

/* GPIO keyboard */
static struct gpio_keys_button buttons[] =;

static struct gpio_keys_platform_data keys_pdata =;


/* low level access routines */

static int p50_wait_ec(struct p50_gpio *p50, int mask, int expected)
{}


static int p50_read_mbox_reg(struct p50_gpio *p50, int reg)
{}

static int p50_write_mbox_reg(struct p50_gpio *p50, int reg, int val)
{}


/* mbox routines */

static int p50_wait_mbox_idle(struct p50_gpio *p50)
{}

static int p50_send_mbox_cmd(struct p50_gpio *p50, int cmd, int param, int data)
{}


/* gpio routines */

static int p50_gpio_get_direction(struct gpio_chip *gc, unsigned int offset)
{}

static int p50_gpio_get(struct gpio_chip *gc, unsigned int offset)
{}

static void p50_gpio_set(struct gpio_chip *gc, unsigned int offset, int value)
{}

static int p50_gpio_probe(struct platform_device *pdev)
{}

static void p50_gpio_remove(struct platform_device *pdev)
{}

static struct platform_driver p50_gpio_driver =;

/* Board setup */
static const struct dmi_system_id dmi_ids[] __initconst =;
MODULE_DEVICE_TABLE(dmi, dmi_ids);

static int __init p50_module_init(void)
{}

static void __exit p50_module_exit(void)
{}

module_init();
module_exit(p50_module_exit);

MODULE_AUTHOR();
MODULE_DESCRIPTION();
MODULE_LICENSE();