Commit Graph

1730 Commits

Author SHA1 Message Date
Randall Spangler
1a00c4eab5 Rename LPC packet size constant for version 3 protocol
The maximum packet length for LPC is limited by the I/O space window
size.  But that's not the case for SPI or LPC.  Rename LPC constant
before adding a SPI constant.

BUG=chrome-os-partner:20257
BRANCH=none
TEST=build link

Change-Id: I088327a11eff18d401c773db953700a36f9c1bb4
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59959
2013-06-26 09:08:25 -07:00
Randall Spangler
ab6546cbaa Clean up DMA module and interface.
Explicitly use enum for dma_channel, instead of ints (since channel is
1-based in the docs and 0-based in the enum).  Add enum values for
other channels like USART.

Use volatile structs instead of typecasting through REG32().

Other assorted code cleanup.

Remove DMA2 partial support, since neither STM32F100R8 nor STM32L151x
has hardware support for it and it cluttered the code.

No functional changes.

BUG=chrome-os-partner:20485
BRANCH=none
TEST=from pit root shell, 'ectool version' still works

Change-Id: Ifdd62fb287c608a684ba8fa16934dfcab83ee609
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59949
2013-06-26 09:08:24 -07:00
Randall Spangler
8e72f58ac4 pit: Clean up timer init code
Power LED PWM now uses the same functions as the hardware timer.

BUG=chrome-os-partner:20414
BRANCH=none
TEST=Suspend system.  Power button LED pulses smoothly still.

Change-Id: Ib5ca6655d815462baaf68600ad14c4c0c680a6af
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59838
2013-06-26 09:08:23 -07:00
Randall Spangler
67c275f849 pit: Drop EC clock speed to 1 MHz MSI when AP is in S3/S5
Automatically drop the clock speed to 1 MHz MSI, then disable HSI and
move to lower-power flash mode.  This cuts power from 2400uA to 150uA.

Note that at 1 MHz, we drop received characters on the UART if you
type too fast (or copy/paste, or use arrow keys).  Clock speed can be
manually overridden back to 16 MHz via 'clock hsi'.

BUG=chrome-os-partner:20414
BRANCH=none
TEST=with AP on, 'clock' reports 16 MHz.
     with AP off, 'clock' reports 1 MHz.

Change-Id: I070c80db0aa5f3a98a7bad6050890bcc2fe008d6
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59832
2013-06-26 09:08:22 -07:00
Randall Spangler
b0c8ce6948 pit: Support changing EC clock frequency
Modules which care about system clock frequency now hook HOOK_FREQ_CHANGE.
  - hwtimer
  - i2c
  - uart (which is now also smart enough to use x8 oversampling instead of
          x16 when the system clock is too slow to support x16)

Added 'clock' debug command to set system clock frequency.

STM32F platforms don't change clock frequency; on those platforms,
clock_get_freq() simply returns CPU_CLOCK, so behavior of those
platforms is unchanged.

BUG=chrome-os-partner:20414
BRANCH=none
TEST=from EC console:
   - reboot ap-off -> to make sure AP is off during testing
   - clock msi2 -> reports 2MHz clock
   - battery -> reports battery info
   - clock msi1 -> reports 1MHz clock
   - battery -> reports battery info
   - clock hsi -> reports 16MHz clock
   - battery -> reports battery info
   - power on -> AP powers on and host commands succeed

Change-Id: Ib8276bf124727e4fb502297ca8b3d6d4b6170241
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59645
2013-06-25 23:24:23 -07:00
Shawn Nematbakhsh
6957684d30 keyboard: Preserve keystroke enable state.
Preserve the state of keystroke_enabled to prevent keystrokes from being
initially disabled on RO --> RW transition. This will allow us to use
the keyboard on EC cold boot.

BUG=chrome-os-partner:20430.
TEST=Manual. Verify keyboard works on EC cold boot on Peppy.
BRANCH=None.

Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I603a73ee0f8435c91d430a64803add345c92f025
Reviewed-on: https://gerrit.chromium.org/gerrit/59798
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
2013-06-24 15:44:24 -07:00
Shawn Nematbakhsh
f4ed65f3af peppy: Set GPIO_WP to active low.
WP GPIO is active low on peppy.

