mb/system76: Configure I2C HID IRQs as level triggered
Per Microsoft's spec for HID over I2C [1], interrupts must be level triggered. Switch GPIOs and the devicetree config to conform to this. Touchpad and multitouch gestures were already working, so no behavior changes are observed in normal use. [1]: http://download.microsoft.com/download/7/d/d/7dd44bb7-2a7a-4505-ac1c-7227d3d96d5b/hid-over-i2c-protocol-spec-v1-0.docx Change-Id: I485e616ae00e10bc3620ff3fa1fc1e903653c5cc Signed-off-by: Tim Crawford <tcrawford@system76.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/61343 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Michael Niewöhner <foss@mniewoehner.de> Reviewed-by: Felix Singer <felixsinger@posteo.net>
This commit is contained in:
parent
fe99cbb378
commit
aa8b1f8b38
|
@ -49,7 +49,7 @@ static const struct pad_config gpio_table[] = {
|
||||||
PAD_NC(GPP_B1, NONE),
|
PAD_NC(GPP_B1, NONE),
|
||||||
PAD_NC(GPP_B2, NONE),
|
PAD_NC(GPP_B2, NONE),
|
||||||
// PCH_GPP_B3 (touchpad interrupt)
|
// PCH_GPP_B3 (touchpad interrupt)
|
||||||
PAD_CFG_GPI_APIC(GPP_B3, NONE, PLTRST, EDGE_SINGLE, INVERT),
|
PAD_CFG_GPI_APIC_LOW(GPP_B3, NONE, PLTRST),
|
||||||
PAD_NC(GPP_B4, NONE),
|
PAD_NC(GPP_B4, NONE),
|
||||||
PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1), // TBT_CLKREQ#
|
PAD_CFG_NF(GPP_B5, NONE, DEEP, NF1), // TBT_CLKREQ#
|
||||||
PAD_NC(GPP_B6, NONE),
|
PAD_NC(GPP_B6, NONE),
|
||||||
|
|
|
@ -11,7 +11,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_B3_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_B3_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
|
@ -33,7 +33,7 @@ static const struct pad_config gpio_table[] = {
|
||||||
PAD_NC(GPP_A11, UP_20K),
|
PAD_NC(GPP_A11, UP_20K),
|
||||||
PAD_NC(GPP_A12, NONE),
|
PAD_NC(GPP_A12, NONE),
|
||||||
PAD_CFG_NF(GPP_A13, NONE, DEEP, NF1), // SUSWARN#
|
PAD_CFG_NF(GPP_A13, NONE, DEEP, NF1), // SUSWARN#
|
||||||
PAD_CFG_GPI_APIC(GPP_A14, NONE, PLTRST, EDGE_SINGLE, INVERT), // TCHPD_INT#
|
PAD_CFG_GPI_APIC_LOW(GPP_A14, NONE, PLTRST), // TCHPD_INT#
|
||||||
PAD_CFG_NF(GPP_A15, UP_20K, DEEP, NF1), // SUS_PW_ACK#
|
PAD_CFG_NF(GPP_A15, UP_20K, DEEP, NF1), // SUS_PW_ACK#
|
||||||
PAD_NC(GPP_A16, DN_20K),
|
PAD_NC(GPP_A16, DN_20K),
|
||||||
PAD_CFG_GPI(GPP_A17, NONE, DEEP), // AMP_TYPE_DET
|
PAD_CFG_GPI(GPP_A17, NONE, DEEP), // AMP_TYPE_DET
|
||||||
|
|
|
@ -12,7 +12,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_A14_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_A14_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
|
@ -105,7 +105,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_E7_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_E7_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
|
@ -95,7 +95,7 @@ static const struct pad_config gpio_table[] = {
|
||||||
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), // UART2_RXD
|
PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), // UART2_RXD
|
||||||
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
||||||
PAD_NC(GPP_C22, NONE),
|
PAD_NC(GPP_C22, NONE),
|
||||||
PAD_CFG_GPI_APIC_EDGE_LOW(GPP_C23, NONE, PLTRST), // NC on galp4, TP_ATTN# on darp6
|
PAD_CFG_GPI_APIC_LOW(GPP_C23, NONE, PLTRST), // NC on galp4, TP_ATTN# on darp6
|
||||||
|
|
||||||
/* ------- GPIO Group D ------- */
|
/* ------- GPIO Group D ------- */
|
||||||
PAD_NC(GPP_D0, NONE),
|
PAD_NC(GPP_D0, NONE),
|
||||||
|
|
|
@ -5,7 +5,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_C23_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_C23_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
|
@ -13,7 +13,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_E7_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_E7_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
|
@ -101,7 +101,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_E7_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_E7_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
|
@ -133,7 +133,7 @@ static const struct pad_config gpio_table[] = {
|
||||||
PAD_NC(GPP_E4, NONE),
|
PAD_NC(GPP_E4, NONE),
|
||||||
PAD_CFG_NF(GPP_E5, NONE, DEEP, NF1), // M2_P1_SATA_DEVSLP
|
PAD_CFG_NF(GPP_E5, NONE, DEEP, NF1), // M2_P1_SATA_DEVSLP
|
||||||
_PAD_CFG_STRUCT(GPP_E6, 0x82040100, 0x0000), // SMI#
|
_PAD_CFG_STRUCT(GPP_E6, 0x82040100, 0x0000), // SMI#
|
||||||
PAD_CFG_GPI_APIC_EDGE_LOW(GPP_E7, NONE, PLTRST), // TP_ATTN#
|
PAD_CFG_GPI_APIC_LOW(GPP_E7, NONE, PLTRST), // TP_ATTN#
|
||||||
PAD_CFG_NF(GPP_E8, NONE, DEEP, NF1), // PCH_SATAHDD_LED#
|
PAD_CFG_NF(GPP_E8, NONE, DEEP, NF1), // PCH_SATAHDD_LED#
|
||||||
PAD_NC(GPP_E9, NONE), // USB_OC0# (test point)
|
PAD_NC(GPP_E9, NONE), // USB_OC0# (test point)
|
||||||
PAD_NC(GPP_E10, NONE), // USB_OC1# (test point)
|
PAD_NC(GPP_E10, NONE), // USB_OC1# (test point)
|
||||||
|
|
|
@ -95,7 +95,7 @@ static const struct pad_config gpio_table[] = {
|
||||||
//PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), // UART2_RXD
|
//PAD_CFG_NF(GPP_C20, NONE, DEEP, NF1), // UART2_RXD
|
||||||
//PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
//PAD_CFG_NF(GPP_C21, NONE, DEEP, NF1), // UART2_TXD
|
||||||
PAD_NC(GPP_C22, NONE),
|
PAD_NC(GPP_C22, NONE),
|
||||||
PAD_CFG_GPI_APIC_EDGE_LOW(GPP_C23, NONE, PLTRST), // NC on galp3-c, TP_ATTN# on darp5
|
PAD_CFG_GPI_APIC_LOW(GPP_C23, NONE, PLTRST), // NC on galp3-c, TP_ATTN# on darp5
|
||||||
|
|
||||||
/* ------- GPIO Group GPP_D ------- */
|
/* ------- GPIO Group GPP_D ------- */
|
||||||
PAD_NC(GPP_D0, NONE),
|
PAD_NC(GPP_D0, NONE),
|
||||||
|
|
|
@ -5,7 +5,7 @@ chip soc/intel/cannonlake
|
||||||
chip drivers/i2c/hid
|
chip drivers/i2c/hid
|
||||||
register "generic.hid" = ""PNP0C50""
|
register "generic.hid" = ""PNP0C50""
|
||||||
register "generic.desc" = ""Synaptics Touchpad""
|
register "generic.desc" = ""Synaptics Touchpad""
|
||||||
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_C23_IRQ)"
|
register "generic.irq" = "ACPI_IRQ_LEVEL_LOW(GPP_C23_IRQ)"
|
||||||
register "generic.probed" = "1"
|
register "generic.probed" = "1"
|
||||||
register "hid_desc_reg_offset" = "0x20"
|
register "hid_desc_reg_offset" = "0x20"
|
||||||
device i2c 2c on end
|
device i2c 2c on end
|
||||||
|
|
Loading…
Reference in New Issue