blob: d1454a9d92cb5f7094d919d8b2d7adc646872f88 [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 Sanders97bc4462016-01-04 15:37:31 -080011 (0x18d1, 0x5002), (0x18d1, 0x5004), (0x18d1, 0x501a),
12 (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 Sanders97bc4462016-01-04 15:37:31 -080054
55# Servo micro
56SERVO_MICRO_DEFAULTS = [(0x18d1, 0x501a)]
57for vid, pid in SERVO_MICRO_DEFAULTS:
58 INTERFACE_DEFAULTS[vid][pid] = \
59 ['stm32_gpio', # 1: 32x GPIO block
60 {'name': 'stm32_uart', 'interface': 0}, # 2: uart3/legacy
61 {'name': 'stm32_uart', 'interface': 3}, # 3: servo console
62 {'name': 'stm32_i2c', 'interface': 4}, # 4: i2c
63 {'name': 'stm32_uart', 'interface': 5}, # 5: uart2 / dut ap
64 {'name': 'stm32_uart', 'interface': 6}, # 6: uart1 / dut ec
65 {'name': 'ec3po_uart', # 7: servo console
66 'raw_pty': 'raw_servo_console_pty'},
Nick Sanderse623b2f2016-04-01 16:16:34 -070067 'dummy', # 8: dummy
Nick Sanders97bc4462016-01-04 15:37:31 -080068 {'name': 'ec3po_uart', # 9: dut pd console
69 'raw_pty': 'raw_usbpd_uart_pty'},
Nick Sanderse623b2f2016-04-01 16:16:34 -070070 {'name': 'ec3po_uart', #10: dut ec console
71 'raw_pty': 'raw_ec_uart_pty'},
Nick Sanders97bc4462016-01-04 15:37:31 -080072 ]
73
74# Servo v4
75SERVO_V4_DEFAULTS = [(0x18d1, 0x501b)]
76for vid, pid in SERVO_V4_DEFAULTS:
77 INTERFACE_DEFAULTS[vid][pid] = \
78 ['stm32_gpio', # 1: 32x GPIO block
79 {'name': 'stm32_uart', 'interface': 0}, # 2: UART4
80 {'name': 'stm32_uart', 'interface': 3}, # 3: servo console
81 {'name': 'stm32_i2c', 'interface': 4}, # 4: i2c
82 {'name': 'ec3po_uart', # 5: servo console
83 'raw_pty': 'raw_servo_console_pty'},
84 ]
85
Simran Basie750a342013-03-12 13:45:26 -070086# miniservo
87MINISERVO_ID_DEFAULTS = [(0x403, 0x6001), (0x18d1, 0x5000)]
88for vid, pid in MINISERVO_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -080089 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Simran Basie750a342013-03-12 13:45:26 -070090
91SERVO_ID_DEFAULTS.extend(MINISERVO_ID_DEFAULTS)
Vincent Palatinf536f002013-04-11 12:43:49 -070092
93# Toad
94TOAD_ID_DEFAULTS = [(0x403, 0x6015)]
95for vid, pid in TOAD_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -080096 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatinf536f002013-04-11 12:43:49 -070097
98SERVO_ID_DEFAULTS.extend(TOAD_ID_DEFAULTS)
Vincent Palatin32fbecb2013-10-23 13:32:47 -070099
100# Reston
101RESTON_ID_DEFAULTS = [(0x18d1, 0x5007)]
102for vid, pid in RESTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800103 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin32fbecb2013-10-23 13:32:47 -0700104
105SERVO_ID_DEFAULTS.extend(RESTON_ID_DEFAULTS)
Vincent Palatin77629ac2014-03-21 09:33:13 -0700106
107# Fruitpie
108FRUITPIE_ID_DEFAULTS = [(0x18d1, 0x5009)]
109for vid, pid in FRUITPIE_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800110 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Vincent Palatin77629ac2014-03-21 09:33:13 -0700111
112SERVO_ID_DEFAULTS.extend(FRUITPIE_ID_DEFAULTS)
Todd Brochb21d8042014-05-15 12:54:54 -0700113
Alec Berge7549802014-07-14 11:52:36 -0700114# Plankton
115PLANKTON_ID_DEFAULTS = [(0x18d1, 0x500c)]
116for vid, pid in PLANKTON_ID_DEFAULTS:
Aseda Aboagyea4922212015-11-20 15:19:08 -0800117 INTERFACE_DEFAULTS[vid][pid] = ['ftdi_gpiouart', {'name': 'ec3po_uart'}]
Alec Berge7549802014-07-14 11:52:36 -0700118
119SERVO_ID_DEFAULTS.extend(PLANKTON_ID_DEFAULTS)
120
Todd Brochb21d8042014-05-15 12:54:54 -0700121# Allow Board overrides of interfaces as we've started to overload some servo V2
Aseda Aboagyec24a3882016-03-15 12:37:56 -0700122# pinout functionality. To-date just swapping EC SPI and JTAG interfaces for
123# USB PD MCU UART
Todd Brochb21d8042014-05-15 12:54:54 -0700124# TODO(tbroch) See about availability of extra uart on Servo V3/beaglebone
125INTERFACE_BOARDS = collections.defaultdict(
126 lambda: collections.defaultdict(dict))
127# samus re-purposes EC SPI to be USB PD UART
128INTERFACE_BOARDS['samus'][0x18d1][0x5002] = \
129 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
130INTERFACE_BOARDS['samus'][0x18d1][0x5002][5] = 'ftdi_uart'
Rong Chang97d0e0c2015-04-24 09:02:31 +0800131# oak re-purposes EC SPI to be USB PD UART
132INTERFACE_BOARDS['oak'][0x18d1][0x5002] = \
133 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
134INTERFACE_BOARDS['oak'][0x18d1][0x5002][5] = 'ftdi_uart'
Yidi Lineeda3ce2016-03-31 20:05:52 +0800135INTERFACE_BOARDS['elm'][0x18d1][0x5002] = \
136 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
137INTERFACE_BOARDS['elm'][0x18d1][0x5002][5] = 'ftdi_uart'
Kevin K Wong6460d5a2015-06-24 18:05:11 -0700138# strago re-purposes JTAG to be UART
139INTERFACE_BOARDS['strago'][0x18d1][0x5002] = \
140 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
141INTERFACE_BOARDS['strago'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700142
143# Skylake boards re-purpose JTAG to be UART
zhuo-haoe571a0d2016-03-21 14:56:44 +0800144INTERFACE_BOARDS['cave'][0x18d1][0x5002] = \
145 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
146INTERFACE_BOARDS['cave'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700147INTERFACE_BOARDS['chell'][0x18d1][0x5002] = \
148 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
149INTERFACE_BOARDS['chell'][0x18d1][0x5002][0] = 'ftdi_uart'
150INTERFACE_BOARDS['glados'][0x18d1][0x5002] = \
151 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
152INTERFACE_BOARDS['glados'][0x18d1][0x5002][0] = 'ftdi_uart'
Kevin K Wong92a07672015-06-24 22:21:31 -0700153INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002] = \
154 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
155INTERFACE_BOARDS['kunimitsu'][0x18d1][0x5002][0] = 'ftdi_uart'
Duncan Laurie0728aa82015-10-26 13:56:08 -0700156INTERFACE_BOARDS['lars'][0x18d1][0x5002] = \
157 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
158INTERFACE_BOARDS['lars'][0x18d1][0x5002][0] = 'ftdi_uart'
Aseda Aboagyea035e3c2016-03-15 12:27:43 -0700159INTERFACE_BOARDS['sentry'][0x18d1][0x5002] = \
160 list(INTERFACE_DEFAULTS[0x18d1][0x5002])
161INTERFACE_BOARDS['sentry'][0x18d1][0x5002][0] = 'ftdi_uart'