Lines Matching refs:gpios
49 void mctrl_gpio_set(struct mctrl_gpios *gpios, unsigned int mctrl) in mctrl_gpio_set() argument
57 if (gpios->gpio[i] && mctrl_gpios_desc[i].dir_out) { in mctrl_gpio_set()
58 desc_array[count] = gpios->gpio[i]; in mctrl_gpio_set()
66 struct gpio_desc *mctrl_gpio_to_gpiod(struct mctrl_gpios *gpios, in mctrl_gpio_to_gpiod() argument
69 return gpios->gpio[gidx]; in mctrl_gpio_to_gpiod()
73 unsigned int mctrl_gpio_get(struct mctrl_gpios *gpios, unsigned int *mctrl) in mctrl_gpio_get() argument
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()
92 struct mctrl_gpios *gpios; in mctrl_gpio_init_noauto() local
95 gpios = devm_kzalloc(dev, sizeof(*gpios), GFP_KERNEL); in mctrl_gpio_init_noauto()
96 if (!gpios) in mctrl_gpio_init_noauto()
107 gpios->gpio[i] = in mctrl_gpio_init_noauto()
112 if (IS_ERR(gpios->gpio[i])) in mctrl_gpio_init_noauto()
113 return ERR_CAST(gpios->gpio[i]); in mctrl_gpio_init_noauto()
116 return gpios; in mctrl_gpio_init_noauto()
123 struct mctrl_gpios *gpios = context; in mctrl_gpio_irq_handle() local
124 struct uart_port *port = gpios->port; in mctrl_gpio_irq_handle()
125 u32 mctrl = gpios->mctrl_prev; in mctrl_gpio_irq_handle()
128 mctrl_gpio_get(gpios, &mctrl); in mctrl_gpio_irq_handle()
130 mctrl_diff = mctrl ^ gpios->mctrl_prev; in mctrl_gpio_irq_handle()
131 gpios->mctrl_prev = mctrl; in mctrl_gpio_irq_handle()
154 struct mctrl_gpios *gpios; in mctrl_gpio_init() local
157 gpios = mctrl_gpio_init_noauto(port->dev, idx); in mctrl_gpio_init()
158 if (IS_ERR(gpios)) in mctrl_gpio_init()
159 return gpios; in mctrl_gpio_init()
161 gpios->port = port; in mctrl_gpio_init()
166 if (!gpios->gpio[i] || mctrl_gpios_desc[i].dir_out) in mctrl_gpio_init()
169 ret = gpiod_to_irq(gpios->gpio[i]); in mctrl_gpio_init()
176 gpios->irq[i] = ret; in mctrl_gpio_init()
179 irq_set_status_flags(gpios->irq[i], IRQ_NOAUTOEN); in mctrl_gpio_init()
181 ret = devm_request_irq(port->dev, gpios->irq[i], in mctrl_gpio_init()
184 gpios); in mctrl_gpio_init()
194 return gpios; in mctrl_gpio_init()
197 void mctrl_gpio_free(struct device *dev, struct mctrl_gpios *gpios) in mctrl_gpio_free() argument
202 if (gpios->irq[i]) in mctrl_gpio_free()
203 devm_free_irq(gpios->port->dev, gpios->irq[i], gpios); in mctrl_gpio_free()
205 if (gpios->gpio[i]) in mctrl_gpio_free()
206 devm_gpiod_put(dev, gpios->gpio[i]); in mctrl_gpio_free()
208 devm_kfree(dev, gpios); in mctrl_gpio_free()
212 void mctrl_gpio_enable_ms(struct mctrl_gpios *gpios) in mctrl_gpio_enable_ms() argument
217 if (gpios->mctrl_on) in mctrl_gpio_enable_ms()
220 gpios->mctrl_on = true; in mctrl_gpio_enable_ms()
223 mctrl_gpio_get(gpios, &gpios->mctrl_prev); in mctrl_gpio_enable_ms()
226 if (!gpios->irq[i]) in mctrl_gpio_enable_ms()
229 enable_irq(gpios->irq[i]); in mctrl_gpio_enable_ms()
234 void mctrl_gpio_disable_ms(struct mctrl_gpios *gpios) in mctrl_gpio_disable_ms() argument
238 if (!gpios->mctrl_on) in mctrl_gpio_disable_ms()
241 gpios->mctrl_on = false; in mctrl_gpio_disable_ms()
244 if (!gpios->irq[i]) in mctrl_gpio_disable_ms()
247 disable_irq(gpios->irq[i]); in mctrl_gpio_disable_ms()