The last patch in this series makes the flags parameter for the various
gpiod_get* functions mandatory and so allows to remove an ugly cpp hack introduced in commit39b2bbe3d7(gpio: add flags argument to gpiod_get*() functions) for v3.17-rc1. The other nine commits fix the last remaining users of these functions that don't pass flags yet. (Only etraxfs-uart wasn't fixed; this driver's use of the gpiod functions needs fixing anyhow.) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABCgAGBQJVmj+OAAoJEMH8FHityuwJHGcH/A5bSLcdaFCMcrYceYD/odzR X/mer/CcW/uWG0sUha2pZjT172szSrm0/Bk+SaY5Ub0c6ssCpKRGhtqZNVWWz44V duRQGkYEFODHSed1XnKQyKwr6nLyhjmj8RuP5GokjcsBZyl4onj+NHgmpH5aQBYC 4NyFpIXcSS4jCwj4nsZu4Y2xLAgu/t5oVzqDheqTyZ9imgaR8hbyminKhN+wFfrI FKukShQ5AQPVs7pGEqeY0wgJp+keOIYLukLwvgZw+S7MxixXaPiSK1Ez9DPY9CFo f+NkDV6GIe4OAOGFsL9dCxR0sO6mF7C5PpYuDUBtISi3JHNAvW+Ri7FKPeSDikA= =ixJj -----END PGP SIGNATURE----- Merge tag 'gpiod-flags-for-4.3' of git://git.pengutronix.de/git/ukl/linux into devel The last patch in this series makes the flags parameter for the various gpiod_get* functions mandatory and so allows to remove an ugly cpp hack introduced in commit39b2bbe3d7(gpio: add flags argument to gpiod_get*() functions) for v3.17-rc1. The other nine commits fix the last remaining users of these functions that don't pass flags yet. (Only etraxfs-uart wasn't fixed; this driver's use of the gpiod functions needs fixing anyhow.)
This commit is contained in:
		
						commit
						2563606ce4
					
				| @ -59,13 +59,13 @@ static int devm_gpiod_match_array(struct device *dev, void *res, void *data) | ||||
