Commit Graph

6378 Commits

Author SHA1 Message Date
Vadim Bendebury
cfbdf96086 usb_updater: use same endian conversion functions
This is just a clean up patch, unifying all cases where endian
conversions are used in the usb updater source code.

BRANCH=none
BUG=none
TEST=usb update of cr50 is still possible on gru (which uses the code
     being changed).

Change-Id: I362e9762493854b4fdbb9ec15c2cb363003f258a
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/414443
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
2016-11-28 20:53:43 -08:00
james_chao
0f23c61fac twinkie: fix the compile error when set CONFIG_USBC_SNIFFER_HEADER_V2
If set the CONFIG_USBC_SNIFFER_HEADER_V2, the twinkie can't compile
with hook_call_deferred error

BUG=none
BRANCH=none
TEST=set CONFIG_USBC_SNIFFER_HEADER_V2, build twinkie

Change-Id: Idff3a0b6c1ff012ace40f97bf9193fb04ec10794
Signed-off-by: james_chao <james_chao@asus.com>
Reviewed-on: https://chromium-review.googlesource.com/414730
Commit-Ready: BoChao Jhan <james_chao@asus.com>
Tested-by: BoChao Jhan <james_chao@asus.com>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-28 08:31:40 -08:00
Vijay Hiremath
31e1ee1955 reef: BD9995X: Suspend DC-DC converter when discharging on AC
When the battery is fully charged or not charging, upon removal of
the AC, discharge takes long time. To overcome this issue suspend
the DC-DC converter when discharging on AC.

BUG=chrome-os-partner:58969
BRANCH=none
TEST=Manually tested on reef. Discharge is in the permissible range.
     'chgstate' console command prints correct values.

Change-Id: I64afa992e50b6e18daf43edf237fde8cf658a8a2
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/413153
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-28 01:01:16 -08:00
Bruce
ba50aab904 pyro/snappy: Support keyboard factory scanning
Add keyboard factory scanning tool.

BUG=none
BRANCH=none
TEST=check this tool work normal

Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Change-Id: Ifd6aa5c03ce668c4a44a5685fa721af11eb7a84e
Reviewed-on: https://chromium-review.googlesource.com/413764
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-27 22:00:51 -08:00
Bruce
09f2702066 pyro/snappy: add a pull down to KBD_KSO2 during hibernate
Cr50 has an internal pull down. This change changes the PULL_UP on KSO2
to a PULL_DOWN to match Cr50.

BUG=none
BRANCH=none
TEST=make buildall

Change-Id: I0c25aebc727bf6c2015c3037305f3bd2f22efd20
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/414709
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-27 22:00:47 -08:00
Bruce
a9e1b4d093 pyro/snappy: Enable interrupt for BMI160
This patch enables an interrupt handler for BMI160. This will improve
response time of the motion sense task.

BUG=None
BRANCH=none
TEST=make buildall

Change-Id: Ibf5f0182273d076ed5f04156c680cd5b2f420306
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/414828
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-27 22:00:43 -08:00
Vadim Bendebury
b3a9852122 Revert "ec: Improve efficiency of host command dispatcher"
This reverts commit c459c8278e 
as the fix is not straightforwad, some host command codes in 
private repos are expressed using C preprecessor which 
breaks the assumption of this patch that all host commands 
are expressed as four digit hex numbers.

Change-Id: I922de9ae8dbab6eef048463c5c09b1f338152083
Reviewed-on: https://chromium-review.googlesource.com/414492
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
Commit-Queue: Vadim Bendebury <vbendeb@chromium.org>
Tested-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-26 01:29:24 +00:00
Bill Richardson
1ece199078 Cr50: Enhance the console unlock warning message
Because the virtual dev-mode switch is stored in the TPM, when we erase
the TPM memory prior to unlocking the Cr50 console on reboot the system
reinitializes itself in normal mode. This is by design (Chromebooks
should fail into a more-secure state when possible), but it can be
unexpected.

This adds some extra caution to the unlock warning message, so that
owners who are fiddling with it for the first time aren't unpleasantly
surprised by losing all their work.

BUG=chrome-os-partner:57407
BRANCH=none
TEST=make buildall; test on Reef

From the Cr50 console, run

  lock on
  lock off

Observe the new, scarier warning.

Change-Id: I6fd1248a5a4c131fa107a902a4539fa73f2308f6
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/414387
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-23 18:06:24 -08:00
Sam Hurst
c459c8278e ec: Improve efficiency of host command dispatcher
Use binary search in host command lookup dispatcher

