Commit Graph

311 Commits

Author SHA1 Message Date
Louis Yung-Chieh Lo
20fcd29d42 Add keyboard controller reset command.
To handle outp(0x64, 0xfe) instruction from host.

BUG=chrome-os-partner:8464,chrome-os-partner:8397
TEST= build on bds and l*. tested on proto 0.5.

Change-Id: I8cb3a870b2a5c7a711dc911ba44e154813e9f123
2012-03-14 12:24:46 +08:00
Gerrit
386f4618f3 Merge "Thermal Engine SMI" 2012-03-13 20:04:09 -07:00
Gerrit
f69b2ffc90 Merge "Tidy output of temps command" 2012-03-13 14:43:02 -07:00
Gerrit
221c5b8f43 Merge "Add vboot_init() function in correct place, make it do the switching." 2012-03-13 14:16:44 -07:00
Randall Spangler
8a0cc7756f Tidy output of temps command
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=temps - see, prettier!

Change-Id: Ia11937e8b1be384f7b8386c97aea0eb3e2eef897
2012-03-13 13:43:31 -07:00
Randall Spangler
3eafbbe360 Remove unused temp_sensor.c file
Not compiled into any target; new version of temp_sensor.c is in common/

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=build link and bds

Change-Id: I00232a7cd8a8a9ee6353c5f04c86fcacc83cbd3e
2012-03-13 13:05:59 -07:00
Randall Spangler
eec896d6d8 Watch LPC0RESET line and print changes
For debugging PCH reset.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8397
TEST=power system on, then use x86reset to reset it.  Should see line state changes printed.

Change-Id: Ief2f09bd0986339812183d0b32dc0208437d1103
2012-03-13 12:53:52 -07:00
Bill Richardson
a4f5e0c29c Add vboot_init() function in correct place, make it do the switching.
Jumping (currently rebooting, see crosbug.com/p/8100) to the RW image should
be done by vboot_init(), not vboot_pre_init().

As currently written, vboot_init() has to come AFTER these function calls:

  task_init();             // sets up interrupts so that uart will work
  watchdog_init(1100);     // in case we fall over somewhere
  uart_init();             // we'd REALLY like to see some debugging output
  system_init();           // may go away with crosbug.com/p/8100
  keyboard_scan_init();    // check for F3 to go to recovery mode
  flash_init();            // maybe set RO regions (this should come earlier!)
  eeprom_init();           // this is where the try_b flags are kept

BUG=chrome-os-partner:7459
TEST=none

Signed-off-by: Bill Richardson <wfrichar@chromium.org>

Change-Id: I0ec3f6bcc26a308bb1005a944990963853b88b60
2012-03-13 10:17:50 -07:00
Vic Yang
2a0c6a31ea Thermal Engine SMI
Make thermal engine trigger SMI on overheating and sensor failure.

Signed-off-by: Vic Yang <victoryang@google.com>

BUG=chrome-os-partner:8249
TEST=none

Change-Id: I1f8c1d05ae69fae4736c4cc92b060b1813007249
2012-03-13 12:00:03 +08:00
Randall Spangler
dcb1d1f929 Add x86 reset support
(new method, and x86reset command to call it)

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8460
TEST=manual: powerbtn, wait for system to boot, x86reset

Change-Id: Iad3f5c268b334e8d0ec1adfa2878f9e9d5927b9f
2012-03-12 18:25:37 -07:00
Randall Spangler
186deea4c4 Use precision internal osciallator for UART and ADC
This simplifies upcoming transitions to/from sleep (with PLL shutdown).

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=manual - make sure 'adc' command and uarts still work

Change-Id: I070ca2d96ba4fef6fef6519896e7e9a181866efc
2012-03-12 17:59:18 -07:00
Randall Spangler
b3798eaacd GPIO changes for link proto1
Note that this moves the charger to a different I2C port.  If you're
working on battery charging, you'll need to hack board.h in your local
repo to move it back.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8458
TEST=manual

