Commit Graph

4359 Commits

Author SHA1 Message Date
Gwendal Grignou
4e7e1bb796 motion_sense: Add more complex EC/AP sensor rate support.
Add config settings for ODR and EC rate per requestor and
per power state (1 for the AP, 3 for the EC).
This way we can finely set ec rate and ODR depending on usage.

On chromeos, AP is not setting frequency, so EC sets for different power
state. On some platform, sensors can now be suspended in S3/S5.

Allow EC oversampling when AP is only looking for a few samples.
It is useful for double tap detection where high accelerator ODR is
required.

BRANCH=ryu
TEST=Tested on Ryu
BUG=chromium:513458

Change-Id: Ic3888a749699f07b10c5da3bc07204afd4de70da
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295637
2015-08-29 01:34:14 -07:00
Gwendal Grignou
398bd9a017 driver: kxcj9: Remove some printf to fit into kunimitsu
Remove some printfs for the new sensor code to compile.

BRANCH=kunimitsu
BUG=None
TEST=compile

Change-Id: Ia7b203a03866fd497cdfaf5fa91f651423279f61
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295856
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-29 00:04:16 -07:00
Gwendal Grignou
e11637aed6 common: motion_sense: Fix Light sensor sequencing
Light was gathered too often:
- missing timestamp when reading completes.
- error when calculating next timestamp.

BRANCH=ryu
BUG=chrome-os-partner:32829
TEST=check the light is sampled ~ every seconds, whatever the
motion task frequency

Change-Id: Id070af3c8d2e080780334822278dda267bea058c
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295636
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-29 00:04:15 -07:00
Gwendal Grignou
7a2299163b driver: change get_ interface.
Simplify sensor get_data_rate, get_range and get_resolution.
Error code was not checked and these functions as currently implemented
have no reason to fail.

BRANCH=ryu,samus,cyan,strago
BUG=chromium:513458
TEST=Check on ryu, compile

Change-Id: I40dca41cee29a19f65b2f84d434b4c19eb6cbf3c
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295635
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-29 00:04:15 -07:00
Alec Berg
252dce9bd3 glados: increase voltage hysteresis in fast charging
Increase voltage hysteresis in fast charging to 100mV to avoid
bouncing back and forth between low and high voltage profiles.

BUG=chrome-os-partner:44299
BRANCH=none
TEST=test on glados, charge up from below 8.2V to above 8.3V
with zinger and verify that we switch cleanly from the low
voltage profile to the high voltage profile.

Change-Id: Ia4c03b93da66c4913848ba8eec0e09988c4d71d8
Signed-off-by: Alec Berg <alecaberg@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/296024
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-28 19:43:42 -07:00
Vijay Hiremath
5943f49e17 Keyboard: Add a macro to conditionally compile the console commands
Added macros to conditionally compile the keyboard test console commands to
save the memory. These macros can be enabled/disabled in the board specific
files.

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

Change-Id: I3ad190f1f3c9310e4f706b3b23cb8ca8755e49ef
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/295942
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Commit-Ready: Divya Jyothi <divya.jyothi@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Divya Jyothi <divya.jyothi@intel.com>
Reviewed-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-28 18:09:06 -07:00
Dawei Li
97a1d1671b twinkie firmware: add support for vbus voltage and current
The format of an ep packet header (8 bytes) :
Packets for cc1: [sample_tstamp, sample_seq, vbus_voltage, tstamp_offset]
Packets for cc2: [sample_tstamp, sample_seq, vbus_current, tstamp_offset]
Updated: use array to implement a circular queue; when a forming a packet,
remove one element from the queue. In this way, we can capture more samples
of vbus information.
Updated: when sniffer task has not started sending packets, most recent vbus
info is always stored at the first position of the queue, making sure that
the first reported vbus info is the most recent one.

Updated: allow user to compile the original version or the new version of the
source code. In ec/board/twinkie/board.h
Use #define CONFIG_USBC_SNIFFER_HEADER_V1, if you do not want twinkie to
send out vbus info;
Use #define CONFIG_USBC_SNIFFER_HEADER_V2, if you want twinkie to send out
vbus info.

Signed-off-by: Dawei Li <daweili@google.com>

BUG=chrome-os-partner:42703
BRANCH=none
TEST=BEGIN
connect Twinkie to a waveform generator, record data using:
sudo sigrok-cli -d chromium-twinkie --continuous -o test.sr
then check the resulting waveforms on pulseview.
END

