Commit Graph

1805 Commits

Author SHA1 Message Date
Simon Glass
7189a9762e stm32l: Disable interrupts while running from flash
The curent code ends up creating a veneer for interrupt_enable/disable()
which isn't really needed (see below). By calling the interrupt code while
still running from flash we can avoid this.

I cannot see any problem with the current implementation, but it seems that
with this patch I also avoid an exception.

BUG=chrome-os-partner:20976
BRANCH=none
TEST=manual
Build EC and see code generated like this:

200029ec <iram_flash_write>:
200029ec:	b538      	push	{r3, r4, r5, lr}
200029ee:	460d      	mov	r5, r1
200029f0:	4604      	mov	r4, r0
200029f2:	f000 f83d 	bl	20002a70 <__interrupt_disable_veneer>
...

20002a4a:	f000 b809 	b.w	20002a60 <__interrupt_enable_veneer>
20002a4e:	bf00      	nop

20002a60 <__interrupt_enable_veneer>:
20002a60:	b401      	push	{r0}
20002a62:	4802      	ldr	r0, [pc, #8]	; (20002a6c <__interrupt_enable_veneer+0xc>)
20002a64:	4684      	mov	ip, r0
20002a66:	bc01      	pop	{r0}
20002a68:	4760      	bx	ip
20002a6a:	bf00      	nop
20002a6c:	080007f5 	.word	0x080007f5

20002a70 <__interrupt_disable_veneer>:
20002a70:	b401      	push	{r0}
20002a72:	4802      	ldr	r0, [pc, #8]	; (20002a7c <__interrupt_disable_veneer+0xc>)
20002a74:	4684      	mov	ip, r0
20002a76:	bc01      	pop	{r0}
20002a78:	4760      	bx	ip
20002a7a:	bf00      	nop
20002a7c:	080007f1 	.word	0x080007f1

With this patch the veneers go away.

Change-Id: Idfe173b4c8d45a142914b2388bcff8ba708c657c
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/62243
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-17 14:09:54 -07:00
Randall Spangler
df79191f84 Move switch module from chip/lm4 to common
There's nothing LM4-specific about the switch module; it's just
checking GPIOs and updating a memory-mapped register.

No code changes; just moving a file.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=verify switch.c is compiled for link and falco, but not pit or spring

Change-Id: I186f3aac1405c7ba8d94b47bb2586c2ad191daba
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61930
2013-07-17 10:49:48 -07:00
Randall Spangler
672057cb7e Split x86 power button logic out of switch.c
Power button logic is common across all platforms and is not
LM4-specific, so move it to its own module.  Switch.c will eventually
be moving to common/ and will common across all platforms (not just
x86), and splitting out the x86 power button logic is needed before
that too.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=manual
     1) power on system with both lid and power button.
     2) power+refresh -> reboots
     3) power+refresh+esc -> recovery mode
     4) power+refresh+downarrow -> reboots, AP stays off
     5) toggling recovery GPIO via servo should generate SW debug output
        showing bit 0x10 toggling

Change-Id: I07714e2c035dceece66f90407983397d2697e7d5
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61780
2013-07-17 10:49:48 -07:00
Randall Spangler
d48828757d Fix extracting CONFIG tokens from config.h
We need to use cpp -dM instead of -dN, because -dN doesn't process #undef
statements.  That is, if you have
"  #define CONFIG_FOO"
"  #undef CONFIG_FOO"
then -dN will happily print both lines, which results in CONFIG_FOO being
defined when processing the makefile.  -dM processes the defines and undefs
so that the resulting list of macros only includes those that are defined.

We didn't notice this before, because we temporarily commented out
config statements instead of #undef'ing them - or the configs which
were undef'd only resulted in conditional non-compilation of pieces of
code inside a file instead of the whole file not being compiled.

This change also tidily alphabetizes the resulting configs.

It also better filters CONFIGs to ensure that
"  #define __CROS_EC_CONFIG_CHIP_H"
does not show up as a CONFIG_CHIP_H token, as it did previously.