TEST="gpioget WP" with hole24 open shows 1, with hole24 shorted shows 0.
BUG=chrome-os-partner:20429.
BRANCH=none.

Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: Idf3de192c500edcb40b37269b1b66e6a5df4dd1f
Reviewed-on: https://gerrit.chromium.org/gerrit/59703
Reviewed-by: Dave Parker <dparker@chromium.org>
2013-06-24 15:44:23 -07:00
Dave Parker
3c7ad4f267 Power and battery LED control for Peppy.
BUG=chrome-os-partner:20328
BRANCH=peppy
TEST=manual and constrained by hw issues.

Change-Id: I7df19ad410ef2a85c170980150bf226a7407642e
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59663
Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org>
2013-06-24 14:04:04 -07:00
Randall Spangler
8a66ae3182 pit: Fix watchdog help for STM32L
Clean up timer initialization code to be more general, so that we can
use timer 9 for the LSB on STM32L.  Then use timer 4 for the watchdog
helper.

BUG=chrome-os-partner:18781
BRANCH=none
TEST=From EC console:
        timerinfo -> current time still counts up properly
        waitms 2000 -> prints watchdog info before rebooting

Change-Id: Ib0ba496b0eadb93756dcd1841857546910baf2a9
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59612
Reviewed-by: Simon Glass <sjg@chromium.org>
2013-06-24 14:03:59 -07:00
Dave Parker
c7e60d03aa Add charger/battery support for Peppy
BUG=chrome-os-partner:19949
BRANCH=peppy
TEST=Manual. Observe output from "battery" and "charger" on EC console.
     No smoke or fire observed (yet).

Signed-off-by: Dave Parker <dparker@chromium.org>
Change-Id: Ibac55bb58ebfc25de5cb625d4f503cf6e3ecec62
Reviewed-on: https://gerrit.chromium.org/gerrit/59624
Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org>
2013-06-24 14:03:52 -07:00
Vic Yang
07c02a4c22 spring: Wait 80ms for CABLE_DET to be asserted
From our measurement, it takes ~80ms for CABLE_DET to be asserted. Let's
wait for that long before giving up and declare it an USB host.

BUG=chrome-os-partner:20405
TEST=Manual
BRANCH=Spring

Original-Change-Id: I71568ed8011f9b3f2c9c2ee67aea3c771a5dbf37
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59566
(cherry picked from commit 3c1b2b757546c022d0ae0eb22e3db9feb41055c4)

Change-Id: Id2329d477f17f1db0309960ee9faeb770b2c50a0
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59667
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-22 22:30:08 -07:00
Vic Yang
326354f58b spring: Check USB device type periodically
The device type reported by TSU6721 changed rapidly in some cases, and
we miss the change after the first one. We need to check device type
change periodically.

BUG=chrome-os-partner:20336
TEST=Plug and unplug DCP charger in suspend. Check device type is
detected correctly.
BRANCH=Spring

Original-Change-Id: Iaab4168f99637b736b8ba42f4313e248b84bdd44
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59535
Reviewed-by: Randall Spangler <rspangler@chromium.org>
(cherry picked from commit 69b18e5fb9890f3a638c1587968b110dc1110ba1)

Change-Id: I3cb86b0bfeb7bb02d750197405ffe385b06808e9
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59666
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-22 22:30:06 -07:00
Vic Yang
8435872523 Clear pending interrupt on disabling TSU6721 interrupt
If we disable TSU6721 interrupt without clearing pending interrupt, we
get bogus interrupt after. Let's clear it.

BUG=chrome-os-partner:20336
TEST=Log interrupt. Check there's none after disabling interrupt.
BRANCH=Spring

Original-Change-Id: Ic8e5bcdcea894cccfbdf4b7d9afd43084b0c3309
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59534
Reviewed-by: Randall Spangler <rspangler@chromium.org>
(cherry picked from commit 0412f17aaf20887fc6ec2598f269841e03b760e4)

Change-Id: I18ba0e4bbfd81e59d30b2d5723f8859e42acadaa
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59665
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-22 22:30:04 -07:00
Vic Yang
f73c6d8ec7 spring: Avoid I2C transaction in interrupt context
When the device suspends with video dongle plugged in, the EC tries to
turn off VFET output. However, the I2C command issued in interrupt
context causes an assertion error.

