blob: beec2a6cfdf198292bcbbfb2ece8c25900a7c611 [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] = \
Simran Basie750a342013-03-12 13:45:26 -070030 ['dummy', 'ftdi_i2c', 'ftdi_uart', 'ftdi_uart', 'dummy',
Aseda Aboagyea4922212015-11-20 15:19:08 -080031 'dummy', 'ftdi_uart', 'ftdi_uart',
32 {'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] = \
75 ['stm32_gpio', # 1: 32x GPIO block
76 {'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:
93 INTERFACE_DEFAULTS[vid][pid] = \
94 ['stm32_gpio', # 1: 32x GPIO block
95 {'name': 'stm32_uart', 'interface': 0}, # 2: UART4
96 {'name': 'stm32_uart', 'interface': 3}, # 3: servo console
97 {'name': 'stm32_i2c', 'interface': 4}, # 4: i2c
98 {'name': 'ec3po_uart', # 5: servo console
99 'raw_pty': 'raw_servo_console_pty'},
100 ]
101
Simran Basie750a342013-03-12 13:45:26 -0700102# miniservo
103MINISERVO_ID_DEFAULTS = [(0x403, 0x6001), (0x18d1, 0x5000)]
104for vid, pid in MINISERVO_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800105 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Simran Basie750a342013-03-12 13:45:26 -0700106
107SERVO_ID_DEFAULTS.extend(MINISERVO_ID_DEFAULTS)
Vincent Palatinf536f002013-04-11 12:43:49 -0700108
109# Toad
110TOAD_ID_DEFAULTS = [(0x403, 0x6015)]
111for vid, pid in TOAD_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800112 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatinf536f002013-04-11 12:43:49 -0700113
114SERVO_ID_DEFAULTS.extend(TOAD_ID_DEFAULTS)
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700115
116# Reston
117RESTON_ID_DEFAULTS = [(0x18d1, 0x5007)]
118for vid, pid in RESTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800119 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700120
121SERVO_ID_DEFAULTS.extend(RESTON_ID_DEFAULTS)
Vincent Palatin77629ac2014-03-21 09:33:13 -0700122
123# Fruitpie
124FRUITPIE_ID_DEFAULTS = [(0x18d1, 0x5009)]
125for vid, pid in FRUITPIE_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800126 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin77629ac2014-03-21 09:33:13 -0700127
128SERVO_ID_DEFAULTS.extend(FRUITPIE_ID_DEFAULTS)
Todd Brochb21d8042014-05-15 12:54:54 -0700129
Alec Berge7549802014-07-14 11:52:36 -0700130# Plankton
131PLANKTON_ID_DEFAULTS = [(0x18d1, 0x500c)]
132for vid, pid in PLANKTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800133 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Alec Berge7549802014-07-14 11:52:36 -0700134
135SERVO_ID_DEFAULTS.extend(PLANKTON_ID_DEFAULTS)
136
Todd Brochb21d8042014-05-15 12:54:54 -0700137# Allow Board overrides of interfaces as we've started to overload some servo V2
Aseda Aboagyec24a3882016-03-15 12:37:56 -0700138# pinout functionality. To-date just swapping EC SPI and JTAG interfaces for
139# USB PD MCU UART
Todd Brochb21d8042014-05-15 12:54:54 -0700140# TODO(tbroch) See about availability of extra uart on Servo V3/beaglebone
141INTERFACE_BOARDS = collections.defaultdict(
142 lambda: collections.defaultdict(dict))
143# samus re-purposes EC SPI to be USB PD UART
144INTERFACE_BOARDS['samus'][0x18d1][0x5002] = \
145 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
146INTERFACE_BOARDS['samus'][0x18d1][0x5002][5] = 'ftdi_uart'
Rong Chang97d0e0c2015-04-24 09:02:31 +0800147# oak re-purposes EC SPI to be USB PD UART
148INTERFACE_BOARDS['oak'][0x18d1][0x5002] = \
149 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
150INTERFACE_BOARDS['oak'][0x18d1][0x5002][5] = 'ftdi_uart'
Yidi Lineeda3ce2016-03-31 20:05:52 +0800151INTERFACE_BOARDS['elm'][0x18d1][0x5002] = \
152 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
153INTERFACE_BOARDS['elm'][0x18d1][0x5002][5] = 'ftdi_uart'
Kevin K Wong6460d5a2015-06-24 18:05:11 -0700154# strago re-purposes JTAG to be UART
155INTERFACE_BOARDS['strago'][0x18d1][0x5002] = \
156 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
157INTERFACE_BOARDS['strago'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700158
159# Skylake boards re-purpose JTAG to be UART
zhuo-haoe571a0d2016-03-21 14:56:44 +0800160INTERFACE_BOARDS['cave'][0x18d1][0x5002] = \
161 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
162INTERFACE_BOARDS['cave'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700163INTERFACE_BOARDS['chell'][0x18d1][0x5002] = \
164 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
165INTERFACE_BOARDS['chell'][0x18d1][0x5002][0] = 'ftdi_uart'
166INTERFACE_BOARDS['glados'][0x18d1][0x5002] = \
167 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
168INTERFACE_BOARDS['glados'][0x18d1][0x5002][0] = 'ftdi_uart'
Kevin K Wong92a07672015-06-24 22:21:31 -0700169INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002] = \
170 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
171INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700172INTERFACE_BOARDS['lars'][0x18d1][0x5002] = \
173 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
174INTERFACE_BOARDS['lars'][0x18d1][0x5002][0] = 'ftdi_uart'
Aseda Aboagyea035e3c2016-03-15 12:27:43 -0700175INTERFACE_BOARDS['sentry'][0x18d1][0x5002] = \
176 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
177INTERFACE_BOARDS['sentry'][0x18d1][0x5002][0] = 'ftdi_uart'