Commit Graph

26 Commits

Author SHA1 Message Date
Randall Spangler
37dcc1ab56 Handle all GPIO IRQs. Interrupts no longer enabled by default.
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7456
TEST=if it runs, it works

Change-Id: Ib82afab7d53203af31eefc9887feb98679266ac1
2012-01-17 15:21:20 -08:00
Randall Spangler
002bc4278b Add x86 power state machine
For bringup, this powers on the x86 unconditionally.

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

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

Change-Id: Ib23e56d38ab42f8d8a4dbd1ba9dce12f0c3eeec9
2012-01-17 12:19:47 -08:00
Randall Spangler
ff3ebed7a8 GPIO interrupts are disabled by default
Added gpio_enable_interrupt() to enable them.  This ensures that a
module which handles GPIO interrupts doesn't get them until it's
ready.

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

BUG=chrome-os-partner:7456
TEST=toggle power button while rebooting; without this fix it triggers a hard fault.

Change-Id: I35d926053963a70dd9246ce46a4913603b2b2489
2012-01-13 10:34:09 -08:00
Randall Spangler
3c90a7f2ac Move board-specific GPIO lists to board-specific files
Signed-off-by: Randall Spangler <rspangler@chromium.org>

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

Change-Id: I47fd5d709a9575e41fdcdf21a7440ebbb762cef5
2012-01-12 16:47:46 -08:00
Randall Spangler
70a9928add Configure all GPIOs
Signed-off-by: Randall Spangler <rspangler@chromium.org>

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

Change-Id: I0a9be4c689fb72507edcf202073b23c58902d7de
2012-01-12 15:54:35 -08:00
Randall Spangler
a8afa116be Tidy GPIO configuration and board-specific configs for modules.
Signed-off-by: Randall Spangler <rspangler@chromium.org>

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

Change-Id: Ia06707db78ea9a9313b49a93e8732a7fc9fcc191
2012-01-12 13:11:57 -08:00
Randall Spangler
d244f97bb9 Set up I2C for link board
Also fixes a typo in power_button.c when compiled for link

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

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

Change-Id: Ib43ef9edefe0b0caba246faa4a0d12d66ff9e205
2012-01-12 09:57:56 -08:00
Randall Spangler
c9352ce6ca Add constants for all GPIOs.
Signed-off-by: Randall Spangler <rspangler@chromium.org>

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

Change-Id: I3b77cbbb7f0cc12a4daae7ababd603b5d7af32d1
2012-01-11 16:30:56 -08:00
Randall Spangler
1f2f8627c3 Add JTAG module
This just ensures the JTAG pins are reset to JTAG function on warm reboot.

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

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

Change-Id: I0cccdbe7a68c228db7f354898ed30598e9fabff0
2012-01-11 11:37:55 -08:00
Randall Spangler
a767d9b22b Add GPIO get/set commands
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7528
TEST=from debug console,

gpioget --> prints current level.  Run a few times to see DEBUG_LED
value toggle.

gpioset debug_led 1 --> turns debug LED on.  Run repeatedly to
override the idle task toggling it off.

Change-Id: I7c64044228697e052a9c20eb052d37a1f640f6e7
2012-01-11 10:59:59 -08:00
Randall Spangler
39f86d2fad Split power button code into its own file
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7499
TEST=press and release power button; should see debug messages

Change-Id: I8909ae4643afc98753edb690771618ad43135e3e
2012-01-10 14:14:59 -08:00
Randall Spangler
55ffdb465b Clean up labels and TODOs
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: I8d6e99b3e2b60d32ea3719468590b055e692a67e
2012-01-10 10:31:56 -08:00
Randall Spangler
edc50a4295 Add openocd config files
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: I211d23d61db37d7ed40621276f456e6935462c3d
2012-01-05 14:20:34 -08:00
Louis Yung-Chieh Lo
6fc214c1e3 Implement power button behavior.
Implement the state machine for PWRBTN# input and output to PCH. The state
begins while power button is pressed and stops while it is released or 8 secs
pass. The state machine is maintained inside the infinite loop of gpio_task().

Remember to #define EVT after the board comes back.

Also, the power-up sequence is not completed yet. Remember to come back when
it is done. Search TODO in code.

