diff options
| -rw-r--r-- | Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | 2 | ||||
| -rw-r--r-- | drivers/firmware/dmi-id.c | 2 | ||||
| -rw-r--r-- | drivers/firmware/dmi_scan.c | 1 | ||||
| -rw-r--r-- | drivers/pinctrl/core.c | 20 | ||||
| -rw-r--r-- | drivers/pinctrl/freescale/pinctrl-mxs.c | 16 | ||||
| -rw-r--r-- | drivers/pinctrl/intel/pinctrl-cherryview.c | 24 | ||||
| -rw-r--r-- | drivers/pinctrl/pinconf-generic.c | 3 | ||||
| -rw-r--r-- | drivers/pinctrl/pinmux.c | 21 | ||||
| -rw-r--r-- | drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | 2 | ||||
| -rw-r--r-- | include/linux/gpio/machine.h | 7 | ||||
| -rw-r--r-- | include/linux/mod_devicetable.h | 1 | ||||
| -rw-r--r-- | include/linux/pinctrl/pinconf-generic.h | 3 |
12 files changed, 50 insertions, 52 deletions
diff --git a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt index 71a3c134af1b..f01d154090da 100644 --- a/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt +++ b/Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt | |||
| @@ -247,7 +247,6 @@ bias-bus-hold - latch weakly | |||
| 247 | bias-pull-up - pull up the pin | 247 | bias-pull-up - pull up the pin |
| 248 | bias-pull-down - pull down the pin | 248 | bias-pull-down - pull down the pin |
| 249 | bias-pull-pin-default - use pin-default pull state | 249 | bias-pull-pin-default - use pin-default pull state |
| 250 | bi-directional - pin supports simultaneous input/output operations | ||
| 251 | drive-push-pull - drive actively high and low | 250 | drive-push-pull - drive actively high and low |
| 252 | drive-open-drain - drive with open drain | 251 | drive-open-drain - drive with open drain |
| 253 | drive-open-source - drive with open source | 252 | drive-open-source - drive with open source |
| @@ -260,7 +259,6 @@ input-debounce - debounce mode with debound time X | |||
| 260 | power-source - select between different power supplies | 259 | power-source - select between different power supplies |
| 261 | low-power-enable - enable low power mode | 260 | low-power-enable - enable low power mode |
| 262 | low-power-disable - disable low power mode | 261 | low-power-disable - disable low power mode |
| 263 | output-enable - enable output on pin regardless of output value | ||
| 264 | output-low - set the pin to output mode with low level | 262 | output-low - set the pin to output mode with low level |
| 265 | output-high - set the pin to output mode with high level | 263 | output-high - set the pin to output mode with high level |
| 266 | slew-rate - set the slew rate | 264 | slew-rate - set the slew rate |
diff --git a/drivers/firmware/dmi-id.c b/drivers/firmware/dmi-id.c index 44c01390d035..dc269cb288c2 100644 --- a/drivers/firmware/dmi-id.c +++ b/drivers/firmware/dmi-id.c | |||
| @@ -47,6 +47,7 @@ DEFINE_DMI_ATTR_WITH_SHOW(product_name, 0444, DMI_PRODUCT_NAME); | |||
| 47 | DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION); | 47 | DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION); |
| 48 | DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL); | 48 | DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL); |
| 49 | DEFINE_DMI_ATTR_WITH_SHOW(product_uuid, 0400, DMI_PRODUCT_UUID); | 49 | DEFINE_DMI_ATTR_WITH_SHOW(product_uuid, 0400, DMI_PRODUCT_UUID); |
| 50 | DEFINE_DMI_ATTR_WITH_SHOW(product_family, 0400, DMI_PRODUCT_FAMILY); | ||
| 50 | DEFINE_DMI_ATTR_WITH_SHOW(board_vendor, 0444, DMI_BOARD_VENDOR); | 51 | DEFINE_DMI_ATTR_WITH_SHOW(board_vendor, 0444, DMI_BOARD_VENDOR); |
| 51 | DEFINE_DMI_ATTR_WITH_SHOW(board_name, 0444, DMI_BOARD_NAME); | 52 | DEFINE_DMI_ATTR_WITH_SHOW(board_name, 0444, DMI_BOARD_NAME); |
| 52 | DEFINE_DMI_ATTR_WITH_SHOW(board_version, 0444, DMI_BOARD_VERSION); | 53 | DEFINE_DMI_ATTR_WITH_SHOW(board_version, 0444, DMI_BOARD_VERSION); |
| @@ -191,6 +192,7 @@ static void __init dmi_id_init_attr_table(void) | |||
| 191 | ADD_DMI_ATTR(product_version, DMI_PRODUCT_VERSION); | 192 | ADD_DMI_ATTR(product_version, DMI_PRODUCT_VERSION); |
| 192 | ADD_DMI_ATTR(product_serial, DMI_PRODUCT_SERIAL); | 193 | ADD_DMI_ATTR(product_serial, DMI_PRODUCT_SERIAL); |
| 193 | ADD_DMI_ATTR(product_uuid, DMI_PRODUCT_UUID); | 194 | ADD_DMI_ATTR(product_uuid, DMI_PRODUCT_UUID); |
| 195 | ADD_DMI_ATTR(product_family, DMI_PRODUCT_FAMILY); | ||
| 194 | ADD_DMI_ATTR(board_vendor, DMI_BOARD_VENDOR); | 196 | ADD_DMI_ATTR(board_vendor, DMI_BOARD_VENDOR); |
| 195 | ADD_DMI_ATTR(board_name, DMI_BOARD_NAME); | 197 | ADD_DMI_ATTR(board_name, DMI_BOARD_NAME); |
| 196 | ADD_DMI_ATTR(board_version, DMI_BOARD_VERSION); | 198 | ADD_DMI_ATTR(board_version, DMI_BOARD_VERSION); |
diff --git a/drivers/firmware/dmi_scan.c b/drivers/firmware/dmi_scan.c index 54be60ead08f..93f7acdaac7a 100644 --- a/drivers/firmware/dmi_scan.c +++ b/drivers/firmware/dmi_scan.c | |||
| @@ -430,6 +430,7 @@ static void __init dmi_decode(const struct dmi_header *dm, void *dummy) | |||
| 430 | dmi_save_ident(dm, DMI_PRODUCT_VERSION, 6); | 430 | dmi_save_ident(dm, DMI_PRODUCT_VERSION, 6); |
| 431 | dmi_save_ident(dm, DMI_PRODUCT_SERIAL, 7); | 431 | dmi_save_ident(dm, DMI_PRODUCT_SERIAL, 7); |
| 432 | dmi_save_uuid(dm, DMI_PRODUCT_UUID, 8); | 432 | dmi_save_uuid(dm, DMI_PRODUCT_UUID, 8); |
| 433 | dmi_save_ident(dm, DMI_PRODUCT_FAMILY, 26); | ||
| 433 | break; | 434 | break; |
| 434 | case 2: /* Base Board Information */ | 435 | case 2: /* Base Board Information */ |
| 435 | dmi_save_ident(dm, DMI_BOARD_VENDOR, 4); | 436 | dmi_save_ident(dm, DMI_BOARD_VENDOR, 4); |
diff --git a/drivers/pinctrl/core.c b/drivers/pinctrl/core.c index 1653cbda6a82..bd459a93b0e7 100644 --- a/drivers/pinctrl/core.c +++ b/drivers/pinctrl/core.c | |||
| @@ -680,30 +680,16 @@ EXPORT_SYMBOL_GPL(pinctrl_generic_remove_group); | |||
| 680 | * pinctrl_generic_free_groups() - removes all pin groups | 680 | * pinctrl_generic_free_groups() - removes all pin groups |
| 681 | * @pctldev: pin controller device | 681 | * @pctldev: pin controller device |
| 682 | * | 682 | * |
| 683 | * Note that the caller must take care of locking. | 683 | * Note that the caller must take care of locking. The pinctrl groups |
| 684 | * are allocated with devm_kzalloc() so no need to free them here. | ||
| 684 | */ | 685 | */ |
| 685 | static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) | 686 | static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) |
| 686 | { | 687 | { |
| 687 | struct radix_tree_iter iter; | 688 | struct radix_tree_iter iter; |
| 688 | struct group_desc *group; | ||
| 689 | unsigned long *indices; | ||
| 690 | void **slot; | 689 | void **slot; |
| 691 | int i = 0; | ||
| 692 | |||
| 693 | indices = devm_kzalloc(pctldev->dev, sizeof(*indices) * | ||
| 694 | pctldev->num_groups, GFP_KERNEL); | ||
| 695 | if (!indices) | ||
| 696 | return; | ||
| 697 | 690 | ||
| 698 | radix_tree_for_each_slot(slot, &pctldev->pin_group_tree, &iter, 0) | 691 | radix_tree_for_each_slot(slot, &pctldev->pin_group_tree, &iter, 0) |
| 699 | indices[i++] = iter.index; | 692 | radix_tree_delete(&pctldev->pin_group_tree, iter.index); |
| 700 | |||
| 701 | for (i = 0; i < pctldev->num_groups; i++) { | ||
| 702 | group = radix_tree_lookup(&pctldev->pin_group_tree, | ||
| 703 | indices[i]); | ||
| 704 | radix_tree_delete(&pctldev->pin_group_tree, indices[i]); | ||
| 705 | devm_kfree(pctldev->dev, group); | ||
| 706 | } | ||
| 707 | 693 | ||
| 708 | pctldev->num_groups = 0; | 694 | pctldev->num_groups = 0; |
| 709 | } | 695 | } |
diff --git a/drivers/pinctrl/freescale/pinctrl-mxs.c b/drivers/pinctrl/freescale/pinctrl-mxs.c index 41b5b07d5a2b..6852010a6d70 100644 --- a/drivers/pinctrl/freescale/pinctrl-mxs.c +++ b/drivers/pinctrl/freescale/pinctrl-mxs.c | |||
| @@ -194,6 +194,16 @@ static int mxs_pinctrl_get_func_groups(struct pinctrl_dev *pctldev, | |||
| 194 | return 0; | 194 | return 0; |
| 195 | } | 195 | } |
| 196 | 196 | ||
| 197 | static void mxs_pinctrl_rmwl(u32 value, u32 mask, u8 shift, void __iomem *reg) | ||
| 198 | { | ||
| 199 | u32 tmp; | ||
| 200 | |||
| 201 | tmp = readl(reg); | ||
| 202 | tmp &= ~(mask << shift); | ||
| 203 | tmp |= value << shift; | ||
| 204 | writel(tmp, reg); | ||
| 205 | } | ||
| 206 | |||
| 197 | static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, | 207 | static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, |
| 198 | unsigned group) | 208 | unsigned group) |
| 199 | { | 209 | { |
| @@ -211,8 +221,7 @@ static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, | |||
| 211 | reg += bank * 0x20 + pin / 16 * 0x10; | 221 | reg += bank * 0x20 + pin / 16 * 0x10; |
| 212 | shift = pin % 16 * 2; | 222 | shift = pin % 16 * 2; |
| 213 | 223 | ||
| 214 | writel(0x3 << shift, reg + CLR); | 224 | mxs_pinctrl_rmwl(g->muxsel[i], 0x3, shift, reg); |
| 215 | writel(g->muxsel[i] << shift, reg + SET); | ||
| 216 | } | 225 | } |
| 217 | 226 | ||
| 218 | return 0; | 227 | return 0; |
| @@ -279,8 +288,7 @@ static int mxs_pinconf_group_set(struct pinctrl_dev *pctldev, | |||
| 279 | /* mA */ | 288 | /* mA */ |
| 280 | if (config & MA_PRESENT) { | 289 | if (config & MA_PRESENT) { |
| 281 | shift = pin % 8 * 4; | 290 | shift = pin % 8 * 4; |
| 282 | writel(0x3 << shift, reg + CLR); | 291 | mxs_pinctrl_rmwl(ma, 0x3, shift, reg); |
| 283 | writel(ma << shift, reg + SET); | ||
| 284 | } | 292 | } |
| 285 | 293 | ||
| 286 | /* vol */ | 294 | /* vol */ |
diff --git a/drivers/pinctrl/intel/pinctrl-cherryview.c b/drivers/pinctrl/intel/pinctrl-cherryview.c index 2debba62fac9..20f1b4493994 100644 --- a/drivers/pinctrl/intel/pinctrl-cherryview.c +++ b/drivers/pinctrl/intel/pinctrl-cherryview.c | |||
| @@ -1539,15 +1539,29 @@ static void chv_gpio_irq_handler(struct irq_desc *desc) | |||
| 1539 | * is not listed below. | 1539 | * is not listed below. |
| 1540 | */ | 1540 | */ |
| 1541 | static const struct dmi_system_id chv_no_valid_mask[] = { | 1541 | static const struct dmi_system_id chv_no_valid_mask[] = { |
| 1542 | /* See https://bugzilla.kernel.org/show_bug.cgi?id=194945 */ | ||
| 1542 | { | 1543 | { |
| 1543 | /* See https://bugzilla.kernel.org/show_bug.cgi?id=194945 */ | 1544 | .ident = "Intel_Strago based Chromebooks (All models)", |
| 1544 | .ident = "Acer Chromebook (CYAN)", | ||
| 1545 | .matches = { | 1545 | .matches = { |
| 1546 | DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), | 1546 | DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), |
| 1547 | DMI_MATCH(DMI_PRODUCT_NAME, "Edgar"), | 1547 | DMI_MATCH(DMI_PRODUCT_FAMILY, "Intel_Strago"), |
| 1548 | DMI_MATCH(DMI_BIOS_DATE, "05/21/2016"), | ||
| 1549 | }, | 1548 | }, |
| 1550 | } | 1549 | }, |
| 1550 | { | ||
| 1551 | .ident = "Acer Chromebook R11 (Cyan)", | ||
| 1552 | .matches = { | ||
| 1553 | DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), | ||
| 1554 | DMI_MATCH(DMI_PRODUCT_NAME, "Cyan"), | ||
| 1555 | }, | ||
| 1556 | }, | ||
| 1557 | { | ||
| 1558 | .ident = "Samsung Chromebook 3 (Celes)", | ||
| 1559 | .matches = { | ||
| 1560 | DMI_MATCH(DMI_SYS_VENDOR, "GOOGLE"), | ||
| 1561 | DMI_MATCH(DMI_PRODUCT_NAME, "Celes"), | ||
| 1562 | }, | ||
| 1563 | }, | ||
| 1564 | {} | ||
| 1551 | }; | 1565 | }; |
| 1552 | 1566 | ||
| 1553 | static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) | 1567 | static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) |
diff --git a/drivers/pinctrl/pinconf-generic.c b/drivers/pinctrl/pinconf-generic.c index 0d6b7f4b82af..720a19fd38d2 100644 --- a/drivers/pinctrl/pinconf-generic.c +++ b/drivers/pinctrl/pinconf-generic.c | |||
| @@ -35,7 +35,6 @@ static const struct pin_config_item conf_items[] = { | |||
| 35 | PCONFDUMP(PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, | 35 | PCONFDUMP(PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, |
| 36 | "input bias pull to pin specific state", NULL, false), | 36 | "input bias pull to pin specific state", NULL, false), |
| 37 | PCONFDUMP(PIN_CONFIG_BIAS_PULL_UP, "input bias pull up", NULL, false), | 37 | PCONFDUMP(PIN_CONFIG_BIAS_PULL_UP, "input bias pull up", NULL, false), |
| 38 | PCONFDUMP(PIN_CONFIG_BIDIRECTIONAL, "bi-directional pin operations", NULL, false), | ||
| 39 | PCONFDUMP(PIN_CONFIG_DRIVE_OPEN_DRAIN, "output drive open drain", NULL, false), | 38 | PCONFDUMP(PIN_CONFIG_DRIVE_OPEN_DRAIN, "output drive open drain", NULL, false), |
| 40 | PCONFDUMP(PIN_CONFIG_DRIVE_OPEN_SOURCE, "output drive open source", NULL, false), | 39 | PCONFDUMP(PIN_CONFIG_DRIVE_OPEN_SOURCE, "output drive open source", NULL, false), |
| 41 | PCONFDUMP(PIN_CONFIG_DRIVE_PUSH_PULL, "output drive push pull", NULL, false), | 40 | PCONFDUMP(PIN_CONFIG_DRIVE_PUSH_PULL, "output drive push pull", NULL, false), |
| @@ -161,7 +160,6 @@ static const struct pinconf_generic_params dt_params[] = { | |||
| 161 | { "bias-pull-up", PIN_CONFIG_BIAS_PULL_UP, 1 }, | 160 | { "bias-pull-up", PIN_CONFIG_BIAS_PULL_UP, 1 }, |
| 162 | { "bias-pull-pin-default", PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, 1 }, | 161 | { "bias-pull-pin-default", PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, 1 }, |
| 163 | { "bias-pull-down", PIN_CONFIG_BIAS_PULL_DOWN, 1 }, | 162 | { "bias-pull-down", PIN_CONFIG_BIAS_PULL_DOWN, 1 }, |
| 164 | { "bi-directional", PIN_CONFIG_BIDIRECTIONAL, 1 }, | ||
| 165 | { "drive-open-drain", PIN_CONFIG_DRIVE_OPEN_DRAIN, 0 }, | 163 | { "drive-open-drain", PIN_CONFIG_DRIVE_OPEN_DRAIN, 0 }, |
| 166 | { "drive-open-source", PIN_CONFIG_DRIVE_OPEN_SOURCE, 0 }, | 164 | { "drive-open-source", PIN_CONFIG_DRIVE_OPEN_SOURCE, 0 }, |
| 167 | { "drive-push-pull", PIN_CONFIG_DRIVE_PUSH_PULL, 0 }, | 165 | { "drive-push-pull", PIN_CONFIG_DRIVE_PUSH_PULL, 0 }, |
| @@ -174,7 +172,6 @@ static const struct pinconf_generic_params dt_params[] = { | |||
| 174 | { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 }, | 172 | { "input-schmitt-enable", PIN_CONFIG_INPUT_SCHMITT_ENABLE, 1 }, |
| 175 | { "low-power-disable", PIN_CONFIG_LOW_POWER_MODE, 0 }, | 173 | { "low-power-disable", PIN_CONFIG_LOW_POWER_MODE, 0 }, |
| 176 | { "low-power-enable", PIN_CONFIG_LOW_POWER_MODE, 1 }, | 174 | { "low-power-enable", PIN_CONFIG_LOW_POWER_MODE, 1 }, |
| 177 | { "output-enable", PIN_CONFIG_OUTPUT, 1, }, | ||
| 178 | { "output-high", PIN_CONFIG_OUTPUT, 1, }, | 175 | { "output-high", PIN_CONFIG_OUTPUT, 1, }, |
| 179 | { "output-low", PIN_CONFIG_OUTPUT, 0, }, | 176 | { "output-low", PIN_CONFIG_OUTPUT, 0, }, |
| 180 | { "power-source", PIN_CONFIG_POWER_SOURCE, 0 }, | 177 | { "power-source", PIN_CONFIG_POWER_SOURCE, 0 }, |
diff --git a/drivers/pinctrl/pinmux.c b/drivers/pinctrl/pinmux.c index 9fd6d9087dc5..16b3ae5e4f44 100644 --- a/drivers/pinctrl/pinmux.c +++ b/drivers/pinctrl/pinmux.c | |||
| @@ -826,30 +826,17 @@ EXPORT_SYMBOL_GPL(pinmux_generic_remove_function); | |||
| 826 | * pinmux_generic_free_functions() - removes all functions | 826 | * pinmux_generic_free_functions() - removes all functions |
| 827 | * @pctldev: pin controller device | 827 | * @pctldev: pin controller device |
| 828 | * | 828 | * |
| 829 | * Note that the caller must take care of locking. | 829 | * Note that the caller must take care of locking. The pinctrl |
| 830 | * functions are allocated with devm_kzalloc() so no need to free | ||
| 831 | * them here. | ||
| 830 | */ | 832 | */ |
| 831 | void pinmux_generic_free_functions(struct pinctrl_dev *pctldev) | 833 | void pinmux_generic_free_functions(struct pinctrl_dev *pctldev) |
| 832 | { | 834 | { |
| 833 | struct radix_tree_iter iter; | 835 | struct radix_tree_iter iter; |
| 834 | struct function_desc *function; | ||
| 835 | unsigned long *indices; | ||
| 836 | void **slot; | 836 | void **slot; |
| 837 | int i = 0; | ||
| 838 | |||
| 839 | indices = devm_kzalloc(pctldev->dev, sizeof(*indices) * | ||
| 840 | pctldev->num_functions, GFP_KERNEL); | ||
| 841 | if (!indices) | ||
| 842 | return; | ||
| 843 | 837 | ||
| 844 | radix_tree_for_each_slot(slot, &pctldev->pin_function_tree, &iter, 0) | 838 | radix_tree_for_each_slot(slot, &pctldev->pin_function_tree, &iter, 0) |
| 845 | indices[i++] = iter.index; | 839 | radix_tree_delete(&pctldev->pin_function_tree, iter.index); |
| 846 | |||
| 847 | for (i = 0; i < pctldev->num_functions; i++) { | ||
| 848 | function = radix_tree_lookup(&pctldev->pin_function_tree, | ||
| 849 | indices[i]); | ||
| 850 | radix_tree_delete(&pctldev->pin_function_tree, indices[i]); | ||
| 851 | devm_kfree(pctldev->dev, function); | ||
| 852 | } | ||
| 853 | 840 | ||
| 854 | pctldev->num_functions = 0; | 841 | pctldev->num_functions = 0; |
| 855 | } | 842 | } |
diff --git a/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c b/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c index 9aec1d2232dd..6624499eae72 100644 --- a/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c +++ b/drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c | |||
| @@ -394,7 +394,7 @@ static const struct sunxi_desc_pin sun8i_a83t_pins[] = { | |||
| 394 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 18), | 394 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 18), |
| 395 | SUNXI_FUNCTION(0x0, "gpio_in"), | 395 | SUNXI_FUNCTION(0x0, "gpio_in"), |
| 396 | SUNXI_FUNCTION(0x1, "gpio_out"), | 396 | SUNXI_FUNCTION(0x1, "gpio_out"), |
| 397 | SUNXI_FUNCTION(0x3, "owa")), /* DOUT */ | 397 | SUNXI_FUNCTION(0x3, "spdif")), /* DOUT */ |
| 398 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 19), | 398 | SUNXI_PIN(SUNXI_PINCTRL_PIN(E, 19), |
| 399 | SUNXI_FUNCTION(0x0, "gpio_in"), | 399 | SUNXI_FUNCTION(0x0, "gpio_in"), |
| 400 | SUNXI_FUNCTION(0x1, "gpio_out")), | 400 | SUNXI_FUNCTION(0x1, "gpio_out")), |
diff --git a/include/linux/gpio/machine.h b/include/linux/gpio/machine.h index c0d712d22b07..f738d50cc17d 100644 --- a/include/linux/gpio/machine.h +++ b/include/linux/gpio/machine.h | |||
| @@ -56,7 +56,14 @@ struct gpiod_lookup_table { | |||
| 56 | .flags = _flags, \ | 56 | .flags = _flags, \ |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | #ifdef CONFIG_GPIOLIB | ||
| 59 | void gpiod_add_lookup_table(struct gpiod_lookup_table *table); | 60 | void gpiod_add_lookup_table(struct gpiod_lookup_table *table); |
| 60 | void gpiod_remove_lookup_table(struct gpiod_lookup_table *table); | 61 | void gpiod_remove_lookup_table(struct gpiod_lookup_table *table); |
| 62 | #else | ||
| 63 | static inline | ||
| 64 | void gpiod_add_lookup_table(struct gpiod_lookup_table *table) {} | ||
| 65 | static inline | ||
| 66 | void gpiod_remove_lookup_table(struct gpiod_lookup_table *table) {} | ||
| 67 | #endif | ||
| 61 | 68 | ||
| 62 | #endif /* __LINUX_GPIO_MACHINE_H */ | 69 | #endif /* __LINUX_GPIO_MACHINE_H */ |
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h index 566fda587fcf..3f74ef2281e8 100644 --- a/include/linux/mod_devicetable.h +++ b/include/linux/mod_devicetable.h | |||
| @@ -467,6 +467,7 @@ enum dmi_field { | |||
| 467 | DMI_PRODUCT_VERSION, | 467 | DMI_PRODUCT_VERSION, |
| 468 | DMI_PRODUCT_SERIAL, | 468 | DMI_PRODUCT_SERIAL, |
| 469 | DMI_PRODUCT_UUID, | 469 | DMI_PRODUCT_UUID, |
| 470 | DMI_PRODUCT_FAMILY, | ||
| 470 | DMI_BOARD_VENDOR, | 471 | DMI_BOARD_VENDOR, |
| 471 | DMI_BOARD_NAME, | 472 | DMI_BOARD_NAME, |
| 472 | DMI_BOARD_VERSION, | 473 | DMI_BOARD_VERSION, |
diff --git a/include/linux/pinctrl/pinconf-generic.h b/include/linux/pinctrl/pinconf-generic.h index 279e3c5326e3..7620eb127cff 100644 --- a/include/linux/pinctrl/pinconf-generic.h +++ b/include/linux/pinctrl/pinconf-generic.h | |||
| @@ -42,8 +42,6 @@ | |||
| 42 | * @PIN_CONFIG_BIAS_PULL_UP: the pin will be pulled up (usually with high | 42 | * @PIN_CONFIG_BIAS_PULL_UP: the pin will be pulled up (usually with high |
| 43 | * impedance to VDD). If the argument is != 0 pull-up is enabled, | 43 | * impedance to VDD). If the argument is != 0 pull-up is enabled, |
| 44 | * if it is 0, pull-up is total, i.e. the pin is connected to VDD. | 44 | * if it is 0, pull-up is total, i.e. the pin is connected to VDD. |
| 45 | * @PIN_CONFIG_BIDIRECTIONAL: the pin will be configured to allow simultaneous | ||
| 46 | * input and output operations. | ||
| 47 | * @PIN_CONFIG_DRIVE_OPEN_DRAIN: the pin will be driven with open drain (open | 45 | * @PIN_CONFIG_DRIVE_OPEN_DRAIN: the pin will be driven with open drain (open |
| 48 | * collector) which means it is usually wired with other output ports | 46 | * collector) which means it is usually wired with other output ports |
| 49 | * which are then pulled up with an external resistor. Setting this | 47 | * which are then pulled up with an external resistor. Setting this |
| @@ -98,7 +96,6 @@ enum pin_config_param { | |||
| 98 | PIN_CONFIG_BIAS_PULL_DOWN, | 96 | PIN_CONFIG_BIAS_PULL_DOWN, |
| 99 | PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, | 97 | PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, |
| 100 | PIN_CONFIG_BIAS_PULL_UP, | 98 | PIN_CONFIG_BIAS_PULL_UP, |
| 101 | PIN_CONFIG_BIDIRECTIONAL, | ||
| 102 | PIN_CONFIG_DRIVE_OPEN_DRAIN, | 99 | PIN_CONFIG_DRIVE_OPEN_DRAIN, |
| 103 | PIN_CONFIG_DRIVE_OPEN_SOURCE, | 100 | PIN_CONFIG_DRIVE_OPEN_SOURCE, |
| 104 | PIN_CONFIG_DRIVE_PUSH_PULL, | 101 | PIN_CONFIG_DRIVE_PUSH_PULL, |