|  * automatically disposed on driver detach. See gpiod_get() for detailed | ||||
|  * information about behavior and return values. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __devm_gpiod_get(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get(struct device *dev, | ||||
| 					      const char *con_id, | ||||
| 					      enum gpiod_flags flags) | ||||
| { | ||||
| 	return devm_gpiod_get_index(dev, con_id, 0, flags); | ||||
| } | ||||
| EXPORT_SYMBOL(__devm_gpiod_get); | ||||
| EXPORT_SYMBOL(devm_gpiod_get); | ||||
| 
 | ||||
| /**
 | ||||
|  * devm_gpiod_get_optional - Resource-managed gpiod_get_optional() | ||||
| @ -77,13 +77,13 @@ EXPORT_SYMBOL(__devm_gpiod_get); | ||||
|  * are automatically disposed on driver detach. See gpiod_get_optional() for | ||||
|  * detailed information about behavior and return values. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __devm_gpiod_get_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get_optional(struct device *dev, | ||||
| 						       const char *con_id, | ||||
| 						       enum gpiod_flags flags) | ||||
| { | ||||
| 	return devm_gpiod_get_index_optional(dev, con_id, 0, flags); | ||||
| } | ||||
| EXPORT_SYMBOL(__devm_gpiod_get_optional); | ||||
| EXPORT_SYMBOL(devm_gpiod_get_optional); | ||||
| 
 | ||||
| /**
 | ||||
|  * devm_gpiod_get_index - Resource-managed gpiod_get_index() | ||||
| @ -96,7 +96,7 @@ EXPORT_SYMBOL(__devm_gpiod_get_optional); | ||||
|  * automatically disposed on driver detach. See gpiod_get_index() for detailed | ||||
|  * information about behavior and return values. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __devm_gpiod_get_index(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev, | ||||
| 						    const char *con_id, | ||||
| 						    unsigned int idx, | ||||
| 						    enum gpiod_flags flags) | ||||
| @ -120,7 +120,7 @@ struct gpio_desc *__must_check __devm_gpiod_get_index(struct device *dev, | ||||
| 
 | ||||
| 	return desc; | ||||
| } | ||||
| EXPORT_SYMBOL(__devm_gpiod_get_index); | ||||
| EXPORT_SYMBOL(devm_gpiod_get_index); | ||||
| 
 | ||||
| /**
 | ||||
|  * devm_get_gpiod_from_child - get a GPIO descriptor from a device's child node | ||||
| @ -182,10 +182,10 @@ EXPORT_SYMBOL(devm_get_gpiod_from_child); | ||||
|  * gpiod_get_index_optional() for detailed information about behavior and | ||||
|  * return values. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __devm_gpiod_get_index_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get_index_optional(struct device *dev, | ||||
| 							     const char *con_id, | ||||
| 							     unsigned int index, | ||||
| 							 enum gpiod_flags flags) | ||||
| 							     enum gpiod_flags flags) | ||||
| { | ||||
| 	struct gpio_desc *desc; | ||||
| 
 | ||||
| @ -197,7 +197,7 @@ struct gpio_desc *__must_check __devm_gpiod_get_index_optional(struct device *de | ||||
| 
 | ||||
| 	return desc; | ||||
| } | ||||
| EXPORT_SYMBOL(__devm_gpiod_get_index_optional); | ||||
| EXPORT_SYMBOL(devm_gpiod_get_index_optional); | ||||
| 
 | ||||
| /**
 | ||||
|  * devm_gpiod_get_array - Resource-managed gpiod_get_array() | ||||
|  | ||||
| @ -1902,12 +1902,12 @@ EXPORT_SYMBOL_GPL(gpiod_count); | ||||
|  * dev, -ENOENT if no GPIO has been assigned to the requested function, or | ||||
|  * another IS_ERR() code if an error occurred while trying to acquire the GPIO. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __gpiod_get(struct device *dev, const char *con_id, | ||||
| struct gpio_desc *__must_check gpiod_get(struct device *dev, const char *con_id, | ||||
| 					 enum gpiod_flags flags) | ||||
| { | ||||
| 	return gpiod_get_index(dev, con_id, 0, flags); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(__gpiod_get); | ||||
| EXPORT_SYMBOL_GPL(gpiod_get); | ||||
| 
 | ||||
| /**
 | ||||
|  * gpiod_get_optional - obtain an optional GPIO for a given GPIO function | ||||
| @ -1919,13 +1919,13 @@ EXPORT_SYMBOL_GPL(__gpiod_get); | ||||
|  * the requested function it will return NULL. This is convenient for drivers | ||||
|  * that need to handle optional GPIOs. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __gpiod_get_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get_optional(struct device *dev, | ||||
| 						  const char *con_id, | ||||
| 						  enum gpiod_flags flags) | ||||
| { | ||||
| 	return gpiod_get_index_optional(dev, con_id, 0, flags); | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(__gpiod_get_optional); | ||||
| EXPORT_SYMBOL_GPL(gpiod_get_optional); | ||||
| 
 | ||||
| 
 | ||||
| /**
 | ||||
| @ -1982,7 +1982,7 @@ static int gpiod_configure_flags(struct gpio_desc *desc, const char *con_id, | ||||
|  * requested function and/or index, or another IS_ERR() code if an error | ||||
|  * occurred while trying to acquire the GPIO. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __gpiod_get_index(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get_index(struct device *dev, | ||||
| 					       const char *con_id, | ||||
| 					       unsigned int idx, | ||||
| 					       enum gpiod_flags flags) | ||||
| @ -2031,7 +2031,7 @@ struct gpio_desc *__must_check __gpiod_get_index(struct device *dev, | ||||
| 
 | ||||
| 	return desc; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(__gpiod_get_index); | ||||
| EXPORT_SYMBOL_GPL(gpiod_get_index); | ||||
| 
 | ||||
| /**
 | ||||
|  * fwnode_get_named_gpiod - obtain a GPIO from firmware node | ||||
| @ -2100,7 +2100,7 @@ EXPORT_SYMBOL_GPL(fwnode_get_named_gpiod); | ||||
|  * specified index was assigned to the requested function it will return NULL. | ||||
|  * This is convenient for drivers that need to handle optional GPIOs. | ||||
|  */ | ||||
| struct gpio_desc *__must_check __gpiod_get_index_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev, | ||||
| 							const char *con_id, | ||||
| 							unsigned int index, | ||||
| 							enum gpiod_flags flags) | ||||
| @ -2115,7 +2115,7 @@ struct gpio_desc *__must_check __gpiod_get_index_optional(struct device *dev, | ||||
| 
 | ||||
| 	return desc; | ||||
| } | ||||
| EXPORT_SYMBOL_GPL(__gpiod_get_index_optional); | ||||
| EXPORT_SYMBOL_GPL(gpiod_get_index_optional); | ||||
| 
 | ||||
