summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* mec1322: fix console in lfwAaron Durbin2015-08-271-1/+5
| | | | | | | | | | | | | | | | | | | | | | | 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>
* Ryu: Add a console command to control the buttons VolUp and VolDownTom Wai-Hong Tam2015-08-272-2/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | (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
* Ryu: increase HOST_CMD stack sizeGwendal Grignou2015-08-261-1/+1
| | | | | | | | | | | | | | | | | 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>
* glados: Increase stack size for powerbtn taskShawn Nematbakhsh2015-08-261-1/+1
| | | | | | | | | | | | | | | 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>
* mec1322: i2c: Unwedge controller on transaction timeoutShawn Nematbakhsh2015-08-261-1/+9
| | | | | | | | | | | | | | | | | | | | | 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>
* Cr50: Export toolchain to child $(MAKE) processesBill Richardson2015-08-251-1/+1
| | | | | | | | | | | | | | | 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>
* cr50: add plumbing for signing CR50 RO imagesVadim Bendebury2015-08-255-13/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* cr50: add code for the signer utilityVadim Bendebury2015-08-256-0/+493
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* cr50: Move to RevB:20150820 FPGAVadim Bendebury2015-08-251-3147/+3149
| | | | | | | | | | | | | | | | | 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>
* cr50: allocate RO header for signatureVadim Bendebury2015-08-251-0/+1
| | | | | | | | | | | | | | | 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>
* glados: oak: Add charger AMONBMON console commandRong Chang2015-08-255-5/+63
| | | | | | | | | | | | | | | | | | 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>
* glados: Disable keyboard + trackpad in tablet modeShawn Nematbakhsh2015-08-245-9/+58
| | | | | | | | | | | | | | | | 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>
* driver: bmi160: use rotation matrix to handle offsets.Gwendal Grignou2015-08-243-18/+23
| | | | | | | | | | | | | | | | 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>
* USART: Add DMA based receiverAnton Staaf2015-08-2411-3/+240
| | | | | | | | | | | | | | | | | | | | | | | | 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>
* USART: Add usart_info commandAnton Staaf2015-08-2412-6/+90
| | | | | | | | | | | | | | | | | | | 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>
* driver: accel: Apply offsets after rotationGwendal Grignou2015-08-242-9/+14
| | | | | | | | | | | | | | 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>
* math: Add inverse matrix calculationGwendal Grignou2015-08-244-5/+100
| | | | | | | | | | | | | | | | 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>
* motion_sense: calculate threshold properlyGwendal Grignou2015-08-243-12/+32
| | | | | | | | | | | | | | | | 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>
* motion_sense: Force flush when sensor disabled.Gwendal Grignou2015-08-242-8/+10
| | | | | | | | | | | | | | | | | | | 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>
* bmm150: add measurement repetitionGwendal Grignou2015-08-244-4/+27
| | | | | | | | | | | | | | | | 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>
* oak: add battery setting for rev3 & rev4Ben Lok2015-08-241-2/+17
| | | | | | | | | | | | | | | | | | | | | | 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>
* ryu: add si1141 supportstabilize-jetstream-7390.62.Bstabilize-jetstream-7390.54.Bstabilize-7390.68.Bstabilize-7390.59.Brelease-R46-7390.BGwendal Grignou2015-08-223-1/+43
| | | | | | | | | | | | | | 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>
* driver: si114x: Add ALS/Proxy sensor SI114xGwendal Grignou2015-08-225-2/+807
| | | | | | | | | | | | | | | | 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>
* motion_sense: Allow multiple IRQ based sensorsGwendal Grignou2015-08-225-26/+52
| | | | | | | | | | | | | | | 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>
* bmm150: Add support for calibrationGwendal Grignou2015-08-224-0/+42
| | | | | | | | | | | | | 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>
* Cleanup: Remove cruft in Makefile from long agoBill Richardson2015-08-221-2/+1
| | | | | | | | | | | | | | | 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>
* cyan: fix sensors matricesGwendal Grignou2015-08-222-4/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* i2c: Fix i2c_lock deadlock on sysjumpShawn Nematbakhsh2015-08-221-3/+3
| | | | | | | | | | | | | | | | 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>
* i2c: Fix SCL unwedge logicKevin Cernekee2015-08-221-9/+10
| | | | | | | | | | | | | | | | 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>
* usb_pd: Add host command to limit external charger voltage / currentShawn Nematbakhsh2015-08-228-23/+130
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* cortex-m: provide ability to insert free space into RO image baseVadim Bendebury2015-08-222-0/+9
| | | | | | | | | | | | | | | | | | | | | | 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>
* Cr50: Build external libs remotely, but put objects hereBill Richardson2015-08-222-14/+24
| | | | | | | | | | | | | | | | | 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>
* cr50: add tpm response processing.Vadim Bendebury2015-08-211-9/+54
| | | | | | | | | | | | | | | | | | | | | 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>
* stm32: spi: clear the spi sleep mask when AP in S3.Ben Lok2015-08-211-0/+3
| | | | | | | | | | | | | | | | | | | | | | The SLEEP_MASK_SPI will not be cleared, if SPI received a bad data. It is possible to block EC to enter deep sleep if AP send a bad packet to EC before AP goto S3/S5. In order to ensure that deep sleep can be enabled, clear SLEEP_MASK_SPI in chipset suspend hook to avoid this situation. BUG=chrome-os-partner:44170 BRANCH=None TEST=manually 1. use AP console command to let AP enter S5: > shutdown -h now 2. check the sleepmask in EC console. > sleepmask sleep mask: 00000000 Change-Id: Ib5f5c421c123d9a3c2cc6fead07c8fa515e452f1 Signed-off-by: Ben Lok <ben.lok@mediatek.com> Reviewed-on: https://chromium-review.googlesource.com/294432 Reviewed-by: Rong Chang <rongchang@chromium.org>
* oak: use EXTRA_CLFAGS instead of CONFIG_BOARD_OAK_REVRong Chang2015-08-218-22/+41
| | | | | | | | | | | | | | | | | | | | Oak board revisions are not global configs. Move them out of include/config.h . This change also makes it easier to build EC and PD image for different board revisions. BRANCH=none BUG=none TEST=manual build for board revision n and load on oak: make BOARD=oak clean make BOARD=oak_pd claen make EXTRA_CFLAGS=-DBOARD_REV=n BOARD=oak -j make EXTRA_CFLAGS=-DBOARD_REV=n BOARD=oak_pd -j Change-Id: I331b4c5a1af94b179d7c6f7878a9c3939ea6025a Signed-off-by: Rong Chang <rongchang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/294441 Reviewed-by: Shawn N <shawnn@chromium.org>
* oak: enable oak TCPM power statusRong Chang2015-08-217-37/+5
| | | | | | | | | | | | | | | | | | Oak doesn't have enough interrupt pins to detect VBUS change. This CL enables oak TCPM power status alert. BRANCH=none BUG=chrome-os-partner:41226 BUG=chrome-os-partner:42610 TEST=manual load on oak rev2. plug in normal type-c charger or legacy type-c chargers and check charging status. Change-Id: I9659e749b515f999fe9e81373567f52ec3fe956a Signed-off-by: Rong Chang <rongchang@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/291161 Reviewed-by: Shawn N <shawnn@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org>
* oak: add usb charger tasksAlec Berg2015-08-216-52/+15
| | | | | | | | | | | | | | | Add USB charger tasks to oak to detect legacy charger type. BUG=none BRANCH=none TEST=make -j buildall Change-Id: Idb8061c39b0bb8b42f47cbe3ff213b04f14c889a Signed-off-by: Alec Berg <alecaberg@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/290420 Reviewed-by: Rong Chang <rongchang@chromium.org> Commit-Queue: Rong Chang <rongchang@chromium.org> Tested-by: Rong Chang <rongchang@chromium.org>
* pd: Enable detection of VBUS via the TCPM/TCPCI interfaceScott2015-08-218-18/+167
| | | | | | | | | | | | | | | | | | | | | Modified TCPC layer to utilize the Power_Status and Power_Status_Mask registers. VBUS status is stored in Power_Status and when a change is detected, it's communicated to the TCPM via the ALERT# line. BUG=chrome-os-partner:43440 BRANCH=none TEST=Tested the feature on Glados and Oak connecting to both Ziger and Samus. Verfied that VBUS status is communicated via the TCPCI and that PD contracts are established without using the VBUS_WAKE GPIO lines on Glados and Oak. Change-Id: Ie5aa32eecc887f3cb00880a285f1e710b7064384 Signed-off-by: Scott Collyer <scollyer@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/289931 Reviewed-by: Rong Chang <rongchang@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org> Commit-Queue: Rong Chang <rongchang@chromium.org> Tested-by: Rong Chang <rongchang@chromium.org>
* Skylake: Add low power Pseudo G3 supportVijay Hiremath2015-08-213-8/+21
| | | | | | | | | | | | | BUG=none TEST=Used "shutdown -h now" Kernel console command to test on Kunimitsu. With only battery after 1 hour, device enters to Pseudo G3 and the V3p3A is off. With AC connected, device is in G3. BRANCH=none Change-Id: I955662eb69ac608e9b2d12bdcfbc1258ca83f3a5 Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/292976 Reviewed-by: Aaron Durbin <adurbin@chromium.org>
* ryu: re-calibrate lightbar colors for device.Todd Broch2015-08-212-1/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Signed-off-by: Todd Broch <tbroch@chromium.org> BRANCH=smaug BUG=chrome-os-partner:44029 TEST=manual, 1. Boot device into S0 2. From EC console lightbar ... 15 0f 06 16 0f 20 17 16 08 18 06 21 19 26 11 1a 1d 0b These values match requested values. Change-Id: Ib65044510ac24bd41d63586534685f995fcb131d Reviewed-on: https://chromium-review.googlesource.com/294840 Reviewed-by: Bill Richardson <wfrichar@chromium.org> Tested-by: Todd Broch <tbroch@chromium.org> Commit-Queue: Todd Broch <tbroch@chromium.org>
* kunimitsu: Enable CONFIG_VBOOT_HASHWenkai Du2015-08-211-1/+3
| | | | | | | | | | | | | | | | | | Port Shawn's patch for glados to kunimitsu: Enable CONFIG_VBOOT_HASH to support image hash related host commands. Originally-reviewed-on: https://chromium-review.googlesource.com/294567 Removed temperature sensor test command to save space. BUG=chrome-os-partner:44214 TEST=Verify `ectool echash` prints a hash BRANCH=None Change-Id: I72312cd4d3ae116073e15bb07ca3256c82efe3dd Signed-off-by: Wenkai Du <wenkai.du@intel.com> Signed-off-by: Vijay Hiremath <vijay.p.hiremath@intel.com> Reviewed-on: https://chromium-review.googlesource.com/294735 Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
* bq2589x: Add CONFIG_CHARGER_TERM_CURRENT_LIMIT support.Todd Broch2015-08-203-1/+18
| | | | | | | | | | | | | | | | | | | | | | | Create a config to allow customization of a board's charger termination current and add support to bq2589x charger. Note, BQ2589X_TERM_CURRENT_LIMIT_DEFAULT, currently set to 64 to make CL benign to ryu board. Future CL will change to 256 as thats the POR value for that charger. Signed-off-by: Todd Broch <tbroch@chromium.org> BRANCH=smaug BUG=chrome-os-partner:42848 TEST=manual, read charger IC register and see its termination current set to 64mA Change-Id: I79348ed62a077a6432c8d8db6ac90e1e4e92dbc7 Reviewed-on: https://chromium-review.googlesource.com/293095 Reviewed-by: Shawn N <shawnn@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Tested-by: Todd Broch <tbroch@chromium.org> Commit-Queue: Todd Broch <tbroch@chromium.org>
* lightbar: document how it all worksBill Richardson2015-08-201-0/+87
| | | | | | | | | | | | | Add a huge comment so people can figure this out easier. BUG=none BRANCH=none TEST=make buildall Change-Id: I042a209c06023210b8ad53d138971ffee4b89ab7 Signed-off-by: Bill Richardson <wfrichar@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/294179 Reviewed-by: Todd Broch <tbroch@chromium.org>
* glados: Enable CONFIG_VBOOT_HASHShawn Nematbakhsh2015-08-201-2/+3
| | | | | | | | | | | | | | Enable CONFIG_VBOOT_HASH to support image hash related host commands. BUG=chrome-os-partner:44214 TEST=Verify `ectool echash` prints a hash BRANCH=None Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Ida17b6cbd03ba0a136df1306bf277dc548a5d9ef Reviewed-on: https://chromium-review.googlesource.com/294567 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
* glados: Remove console commands to reduce image sizeShawn Nematbakhsh2015-08-201-0/+2
| | | | | | | | | | | | | | | Remove 'i2cscan' and 'hash' (not yet present, but would be added with subsequent commit) to reduce image size. BUG=chrome-os-partner:44214 TEST=`make buildall -j` with subsequent commit BRANCH=None Change-Id: I3831ff8565291a992b14a28d5c3a14a74828a57a Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/294566 Reviewed-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-by: Aaron Durbin <adurbin@chromium.org>
* nds32: use INT_MASK instead of GIEDino Li2015-08-206-46/+84
| | | | | | | | | | | | | | | | | | | | | | | | | When there is an interrupt event, N8 CPU will save PSW register to IPSW register and clear GIE then jump to interrupt service routine. N8 will restore PSW from IPSW after "iret" instruction (the above are purely hardware mechanism). Nested interrupt will occur if we set GIE again in interrupt context. symptom: power button pressed while LID open -> exception or unknown reset. Signed-off-by: Dino Li <dino.li@ite.com.tw> BRANCH=none BUG=none TEST=1. Manually pressed power button x200. 2. Console "eflash" erase and write eflash OK. Change-Id: Ic04a23d473ebc6417dffea814a27583cb8d63a1f Reviewed-on: https://chromium-review.googlesource.com/289437 Reviewed-by: Randall Spangler <rspangler@chromium.org> Commit-Queue: Dino Li <dino.li@ite.com.tw> Tested-by: Dino Li <dino.li@ite.com.tw>
* nuc:Mulin Chao2015-08-1912-160/+261
| | | | | | | | | | | | | | | | | | | | | Modified i2c driver into controllers and ports to support I2C0 port 0/1 at the same time. Modified drivers: 1. i2c.c: Support i2c controller mechanism and fixed bug for i2c_raw functions used by i2c_wedge and i2c_unwedge. 2. gpio.c: Fixed bug for gpio_alt_sel since wrong type of func. 3. lpc.c: Fixed bug for port80. Since disabling SUPPORT_P80_SEG, we should replace GLUE_SDP0/1 with DP80BUF. BUG=chrome-os-partner:34346 TEST=make buildall -j; test nuvoton IC specific drivers BRANCH=none Change-Id: I9919269e4f5e795d9ceb8a4cd2c39abbd7bb6b1a Signed-off-by: Ian Chao <mlchao@nuvoton.com> Reviewed-on: https://chromium-review.googlesource.com/294015 Reviewed-by: Randall Spangler <rspangler@chromium.org>
* skylake: power sequencing updateAaron Durbin2015-08-191-36/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There are a number issues with the current skylake power sequencing. First, SLP_SUS_L was not being honored from the chipset when a deep S5 or S3 was requested. Additionally the BATLOW_L signal was being used to block the chipset from waking which caused a race in waking from deep S5 that required an additional pulse of the PCH_WAKE_L signal instead of the chipset seeing the power button event. Another issue is that POWER_S5 state was being completely bypassed so any global resets that brought down SLP_S4_L caused the state machine to enter into G3 state. The code was changed to remove BATLOW_L usage, PCH_WAKE_L in the POWER_G3S5 state, and SLP_SUS_L is honored in the non POWER_S5G3 and POWER_G3 state. That allows SLP_SUS_L pass-thru to work on glaods. Lastly the code was reorganized to accomodate the above change without sprinkling them throughout the state transitions. BUG=chrome-os-partner:44081 BUG=chrome-os-partner:44082 BUG=chrome-os-partner:43475 BRANCH=None TEST=Built and booted glados. Deep S3 and S5 wakes work. Fresh flash plus a global reset doesn't bring the system down to G3. Change-Id: Id1d7af1b6a733a9db5aad584950da8ab5898ea83 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/293844 Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
* glados: make BATLOW_L open drain and default highAaron Durbin2015-08-191-1/+1
| | | | | | | | | | | | | | | | | | | The BATLOW_L signal is externally pulled up to PP3300_DSW. Therefore, there's no need to pull this up internally to the EC's rail. Additionally, allow BATLOW_L to be high by default as a forthcoming power sequencing change doesn't utilize the BATLOW_L signal. BUG=chrome-os-partner:44081 BUG=chrome-os-partner:44082 BUG=chrome-os-partner:43475 BRANCH=None TEST=Built and booted glados. Change-Id: I175408d64b728cacc3f6a305680962fe0320eeb9 Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/293843 Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
* glados: don't pull up SLP_S0_LAaron Durbin2015-08-191-1/+1
| | | | | | | | | | | | | | | | The SLP_S0_L signal lives in the primary power well of skylake while the EC's VCC is on the DSW rail. If SLP_S0_L is pulled up then there is leakage into the primary well when it's not on. BUG=chrome-os-partner:44098 BRANCH=None TEST=Built and booted glados. Default powerindebug state shows SLP_S0_L low when in deep sleep states. Change-Id: If9c7972fb6a8b8f90738c1c0f7eea6cf2373d64b Signed-off-by: Aaron Durbin <adurbin@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/293842 Reviewed-by: Duncan Laurie <dlaurie@chromium.org>