BUG=chrome-os-partner:20985
BRANCH=none (though may be needed if any future cherry-picked change requires
             undefining a CONFIG)
TEST=Add #undef CONFIG_ADC to the end of config.h and see that the ADC module
     is not compiled.  Also helps to add
         $(info $(_flag_cfg))
     to the Makefile to see the list of tokens, and verify that CONFIG_ADC is
     not among them.

Change-Id: I18db60099e87857473ba54c3c9fff1116d4f1a93
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/62230
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-17 10:49:47 -07:00
Aaron Durbin
60a1f6cada bq24715: compilation fix
I accidentally cut and pasted expressions for REG_TO_CURRENT
usage in the  initializers for the charger_info struct.
This obviously causes things to blow up during compilation.

BUG=chrome-os-partner:20372
BRANCH=None
TEST=Have been using this on bolt.

Change-Id: Ie5e2ca10f7a3dce0ccb17b889a173a65451b8c92

Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Change-Id: I8ba5da663a1271cba04f57e407eaff96bc052735
Reviewed-on: https://gerrit.chromium.org/gerrit/62208
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-16 16:40:39 -07:00
Aaron Durbin
7d6e01d617 lm4: make configure_kblight_gpios() board dependent
The configure_kblight_gpios() funciton was specific to
the link board. Therefore, move the function to be defined
within the board-specific file.

BUG=chrome-os-partner:20372
BRANCH=None
TEST=Built. Tested similar change on bolt.

Change-Id: Ib5847130450024c50d6526d2c1a64d67ab501637
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/62209
2013-07-16 16:40:38 -07:00
Randall Spangler
0c73fdae77 Make a top-level config.h file to include sub-configs
This file will soon contain the exhaustive list of all CONFIG defines
and their descriptions.

Chip-level configs are renamed to config_chip.h to avoid naming
conflicts.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=build all platforms

Change-Id: I9e94146f5b4c016894bd3ae3d371c4b9f3f69afe
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/62122
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-16 12:06:31 -07:00
Randall Spangler
873e4425c5 Remove unneeded direct includes of board.h and config.h
Both of these are included via common.h, which is in turn included by
most other header files.  Directly including board.h or config.h is
redundant and discouraged.

No code changes, just removing #includes.

This is in preparation for making a top-level config.h file, but that
change will be easier to review if it doesn't touch as many files.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=build all platforms

Change-Id: I204bcebe5607c6e6808821eb071cfc31d2a93a7c
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/62121
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-16 12:06:30 -07:00
Randall Spangler
f8955d14b6 Remove unused board_version enums
These were briefly used on link, and are not used by any other
platform.  The values for those platforms are almost certainly wrong,
and incorrect information is worse than no information.

This does not remove reading the stuffing resistors - it just removes
the assumption that they map to PROTO1 and EVT.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=compile all platforms

Change-Id: I2ba19fd52660559bfd1d8e3b8a9949e9b8abbddf
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61929
2013-07-16 12:06:30 -07:00
Bill Richardson
1eeafbacbf Add 'version' option to ectool test command.
This is just handy to be sure we're correclty passing the command version to
the EC.

BUG=chromium:242706
BRANCH=falco, peppy
TEST=manual

Run "hcdebug params" the EC console (using ToT EC)

Compare the output on the EC console when you run these two commands on the
host:

  ectool test 0 13
  ectool test 0 13 1

You should see these two lines (among other things):

[5728.756652 HC 0x0a.0:000000000d00000030313233343536373839616263646566303132333
43536373839414243444546]

[5730.809596 HC 0x0a.1:000000000d00000030313233343536373839616263646566303132333
43536373839414243444546]

The "0x0a.0" and "0x0a.1" indicate that the version is being passed
correctly.

