blob: 5cbea2b8f2e448e17771dee5f62e17cf9c1b71a1 [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
Simran Basia9ad25e2013-04-23 11:57:00 -070010SERVO_ID_DEFAULTS = [(0x0403, 0x6011), (0x0403, 0x6014), (0x18d1, 0x5001),
Nick Sanders12d4cd12016-04-11 22:47:48 -070011 (0x18d1, 0x5002), (0x18d1, 0x5004), (0x18d1, 0x500f),
Nick Sanders5bf796b2016-07-20 23:30:04 -070012 (0x18d1, 0x5014), (0x18d1, 0x501a), (0x18d1, 0x501b)]
Simran Basie750a342013-03-12 13:45:26 -070013
14# servo v1 w/o FT4232h EEPROM programmed
15INTERFACE_DEFAULTS[0x0403][0x6011] = ['ftdi_gpio', 'ftdi_i2c',
16 'ftdi_gpio', 'ftdi_gpio']
17# servo v1
18INTERFACE_DEFAULTS[0x18d1][0x5001] = ['ftdi_gpio', 'ftdi_i2c',
19 'ftdi_gpio', 'ftdi_gpio']
20# servo V2
21# Dummy interface 0 == JTAG via openocd
22# Dummy interface 4,5 == SPI via flashrom
Aseda Aboagyea4922212015-11-20 15:19:08 -080023# ec3po_uart interface 8,9 == usbpd console, ec console. Applicable to servo v3
24# as well.
25EC3PO_USBPD_INTERFACE_NUM = 8
26EC3PO_EC_INTERFACE_NUM = 9
27SERVO_V2_DEFAULTS = [(0x18d1, 0x5002)]
28for vid, pid in SERVO_V2_DEFAULTS:
29 INTERFACE_DEFAULTS[vid][pid] = \
Kevin Cheng042f4932016-07-19 10:46:00 -070030 ['ftdi_dummy', 'ftdi_i2c', 'ftdi_uart', 'ftdi_uart', 'ftdi_dummy',
31 'ftdi_dummy', 'ftdi_uart', 'ftdi_uart',
Aseda Aboagyea4922212015-11-20 15:19:08 -080032 {'name': 'ec3po_uart'},
33 {'name': 'ec3po_uart'}]
Simran Basie750a342013-03-12 13:45:26 -070034
35# servo v3
Aseda Aboagyea4922212015-11-20 15:19:08 -080036SERVO_V3_DEFAULTS = [(0x18d1, 0x5004)]
37for vid, pid in SERVO_V3_DEFAULTS:
38 INTERFACE_DEFAULTS[vid][pid] = \
Simran Basi949309b2013-05-31 15:12:15 -070039 ['bb_gpio',
Rong Changc6c8c022014-08-11 14:07:11 +080040 {'name': 'dev_i2c', 'bus_num': 1},
Simran Basi949309b2013-05-31 15:12:15 -070041 {'name': 'bb_uart', 'uart_num': 5,
Todd Brochb21d8042014-05-15 12:54:54 -070042 'txd': ['lcd_data8', 0x4], 'rxd': ['lcd_data9', 0x4]},
Rong Changc6c8c022014-08-11 14:07:11 +080043 {'name': 'dev_i2c', 'bus_num': 2},
Aaron.Chuang88eff332014-07-31 08:32:00 +080044 'bb_adc',
Simran Basi949309b2013-05-31 15:12:15 -070045 'dummy',
46 {'name': 'bb_uart', 'uart_num': 1},
Nick Sandersbc836282015-12-08 21:19:23 -080047 {'name': 'bb_uart', 'uart_num': 2},
Aseda Aboagyea4922212015-11-20 15:19:08 -080048 {'name': 'ec3po_uart'},
49 {'name': 'ec3po_uart'},
Nick Sandersbc836282015-12-08 21:19:23 -080050 {'name': 'bb_uart', 'uart_num': 4}]
Simran Basie750a342013-03-12 13:45:26 -070051
Simran Basia9ad25e2013-04-23 11:57:00 -070052INTERFACE_DEFAULTS[0x0403][0x6014] = INTERFACE_DEFAULTS[0x18d1][0x5004]
53
Nick Sanders12d4cd12016-04-11 22:47:48 -070054# Ryu Raiden CCD
55RAIDEN_DEFAULTS = [(0x18d1, 0x500f)]
56for vid, pid in RAIDEN_DEFAULTS:
57 INTERFACE_DEFAULTS[vid][pid] = \
58 [{'name': 'stm32_uart', 'interface': 0}, # 1: EC_PD
59 {'name': 'stm32_uart', 'interface': 1}, # 2: AP
60 'dummy', # 3
61 'dummy', # 4
62 'dummy', # 5
63 'dummy', # 6
64 'dummy', # 7
65 'dummy', # 8
66 'dummy', # 9
67 {'name': 'ec3po_uart', #10: dut ec console
68 'raw_pty': 'raw_ec_uart_pty'},
69 ]
Nick Sanders97bc4462016-01-04 15:37:31 -080070
Nick Sanders5bf796b2016-07-20 23:30:04 -070071# cr50 CCD
72CCD_DEFAULTS = [(0x18d1, 0x5014)]
73for vid, pid in CCD_DEFAULTS:
74 INTERFACE_DEFAULTS[vid][pid] = \
75 [{'name': 'stm32_uart', 'interface': 3}, # 1: EC_PD
Mary Ruthvenf093c142016-09-27 12:08:42 -070076 {'name': 'stm32_i2c', 'interface': 6}, # 2: i2c
77 {'name': 'stm32_uart', 'interface': 2}, # 3: AP
78 {'name': 'stm32_uart', 'interface': 0}, # 4: cr50 console
79 'dummy', # 5: HID: intf 1
80 'dummy', # 6: USB FW: intf 4
81 'dummy', # 7: SPI: intf 5
82 {'name': 'ec3po_uart', # 8: cr50 console
Nick Sanders5bf796b2016-07-20 23:30:04 -070083 'raw_pty': 'raw_cr50_console_pty'},
Mary Ruthvenf093c142016-09-27 12:08:42 -070084 'dummy', # 9: dummy
Nick Sanders5bf796b2016-07-20 23:30:04 -070085 {'name': 'ec3po_uart', #10: dut ec console
86 'raw_pty': 'raw_ec_uart_pty'},
87 ]
88
Nick Sanders97bc4462016-01-04 15:37:31 -080089# Servo micro
90SERVO_MICRO_DEFAULTS = [(0x18d1, 0x501a)]
91for vid, pid in SERVO_MICRO_DEFAULTS:
92 INTERFACE_DEFAULTS[vid][pid] = \
Nick Sanders6116dc92016-07-14 23:55:51 -070093 ['dummy', # 1:
Nick Sanders97bc4462016-01-04 15:37:31 -080094 {'name': 'stm32_uart', 'interface': 0}, # 2: uart3/legacy
95 {'name': 'stm32_uart', 'interface': 3}, # 3: servo console
96 {'name': 'stm32_i2c', 'interface': 4}, # 4: i2c
97 {'name': 'stm32_uart', 'interface': 5}, # 5: uart2 / dut ap
98 {'name': 'stm32_uart', 'interface': 6}, # 6: uart1 / dut ec
99 {'name': 'ec3po_uart', # 7: servo console
100 'raw_pty': 'raw_servo_console_pty'},
Nick Sanderse623b2f2016-04-01 16:16:34 -0700101 'dummy', # 8: dummy
Nick Sanders97bc4462016-01-04 15:37:31 -0800102 {'name': 'ec3po_uart', # 9: dut pd console
103 'raw_pty': 'raw_usbpd_uart_pty'},
Nick Sanderse623b2f2016-04-01 16:16:34 -0700104 {'name': 'ec3po_uart', #10: dut ec console
105 'raw_pty': 'raw_ec_uart_pty'},
Nick Sanders97bc4462016-01-04 15:37:31 -0800106 ]
107
108# Servo v4
109SERVO_V4_DEFAULTS = [(0x18d1, 0x501b)]
110for vid, pid in SERVO_V4_DEFAULTS:
Kevin Cheng5c667212016-07-07 10:58:04 -0700111 # dummy slots for servo micro use (interface #1-10).
112 INTERFACE_DEFAULTS[vid][pid] = ['dummy'] * 10
113
114 # Buffer slots for servo micro (interface #11-20).
115 INTERFACE_DEFAULTS[vid][pid] += ['dummy'] * 10
116
117 # Servo v4 interfaces.
118 INTERFACE_DEFAULTS[vid][pid] += \
119 [{'name': 'stm32_gpio', 'interface': 1}, #21: 32x GPIO block.
120 {'name': 'stm32_uart', 'interface': 0}, #22: servo console.
121 {'name': 'stm32_i2c', 'interface': 2}, #23: i2c
122 {'name': 'stm32_uart', 'interface': 3}, #24: dut sbu uart
123 {'name': 'stm32_uart', 'interface': 4}, #25: atmega uart
124 {'name': 'ec3po_uart', #26: servo v4 console
Nick Sandersa3649712016-03-01 16:53:52 -0800125 'raw_pty': 'raw_servo_v4_console_pty'},
Nick Sanders97bc4462016-01-04 15:37:31 -0800126 ]
127
Simran Basie750a342013-03-12 13:45:26 -0700128# miniservo
129MINISERVO_ID_DEFAULTS = [(0x403, 0x6001), (0x18d1, 0x5000)]
130for vid, pid in MINISERVO_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800131 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Simran Basie750a342013-03-12 13:45:26 -0700132
133SERVO_ID_DEFAULTS.extend(MINISERVO_ID_DEFAULTS)
Vincent Palatinf536f002013-04-11 12:43:49 -0700134
135# Toad
136TOAD_ID_DEFAULTS = [(0x403, 0x6015)]
137for vid, pid in TOAD_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800138 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatinf536f002013-04-11 12:43:49 -0700139
140SERVO_ID_DEFAULTS.extend(TOAD_ID_DEFAULTS)
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700141
142# Reston
143RESTON_ID_DEFAULTS = [(0x18d1, 0x5007)]
144for vid, pid in RESTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800145 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700146
147SERVO_ID_DEFAULTS.extend(RESTON_ID_DEFAULTS)
Vincent Palatin77629ac2014-03-21 09:33:13 -0700148
149# Fruitpie
150FRUITPIE_ID_DEFAULTS = [(0x18d1, 0x5009)]
151for vid, pid in FRUITPIE_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800152 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin77629ac2014-03-21 09:33:13 -0700153
154SERVO_ID_DEFAULTS.extend(FRUITPIE_ID_DEFAULTS)
Todd Brochb21d8042014-05-15 12:54:54 -0700155
Alec Berge7549802014-07-14 11:52:36 -0700156# Plankton
157PLANKTON_ID_DEFAULTS = [(0x18d1, 0x500c)]
158for vid, pid in PLANKTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800159 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Alec Berge7549802014-07-14 11:52:36 -0700160
161SERVO_ID_DEFAULTS.extend(PLANKTON_ID_DEFAULTS)
162
Todd Brochb21d8042014-05-15 12:54:54 -0700163# Allow Board overrides of interfaces as we've started to overload some servo V2
Aseda Aboagyec24a3882016-03-15 12:37:56 -0700164# pinout functionality. To-date just swapping EC SPI and JTAG interfaces for
165# USB PD MCU UART
Todd Brochb21d8042014-05-15 12:54:54 -0700166# TODO(tbroch) See about availability of extra uart on Servo V3/beaglebone
167INTERFACE_BOARDS = collections.defaultdict(
168 lambda: collections.defaultdict(dict))
169# samus re-purposes EC SPI to be USB PD UART
170INTERFACE_BOARDS['samus'][0x18d1][0x5002] = \
171 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
172INTERFACE_BOARDS['samus'][0x18d1][0x5002][5] = 'ftdi_uart'
Rong Chang97d0e0c2015-04-24 09:02:31 +0800173# oak re-purposes EC SPI to be USB PD UART
174INTERFACE_BOARDS['oak'][0x18d1][0x5002] = \
175 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
176INTERFACE_BOARDS['oak'][0x18d1][0x5002][5] = 'ftdi_uart'
Yidi Lineeda3ce2016-03-31 20:05:52 +0800177INTERFACE_BOARDS['elm'][0x18d1][0x5002] = \
178 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
179INTERFACE_BOARDS['elm'][0x18d1][0x5002][5] = 'ftdi_uart'
Kevin K Wong6460d5a2015-06-24 18:05:11 -0700180# strago re-purposes JTAG to be UART
181INTERFACE_BOARDS['strago'][0x18d1][0x5002] = \
182 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
183INTERFACE_BOARDS['strago'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700184
185# Skylake boards re-purpose JTAG to be UART
Ted Kuoa30454d2016-08-05 10:54:24 +0800186INTERFACE_BOARDS['asuka'][0x18d1][0x5002] = \
187 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
188INTERFACE_BOARDS['asuka'][0x18d1][0x5002][0] = 'ftdi_uart'
zhuo-haoe571a0d2016-03-21 14:56:44 +0800189INTERFACE_BOARDS['cave'][0x18d1][0x5002] = \
190 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
191INTERFACE_BOARDS['cave'][0x18d1][0x5002][0] = 'ftdi_uart'
Ryan Linf05ac312016-10-06 15:47:11 +0800192INTERFACE_BOARDS['caroline'][0x18d1][0x5002] = \
193 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
194INTERFACE_BOARDS['caroline'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700195INTERFACE_BOARDS['chell'][0x18d1][0x5002] = \
196 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
197INTERFACE_BOARDS['chell'][0x18d1][0x5002][0] = 'ftdi_uart'
198INTERFACE_BOARDS['glados'][0x18d1][0x5002] = \
199 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
200INTERFACE_BOARDS['glados'][0x18d1][0x5002][0] = 'ftdi_uart'
Kevin K Wong92a07672015-06-24 22:21:31 -0700201INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002] = \
202 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
203INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700204INTERFACE_BOARDS['lars'][0x18d1][0x5002] = \
205 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
206INTERFACE_BOARDS['lars'][0x18d1][0x5002][0] = 'ftdi_uart'
Kaiyen Chang73133d72016-10-18 17:26:11 +0800207INTERFACE_BOARDS['pbody'][0x18d1][0x5002] = \
208 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
209INTERFACE_BOARDS['pbody'][0x18d1][0x5002][0] = 'ftdi_uart'
Aseda Aboagyea035e3c2016-03-15 12:27:43 -0700210INTERFACE_BOARDS['sentry'][0x18d1][0x5002] = \
211 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
212INTERFACE_BOARDS['sentry'][0x18d1][0x5002][0] = 'ftdi_uart'