blob: aab5793eb0f1d20c03663a40654727521113548e [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] = \
Mary Ruthvend25113b2016-11-16 13:16:30 -080075 [{'name': 'stm32_uart', 'interface': 2}, # 1: EC_PD
76 {'name': 'stm32_i2c', 'interface': 5}, # 2: i2c
77 {'name': 'stm32_uart', 'interface': 1}, # 3: AP
Mary Ruthvenf093c142016-09-27 12:08:42 -070078 {'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
Todd Broch82e7a7a2016-10-25 10:54:48 -0700165# USB PD MCU UART. Note this can NOT be done on servo V3. See crbug.com/567842
166# for details.
Todd Brochb21d8042014-05-15 12:54:54 -0700167INTERFACE_BOARDS = collections.defaultdict(
168 lambda: collections.defaultdict(dict))
Duncan Laurie0728aa82015-10-26 13:56:08 -0700169
Todd Broch82e7a7a2016-10-25 10:54:48 -0700170# re-purposes EC SPI to be UART for USBPD MCU
171for board in ['elm', 'oak', 'samus']:
172 INTERFACE_BOARDS[board][0x18d1][0x5002] = \
173 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
174 INTERFACE_BOARDS[board][0x18d1][0x5002][5] = 'ftdi_uart'
175
176# re-purposes JTAG to be UART for USBPD MCU
Todd Broch09f17f12016-10-25 10:37:16 -0700177for board in ['asuka', 'caroline', 'cave', 'chell', 'glados',
178 'kunimitsu', 'lars', 'pbody', 'sentry', 'strago']:
Todd Broch82e7a7a2016-10-25 10:54:48 -0700179 INTERFACE_BOARDS[board][0x18d1][0x5002] = \
180 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
181 INTERFACE_BOARDS[board][0x18d1][0x5002][0] = 'ftdi_uart'
Todd Broch09f17f12016-10-25 10:37:16 -0700182
183# TODO(crosbug.com/p/60939) re-purpose JTAG to H1 uart at some point but dummy
184# for now.
185for board in ['eve']:
186 INTERFACE_BOARDS[board][0x18d1][0x5002] = \
187 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
188 INTERFACE_BOARDS[board][0x18d1][0x5002][0] = 'dummy'