Change-Id: Ifdb6402eb7d998ffb25128c510d1780491b11872
Reviewed-on: https://chromium-review.googlesource.com/282388
Commit-Ready: Sheng-liang Song <ssl@chromium.org>
Tested-by: Dawei Li <daweili@google.com>
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-28 01:19:33 -07:00
Dawei Li
405ac32148 twinkie_sink: allow twinkie commands in the sink mode twinkie
Previously, the "twinkie" commands are only avaible in sniffer/normal
mode. By allowing the twinkie commands in sink mode. We can
do more testings in the sink mode. The following important commands
are now available in sink mode:
twinkie bufrd, twinkie bufwr, twinkie fsm, twinkie send.
With these commands, we can command sink mode twinkie to send
arbitrary USB PD packets, and see how the target devices respond.

Since sink mode and sniffer mode may have conflicts with each
other, the commands may not behave in the same way as in sniffer
mode. See the #ifdef HAS_TASK_SNIFFER ... #endif blocks for details.

Signed-off-by: Dawei Li <daweili@google.com>

Change-Id: I06d4a7674d9aa897d09d4a2e6f2410f2c84f8f4b
Reviewed-on: https://chromium-review.googlesource.com/294956
Commit-Ready: Sheng-liang Song <ssl@chromium.org>
Tested-by: Dawei Li <daweili@google.com>
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-28 01:19:33 -07:00
Vijay Hiremath
eb57628abe Kunimitsu: Buffer AC status to the PCH
Ported the patch from Glados.
 Change-Id: Id7e6ca674e35c98594d09b86ab5bdf518f8b3984
 Reviewed-on: https://chromium-review.googlesource.com/288922

BUG=none
BRANCH=none
TEST=boot on Kunimitsu and verify PCH_ACOK is asserted when the device
     starts to charge and is deasserted when no cable is connected.

Change-Id: I869dab9dacc9c80da1cff79d795f07e16cbd37de
Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/295864
Commit-Ready: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Tested-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Vijay P Hiremath <vijay.p.hiremath@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-27 21:27:49 -07:00
Gwendal Grignou
8cd6cb8d2b ectool: Add description for new sensors.
Add string for new sensors.

BUG=none
BRANCH=ryu
TEST=show newest sensor properly:
Type:     proximity
Location: lid
Chip:     si1141

Change-Id: Ia41f845cd02ba7a1fd322c15692be0bb177eada4
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295634
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-27 21:27:48 -07:00
Mike M Hsieh
6ced01bb86 kunimitsu: battery led implementation
Implement LED function for battery charging behavior

BUG=none
BRANCH=none
TEST=checked and verified LED behavior while charging and remaining battery
capacity under 3%/10%
Signed-off-by: Mike Hsieh <mike.m.hsieh@intel.com>

Change-Id: Ic340d4ea428f7726611b2ae24a4d18563c63ee80
Reviewed-on: https://chromium-review.googlesource.com/295476
Commit-Ready: Wenkai Du <wenkai.du@intel.com>
Tested-by: Wenkai Du <wenkai.du@intel.com>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2015-08-27 14:39:53 -07:00
Todd Broch
5bc9b32807 ryu: Change charger termination current to 192mA.
Good rule of thumb for charger current is that it should be set
between C/20 & C/50 for the battery of the device.

For ryu its presently set at 64mA which may explain why we see
charger's status as charging even when battery is full.  In any case
its well below recommendation so lets change it to something within
that.

Sampled data (see issue tracker) indicates charging current is ~256mA
when battery reaches 100% charged.  Setting to 192mA (3 * 64) to error
on the side of charging slightly longer.  This number is still within
termination current recommendation:
  C/20 > term_current >= C/50

Note, also changing bq2589x default termination to match its POR value
of 256 as no other board uses this charger presently.

Signed-off-by: Todd Broch <tbroch@chromium.org>

BRANCH=smaug
BUG=chrome-os-partner:42848
TEST=manual, read charger IC termination register and see termination
current set to 192mA

Change-Id: I60dbb9326c3abb8091fd9ab18eda08b9eabb197b
Reviewed-on: https://chromium-review.googlesource.com/293096
Commit-Ready: Todd Broch <tbroch@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2015-08-27 11:45:57 -07:00
Aaron Durbin
6ebc6c493f glados: implement x86 power cycle on EC reset
On certain glados boards (board id >= 2) there is a
gpio conntected to the LDO_EN pin of the BD99992 pmic.
This is a requirement for pulling power from the x86
side of the system. Add a check at HOOK_INIT time to
check the current system reset flags. If a watchdog,
hard, or soft reboot occurred the LDO_EN is deasserted
to bring down the DSW and primary rails.