Change-Id: I23b97ac6622274a157717f9375945d0866691a37
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61920
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-16 10:59:06 -07:00
Vic Yang
a8cda83a27 spring: lower LED brightness to save power
Lower LED brightness:
  - Green:  0x80 -> 0x10
  - Yellow: 0x80 -> 0x40 (looks equivalently bright to green @ 0x10)
  - Red:    Not changed since it's an error condition

BUG=chrome-os-partner:20768
TEST=Build success
BRANCH=Spring

Original-Change-Id: Ib80b4f5c746163d98a09e21246ea97a6aeb2c054
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61672
Reviewed-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit 1f6e5f8a1e074bd91acd3fc0b3de268495199c10)

Change-Id: I8f37cfa79d9fd30f503318e0913f4c12c1737219
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61852
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-15 14:11:13 -07:00
Randall Spangler
20e3309579 Remove fancy trickle charging logic
We implemented a fancy state machine for link to try and feed
almost-dead batteries smaller amounts of current than the charger
could normally supply, by dithering down the voltage to less than was
requested.  It's a lot simpler just to give the battery the smallest
non-zero amount of current we can give it at the voltage it asks for.

Remove the precharge code, since we won't use it on any future
platform and link has already branched.

BUG=chrome-os-partner:20881
BRANCH=none
TEST=find a really dead batery and try to charge it, or do what I did
     and just hack the battery module to lie about the requested values,
     and see that it always gets the minimum current step at the requested
     voltage.

Change-Id: I30bcb62bbe215abafb3a98c52e2afed3b74ead1a
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61789
2013-07-15 14:10:45 -07:00
Bill Richardson
1aab265403 Debug host command responses for error results too.
Just because the EC doesn't like a host command doesn't mean it doesn't send
a response. When we have HC debugging on, we want to see that too.

BUG=chrome-os-partner:20647
BRANCH=falco, peppy
TEST=manual

Run "hcdebug params" on the EC console.
Run "ectool test 3 13" on the host.

Before this CL, you'd see

[4369.366344 HC 0x0a.0:030000000d00000030313233343536373839616263646566303132333
43536373839414243444546]
[4369.367315 HC err 3]

After this CL, you see:

[46.979220 HC 0x0a.0:030000000d0000003031323334353637383961626364656630313233343
536373839414243444546]
[46.980067 HC err 3]
[46.980344 HC resp:30313233343536373839616263]

Change-Id: I9416a5e4a9c643dba0ce29b589832c62634e916b
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61791
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-15 14:10:38 -07:00
Yen Lin
09f0e06874 puppy: change XPSHOLD interrupt on both edges
Change XPSHOLD interrupt from rising edge to rising and falling
edges. Without this change, lid has to be opened twice to power on
the system.

BUG=nvbug 1323023
TEST=tested on Venice

Change-Id: I49e953546140bc8de954ac22b59641efb299ba72
Signed-off-by: Yen Lin <yelin@nvidia.com>
Reviewed-on: https://gerrit.chromium.org/gerrit/61697
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-12 16:49:18 -07:00
Dave Parker
92b62d1cd9 x86: Enable all wireless switches when going into S0
BUG=None
BRANCH=slippy,peppy,falco,wolf
TEST=Boot device and verify WLAN and WWAN enable GPIOs are active.

Change-Id: I1b488bc26ddbe50c570aefd8fcd3cdcb4d5b38d4
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61653
Commit-Queue: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-12 16:49:14 -07:00
Vic Yang
396cb8e69e Add console editing unit test
This tests console editing and history functionality.

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

Change-Id: Ia3edf2dd627d081fbcae7f775992d7570e5e1dd0
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61555
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 22:32:53 -07:00
Vic Yang
7864372297 Add extpower-gpio unit test
This tests host event and hook are triggered when AC status changes.

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

Change-Id: I9e4263f3f6e273bfb0b24671a4e5c56b20a04e1a
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61554
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 22:32:52 -07:00
Vic Yang
2475cce9ad Add I8042 keyboard unit test
This tests I8042 scancode and typematic.

