Commit Graph

133 Commits

Author SHA1 Message Date
Randall Spangler
36d39dbb0d Merge "Fix power button being held down for 8 sec" 2012-02-07 09:36:28 -08:00
Randall Spangler
7ce07a7835 Fix power button being held down for 8 sec
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7932
TEST=hold down power button >8 sec; PCH_PWRBTNn should stay low

Change-Id: If3168984982343735f0c31fb5951374808eb1caf
2012-02-07 09:32:54 -08:00
Vic Yang
730f099c83 Handle up/down arrow keys for UART console.
Record commands used previously and use up/down arrow key to navigate in
the command history.
Also removed the command '.' of repeating last command as we can use up
arrow key now.

Also changed the behaviour of uart_write_char() to be blocking on
transmit FIFO full, so that we do not lose echoed character and do not
need to flush.

BUG=chrome-os-partner:7815
TEST=Type 'help' and enter. Then type 'aaaa' and up arrow key, should
show 'help', and pressing enter prints help.
Type 'hellp' and enter. Then type 'aaaaaa' and up arrow key, should show
'hellp'. Should be able to use left/right arrow key and backspace to
correct it to 'help', and pressing enter prints help.
Type 'help' and enter. Then type 'aaa', up arrow key, and down arrow
key. Should show 'aaa'.

Change-Id: I65c615d61bf63acb31bea329aa91a3202d4db0ad
2012-02-07 10:23:59 +08:00
chrome-bot
d3e1de758c Merge "Additional compilation fix-ups for non-LM4 targets" 2012-02-06 17:03:28 -08:00
chrome-bot
1f0e7dc97b Merge "Add board configuration flags in board.h" 2012-02-06 16:30:15 -08:00
Randall Spangler
bd1d0b11c8 Merge "Add UART1 receive support (UART to x86 console)" 2012-02-06 15:56:00 -08:00
David Hendricks
53c1c20fb8 Additional compilation fix-ups for non-LM4 targets
- Add #ifdef CONFIG_TEMP_SENSOR before #include'ing temp_sensor.h
  which actually requires temp_sensor_id to be defined.
  Revert the forward declare used earlier since it is not the
  correct solution in this case.
- Add #ifdef CONFIG_CHARGER before calling charger_init()

Signed-off-by: David Hendricks <dhendrix@chromium.org>

BUG=None
TEST=compiled on both BDS and Discovery

Change-Id: I60b7e4ba91eb958b3ad724cc9ffa9a12fe9c3a71
2012-02-06 15:40:23 -08:00
Randall Spangler
99b297f990 Merge "Increase simulated power button duration in x86power s0 command" 2012-02-06 15:35:32 -08:00
Randall Spangler
4a7bfe7c43 Increase simulated power button duration in x86power s0 command
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7906
TEST=from ec console, 'x86power s0' should power the system on reliably.

Change-Id: Idebfc8b4e86587b540934d245649f912ccb4aa95
2012-02-06 15:02:57 -08:00
Randall Spangler
300e7edb87 Add UART1 receive support (UART to x86 console)
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7488
TEST=type things into the x86 console UART; should appear on the u-boot prompt

Change-Id: I75fd225842c03d11d79280fb7453ad37695279e3
2012-02-06 14:53:49 -08:00
chrome-bot
201de29820 Merge "stm32l: add a tool to flash the SoC using the serial monitor" 2012-02-06 14:49:02 -08:00
Rong Chang
57c581891d Add board configuration flags in board.h
Current makefile takes CONFIG_* flags from $(CHIP)/config.h . This
CL adds $(BOARD)/board.h and a sample charger config flag.

Signed-off-by: Rong Chang <rongchang@google.com>
BUG=chrome-os-partner:7917
TEST=build bds,link board and check warning and error messages.