BUG=chrome-os-partner:20351
TEST=Plug in video dongle, and suspend. Wake the device up successfully.
BRANCH=spring

Change-Id: I135075e83ad0c40ecfdc9a1d8d7c2585a583a916
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59406
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-21 11:50:47 -07:00
Dave Parker
9a24fd348e Power and battery LED control for Falco.
BUG=chrome-os-partner:19914
BRANCH=falco
TEST=manual and constrained by hw issues.

Signed-off-by: Dave Parker <dparker@chromium.org>
Change-Id: Ief919c5ecf296ee358556d65260f245916c1ecb1
Reviewed-on: https://gerrit.chromium.org/gerrit/59513
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-06-21 10:58:00 -07:00
Randall Spangler
ff9ee74b3f pit: Disable SPI output when AP is suspended
This fixes the problem where the EC consumes too much power during suspend.

BUG=chrome-os-partner:20223
BRANCH=none
TEST=from root shell, 'powerd_suspend'.  1.8V_MICOM should not go up.
  after resume, 'ectool hello' should still work.

Change-Id: I93b781e96bea633419e923a83f1f6d7300ae8c54
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59474
Reviewed-by: Derek Basehore <dbasehore@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2013-06-20 17:49:58 -07:00
Vadim Bendebury
ddcecbe089 drop: Ignore command version for FLASH_PROTECT command
The ec driver does not yet pass the command version properly from app
to the EC. This causes a failure when trying to read flashrom write
protect status (command 0x15).

The thing is that the command version is not even important for this
command, as it was never implemented differently.

As a quick fix - mark the command descriptor as supporting both
versions.

BRANCH=none
BUG=chromium:239197
TEST=manual

 . on peach_pit (with fixed flashrom, coming under a separate fix):
  # flashrom -p ec --wp-status
  flashrom v0.9.4  :  :  on Linux 3.8.11 (armv7l), built with libpci 3.1.10, GCC 4.7.x-google 20130114 (prerelease), little endian
  WP: status: 0x00
  WP: status.srp0: 0
  WP: write protect is disabled.
  WP: write protect range: start=0x00000000, len=0x00000000
  #

Change-Id: I8302457cc2afdfe3bdcb50cfa2bea29969d0c107
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59462
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-06-20 16:47:07 -07:00
Bill Richardson
e493e7a013 Add EC_CMD_TEST_PROTOCOL to fake certain responses.
This lets us force the EC to return various error codes, so that we can be
sure we're seeing them.

BUG=chromium:242706
BRANCH=none
TEST=none

Trigger various errors like so:

  ectool test 0 14
  ectool test 1 14
  ectool test 5 14
  ectool test 8 14
  ectool test 0 33

Change-Id: Ia951cd7afacdcce6c8ec7d35d3bfb5b113dea694
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59327
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-06-20 16:47:06 -07:00
Vadim Bendebury
b839e65241 drop: Ignore command version for VBNV CONTEXT command
The ec driver does not yet pass the command version properly from app
to the EC. This causes a failure when trying to use the vbnvram
context command (23). The thing is that the command version is not
even important for this command, as it was never implemented
differently.

As a quick fix - mark the command descriptor as supporting both
versions. I wonder if we should implement a "don't care" option for
situations like this.

BRANCH=none
BUG=chromium:239197
TEST=manual
   . on peach_pit:
    localhost ~ # mosys nvram vboot  read
    70000000000000000000000000000020
    localhost ~ #

Change-Id: I16fcc0d6752d9e778a026717208d8d6487d5dc77
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59348
2013-06-20 15:51:35 -07:00
Randall Spangler
e74e60c465 Refactor host command interface to support version 3 packets
This will fix EC flash commands on pit, once the host side (u-boot and
cros_ec driver) are upgraded to match.

This change is backwards-compatible the EC still supports the existing
version 2 protocols for talking to existing AP/kernel/ectool.

Once the AP-side supports version 3 for SPI (and existing systems are
upgraded), we will remove older SPI support since we haven't shipped a
product which uses SPI.

BUG=chrome-os-partner:20257
BRANCH=none
TEST=disable cros_ec driver support in ectool; 'ectool hello' works on link
    And with an old ectool which predates this CL, 'ectool hello' also works.
    On pit, from u-boot prompt, 'crosec test' and 'crosec version' work, and
    keyboard works.