BUG=chrome-os-partner:44527
BRANCH=None
TEST='reboot', 'reboot ap-off', host cmd reboot.

Change-Id: I7e971a03c8894e1cbf20aaad67903db2057aad41
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295116
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-26 21:50:29 -07:00
Aaron Durbin
12cee55423 system: provide optional chip_save_reset_flags()
Certain boards may need to handle fixing up the RESET_FLAG_s
because of the boards' designs. Provide an optional per-chip
implementation to save the reset flags. Note that this
function is not protected by a CONFIG_ option as it can just
be implemented by the chip if a board requires it. Lastly,
implement chip_save_reset_flags() for mec1322 for future use.

BUG=chrome-os-partner:44527
BRANCH=None
TEST=Built and booted on glados.

Change-Id: I604fe4e6a069f31727bab52288595a349e3dbe72
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295115
Reviewed-by: Robbie Zhang <robbie.zhang@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-26 21:50:28 -07:00
Aaron Durbin
73338cc986 glados: disable console history
We're already too close to limits. Disable console history to
provide more breathin room for features.

BUG=chrome-os-partner:44527
BRANCH=None
TEST=Can build with follow up code that actually links.

Change-Id: I53f9fdace64e01d28081f62fa535bb6efd0f5675
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295114
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-26 20:21:58 -07:00
Aaron Durbin
2fd997c27c glados: enable CONFIG_BOARD_VERSION
Glados has board ids, but the config variable was
never set. Enable the config and also change the name
of the GPIOs to match the expectations of the common
infrastructure.

Prior:
> version
Chip:    smsc mec1322 81
Board:   0
RO:      glados_1.1.9999-f3a5046
RW:      glados_1.1.9999-f3a5046
Build: glados_1.1.9999-f3a5046 2015-08-26 10:42:45 @adurbin-chromium

With chnage:
> version
Chip:    smsc mec1322 81
Board:   1
RO:      glados_1.1.9999-028832d
RW:      glados_1.1.9999-028832d
Build: glados_1.1.9999-028832d 2015-08-26 11:41:43 @adurbin-chromium

BUG=chrome-os-partner:44527
BRANCH=None
TEST=version command reports board id strapping.

Change-Id: I9b7e41d2f61a91de4648a09ac9da9f101f7bb830
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295113
Reviewed-by: Leroy P Leahy <leroy.p.leahy@intel.com>
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-27 01:49:43 +00:00
Aseda Aboagye
9fc5ae515e util: More enhancements to config_option_check.py.
This commit enhances the config_option_check.py script a little bit
more.

Firstly, I fixed a bug where lines beginning with an '*' were treated as a
comment where it was not so.

  ex: *status = (CONFIG_BAR_PORT & 0x23);

Additionally, I added support for considering deletions.  This allows
the script to check to see if a CONFIG_* option being removed is being
used anywhere else in the repo.  If the option isn't used elsewhere,
then it appears to be the removal of the last use.  An error is flagged
informing the user to remove that option from the main config file.
This helps to keep the config file up to date without leaving stale
CONFIG_* options where one might not know if they still work or not.
Debug config options are always assumed to be used as those are
typically enabled locally.

BUG=chromium:510672
BRANCH=None
TEST=Used a new config option without adding it to the main config file
and watched the error be flagged.
TEST=Removed the last use of a CONFIG_* option while leaving the option
in the main config file. Observed that it was flagged.
TEST=cros lint --debug util/config_option_check.py
TEST=make -j buildall tests

Change-Id: I8702ad06d9856c14f7bcd4592e917a5d3fcb6b57
Signed-off-by: Aseda Aboagye <aaboagye@google.com>
Reviewed-on: https://chromium-review.googlesource.com/294620
Trybot-Ready: Aseda Aboagye <aaboagye@chromium.org>
Tested-by: Aseda Aboagye <aaboagye@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Aseda Aboagye <aaboagye@chromium.org>
2015-08-27 01:49:38 +00:00
Aaron Durbin
10dbdc3feb mec1322: fix console in lfw
The console support in lfw was not very in for printing messages.
The version was smashed against the name of the program and
the image type was at the same column as end of version:
littlefwglados_1.1.9999-f3a5046
                               lfw-RO load