BUG=chrome-os-partner:19236
TEST=Pass all tests many times.
BRANCH=None

Change-Id: I8457b7b807b694b0bae32abf1647961f946dc5e1
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61553
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 22:32:52 -07:00
Dave Parker
b2bc8aaa20 Basic G781 temp sensor support for Falco and Peppy.
This lets us read the internal and external temp values.
More functionality to come once we figure out what is
needed.

BUG=chrome-os-partner:20432
BRANCH=falco,peppy
TEST=run ec 'temps' command on Falco and Peppy.
Signed-off-by: Dave Parker <dparker@chromium.org>

Change-Id: I4f452f438e0a158dc8b34901e3faad3ce36d28b2
Reviewed-on: https://gerrit.chromium.org/gerrit/60145
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Commit-Queue: Dave Parker <dparker@chromium.org>
Tested-by: Dave Parker <dparker@chromium.org>
2013-07-11 22:32:52 -07:00
Randall Spangler
eb8920c939 Split wireless power/radio control out of switch.c
Chipset control of wireless power uses the new API instead of overriding
the wireless power itself.

Refactor board-specific support for it to just a few config #defines
instead of board-specific functions.  This makes some assumptions
about the polarity of the enable signals.  Not making those
assumptions would require defining an array of structs or some other
heavier-weight board-specific info.  Since the assumptions hold for
all current boards, let's make them now because this is a step in the
right direction, and reserve doing something more general until we
actually have a use case for it (so we build in just the flexibility
we need).

BUG=chrome-os-partner:18343
BRANCH=none
TEST=build all platforms; see that link wifi turns on at boot and off at
     shutdown (verify via 'gpioget' from EC console)

Change-Id: Ic036e76158198d2d5e3dd244c3c7b9b1e8d62982
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61608
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2013-07-11 16:51:40 -07:00
Randall Spangler
6696843708 Move x86 backlight-enable passthru code to its own module
This code is not LM4-specific, it's x86-specific.  So it doesn't
belong in chip/lm4.  Put it in its own module rather than leaving it
in switch.c, since some x86 systems may need the power button state
machine but not the backlight-enable passthru.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=Quickly run a magnet over the lid switch; the backlight goes off and then
     back on.

Change-Id: I72f7139b73f91539dcfbe6b5cb6d56587ab66fde
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61595
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2013-07-11 16:51:39 -07:00
Bill Richardson
a26b0dbd74 Falco: AC adapter identification command
This adds a function to identify the AC adapter. We'll need this to set
various battery charging limits, based on the capability. This only applies
to Falco, AFAIK.

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

Plug in various approved adapters. From the EC console, run "adapter". It
should tell you the rated power for each one.

Change-Id: Id6d142fa81f20ec9233b0faa2fcb1d53cf7b7ef5
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61515
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 13:39:16 -07:00
Vic Yang
4d270c1507 Add thermal host and console command test
This checks the functionality of thermal engine related host and
console commands.

BUG=chrome-os-partner:19236
TEST=Pass all tests.
BRANCH=None

Change-Id: I604ed3bfed3549b2573fac65da83450acd3f2797
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60964
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 04:26:14 -07:00
Vic Yang
62f2a33ff2 Add flash host read command test
This checks the correctness of data returned by flash read host command.

BUG=chrome-os-partner:19236
TEST=Pass all tests.
BRANCH=None

Change-Id: I3b97addb9b14922e9f33a71b865000ae9a8d40a8
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60963
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 04:26:10 -07:00
Vic Yang
b3f1d0d059 Add function to inject console input from test
This can be used to test console command.

BUG=chrome-os-partner:19236
TEST=Build success
BRANCH=None

Change-Id: I7ce002f9e66fd7786492bacb453f126b9766d741
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60978
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-11 04:26:09 -07:00
Randall Spangler
6b46a0cfc5 Refactor x86 chipset code
This moves most of the code into a common module, leaving only the
board-specific GPIOs (now listed in a struct in board.c) and the
chipset-specific state machine with multiple copies.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=boot link; verify suspend and resume work; shut back down and see
     it go to G3 after 10 sec.