| /**
 | ||||
|  * gpiod_hog - Hog the specified GPIO desc given the provided flags | ||||
|  | ||||
| @ -373,7 +373,7 @@ static int edp_gpio_config(struct edp_ctrl *ctrl) | ||||
| 	struct device *dev = &ctrl->pdev->dev; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	ctrl->panel_hpd_gpio = devm_gpiod_get(dev, "panel-hpd"); | ||||
| 	ctrl->panel_hpd_gpio = devm_gpiod_get(dev, "panel-hpd", GPIOD_IN); | ||||
| 	if (IS_ERR(ctrl->panel_hpd_gpio)) { | ||||
| 		ret = PTR_ERR(ctrl->panel_hpd_gpio); | ||||
| 		ctrl->panel_hpd_gpio = NULL; | ||||
| @ -381,13 +381,7 @@ static int edp_gpio_config(struct edp_ctrl *ctrl) | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	ret = gpiod_direction_input(ctrl->panel_hpd_gpio); | ||||
| 	if (ret) { | ||||
| 		pr_err("%s: Set direction for hpd failed, %d\n", __func__, ret); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	ctrl->panel_en_gpio = devm_gpiod_get(dev, "panel-en"); | ||||
| 	ctrl->panel_en_gpio = devm_gpiod_get(dev, "panel-en", GPIOD_OUT_LOW); | ||||
| 	if (IS_ERR(ctrl->panel_en_gpio)) { | ||||
| 		ret = PTR_ERR(ctrl->panel_en_gpio); | ||||
| 		ctrl->panel_en_gpio = NULL; | ||||
| @ -395,13 +389,6 @@ static int edp_gpio_config(struct edp_ctrl *ctrl) | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	ret = gpiod_direction_output(ctrl->panel_en_gpio, 0); | ||||
| 	if (ret) { | ||||
| 		pr_err("%s: Set direction for panel_en failed, %d\n", | ||||
| 				__func__, ret); | ||||
| 		return ret; | ||||
| 	} | ||||
| 
 | ||||
| 	DBG("gpio on"); | ||||
| 
 | ||||
| 	return 0; | ||||
|  | ||||
| @ -375,25 +375,17 @@ static int panel_probe(struct platform_device *pdev) | ||||
| 		dev_info(&pdev->dev, "found backlight\n"); | ||||
| 	} | ||||
| 
 | ||||
| 	panel_mod->enable_gpio = devm_gpiod_get(&pdev->dev, "enable"); | ||||
| 	panel_mod->enable_gpio = devm_gpiod_get_optional(&pdev->dev, "enable", | ||||
| 							 GPIOD_OUT_LOW); | ||||
| 	if (IS_ERR(panel_mod->enable_gpio)) { | ||||
| 		ret = PTR_ERR(panel_mod->enable_gpio); | ||||
| 		if (ret != -ENOENT) { | ||||
| 			dev_err(&pdev->dev, "failed to request enable GPIO\n"); | ||||
| 			goto fail_backlight; | ||||
| 		} | ||||
| 
 | ||||
| 		/* Optional GPIO is not here, continue silently. */ | ||||
| 		panel_mod->enable_gpio = NULL; | ||||
| 	} else { | ||||
| 		ret = gpiod_direction_output(panel_mod->enable_gpio, 0); | ||||
| 		if (ret < 0) { | ||||
| 			dev_err(&pdev->dev, "failed to setup GPIO\n"); | ||||
| 			goto fail_backlight; | ||||
| 		} | ||||
| 		dev_info(&pdev->dev, "found enable GPIO\n"); | ||||
| 		dev_err(&pdev->dev, "failed to request enable GPIO\n"); | ||||
| 		goto fail_backlight; | ||||
| 	} | ||||
| 
 | ||||
