diff options
author | Stephen Warren <swarren@nvidia.com> | 2015-02-11 13:53:14 -0700 |
---|---|---|
committer | Stephen Warren <swarren@nvidia.com> | 2015-02-11 14:02:31 -0700 |
commit | db2c268898bfc3687f14835ba4923b17a358d318 (patch) | |
tree | 0bdea61757fe5cc9fb7b2862a2d525109f5c3797 /tegra_pmx_soc_parser.py | |
parent | fbe4639a030a4223f448a4965f54c5ff93ec35d2 (diff) | |
download | tegra-pinmux-scripts-db2c268898bfc3687f14835ba4923b17a358d318.tar.gz |
Add support for MIPI Pad Ctrl groups on Tegra124
This aligns the output with what's check into the kernel. There are now
only minor white-space/formatting differences. I'll fix those in the
kernel soon, when I send patched to add Tegra210 SoC support.
Cc: Sean Paul <seanpaul@chromium.org>
Signed-off-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'tegra_pmx_soc_parser.py')
-rw-r--r-- | tegra_pmx_soc_parser.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tegra_pmx_soc_parser.py b/tegra_pmx_soc_parser.py index 06e4b44..e6335dd 100644 --- a/tegra_pmx_soc_parser.py +++ b/tegra_pmx_soc_parser.py @@ -85,6 +85,14 @@ class DriveGroup(ReprDictObj): self.gpios_pins = gpios_pins self.fullname = 'drive_' + self.name +class MipiPadCtrlGroup(ReprDictObj): + def __init__(self, data, gpios_pins): + fields = ('name', 'reg', 'bit', 'f0', 'f1') + for i, field in enumerate(fields): + self.__setattr__(field, data[i]) + self.gpios_pins = gpios_pins + self.fullname = 'mipi_pad_ctrl_' + self.name + class Function(ReprDictObj): def __init__(self, name): self.name = name @@ -126,6 +134,14 @@ class Soc(TopLevelParsedObj): gpios_pins.append(gpios_pins_by_name[name]) self._drive_groups.append(DriveGroup(drive_group, gpios_pins, self.has_drvtype)) + self._mipi_pad_ctrl_groups = [] + for group in data.get('mipi_pad_ctrl_groups', []): + names = data['mipi_pad_ctrl_group_pins'][group[0]] + gpios_pins = [] + for name in names: + gpios_pins.append(gpios_pins_by_name[name]) + self._mipi_pad_ctrl_groups.append(MipiPadCtrlGroup(group, gpios_pins)) + self._generate_derived_data() def _generate_derived_data(self): @@ -143,6 +159,9 @@ class Soc(TopLevelParsedObj): self._drive_groups_by_reg = sorted(self._drive_groups, key=lambda drive_group: drive_group.reg) self._drive_groups_by_alpha = sorted(self._drive_groups, key=lambda drive_group: drive_group.name) + self._mipi_pad_ctrl_groups_by_reg = sorted(self._mipi_pad_ctrl_groups, key=lambda group: group.reg) + self._mipi_pad_ctrl_groups_by_alpha = sorted(self._mipi_pad_ctrl_groups, key=lambda group: group.name) + functions = collections.OrderedDict() for pin in self._gpios + self._pins: if not pin.reg: @@ -151,6 +170,11 @@ class Soc(TopLevelParsedObj): if func not in functions: functions[func] = Function(func) functions[func]._add_pin(pin) + for group in self._mipi_pad_ctrl_groups: + for func in (group.f0, group.f1): + if func not in functions: + functions[func] = Function(func) + functions[func]._add_pin(pin) self._functions = functions.values() self._functions_by_alpha = sorted(self._functions, key=lambda f: f.name) @@ -201,6 +225,15 @@ class Soc(TopLevelParsedObj): def drive_groups_by_alpha(self): return self._drive_groups_by_alpha + def mipi_pad_ctrl_groups_by_conf_order(self): + return self._mipi_pad_ctrl_groups + + def mipi_pad_ctrl_groups_by_reg(self): + return self._mipi_pad_ctrl_groups_by_reg + + def mipi_pad_ctrl_groups_by_alpha(self): + return self._mipi_pad_ctrl_groups_by_alpha + def functions(self): return self._functions |