BUG=chrome-os-partner:570895
TEST=manual testing on kevin
      - Kevin boots
      - ectool hello
      make buildall -j
      Verify *.smap hcmds section is sorted:
         100bca94 R __hcmds
         100bca94 R __host_cmd_0x0000
         100bcaa0 R __host_cmd_0x0001
         100bcaac R __host_cmd_0x0002
         100bcab8 R __host_cmd_0x0003
         100bcac4 R __host_cmd_0x0004
         100bcad0 R __host_cmd_0x0005
         100bcadc R __host_cmd_0x0006
         100bcae8 R __host_cmd_0x0007
         100bcaf4 R __host_cmd_0x0008
         100bcb00 R __host_cmd_0x0009
         100bcb0c R __host_cmd_0x000a
         100bcb18 R __host_cmd_0x000b
         100bcb24 R __host_cmd_0x000d
         100bcb30 R __host_cmd_0x0010
         100bcb3c R __host_cmd_0x0011
         100bcb48 R __host_cmd_0x0012
         100bcb54 R __host_cmd_0x0013
         100bcb60 R __host_cmd_0x0015
         100bcb6c R __host_cmd_0x0016
         100bcb78 R __host_cmd_0x0017
         100bcb84 R __host_cmd_0x0025
         100bcb90 R __host_cmd_0x0026
         100bcb9c R __host_cmd_0x0029
         100bcba8 R __host_cmd_0x002a
         100bcbb4 R __host_cmd_0x002b
         100bcbc0 R __host_cmd_0x002c
         100bcbcc R __host_cmd_0x0044
         100bcbd8 R __host_cmd_0x0045
         100bcbe4 R __host_cmd_0x0046
         100bcbf0 R __host_cmd_0x0047
         100bcbfc R __host_cmd_0x0061
         100bcc08 R __host_cmd_0x0062
         100bcc14 R __host_cmd_0x0064
         100bcc20 R __host_cmd_0x0065
         100bcc2c R __host_cmd_0x0067
         100bcc38 R __host_cmd_0x0087
         100bcc44 R __host_cmd_0x008c
         100bcc50 R __host_cmd_0x008d
         100bcc5c R __host_cmd_0x008f
         100bcc68 R __host_cmd_0x0092
         100bcc74 R __host_cmd_0x0093
         100bcc80 R __host_cmd_0x0096
         100bcc8c R __host_cmd_0x0097
         100bcc98 R __host_cmd_0x0098
         100bcca4 R __host_cmd_0x0099
         100bccb0 R __host_cmd_0x009e
         100bccbc R __host_cmd_0x00a0
         100bccc8 R __host_cmd_0x00a1
         100bccd4 R __host_cmd_0x00a8
         100bcce0 R __host_cmd_0x00a9
         100bccec R __host_cmd_0x00b6
         100bccf8 R __host_cmd_0x00b7
         100bcd04 R __host_cmd_0x00d2
         100bcd10 R __host_cmd_0x00d3
         100bcd1c R __host_cmd_0x00db
         100bcd28 R __host_cmd_0x0101
         100bcd34 R __host_cmd_0x0102
         100bcd40 R __host_cmd_0x0103
         100bcd4c R __host_cmd_0x0104
         100bcd58 R __host_cmd_0x0110
         100bcd64 R __host_cmd_0x0111
         100bcd70 R __host_cmd_0x0112
         100bcd7c R __host_cmd_0x0113
         100bcd88 R __host_cmd_0x0114
         100bcd94 R __host_cmd_0x0115
         100bcda0 R __host_cmd_0x0116
         100bcdac R __host_cmd_0x0117
         100bcdb8 R __host_cmd_0x0118
         100bcdc4 R __host_cmd_0x011a
         100bcdd0 R __evt_src_EC_MKBP_EVENT_KEY_MATRIX
         100bcdd0 R __hcmds_end
BRANCH=none

Change-Id: Ideb9951b318763f71915e2c4e5052f4b4bfab173
Reviewed-on: https://chromium-review.googlesource.com/405528
Commit-Ready: Sam Hurst <shurst@google.com>
Tested-by: Sam Hurst <shurst@google.com>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2016-11-23 15:36:00 -08:00
Daisuke Nojiri
e4609af63c Reef: Enable interrupt for BMI160
This patch enables an interrupt handler for BMI160. This will improve
response time of the motion sense task.

BUG=None
BRANCH=none
TEST=Install and run AIDA64 from Playstore. Wiggle Reef DVT. Verify
'CrosEC Gyroscope' readings change.

