blob: 3ee365ed2db6f37947fd4432c5a0837d56bdc884 [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),
12 (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
71# Servo micro
72SERVO_MICRO_DEFAULTS = [(0x18d1, 0x501a)]
73for vid, pid in SERVO_MICRO_DEFAULTS:
74 INTERFACE_DEFAULTS[vid][pid] = \
Nick Sanders6116dc92016-07-14 23:55:51 -070075 ['dummy', # 1:
Nick Sanders97bc4462016-01-04 15:37:31 -080076 {'name': 'stm32_uart', 'interface': 0}, # 2: uart3/legacy
77 {'name': 'stm32_uart', 'interface': 3}, # 3: servo console
78 {'name': 'stm32_i2c', 'interface': 4}, # 4: i2c
79 {'name': 'stm32_uart', 'interface': 5}, # 5: uart2 / dut ap
80 {'name': 'stm32_uart', 'interface': 6}, # 6: uart1 / dut ec
81 {'name': 'ec3po_uart', # 7: servo console
82 'raw_pty': 'raw_servo_console_pty'},
Nick Sanderse623b2f2016-04-01 16:16:34 -070083 'dummy', # 8: dummy
Nick Sanders97bc4462016-01-04 15:37:31 -080084 {'name': 'ec3po_uart', # 9: dut pd console
85 'raw_pty': 'raw_usbpd_uart_pty'},
Nick Sanderse623b2f2016-04-01 16:16:34 -070086 {'name': 'ec3po_uart', #10: dut ec console
87 'raw_pty': 'raw_ec_uart_pty'},
Nick Sanders97bc4462016-01-04 15:37:31 -080088 ]
89
90# Servo v4
91SERVO_V4_DEFAULTS = [(0x18d1, 0x501b)]
92for vid, pid in SERVO_V4_DEFAULTS:
Kevin Cheng5c667212016-07-07 10:58:04 -070093 # dummy slots for servo micro use (interface #1-10).
94 INTERFACE_DEFAULTS[vid][pid] = ['dummy'] * 10
95
96 # Buffer slots for servo micro (interface #11-20).
97 INTERFACE_DEFAULTS[vid][pid] += ['dummy'] * 10
98
99 # Servo v4 interfaces.
100 INTERFACE_DEFAULTS[vid][pid] += \
101 [{'name': 'stm32_gpio', 'interface': 1}, #21: 32x GPIO block.
102 {'name': 'stm32_uart', 'interface': 0}, #22: servo console.
103 {'name': 'stm32_i2c', 'interface': 2}, #23: i2c
104 {'name': 'stm32_uart', 'interface': 3}, #24: dut sbu uart
105 {'name': 'stm32_uart', 'interface': 4}, #25: atmega uart
106 {'name': 'ec3po_uart', #26: servo v4 console
Nick Sandersa3649712016-03-01 16:53:52 -0800107 'raw_pty': 'raw_servo_v4_console_pty'},
Nick Sanders97bc4462016-01-04 15:37:31 -0800108 ]
109
Simran Basie750a342013-03-12 13:45:26 -0700110# miniservo
111MINISERVO_ID_DEFAULTS = [(0x403, 0x6001), (0x18d1, 0x5000)]
112for vid, pid in MINISERVO_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800113 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Simran Basie750a342013-03-12 13:45:26 -0700114
115SERVO_ID_DEFAULTS.extend(MINISERVO_ID_DEFAULTS)
Vincent Palatinf536f002013-04-11 12:43:49 -0700116
117# Toad
118TOAD_ID_DEFAULTS = [(0x403, 0x6015)]
119for vid, pid in TOAD_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800120 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatinf536f002013-04-11 12:43:49 -0700121
122SERVO_ID_DEFAULTS.extend(TOAD_ID_DEFAULTS)
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700123
124# Reston
125RESTON_ID_DEFAULTS = [(0x18d1, 0x5007)]
126for vid, pid in RESTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800127 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700128
129SERVO_ID_DEFAULTS.extend(RESTON_ID_DEFAULTS)
Vincent Palatin77629ac2014-03-21 09:33:13 -0700130
131# Fruitpie
132FRUITPIE_ID_DEFAULTS = [(0x18d1, 0x5009)]
133for vid, pid in FRUITPIE_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800134 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin77629ac2014-03-21 09:33:13 -0700135
136SERVO_ID_DEFAULTS.extend(FRUITPIE_ID_DEFAULTS)
Todd Brochb21d8042014-05-15 12:54:54 -0700137
Alec Berge7549802014-07-14 11:52:36 -0700138# Plankton
139PLANKTON_ID_DEFAULTS = [(0x18d1, 0x500c)]
140for vid, pid in PLANKTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800141 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Alec Berge7549802014-07-14 11:52:36 -0700142
143SERVO_ID_DEFAULTS.extend(PLANKTON_ID_DEFAULTS)
144
Todd Brochb21d8042014-05-15 12:54:54 -0700145# Allow Board overrides of interfaces as we've started to overload some servo V2
Aseda Aboagyec24a3882016-03-15 12:37:56 -0700146# pinout functionality. To-date just swapping EC SPI and JTAG interfaces for
147# USB PD MCU UART
Todd Brochb21d8042014-05-15 12:54:54 -0700148# TODO(tbroch) See about availability of extra uart on Servo V3/beaglebone
149INTERFACE_BOARDS = collections.defaultdict(
150 lambda: collections.defaultdict(dict))
151# samus re-purposes EC SPI to be USB PD UART
152INTERFACE_BOARDS['samus'][0x18d1][0x5002] = \
153 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
154INTERFACE_BOARDS['samus'][0x18d1][0x5002][5] = 'ftdi_uart'
Rong Chang97d0e0c2015-04-24 09:02:31 +0800155# oak re-purposes EC SPI to be USB PD UART
156INTERFACE_BOARDS['oak'][0x18d1][0x5002] = \
157 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
158INTERFACE_BOARDS['oak'][0x18d1][0x5002][5] = 'ftdi_uart'
Yidi Lineeda3ce2016-03-31 20:05:52 +0800159INTERFACE_BOARDS['elm'][0x18d1][0x5002] = \
160 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
161INTERFACE_BOARDS['elm'][0x18d1][0x5002][5] = 'ftdi_uart'
Kevin K Wong6460d5a2015-06-24 18:05:11 -0700162# strago re-purposes JTAG to be UART
163INTERFACE_BOARDS['strago'][0x18d1][0x5002] = \
164 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
165INTERFACE_BOARDS['strago'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700166
167# Skylake boards re-purpose JTAG to be UART
zhuo-haoe571a0d2016-03-21 14:56:44 +0800168INTERFACE_BOARDS['cave'][0x18d1][0x5002] = \
169 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
170INTERFACE_BOARDS['cave'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700171INTERFACE_BOARDS['chell'][0x18d1][0x5002] = \
172 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
173INTERFACE_BOARDS['chell'][0x18d1][0x5002][0] = 'ftdi_uart'
174INTERFACE_BOARDS['glados'][0x18d1][0x5002] = \
175 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
176INTERFACE_BOARDS['glados'][0x18d1][0x5002][0] = 'ftdi_uart'
Kevin K Wong92a07672015-06-24 22:21:31 -0700177INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002] = \
178 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
179INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700180INTERFACE_BOARDS['lars'][0x18d1][0x5002] = \
181 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
182INTERFACE_BOARDS['lars'][0x18d1][0x5002][0] = 'ftdi_uart'
Aseda Aboagyea035e3c2016-03-15 12:27:43 -0700183INTERFACE_BOARDS['sentry'][0x18d1][0x5002] = \
184 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
185INTERFACE_BOARDS['sentry'][0x18d1][0x5002][0] = 'ftdi_uart'