blob: 8f78ed35e62a3ea12d2098f5439d4eb700276ae1 [file] [log] [blame]
Simran Basie750a342013-03-12 13:45:26 -07001# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4"""Defines the interfaces for the different servo models."""
Simran Basi5492bde2013-05-16 17:08:47 -07005
Simran Basie750a342013-03-12 13:45:26 -07006import collections
7
8INTERFACE_DEFAULTS = collections.defaultdict(dict)
9
Puthikorn Voravootivat01ead152018-03-23 15:38:40 -070010SERVO_ID_DEFAULTS = [(0x0403, 0x6014), (0x18d1, 0x5001), (0x18d1, 0x5002),
11 (0x18d1, 0x5004), (0x18d1, 0x500f), (0x18d1, 0x5014),
12 (0x18d1, 0x501a), (0x18d1, 0x501b)]
Simran Basie750a342013-03-12 13:45:26 -070013
Simran Basie750a342013-03-12 13:45:26 -070014# servo v1
Wai-Hong Tam564c1702017-04-24 09:23:38 -070015INTERFACE_DEFAULTS[0x18d1][0x5001] = \
16 ['dummy',
17 'ftdi_gpio',
18 'ftdi_i2c',
19 'ftdi_gpio',
20 'ftdi_gpio',
Puthikorn Voravootivat01ead152018-03-23 15:38:40 -070021 ]
Wai-Hong Tam564c1702017-04-24 09:23:38 -070022
Simran Basie750a342013-03-12 13:45:26 -070023# servo V2
Wai-Hong Tam564c1702017-04-24 09:23:38 -070024# Dummy interface 1 == JTAG via openocd
25# Dummy interface 5,6 == SPI via flashrom
26# ec3po_uart interface 9,10 == usbpd console, ec console. Applicable to servo v3
Aseda Aboagyea4922212015-11-20 15:19:08 -080027# as well.
Aseda Aboagyea4922212015-11-20 15:19:08 -080028SERVO_V2_DEFAULTS = [(0x18d1, 0x5002)]
29for vid, pid in SERVO_V2_DEFAULTS:
30 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -070031 ['dummy',
Wai-Hong Tam4b97c162017-04-24 11:58:54 -070032 'ftdi_dummy', # 1
33 'ftdi_i2c', # 2
34 'ftdi_uart', # 3: uart3/legacy
35 'ftdi_uart', # 4: ATMEGA
36 'ftdi_dummy', # 5
37 'ftdi_dummy', # 6
38 'ftdi_uart', # 7: EC
39 'ftdi_uart', # 8: AP
40 {'name': 'ec3po_uart', # 9: EC3PO(USBPD)
Nick Sanders116ed9e2018-03-09 19:05:16 -080041 'raw_pty': 'raw_usbpd_uart_pty', 'source': 'PD/Cr50'},
Wai-Hong Tam4b97c162017-04-24 11:58:54 -070042 {'name': 'ec3po_uart', #10: EC3PO(EC)
Nick Sanders116ed9e2018-03-09 19:05:16 -080043 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -070044 ]
Simran Basie750a342013-03-12 13:45:26 -070045
46# servo v3
Aseda Aboagyea4922212015-11-20 15:19:08 -080047SERVO_V3_DEFAULTS = [(0x18d1, 0x5004)]
48for vid, pid in SERVO_V3_DEFAULTS:
49 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -070050 ['dummy',
Wai-Hong Tam4b97c162017-04-24 11:58:54 -070051 'bb_gpio', # 1
52 {'name': 'dev_i2c', 'bus_num': 1}, # 2
53 {'name': 'bb_uart', 'uart_num': 5, # 3: uart3/legacy
54 'txd': ['lcd_data8', 0x4],
55 'rxd': ['lcd_data9', 0x4]},
56 {'name': 'bb_uart', 'uart_num': 4}, # 4: ATMEGA
57 'bb_adc', # 5
58 {'name': 'dev_i2c', 'bus_num': 2}, # 6
59 {'name': 'bb_uart', 'uart_num': 1}, # 7: EC
60 {'name': 'bb_uart', 'uart_num': 2}, # 8: AP
61 'dummy', # 9
62 {'name': 'ec3po_uart', #10: EC3PO(EC)
Nick Sanders116ed9e2018-03-09 19:05:16 -080063 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -070064 ]
Simran Basie750a342013-03-12 13:45:26 -070065
Simran Basia9ad25e2013-04-23 11:57:00 -070066INTERFACE_DEFAULTS[0x0403][0x6014] = INTERFACE_DEFAULTS[0x18d1][0x5004]
67
Nick Sanders12d4cd12016-04-11 22:47:48 -070068# Ryu Raiden CCD
69RAIDEN_DEFAULTS = [(0x18d1, 0x500f)]
70for vid, pid in RAIDEN_DEFAULTS:
71 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -070072 ['dummy',
73 {'name': 'stm32_uart', 'interface': 0}, # 1: EC_PD
Nick Sanders12d4cd12016-04-11 22:47:48 -070074 {'name': 'stm32_uart', 'interface': 1}, # 2: AP
75 'dummy', # 3
76 'dummy', # 4
77 'dummy', # 5
78 'dummy', # 6
79 'dummy', # 7
80 'dummy', # 8
81 'dummy', # 9
82 {'name': 'ec3po_uart', #10: dut ec console
Nick Sanders116ed9e2018-03-09 19:05:16 -080083 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Nick Sanders12d4cd12016-04-11 22:47:48 -070084 ]
Nick Sanders97bc4462016-01-04 15:37:31 -080085
Nick Sanders5bf796b2016-07-20 23:30:04 -070086# cr50 CCD
87CCD_DEFAULTS = [(0x18d1, 0x5014)]
88for vid, pid in CCD_DEFAULTS:
89 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -070090 ['dummy',
Wai-Hong Tam08f6e852017-05-17 17:03:07 -070091 {'name': 'stm32_uart', 'interface': 0}, # 1: Cr50 console
Mary Ruthvend25113b2016-11-16 13:16:30 -080092 {'name': 'stm32_i2c', 'interface': 5}, # 2: i2c
Wai-Hong Tamb74b7912017-04-24 12:35:35 -070093 'dummy', # 3
Wai-Hong Tam08f6e852017-05-17 17:03:07 -070094 'dummy', # 4
Wai-Hong Tamb74b7912017-04-24 12:35:35 -070095 'dummy', # 5
96 'dummy', # 6
97 {'name': 'stm32_uart', 'interface': 2}, # 7: EC/PD
98 {'name': 'stm32_uart', 'interface': 1}, # 8: AP
99 {'name': 'ec3po_uart', # 9: EC3PO(Cr50)
Nick Sanders116ed9e2018-03-09 19:05:16 -0800100 'raw_pty': 'raw_cr50_uart_pty', 'source': 'Cr50'},
Wai-Hong Tamb74b7912017-04-24 12:35:35 -0700101 {'name': 'ec3po_uart', #10: EC3PO(EC)
Nick Sanders116ed9e2018-03-09 19:05:16 -0800102 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Nick Sanders5bf796b2016-07-20 23:30:04 -0700103 ]
104
Nick Sanders97bc4462016-01-04 15:37:31 -0800105# Servo micro
106SERVO_MICRO_DEFAULTS = [(0x18d1, 0x501a)]
107for vid, pid in SERVO_MICRO_DEFAULTS:
108 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700109 ['dummy',
Wai-Hong Tam08f6e852017-05-17 17:03:07 -0700110 {'name': 'stm32_uart', 'interface': 0}, # 1: PD/Cr50 console
Nicolas Boichat11be0fb2017-06-30 14:38:37 +0800111 {'name': 'stm32_i2c', 'interface': 4}, # 2: i2c
Nick Sanders97bc4462016-01-04 15:37:31 -0800112 {'name': 'stm32_uart', 'interface': 3}, # 3: servo console
Nicolas Boichat11be0fb2017-06-30 14:38:37 +0800113 'dummy', # 4: dummy
Wai-Hong Tam7312f812017-04-24 12:13:24 -0700114 'dummy', # 5: dummy
Wai-Hong Tamcadc9192017-04-24 12:23:52 -0700115 {'name': 'ec3po_uart', # 6: servo console
Nick Sanders116ed9e2018-03-09 19:05:16 -0800116 'raw_pty': 'raw_servo_console_pty', 'source': 'servo_micro'},
Wai-Hong Tamcadc9192017-04-24 12:23:52 -0700117 {'name': 'stm32_uart', 'interface': 6}, # 7: uart1/EC console
Wai-Hong Tam7312f812017-04-24 12:13:24 -0700118 {'name': 'stm32_uart', 'interface': 5}, # 8: uart2/AP console
Wai-Hong Tam08f6e852017-05-17 17:03:07 -0700119 {'name': 'ec3po_uart', # 9: EC3PO for PD/Cr50
Nick Sanders116ed9e2018-03-09 19:05:16 -0800120 'raw_pty': 'raw_usbpd_uart_pty', 'source': 'PD/Cr50'},
Wai-Hong Tam08f6e852017-05-17 17:03:07 -0700121 {'name': 'ec3po_uart', #10: EC3PO for EC
Nick Sanders116ed9e2018-03-09 19:05:16 -0800122 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Nick Sanders97bc4462016-01-04 15:37:31 -0800123 ]
124
125# Servo v4
126SERVO_V4_DEFAULTS = [(0x18d1, 0x501b)]
Wai-Hong Tam4544c302017-05-24 19:44:53 -0700127SERVO_V4_SLOT_SIZE = 20
128SERVO_V4_SLOT_POSITIONS = {
Puthikorn Voravootivat01ead152018-03-23 15:38:40 -0700129 'default': 1,
130 'hammer': 41,
131 'staff': 41,
Wai-Hong Tam4544c302017-05-24 19:44:53 -0700132}
133SERVO_V4_CONFIGS = {
Puthikorn Voravootivat01ead152018-03-23 15:38:40 -0700134 'hammer': 'servo_micro_for_hammer.xml',
135 'staff': 'servo_micro_for_hammer.xml',
Wai-Hong Tam4544c302017-05-24 19:44:53 -0700136}
Nick Sanders97bc4462016-01-04 15:37:31 -0800137for vid, pid in SERVO_V4_DEFAULTS:
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700138 # Interface #0 is reserved for no use.
139 INTERFACE_DEFAULTS[vid][pid] = ['dummy']
140
Wai-Hong Tam4544c302017-05-24 19:44:53 -0700141 # Dummy slots for servo micro/CCD use (interface #1-20).
142 INTERFACE_DEFAULTS[vid][pid] += ['dummy'] * SERVO_V4_SLOT_SIZE
Kevin Cheng5c667212016-07-07 10:58:04 -0700143
144 # Servo v4 interfaces.
145 INTERFACE_DEFAULTS[vid][pid] += \
Nick Sanders9d05d632017-11-01 22:06:25 -0700146 ['dummy', #21: just nothing.
Kevin Cheng5c667212016-07-07 10:58:04 -0700147 {'name': 'stm32_uart', 'interface': 0}, #22: servo console.
148 {'name': 'stm32_i2c', 'interface': 2}, #23: i2c
149 {'name': 'stm32_uart', 'interface': 3}, #24: dut sbu uart
150 {'name': 'stm32_uart', 'interface': 4}, #25: atmega uart
151 {'name': 'ec3po_uart', #26: servo v4 console
Nick Sanders116ed9e2018-03-09 19:05:16 -0800152 'raw_pty': 'raw_servo_v4_console_pty', 'source': 'servo_v4'},
Nick Sanders97bc4462016-01-04 15:37:31 -0800153 ]
154
Wai-Hong Tam4544c302017-05-24 19:44:53 -0700155 # Buffer slots for servo v4 (interface #27-40).
156 INTERFACE_DEFAULTS[vid][pid] += ['dummy'] * (40 - 27 + 1)
157
158 # Slots for relocating Hammer interfaces.
159 INTERFACE_DEFAULTS[vid][pid] += ['dummy'] * SERVO_V4_SLOT_SIZE
160
Simran Basie750a342013-03-12 13:45:26 -0700161# miniservo
162MINISERVO_ID_DEFAULTS = [(0x403, 0x6001), (0x18d1, 0x5000)]
163for vid, pid in MINISERVO_ID_DEFAULTS:
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700164 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700165 ['dummy',
Wai-Hong Tamd8a94d62017-04-28 10:11:51 -0700166 'ftdi_gpiouart', # occupies 2 slots
167 'dummy', # reserved for the above ftdi_gpiouart
Nick Sanders116ed9e2018-03-09 19:05:16 -0800168 {'name': 'ec3po_uart', 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700169 ]
Simran Basie750a342013-03-12 13:45:26 -0700170
171SERVO_ID_DEFAULTS.extend(MINISERVO_ID_DEFAULTS)
Vincent Palatinf536f002013-04-11 12:43:49 -0700172
173# Toad
174TOAD_ID_DEFAULTS = [(0x403, 0x6015)]
175for vid, pid in TOAD_ID_DEFAULTS:
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700176 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700177 ['dummy',
Wai-Hong Tamd8a94d62017-04-28 10:11:51 -0700178 'ftdi_gpiouart', # occupies 2 slots
179 'dummy', # reserved for the above ftdi_gpiouart
Nick Sanders116ed9e2018-03-09 19:05:16 -0800180 {'name': 'ec3po_uart', 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700181 ]
Vincent Palatinf536f002013-04-11 12:43:49 -0700182
183SERVO_ID_DEFAULTS.extend(TOAD_ID_DEFAULTS)
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700184
185# Reston
186RESTON_ID_DEFAULTS = [(0x18d1, 0x5007)]
187for vid, pid in RESTON_ID_DEFAULTS:
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700188 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700189 ['dummy',
Wai-Hong Tamd8a94d62017-04-28 10:11:51 -0700190 'ftdi_gpiouart', # occupies 2 slots
191 'dummy', # reserved for the above ftdi_gpiouart
Nick Sanders116ed9e2018-03-09 19:05:16 -0800192 {'name': 'ec3po_uart', 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700193 ]
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700194
195SERVO_ID_DEFAULTS.extend(RESTON_ID_DEFAULTS)
Vincent Palatin77629ac2014-03-21 09:33:13 -0700196
197# Fruitpie
198FRUITPIE_ID_DEFAULTS = [(0x18d1, 0x5009)]
199for vid, pid in FRUITPIE_ID_DEFAULTS:
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700200 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700201 ['dummy',
Wai-Hong Tamd8a94d62017-04-28 10:11:51 -0700202 'ftdi_gpiouart', # occupies 2 slots
203 'dummy', # reserved for the above ftdi_gpiouart
Nick Sanders116ed9e2018-03-09 19:05:16 -0800204 {'name': 'ec3po_uart', 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700205 ]
Vincent Palatin77629ac2014-03-21 09:33:13 -0700206
207SERVO_ID_DEFAULTS.extend(FRUITPIE_ID_DEFAULTS)
Todd Brochb21d8042014-05-15 12:54:54 -0700208
Alec Berge7549802014-07-14 11:52:36 -0700209# Plankton
210PLANKTON_ID_DEFAULTS = [(0x18d1, 0x500c)]
211for vid, pid in PLANKTON_ID_DEFAULTS:
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700212 INTERFACE_DEFAULTS[vid][pid] = \
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700213 ['dummy',
Wai-Hong Tamd8a94d62017-04-28 10:11:51 -0700214 'ftdi_gpiouart', # occupies 2 slots
215 'dummy', # reserved for the above ftdi_gpiouart
Nick Sanders116ed9e2018-03-09 19:05:16 -0800216 {'name': 'ec3po_uart', 'raw_pty': 'raw_ec_uart_pty', 'source': 'EC'},
Wai-Hong Tam6c0fa592017-04-21 12:41:33 -0700217 ]
Alec Berge7549802014-07-14 11:52:36 -0700218
219SERVO_ID_DEFAULTS.extend(PLANKTON_ID_DEFAULTS)
220
Todd Brochb21d8042014-05-15 12:54:54 -0700221# Allow Board overrides of interfaces as we've started to overload some servo V2
Aseda Aboagyec24a3882016-03-15 12:37:56 -0700222# pinout functionality. To-date just swapping EC SPI and JTAG interfaces for
Todd Broch82e7a7a2016-10-25 10:54:48 -0700223# USB PD MCU UART. Note this can NOT be done on servo V3. See crbug.com/567842
224# for details.
Todd Brochb21d8042014-05-15 12:54:54 -0700225INTERFACE_BOARDS = collections.defaultdict(
226 lambda: collections.defaultdict(dict))
Duncan Laurie0728aa82015-10-26 13:56:08 -0700227
Todd Broch82e7a7a2016-10-25 10:54:48 -0700228# re-purposes EC SPI to be UART for USBPD MCU
Aseda Aboagyed4afa0d2017-08-09 12:24:49 -0700229for board in ['elm', 'hana', 'oak', 'samus']:
Todd Broch82e7a7a2016-10-25 10:54:48 -0700230 INTERFACE_BOARDS[board][0x18d1][0x5002] = \
231 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700232 INTERFACE_BOARDS[board][0x18d1][0x5002][6] = 'ftdi_uart'
Todd Broch82e7a7a2016-10-25 10:54:48 -0700233
Nicolas Boichatc02d0872017-03-24 08:25:06 +0800234# re-purposes JTAG to be UART for USBPD MCU or H1
Puthikorn Voravootivat01ead152018-03-23 15:38:40 -0700235for board in [
Douglas Anderson81ac3e72018-04-10 16:10:03 -0700236 'asuka',
237 'caroline',
238 'cave',
239 'chell',
240 'cheza',
241 'eve',
242 'fizz',
243 'glados',
244 'grunt',
245 'kunimitsu',
246 'lars',
247 'meowth',
248 'nami',
249 'nautilus',
250 'pbody',
251 'poppy',
252 'reef',
253 'scarlet',
254 'sentry',
255 'soraka',
256 'strago',
257 'zoombini',
Puthikorn Voravootivat01ead152018-03-23 15:38:40 -0700258]:
Todd Broch82e7a7a2016-10-25 10:54:48 -0700259 INTERFACE_BOARDS[board][0x18d1][0x5002] = \
260 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
Wai-Hong Tam564c1702017-04-24 09:23:38 -0700261 INTERFACE_BOARDS[board][0x18d1][0x5002][1] = 'ftdi_uart'