Change-Id: Ie8dacb51795fa194840817d833cc6356beb01c8f
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/413079
2016-11-22 23:35:13 -08:00
Nicolas Boichat
d3480636e8 hammer: Add support for USB HID touchpad
Add another endpoint, to be driven by the USB HID touchpad driver.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: I0fd62ceb233aa13e0af61f6ee6a0c0c9fc1c4b52
Reviewed-on: https://chromium-review.googlesource.com/410961
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-22 18:36:40 -08:00
Nicolas Boichat
13f8bb01de driver/touchpad_elan: Report events to USB HID touchpad
Pass reported events to the USB HID touchpad driver.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: I234be1a1db8526e615acdd13c5d4dae40be5bdff
Reviewed-on: https://chromium-review.googlesource.com/410960
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-22 18:36:39 -08:00
Nicolas Boichat
1b682dd05b chip/stm32/usb_hid: Add USB HID touchpad driver
This describes a 5-finger touchpad. The physical/logical dimensions
of the trackpad are hardcoded for the time being.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: I04a0833a28c013395974104ebdd6fcb29e5d6680
Reviewed-on: https://chromium-review.googlesource.com/407742
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-22 18:36:37 -08:00
Nicolas Boichat
67473cb5b4 chip/stm32/usb: Allow interface handler to reply with more than 64 bytes
For example, when a HID descriptor is longer than 64 bytes, we need
to split it in multiple packets.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make buildall -j
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: I25a05eabaf9413e332fe3cd70695a0d53639713d
Reviewed-on: https://chromium-review.googlesource.com/409316
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-22 18:36:36 -08:00
Manoj Gupta
0e4776ec28 Fix EC build for latest llvm for elm board
Mark host command structures as aligned for elm board.
Without marking as aligned, llvm was correctly complaining about
taking address of packed member.

util/ectool.c:1158 error: taking address of packed member 'size' of
class or structure 'ec_params_usb_pd_fw_update' may result in an
unaligned pointer value [-Werror,-Waddress-of-packed-member]

BRANCH=none
BUG=chromium:665240
TEST=Builds now

Change-Id: Ic4a2e81f6af8ef2a906d6ac7aca87ea6d00fe318
Reviewed-on: https://chromium-review.googlesource.com/413108
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-22 14:52:55 -08:00
Daisuke Nojiri
79251ee917 Reef: Disable keyboard and trackpad in tablet mode
Enabling/Dislabling keyboard and touchpad is required to prevent EC
from waking up the system from S3 in tablet mode.

This change disables the keyboard and the trackpad when the lid goes
beyond 180 degree.

Keyboard and touchpad are also enabled/disabled by the tablet switch.
When the lid reaches 360 position, keyboard and touchpad are disabled.
And they stay disabled as long as the lid stays at 360 position.
This prevents keyboard and touchpad from turning on by the (faulty) lid
angle calculation.

BUG=chrome-os-partner:58792
BRANCH=none
TEST=Keyboard and trackpad are disabled when the lid goes beyond 180
and re-enabled when it's smaller than 180. Keyboard and trackpad are
disabled when the lid goes to 360 degree and the system doesn't wake
up by a keypress.

Change-Id: I48c04bd576f457a899dfdf9b4718d73b59419cbe
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/411395
2016-11-22 14:52:44 -08:00
Nicolas Boichat
526adbe531 hammer: Add keyscan task
This scans the keyboard matrix, and reports events. Pin layout
is temporary.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: Ifec7d1bd0223d4653c40b36e068d5d082d16284f
Reviewed-on: https://chromium-review.googlesource.com/411607
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-22 14:52:42 -08:00
Nicolas Boichat
f940d4f516 chip/stm32/usb_hid_keyboard: Add functions for keyscan
This first cleans up the code:
 - Define report as a structure.
 - Fix USB interval from 40 ms to 32 ms (Linux kernel complains
   otherwise).

Then, this removes the old set_keyboard_report interface, and
replaces it by the interface used by the keyboard scanner
(i.e. keyboard_state_changed and keyboard_clear_buffer).

This also means we need a keycode table to translate from
row/column to USB HID keycode.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make buildall -j
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer
     With evtest and "hid 0-7" in console, check that key are
     reported correctly.

Change-Id: I5d526db1568c29c7f28fc5e962e213e44303cc16
Reviewed-on: https://chromium-review.googlesource.com/411571
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-22 14:52:40 -08:00
Vadim Bendebury
481fede513 g: do not consider valid headers with the 'magic' field corrupted
When cr50 rollback happens, the newer header's magic field is set to
zero to prevent it from ever running again.

Take this into consideration when displaying versions of the inactive
RW image.

BRANCH=none
BUG=none

TEST=loaded two versions of the new code on a cr50 and then modified
     the fallback counter to force it to boot the older version and
     reboot a Reef. Once Reef fully boots to chrome os examine CR50
     version report:

     Before:

   > vers
   ...
   RW_A:    0.0.9/DEV/cr50_v1.1.5654-2228b76+
   RW_B:  * 0.0.11/DEV/cr50_v1.1.5654-2228b76+
   ...

    After:

   > vers
   ...
   RW_A:  * 0.0.9/DEV/cr50_v1.1.5654-2228b76+
   RW_B:    Error

Change-Id: I2a9ee13117a0bc91710226cd733c5c484c6d0595
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/413089
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2016-11-22 11:52:10 -08:00
Vijay Hiremath
242d298584 electro/reef: Configure the battery parameters for electro & reef
Electro & Reef use the same board files but have different batteries
hence configure the respective battery parameters for these boards.