Change-Id: I1f13d24da6b18c014f40f941ef7245487e5ccc81
2012-02-06 14:45:20 -08:00
David Hendricks
af9532d6fe Add forward declarations in ADC and temp_sensor headers
This is a trivial patch to fix compilation for boards that are not
based on LM4 (e.g. Discovery).

Signed-off-by: David Hendricks <dhendrix@chromium.org>

TEST=Compiled for Discovery
BUG=None

Change-Id: Ia1f29c61ff4a1f65fe65c43a8e58def7d1217ab2
2012-02-06 13:36:19 -08:00
Vincent Palatin
c74bd90fb0 stm32l: add a tool to flash the SoC using the serial monitor
When run with BOOT0=1 and BOOT1=0, the STM32L enters a system monitor
which allows flashing over the serial port (USART1 pins PA9 and PA10).
Implement commands to flash and run a program from a linux Host.

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

BUG=None
TEST=on a serial port connected to Discovery board pins PA9 and PA10,
run manually the various tools commands.

Change-Id: I42f95ed50a56d82d728989149b3e47210af9dc96
2012-02-06 20:05:33 +00:00
Louis Yung-Chieh Lo
6409913523 Fix some scancodes: F1-F10, arrow keys, and search key.
F1-F7: swap scancode of set 1 and set 2
F8-F10: change from (F9, F10, F11)
arrow keys: swap scancode of set 1 and set 2
Search key: change from CapsLock key

BUG=none
TEST=tested on bds.

Change-Id: Ifb8e715a2cd5f8ea174f7c38647c5ce550382615
2012-02-06 23:15:59 +08:00
Louis Yung-Chieh Lo
d2fc22dcad Uses update_ctl_ram() in 'ctrlram' command.
BUG=none
TEST=tested on bds.

Change-Id: I564e1be8201558d755636205157a6f1c581ec0dc
2012-02-06 22:20:32 +08:00
Louis Yung-Chieh Lo
e3fa162827 Add ctrlram command to get/set controller RAM content.
BUG=none
TEST=tested on bds.

Change-Id: Ibfabf2c35d19c231f3ebe860877b9f4020b0f870
2012-02-06 12:21:53 +08:00
Vic Yang
000a6d5742 Refactor temperature sensor code and add support of Link I2C temp sensor.
Refactor board/chip-specific code into corresponding directories.
Add support of the four I2C temp sensor in Link.
Use table lookup to handle different types of temperature sensors.

BUG=chrome-os-partner:7527
TEST=Correctly read EC internal temperature on bds.
Compile for link succeeded.

Change-Id: I694cfa54e1545798d877fafdf18c5585ab5f03e2
2012-02-04 14:37:04 +08:00
chrome-bot
249467b9f2 Merge "Use udelay for more stable manual IRQ firing." 2012-02-03 00:45:52 -08:00
Louis Yung-Chieh Lo
088b79f285 Use udelay for more stable manual IRQ firing.
Original code tests SND bit, but it is not reliable to indicate the
SERIRQ frame has been sent out because the EC always clears it
immediately. Unfortunately the SIRQRIS is always asserted in
continuous mode so that we cannot rely on it.

So, the udelay(4us) method is the best way we can use now.

Note: the quiet mode? Forget it. My EC never sends out further frames
      after the first has been sent.

BUG=none
TEST=on bds board.

Change-Id: Ica79b463f3dbe7435fe75f3db4cef00ad7ad5ec0
2012-02-03 12:38:42 +08:00
Vincent Palatin
a72b9cc07e Split out GPIO console commands
The GPIO console commands are common to all platform, let's push them in
the common code.

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

BUG=None
TEST=make BOARD=link && make BOARD=bds && make BOARD=discovery
on BDS console, try gpioget command.

Change-Id: I26e6d26b8d661e78b80d5d5f665e81f4daef0c11
2012-02-03 02:00:27 +00:00
Vincent Palatin
54f36995a4 stm32l: basic GPIO support
No interrupt support yet.

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

BUG=None
TEST=on Discovery EC console, using "gpioget" and "gpioset" commands
check we can switch the LED and read the button state.