Change-Id: Id94ee2ce1ef6c973c1786037e07d0c64a89a9940
2012-03-12 17:57:25 -07:00
Louis Yung-Chieh Lo
9e3e87f802 Support reboot_ec command in ectool (temporarily).
Note that this is a big security hole and should be removed after we
complete the EC autoupdate mechanism and vboot code.

To full update EC firmware on proto 1.0, we need a manual way to switch
EC running on RO/RW. This CL implements the LPC command.

BUG=chrome-os-partner:8415
TEST=on proto 0.5.
ectool reboot_ec RW_A  # EC boots to RW A
ectool reboot_ec RO    # EC boots to RO

Change-Id: Ibf050328bc4e3d2c6d72bfc478d6334f11f0eb46
2012-03-09 21:10:13 +08:00
Randall Spangler
9789c3b8fc Fan console commands should enable the fan
And faninfo now checks if the fan is powered.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=manual

1) faninfo --> fan is initially disabled and powered off
3) gpioset enable_vs 1 --> fan is now powered on, but still disabled
2) fanset 8000 --> fan is now enabled, and you should hear it

Change-Id: I97f35a20022cabd4520522f2d18ecb7603faabd1
2012-03-08 10:32:36 -08:00
Randall Spangler
6500cb9481 Update LPC mapped switch states with write protect and recovery states
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8325
TEST=manual

Boot system with lid open.  'ectool switches' should show lid open.

Use 'dut-control goog_rec_mode:on'.  'ectool switches should show
dedicated recovery signal on.'

Use 'dut-control goog_rec_mode:off'.  'ectool switches should show
dedicated recovery signal off.'

Disable write protect via screw.  'ectool switches' should show WP
signal disabled.

Boot system in recovery mode (power+esc+reload).  Should show 0x09.

Change-Id: I0434427c4b5f8c07c02a8714618f7eb101b86fed
2012-03-07 13:28:12 -08:00
Rong Chang
321b077ed5 Retabify ectool and add battery ectool command
util/ectool.c source contains mixed indentation. This change
adds battery command and retabifies the whole file.

Signed-off-by: Rong Chang <rongchang@chromium.org>

BUG=chrome-os-partner:8181
TEST=manual:
  Type command 'ectool battery' and check battery info.

Change-Id: Id60a53b88b414524cc8735c9456bdf4e15a4400f
2012-03-07 17:22:16 +08:00
Rong Chang
35a90d9ce5 Add battery lpc commands
This CL adds LPC commands to provide the following information:
- Design Capacity (dword)
- Last Full Charge Capacity (dword)
- Design Voltage (dword)
- Design Capacity of Warning (dword)
- Design Capacity of Low (dword)
- Battery Type (ascii)
- Model Number (ascii)
- Serial Number (ascii)
- OEM (usually Vendor) (ascii)
- Battery charge cycle count (dword)

Signed-off-by: Rong Chang <rongchang@chromium.org>

BUG=chrome-os-partner:8181
TEST=none
CQ-DEPEND:Iad4d63c996272568b5a661a6716790ef151b29c5

Change-Id: Iabaf7d9862e15c5b21cf5170cf43450e472b7836
2012-03-07 13:51:07 +08:00
Vadim Bendebury
62398117f0 Add EC status bit definitions
These bits are as per definition in "Chrome EC LPC Communication"
document.

BUG=chrome-os-partner:8351
TEST=manual
 . tested in concert with coreboot modifications introducing the EC
   command implementation

Change-Id: I46d5795e06854e34584132c7fdb37e29150ce179
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
2012-03-07 01:21:19 +00:00
Vincent Palatin
050bd0b1d3 stm32l: workaround missing mass erase feature
The STM32L15xx monitor does not implement the mass erase,
so we need to use the page erase feature and loop.

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

BUG=None
TEST=on Discovery, fill the flash with a pattern, then erase, write a
firmware image, read back the content of the flash, run the firmware.

Change-Id: Icf0e9812a5d491fea78472a0203ddbbc3e813b2f
2012-03-06 21:31:54 +00:00
Randall Spangler
d3843a5afb Add a trap for tasks which exit their task functions
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8350
TEST=manual