BUG=chrome-os-partner:59876
BRANCH=none
TEST=Manually tested on Reef. Boot with/without/battery works.
     cut-off and boot from cut-off works.

Change-Id: I0e4684987133d6bcd9cabab5c5a1ce5b6c5684d2
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/411353
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-22 11:52:06 -08:00
Mulin Chao
50fbfc5040 npcx: hwtimer: Add consecutive reading for ITCNT32
The mux for selecting source clock of ITIM will introduce a delay
and have a chance to make ITIM's source clock and core clock are
asynchronous. We need consecutive reading for ITCNT32 no matter source
clock is APB2 or 32k.

Modified sources:
1. hwtimer.c: Add consecutive reading for ITCNT32

BRANCH=none
BUG=chrome-os-partner:34346,chrome-os-partner:59240
TEST=No time stamp symptoms occur on wheatley for 30 hours.

Change-Id: I8b54e93b320e3ea74fc3d6ea13f0d178f9c449cd
Signed-off-by: Mulin Chao <mlchao@nuvoton.com>
Reviewed-on: https://chromium-review.googlesource.com/412505
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-22 11:51:56 -08:00
li feng
20ca52a9ee ISH: set toolchain in core/minute-ia
When "make buildall" has board which uses core/minute-ia,
CROSS_COMPILE?=i686-pc-linux-gnu- doesn't get set unless
CROSS_COMPILE is not defined; however, it's defined before
this line, and wrong toolchain is used.
Remove "?" to set correct CROSS_COMPILE.

BUG=none
BRANCH=none
TEST='make buildall -j' passed

Change-Id: Ied4a9f93a4d44714c012d3a3e50e4a34f41a7c1f
Signed-off-by: li feng <li1.feng@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/410402
Commit-Ready: Li1 Feng <li1.feng@intel.com>
Tested-by: Li1 Feng <li1.feng@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-21 18:23:03 -08:00
Gwendal Grignou
bcbeb89da1 driver: bmi160: Remove unnecessary delay
Rereading the specification, remove delays when not needed:
- When we move the sensor out of suspend, we need to wait before
using it (BMI160 spec: 2.11.38 Register (0x7E) CMD)
When we do a softreset, we need just need to wait 300us for the
sensor to go in suspend, we will wait only when we change the rate
and enable the sensor.
- The timeout at fifo flush is not needed, it was added for debugging.
- Remove unnecessary printf when initializing the magnetometer.

BUG=chrome-os-partner:59188
BRANCH=glados, reef, strago
TEST=On reef, check the EC boot faster: time spend initializing the
sensors
decreased from 240ms to 133ms

Change-Id: Ia80232da42aa705df819a4988da483a344ffcbb4
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/411964
Commit-Ready: David Hendricks <dhendrix@chromium.org>
Tested-by: David Hendricks <dhendrix@chromium.org>
Reviewed-by: David Hendricks <dhendrix@chromium.org>
2016-11-21 18:22:56 -08:00
Daisuke Nojiri
88685f6a66 Reef: Swap Volume Up and Down GPIOs
The button closer to the hinge is assigned to volume down and
the one closer to the user is assigned to volume up. This change
swaps the GPIO assignments to fix the UX.

BUG=chrome-os-partner:60057
BRANCH=none
TEST=Verified the one closer to the hinge increases the volume and
the one closer to the user descreases the volume.

Change-Id: I3e716da288839c3f5be608fb2d63f277bbde1bc7
Signed-off-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/412981
2016-11-21 16:07:48 -08:00
Mary Ruthven
a6cbc2b868 cr50: remove the pull down on uart2 tx
The pulldown on diob5 is used to detect when servo is detached. It is
unnecessary during deep sleep and when the EC console is active because
servo detection is disabled. Having the pull-down enabled during these
times can increase power consumption.

This change disables the pulldown when the EC console and deep sleep are
enabled. It also disables the diob5 input during deep sleep.

BUG=chrome-os-partner:60020
BRANCH=none
TEST=manual
	Disconnect servo

	Use the suzyq consoles to turn off the AP.

	Enable deep sleep.

	Measure the power consumed by vddiob and make sure it is around
	0.3mW when the EC is in hibernate and when it is not.

Change-Id: I8a653c28800cfbeeb1b4b8598d166846124c6b53
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/412940
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-21 16:07:43 -08:00
Bill Richardson
94843eca31 Cr50: Add sysinfo vendor command
This returns the system information that is needed to determine the
correct signing keys for firmware updates.

BUG=chrome-os-partner:59747
BUG=chrome-os-partner:59705
BRANCH=none
TEST=make buildall; test on Reef

Run the "sysinfo" command on the Cr50 console:

  > sysinfo
  Reset flags: 0x00000800 (hard)
  Chip:        g cr50 B2
  RO keyid:    0x3716ee6b(dev)
  RW keyid:    0xb93d6539(dev)
  DEV_ID:      0x017950ab 0x04656742
  >