Change-Id: Iafa8ba55a4870bb0119ff4161a1a9054fcc7955f
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60949
2013-07-10 11:16:43 -07:00
Vic Yang
ee4eedf29e Improve over current detection
This includes:
  - Capturing over-current event on transition from known device type to
    unknown device type.
  - Limiting current draw when device type is not determined yet.
  - Shortening CABLE_DET delay to 0.6 seconds so that over-current event
    for USB host has a 0.6-second window for the charger to recover.

BUG=chrome-os-partner:20648
TEST=Charge with Arrow
BRANCH=Spring

Original-Change-Id: Ie66ccd2d69adf8436a67e504f82da6eca3d0b14f
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60730
(cherry picked from commit 03493a72db6ea5e12eda2a9488253d7fae6eec0b)

Change-Id: I5d3cf7054960f5d4f924bce76f87257af57ebdb8
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61400
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-10 11:16:39 -07:00
Vic Yang
913f227e36 Remove fast PWM tweak mode
Fast mode was originally introduced to prevent the user seeing battery
assist mode. Now that we don't report battery assist mode to the user,
let's remove this mode to improve stability.

BUG=None
TEST=Charge with various chargers. See stable PWM duty cycles.
BRANCH=Spring

Original-Change-Id: I4a2a66e03d50dea7a28fc826369dcf2b3452007a
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60754
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit 46a2073437f9a150656d37e8bd9219b01b1b3ac1)

Change-Id: I8c5b24946385576ada9f08e342beb1a70c55c974
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61399
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-10 11:16:38 -07:00
Vic Yang
0d362effd7 spring: Fix a bug of PWM duty cycle upper bound
The return value from battery_current() is non-zero if there's an error.

Also rewrite the condition to make it more readable.

BUG=None
TEST=Check PWM duty cycle can be set to 100%
BRANCH=Spring

Original-Change-Id: If13a295d87a1abd2e67f1bb216dc58d3f3d29ba4
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60735
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit 29a157e5276a4f0ed004aaab365ad9e32b68c250)

Change-Id: I7383bfd49931c8555f92a74e5960bd7e40102fa6
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61398
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-10 11:16:37 -07:00
Vic Yang
a8e15b27bf spring: Update battery LED less frequently when charging
When the user uses about the same amount of power the charger provides
and the battery level is around 94%, the user might see the LED hop
between green and yellow. We should update LED color less frequently in
this case.

BUG=chrome-os-partner:20677
TEST=Hack a console command to fake battery charge level. Change battery
level between 93 and 94, and see LED color only change every 15 seconds.
BRANCH=Spring

Original-Change-Id: I55cda9aee5f79465e9094355a1f66666d018cddd
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60851
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Signed-off-by: Vic Yang <victoryang@chromium.org>
(cherry picked from commit d03e35c42835e4b52779499d0a4b8ebdcb1074f2)

Change-Id: I51090418cdbb7a6fea0163e04d9a962b46268f34
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61397
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-10 11:16:37 -07:00
Vic Yang
56bd316488 spring: Drop support for VFET2 video poewr output
VFET2 is only used by early stage boards. Let's drop it now.

Also, disable power output when power good for VFET is not set. This
essentially adds retry for video power output.

BUG=chrome-os-partner:18186
TEST=Boot and test video output.
BRANCH=Spring

Original-Change-Id: I1937522a6a523a4f5dbeb9882518ca6e37655bea
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60852
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit e82589e073c5a863797fa87ecaa1dfafb1a9228d)

Change-Id: Ib043f952e699eb99b373da205379f56230887f6a
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61396
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-10 11:16:36 -07:00
Vic Yang
01ed345ebd Uprev panic data struct version
The struct was changed in commit 74c34bbad, but the struct version was
left as 1. We need to uprev this so the data returned by host command is
useful.