Change-Id: I01f193e316e9aa442fe50d632dc8a4681723e282
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58908
Reviewed-by: Simon Glass <sjg@chromium.org>
Commit-Queue: Doug Anderson <dianders@chromium.org>
2013-06-20 13:55:11 -07:00
Aaron Durbin
4d4facda91 falco: peppy: slippy: mark LPC_CLKRUN_L as open drain
The LPC_CLKRUN_L signal on these boards has an external pull
up to the correct PCH rail. Therefore, configure the pin
controlling LPC_CLKRUN_L as open drain.

BUG=chrome-os-partner:19811
BUG=chrome-os-partner:20331
BRANCH=None
TEST=Built and flashed. Interrogated GPIOODR register for port M:
     > rw 0x4006350c
     read 0x4006350c = 0x00000004

Change-Id: I50dc90d784bd1d1f318b401e5d7d6e06bf0f1e47
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59416
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-by: Sameer Nanda <snanda@chromium.org>
2013-06-20 13:54:38 -07:00
Vadim Bendebury
5290aee129 Enhance host command debug output
Add code to print out command version and command mask.

BRANCH=none
BUG=none
TEST=manual
   . see this in on the EC console when hcdebug is on

   [1022.289347 HC V:0 VM:3 0x17:00000000]
   [1022.289728 HC resp:70000000000000000000000000000020]

Change-Id: I443401966b81349f41246d3a118f5f145ed4b160
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59347
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-06-20 07:27:01 -07:00
Vincent Palatin
86a4e8b41c spring: new TPS65090 parameters to avoid cap ringing
Starting DVT, Spring boards have updated hardware to prevent cap ringing
when a charger is plugged.
Adjust T01, T12, T23 and T34 current limit to 87.5% as expected by this
mechanism.
Push all termination voltages to 2.1v as the actual temperature range is
not related to the real charge temperature.

On pre-DVT boards, this will just reduce the max charging rate by 12.5%.

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

BRANCH=spring
BUG=chrome-os-partner:18987
TEST=on Spring EVT, use "pmu" command on the EC console and see
registers 0x5 to 0x9 contain : "3e 5e be fe ff"

Original-Change-Id: Ie078a38251cd2cb50ee605c34a6818bf994d148d
Reviewed-on: https://gerrit.chromium.org/gerrit/49484
Commit-Queue: Jon Salz <jsalz@chromium.org>
Reviewed-by: Jon Salz <jsalz@chromium.org>
Tested-by: Jon Salz <jsalz@chromium.org>
(cherry picked from commit 4122b222859db34cb6eee827cba4988df458d916)

Change-Id: I78355651f5f7abc0546fec0c4df8d38ea3549b2d
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59197
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-19 17:12:36 -07:00
Vic Yang
c5d978baac spring: Hard-limit current draw from Toad
The Toad cable is browning out from time to time. Let's limit its
current in aggressive mode.

Also fix a bug in hard current limit calculation.

BUG=None
TEST=Plug-in Toad cable and see PWM duty cycle starts higher.
BRANCH=Spring

Change-Id: I06d64418989aa32a99545986fe841914f054acde
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59161
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-19 17:12:35 -07:00
Bill Richardson
89ee180156 Falco WP is active low, not active high
Read the value of the WP GPIO correctly.

BUG=chrome-os-partner:20091
BRANCH=none
TEST=manual

On the EC console, run

  gpioget WP_L

Short the WP pin, run it again. You should see it change.

Change-Id: Id85c1d69c88ea3df4e529e844aa2455643f1a41b
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58948
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-06-18 16:12:08 -07:00
Bill Richardson
9bb5c83d6c Actually USE the falco battery for falco.
I just noticed that we've not been using the falco battery on falco. Not
sure how this slipped by.

BUG=chrome-os-partner:18788,chrome-os-partner:20213
BRANCH=none
TEST=none

Change-Id: Ia1d0f322ce8e296db49f91a3bf8eab593db97638
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59085
2013-06-18 16:12:07 -07:00
Vic Yang
7381c7c5f6 More keyboard scan test
BUG=chrome-os-partner:19236
TEST=Pass the test
BRANCH=None