Send the raw command bytes from the Reef AP, observe the result:

  # /tmp/trunks_send --raw 80 01 00 00 00 0C 20 00 00 00 00 12
  80010000001C0000000000123716EE6BB93D6539017950AB04656742
  #

The result contains the same information from the console command:

  8001           TPM_ST_NO_SESSIONS
  0000001C       responseSize (28 bytes)
  00000000       RC_SUCCESS
  0012           vendor-specific subcommand
  3716EE6B       RO keyid
  B93D6539       RW keyid
  017950AB       DEV_ID0
  04656742       DEV_ID1

Change-Id: I82de3ebfb3e9be3b707583bc825d2efbcf851c5c
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/413106
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-21 16:07:24 -08:00
Manoj Gupta
2228b76f74 Fix EC build for latest llvm
llvm bug: https://llvm.org/bugs/show_bug.cgi?id=31050 is now fixed
So remove unnecessary pointer casts.

BRANCH=none
BUG=chromium:665240
TEST=Builds now

Change-Id: I5695a9605b5ab47d11f7e9ecacc52f2ba53385e7
Reviewed-on: https://chromium-review.googlesource.com/412880
Commit-Ready: Manoj Gupta <manojgupta@chromium.org>
Tested-by: Manoj Gupta <manojgupta@chromium.org>
Reviewed-by: Yunlian Jiang <yunlian@chromium.org>
2016-11-20 00:24:27 -08:00
Mary Ruthven
63a7db79f4 reef: add a pull down to KBD_KSO2 during hibernate
Cr50 has an internal pull down. This change changes the PULL_UP on KSO2
to a PULL_DOWN to match Cr50.

BUG=chrome-os-partner:60020
BRANCH=none
TEST=poweroff the AP, put the EC in hibernate, and verify when cr50
enters deep sleep it consumes around 0.6mW on vddiom.

Change-Id: I017094c185f616e018f121ac3ffb0521892aafa1
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/412947
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-19 03:18:37 -08:00
Bill Richardson
93388bc758 Cr50: Prevent rebooting when unlocking the console
When the console is unlocked, the function nvmem_wipe_or_reboot()
is called. This holds the EC in reset, clears nvmem, resets the
TPM task, then releases the EC. Nothing about that should cause
the Cr50 to reboot, but it was happening anyway.

This CL addresses several subtle problems.

First, holding the EC in reset invoked the sys_rst_asserted()
interrupt handler, triggering extra (and early) calls to
tpm_reset(). That should wait until after nvmem is cleared, and
only be called once.

Second, the intentional call to tpm_reset() caused the current
(HOOKS) task to wait for the operation to finish, but it didn't
wait long enough (recreating the endorsement certs can take over
a second). When the task_wake_event() returned, a timeout was
indicated in addition to the completion event.

Third, because we checked for the timeout first, we reported an
error even though tpm_reset() completed successfully, just slower
than we expected. We didn't get the timeout event before it
completed because the TPM task runs at a higher priority.

This CL addresses all of these cases, and makes wiping nvmem the
responsibility of the TPM task as well, so that it can do it when it's
ready.

Note that the EC (and thus AP too) will be held in reset while nvmem is
erased.

BUG=chrome-os-partner:59902
BRANCH=none
TEST=make buildall, manual tests

From the Cr50 console, run the "lock on" and "lock off" commands.
Try it both with and without the battery present. Observe that
the Cr50 no longer reboots just because the console unlocks.

Change-Id: I65a342502718acc5b9bda8c6f28dcd27e8f027f7
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/411379
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-19 00:14:24 -08:00
Vijay Hiremath
7f8ad649dd BD9995X/reef/snappy/pyro: Boot from the shipmode battery
Charger BGATE is off on POR hence the voltage to the battery pack is
not applied immediately from the VBUS. To overcome this issue, BGATE
is turned on (CHG_EN) at charger initialization. If the voltage across
VBATT is high but I2C is still failing, battery is booting from ship
mode hence overwrite the battery as not present till I2C on battery
is success and INIT bit is set.

BUG=chrome-os-partner:59308
BRANCH=none
TEST=Reef can boot to OS from shipmode battery.

Change-Id: If1b212612e27fd65a822675a9609f0a8c03d8add
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Signed-off-by: Divya Sasidharan <divya.s.sasidharan@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/411360
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-18 20:07:47 -08:00
Devin Lu
c8557a0e4e pd: add PDO selection for choosing highest voltage
pyro board is using 3S1P battery, it is near 13V.
To avoid the charger entering buck-boost mode, sinking as higher voltage
to get the higher power efficiency.