Fix this by adding a space after the program name and outputting
a carriage return if a new line is encountered. With these changes
the new console looks like:
littlefw glados_1.1.9999-f3a5046
lfw-RO load

BUG=chrome-os-partner:44527
BRANCH=None
TEST=Built for glados. 'reboot' shows legible console output.

Change-Id: I7b80b2c7db453c09a401a740155de98e78f3cf84
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295112
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-27 01:49:31 +00:00
Tom Wai-Hong Tam
38ddecb897 Ryu: Add a console command to control the buttons VolUp and VolDown
(cherry-pick back to ToT)

FAFT needs these buttons (VolUp and VolDown) be controllable
such that it can automate the firmware mode switching flows.
It is done by EC overwriting the GPIO values such that AP can
see the results.

BRANCH=ToT,smaug
BUG=None
TEST=AP boots into the firmware menu screen. Run the following commands
in EC console:
> btnpress voldown 1
> btnpress voldown 0  # See the next option selected, like a real button pressed
> btnpress volup 1
> btnpress volup 0  # Boot in the selected option, like a real button pressed
> btnpress volup
Button volup pressed = 0

Change-Id: I5e0b514d9986b8e5729ffd3560560d650669e0b7
Signed-off-by: Vic Yang <victoryang@google.com>
Signed-off-by: Tom Wai-Hong Tam <waihong@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/294882
Reviewed-by: Randall Spangler <rspangler@chromium.org>
(cherry picked from commit 77291b156d10f31dd059a4662aa249a8f8ea762e)
Reviewed-on: https://chromium-review.googlesource.com/295162
2015-08-27 01:49:25 +00:00
Gwendal Grignou
456d1baa25 Ryu: increase HOST_CMD stack size
Hit overflow while sending autocalibrate command.

At rest, we were already close to the limit:
   7   HOSTCMD          00000000    0.104035  472/488
Increase to 640 bytes.

BUG=chrome-os-partner:44381
BRANCH=ryu
TEST=Check auto calibrate works.

Change-Id: Ife014baf4316cdca952104c5158f38cd106e023f
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295590
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-26 08:28:24 +00:00
Shawn Nematbakhsh
bcab6d22df glados: Increase stack size for powerbtn task
We occasionally see stack overflows in the powerbtn task, so bump the
stack size.

BUG=chrome-os-partner:44202
TEST=Manual on Glados. Disable SLP_S0 GPIO interrupt, run 'reboot' on EC
console, verify that stack overflow is not encountered.
BRANCH=None

Change-Id: I858ad50e86b998e4283a5e11d3a720212150f657
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295571
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2015-08-26 05:12:38 +00:00
Shawn Nematbakhsh
d43ced8c8d mec1322: i2c: Unwedge controller on transaction timeout
If clk or dat aren't pulled up for an extended period, the i2c
controller may get into a wedged state that requires a controller reset
to recover from. There are no outward signs of the controller being in
such a state, other than transaction timeouts. Therefore, on a
transaction timeout, reset the controller.

BUG=chrome-os-partner:43270
TEST=Manual on glados:
- Run `gpioset PP3300_USB_PD_EN 0` on PD console and wait several seconds
- Run `gpioset PP3300_USB_PD_EN 1` on PD console
- Run `i2cscan` and verify all ports / devices ack
- Repeat above several times
BRANCH=None

Change-Id: I2ae42762ee6c961224ff50309a448475b67854b5
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295404
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2015-08-26 00:17:46 +00:00
Bill Richardson
70951c9b75 Cr50: Export toolchain to child $(MAKE) processes
The external libraries need to inherit the tool chain, so they're
built with the same tools.

BUG=chrome-os-partner:43025
BRANCH=none
CQ-DEPEND=CL:295456,CL:295409
TEST=make buildall

Change-Id: I8b0b275ec77a003e07481391998961ab421066c8
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295447
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2015-08-25 21:31:45 +00:00
Vadim Bendebury
9005ddd4bc cr50: add plumbing for signing CR50 RO images
The signer utility needs to be built and the flat image needs to be
signed. The signer utility is written in C++, supporting this required
adding a new make command to Makefile.rules and a build file for the
utility.

The signing now needs to be a part of generating the .flat file. To
achieve this an alternative set of rules is defined in Makfile.rules
for targets where RO image needs to be signed.

Rules for converting elf to hex have been consolidated as there is no
need to omit the --set-section-flags when it does not apply.