BUG=chrome-os-partner:16901 chrome-os-partner:20548
TEST='ectool panicinfo' with new and old struct. Compare output with
output from console command 'panicinfo'.
BRANCH=None

Change-Id: I4df3142497dc5ee21d100c4cb8118fb7a0ce7a7e
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60314
Reviewed-by: Daisuke Nojiri <dnojiri@google.com>
2013-07-10 11:16:18 -07:00
Bill Richardson
d67f83a63c Use sample averaging on ADC to increase accuracy
The AC adapter detection isn't measuring the expected values, most likely
because we're not providing enough current for the ADC circuitry to sample.
This tells the ADC to take 64 samples for every reading and average them
together. That seems to fix it.

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

To test, use a scope to probe the voltage pin 6 of the AC adapter connector.
Compare that with the measured result from the ADC, by using the EC
console's "adc" command.

Before this change:

  Adapter   Probed(mV)    ADC(mV)   error
    45W       469          415       11.5%
    65W       600          530       11.6%
    90W       794          701       11.7%

After this change:

  Adapter   Probed(mV)    ADC(mV)   error
    45W       469          452       3.6%
    65W       600          590       1.6%
    90W       794          773       2.6%

Close enough.

Change-Id: I5ab5526934a5a2711969a90a26631d54c7863da7
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61346
Reviewed-by: Randall Spangler <rspangler@chromium.org>
2013-07-09 18:56:36 -07:00
Randall Spangler
3bc27f0627 Fix EC_ENTERING_RW not being asserted
GPIO_ENTERING_RW is an enum, not a macro, so the #ifdef evaluated to false.

BUG=chrome-os-partner:20761
BRANCH=spring
TEST=compile on all platforms; mccroskey doesn't break

Change-Id: Ib50989c7d2e47ab573ebc242259709b1712297ea
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61295
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-09 17:16:09 -07:00
Dave Parker
666bbdb3d7 Initial board commit for Wolf based on Slippy.
Additional fix-ups will come in subsequent CLs.

BUG=chrome-os-partner:20760
BRANCH=wolf
TEST=Verify "make BOARD=wolf" complete succesfully.

Change-Id: I24a37f3bebb1feb37c83c2c1b4f8f8db7bbcb2d8
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61318
Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org>
2013-07-09 16:20:14 -07:00
Dave Parker
186a28fd95 Falco: Implement battery cut off comamnd for factory
BUG=chrome-os-partner:20723
BRANCH=falco
TEST=Manual. On a DUT with a battery run "ectool batterycutoff"
and power down if still connected to AC. Unplug AC. The EC
should be unpowered. Verify the only way to boot the system is
to plug AC back in.

Change-Id: I7a4cef1f69efe673370a450385f6fa91722d2b50
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61294
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Tested-by: Bill Richardson <wfrichar@chromium.org>
2013-07-09 16:20:13 -07:00
Shawn Nematbakhsh
aca89b05bb Add CONFIG_BOARD_VERSION flag for boards which have version strapping.
Rather than implementing board version only for Link, implement for each
board which has version strapping.

BUG=chrome-os-partner:20295.
TEST=Manual. Run "ver" command on Peppy, verify correct board version is
returned.
BRANCH=None.

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

Change-Id: I57656a645c6bcd1fdb2e7e4aba91b4ec4b8ad8ec
Reviewed-on: https://gerrit.chromium.org/gerrit/61186
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-by: Dave Parker <dparker@chromium.org>
Tested-by: Shawn Nematbakhsh <shawnn@chromium.org>
Commit-Queue: Shawn Nematbakhsh <shawnn@chromium.org>
2013-07-09 15:21:26 -07:00
Bill Richardson
ab59576a43 Fix uninitialized constant in util/comm-dev.c
This made the /dev/cros_ec method fail when reporting the version.

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

 ectool version

Used to fail; now it works again.