Change-Id: I01294643d3df070a535dab5a6be02c296487fca5
2012-02-03 02:00:27 +00:00
David Hendricks
b2b6eb46b3 correct typo for STM32L GPIO bit set/reset register (BSSR --> BSRR))
Signed-off-by: David Hendricks <dhendrix@chromium.org>

BUG=none
TEST=none

Change-Id: I2f452e4f842ac3b67157f94c5e533b53d0d8baec
2012-02-02 17:44:30 -08:00
Vincent Palatin
71219213f5 Honor V=1 build flag when building tests recursively
Allow to display the verbose command lines even when building the test
programs.

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

BUG=None
TEST="make tests" with and without V=1

Change-Id: Ib1195c7e069d7823c2eb7b2311bd5f3c6cd6c835
2012-02-02 22:02:18 +00:00
Vincent Palatin
40528fe87f fix test compilation for STM32L
There is no host command yet and the "hello" test is not using it.

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

BUG=None
TEST=make tests BOARD=discovery && make tests BOARD=link

Change-Id: Ib7f49f8e38270a8c537e352396b1966abc801511
2012-02-02 22:02:06 +00:00
Vincent Palatin
d7fb7401c0 stm32l: update clock settings
Add a final wait to ensure the clock is ready before returning.
Setup the Flash according to the manual recommendations.

The low-speed oscillator and RTC are now done in the system module with
other RTC inits.

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

BUG=None
TEST=run the EC firmware on the Discovery and manually exercise various
path through the console.

Change-Id: I4e6149b6fd55c8fc72dbdf6bfc4a10665e0246bd
2012-02-02 22:02:06 +00:00
Vincent Palatin
55f990cd0f Fix image copy detection
When the flash base address is not zero (e.g. STM32L chip), the current
image index is wrongly computed.

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

BUG=None
TEST=check it compiles for all boards, run on Discovery board and see
proper value.

Change-Id: I06f5508cdffce6d754bd93e870d64087d299c9c7
2012-02-02 19:15:06 +00:00
Vincent Palatin
77b154dd71 stm32l: implement reset cause and scratchpad
Allow to get proper reset reason.

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

BUG=None
TEST=On the discovery board, try the reset button, the "reboot" command
and a blocking wait, and see the proper reset reason displayed.
Initialize the scratchpad register with "setscratchpad" command and
check we can read it back after reboot.

Change-Id: I1fe1eec4987f7c9816454de4fd3b4addda4ad05a
2012-02-02 19:08:49 +00:00
Vincent Palatin
f771cca719 stm32l: add watchdog support
Use the Independant WatchDog.
The Window WatchDog would provide a nice early warning interrupt before
actually rebooting but the max period (128 ms) is probably too short for
our purpose.

The full GPIO support and the reboot cause detection will be implemented
in later steps.

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

BUG=None
TEST=on Discovery board, do blocking waits of 500ms and 1500ms, and
check the latter reboots the platform and the former does not.

Change-Id: I26e4d8b26b733269b7811cc3b3a09daf98ea364a
2012-02-02 17:05:40 +00:00
chrome-bot
a0d1a9e80e Merge "Fix a typo that cause compilation fail on BDS" 2012-02-02 05:39:05 -08:00
Vic Yang
35c6587bb5 Fix a typo that cause compilation fail on BDS
BUG=none
TEST=compile for BDS succeded.

Change-Id: I7790e2e5c2f2c9662a1c7b1fcf7a7442759a8653
2012-02-02 21:15:32 +08:00
Louis Yung-Chieh Lo
038b86ca8e Merge "Fix the missing IRQ problem." 2012-02-02 05:11:25 -08:00
Louis Yung-Chieh Lo
7e8d739b38 Fix the missing IRQ problem.
The problem comes from the different assumption of interrupt mode in EC and
the PCH. The PCH assumes IRQ1 is edge-triggered and triggered at a rising edge.
However, the auto-IRQ functino of EC is level-triggered and uses low-active to
assert an IRQ. This makes the deadlock so that the kernel never gets an
interrupt until a byte is manually pulled from host.

