These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / pinctrl / pinctrl-tegra-xusb.c
index 753d747..84a43e6 100644 (file)
@@ -59,11 +59,6 @@ struct tegra_xusb_padctl_function {
        unsigned int num_groups;
 };
 
-struct tegra_xusb_padctl_group {
-       const unsigned int *funcs;
-       unsigned int num_funcs;
-};
-
 struct tegra_xusb_padctl_soc {
        const struct pinctrl_pin_desc *pins;
        unsigned int num_pins;
@@ -130,6 +125,21 @@ static const char *tegra_xusb_padctl_get_group_name(struct pinctrl_dev *pinctrl,
        return padctl->soc->pins[group].name;
 }
 
+static int tegra_xusb_padctl_get_group_pins(struct pinctrl_dev *pinctrl,
+                                           unsigned group,
+                                           const unsigned **pins,
+                                           unsigned *num_pins)
+{
+       /*
+        * For the tegra-xusb pad controller groups are synonomous
+        * with lanes/pins and there is always one lane/pin per group.
+        */
+       *pins = &pinctrl->desc->pins[group].number;
+       *num_pins = 1;
+
+       return 0;
+}
+
 enum tegra_xusb_padctl_param {
        TEGRA_XUSB_PADCTL_IDDQ,
 };
@@ -253,6 +263,7 @@ static int tegra_xusb_padctl_dt_node_to_map(struct pinctrl_dev *pinctrl,
 static const struct pinctrl_ops tegra_xusb_padctl_pinctrl_ops = {
        .get_groups_count = tegra_xusb_padctl_get_groups_count,
        .get_group_name = tegra_xusb_padctl_get_group_name,
+       .get_group_pins = tegra_xusb_padctl_get_group_pins,
        .dt_node_to_map = tegra_xusb_padctl_dt_node_to_map,
        .dt_free_map = pinctrl_utils_dt_free_map,
 };
@@ -749,24 +760,15 @@ static const char * const tegra124_pcie_groups[] = {
        "pcie-2",
        "pcie-3",
        "pcie-4",
-       "sata-0",
 };
 
 static const char * const tegra124_usb3_groups[] = {
        "pcie-0",
        "pcie-1",
-       "pcie-2",
-       "pcie-3",
-       "pcie-4",
        "sata-0",
 };
 
 static const char * const tegra124_sata_groups[] = {
-       "pcie-0",
-       "pcie-1",
-       "pcie-2",
-       "pcie-3",
-       "pcie-4",
        "sata-0",
 };
 
@@ -903,15 +905,17 @@ static int tegra_xusb_padctl_probe(struct platform_device *pdev)
 
        memset(&padctl->desc, 0, sizeof(padctl->desc));
        padctl->desc.name = dev_name(padctl->dev);
+       padctl->desc.pins = tegra124_pins;
+       padctl->desc.npins = ARRAY_SIZE(tegra124_pins);
        padctl->desc.pctlops = &tegra_xusb_padctl_pinctrl_ops;
        padctl->desc.pmxops = &tegra_xusb_padctl_pinmux_ops;
        padctl->desc.confops = &tegra_xusb_padctl_pinconf_ops;
        padctl->desc.owner = THIS_MODULE;
 
        padctl->pinctrl = pinctrl_register(&padctl->desc, &pdev->dev, padctl);
-       if (!padctl->pinctrl) {
+       if (IS_ERR(padctl->pinctrl)) {
                dev_err(&pdev->dev, "failed to register pincontrol\n");
-               err = -ENODEV;
+               err = PTR_ERR(padctl->pinctrl);
                goto reset;
        }