Change-Id: Ie0b0657c0bca2ec459cc8b04d9e06199b70414d9
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58795
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-18 10:31:09 -07:00
Vic Yang
80aa9604d2 Update USB device type before notifying host
Otherwise the host might get the old device type.

BUG=None
TEST=None
BRANCH=Spring

Change-Id: Ia77f5c06ffb28c8ace4587e07aed776eae477b75
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58969
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-17 22:35:29 -07:00
Vic Yang
e03efaa475 More flash unit test
BUG=chrome-os-partner:19236
TEST=Pass the test
BRANCH=None

Change-Id: Idfbbdd40948ea4f8468cf9de95eee17e0d0773ed
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58794
2013-06-17 20:27:27 -07:00
Vic Yang
7de03b0f0e A method to mock host command
This will be used often, so let's move it to test_util.c.

BUG=chrome-os-partner:19235
TEST=Pass flash test.
BRANCH=None

Change-Id: I2f685f657f8742c2b29e3b9c88ba01daacf982f8
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58793
2013-06-17 20:27:27 -07:00
Vic Yang
b93658ba02 Redetect USB device type on non-standard charger
If the device type is non-standard charger, it could be the user
plugging in the connector too slowly and TSU6721 BCD timer expired
before the connector is fully plugged in.

Extending TSU6721 BCD timer causes a big delay in Apple charger
detection, and breaks how we detect over-current. Let's do this by
a re-detection instead. If we see a different device type, just
update the device type we have. Otherwise, we reset TSU6721 to force a
re-detection.

BUG=chrome-os-partner:19765
TEST=Plug in a charger half way in. Wait for a second, plug it in all
the way. See device type changed after few seconds.
TEST=Plug in a charger half way in and leave it there. Only see
redetection once.
TEST=Plug in a charger all the way in. See correct device type.
TEST=Plug in an Apple charger. See correct device type within a second.
TEST=Plug in a Nexus 10 charger. See correct device type after 5
seconds.
BRANCH=spring

Change-Id: Ia7733972842e6040b545670df043058c55ae3c01
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58799
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-17 10:31:50 -07:00
Vic Yang
37b5adb123 Revert "Extend TSU6721 BCD timer to 3.6 seconds"
This reverts commit 6759fdc3e6.

Extending TSU6721 BCD timer causes problems on Apple charger detection.

BUG=chrome-os-partner:19765
TEST=Check Apple charger detection and over-current handling work
properly.
BRANCH=spring

Change-Id: Ie3111477e3614410bd96d65ad2a0b430bd240835
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58798
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-17 09:38:13 -07:00
Dave Parker
05712ce0ba Peppy: Update LED color names in comment. Mark active low.
BUG=None
BRANCH=peppy
TEST=make BOARD=peppy
	gpioset PWR_LED0_L 0
	gpioset PWR_LED1_L 0
	gpioset BAT_LED0_L 0
	gpioset BAT_LED1_L 0

Change-Id: I9342198678465367f92758921fa84cd253e983fd
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58345
Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org>
2013-06-17 09:38:12 -07:00
Vic Yang
aaac3935d2 Make target for test coverage report generation
By 'make coverage', lcov is used to generate test coverage report in
HTML format stored in coverage_rpt folder.

BUG=chrome-os-partner:19235
TEST=Generate a report.
BRANCH=None

Change-Id: I44142eaaeb897cf09179764781120370920144cd
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58203
2013-06-16 20:14:01 -07:00
Randall Spangler
7402388c58 Move i2c_old_response flag to i2c interface module
It's not used by the host command module or handlers, so shouldn't be exposed to them.

BUG=chrome-os-partner:20185
BRANCH=none
TEST='ectool hello' still works

Change-Id: I0122bd9ef33e71afab7e5cc035fb3b9d220334c6
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58632
Reviewed-by: Vic Yang <victoryang@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2013-06-14 16:16:23 -07:00
Randall Spangler
981208dbcf Move lpc-specific flags out of host command args
The flags are specific to the LPC interface and not used by the host
command module, so shouldn't be present at that level.

BUG=chrome-os-partner:20185
BRANCH=none
TEST='ectool hello' still works