Hack a task function to return.  Then see that it prints an error to
the debug console and the EC continues running, instead of seeing a
hard-fault.

Change-Id: Iacd2b83c4d4845bb8e6c61e07c3150df8edc7e49
2012-03-06 09:52:41 -08:00
Randall Spangler
7e508c0d34 Clean up debug console output
Also prints the current timer value when inits are done, and when the
watchdog task first gets to run (after all higher priority tasks sleep
at least once).

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: I342f86ad087fd18ab064a10a5bcdd0b69ee373d0
2012-03-06 09:28:47 -08:00
Rong Chang
526db244e4 Add smart battery functions read ascii info
Signed-off-by: Rong Chang <rongchang@chromium.org>

BUG=chrome-os-partner:8321
TEST=manual:
   type 'battery' in EC serial console, check following fields:
     Manufacturer
     Device name
     Device chemistry
CQ-DEPEND:I0ad3ad45b796d9ec03d8fbc1d643aa6a92d6343f

Change-Id: Iad4d63c996272568b5a661a6716790ef151b29c5
2012-03-06 16:15:30 +08:00
Rong Chang
a81f0cd547 Add I2C transmit/receive function
Implement a generalized I2C transmit-receive function that
write-then-read blocks of raw data. Original 8-bit and 16-bit
read/write functions are refactored.

SMBus read-block protocol for ASCII string is also implemented
based on this API.

Signed-off-by: Rong Chang <rongchang@chromium.org>

BUG=chrome-os-partner:8026,8316
TEST=manual:
  Type 'lightsaber' to check 8-bit read/write.
  Type 'charger' to check 16-bit read.
  Type 'charger input 4032' to check 16-bit write.

Change-Id: I0ad3ad45b796d9ec03d8fbc1d643aa6a92d6343f
2012-03-06 12:07:22 +08:00
Randall Spangler
89a8a082b1 Update switch positions in EC mapped data
Note that this only handles lid and power button; see
crosbug.com/p/8325 for write protect.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8185
TEST=manual

1. Check state with lid open
localhost ~ # ectool switches
Current switches: 0x01
Lid switch:       OPEN
Power button:     UP
Write protect:    ENABLED

2. Press power button
localhost ~ # ectool switches
Current switches: 0x03
Lid switch:       OPEN
Power button:     DOWN
Write protect:    ENABLED

3. Release power button and close lid
localhost ~ # ectool switches
Current switches: 0x00
Lid switch:       CLOSED
Power button:     UP
Write protect:    ENABLED

Change-Id: I25f2fa3dfeac004dde9b10a4243ee235875f1b6e
2012-03-05 12:07:50 -08:00
Randall Spangler
e85cb93715 Add LPC command to get EC build info
Useful when debugging to determine if a user has an official build or
not, particularly early in the devel process where we're handing
builds to everyone.  Particularly useful for proto1, since not all
those systems will be case-open servo-attached.

Also move get-version LPC command into system.c, where it's closer to
the system functions it calls (matches what we do for other host
commands).

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: Idb0f6edf31ca00e32f083be0b0d3f23ab79c5fba
2012-03-05 11:05:15 -08:00
Randall Spangler
0106129061 Only send power button pulse on lid-open when main chipset is off
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8324
TEST=manual

1. When system is off, open lid.  Debug console should show PB PCH pwrbtn activity.
2. Wait for system to boot.
3. Quickly close and open lid.  Debug console should not show pwrbtn activity.

Change-Id: Ia018ff06a31ac2a68f20021d17e47ddb06096eb8
2012-03-05 10:14:24 -08:00
Randall Spangler
42bfa2f5d4 Add platform-neutral chipset interface
...since x86_power_in_S0() is a terrible function to have implemented
for gaia chipsets, and I need to add more detectable states for lid
switch handling anyway.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: I0c90c6875b27d1bf23f093e88e34eabf2a8c86e4
2012-03-05 10:00:25 -08:00
Randall Spangler
05d89738ba Trigger host events for power button and lid switch
(Also define other host events)

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8308
TEST=manual:

Use magnet to trigger lid-closed and lid-open.
'hostevent' should show raw events = 0x3.
Press power button.
'hostevent' should now show raw events = 0x7.

Change-Id: I9c8367d5152d526299a7a3149250de84cc2e0557
2012-03-05 09:25:58 -08:00
Randall Spangler
2464e96469 Add SMI/SCI support
BUG=chrome-os-partner:8277
TEST=manual

On EC console:
   hostevent set 0x1e
From root shell:
   ectool eventget --> should return 0x1e
   ectool eventclear 0x02
   ectool eventget --> should return 0x1c
   ectool queryec  --> should return event 3
   ectool queryec  --> should return event 4
   ectool queryec  --> should return event 5
   ectool queryec  --> should return no event pending
   ectool eventsetsmimask 0x1200
   ectool eventsetscimask 0x0034
   ectool eventgetsmimask --> should return 0x1200
   ectool eventgetscimask --> should return 0x0034
On EC console:
   hostevent --> should show raw=0 SMI mask = 0x1200 SCI mask = 0x34

Change-Id: I33042fa80c0b148cd63209a94a184af493e25ed3
2012-03-05 09:23:51 -08:00
Gerrit
2ae113da55 Merge "Handle ghost key in matrix scanner." 2012-03-04 19:16:44 -08:00
Rong Chang
051b5f6dd3 Write battery values to LPC mapped memory
Update the mapped memory inside charge state machine.

BUG=chrome-os-partner:8184
TEST=none

Change-Id: I84f6079fff9683b6a7a96e3bb066e0e043c0db28
2012-03-03 14:50:03 +08:00
Gerrit
acfbecebe4 Merge "Add battery charge state machine and task" 2012-03-02 22:43:09 -08:00
Rong Chang
fe1f1c2d21 Add %b format output via uart_printf
Useful when debug dump binary flags.

BUG=chrome-os-partner:8287
TEST=none

Change-Id: I646d80befafca07074847f2f09eeb23126533f67
2012-03-03 14:11:35 +08:00
Rong Chang
1c70e29165 Add battery charge state machine and task
This CL adds a charge state machine for SMB compliant battery pack.
Vendor specific charge constraints can be applied through function
call, defined in battery_pack.h .

BUG=chrome-os-partner:7526
TEST=Attach EC serial console
  Unplug AC adapter: state ==> "discharge"
  Plug AC adapter:   state ==> "charge"
  Battery full:      state ==> "idle"
  Unplug battery:    state ==> "error"

Change-Id: Iabff0988a6067d37c17c11b060bbb7e66505c118
2012-03-03 14:01:52 +08:00
Vincent Palatin
5877a40923 fix version generation script
Fix the quoting for git local change detection.

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

BUG=None
TEST=run ./util/getversion.sh on a repository with and without local
changes and observe we no longer have a spurious output on stderr.

Change-Id: I40ea4505d175c9135027ba7cf2b787c08eff6f70
2012-03-02 22:37:36 +00:00
Randall Spangler
29e494d54c Refactor ectool command handling
The list of if()'s was getting long and obnoxious.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=run a few ectool commands and see that they still work

Change-Id: Ie292b50a27e98ca2c48f13e1141faf273efdd94b
2012-03-02 12:26:26 -08:00
Gerrit
98b19f00b6 Merge "Fix a bug causing ectool to return error return code." 2012-03-02 10:56:25 -08:00
Vic Yang
26ab6057d2 Fix a bug causing ectool to return error return code.
'ectool temps 0' always have non-zero return code.

Signed-off-by: Vic Yang <victoryang@chromium.org>

BUG=chrome-os-partner:8294
TEST="ectool temps 0 && echo 'test'" gives 'test' on screen.

Change-Id: I3a4eff513638c25ec68e24968ce9d1022b4c1281
2012-03-02 10:09:56 -08:00
Vincent Palatin
a94e3277b3 update versioning information stored in the EC
Add build information (date/time/builder) which can be displayed at the
EC console.

