summaryrefslogtreecommitdiff
path: root/tegra_pmx_soc_parser.py
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2015-02-11 13:53:14 -0700
committerStephen Warren <swarren@nvidia.com>2015-02-11 14:02:31 -0700
commitdb2c268898bfc3687f14835ba4923b17a358d318 (patch)
tree0bdea61757fe5cc9fb7b2862a2d525109f5c3797 /tegra_pmx_soc_parser.py
parentfbe4639a030a4223f448a4965f54c5ff93ec35d2 (diff)
downloadtegra-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.py33
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