Change-Id: I6b2c3208fc398ea40d9e7cc7bf5ec206b3e317d8
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58631
Reviewed-by: Vic Yang <victoryang@chromium.org>
Reviewed-by: Simon Glass <sjg@chromium.org>
2013-06-14 16:16:22 -07:00
Aaron Durbin
1bd57bba38 haswell: mark PCH_SMI_L as open drain
In order not to leak power to the PP3300_PCH rail
mark the PCH_SMI_L as open drain.

BUG=chrome-os-partner:19811
BUG=chrome-os-partner:20175
BUG=chrome-os-partner:20054
BRANCH=None
TEST=Built and booted Faloc. No ill effects.

Change-Id: Ia4071067af177684579e146199f9ea174788b933
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58681
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
2013-06-14 16:16:11 -07:00
Aaron Durbin
17e9c06a1a haswell: Add notes about PL6 weirdness
It was found that PL6 behaves in an inverted way when it is
configured as open drain. Add notes about determining why this
is. Apparently PL6 is an oddity w.r.t. the other pins.

BUG=chrome-os-partner:19811
BRANCH=None
TEST=built

Change-Id: I2d5b27f49c4e51ba4eb75cda9c798b9a5793f767
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58679
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
2013-06-14 16:16:09 -07:00
Bill Richardson
7884ae4821 Fix some stupidness in ectool's comm_init() handling
ectool was checking for negative return values on comm_init(). It should
have been checking for nonzero. Or comm_init should have been returning
negative. Whatever. The ectool utility was supposed to be a quick-n-dirty
debugging tool, so it's not very well tested.

BUG=chromium:249218
BRANCH=none
TEST=manual

Fired up VM instance, tried old version and new version. Old version
coredumps, new version doesn't.

Change-Id: I0e27d78eead562a16ff826fb80de9e6b07476e12
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58712
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-06-14 16:16:09 -07:00
Vic Yang
6a701c5957 spring: Show green LED when 94% charged
For Spring, we cannot rely on the battery current to decide if it's
fully charged. Therefore, we just use the battery charge level as the
sole indicator. The battery spec says it might stop charging when charge
level is 95%+, so we should show green LED when it reaches 94%.
Otherwise, show yellow LED.

BUG=chrome-os-partner:20017
TEST=Manual. Monitor the battery level and see LED turns green when it
goes from 93% to 94%.
BRANCH=spring

Change-Id: Ia525b2e89ebe36cc2ccce1ea0b798ba03be258a7
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58059
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-13 22:16:06 -07:00
Bill Richardson
1695760e95 Rename GPIO_HI_Z macros to more descriptive GPIO_ODR_HIGH/LOW
GPIO_HI_Z was a bit misleading (it's high impedance by default, but it's
actually an output not an input), but when we added GPIO_HI_Z_OPEN to mean
"open-drain output, pulled low by default", it got too confusing.

This renames those macros to:

  #define GPIO_ODR_HIGH    (GPIO_OUTPUT | GPIO_OPEN_DRAIN | GPIO_HIGH)
  #define GPIO_ODR_LOW     (GPIO_OUTPUT | GPIO_OPEN_DRAIN | GPIO_LOW)

BUG=chrome-os-partner:18788
BRANCH=none
TEST=none

No functional change, just renaming some macros. If it compiles, it should
be unchanged in behavior.

Change-Id: Ic84d7be8531f2b240a8eca4f6cfe5291ebd2d5ef
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58596
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
2013-06-13 18:13:23 -07:00
Duncan Laurie
f2fa913320 falco: fix RCIN# GPIO setting
The gpio pin used for RCIN# should be configured as open drain as the
rail is pulled up by a non-EC rail. Driving it high would leak power.

BUG=chrome-os-partner:19355,chrome-os-partner:20173
BRANCH=none
TEST=manual: boot on falco without RCIN# causing reset and
the 'apreset warm' EC command works as expected.

Change-Id: I197928fd3cac27db3add9dd842e3171f23c9d71e
Signed-off-by: Duncan Laurie <dlaurie@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58590
2013-06-13 18:13:20 -07:00
Vic Yang
61ae739eef More queue unit test
Check queue_remove_unit returns 0 on queue empty.

BUG=chrome-os-partner:19236
TEST=Pass the test.
BRANCH=None

Change-Id: I3162ba5e57e9111e1896954d815c26882fa372eb
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58331
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-13 18:13:19 -07:00
Vic Yang
3759746550 More hooks unit test
Checks we cannot call non-registered deferred functions.