BRANCH=none
BUG=chrome-os-partner:59276
TEST=plug in pyro's charger (offering 20V@2.25A, 15V@3A, 9V@3A and 5V@3A),
see it selecting 20V as below:
C1 st2
C1 st3
C1 st15
C1 st3
C1 st6
Req C1 [1] 5000mV 3000mA
[6391.078044 New chg p1]
[6391.081020 Ramp reset: st1]
[6391.081664 CL: p1 s0 i500 v20000]
C1 st7
C1 st8
C1 st9
[6391.192437 Ramp reset: st1]
[6391.193339 CL: p1 s0 i3000 v5000]
Req C1 [4] 20000mV 2250mA
C1 st7
C1 st8
C1 st9
[6391.457545 Ramp reset: st1]
[6391.458340 CL: p1 s0 i2250 v20000]
C1 st27
C1 st9
[6392.081252 AC on]
[6392.113477 charge_request(0mV, 0mA)]
[6393.116998 Ramp p1 st5 2250mA 2250mA]

plug in other charger (offering 15V@3A, 12V@3A and 5V@3A),
see it selecting 15V as below:
C1 st2
C1 st3
C1 st15
C1 st3
C1 st6
Req C1 [1] 5000mV 3000mA
[6636.084963 New chg p1]
[6636.087117 Ramp reset: st1]
[6636.087786 CL: p1 s0 i500 v15000]
C1 st7
C1 st8
C1 st9
[6636.165409 Ramp reset: st1]
[6636.166314 CL: p1 s0 i3000 v5000]
Req C1 [3] 15000mV 3000mA
C1 st7
C1 st8
C1 st9
C1 st27
C1 st9
[6637.092559 AC on]
[6637.125043 charge_request(0mV, 0mA)]
[6638.091158 Ramp p1 st5 3000mA 3000mA]
[6639.374815 charge_request(13040mV, 3712mA)]

Change-Id: I74fe4cbd6b9d1b416a94eec3fe944a9b725f0ced
Signed-off-by: Devin Lu <Devin.Lu@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/411621
Commit-Ready: Shawn N <shawnn@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-18 20:07:34 -08:00
Vijay Hiremath
30d2760612 reef: Enable battery learn-mode when battery charging not allowed
When the battery charging is not allowed and charging at high load
audible noise is observed from the BD9995X charger. To prevent this
issue enable the battery-learn mode when battery charging is not
allowed.

This audible noise is related to the fact that in light load (<450mA
being withdrawn from VSYS) the DCDC of the charger operates
intermittently i.e. DCDC switches continuously and then stops to
regulate the output voltage and current, and sometimes to prevent
reverse current from flowing to the input. This causes a slight
voltage ripple on VSYS that falls in the audible noise frequency
(single digit kHz range). This small ripple generates audible noise
in the output ceramic capacitors (caps on VSYS and any input of DCDC
under VSYS).

BUG=chrome-os-partner:56695
BRANCH=none
TEST=When battery charging not allowed, battery is put in battery
     learn-mode & audible noise is not observed.

Change-Id: Ia22779fe4cf70dd9dd4f799a9698264e44c4c7d2
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/412382
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-18 20:07:32 -08:00
Vadim Bendebury
14421571ca g: fix reboot request posting bug
When the host requests the uploader to post a reboot request, the
uploader should exit right away once the request is posted.

BRANCH=none
BUG=chrome-os-partner:59911
TEST=verified that cr50 gets successfully updated from this image to a
     newer one on both reef and gru: the reboot happens under upstart
     control, not by cr50 rebooting on its own.

Change-Id: I9e4a2da686fe512b633daa05c675871e5946926f
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/412348
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
2016-11-18 20:07:23 -08:00
Shawn Nematbakhsh
e97073a20d clock: Fix clock_wait_cycles() asm
The 'cycles' register will be clobbered by our macro, so it must be
specified as an output operand that may also be used as input.

BUG=chrome-os-partner:60000
BRANCH=gru,strago,glados
TEST=Build + burn wheatley, verify alignment exception is not
encountered on boot. Also verify produced assembly is still correct:

100a89a6:       2303            movs    r3, #3
100a89a8:       3b01            subs    r3, #1
100a89aa:       d1fd            bne.n   100a89a8

Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I1be03a006967aed6970dbac5d98a19a31e0b7d49
Reviewed-on: https://chromium-review.googlesource.com/412441
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Mulin Chao <mlchao@nuvoton.com>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Mulin Chao <mlchao@nuvoton.com>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-18 20:07:08 -08:00
Mary Ruthven
7c6d8d40f1 g: fix error rbox debug term override
The KEY_IN is used twice. One of these should be KEY_OUT. This change
fixes it.

BUG=none
BRANCH=none
TEST=make buildall

