Lines Matching refs:gpi_dev

469 struct gpi_dev {  struct
500 struct gpi_dev *gpi_dev; argument
602 devm_free_irq(gpii->gpi_dev->dev, gpii->irq, gpii); in gpi_disable_interrupts()
617 ret = devm_request_irq(gpii->gpi_dev->dev, gpii->irq, in gpi_config_interrupts()
621 dev_err(gpii->gpi_dev->dev, "error request irq:%d ret:%d\n", in gpi_config_interrupts()
684 dev_dbg(gpii->gpi_dev->dev, in gpi_send_cmd()
698 dev_err(gpii->gpi_dev->dev, "cmd: %s completion timeout:%u\n", in gpi_send_cmd()
795 dev_dbg(gpii->gpi_dev->dev, "irq_stts:0x%x\n", irq_stts); in gpi_process_gen_err_irq()
814 dev_err(gpii->gpi_dev->dev, "invalid error status:0x%x\n", irq_stts); in gpi_process_glob_err_irq()
837 dev_err(gpii->gpi_dev->dev, "receive interrupt while in %s state\n", in gpi_handle_irq()
863 dev_dbg(gpii->gpi_dev->dev, in gpi_handle_irq()
884 dev_dbg(gpii->gpi_dev->dev, "setting EV state to %s\n", in gpi_handle_irq()
892 dev_dbg(gpii->gpi_dev->dev, "process CH CTRL interrupts\n"); in gpi_handle_irq()
898 dev_err(gpii->gpi_dev->dev, "Unhandled interrupt status:0x%x\n", type); in gpi_handle_irq()
930 dev_err(gpii->gpi_dev->dev, "skipping processing event because ch @ %s state\n", in gpi_process_imed_data_event()
942 dev_dbg(gpii->gpi_dev->dev, "event without a pending descriptor!\n"); in gpi_process_imed_data_event()
944 dev_dbg(gpii->gpi_dev->dev, in gpi_process_imed_data_event()
949 dev_dbg(gpii->gpi_dev->dev, in gpi_process_imed_data_event()
1010 dev_err(gpii->gpi_dev->dev, "skipping processing event because ch @ %s state\n", in gpi_process_xfer_compl_event()
1021 dev_err(gpii->gpi_dev->dev, "Event without a pending descriptor!\n"); in gpi_process_xfer_compl_event()
1023 dev_err(gpii->gpi_dev->dev, in gpi_process_xfer_compl_event()
1054 dev_err(gpii->gpi_dev->dev, "Error in Transaction\n"); in gpi_process_xfer_compl_event()
1057 dev_dbg(gpii->gpi_dev->dev, "Transaction Success\n"); in gpi_process_xfer_compl_event()
1061 dev_dbg(gpii->gpi_dev->dev, "Residue %d\n", result.residue); in gpi_process_xfer_compl_event()
1093 dev_dbg(gpii->gpi_dev->dev, in gpi_process_events()
1106 dev_dbg(gpii->gpi_dev->dev, "stale event, not processing\n"); in gpi_process_events()
1114 dev_dbg(gpii->gpi_dev->dev, "QUP_NOTIF_EV_TYPE\n"); in gpi_process_events()
1117 dev_dbg(gpii->gpi_dev->dev, in gpi_process_events()
1141 dev_err(gpii->gpi_dev->dev, "not processing any events, pm_state:%s\n", in gpi_ev_tasklet()
1190 dev_err(gpii->gpi_dev->dev, "Error with cmd:%s ret:%d\n", in gpi_reset_chan()
1223 dev_err(gpii->gpi_dev->dev, "Error with cmd:%s ret:%d\n", in gpi_start_chan()
1243 dev_err(gpii->gpi_dev->dev, "Error with cmd:%s ret:%d\n", in gpi_stop_chan()
1264 dev_err(gpii->gpi_dev->dev, "Error with cmd:%s ret:%d\n", in gpi_alloc_chan()
1299 dev_err(gpii->gpi_dev->dev, "error with cmd:%s ret:%d\n", in gpi_alloc_ev_chan()
1384 dma_free_coherent(gpii->gpi_dev->dev, ring->alloc_size, in gpi_free_ring()
1402 dev_dbg(gpii->gpi_dev->dev, in gpi_alloc_ring()
1407 ring->pre_aligned = dma_alloc_coherent(gpii->gpi_dev->dev, in gpi_alloc_ring()
1411 dev_err(gpii->gpi_dev->dev, "could not alloc size:%zu mem for ring\n", in gpi_alloc_ring()
1430 dev_dbg(gpii->gpi_dev->dev, in gpi_alloc_ring()
1448 dev_err(gpii->gpi_dev->dev, "Error adding ring element to xfer ring\n"); in gpi_queue_xfer()
1493 dev_err(gpii->gpi_dev->dev, "Error resetting channel ret:%d\n", ret); in gpi_terminate_all()
1500 dev_err(gpii->gpi_dev->dev, "Error alloc_channel ret:%d\n", ret); in gpi_terminate_all()
1511 dev_err(gpii->gpi_dev->dev, "Error Starting Channel ret:%d\n", ret); in gpi_terminate_all()
1535 dev_dbg(gpii->gpi_dev->dev, "channel is already paused\n"); in gpi_pause()
1571 dev_dbg(gpii->gpi_dev->dev, "channel is already active\n"); in gpi_resume()
1582 dev_err(gpii->gpi_dev->dev, "Error starting chan, ret:%d\n", ret); in gpi_resume()
1628 struct device *dev = chan->gpii->gpi_dev->dev; in gpi_create_i2c_tre()
1706 struct device *dev = chan->gpii->gpi_dev->dev; in gpi_create_spi_tre()
1804 struct device *dev = gpii->gpi_dev->dev; in gpi_prep_slave_sg()
1813 dev_err(gpii->gpi_dev->dev, "invalid dma direction: %d\n", direction); in gpi_prep_slave_sg()
1903 const int ev_factor = gpii->gpi_dev->ev_factor; in gpi_ch_init()
1916 dev_err(gpii->gpi_dev->dev, "protocol did not match protocol %u != %u\n", in gpi_ch_init()
1935 dev_err(gpii->gpi_dev->dev, "error config. interrupts, ret:%d\n", ret); in gpi_ch_init()
1942 dev_err(gpii->gpi_dev->dev, "error alloc_ev_chan:%d\n", ret); in gpi_ch_init()
1950 dev_err(gpii->gpi_dev->dev, "Error allocating chan:%d\n", ret); in gpi_ch_init()
1959 dev_err(gpii->gpi_dev->dev, "Error start chan:%d\n", ret); in gpi_ch_init()
2005 dev_err(gpii->gpi_dev->dev, "error resetting channel:%d\n", ret); in gpi_free_chan_resources()
2078 static int gpi_find_avail_gpii(struct gpi_dev *gpi_dev, u32 seid) in gpi_find_avail_gpii() argument
2084 for (gpii = 0; gpii < gpi_dev->max_gpii; gpii++) { in gpi_find_avail_gpii()
2085 if (!((1 << gpii) & gpi_dev->gpii_mask)) in gpi_find_avail_gpii()
2088 tx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_TX_CHAN]; in gpi_find_avail_gpii()
2089 rx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_RX_CHAN]; in gpi_find_avail_gpii()
2098 for (gpii = 0; gpii < gpi_dev->max_gpii; gpii++) { in gpi_find_avail_gpii()
2099 if (!((1 << gpii) & gpi_dev->gpii_mask)) in gpi_find_avail_gpii()
2102 tx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_TX_CHAN]; in gpi_find_avail_gpii()
2103 rx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_RX_CHAN]; in gpi_find_avail_gpii()
2122 struct gpi_dev *gpi_dev = (struct gpi_dev *)of_dma->of_dma_data; in gpi_of_dma_xlate() local
2128 dev_err(gpi_dev->dev, "gpii require minimum 2 args, client passed:%d args\n", in gpi_of_dma_xlate()
2135 dev_err(gpi_dev->dev, "gpii channel:%d not valid\n", chid); in gpi_of_dma_xlate()
2142 gpii = gpi_find_avail_gpii(gpi_dev, seid); in gpi_of_dma_xlate()
2144 dev_err(gpi_dev->dev, "no available gpii instances\n"); in gpi_of_dma_xlate()
2148 gchan = &gpi_dev->gpiis[gpii].gchan[chid]; in gpi_of_dma_xlate()
2150 dev_err(gpi_dev->dev, "gpii:%d chid:%d seid:%d already configured\n", in gpi_of_dma_xlate()
2163 struct gpi_dev *gpi_dev; in gpi_probe() local
2168 gpi_dev = devm_kzalloc(&pdev->dev, sizeof(*gpi_dev), GFP_KERNEL); in gpi_probe()
2169 if (!gpi_dev) in gpi_probe()
2172 gpi_dev->dev = &pdev->dev; in gpi_probe()
2173 gpi_dev->regs = devm_platform_get_and_ioremap_resource(pdev, 0, &gpi_dev->res); in gpi_probe()
2174 if (IS_ERR(gpi_dev->regs)) in gpi_probe()
2175 return PTR_ERR(gpi_dev->regs); in gpi_probe()
2176 gpi_dev->ee_base = gpi_dev->regs; in gpi_probe()
2178 ret = of_property_read_u32(gpi_dev->dev->of_node, "dma-channels", in gpi_probe()
2179 &gpi_dev->max_gpii); in gpi_probe()
2181 dev_err(gpi_dev->dev, "missing 'max-no-gpii' DT node\n"); in gpi_probe()
2185 ret = of_property_read_u32(gpi_dev->dev->of_node, "dma-channel-mask", in gpi_probe()
2186 &gpi_dev->gpii_mask); in gpi_probe()
2188 dev_err(gpi_dev->dev, "missing 'gpii-mask' DT node\n"); in gpi_probe()
2192 ee_offset = (uintptr_t)device_get_match_data(gpi_dev->dev); in gpi_probe()
2193 gpi_dev->ee_base = gpi_dev->ee_base - ee_offset; in gpi_probe()
2195 gpi_dev->ev_factor = EV_FACTOR; in gpi_probe()
2197 ret = dma_set_mask(gpi_dev->dev, DMA_BIT_MASK(64)); in gpi_probe()
2199 dev_err(gpi_dev->dev, "Error setting dma_mask to 64, ret:%d\n", ret); in gpi_probe()
2203 gpi_dev->gpiis = devm_kzalloc(gpi_dev->dev, sizeof(*gpi_dev->gpiis) * in gpi_probe()
2204 gpi_dev->max_gpii, GFP_KERNEL); in gpi_probe()
2205 if (!gpi_dev->gpiis) in gpi_probe()
2209 INIT_LIST_HEAD(&gpi_dev->dma_device.channels); in gpi_probe()
2210 for (i = 0; i < gpi_dev->max_gpii; i++) { in gpi_probe()
2211 struct gpii *gpii = &gpi_dev->gpiis[i]; in gpi_probe()
2214 if (!((1 << i) & gpi_dev->gpii_mask)) in gpi_probe()
2218 gpii->ev_cntxt_base_reg = gpi_dev->ee_base + GPII_n_EV_CH_k_CNTXT_0_OFFS(i, 0); in gpi_probe()
2219 gpii->ev_cntxt_db_reg = gpi_dev->ee_base + GPII_n_EV_CH_k_DOORBELL_0_OFFS(i, 0); in gpi_probe()
2221 gpii->ev_cmd_reg = gpi_dev->ee_base + GPII_n_EV_CH_CMD_OFFS(i); in gpi_probe()
2222 gpii->ieob_clr_reg = gpi_dev->ee_base + GPII_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(i); in gpi_probe()
2235 gchan->ch_cntxt_base_reg = gpi_dev->ee_base + in gpi_probe()
2237 gchan->ch_cntxt_db_reg = gpi_dev->ee_base + in gpi_probe()
2239 gchan->ch_cmd_reg = gpi_dev->ee_base + GPII_n_CH_CMD_OFFS(i); in gpi_probe()
2242 vchan_init(&gchan->vc, &gpi_dev->dma_device); in gpi_probe()
2254 gpii->regs = gpi_dev->ee_base; in gpi_probe()
2255 gpii->gpi_dev = gpi_dev; in gpi_probe()
2258 platform_set_drvdata(pdev, gpi_dev); in gpi_probe()
2261 dma_cap_zero(gpi_dev->dma_device.cap_mask); in gpi_probe()
2262 dma_cap_set(DMA_SLAVE, gpi_dev->dma_device.cap_mask); in gpi_probe()
2265 gpi_dev->dma_device.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); in gpi_probe()
2266 gpi_dev->dma_device.residue_granularity = DMA_RESIDUE_GRANULARITY_DESCRIPTOR; in gpi_probe()
2267 gpi_dev->dma_device.src_addr_widths = DMA_SLAVE_BUSWIDTH_8_BYTES; in gpi_probe()
2268 gpi_dev->dma_device.dst_addr_widths = DMA_SLAVE_BUSWIDTH_8_BYTES; in gpi_probe()
2269 gpi_dev->dma_device.device_alloc_chan_resources = gpi_alloc_chan_resources; in gpi_probe()
2270 gpi_dev->dma_device.device_free_chan_resources = gpi_free_chan_resources; in gpi_probe()
2271 gpi_dev->dma_device.device_tx_status = dma_cookie_status; in gpi_probe()
2272 gpi_dev->dma_device.device_issue_pending = gpi_issue_pending; in gpi_probe()
2273 gpi_dev->dma_device.device_prep_slave_sg = gpi_prep_slave_sg; in gpi_probe()
2274 gpi_dev->dma_device.device_config = gpi_peripheral_config; in gpi_probe()
2275 gpi_dev->dma_device.device_terminate_all = gpi_terminate_all; in gpi_probe()
2276 gpi_dev->dma_device.dev = gpi_dev->dev; in gpi_probe()
2277 gpi_dev->dma_device.device_pause = gpi_pause; in gpi_probe()
2278 gpi_dev->dma_device.device_resume = gpi_resume; in gpi_probe()
2281 ret = dma_async_device_register(&gpi_dev->dma_device); in gpi_probe()
2283 dev_err(gpi_dev->dev, "async_device_register failed ret:%d", ret); in gpi_probe()
2287 ret = of_dma_controller_register(gpi_dev->dev->of_node, in gpi_probe()
2288 gpi_of_dma_xlate, gpi_dev); in gpi_probe()
2290 dev_err(gpi_dev->dev, "of_dma_controller_reg failed ret:%d", ret); in gpi_probe()