Change-Id: Ib5b7188f713981cffce36d065255d81b102d4bbe
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61133
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Commit-Queue: Randall Spangler <rspangler@chromium.org>
2013-07-09 08:51:43 -07:00
Dave Parker
528ddf7660 Implement battery cut-off host command for Peppy.
BUG=chrome-os-partner:20720
BRANCH=peppy
TEST=Run 'ectool batterycutoff' on the DUT, shut it down, and unplug
AC power. Verify the only way to turn it on is by plugging the AC power
back in.

Change-Id: Ia6a93249843b72f4396d083cfe15a263d0a1836d
Signed-off-by: Dave Parker <dparker@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61047
Reviewed-by: Shawn Nematbakhsh <shawnn@chromium.org>
2013-07-09 08:51:43 -07:00
Randall Spangler
3e7d7090aa Keyboard backlight control should hook lid switch itself
It previously relied on the switch module to enable/disable the
keyboard backlight when the lid changed position.  It can do that itself now.

BUG=chrome-os-partner:20743
BRANCH=none
TEST=Boot link in a dark room where the keyboard backlight is on.  Briefly run
     a magnet over the lid switch and see the keyboard backlight blink off and
     then back on.

Change-Id: Iadf02b780a4990db25b6f0b3e1e0692f49c5488d
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61194
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2013-07-09 08:51:20 -07:00
Randall Spangler
958e43840e snow: Snow is the exception for power LED settings
Instead of #if defined(BOARD_foo) for all new boards, flip around the

No functional changes, just rearranging code.

BUG=chrome-os-partner:20529
BRANCH=none
TEST=keyboard LED still blinks in suspend on pit

Change-Id: I185d642a5f412c8b4b0d16e62373c6b2bba71b0f
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61108
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2013-07-08 18:03:30 -07:00
Randall Spangler
49799b8278 stm32l: Fix flash_is_erased() detection
STM32L erases flash to 0, not 1, so we need a config value to indicate
that.  This speeds up flash erase on STM32L by not re-erasing
already-erased blocks.

BUG=chrome-os-partner:13066
BRANCH=none
TEST=manual - hack flash_physical_erase() to print something just after
     flash_is_erased() check.

  1. flasherase 0x1f800 0x800
  2. flashwrite 0x1fa00 0x100
  3. flasherase 0x1f800 0x800 -> only re-erases 0x1fa00

Change-Id: I4d726caf0605e7815b9360bb2d44bdfdd757b4a2
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61110
Reviewed-by: Bill Richardson <wfrichar@chromium.org>
2013-07-08 13:53:59 -07:00
ChromeOS Developer
4e31062449 stm32: Clean up JTAG registers
No functional changes, just cleanup.

BUG=chrome-os-partner:20529
BRANCH=none
TEST=boot pit

Change-Id: I2067dffc3b1335f001a95e63b22213a1022f3ae8
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/61095
2013-07-08 13:53:58 -07:00
Randall Spangler
b013fd4e9c pit: Align spi protocol buffers on 32-bit boundary
Flash writes must be done from 32-bit-aligned source buffers.  Force
the protcol buffer to be aligned like we do for the lpc interface.

BUG=chrome-os-partner:20571
BRANCH=none
TEST=ectool flashread 0x1f800 0x800 /tmp/foo
     ectool flasherase 0x1f800 0x800
     ectool flashwrite 0x1f800 /tmp/foo

Change-Id: Icaa3259bcbc36be49345da5e19ad8a0790b73923
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60892
2013-07-08 11:30:50 -07:00
Vic Yang
0e835170b0 Extend overcurrent delay to 1200 ms
Some chargers recover in about 1100 ms on overcurrent events. Let's
extend this delay to support more chargers.

BUG=chrome-os-partner:20408
TEST=Manual. Check we can reach a steady current with a charger that was
not supported before.
BRANCH=Spring