BUG=none
TEST=Manual run on evaluation board (via console printf):
  #---------------------------
  # power button pressed and release after 8s
  [3070341] New State: START   next_ts:3070340
  # wait for next pwrbtn_sm_handle() is run.
  [3071428] set_pwrbtn_to_pch(LOW)
  [3071482] New State: T0   next_ts:3103426
  [3103963] set_pwrbtn_to_pch(HIGH)
  [3104023] New State: T1   next_ts:7071961
  [7072044] set_pwrbtn_to_pch(LOW)
  [7072103] New State: T2   next_ts:11072042
  [11072661] set_pwrbtn_to_pch(HIGH)
  [11072723] New State: STOPPED   next_ts:11072042
  # power button released
  [14336515] New State: STOPPING   next_ts:14336514
  [14337604] set_pwrbtn_to_pch(HIGH)
  [14337662] New State: SOPPED   next_ts:14336514
  #---------------------------
  # Power button released during T1
  [378324436] New State: START   next_ts:378324435
  [378325530] set_pwrbtn_to_pch(LOW)
  [378325589] New State: T0   next_ts:378357528
  [378358080] set_pwrbtn_to_pch(HIGH)
  [378358143] New State: T1   next_ts:382326078
  [378889269] New State: STOPPING   next_ts:378889268
  [378890361] set_pwrbtn_to_pch(HIGH)
  [378890420] New State: STOPPED   next_ts:378889268
  #---------------------------
  # Power button released during T2
  [448592391] New State: START   next_ts:448592390
  [448593483] set_pwrbtn_to_pch(LOW)
  [448593542] New State: T0   next_ts:448625481
  [448626041] set_pwrbtn_to_pch(HIGH)
  [448626104] New State: T1   next_ts:452594039
  [452594076] set_pwrbtn_to_pch(LOW)
  [452594138] New State: T2   next_ts:456594074
  [453199165] New State: STOPPING   next_ts:453199164
  [453200257] set_pwrbtn_to_pch(HIGH)
  [453200316] New State: STOPPED   next_ts:453199164

Change-Id: I5a12f3e46fa8086c530123a81ee743d3664b91f4
2011-12-30 16:38:16 +08:00
Louis Yung-Chieh Lo
c425568c40 Interrupt-based keyboard matrix scan.
By default the scanning code would pull-low all column pins and listen to
any key press interrupt on input pins. This can save power compared to the
repeatly polling.

Once a key is pressed, the scanning code enters the busy loop and pull-low
column pins one by one. Then generate the scan code to host.

The code keeps polling after 1 second after no key is pressed. Then goes
back to interrupt mode.

BUG=none
TEST=Manual tested on S*y machine.

Change-Id: I0bf8877450dbd6ad1197a2fe1714ab755dc49a80
2011-12-29 21:12:07 +08:00
Vic Yang
5569f3e3a3 Implement EC lid switch handler
Implement EC lid switch interrupt handler and debouncing.

BUG=chrome-os-partner:7363
TEST=Manually test lid switch output signal is correct.
Use UART console to see debouncing is correct.

Change-Id: I74aad63330716da017fc4a57002349461c6a9b26
2011-12-29 12:04:03 +08:00
Randall Spangler
84a286b1f4 Use #defined constants for IRQ names
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: If07ac671cef6b9d0e9fe0a96bf04455a3d2626ff
2011-12-19 13:48:05 -08:00
Randall Spangler
117021278c Switch I2C from polled to interrupt-driven
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: Ice3125d1f0085b2e1de3c8544e60ed4b351f4cb0
2011-12-19 12:17:15 -08:00
Randall Spangler
caba91fe27 Change register.h macros to use inline funcs without concatenate (##).
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST=none

Change-Id: Ia8c54bfeff2351e8f76d97db558952a9d2ca9a45
2011-12-13 09:50:53 -08:00
Randall Spangler
1ce694189a Add IRQ constants, and task functions to enable/disable/trigger IRQs.
The constants don't work with the DECLARE_IRQ() macro yet, because it
relies on stringizing the IRQ number.

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

BUG=none
TEST=none

Change-Id: Ie6ddecd79e28c319b095089131579ba994a17da3
(cherry picked from commit e24904644a977f2618f51629cc066b93a3d53595)
2011-12-12 14:23:04 -08:00
Randall Spangler
70c3e30b63 Clean up UART code
LPC module no longer directly talks to UART registers, and vice-versa.

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

BUG=none
TEST='ectool sertest' on target system

Change-Id: Id070c0d849bdfe91c752e0af651d357b695d2648
(cherry picked from commit ab8c3c2b8e3b08a4bf5573cda3a12dd3a384e67d)
2011-12-12 14:12:09 -08:00
Rong Chang
1eb5417847 Add flash write protect range command
This CL add host command to enable, get/set flash write protect range.

BUG=None
TEST=Use flashrom utility to set write protect range, enable write
protect and get status.

Change-Id: I345f1eb65944d8cf8028e6fdb7e43c40cc742a6d
Signed-off-by: Rong Chang <rongchang@chromium.org>
2011-12-12 18:21:08 +08:00
Randall Spangler
20886cb9c0 Add user-mode LPC endpoint
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=none
TEST='ectool hello' on target system

Change-Id: I39845c2ea107ea6f85ef556d58e49343f5a0e9c0
2011-12-08 16:18:20 -08:00
Randall Spangler
f141306de2 Fix LPC drive strength for I/O lines interfering with x86 boot.
Fix 1-sec delay in HELLO host command for testing.

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

BUG=none
TEST=on host, boot and run 'ectool hello'

Change-Id: I6017d12be400616b06ea337829ce85d193ad90e5
2011-12-08 10:33:30 -08:00
Vincent Palatin
e24fa592d2 Initial sources import 3/3
source files mainly done by Vincent.

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

Change-Id: Ic2d1becd400c9b4b4a14d4a243af1bdf77d9c1e2
2011-12-07 19:10:02 +00:00
Randall Spangler
bdf7da5b08 Initial sources import 1/3
source files mainly done by Randall.

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

Change-Id: Iaff83a842b17f3350fb6f2a3f1597ad4c29bd12a
2011-12-07 19:10:02 +00:00