Change-Id: I923e0e2a1a0c4428a06ab486bf5ad9e49cf3d9b0
Signed-off-by: Mary Ruthven <mruthven@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/412902
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-18 20:07:06 -08:00
Bill Richardson
5d1de6c787 Improve readability for file-scoped variables
File-scoped variables in common/tpm_registers.c must be handled
specially to avoid unexpected behavior when calling tpm_reset().
Enhance the comments and add a couple of macros to help explain
it better.

BUG=none
BRANCH=none
TEST=make buildall; Run on Reef

This is just commenting and code cleanup. No changes in behavior
are expected; none are observed.

Change-Id: If70e56d00642a11df7b5ceb5d5d32c485236f7a8
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/412407
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-18 20:07:05 -08:00
Bruce
c4aa651a21 pyro/snappy: Enable high current on type-A ports by default
BUG=none
BRANCH=none
TEST=make buildall

Change-Id: Iefa74d574e8f6354a9344abaab638a71b8783bfa
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/412240
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-17 16:09:54 -08:00
Archana Patni
b8406119c2 Apollolake: Enter/exit from S0ix based on host commands from kernel
This patch changes the entry/exit model for S0ix from a PCH
SLP_S0 signal based model to a hybrid host event/direct interrupt
model. The kernel will send host events on kernel freeze/thaw exit;
EC will initiate the S0ix entry based on host command and exit via
another host command from kernel.

The assertion of SLP_S0 comes later than HC(suspend) and deasserion
of SLP_S0 comes earlier than HC(resume).
        ________                        ________
SLP_S0          |______________________|
        _____                             ________
HC           |___________________________|

BRANCH=none
BUG=chrome-os-partner:58740
TEST=Build/flash EC and check 'echo freeze > /sys/power/state'
command in OS shell. Verify idle state transitions during display off
and periodic wakes from S0ix do not lead to state transitions in EC.

Change-Id: Ie18c6c2ac8998f59141641567d1d740cd72c2d2e
Signed-off-by: Kyoung Kim <kyoung.il.kim@intel.com>
Signed-off-by: Subramony Sesha <subramony.sesha@intel.com>
Signed-off-by: Divagar Mohandass <divagar.mohandass@intel.com>
Signed-off-by: Archana Patni <archana.patni@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/401072
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Furquan Shaikh <furquan@chromium.org>
2016-11-17 16:09:44 -08:00
Bruce
82aaccad40 pyro/snappy: Support 360 Degree rotation
BUG=none
BRANCH=none
TEST=make buildall

Change-Id: Idcb7a31b66896eab7232ce4d5f4920d5596b7fef
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/411584
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-17 16:09:42 -08:00
Shawn Nematbakhsh
c7574ffbe7 tcpm: fusb302: Mask BC_LVL interrupt when PD is enabled
Avoid needless alerts due to CC lines toggling during PD communication.

BUG=chrome-os-partner:58298
BRANCH=gru
TEST=Manual on kevin. Verify PD communication with Apple USB-C dongle is
functional. Verify Source caps are sent with 100ms-200ms delay. Verify
Rp change on Donette is still detected.

Signed-off-by; Shawn Nematbakhsh <shawnn@chromium.org>

Change-Id: I83fcd1b3235969c8462d23c5159564db2c6a8392
Reviewed-on: https://chromium-review.googlesource.com/409693
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Commit-Queue: Shawn N <shawnn@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
(cherry picked from commit ae9691d0225c78bb183774d585d34de0e7399d7d)
Reviewed-on: https://chromium-review.googlesource.com/412033
Commit-Ready: Shawn N <shawnn@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-17 16:09:37 -08:00
Bruce
a1ec4e2d59 pyro/snappy: Add force wake for PS8751.
If PS8751 goes into low power mode during sysjump, then tcpm_init will
fail since PS8751 is not accessible via I2C, so force it to wake up
during hook_init.

BUG=none
BRANCH=none
TEST=make buildall

Change-Id: I5edfef2ac4524310d4cb5485dec68999bed08210
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/411646
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-17 16:09:35 -08:00
Bruce
342bf53465 pyro/snappy: enable tcpc low power mode
BUG=none
BRANCH=none
TEST=make buildall

Change-Id: I28210f753cb596762facc3f2f3a2bde49d0e40df
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/411604
Commit-Ready: Keith Tzeng <keith.tzeng@quantatw.com>
Tested-by: Keith Tzeng <keith.tzeng@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-17 16:09:30 -08:00
Nicolas Boichat
ff9c5dd0d2 keyboard: Always call keyboard_state_changed
8042 and USB HID keyboard will both use that function. Let's just
make it a no-op in the MKBP case.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make buildall -j

Change-Id: Iaee1bf2c6edff3db28f3db89fc292f9d1064483b
Reviewed-on: https://chromium-review.googlesource.com/411602
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-17 07:08:25 -08:00
Nicolas Boichat
dfc9b86c82 chip/stm32/usb_hid_keyboard: Fix set_keyboard_report race
We always want set_keyboard_report to send the freshest possible
data. For this purpose, we use double-buffering on the USB
endpoint.

