|
@@ -225,13 +225,14 @@ static void pinctrl_free_pindescs(struct pinctrl_dev *pctldev,
|
|
|
}
|
|
|
|
|
|
static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
|
|
|
- unsigned number, const char *name)
|
|
|
+ const struct pinctrl_pin_desc *pin)
|
|
|
{
|
|
|
struct pin_desc *pindesc;
|
|
|
|
|
|
- pindesc = pin_desc_get(pctldev, number);
|
|
|
+ pindesc = pin_desc_get(pctldev, pin->number);
|
|
|
if (pindesc != NULL) {
|
|
|
- dev_err(pctldev->dev, "pin %d already registered\n", number);
|
|
|
+ dev_err(pctldev->dev, "pin %d already registered\n",
|
|
|
+ pin->number);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
@@ -245,10 +246,10 @@ static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
|
|
|
pindesc->pctldev = pctldev;
|
|
|
|
|
|
/* Copy basic pin info */
|
|
|
- if (name) {
|
|
|
- pindesc->name = name;
|
|
|
+ if (pin->name) {
|
|
|
+ pindesc->name = pin->name;
|
|
|
} else {
|
|
|
- pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", number);
|
|
|
+ pindesc->name = kasprintf(GFP_KERNEL, "PIN%u", pin->number);
|
|
|
if (pindesc->name == NULL) {
|
|
|
kfree(pindesc);
|
|
|
return -ENOMEM;
|
|
@@ -256,9 +257,11 @@ static int pinctrl_register_one_pin(struct pinctrl_dev *pctldev,
|
|
|
pindesc->dynamic_name = true;
|
|
|
}
|
|
|
|
|
|
- radix_tree_insert(&pctldev->pin_desc_tree, number, pindesc);
|
|
|
+ pindesc->drv_data = pin->drv_data;
|
|
|
+
|
|
|
+ radix_tree_insert(&pctldev->pin_desc_tree, pin->number, pindesc);
|
|
|
pr_debug("registered pin %d (%s) on %s\n",
|
|
|
- number, pindesc->name, pctldev->desc->name);
|
|
|
+ pin->number, pindesc->name, pctldev->desc->name);
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -270,8 +273,7 @@ static int pinctrl_register_pins(struct pinctrl_dev *pctldev,
|
|
|
int ret = 0;
|
|
|
|
|
|
for (i = 0; i < num_descs; i++) {
|
|
|
- ret = pinctrl_register_one_pin(pctldev,
|
|
|
- pins[i].number, pins[i].name);
|
|
|
+ ret = pinctrl_register_one_pin(pctldev, &pins[i]);
|
|
|
if (ret)
|
|
|
return ret;
|
|
|
}
|