My feeling is that if all use-cases today are using either 1.8V or 3.3V,
I had a discussion with the ASIC on this and as per them
1.8 V nominal is (1.62V, 1.98V)
3.3 V nominal is (2.97V,3.63V)
I am working with them to update the TRM document but we can assume that
this information will be there in TRM.
then may be we should not worry about this and only support either 1.8V
or 3.3V. I would be more in favour of supporting other voltages if there
is a real need.
Yes, but I am saying why not put this information in the main struct andYes, some of IO pads support multi-voltage.+ const struct pinctrl_pin_desc *pins_desc;Is this struct necessary? Seems to be a lot of duplicated information
+ int num_pins_desc;
+};
+
+struct tegra_io_pads_regulator_info {
+ struct device *dev;
+ const struct tegra_io_pads_cfg_info *pads_cfg;
+ struct regulator *regulator;
+ struct notifier_block regulator_nb;
+};
from the other structs. Why not add the regulator and regulator_nb to
the main struct? OK, not all io_pads have a regulator but you are only
saving one pointer.
not bother having yet another struct where half of the information is
duplicated.
Regulator resolution is only reason here to use tolerance.
Ok, then I think it would be much simpler if we just support the+ if ((vdata->old_uV > TEGRA_IO_PAD_1800000UV_UPPER_LIMIT) &&Two voltage level, not range.
+ (vdata->min_uV <= TEGRA_IO_PAD_1800000UV_UPPER_LIMIT))
+ break;
The data-sheet for Tegra210 only lists 1.8V or 3.3V as supported
options. Do we need to support a range? Or does the h/w support a range
of voltages? I am just wondering why we cannot check explicitly for 1.8V
or 3.3V and treat anything else as an error.
voltages we are using today.