summaryrefslogtreecommitdiff
path: root/docs/zephyr_poc_device_bringup.md
blob: 394aa4a05bf2dd1b3ccc8a3791656531678dfc80 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Zephyr Proof-of-Concept-Device Bringup

It may be useful to build a Zephyr OS-based EC for a device which
already has a CrOS EC device build, for the purposes of demonstrating
the feasibility of Zephyr OS.

This document is a work-in-progress list of tricks & tools that may be
useful to you.

## Initial Bringup

Initially, you'll want to get a basic UART functioning with nothing
but a shell and some basic console commands.

An example CL to do this for Lazor can be found
[here](https://crrev.com/c/2749765).

## Bringing up GPIOs

After you have UART functioning, GPIOs can be an easy target to start
unblocking further features.

We have a very ugly program to auto-generate the GPIO DTS based on
gpio.inc for the existing board.  You can find it at
`util/gpios_to_zephyr_dts.c`, and instructions are in the file on how
to compile and use it.  You may have to hand-modify the output.

The resultant CL for Lazor can be found [here](https://crrev.com/c/2749768).

## Bring up Host Commands

Set `CONFIG_PLATFORM_EC_HOSTCMD=y` and enable the appropriate
host-command interface for your platform (e.g., eSPI).

An example CL for Lazor can be found [here](https://crrev.com/c/2749428).

As long as you get this compiling that should be enough to move to the
next step.  Further testing of the host command layer will require
power sequencing up and going.

## Enabling some simple GPIO-based buttons and switches

Next, you can:

* [Add the lid switch](https://crrev.com/c/2749768)
* [Add the power button](https://crrev.com/c/2749426)
* [Add AC presence detection](https://crrev.com/c/2749428)

## Power Sequencing

TODO(jrosenth): add steps on enabling power sequencing and expand this
document.