So, the solution is manually firing an IRQ_1 to host after EC puts a byte to
port 0x60. Note that the auto IRQ needs to be disabled in order to avoid
the interference with manual IRQ generation.

This CL also moves chip specific code to lm4/lpc.c and handle some minor
keyboard commands.

BUG=none
TEST=on hacked baord.

Change-Id: Ib57f5a4d749cb019e4c3c00da110054c4f335c7b
2012-02-02 20:51:45 +08:00
Vic Yang
b7f2a18859 Fix a bug that ADC input is not correctly configured.
The ADC input pin was always configured as BDS. Modified it to configure
the correct pin.

BUG=none
TEST=On Link, "rw 0x4002451C" show 0xff instead of 0xf7.

Change-Id: I1efd5cd59ad65f55cd673529afa6153add63ecac
2012-02-02 17:10:40 +08:00
chrome-bot
965987eeac Merge "Refactor ADC code and add Link charger current ADC support" 2012-02-01 18:55:58 -08:00
Vic Yang
1e5233a66d Refactor ADC code and add Link charger current ADC support
Refactor ADC code and move board/chip-specific part to corresponding
directories.
Implement function and console command to read Link charger current.

BUG=chrome-os-partner:7527
TEST=Read EC temperature and POT input on BDS.

Change-Id: I7fafd310ea49d9b2781f10c3453f5488da29a08a
2012-02-02 10:24:26 +08:00
Vincent Palatin
75b2bcf9b4 stm32l: add timer support
As the STM32L doesn't have any 32-bit timer, we use 2 chained 16-bit
counters to emulate a 32-bit one :
 * TIM2 is the MSB half-word (Slave timer)
 * TIM3 is the LSB half-word (Master time)

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

BUG=None
TEST=run timer_calib and timer_dos on the Discovery board, and check
waitms and gettime console functions against wall clock.

Change-Id: I8917207384d967fd87321797856e3d58b237f837
2012-02-01 22:49:22 +00:00
Vincent Palatin
6986ea134c stm32l: ensure we transmit as soon as characters are available
Force starting the transmission immediatly when ordered by the UART
buffering layer.

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

BUG=None
TEST=run EC console on Discovery and measure the timestamp of each
characters on the serial port.

Change-Id: I036a3fa0a60baa27de4ba0ceb386841a429535ac
2012-02-01 21:24:38 +00:00
Vincent Palatin
5d8e326da3 stm32l: avoid spurious USART interrupts
The TX empty interrupt needs an actual write to DR to be cleared.
So, we de-activate it before filling the TX buffer to ensure the
interrupt won't fire after the last write.

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

BUG=None
TEST=run EC console along with a lower priority task on Discovery board,
and check the task is scheduled as expected.

Change-Id: I56c33c6dd7ccfd238fd9d5910780d12945467010
2012-02-01 20:21:01 +00:00
chrome-bot
79dda3a44b Merge "Handle left and right arrow key in UART console." 2012-01-31 19:18:21 -08:00
Vic Yang
1a10681369 Handle left and right arrow key in UART console.
Handle left and right arrow key to move cursor around.
Other escape sequences are still ignored.

BUG=chrome-os-partner:7865
TEST=type some text and use left and right arrow key. Cursor should
move.
type 'hellp', left key, and backspace. Should show 'help' and hitting
enter prints help.
type 'hexp', left key, backspace, 'l'. Should show 'help and hitting
enter prints help.

Change-Id: If9ac4504c56f023f824175de2daf565ce72d4560
2012-02-01 10:35:36 +08:00
Vincent Palatin
e3edad4459 stm32l: add UART driver
simple UART driver to get the serial console on the USART3.

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

BUG=None
TEST=run on Discovery board and check we get the first message on the
UART and the console is echoing the characters.