BUG=chrome-os-partner:19236
TEST=Pass the test.
BRANCH=None

Change-Id: I6cf67f85c7749632627819cc05e6809c040fb697
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58330
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-13 18:13:17 -07:00
Vic Yang
11e7d31dbb More utils unit test
BUG=chrome-os-partner:19236
TEST=Pass the test.
BRANCH=None

Change-Id: I4075f3fb0ef23a54b4ca249a21fe28e698e595cb
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58329
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-13 18:13:16 -07:00
Vic Yang
2a270f5978 Incorporate CABLE_DET circuit change
Now that when ID_MUX=1, DP_SNS can be connected to either ID_OUT or
CABLE_DET, we need to handle the case where a video dongle is not
reflected by DP_SNS going low. This is done by leaving ID_MUX=1 for USB
host and monitor its detachment by sensing VBUS. As for unpowered
dongle, we just ignore it when it's not recognized.

Note that due to the polarity of CABLE_DET, we now sense dongle
detachement by DP_SNS < 0.25V. To support older boards with ID_OUT
connected, we also disconnect video dongle on system suspend and
shutdown.

BUG=chrome-os-partner:19911
TEST=Powered/unpowered video dongle detected correctly.
TEST=Add a console command to simulate CABLE_DET being high. With that,
check battery charges with powered video dongle. Check nothing happens
with unpowered video dongle.
TEST=Check video dongle considered disconnected when OTG dongle plugged
in or system shutdown.
BRANCH=spring

Change-Id: If7b530b67c98c85017ca663d43c5148f0eb9163c
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58070
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-06-13 17:21:36 -07:00
Bill Richardson
cc9b3464e2 Falco: Disable IFAULT_HI on the BQ24738 charger
Partners are adamant that this needs doing. Whatever...

BUG=chrome-os-partner:19868
BRANCH=none
TEST=none

You can run the "charger" command on the EC console to see that the option
bits have been changed. I couldn't reproduce the original complaint, so I
don't know if this solves it.

Change-Id: I428697f69a7ba1b360e2acb123b42ed41244ebc5
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58576
2013-06-13 15:52:29 -07:00
Bill Richardson
74f5aaaa50 Use battery's precharge_current value for deep discharge recovery.
We've been providing the battery's max voltage and the charger's minimum
current to try to awaken a deep-discharged battery. For some batteries, that
doesn't appear to be enough. This change will use the battery's
preconfigured precharge_current value instead.

BUG=chrome-os-partner:20142
BRANCH=none
TEST=manual

I don't have a deep-discharged battery to try it on. I've been using these
values manually in order to get the battery away. With no battery connected,
you can run the "charger" command on the EC console to see what values it's
using. They should match what the battery wants.

Change-Id: I16d06011103ba70682397859d9844a37938d3e90
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58575
2013-06-13 15:52:16 -07:00
Randall Spangler
d46ea680f7 pit: AC detect signal is a simple GPIO now
Frank's reworks turn AC_PWRBTN_L from a signal which co-mingled
AC-detect and pwower button press to a straight AC detect signal.
Switch from the hacky snow version of extpower to the simple gpio
version.

BUG=chrome-os-partner:20034
BRANCH=none
TEST=manual, using gpioget command

   1. With AC plugged in, AC_PRESENT=1
   2. Press power button.  Still AC_PRESENT=1
   3. Unplug AC, AC_PRESENT=0
   4. Press power button.  Still AC_PRESENT=0

Change-Id: I35df4ba80d0003310f3e01d9815158cfa3d0cb51
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58550
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2013-06-13 12:51:08 -07:00
Bill Richardson
c09f37cf09 Falco: Placeholder to maybe disable IFAULT_HI on battery charger
We've been asked to disable the IFAULT_HI protection for the Falco battery
charger, with no explanation. This change adds the code to do that, but
leaves it ifdef'd out. If/when we get confirmation that we really want to do
that, we can.

BUG=chrome-os-partner:19868
BRANCH=none
TEST=none

No functional change yet, nothing to test.

Change-Id: I02a71461f55849a2fdb5ec220fe00e3c812ddf0b
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/58467
2013-06-13 09:02:13 -07:00