When the endpoint is currently busy, we sneak in an address change,
hoping that the hardware will pick it up. There is no guarantee
about which buffer was transferred, so we queue another transfer
anyway. This means that the code will send a duplicate (harmless)
report in that case.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make buildall -j
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: I9d14541b8b05017c1d5051b9a315db381a89dcea
Reviewed-on: https://chromium-review.googlesource.com/411741
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2016-11-17 07:08:23 -08:00
Vincent Palatin
e9584bc6ce reef/pyro/eve/snappy: source 3A on one port
Add a new source policy to provide 3A if there is only one port used
as a source.
Also ensure that the load switch on VBUS when sourcing power is properly
configured to limit the current to 1.5A or 3.0A depending on the case.

Signed-off-by: Vincent Palatin <vpalatin@chromium.org>

BRANCH=none
BUG=chrome-os-partner:56110
TEST=manual: connect the laptop to a type-C sink with Twinkie in between,
without anything else connected on the laptop, see 3A flowing when measuring
with Twinkie ('tw vbus'), plug a dangling C-to-A receptacle dongle on the other
port and see 1.5A flowing through Twinkie.
Force the input current limit on the sink to 3.0A and see the laptop cutting
VBUS.

Change-Id: Ic94ba186fc0648e770c8d13be0f96b23e968f855
Reviewed-on: https://chromium-review.googlesource.com/403851
Commit-Ready: Vincent Palatin <vpalatin@chromium.org>
Tested-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Shawn N <shawnn@chromium.org>
2016-11-17 04:35:32 -08:00
Nicolas Boichat
64f1823a74 chip/stm32/usb_hid: Separate HID keyboard support
In the future, we'd like to have different HID devices on different
endpoints (keyboard, trackpad, etc.), so we'd like to separate the
keyboard handling.

For other chip implementing usb_hid.c (namely, chip/g), we, for now
just rename the config option and endpoint/interface definitions.
Making the code more generic can be done at a later stage.

BRANCH=none
BUG=chrome-os-partner:59083
TEST=make buildall -j
TEST=make BOARD=hammer -j && util/flash_ec --board=hammer

Change-Id: Iad1b00fa226f7635c0f34aae6a435dc53a3ea555
Reviewed-on: https://chromium-review.googlesource.com/409256
Commit-Ready: Nicolas Boichat <drinkcat@chromium.org>
Tested-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Mary Ruthven <mruthven@chromium.org>
2016-11-16 19:04:47 -08:00
Bruce
b565e9223d Snappy: Enable BD9995X power save mode when hibernated
Turn off the charger BGATE when the system is hibernated to
save maximum power.

BUG=None
BRANCH=None
TEST=make buildall

Change-Id: I8fc6ffd4e87035f8c861f6a1963b2c546f516aae
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/409871
Commit-Ready: Devin Lu <Devin.Lu@quantatw.com>
Tested-by: Devin Lu <Devin.Lu@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-16 19:04:45 -08:00
Bruce
41dea76433 Snappy: clear hpd bit in board level tcpc init
PD alternate mode is covered in tcpc interface. So tcpci_tcpm_init()
doesn't reset HPD. If keeping HDMI/DP type-C cable connected, doing
sysjump sets HPD signal to high while it's already high(this high comes
from previous state), then OS doesn't output to HDMI/DP monitor.

BUG=None
BRANCH=none
TEST=make buildall

Change-Id: I9b23cee82716d9073c98b6b53a0e54d587baf0ea
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/409732
Commit-Ready: Devin Lu <Devin.Lu@quantatw.com>
Tested-by: Devin Lu <Devin.Lu@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-16 19:04:44 -08:00
Bill Richardson
35ad88f618 Cr50: Bump the watchdog timeout up a bit
Wiping and restarting the TPM, including regenerating the
endorsement certs can take over a second. The default watchdog
timeout is only 1.6 seconds, so let's make sure we don't
accidentally hit that limit.

BUG=chrome-os-partner:59902
BRANCH=none
TEST=make buildall; run on Reef

It wasn't firing before; it's still not firing.

Change-Id: I3c1e27156c4423fd6cb7b768be4b987b00bdd607
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/411983
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2016-11-16 19:04:38 -08:00
Bruce
8f8d635dcb Snappy: Yoga sensor setting fine tune
Fine tune matrix of base and lid.

BUG=None
BRANCH=None
TEST=check sceen rotate normally

Change-Id: I7bf2918cec1718a5bf872f1d29588df9226ef776
Signed-off-by: Bruce.Wan <Bruce.Wan@quantatw.com>
Reviewed-on: https://chromium-review.googlesource.com/411020
Commit-Ready: Devin Lu <Devin.Lu@quantatw.com>
Tested-by: Devin Lu <Devin.Lu@quantatw.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2016-11-16 19:04:36 -08:00