diff options
author | Furquan Shaikh <furquan@chromium.org> | 2016-11-09 10:52:12 -0800 |
---|---|---|
committer | Furquan Shaikh <furquan@google.com> | 2016-11-10 20:40:06 +0100 |
commit | 73edd2b7c07fb8ad5455086f126c079734a904b7 (patch) | |
tree | 806718e89aa04e286cf99b107462fc72403a0a00 /src/drivers/i2c/wacom/wacom.c | |
parent | 5a08fb2203125b719eeb14852f12aeba50798df4 (diff) |
drivers/i2c/wacom: Make the driver more generic
Wacom I2C driver can be used by devices other than
touchscreen. e.g. digitizer. So there is no need to name the driver
with touchscreen specific attributes. Only a separate descriptor name
is required that needs to be set by mainboard correctly.
BUG=chrome-os-partner:56246
BRANCH=None
TEST=Compiles successfully.
Change-Id: I0d32a4adae477373b3f4c5f3abbe188860701194
Signed-off-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: https://review.coreboot.org/17341
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Diffstat (limited to 'src/drivers/i2c/wacom/wacom.c')
-rw-r--r-- | src/drivers/i2c/wacom/wacom.c | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/drivers/i2c/wacom/wacom.c b/src/drivers/i2c/wacom/wacom.c new file mode 100644 index 0000000000..c54194fc96 --- /dev/null +++ b/src/drivers/i2c/wacom/wacom.c @@ -0,0 +1,59 @@ +/* + * This file is part of the coreboot project. + * + * Copyright 2016 Google Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include <arch/acpigen_dsm.h> +#include <device/device.h> +#include <stdint.h> +#include "chip.h" + +static void i2c_wacom_fill_dsm(struct device *dev) +{ + struct drivers_i2c_wacom_config *config = dev->chip_info; + struct dsm_i2c_hid_config dsm_config = { + .hid_desc_reg_offset = config->hid_desc_reg_offset, + }; + + acpigen_write_dsm_i2c_hid(&dsm_config); +} + +static void i2c_wacom_fill_ssdt_generator(struct device *dev) +{ + i2c_generic_fill_ssdt(dev, &i2c_wacom_fill_dsm); +} + +static const char *i2c_wacom_acpi_name(struct device *dev) +{ + return "WCOM"; +} + +static struct device_operations i2c_wacom_ops = { + .read_resources = DEVICE_NOOP, + .set_resources = DEVICE_NOOP, + .enable_resources = DEVICE_NOOP, +#if IS_ENABLED(CONFIG_HAVE_ACPI_TABLES) + .acpi_name = &i2c_wacom_acpi_name, + .acpi_fill_ssdt_generator = &i2c_wacom_fill_ssdt_generator, +#endif +}; + +static void i2c_wacom_enable(struct device *dev) +{ + dev->ops = &i2c_wacom_ops; +} + +struct chip_operations drivers_i2c_wacom_ops = { + CHIP_NAME("Wacom I2C Device") + .enable_dev = &i2c_wacom_enable +}; |