Lines Matching +full:skew +full:- +full:delay

1 // SPDX-License-Identifier: GPL-2.0-only
5 * Copyright (C) 2011 ST-Ericsson SA
6 * Written on behalf of Linaro for ST-Ericsson
22 #include <linux/pinctrl/pinconf-generic.h>
28 #include "pinctrl-utils.h"
56 PCONFDUMP(PIN_CONFIG_SKEW_DELAY, "skew delay", NULL, true),
57 PCONFDUMP(PIN_CONFIG_SKEW_DELAY_INPUT_PS, "input skew delay", "ps", true),
58 PCONFDUMP(PIN_CONFIG_SKEW_DELAY_OUTPUT_PS, "output skew delay", "ps", true),
75 config = pinconf_to_config_packed(item->param, 0); in pinconf_generic_dump_one()
77 ret = pin_config_group_get(dev_name(pctldev->dev), in pinconf_generic_dump_one()
82 if (ret == -EINVAL || ret == -ENOTSUPP) in pinconf_generic_dump_one()
92 seq_puts(s, item->display); in pinconf_generic_dump_one()
94 if (item->has_arg) { in pinconf_generic_dump_one()
97 if (item->format) in pinconf_generic_dump_one()
98 seq_printf(s, " (%u %s)", val, item->format); in pinconf_generic_dump_one()
102 if (item->values && item->num_values) { in pinconf_generic_dump_one()
103 if (val < item->num_values) in pinconf_generic_dump_one()
104 seq_printf(s, " \"%s\"", item->values[val]); in pinconf_generic_dump_one()
113 * pinconf_generic_dump_pins - Print information about pin or group of pins
126 const struct pinconf_ops *ops = pctldev->desc->confops; in pinconf_generic_dump_pins()
129 if (!ops->is_generic) in pinconf_generic_dump_pins()
135 /* driver-specific parameters */ in pinconf_generic_dump_pins()
136 if (pctldev->desc->num_custom_params && in pinconf_generic_dump_pins()
137 pctldev->desc->custom_conf_items) in pinconf_generic_dump_pins()
139 pctldev->desc->custom_conf_items, in pinconf_generic_dump_pins()
140 pctldev->desc->num_custom_params, in pinconf_generic_dump_pins()
156 if (!pctldev->desc->num_custom_params || in pinconf_generic_dump_config()
157 !pctldev->desc->custom_conf_items) in pinconf_generic_dump_config()
160 for (i = 0; i < pctldev->desc->num_custom_params; i++) { in pinconf_generic_dump_config()
162 pctldev->desc->custom_conf_items[i].param) in pinconf_generic_dump_config()
165 pctldev->desc->custom_conf_items[i].display, in pinconf_generic_dump_config()
174 { "bias-bus-hold", PIN_CONFIG_BIAS_BUS_HOLD, 0 },
175 { "bias-disable", PIN_CONFIG_BIAS_DISABLE, 0 },
176 { "bias-high-impedance", PIN_CONFIG_BIAS_HIGH_IMPEDANCE, 0 },
177 { "bias-pull-up", PIN_CONFIG_BIAS_PULL_UP, 1 },
178 { "bias-pull-pin-default", PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, 1 },
179 { "bias-pull-down", PIN_CONFIG_BIAS_PULL_DOWN, 1 },
180 { "drive-open-drain", PIN_CONFIG_DRIVE_OPEN_DRAIN, 0 },
181 { "drive-open-source", PIN_CONFIG_DRIVE_OPEN_SOURCE, 0 },
182 { "drive-push-pull", PIN_CONFIG_DRIVE_PUSH_PULL, 0 },
183 { "drive-strength", PIN_CONFIG_DRIVE_STRENGTH, 0 },
184 { "drive-strength-microamp", PIN_CONFIG_DRIVE_STRENGTH_UA, 0 },
185 { "input-debounce", PIN_CONFIG_INPUT_DEBOUNCE, 0 },
186 { "input-disable", PIN_CONFIG_INPUT_ENABLE, 0 },
187 { "input-enable", PIN_CONFIG_INPUT_ENABLE, 1 },
188 { "input-schmitt", PIN_CONFIG_INPUT_SCHMITT, 0 },
189 { "input-schmitt-disable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 0 },
190 { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 },
191 { "input-schmitt-microvolts", PIN_CONFIG_INPUT_SCHMITT_UV, 0 },
192 { "low-power-disable", PIN_CONFIG_MODE_LOW_POWER, 0 },
193 { "low-power-enable", PIN_CONFIG_MODE_LOW_POWER, 1 },
194 { "output-disable", PIN_CONFIG_OUTPUT_ENABLE, 0 },
195 { "output-enable", PIN_CONFIG_OUTPUT_ENABLE, 1 },
196 { "output-high", PIN_CONFIG_LEVEL, 1, },
197 { "output-impedance-ohms", PIN_CONFIG_OUTPUT_IMPEDANCE_OHMS, 0 },
198 { "output-low", PIN_CONFIG_LEVEL, 0, },
199 { "power-source", PIN_CONFIG_POWER_SOURCE, 0 },
200 { "sleep-hardware-state", PIN_CONFIG_SLEEP_HARDWARE_STATE, 0 },
201 { "slew-rate", PIN_CONFIG_SLEW_RATE, 0 },
202 { "skew-delay", PIN_CONFIG_SKEW_DELAY, 0 },
203 { "skew-delay-input-ps", PIN_CONFIG_SKEW_DELAY_INPUT_PS, 0 },
204 { "skew-delay-output-ps", PIN_CONFIG_SKEW_DELAY_OUTPUT_PS, 0 },
208 * parse_dt_cfg() - Parse DT pinconf parameters
232 if (par->values && par->num_values) { in parse_dt_cfg()
234 par->property, in parse_dt_cfg()
235 par->values, par->num_values); in parse_dt_cfg()
236 if (ret == -ENOENT) in parse_dt_cfg()
243 ret = of_property_read_u32(np, par->property, &val); in parse_dt_cfg()
247 if (ret == -EINVAL) in parse_dt_cfg()
252 val = par->default_value; in parse_dt_cfg()
254 pr_debug("found %s with value %u\n", par->property, val); in parse_dt_cfg()
255 cfg[*ncfg] = pinconf_to_config_packed(par->param, val); in parse_dt_cfg()
287 return -ENOENT; in pinconf_generic_parse_dt_pinmux()
292 return -EINVAL; in pinconf_generic_parse_dt_pinmux()
295 npins_t = prop->length / sizeof(u32); in pinconf_generic_parse_dt_pinmux()
300 return -ENOMEM; in pinconf_generic_parse_dt_pinmux()
342 return -EINVAL; in pinconf_generic_parse_dt_config()
347 max_cfg += pctldev->desc->num_custom_params; in pinconf_generic_parse_dt_config()
350 return -ENOMEM; in pinconf_generic_parse_dt_config()
355 if (pctldev && pctldev->desc->num_custom_params && in pinconf_generic_parse_dt_config()
356 pctldev->desc->custom_params) { in pinconf_generic_parse_dt_config()
357 ret = parse_dt_cfg(np, pctldev->desc->custom_params, in pinconf_generic_parse_dt_config()
358 pctldev->desc->num_custom_params, cfg, &ncfg); in pinconf_generic_parse_dt_config()
376 ret = -ENOMEM; in pinconf_generic_parse_dt_config()
393 struct device *dev = pctldev->dev; in pinconf_generic_dt_node_to_map_pinmux()
405 return -ENOENT; in pinconf_generic_dt_node_to_map_pinmux()
411 return -EINVAL; in pinconf_generic_dt_node_to_map_pinmux()
435 &reserved_maps, num_maps, np->name, in pinconf_generic_dt_node_to_map_pinmux()
436 pnode->name); in pinconf_generic_dt_node_to_map_pinmux()
442 num_maps, np->name, configs, in pinconf_generic_dt_node_to_map_pinmux()
464 struct device *dev = pctldev->dev; in pinconf_generic_dt_subnode_to_map()
490 if (ret != -EINVAL) in pinconf_generic_dt_subnode_to_map()