| 	if (panel_mod->enable_gpio) | ||||
| 		dev_info(&pdev->dev, "found enable GPIO\n"); | ||||
| 
 | ||||
| 	mod = &panel_mod->base; | ||||
| 	pdev->dev.platform_data = mod; | ||||
| 
 | ||||
|  | ||||
| @ -488,16 +488,12 @@ static int stk3310_gpio_probe(struct i2c_client *client) | ||||
| 	dev = &client->dev; | ||||
| 
 | ||||
| 	/* gpio interrupt pin */ | ||||
| 	gpio = devm_gpiod_get_index(dev, STK3310_GPIO, 0); | ||||
| 	gpio = devm_gpiod_get_index(dev, STK3310_GPIO, 0, GPIOD_IN); | ||||
| 	if (IS_ERR(gpio)) { | ||||
| 		dev_err(dev, "acpi gpio get index failed\n"); | ||||
| 		return PTR_ERR(gpio); | ||||
| 	} | ||||
| 
 | ||||
| 	ret = gpiod_direction_input(gpio); | ||||
| 	if (ret) | ||||
| 		return ret; | ||||
| 
 | ||||
| 	ret = gpiod_to_irq(gpio); | ||||
| 	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret); | ||||
| 
 | ||||
|  | ||||
| @ -839,16 +839,12 @@ static int bmc150_magn_gpio_probe(struct i2c_client *client) | ||||
| 	dev = &client->dev; | ||||
| 
 | ||||
| 	/* data ready GPIO interrupt pin */ | ||||
| 	gpio = devm_gpiod_get_index(dev, BMC150_MAGN_GPIO_INT, 0); | ||||
| 	gpio = devm_gpiod_get_index(dev, BMC150_MAGN_GPIO_INT, 0, GPIOD_IN); | ||||
| 	if (IS_ERR(gpio)) { | ||||
| 		dev_err(dev, "ACPI GPIO get index failed\n"); | ||||
| 		return PTR_ERR(gpio); | ||||
| 	} | ||||
| 
 | ||||
| 	ret = gpiod_direction_input(gpio); | ||||
| 	if (ret) | ||||
| 		return ret; | ||||
| 
 | ||||
| 	ret = gpiod_to_irq(gpio); | ||||
| 
 | ||||
