summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCaveh Jalali <caveh@chromium.org>2018-07-31 19:30:11 -0700
committerPatrick Georgi <pgeorgi@google.com>2018-11-16 10:02:37 +0000
commit7696290004b6490c7ef8027d7ddf67b163e7dad8 (patch)
treec83d26faa5207e1fa72d324212d9716d5932f0eb /src
parent80fde629cd8257d4844b0800ed8243fb2064d7ea (diff)
downloadcoreboot-7696290004b6490c7ef8027d7ddf67b163e7dad8.tar.xz
mb/google/poppy/variant/atlas: I2C: run trackpad at 1MHz
With this change, coreboot thinks we're running at 1MHz: DW I2C bus 2 at 0xd1133000 (1000 KHz) Elan eKT3644 IC Specification (trackpad) requires: Low Time larger than 500ns (61 * 8.3ns = 506ns). High Time larger than 260ns (32 * 8.3ns = 265ns), Data Hold_time larger than 0ns. Start Condition Hold time larger than 250ns. Rise/Fall time of less than 120ns. HCNT controls both High Time and Start Condition Hold time. LCNT controls Low Time. SDA_HOLD controls Data Hold Time. P2 Atlas "Rise time" is 90ns and "Fall time" is 32ns and tuned using resistors on the board and must be considered when adjusting any of the parameters since these times are all measured at 30 or 70% of base and peak voltages (0v/1.8v). The eKT3644 requirements are met with LCNT=69, HCNT=33, SDA_HOLD=20 which yields the SCL at around 950KHz - suboptimal but compliant. Lower LCNT or HCNT results in "lost arbitration" errors or not complying with eKT3644 requirements. Verified by gaggery.tsai@intel.corp-partner.google.com. Scope shots posted here: https://b.corp.google.com/issues/78601949#comment177 BUG=b:78601949 BRANCH=none TEST=Farzam provided test points on track pad for SCL/SDA/GND. Waveforms measured with oscilloscope and screen shots attached to bug (comment #177, #155, #100). Operate trackpad/touchscreen Review dmesg (kernel) output for correct speed, parameters, and no errors (e.g. "lost arbitration" or "host controller timeout") Change-Id: Iaf42ba7b8818b7cd9c8dcc657823dac705659d38 Signed-off-by: Caveh Jalali <caveh@chromium.org> Signed-off-by: Grant Grundler <grundler@chromium.org> Tested-by: gaggery.tsai@intel.corp-partner.google.com Tested-by: grundler@chromium.org Reviewed-on: https://review.coreboot.org/29553 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Caveh Jalali <caveh@google.com> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Gaggery Tsai <gaggery.tsai@intel.com>
Diffstat (limited to 'src')
-rw-r--r--src/mainboard/google/poppy/variants/atlas/devicetree.cb14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/mainboard/google/poppy/variants/atlas/devicetree.cb b/src/mainboard/google/poppy/variants/atlas/devicetree.cb
index 66cd1bdb7a..229838f86b 100644
--- a/src/mainboard/google/poppy/variants/atlas/devicetree.cb
+++ b/src/mainboard/google/poppy/variants/atlas/devicetree.cb
@@ -208,14 +208,15 @@ chip soc/intel/skylake
.fall_time_ns = 38,
},
.i2c[2] = {
- .speed = I2C_SPEED_FAST,
+ .speed = I2C_SPEED_FAST_PLUS,
.speed_config[0] = {
- .speed = I2C_SPEED_FAST,
- .scl_lcnt = 186,
- .scl_hcnt = 93,
- .sda_hold = 36,
- },
+ .speed = I2C_SPEED_FAST_PLUS,
+ .scl_lcnt = 69,
+ .scl_hcnt = 33,
+ .sda_hold = 20,
+ }
},
+
.i2c[3] = {
.speed = I2C_SPEED_FAST,
.rise_time_ns = 98,
@@ -296,6 +297,7 @@ chip soc/intel/skylake
register "generic.hid" = ""ACPI0C50""
register "generic.desc" = ""ELAN Touchpad""
register "generic.irq" = "ACPI_IRQ_EDGE_LOW(GPP_A19_IRQ)"
+ register "generic.speed" = "I2C_SPEED_FAST_PLUS"
register "generic.wake" = "GPE0_DW0_23" # GPP_A23
register "hid_desc_reg_offset" = "0x01"
device i2c 0x15 on end