drivers/i2c: Use I2C HID driver for wacom devices

Wacom I2C driver does the same thing as I2C HID driver, other than
defining macros for Wacom HID. Instead of maintaining two separate
drivers providing the same functionality, update all wacom devices to
use generic I2C HID driver.

BUG=None
BRANCH=None
TEST=Verified that ACPI nodes for wacom devices are unchanged.

Change-Id: Ibb3226d1f3934f5c3c5d98b939756775d11b792c
Signed-off-by: Furquan Shaikh <furquan@chromium.org>
Reviewed-on: https://review.coreboot.org/18401
Tested-by: build bot (Jenkins)
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
This commit is contained in:
Furquan Shaikh 2017-02-19 01:18:09 -08:00 committed by Furquan Shaikh
parent 658a6dc78d
commit 5360c7ef94
14 changed files with 32 additions and 145 deletions

View File

@ -1,3 +0,0 @@
config DRIVERS_I2C_WACOM
bool
select DRIVERS_I2C_GENERIC

View File

@ -1 +0,0 @@
ramstage-$(CONFIG_DRIVERS_I2C_WACOM) += wacom.c

View File

@ -1,32 +0,0 @@
/*
* 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.
*/
#ifndef __I2C_WACOM_CHIP_H__
#define __I2C_WACOM_CHIP_H__
#include <drivers/i2c/generic/chip.h>
#define WCOM50C1_HID "WCOM50C1"
#define WCOMNTN2_HID "WCOMNTN2"
#define PNP0C50_CID "PNP0C50"
#define WCOM_TS_DESC "WCOM Touchscreen"
#define WCOM_DT_DESC "WCOM Digitizer"
struct drivers_i2c_wacom_config {
struct drivers_i2c_generic_config generic;
uint8_t hid_desc_reg_offset;
};
#endif /* __I2C_WACOM_CHIP_H__ */

View File