Change-Id: Id85999a5ddbd75804e9317a1b8c2fd4afb89eb38
2012-01-31 22:29:13 +00:00
Randall Spangler
df1d893322 Change COMx port to COM1
Signed-off-by: Randall Spangler <rspangler@chromium.org>

BUG=chrome-os-partner:7804
TEST=boot and check UART2 output; should have coreboot debug output

Change-Id: Ia0d16498180bb7b7d466d10268a959097e385fac
2012-01-30 16:11:44 -08:00
Vincent Palatin
5e22f8e51b expand properly the IRQ number for IRQ declaration macro
Expand the macros before building the priority variable name in order to
ensure we have a valid name.

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

BUG=None
TEST=check manually preprocessor expansion for several combinations.

Change-Id: I926821d42c966ac674e7d24254c9f22779f93ca2
2012-01-30 22:32:39 +00:00
Vincent Palatin
fb52ad00e4 stm32l: initialize clocks
Run from internal clock at 16Mhz, but enable PLL to get a better
precision.

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

BUG=None
TEST=run on discovery board and check software is still alive after
clock initialization.

Change-Id: I8425482825015adf96c30e67a9320d0df2f4f2b7
2012-01-30 22:32:39 +00:00
Vincent Palatin
4c98732ce7 Add register definitions for STM32L SoC
Define IRQs and register addresses for basic peripherals to do STM32L
bringup.

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

BUG=None
TEST=mostly untested, there should be typos over there...

Change-Id: Ib6d90436e25be74f724112619cdae7acccfaf085
2012-01-30 22:32:38 +00:00
Randall Spangler
861db4c6f3 Add workaround for fan controller to handle speeds more than 7000 rpm
Signed-off-by: Randall Spangler <rspangler@chromium.org>

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

// enable fan
gpioset enable_vs 1
// set fan speed to 7000
fanset 7000
faninfo
// should report duty cycle about 65%, fan speed about 7000 rpm, status = 2
fanset 4000
faninfo
// should report duty cycle about 25%, fan speed about 4000 rpm, status = 2
fanset -1
// should report duty cycle 100%, fan speed about 8800 rpm, status = 3

Change-Id: Ib7d7df14ad240811e6e79bc1fc4ecf0e6841c334
2012-01-27 16:06:15 -08:00
Randall Spangler
05bc7eca93 Eat terminal escape sequences
I keep hitting the darn arrow keys.  Until we can do something more
elegant like a real command history, this will at least keep me from
corrupting the display and input buffer.

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

BUG=none
TEST=type 'help' and some arrow keys, then enter.  Should print help, not an error.

Change-Id: Idb552e9c22876fc2dc1f349f0038e94048f00aa7
2012-01-27 13:58:49 -08:00
Randall Spangler
a643b6216c Track the remaining GPIOs from the PCH
To assist in x86 chipset bringup, there are 4 GPIOs we weren't
printing state transitions for.

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

BUG=none
TEST=reboot; should see state transitions in the high nibble (mask 0xF000), for example:
  [x86 power state 1 = S5, in 0x2001]
  [x86 power state 1 = S5, in 0x3001]
  [x86 power state 1 = S5, in 0x7001]

Change-Id: I0527e4698425d845e8b08589e89592f95d8bee41
2012-01-27 13:18:00 -08:00
Randall Spangler
7a5832bcd8 Fix setting GPIO outputs and keyboard scanning
Keyboard scanning was not properly configuring GPIOs on link.  Among
the problems, it was setting GPIO level then direction, when it needs
to set direction first.  Also fixed this in gpio pre-init.

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

BUG=chrome-os-partner:7761
TEST=1) press keys on keyboard; see keyboard state change on console
2) 'gpioget PCH_PWRBTNn' should report 1 after boot, not 0

Change-Id: I54010aa6eef1de4822574f964de369b459ee6d0f
2012-01-27 11:18:03 -08:00