Generate a version from the board name and the branch tag.

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

BUG=chromium-os:27013
TEST=on BDS, run version command on the console.
inspect the built binary.

Change-Id: Idb1f68898ba6b811d02919f17ab4536ed9f8934a
2012-03-02 16:46:26 +00:00
Louis Yung-Chieh Lo
763af1f695 Handle ghost key in matrix scanner.
implement actual_key_masks[]. A ghost key exists if two columns share
more than one row (after ANDed actual_key_masks[]).

BUG=chrome-os-partner:7485
TEST=on bds. test cases:
  single press of all keys.
  ~ 1 4 5: later 2 keys should be ignored (ghost).
  h j k: all keys should work.
  u R-shift 0 P: p should be ignored (ghost).
  i R-shift ' p: P should show up.

Change-Id: I1ac105874a5327e839a5240ccbdd6304637ad404
2012-03-02 11:29:06 +08:00
Vic Yang
1db93690d9 Report error when PECI temperature read fails.
We used to have flaky PECI temperature read so we ignored failure. Now
the PECI temperature read seems to work fine so we should have it report
error on failure.

Signed-off-by: Vic Yang <victoryang@chromium.org>

BUG=chrome-os-partner:7493
TEST=When powered off, 'temps' shows error on PECI temperature reading.

Change-Id: I161a8f84f66ba06959c21838ee364b2f8d8b4945
2012-03-01 16:19:54 -08:00
Gerrit
1776aef9f5 Merge "Refactor LPC status / result codes" 2012-03-01 16:18:36 -08:00
Gerrit
72d8d99c95 Merge "Make TMP006 polling check for power first." 2012-03-01 16:18:35 -08:00
Randall Spangler
9a60f37c8d Refactor LPC status / result codes
This is necessary to support SCI/SMI events.

Note that this breaks compatibility with previous ectool builds - and
probably also breaks flashrom support.

Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:8253
TEST='ectool hello' and 'ectool flashinfo' still work
and 'ectool usbchargemode 3 1' fails with error 2

Change-Id: If39e5b6e7cdcec1b5ec765594e8492925b430b10
2012-03-01 15:22:14 -08:00
Vic Yang
feb5a62d79 Make TMP006 polling check for power first.
Currently if ENABLE_VS is off, each time we poll TMP006 sensors, it
takes 1 second for each sensor to return ERROR. Checking for power
before polling help to reduce the time spent on temperature polling.

Signed-off-by: Vic Yang <victoryang@chromium.org>

BUG=chrome-os-partner:8275
TEST=Manual test

Change-Id: I2da83f09cccc331074f9bb5483b2ba92c0865742
2012-03-01 13:30:08 -08:00
Vic Yang
5cd0f292e9 Console command for thermal engine fan control.
Add console command 'autofan' to turn on automatic fan speed control.
Also modify 'fanset' to disable automatic control before setting fan
speed.

Signed-off-by: Vic Yang <victoryang@chromium.org>

BUG=chrome-os-partner:8250
TEST=Manual test

Change-Id: I2db85ce2e754bba21567b2c92e4476049d517627
2012-02-29 16:26:26 -08:00
Gerrit
42a9405d11 Merge "stm32l: fix new line output on the UART" 2012-02-29 15:26:25 -08:00
Gerrit
aacc1e6b5f Merge "Thermal Engine: LPC commands." 2012-02-29 15:26:25 -08:00
Gerrit
c09f6817b1 Merge "Fix a bug causing TMP006 debug message truncated." 2012-02-29 15:02:25 -08:00
Vic Yang
747b1f7520 Thermal Engine: LPC commands.
Implement LPC commands and ectool commands to
  1. Set/get threshold temperature values.
  2. Toggle on/off automatic fan speed control.

Signed-off-by: Vic Yang <victoryang@chromium.org>

BUG=chrome-os-partner:8251
TEST=Manual test

Change-Id: Ia4282a6fa47a838aed26540f33c1eb7acc92ef0e
2012-02-29 14:42:45 -08:00