BRANCH=none
BUG=chrome-os-partner:43025
TEST=as follows:
    - ran 'rm build/cr50; make BOARD=cr50'
    - observed that both build/cr50/ec.bin and
      build/cr50/RO/ec.RO.flat have the required signature header in
      the first 1024 bytes.
   - verified that the cr50 board can be booted over SPI using the
     image in build/cr50/RO/ec.RO.flat

Change-Id: Iacc22561de67fadfaf8e049bf9578cbd08cfad86
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295291
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Aseda Aboagye <aaboagye@chromium.org>
2015-08-25 21:31:33 +00:00
Vadim Bendebury
d9a614826b cr50: add code for the signer utility
This utility reads a binary file, verifies that the first 1024 bytes
of the file are set to zero and replaces this block with a header,
containing the signature and other information required by the recent
CR50 ROM.

A test private key is included, it matches the FPGA ROM public key.

The use convention is simple: two parameters are required, the private
key file name and the binary file name. The signed binary file is saved
in the file with extension ".signed".

BRANCH=none
BUG=chrome-os-partner:43025
TEST=the utility builds using

   g++ -std=c++0x -I . -o signer codesigner.cc publickey.cc -lcrypto

  ec.RO.flat signed with this utility can be successfully bootstrapped
  a CR50 over SPS

Change-Id: I046b13d20f0dd8cff884e37ef966593e01dcb043
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295208
Reviewed-by: Marius Schilder <mschilder@chromium.org>
2015-08-25 20:10:55 +00:00
Vadim Bendebury
b37514eed2 cr50: Move to RevB:20150820 FPGA
This changes the register description to match the newer FPGA version.
The new version supports firmware integrity verification as well as
bootstrapping over SPI slave interface.

BRANCH=none
BUG=chrome-os-partner:43791
TEST=with the rest of the patches (providing ability to sign firmware
     and load it over SPI) the code gets signed properly and loaded
     and started on the target

Change-Id: Ibebe5f6c510fbfb2c7c6ff40ab58ea643f051b1b
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295211
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2015-08-25 20:10:50 +00:00
Vadim Bendebury
be7fbf3802 cr50: allocate RO header for signature
Leave 1024 bytes at the cr50 RO section for the signature required by
maskrom bootloader.

BRANCH=none
BUG=chrome-os-partner:43025
TEST=with this and other changes the latest cr50 image gets signed and
     booted properly.

Change-Id: I64efe242b958bbb4e320cb3bb16c653d210dd662
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295201
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2015-08-25 20:10:44 +00:00
Rong Chang
f3a5046ed7 glados: oak: Add charger AMONBMON console command
AMONBMON is a charger feature to measure input current and battery output
current. ISL9237 output analog value of voltage diff across sense
resistor to EC's ADC channel. This change also reorders oak's ADC channel
to fix a reading bug.

BRANCH=none
BUG=chrome-os-partner:42270
TEST=manual
  in EC serial console, type command 'adc' and check AMON_BMON value.
  type command 'amonbmon' and check AC current and BAT current.

Change-Id: I9db0a72be7c9a428a16d1609eb8c461c6928e548
Signed-off-by: Rong Chang <rongchang@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/283665
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-25 13:11:19 +00:00
Shawn Nematbakhsh
1155520c8a glados: Disable keyboard + trackpad in tablet mode
The internal keyboard and trackpad must be disabled in tablet mode to
prevent unwanted input.

BUG=chrome-os-partner:44305,chrome-os-partner:40849
TEST=Manual on Glados. Boot system with lid open, verify that keyboard
is functional and ENABLE_TRACKPAD is high. Swing lid to tablet mode,
verify that keyboard is not functional and ENABLE_TRACKPAD is low.
BRANCH=None

Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I9f250ae82963c8b497de991b6cce52c86841d08a
Reviewed-on: https://chromium-review.googlesource.com/295206
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2015-08-24 20:25:41 +00:00
Gwendal Grignou
3a7e513273 driver: bmi160: use rotation matrix to handle offsets.
Store offsets using sensors axis, not the device axis.
Therefore apply rot_standard_ref to the offset vector before
get and rot_standard_ref^-1 before set.

BRANCH=smaug
TEST=using mag sensor, check the offset are applied to the right axis
and store correctly.
BUG=chromium:517675

Change-Id: I95c8ef2a62603890184412674e7bde91ebecd288
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/294596
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-24 19:08:40 +00:00
Anton Staaf
69bd4ce351 USART: Add DMA based receiver
This DMA receiver uses a separate small circular buffer to DMA into.
This allows the DMA transaction to be made circular, and thus it does
not require the interrupt latency to be low enough to setup the next
transfer before the next character comes in.