Original-Change-Id: I7db0f98110dcb225ea5f123400c539e6a1260156
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60316
Reviewed-by: Todd Broch <tbroch@chromium.org>
(cherry picked from commit 732f5130f1f7523ec18fb04d49ddeb1646389a2c)

Change-Id: I884f8008158bf57c7d18109fb7860432095923ae
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60624
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-08 11:30:47 -07:00
Vic Yang
840facbb4e spring: Switch ID_MUX back on redetecting
When we are redetecting, if ID_MUX is 1, we need to switch it back.
Otherwise, no one is there to switch it and we are stuck in this state.

BUG=None
TEST=Check the EC detects device type after redetecting from device type
0x60400.
BRANCH=Spring

Original-Change-Id: I42378e2ea9177962524af7316d76c54b2518e614
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60041
(cherry picked from commit 7ebc1b269360f54dde29e3ec75f44e1976a15992)

Change-Id: I89ec974030712dea6157405a3b1bc819dc130e94
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60623
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-08 11:30:46 -07:00
Vic Yang
a0d986fc59 spring: Poll CABLE_DET for a second
We've seen CABLE_DET being asserted hundreds of milliseconds after
ID_MUX is switched. To ensure video dongle is detected, let's poll
CABLE_DET for a second before declaring it an USB host.

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

Original-Change-Id: I1858f4075f526ee198b7b5f7ad2bb06cf6e3512c
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59887
Reviewed-by: Jeremy Thorpe <jeremyt@chromium.org>
(cherry picked from commit 2d37619a934264cf4f902078b081b76d607ddce1)

Change-Id: I55fba167780fb7e04157655dc5b3a2e76b8999c5
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60622
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-08 11:30:46 -07:00
Vic Yang
f1d574722b Notify kernel of USB device change after it stabilizes
If we are overloading the charger and it browns out, the kernel reacts
to this event as if the charger is disconnected. This may confuses the
user as the backlight brightness might change. Let's delay this until
the device type has stabilized.

BUG=None
TEST=Plug in a charger and observe backlight brightened. Check the
backlight brightness doesn't change while the charger is overloaded.
BRANCH=Spring

Original-Change-Id: Ie89ed4261912bfd8cd75a70e5058411f1c929aa9
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/59878
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
(cherry picked from commit af770935938c99e17f99eea38bc1c0f34cc862fe)

Change-Id: I9c88d08100ba54f313506d495bc8e8dba5766dc7
Signed-off-by: Vic Yang <victoryang@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60621
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
2013-07-08 11:30:45 -07:00
Randall Spangler
e6ad2a6ab5 Rename files in common/ to be more consistent
This gets rid of mystery files like "ir357x" and "lp5562".  All chip
names are now prefixed with their module type (e.g. "chipset_",
"led_driver_", etc.)

No functional changes; renaming files and CONFIG constants only.

BUG=chrome-os-partner:18343
BRANCH=none
TEST=build all platforms

Change-Id: I3227fb0f6b0243bb08a13577cdb0f6def0e15d54
Signed-off-by: Randall Spangler <rspangler@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/60922
2013-07-08 11:30:38 -07:00
Dave Parker
6321de9811 haswell: Enable LTE module in S0
Note that the PP3300_LTE_EN signal does different things on
different boards. On peppy/slippy it controls both LTE power
and gates a wake interrupt to the PCH. On falco it just gates
the wake interrupt; module power is tied to the DX rail.

On all boards there is a separate DISABLE_L signal from the PCH.

BUG=chrome-os-partner:20513
BRANCH=falco,peppy
TEST=Manual. Verify module detectable via lsusb in S0. Verify power
to module is disabled in S3.

Signed-off-by: Dave Parker <dparker@chromium.org>

Change-Id: I4984081009e4a1ce8ad8996e97f779c545829ce5
Reviewed-on: https://gerrit.chromium.org/gerrit/60941
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Commit-Queue: Dave Parker <dparker@chromium.org>
Tested-by: Dave Parker <dparker@chromium.org>
2013-07-03 20:52:34 -07:00