Lines Matching refs:ppi

32 static int ppi_attach_irq(struct ppi_if *ppi, irq_handler_t handler);
33 static void ppi_detach_irq(struct ppi_if *ppi);
34 static int ppi_start(struct ppi_if *ppi);
35 static int ppi_stop(struct ppi_if *ppi);
36 static int ppi_set_params(struct ppi_if *ppi, struct ppi_params *params);
37 static void ppi_update_addr(struct ppi_if *ppi, unsigned long addr);
50 struct ppi_if *ppi = dev_id; in ppi_irq_err() local
51 const struct ppi_info *info = ppi->info; in ppi_irq_err()
64 ppi->err = true; in ppi_irq_err()
75 ppi->err = true; in ppi_irq_err()
86 ppi->err = true; in ppi_irq_err()
97 static int ppi_attach_irq(struct ppi_if *ppi, irq_handler_t handler) in ppi_attach_irq() argument
99 const struct ppi_info *info = ppi->info; in ppi_attach_irq()
108 set_dma_callback(info->dma_ch, handler, ppi); in ppi_attach_irq()
110 if (ppi->err_int) { in ppi_attach_irq()
111 ret = request_irq(info->irq_err, ppi_irq_err, 0, "PPI ERROR", ppi); in ppi_attach_irq()
120 static void ppi_detach_irq(struct ppi_if *ppi) in ppi_detach_irq() argument
122 const struct ppi_info *info = ppi->info; in ppi_detach_irq()
124 if (ppi->err_int) in ppi_detach_irq()
125 free_irq(info->irq_err, ppi); in ppi_detach_irq()
129 static int ppi_start(struct ppi_if *ppi) in ppi_start() argument
131 const struct ppi_info *info = ppi->info; in ppi_start()
137 ppi->ppi_control |= PORT_EN; in ppi_start()
142 bfin_write16(&reg->control, ppi->ppi_control); in ppi_start()
148 bfin_write32(&reg->control, ppi->ppi_control); in ppi_start()
154 bfin_write32(&reg->ctl, ppi->ppi_control); in ppi_start()
165 static int ppi_stop(struct ppi_if *ppi) in ppi_stop() argument
167 const struct ppi_info *info = ppi->info; in ppi_stop()
170 ppi->ppi_control &= ~PORT_EN; in ppi_stop()
175 bfin_write16(&reg->control, ppi->ppi_control); in ppi_stop()
181 bfin_write32(&reg->control, ppi->ppi_control); in ppi_stop()
187 bfin_write32(&reg->ctl, ppi->ppi_control); in ppi_stop()
202 static int ppi_set_params(struct ppi_if *ppi, struct ppi_params *params) in ppi_set_params() argument
204 const struct ppi_info *info = ppi->info; in ppi_set_params()
216 pctrl = devm_pinctrl_get(ppi->dev); in ppi_set_params()
229 ppi->err_int = false; in ppi_set_params()
231 ppi->err_int = true; in ppi_set_params()
234 ppi->ppi_control = params->ppi_control & ~PORT_EN; in ppi_set_params()
235 if (!(ppi->ppi_control & PORT_DIR)) in ppi_set_params()
245 bfin_write16(&reg->control, ppi->ppi_control); in ppi_set_params()
258 bfin_write32(&reg->control, ppi->ppi_control); in ppi_set_params()
275 bfin_write32(&reg->ctl, ppi->ppi_control); in ppi_set_params()
284 if (ppi->ppi_control & PORT_DIR) { in ppi_set_params()
320 static void ppi_update_addr(struct ppi_if *ppi, unsigned long addr) in ppi_update_addr() argument
322 set_dma_start_addr(ppi->info->dma_ch, addr); in ppi_update_addr()
328 struct ppi_if *ppi; in ppi_create_instance() local
340 ppi = kzalloc(sizeof(*ppi), GFP_KERNEL); in ppi_create_instance()
341 if (!ppi) { in ppi_create_instance()
346 ppi->ops = &ppi_ops; in ppi_create_instance()
347 ppi->info = info; in ppi_create_instance()
348 ppi->dev = &pdev->dev; in ppi_create_instance()
351 return ppi; in ppi_create_instance()
355 void ppi_delete_instance(struct ppi_if *ppi) in ppi_delete_instance() argument
357 peripheral_free_list(ppi->info->pin_req); in ppi_delete_instance()
358 kfree(ppi); in ppi_delete_instance()