Additional diagnostics output have been added to the usart_info console
command to facilitate tuning of the FIFO size.

Signed-off-by: Anton Staaf <robotboy@chromium.org>

BRANCH=None
BUG=None
TEST=make buildall -j
     Verify DMA works by cross connecting two discovery boards

Change-Id: Idcdf95a47fadf21ec2154f0c9128cd3586e568ec
Reviewed-on: https://chromium-review.googlesource.com/292870
Tested-by: Anton Staaf <robotboy@chromium.org>
Reviewed-by: Anton Staaf <robotboy@chromium.org>
Commit-Queue: Anton Staaf <robotboy@chromium.org>
Trybot-Ready: Anton Staaf <robotboy@chromium.org>
2015-08-24 19:08:35 +00:00
Anton Staaf
16f63703c9 USART: Add usart_info command
This optional console command is enabled with CONFIG_USART_INFO_COMMAND.
It will display and clear dropped character and overrun counts for all
configured USARTs.

Signed-off-by: Anton Staaf <robotboy@chromium.org>

BRANCH=None
BUG=None
TEST=make buildall -j

Change-Id: Icf6061aaab2cda71e9d317455c897828b9daf844
Reviewed-on: https://chromium-review.googlesource.com/292770
Tested-by: Anton Staaf <robotboy@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Anton Staaf <robotboy@chromium.org>
Trybot-Ready: Anton Staaf <robotboy@chromium.org>
2015-08-24 19:08:30 +00:00
Gwendal Grignou
f7fa6248bf driver: accel: Apply offsets after rotation
Offsets are in the axis of the device, not the sensor.
Apply the offsets after rotiation

BRANCH=cyan
TEST=compile, test on cyan
BUG=chromium:517675

Change-Id: Iae9282efcbb5889bb0f1f556b7e5ca9fabe31b22
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/294595
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-24 19:08:24 +00:00
Gwendal Grignou
0e01759ced math: Add inverse matrix calculation
Add a slow inverse matrix calculation function.
It is needed to apply factory offset properly.

Also consider the NULL matrix the identity matrix.

BRANCH=smaug,cyan
TEST=Unit test
BUG=chromium:517675

Change-Id: Ifa11954992e6f2fab02b4e92684e7b01bbaafe94
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/294594
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-24 19:08:20 +00:00
Gwendal Grignou
de42bb285f motion_sense: calculate threshold properly
Working on light sensor, sensor were read on every time,
SENSOR_EC_THRES was not taken into account.
Fix 64/32 conversions and add a function for dealing with rollover.

TEST=Set light sensor probe at 1s. Set accel sensor at 100Hz to fill
fifo often; verify that light sensor is queried every second only.
BRANCH=smaug
BUG=chrome-os-partner:39900

Change-Id: If1df53c1a9a304c992f8e517f5d516210118a437
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291992
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-24 19:08:15 +00:00
Gwendal Grignou
5faadc6748 motion_sense: Force flush when sensor disabled.
When sensor is disabled, HAL will not send flush request to EC.
However, when sensor is reenabled, only new events are expected.
When we have a change in frequency, we have to request the host to
query all the current events.
Flush the FIFO when events are not needed because all sensors are
disabled.

BRANCH=smaug
TEST=Pass more tests: tests like ..._fastest_batching after _50hz_flush
have more change to pass.
BUG=chrome-os-partner:39900

Change-Id: I1a8fc3784e3e6be260b23103b28e336e242f14cd
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291991
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-24 19:08:10 +00:00
Gwendal Grignou
179d5d3c83 bmm150: add measurement repetition
To reduce noise the magnetometer measures in burst and
average the data.
Use "regular" presets: max frequency is limited to 100Hz.
Using a more precise presets limit frequency to no more than 50Hz.

BRANCH=smaug
TEST=Check magnetomter still works.
BUG=chrome-os-partner:39900

Change-Id: Ida6af86f6c207cc91e11378c129032f6d9e6b9ea
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291990
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-24 19:08:04 +00:00
Ben Lok
0b79533f88 oak: add battery setting for rev3 & rev4
The battery type of rev3 is changed to 3S, add this setting to battery_info.
But in order to compatible to 2S battery, set the minimum voltage of
battery to 6V rather than 9V.
For rev4, it should always connect to 3S battery and doesn't necessary to
support 2S battery.