@ -1,60 +0,0 @@
/*
* 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)
{
struct drivers_i2c_wacom_config *config = dev->chip_info;
i2c_generic_fill_ssdt(dev, &i2c_wacom_fill_dsm, &config->generic);
}
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
};

View File

@ -6,7 +6,6 @@ config BOARD_SPECIFIC_OPTIONS
select BOARD_ROMSIZE_KB_16384
select DRIVERS_I2C_GENERIC
select DRIVERS_I2C_HID
select DRIVERS_I2C_WACOM
select DRIVERS_PS2_KEYBOARD
select DRIVERS_I2C_MAX98927
select DRIVERS_SPI_ACPI

View File

@ -205,10 +205,9 @@ chip soc/intel/skylake
device pci 14.1 off end # USB xDCI (OTG)
device pci 14.2 on end # Thermal Subsystem
device pci 15.0 on
chip drivers/i2c/wacom
register "generic.hid" = "WCOM50C1_HID"
register "generic.cid" = "PNP0C50_CID"
register "generic.desc" = "WCOM_DT_DESC"
chip drivers/i2c/hid
register "generic.hid" = ""WCOM50C1""
register "generic.desc" = ""WCOM Digitizer""
register "generic.irq" = "IRQ_LEVEL_LOW(GPP_E7_IRQ)"
register "generic.speed" = "I2C_SPEED_FAST_PLUS"
register "hid_desc_reg_offset" = "0x1"

View File

@ -5,7 +5,7 @@ config BOARD_SPECIFIC_OPTIONS
select BOARD_ID_AUTO
select BOARD_ROMSIZE_KB_16384
select DRIVERS_I2C_GENERIC
select DRIVERS_I2C_WACOM
select DRIVERS_I2C_HID
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_LPC
select HAVE_ACPI_RESUME

View File

@ -209,13 +209,10 @@ chip soc/intel/skylake
device pci 15.1 on end # I2C #1
device pci 15.2 on end # I2C #2
device pci 15.3 on
chip drivers/i2c/wacom
register "generic" = "{
.hid = WCOM50C1_HID,
.cid = PNP0C50_CID,
.desc = WCOM_DT_DESC,
.irq = IRQ_LEVEL_LOW(GPP_D1_IRQ),
}"
chip drivers/i2c/hid
register "generic.hid" = ""WCOM50C1""
register "generic.desc" = ""WCOM Digitizer""
register "generic.irq" = "IRQ_LEVEL_LOW(GPP_D1_IRQ)"
register "hid_desc_reg_offset" = "0x1"
device i2c 0x9 on end
end

View File

@ -7,7 +7,6 @@ config BOARD_GOOGLE_BASEBOARD_REEF
select DRIVERS_I2C_DA7219
select DRIVERS_I2C_GENERIC
select DRIVERS_I2C_HID
select DRIVERS_I2C_WACOM
select DRIVERS_PS2_KEYBOARD
select EC_GOOGLE_CHROMEEC
select EC_GOOGLE_CHROMEEC_LPC

View File

@ -196,13 +196,10 @@ chip soc/intel/apollolake
end
end # - I2C 4
device pci 17.1 on
chip drivers/i2c/wacom
register "generic" = "{
.hid = WCOM50C1_HID,
.cid = PNP0C50_CID,
.desc = WCOM_DT_DESC,
.irq = IRQ_LEVEL_LOW(GPIO_13_IRQ),
}"
chip drivers/i2c/hid
register "generic.hid" = ""WCOM50C1""
register "generic.desc" = ""WCOM Digitizer""
register "generic.irq" = "IRQ_LEVEL_LOW(GPIO_13_IRQ)"
register "hid_desc_reg_offset" = "0x1"
device i2c 0x9 on end
end

View File

@ -181,20 +181,17 @@ chip soc/intel/apollolake
end
end # - I2C 2
device pci 16.3 on
chip drivers/i2c/wacom
register "generic" = "{
.hid = WCOMNTN2_HID,
.cid = PNP0C50_CID,
.desc = WCOM_TS_DESC,
.irq = IRQ_LEVEL_LOW(GPIO_21_IRQ),
.probed = 1,
.reset_gpio = ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_36),
.reset_delay_ms = 20,
.enable_gpio = ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_152),
.enable_delay_ms = 1,
.has_power_resource = 1,
.disable_gpio_export_in_crs = 1,
}"
chip drivers/i2c/hid
register "generic.hid" = ""WCOMNTN2""
register "generic.desc" = ""WCOM Touchscreen""
register "generic.irq" = "IRQ_LEVEL_LOW(GPIO_21_IRQ)"
register "generic.probed" = "1"
register "generic.reset_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_36)"
register "generic.reset_delay_ms" = "20"
register "generic.enable_gpio" = "ACPI_GPIO_OUTPUT_ACTIVE_HIGH(GPIO_152)"
register "generic.enable_delay_ms" = "1"
register "generic.has_power_resource" = "1"
register "generic.disable_gpio_export_in_crs" = "1"
register "hid_desc_reg_offset" = "0x1"
device i2c 0xA on end
end

View File

@ -210,13 +210,10 @@ chip soc/intel/apollolake
end
end # - I2C 4
device pci 17.1 on
chip drivers/i2c/wacom
register "generic" = "{
.hid = WCOM50C1_HID,
.cid = PNP0C50_CID,
.desc = WCOM_DT_DESC,
.irq = IRQ_LEVEL_LOW(GPIO_13_IRQ),
}"
chip drivers/i2c/hid
register "generic.hid" = ""WCOM50C1""
register "generic.desc" = ""WCOM Digitizer""
register "generic.irq" = "IRQ_LEVEL_LOW(GPIO_13_IRQ)"
register "hid_desc_reg_offset" = "0x1"
device i2c 0x9 on end
end

View File

@ -4,6 +4,7 @@ config BOARD_SPECIFIC_OPTIONS
def_bool y
select SOC_INTEL_APOLLOLAKE
select BOARD_ROMSIZE_KB_16384
select DRIVERS_I2C_HID
select HAVE_ACPI_TABLES
# select HAVE_INTEL_FIRMWARE
# select HAVE_ME_BIN

View File

@ -196,13 +196,10 @@ chip soc/intel/apollolake
end
end # - I2C 4
device pci 17.1 on
chip drivers/i2c/wacom
register "generic" = "{
.hid = WCOM50C1_HID,
.cid = PNP0C50_CID,
.desc = WCOM_DT_DESC,
.irq = IRQ_LEVEL_LOW(GPIO_13_IRQ),
}"
chip drivers/i2c/hid
register "generic.hid" = ""WCOM50C1""
register "generic.desc" = ""WCOM Digitizer""
register "generic.irq" = "IRQ_LEVEL_LOW(GPIO_13_IRQ)"
register "hid_desc_reg_offset" = "0x1"
device i2c 0x9 on end
end