aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/devicetree/bindings/pinctrl/pinctrl-bindings.txt2
-rw-r--r--drivers/firmware/dmi-id.c2
-rw-r--r--drivers/firmware/dmi_scan.c1
-rw-r--r--drivers/pinctrl/core.c20
-rw-r--r--drivers/pinctrl/freescale/pinctrl-mxs.c16
-rw-r--r--drivers/pinctrl/intel/pinctrl-cherryview.c24
-rw-r--r--drivers/pinctrl/pinconf-generic.c3
-rw-r--r--drivers/pinctrl/pinmux.c21
-rw-r--r--drivers/pinctrl/sunxi/pinctrl-sun8i-a83t.c2
-rw-r--r--include/linux/gpio/machine.h7
-rw-r--r--include/linux/mod_devicetable.h1
-rw-r--r--include/linux/pinctrl/pinconf-generic.h3
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
247bias-pull-up - pull up the pin 247bias-pull-up - pull up the pin
248bias-pull-down - pull down the pin 248bias-pull-down - pull down the pin
249bias-pull-pin-default - use pin-default pull state 249bias-pull-pin-default - use pin-default pull state
250bi-directional - pin supports simultaneous input/output operations
251drive-push-pull - drive actively high and low 250drive-push-pull - drive actively high and low
252drive-open-drain - drive with open drain 251drive-open-drain - drive with open drain
253drive-open-source - drive with open source 252drive-open-source - drive with open source
@@ -260,7 +259,6 @@ input-debounce - debounce mode with debound time X
260power-source - select between different power supplies 259power-source - select between different power supplies
261low-power-enable - enable low power mode 260low-power-enable - enable low power mode
262low-power-disable - disable low power mode 261low-power-disable - disable low power mode
263output-enable - enable output on pin regardless of output value
264output-low - set the pin to output mode with low level 262output-low - set the pin to output mode with low level
265output-high - set the pin to output mode with high level 263output-high - set the pin to output mode with high level
266slew-rate - set the slew rate 264slew-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);
47DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION); 47DEFINE_DMI_ATTR_WITH_SHOW(product_version, 0444, DMI_PRODUCT_VERSION);
48DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL); 48DEFINE_DMI_ATTR_WITH_SHOW(product_serial, 0400, DMI_PRODUCT_SERIAL);
49DEFINE_DMI_ATTR_WITH_SHOW(product_uuid, 0400, DMI_PRODUCT_UUID); 49DEFINE_DMI_ATTR_WITH_SHOW(product_uuid, 0400, DMI_PRODUCT_UUID);
50DEFINE_DMI_ATTR_WITH_SHOW(product_family, 0400, DMI_PRODUCT_FAMILY);
50DEFINE_DMI_ATTR_WITH_SHOW(board_vendor, 0444, DMI_BOARD_VENDOR); 51DEFINE_DMI_ATTR_WITH_SHOW(board_vendor, 0444, DMI_BOARD_VENDOR);
51DEFINE_DMI_ATTR_WITH_SHOW(board_name, 0444, DMI_BOARD_NAME); 52DEFINE_DMI_ATTR_WITH_SHOW(board_name, 0444, DMI_BOARD_NAME);
52DEFINE_DMI_ATTR_WITH_SHOW(board_version, 0444, DMI_BOARD_VERSION); 53DEFINE_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 */
685static void pinctrl_generic_free_groups(struct pinctrl_dev *pctldev) 686static 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
197static 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
197static int mxs_pinctrl_set_mux(struct pinctrl_dev *pctldev, unsigned selector, 207static 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 */
1541static const struct dmi_system_id chv_no_valid_mask[] = { 1541static 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
1553static int chv_gpio_probe(struct chv_pinctrl *pctrl, int irq) 1567static 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 */
831void pinmux_generic_free_functions(struct pinctrl_dev *pctldev) 833void 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
59void gpiod_add_lookup_table(struct gpiod_lookup_table *table); 60void gpiod_add_lookup_table(struct gpiod_lookup_table *table);
60void gpiod_remove_lookup_table(struct gpiod_lookup_table *table); 61void gpiod_remove_lookup_table(struct gpiod_lookup_table *table);
62#else
63static inline
64void gpiod_add_lookup_table(struct gpiod_lookup_table *table) {}
65static inline
66void 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,