BRANCH=none
BUG=chrome-os-partner:44428
TEST=manual
1. connect 2S battery to rev3.
2. check the battery info with EC command:
   > battery
3. confirm the voltage of battery is match to setting of battery_info.
4. connect 3S battery to rev3, and repeat step 2&3.

Change-Id: I626ed150d76a1dfba7d1caf08c4f19882e9cb089
Signed-off-by: Ben Lok <ben.lok@mediatek.com>
Reviewed-on: https://chromium-review.googlesource.com/295024
Reviewed-by: Rong Chang <rongchang@chromium.org>
2015-08-24 11:43:29 +00:00
Gwendal Grignou
da4239f64b ryu: add si1141 support
Add si1141 to the list of motion sensors.
Setup IRQ line and other constants.

BRANCH=smaug
TEST=Check sensor is working
BUG=chrome-os-partner:32829

Change-Id: Ic05bc24164d067a1dee6a6241681420348d7a843
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291336
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-22 09:31:57 +00:00
Gwendal Grignou
bbbbde0fc0 driver: si114x: Add ALS/Proxy sensor SI114x
Add the Silicon Image sensors, add it to the motion_sense module
to be used with the FIFO.

BRANCH=smaug
TEST=Check light and proxy on Smaug:
Check Light value in Lux are reasonable.
Check Proxy is detecting object, but value are in opposite of distance.
BUG=chrome-os-partner:32829

Change-Id: I11419a0f0613f0fae9323f99deedf5a1e6c6e29c
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291335
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-22 09:31:50 +00:00
Gwendal Grignou
59138ad097 motion_sense: Allow multiple IRQ based sensors
Add a mask of custom events reserved for IRQ based sensors.
Copy data from raw_xzy to xyz while filling the FIFO
when FIFO is enabled.

BRANCH=smaug
TEST=Test with si1141 driver, check irq works for both driver.
BUG=chrome-os-partner:32829

Change-Id: I5e106df0c121e3bf1385f635195717395235ccc3
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291334
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-22 09:31:45 +00:00
Gwendal Grignou
7b10244142 bmm150: Add support for calibration
Allow sending calibration information to the magnetometer.

BRANCH=smaug
TEST=Check from user space that calibration is taken into account.
BUG=chrome-os-partner:39900

Change-Id: Ic0f595bde1afdc0b6a79e3516a42b55d1f50c17c
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/291333
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
2015-08-22 09:31:38 +00:00
Bill Richardson
ed0192a9b1 Cleanup: Remove cruft in Makefile from long ago
This removes a bit of Makefile magic left over from commit
950d507 (April 2013), when we began mocking individual functions
instead of files. It hasn't be used or useful since then.

BUG=none
BRANCH=none
TEST=buildall

Change-Id: Iacbef05cb07936f873f29948715e742e1ff465fc
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295175
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2015-08-22 01:38:00 +00:00
Gwendal Grignou
f59ab4c5f3 cyan: fix sensors matrices
Matches definitons set in
chromium/chromeos/accelerometer/accelerometer_types.h.

Using that standard, the coordinate frames of the lid and base DO NOT
line up perfectly when the lid is fully closed or fully open.

Therefore, rotate the lid vector 180 along the X axis before
calculating the lid angle.

BRANCH=cyan
BUG=chrome-os-partner:40177
TEST=When the device is open 180 degrees, check the sensors
agree with each other:
Flat on the back (Z pointing to the sky):
localhost devices # cat */*raw
-1008 [keyboard : X]
-112  [keyboard : Y]
16544 [kyeboard : Z]
-256  [lid : X ]
2000  [lid : Y ]
16336 [lid : Z ]
On the right side (X pointing to the ground)
localhost devices # cat */*raw
-16928
-48
-1040
-16176
432
80
On the bottom edge (Y pointing to the sky)
localhost devices # cat */*raw
-192
15872
1648
496
15936
752
Check the angle as calculated by the EC is correct using accelinfo.

Change-Id: Ib8ee42da8cf818213f892b1f024253f37a4da488
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/294716
Reviewed-by: Jonathan Ross <jonross@chromium.org>
Reviewed-by: Eric Caruso <ejcaruso@chromium.org>
2015-08-22 01:37:55 +00:00
Shawn Nematbakhsh
9312676ab3 i2c: Fix i2c_lock deadlock on sysjump
On sysjump we attempt to lock all i2c ports in use, but locking is
by-controller. This leads to a deadlock if two ports from the same
controller are in use. Fix this by directly locking all controllers
present in the system.

