• Home
  • Raw
  • Download

Lines Matching full:gpios

40 void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl)  in mctrl_gpio_set()  argument
47 if (gpios == NULL) in mctrl_gpio_set()
51 if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_set()
52 desc_array[count] = gpios->gpio[i]; in mctrl_gpio_set()
60 struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, in mctrl_gpio_to_gpiod() argument
63 if (gpios == NULL) in mctrl_gpio_to_gpiod()
66 return gpios->gpio[gidx]; in mctrl_gpio_to_gpiod()
70 unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl) in mctrl_gpio_get() argument
74 if (gpios == NULL) in mctrl_gpio_get()
78 if (gpios->gpio[i] && !mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_get()
79 if (gpiod_get_value(gpios->gpio[i])) in mctrl_gpio_get()
91 mctrl_gpio_get_outputs(struct mctrl_gpios *gpios, unsigned int *mctrl) in mctrl_gpio_get_outputs() argument
95 if (gpios == NULL) in mctrl_gpio_get_outputs()
99 if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_get_outputs()
100 if (gpiod_get_value(gpios->gpio[i])) in mctrl_gpio_get_outputs()
113 struct mctrl_gpios *gpios; in mctrl_gpio_init_noauto() local
116 gpios = devm_kzalloc(dev, sizeof(*gpios), GFP_KERNEL); in mctrl_gpio_init_noauto()
117 if (!gpios) in mctrl_gpio_init_noauto()
126 gpio_str = kasprintf(GFP_KERNEL, "%s-gpios", in mctrl_gpio_init_noauto()
141 gpios->gpio[i] = in mctrl_gpio_init_noauto()
146 if (IS_ERR(gpios->gpio[i])) in mctrl_gpio_init_noauto()
147 return ERR_CAST(gpios->gpio[i]); in mctrl_gpio_init_noauto()
150 return gpios; in mctrl_gpio_init_noauto()
157 struct mctrl_gpios *gpios = context; in mctrl_gpio_irq_handle() local
158 struct uart_port *port = gpios->port; in mctrl_gpio_irq_handle()
159 u32 mctrl = gpios->mctrl_prev; in mctrl_gpio_irq_handle()
163 mctrl_gpio_get(gpios, &mctrl); in mctrl_gpio_irq_handle()
167 mctrl_diff = mctrl ^ gpios->mctrl_prev; in mctrl_gpio_irq_handle()
168 gpios->mctrl_prev = mctrl; in mctrl_gpio_irq_handle()
193 struct mctrl_gpios *gpios; in mctrl_gpio_init() local
196 gpios = mctrl_gpio_init_noauto(port->dev, idx); in mctrl_gpio_init()
197 if (IS_ERR(gpios)) in mctrl_gpio_init()
198 return gpios; in mctrl_gpio_init()
200 gpios->port = port; in mctrl_gpio_init()
205 if (!gpios->gpio[i] || mctrl_gpios_desc[i].dir_out) in mctrl_gpio_init()
208 ret = gpiod_to_irq(gpios->gpio[i]); in mctrl_gpio_init()
215 gpios->irq[i] = ret; in mctrl_gpio_init()
218 irq_set_status_flags(gpios->irq[i], IRQ_NOAUTOEN); in mctrl_gpio_init()
220 ret = devm_request_irq(port->dev, gpios->irq[i], in mctrl_gpio_init()
223 gpios); in mctrl_gpio_init()
233 return gpios; in mctrl_gpio_init()
237 void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios) in mctrl_gpio_free() argument
241 if (gpios == NULL) in mctrl_gpio_free()
245 if (gpios->irq[i]) in mctrl_gpio_free()
246 devm_free_irq(gpios->port->dev, gpios->irq[i], gpios); in mctrl_gpio_free()
248 if (gpios->gpio[i]) in mctrl_gpio_free()
249 devm_gpiod_put(dev, gpios->gpio[i]); in mctrl_gpio_free()
251 devm_kfree(dev, gpios); in mctrl_gpio_free()
255 void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios) in mctrl_gpio_enable_ms() argument
259 if (gpios == NULL) in mctrl_gpio_enable_ms()
263 if (gpios->mctrl_on) in mctrl_gpio_enable_ms()
266 gpios->mctrl_on = true; in mctrl_gpio_enable_ms()
268 /* get initial status of modem lines GPIOs */ in mctrl_gpio_enable_ms()
269 mctrl_gpio_get(gpios, &gpios->mctrl_prev); in mctrl_gpio_enable_ms()
272 if (!gpios->irq[i]) in mctrl_gpio_enable_ms()
275 enable_irq(gpios->irq[i]); in mctrl_gpio_enable_ms()
280 void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios) in mctrl_gpio_disable_ms() argument
284 if (gpios == NULL) in mctrl_gpio_disable_ms()
287 if (!gpios->mctrl_on) in mctrl_gpio_disable_ms()
290 gpios->mctrl_on = false; in mctrl_gpio_disable_ms()
293 if (!gpios->irq[i]) in mctrl_gpio_disable_ms()
296 disable_irq(gpios->irq[i]); in mctrl_gpio_disable_ms()