Loading Documentation/devicetree/bindings/nfc/nfc-nci.txt +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ Required properties: Optional properties: - qcom,pwr-req-gpio: pmic gpio to vote for power to be supplied to the uicc - qcom,clk-src-gpio: msm gpio clock,used ony if clock source is msm gpio - qcom,clk-req-gpio: clk-req input gpio for MSM based clocks. not used for pmic implementation Loading drivers/nfc/nfc-nci.c +28 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ struct qca199x_platform_data { unsigned int clk_req_irq_num; unsigned int dis_gpio; unsigned int clkreq_gpio; unsigned int pwrreq_gpio; unsigned int reg; const char *clk_src_name; unsigned int clk_src_gpio; Loading Loading @@ -1207,6 +1208,8 @@ static int nfc_parse_dt(struct device *dev, struct qca199x_platform_data *pdata) r = of_property_read_string(np, "qcom,clk-src", &pdata->clk_src_name); pdata->pwrreq_gpio = of_get_named_gpio(np, "qcom,pwr-req-gpio", 0); if (strcmp(pdata->clk_src_name, "GPCLK2")) { pdata->clkreq_gpio = of_get_named_gpio(np, "qcom,clk-gpio", 0); } Loading @@ -1228,6 +1231,22 @@ static int nfc_parse_dt(struct device *dev, struct qca199x_platform_data *pdata) return r; } static inline int gpio_input_init(const struct device * const dev, const int gpio, const char * const gpio_name) { int r = gpio_request(gpio, gpio_name); if (r) { dev_err(dev, "unable to request gpio [%d]\n", gpio); return r; } r = gpio_direction_input(gpio); if (r) dev_err(dev, "unable to set direction for gpio [%d]\n", gpio); return r; } static int qca199x_probe(struct i2c_client *client, const struct i2c_device_id *id) { Loading Loading @@ -1416,6 +1435,15 @@ static int qca199x_probe(struct i2c_client *client, goto err_irq_clk; } if (gpio_is_valid(platform_data->pwrreq_gpio)) { r = gpio_input_init(&client->dev, platform_data->pwrreq_gpio, "pwrreq_gpio"); if (r) gpio_free(platform_data->pwrreq_gpio); } else { dev_dbg(&client->dev, "pwrreq gpio not provided"); } if (strcmp(platform_data->clk_src_name, "GPCLK2")) { if (gpio_is_valid(platform_data->clkreq_gpio)) { r = gpio_request(platform_data->clkreq_gpio, Loading Loading
Documentation/devicetree/bindings/nfc/nfc-nci.txt +1 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ Required properties: Optional properties: - qcom,pwr-req-gpio: pmic gpio to vote for power to be supplied to the uicc - qcom,clk-src-gpio: msm gpio clock,used ony if clock source is msm gpio - qcom,clk-req-gpio: clk-req input gpio for MSM based clocks. not used for pmic implementation Loading
drivers/nfc/nfc-nci.c +28 −0 Original line number Diff line number Diff line Loading @@ -39,6 +39,7 @@ struct qca199x_platform_data { unsigned int clk_req_irq_num; unsigned int dis_gpio; unsigned int clkreq_gpio; unsigned int pwrreq_gpio; unsigned int reg; const char *clk_src_name; unsigned int clk_src_gpio; Loading Loading @@ -1207,6 +1208,8 @@ static int nfc_parse_dt(struct device *dev, struct qca199x_platform_data *pdata) r = of_property_read_string(np, "qcom,clk-src", &pdata->clk_src_name); pdata->pwrreq_gpio = of_get_named_gpio(np, "qcom,pwr-req-gpio", 0); if (strcmp(pdata->clk_src_name, "GPCLK2")) { pdata->clkreq_gpio = of_get_named_gpio(np, "qcom,clk-gpio", 0); } Loading @@ -1228,6 +1231,22 @@ static int nfc_parse_dt(struct device *dev, struct qca199x_platform_data *pdata) return r; } static inline int gpio_input_init(const struct device * const dev, const int gpio, const char * const gpio_name) { int r = gpio_request(gpio, gpio_name); if (r) { dev_err(dev, "unable to request gpio [%d]\n", gpio); return r; } r = gpio_direction_input(gpio); if (r) dev_err(dev, "unable to set direction for gpio [%d]\n", gpio); return r; } static int qca199x_probe(struct i2c_client *client, const struct i2c_device_id *id) { Loading Loading @@ -1416,6 +1435,15 @@ static int qca199x_probe(struct i2c_client *client, goto err_irq_clk; } if (gpio_is_valid(platform_data->pwrreq_gpio)) { r = gpio_input_init(&client->dev, platform_data->pwrreq_gpio, "pwrreq_gpio"); if (r) gpio_free(platform_data->pwrreq_gpio); } else { dev_dbg(&client->dev, "pwrreq gpio not provided"); } if (strcmp(platform_data->clk_src_name, "GPCLK2")) { if (gpio_is_valid(platform_data->clkreq_gpio)) { r = gpio_request(platform_data->clkreq_gpio, Loading