BUG=chrome-os-partner:44214
TEST=`sysjump rw` and then `sysjump ro` on glados
BRANCH=None

Change-Id: I21d65cd4455769414216016a5c97ad118a712117
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/294959
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2015-08-22 01:37:51 +00:00
Kevin Cernekee
5ca252d4ef i2c: Fix SCL unwedge logic
The current logic breaks out of the for() loop if SCL gets unwedged
(goes high), but still falls through to the "I2C unwedge failed,
SCL is being held low" case.  Fix this so that we only hit the
"SCL is being held low" case if SCL actually is stuck low.

BUG=none
BRANCH=None
TEST=compile-test only, on samus

Change-Id: I39df1966dc25517ee03a56109e7d0b740c5ca12b
Signed-off-by: Kevin Cernekee <cernekee@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295043
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2015-08-22 01:37:45 +00:00
Shawn Nematbakhsh
ad8ce3f806 usb_pd: Add host command to limit external charger voltage / current
PD charger voltage + current can now be limited with
EC_CMD_EXTERNAL_POWER_LIMIT. The limit is automatically cleared when the
AP transitions out of S0 into S3 / suspend.

BUG=chrome-os-partner:43285
TEST=Manual on Samus w/ zinger.
- Plug zinger, verify charging at 20V/3A.
- `ectool extpwrlimit 3000 12000 --dev=1`, verify charging at 12V/3A
- `ectool extpwrlimit 1000 5000 --dev=1`, verify charging at 5V/1A
- Plug zinger into other port, verify still charging at 5V/1A
- `powerd_dbus_suspend`, verify charging at 20V/3A
- `chglim 2000 12000`, verify charging at 12V/2A
- `ectool extpwrlimit 0xffff 0xffff --dev=1`, verify charging at 20V/3A
- `chglim 1000 20000`, verify charging at 20V/1A
- `chglim`, verify charging at 20V/3A
BRANCH=ryu

Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I6cd5377be91b3df75f99cb414fd3fa5a463b56cb
Reviewed-on: https://chromium-review.googlesource.com/293954
Reviewed-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Alec Berg <alecaberg@chromium.org>
2015-08-22 01:37:38 +00:00
Vadim Bendebury
6f8637a6df cortex-m: provide ability to insert free space into RO image base
Some platforms might expect the header of the image to be a certain
platform specific blob. This patch adds an ability to insert an
arbitrary size header in the binary blob, if so desired, the intention
is to have the platform specific tools to postprocess the image and
replace the header with sensible data.

Ideally we should be able to produce an image which is mapped to start
at an offset to the FLASH_BASE, but the macros in ec.S.lds files are
way too smart for this.

BRANCH=none
BUG=chrome-os-partner:43025
TEST=with this and other changes the latest cr50 image gets signed and
     booted properly.

Change-Id: Icabf00c6b90657b0ae3370ddad3567ccedf3ff49
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295200
Reviewed-by: Shawn N <shawnn@chromium.org>
2015-08-22 01:37:31 +00:00
Bill Richardson
65d683a7e5 Cr50: Build external libs remotely, but put objects here
When building components from external libraries, instead of
rsyncing the library into our build directory and building there,
just build in the library directory and have it put its generated
objects into our build tree. That will keep any build artifacts
in the library directory from polluting our builds unexpectedly.

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

Change-Id: I2f07a2b49d1a0ba9fd9fff0822551486be820b70
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/295044
Reviewed-by: Vadim Bendebury <vbendeb@chromium.org>
2015-08-22 01:37:25 +00:00
Vadim Bendebury
0bb856d9e8 cr50: add tpm response processing.
This patch closes the loop of processing TPM commands, the response
generated by ExecCommand() is placed in the buffer to be returned
through FIFO read accesses.

State machine and register states are updated as per TCG Platform
Specification. A lot of debug output is generated, this is useful for
debugging, will be filtered eventually.

BRANCH=none
BUG=chrome-os-partner:43025
TEST=with the appropriate tpm2 and trunks patches in place trunksd
     successfully initializes the CR50, sending such commands as
     Startup, GetCapability (three times) and SelfTest.

Change-Id: Ibbd952b53930e4530461db7dcdbc510a8022412c
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/293910
Reviewed-by: Utkarsh Sanghi <usanghi@chromium.org>
2015-08-21 20:08:59 +00:00