| 	dev_dbg(dev, "GPIO resource, no:%d irq:%d\n", desc_to_gpio(gpio), ret); | ||||
|  | ||||
| @ -465,7 +465,7 @@ static int adp1653_of_init(struct i2c_client *client, | ||||
| 
 | ||||
| 	of_node_put(child); | ||||
| 
 | ||||
| 	pd->enable_gpio = devm_gpiod_get(&client->dev, "enable"); | ||||
| 	pd->enable_gpio = devm_gpiod_get(&client->dev, "enable", GPIOD_OUT_LOW); | ||||
| 	if (!pd->enable_gpio) { | ||||
| 		dev_err(&client->dev, "Error getting GPIO\n"); | ||||
| 		return -EINVAL; | ||||
|  | ||||
| @ -318,19 +318,15 @@ static int nxp_nci_i2c_acpi_config(struct nxp_nci_i2c_phy *phy) | ||||
| 	struct i2c_client *client = phy->i2c_dev; | ||||
| 	struct gpio_desc *gpiod_en, *gpiod_fw, *gpiod_irq; | ||||
| 
 | ||||
| 	gpiod_en = devm_gpiod_get_index(&client->dev, NULL, 2); | ||||
| 	gpiod_fw = devm_gpiod_get_index(&client->dev, NULL, 1); | ||||
| 	gpiod_irq = devm_gpiod_get_index(&client->dev, NULL, 0); | ||||
| 	gpiod_en = devm_gpiod_get_index(&client->dev, NULL, 2, GPIOD_OUT_LOW); | ||||
| 	gpiod_fw = devm_gpiod_get_index(&client->dev, NULL, 1, GPIOD_OUT_LOW); | ||||
| 	gpiod_irq = devm_gpiod_get_index(&client->dev, NULL, 0, GPIOD_IN); | ||||
| 
 | ||||
| 	if (IS_ERR(gpiod_en) || IS_ERR(gpiod_fw) || IS_ERR(gpiod_irq)) { | ||||
| 		nfc_err(&client->dev, "No GPIOs\n"); | ||||
| 		return -EINVAL; | ||||
| 	} | ||||
| 
 | ||||
| 	gpiod_direction_output(gpiod_en, 0); | ||||
| 	gpiod_direction_output(gpiod_fw, 0); | ||||
| 	gpiod_direction_input(gpiod_irq); | ||||
| 
 | ||||
| 	client->irq = gpiod_to_irq(gpiod_irq); | ||||
| 	if (client->irq < 0) { | ||||
| 		nfc_err(&client->dev, "No IRQ\n"); | ||||
|  | ||||
| @ -61,32 +61,26 @@ static struct phy_ops phy_ops = { | ||||
| 
 | ||||
| static int tusb1210_probe(struct ulpi *ulpi) | ||||
| { | ||||
| 	struct gpio_desc *gpio; | ||||
| 	struct tusb1210 *tusb; | ||||
| 	u8 val, reg; | ||||
| 	int ret; | ||||
| 
 | ||||
| 	tusb = devm_kzalloc(&ulpi->dev, sizeof(*tusb), GFP_KERNEL); | ||||
| 	if (!tusb) | ||||
| 		return -ENOMEM; | ||||
| 
 | ||||
| 	gpio = devm_gpiod_get(&ulpi->dev, "reset"); | ||||
| 	if (!IS_ERR(gpio)) { | ||||
| 		ret = gpiod_direction_output(gpio, 0); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		gpiod_set_value_cansleep(gpio, 1); | ||||
| 		tusb->gpio_reset = gpio; | ||||
| 	} | ||||
| 	tusb->gpio_reset = devm_gpiod_get_optional(&ulpi->dev, "reset", | ||||
| 						   GPIOD_OUT_LOW); | ||||
| 	if (IS_ERR(tusb->gpio_reset)) | ||||
| 		return PTR_ERR(tusb->gpio_reset); | ||||
| 
 | ||||
| 	gpio = devm_gpiod_get(&ulpi->dev, "cs"); | ||||
| 	if (!IS_ERR(gpio)) { | ||||
| 		ret = gpiod_direction_output(gpio, 0); | ||||
| 		if (ret) | ||||
| 			return ret; | ||||
| 		gpiod_set_value_cansleep(gpio, 1); | ||||
| 		tusb->gpio_cs = gpio; | ||||
| 	} | ||||
| 	gpiod_set_value_cansleep(tusb->gpio_reset, 1); | ||||
| 
 | ||||
| 	tusb->gpio_cs = devm_gpiod_get_optional(&ulpi->dev, "cs", | ||||
| 						GPIOD_OUT_LOW); | ||||
| 	if (IS_ERR(tusb->gpio_cs)) | ||||
| 		return PTR_ERR(tusb->gpio_cs); | ||||
| 
 | ||||
| 	gpiod_set_value_cansleep(tusb->gpio_cs, 1); | ||||
| 
 | ||||
| 	/*
 | ||||
| 	 * VENDOR_SPECIFIC2 register in TUSB1210 can be used for configuring eye | ||||
|  | ||||
| @ -83,17 +83,23 @@ static int dwc3_pci_quirks(struct pci_dev *pdev) | ||||
| 		acpi_dev_add_driver_gpios(ACPI_COMPANION(&pdev->dev), | ||||
| 					  acpi_dwc3_byt_gpios); | ||||
| 
 | ||||
| 		/* These GPIOs will turn on the USB2 PHY */ | ||||
| 		gpio = gpiod_get(&pdev->dev, "cs"); | ||||
| 		if (!IS_ERR(gpio)) { | ||||
| 			gpiod_direction_output(gpio, 0); | ||||
| 			gpiod_set_value_cansleep(gpio, 1); | ||||
| 			gpiod_put(gpio); | ||||
| 		} | ||||
| 		/*
 | ||||
| 		 * These GPIOs will turn on the USB2 PHY. Note that we have to | ||||
| 		 * put the gpio descriptors again here because the phy driver | ||||
| 		 * might want to grab them, too. | ||||
| 		 */ | ||||
| 		gpio = gpiod_get_optional(&pdev->dev, "cs", GPIOD_OUT_LOW); | ||||
| 		if (IS_ERR(gpio)) | ||||
| 			return PTR_ERR(gpio); | ||||
| 
 | ||||
| 		gpio = gpiod_get(&pdev->dev, "reset"); | ||||
| 		if (!IS_ERR(gpio)) { | ||||
| 			gpiod_direction_output(gpio, 0); | ||||
| 		gpiod_set_value_cansleep(gpio, 1); | ||||
| 		gpiod_put(gpio); | ||||
| 
 | ||||
| 		gpio = gpiod_get_optional(&pdev->dev, "reset", GPIOD_OUT_LOW); | ||||
| 		if (IS_ERR(gpio)) | ||||
| 			return PTR_ERR(gpio); | ||||
| 
 | ||||
| 		if (gpio) { | ||||
| 			gpiod_set_value_cansleep(gpio, 1); | ||||
| 			gpiod_put(gpio); | ||||
| 			usleep_range(10000, 11000); | ||||
|  | ||||
| @ -2422,7 +2422,7 @@ static int pxa_udc_probe(struct platform_device *pdev) | ||||
| 		} | ||||
| 		udc->udc_command = mach->udc_command; | ||||
| 	} else { | ||||
| 		udc->gpiod = devm_gpiod_get(&pdev->dev, NULL); | ||||
| 		udc->gpiod = devm_gpiod_get(&pdev->dev, NULL, GPIOD_ASIS); | ||||
| 	} | ||||
| 
 | ||||
| 	regs = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||||
|  | ||||
| @ -218,11 +218,13 @@ int usb_phy_gen_create_phy(struct device *dev, struct usb_phy_generic *nop, | ||||
| 			clk_rate = 0; | ||||
| 
 | ||||
| 		needs_vcc = of_property_read_bool(node, "vcc-supply"); | ||||
| 		nop->gpiod_reset = devm_gpiod_get_optional(dev, "reset"); | ||||
| 		nop->gpiod_reset = devm_gpiod_get_optional(dev, "reset", | ||||
| 							   GPIOD_ASIS); | ||||
| 		err = PTR_ERR_OR_ZERO(nop->gpiod_reset); | ||||
| 		if (!err) { | ||||
| 			nop->gpiod_vbus = devm_gpiod_get_optional(dev, | ||||
| 							 "vbus-detect"); | ||||
| 							 "vbus-detect", | ||||
| 							 GPIOD_ASIS); | ||||
| 			err = PTR_ERR_OR_ZERO(nop->gpiod_vbus); | ||||
| 		} | ||||
| 	} else if (pdata) { | ||||
|  | ||||
| @ -47,17 +47,17 @@ enum gpiod_flags { | ||||
| int gpiod_count(struct device *dev, const char *con_id); | ||||
| 
 | ||||
| /* Acquire and dispose GPIOs */ | ||||
| struct gpio_desc *__must_check __gpiod_get(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get(struct device *dev, | ||||
| 					 const char *con_id, | ||||
| 					 enum gpiod_flags flags); | ||||
| struct gpio_desc *__must_check __gpiod_get_index(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get_index(struct device *dev, | ||||
| 					       const char *con_id, | ||||
| 					       unsigned int idx, | ||||
| 					       enum gpiod_flags flags); | ||||
| struct gpio_desc *__must_check __gpiod_get_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get_optional(struct device *dev, | ||||
| 						  const char *con_id, | ||||
| 						  enum gpiod_flags flags); | ||||
| struct gpio_desc *__must_check __gpiod_get_index_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check gpiod_get_index_optional(struct device *dev, | ||||
| 							const char *con_id, | ||||
| 							unsigned int index, | ||||
| 							enum gpiod_flags flags); | ||||
| @ -70,18 +70,18 @@ struct gpio_descs *__must_check gpiod_get_array_optional(struct device *dev, | ||||
| void gpiod_put(struct gpio_desc *desc); | ||||
| void gpiod_put_array(struct gpio_descs *descs); | ||||
| 
 | ||||
| struct gpio_desc *__must_check __devm_gpiod_get(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get(struct device *dev, | ||||
| 					      const char *con_id, | ||||
| 					      enum gpiod_flags flags); | ||||
| struct gpio_desc *__must_check __devm_gpiod_get_index(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get_index(struct device *dev, | ||||
| 						    const char *con_id, | ||||
| 						    unsigned int idx, | ||||
| 						    enum gpiod_flags flags); | ||||
| struct gpio_desc *__must_check __devm_gpiod_get_optional(struct device *dev, | ||||
| struct gpio_desc *__must_check devm_gpiod_get_optional(struct device *dev, | ||||
| 						       const char *con_id, | ||||
| 						       enum gpiod_flags flags); | ||||
| struct gpio_desc *__must_check | ||||
| __devm_gpiod_get_index_optional(struct device *dev, const char *con_id, | ||||
| devm_gpiod_get_index_optional(struct device *dev, const char *con_id, | ||||
| 			      unsigned int index, enum gpiod_flags flags); | ||||
| struct gpio_descs *__must_check devm_gpiod_get_array(struct device *dev, | ||||
| 						     const char *con_id, | ||||
| @ -146,31 +146,31 @@ static inline int gpiod_count(struct device *dev, const char *con_id) | ||||
| 	return 0; | ||||
| } | ||||
| 
 | ||||
| static inline struct gpio_desc *__must_check __gpiod_get(struct device *dev, | ||||
| 						const char *con_id, | ||||
| 						enum gpiod_flags flags) | ||||
| static inline struct gpio_desc *__must_check gpiod_get(struct device *dev, | ||||
| 						       const char *con_id, | ||||
| 						       enum gpiod_flags flags) | ||||
| { | ||||
| 	return ERR_PTR(-ENOSYS); | ||||
| } | ||||
| static inline struct gpio_desc *__must_check | ||||
| __gpiod_get_index(struct device *dev, | ||||
| 		  const char *con_id, | ||||
| 		  unsigned int idx, | ||||
| 		  enum gpiod_flags flags) | ||||
| gpiod_get_index(struct device *dev, | ||||
| 		const char *con_id, | ||||
| 		unsigned int idx, | ||||
| 		enum gpiod_flags flags) | ||||
| { | ||||
| 	return ERR_PTR(-ENOSYS); | ||||
| } | ||||
| 
 | ||||
| static inline struct gpio_desc *__must_check | ||||
| __gpiod_get_optional(struct device *dev, const char *con_id, | ||||
| 		     enum gpiod_flags flags) | ||||
| gpiod_get_optional(struct device *dev, const char *con_id, | ||||
| 		   enum gpiod_flags flags) | ||||
| { | ||||
| 	return ERR_PTR(-ENOSYS); | ||||
| } | ||||
| 
 | ||||
| static inline struct gpio_desc *__must_check | ||||
| __gpiod_get_index_optional(struct device *dev, const char *con_id, | ||||
| 			   unsigned int index, enum gpiod_flags flags) | ||||
| gpiod_get_index_optional(struct device *dev, const char *con_id, | ||||
| 			 unsigned int index, enum gpiod_flags flags) | ||||
| { | ||||
| 	return ERR_PTR(-ENOSYS); | ||||
| } | ||||
| @ -206,7 +206,7 @@ static inline void gpiod_put_array(struct gpio_descs *descs) | ||||
| } | ||||
| 
 | ||||
| static inline struct gpio_desc *__must_check | ||||
| __devm_gpiod_get(struct device *dev, | ||||
| devm_gpiod_get(struct device *dev, | ||||
| 		 const char *con_id, | ||||
| 		 enum gpiod_flags flags) | ||||
| { | ||||
| @ -214,7 +214,7 @@ __devm_gpiod_get(struct device *dev, | ||||
| } | ||||
| static inline | ||||
| struct gpio_desc *__must_check | ||||
| __devm_gpiod_get_index(struct device *dev, | ||||
| devm_gpiod_get_index(struct device *dev, | ||||
| 		       const char *con_id, | ||||
| 		       unsigned int idx, | ||||
| 		       enum gpiod_flags flags) | ||||
| @ -223,14 +223,14 @@ __devm_gpiod_get_index(struct device *dev, | ||||
| } | ||||
| 
 | ||||
| static inline struct gpio_desc *__must_check | ||||
| __devm_gpiod_get_optional(struct device *dev, const char *con_id, | ||||
| devm_gpiod_get_optional(struct device *dev, const char *con_id, | ||||
| 			  enum gpiod_flags flags) | ||||
| { | ||||
| 	return ERR_PTR(-ENOSYS); | ||||
| } | ||||
| 
 | ||||
| static inline struct gpio_desc *__must_check | ||||
| __devm_gpiod_get_index_optional(struct device *dev, const char *con_id, | ||||
| devm_gpiod_get_index_optional(struct device *dev, const char *con_id, | ||||
| 				unsigned int index, enum gpiod_flags flags) | ||||
| { | ||||
| 	return ERR_PTR(-ENOSYS); | ||||
| @ -424,42 +424,6 @@ static inline struct gpio_desc *devm_get_gpiod_from_child( | ||||
| 
 | ||||
| #endif /* CONFIG_GPIOLIB */ | ||||
| 
 | ||||
| /*
 | ||||
|  * Vararg-hacks! This is done to transition the kernel to always pass | ||||
|  * the options flags argument to the below functions. During a transition | ||||
|  * phase these vararg macros make both old-and-newstyle code compile, | ||||
|  * but when all calls to the elder API are removed, these should go away | ||||
|  * and the __gpiod_get() etc functions above be renamed just gpiod_get() | ||||
|  * etc. | ||||
|  */ | ||||
| #define __gpiod_get(dev, con_id, flags, ...) __gpiod_get(dev, con_id, flags) | ||||
| #define gpiod_get(varargs...) __gpiod_get(varargs, GPIOD_ASIS) | ||||
| #define __gpiod_get_index(dev, con_id, index, flags, ...)		\ | ||||
| 	__gpiod_get_index(dev, con_id, index, flags) | ||||
| #define gpiod_get_index(varargs...) __gpiod_get_index(varargs, GPIOD_ASIS) | ||||
| #define __gpiod_get_optional(dev, con_id, flags, ...)			\ | ||||
| 	__gpiod_get_optional(dev, con_id, flags) | ||||
| #define gpiod_get_optional(varargs...) __gpiod_get_optional(varargs, GPIOD_ASIS) | ||||
| #define __gpiod_get_index_optional(dev, con_id, index, flags, ...)	\ | ||||
| 	__gpiod_get_index_optional(dev, con_id, index, flags) | ||||
| #define gpiod_get_index_optional(varargs...)				\ | ||||
| 	__gpiod_get_index_optional(varargs, GPIOD_ASIS) | ||||
| #define __devm_gpiod_get(dev, con_id, flags, ...)			\ | ||||
| 	__devm_gpiod_get(dev, con_id, flags) | ||||
| #define devm_gpiod_get(varargs...) __devm_gpiod_get(varargs, GPIOD_ASIS) | ||||
| #define __devm_gpiod_get_index(dev, con_id, index, flags, ...)		\ | ||||
| 	__devm_gpiod_get_index(dev, con_id, index, flags) | ||||
| #define devm_gpiod_get_index(varargs...)				\ | ||||
| 	__devm_gpiod_get_index(varargs, GPIOD_ASIS) | ||||
| #define __devm_gpiod_get_optional(dev, con_id, flags, ...)		\ | ||||
| 	__devm_gpiod_get_optional(dev, con_id, flags) | ||||
| #define devm_gpiod_get_optional(varargs...)				\ | ||||
| 	__devm_gpiod_get_optional(varargs, GPIOD_ASIS) | ||||
| #define __devm_gpiod_get_index_optional(dev, con_id, index, flags, ...)	\ | ||||
| 	__devm_gpiod_get_index_optional(dev, con_id, index, flags) | ||||
| #define devm_gpiod_get_index_optional(varargs...)			\ | ||||
| 	__devm_gpiod_get_index_optional(varargs, GPIOD_ASIS) | ||||
| 
 | ||||
| #if IS_ENABLED(CONFIG_GPIOLIB) && IS_ENABLED(CONFIG_GPIO_SYSFS) | ||||
| 
 | ||||
| int gpiod_export(struct gpio_desc *desc, bool direction_may_change); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user