drivers/dma/qcom/gpi.c
1000
struct gpi_ring *ch_ring = &gchan->ch_ring;
drivers/dma/qcom/gpi.c
1009
if (unlikely(gchan->pm_state != ACTIVE_STATE)) {
drivers/dma/qcom/gpi.c
1011
TO_GPI_PM_STR(gchan->pm_state));
drivers/dma/qcom/gpi.c
1015
spin_lock_irqsave(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1016
vd = vchan_next_desc(&gchan->vc);
drivers/dma/qcom/gpi.c
1020
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1031
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1067
spin_lock_irqsave(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1069
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1081
struct gchan *gchan;
drivers/dma/qcom/gpi.c
1101
gchan = &gpii->gchan[chid];
drivers/dma/qcom/gpi.c
1102
gpi_process_xfer_compl_event(gchan,
drivers/dma/qcom/gpi.c
1109
gchan = &gpii->gchan[chid];
drivers/dma/qcom/gpi.c
1110
gpi_process_imed_data_event(gchan,
drivers/dma/qcom/gpi.c
1155
static void gpi_mark_stale_events(struct gchan *gchan)
drivers/dma/qcom/gpi.c
1157
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1170
if (chid == gchan->chid)
drivers/dma/qcom/gpi.c
1181
static int gpi_reset_chan(struct gchan *gchan, enum gpi_cmd gpi_cmd)
drivers/dma/qcom/gpi.c
1183
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1184
struct gpi_ring *ch_ring = &gchan->ch_ring;
drivers/dma/qcom/gpi.c
1188
ret = gpi_send_cmd(gpii, gchan, gpi_cmd);
drivers/dma/qcom/gpi.c
1204
gpi_mark_stale_events(gchan);
drivers/dma/qcom/gpi.c
1207
spin_lock(&gchan->vc.lock);
drivers/dma/qcom/gpi.c
1208
vchan_get_all_descriptors(&gchan->vc, &list);
drivers/dma/qcom/gpi.c
1209
spin_unlock(&gchan->vc.lock);
drivers/dma/qcom/gpi.c
1211
vchan_dma_desc_free_list(&gchan->vc, &list);
drivers/dma/qcom/gpi.c
1216
static int gpi_start_chan(struct gchan *gchan)
drivers/dma/qcom/gpi.c
1218
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1221
ret = gpi_send_cmd(gpii, gchan, GPI_CH_CMD_START);
drivers/dma/qcom/gpi.c
1230
gchan->pm_state = ACTIVE_STATE;
drivers/dma/qcom/gpi.c
1236
static int gpi_stop_chan(struct gchan *gchan)
drivers/dma/qcom/gpi.c
1238
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1241
ret = gpi_send_cmd(gpii, gchan, GPI_CH_CMD_STOP);
drivers/dma/qcom/gpi.c
1252
static int gpi_alloc_chan(struct gchan *chan, bool send_alloc_cmd)
drivers/dma/qcom/gpi.c
1439
static void gpi_queue_xfer(struct gpii *gpii, struct gchan *gchan,
drivers/dma/qcom/gpi.c
1446
ret = gpi_ring_add_element(&gchan->ch_ring, (void **)&ch_tre);
drivers/dma/qcom/gpi.c
1460
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1461
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1471
schid = (gchan->protocol == QCOM_GPI_UART) ? gchan->chid : 0;
drivers/dma/qcom/gpi.c
1472
echid = (gchan->protocol == QCOM_GPI_UART) ? schid + 1 : MAX_CHANNELS_PER_GPII;
drivers/dma/qcom/gpi.c
1476
gchan = &gpii->gchan[i];
drivers/dma/qcom/gpi.c
1480
gchan->pm_state = PREPARE_TERMINATE;
drivers/dma/qcom/gpi.c
1484
ret = gpi_stop_chan(gchan);
drivers/dma/qcom/gpi.c
1489
gchan = &gpii->gchan[i];
drivers/dma/qcom/gpi.c
1491
ret = gpi_reset_chan(gchan, GPI_CH_CMD_RESET);
drivers/dma/qcom/gpi.c
1498
ret = gpi_alloc_chan(gchan, false);
drivers/dma/qcom/gpi.c
1507
gchan = &gpii->gchan[i];
drivers/dma/qcom/gpi.c
1509
ret = gpi_start_chan(gchan);
drivers/dma/qcom/gpi.c
1524
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1525
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1542
ret = gpi_stop_chan(&gpii->gchan[i]);
drivers/dma/qcom/gpi.c
1565
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1566
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1580
ret = gpi_send_cmd(gpii, &gpii->gchan[i], GPI_CH_CMD_START);
drivers/dma/qcom/gpi.c
1607
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1613
new_config = krealloc(gchan->config, config->peripheral_size, GFP_NOWAIT);
drivers/dma/qcom/gpi.c
1617
gchan->config = new_config;
drivers/dma/qcom/gpi.c
1618
memcpy(gchan->config, config->peripheral_config, config->peripheral_size);
drivers/dma/qcom/gpi.c
1623
static int gpi_create_i2c_tre(struct gchan *chan, struct gpi_desc *desc,
drivers/dma/qcom/gpi.c
1702
static int gpi_create_spi_tre(struct gchan *chan, struct gpi_desc *desc,
drivers/dma/qcom/gpi.c
1802
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1803
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1805
struct gpi_ring *ch_ring = &gchan->ch_ring;
drivers/dma/qcom/gpi.c
1823
set_config = *(u32 *)gchan->config;
drivers/dma/qcom/gpi.c
1844
if (gchan->protocol == QCOM_GPI_SPI) {
drivers/dma/qcom/gpi.c
1845
i = gpi_create_spi_tre(gchan, gpi_desc, sgl, direction);
drivers/dma/qcom/gpi.c
1846
} else if (gchan->protocol == QCOM_GPI_I2C) {
drivers/dma/qcom/gpi.c
1847
i = gpi_create_i2c_tre(gchan, gpi_desc, sgl, direction, flags);
drivers/dma/qcom/gpi.c
1849
dev_err(dev, "invalid peripheral: %d\n", gchan->protocol);
drivers/dma/qcom/gpi.c
1855
gpi_desc->gchan = gchan;
drivers/dma/qcom/gpi.c
1859
return vchan_tx_prep(&gchan->vc, &gpi_desc->vd, flags);
drivers/dma/qcom/gpi.c
1865
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1866
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1870
struct gpi_ring *ch_ring = &gchan->ch_ring;
drivers/dma/qcom/gpi.c
1877
spin_lock_irqsave(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1878
if (vchan_issue_pending(&gchan->vc))
drivers/dma/qcom/gpi.c
1879
vd = list_last_entry(&gchan->vc.desc_issued,
drivers/dma/qcom/gpi.c
1881
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
1892
gpi_queue_xfer(gpii, gchan, tre, &wp);
drivers/dma/qcom/gpi.c
1896
gpi_write_ch_db(gchan, &gchan->ch_ring, gpi_desc->db);
drivers/dma/qcom/gpi.c
1900
static int gpi_ch_init(struct gchan *gchan)
drivers/dma/qcom/gpi.c
1902
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1907
gchan->pm_state = CONFIG_STATE;
drivers/dma/qcom/gpi.c
1911
if (gpii->gchan[i].pm_state != CONFIG_STATE)
drivers/dma/qcom/gpi.c
1915
if (gpii->gchan[0].protocol != gpii->gchan[1].protocol) {
drivers/dma/qcom/gpi.c
1917
gpii->gchan[0].protocol, gpii->gchan[1].protocol);
drivers/dma/qcom/gpi.c
1948
ret = gpi_alloc_chan(&gpii->gchan[i], true);
drivers/dma/qcom/gpi.c
1957
ret = gpi_start_chan(&gpii->gchan[i]);
drivers/dma/qcom/gpi.c
1967
gpi_stop_chan(&gpii->gchan[i]);
drivers/dma/qcom/gpi.c
1968
gpi_send_cmd(gpii, gchan, GPI_CH_CMD_RESET);
drivers/dma/qcom/gpi.c
1973
gpi_reset_chan(gchan, GPI_CH_CMD_DE_ALLOC);
drivers/dma/qcom/gpi.c
1985
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
1986
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
1992
cur_state = gchan->pm_state;
drivers/dma/qcom/gpi.c
1996
gchan->pm_state = PREPARE_TERMINATE;
drivers/dma/qcom/gpi.c
2001
gpi_stop_chan(gchan);
drivers/dma/qcom/gpi.c
2003
ret = gpi_send_cmd(gpii, gchan, GPI_CH_CMD_RESET);
drivers/dma/qcom/gpi.c
2007
gpi_reset_chan(gchan, GPI_CH_CMD_DE_ALLOC);
drivers/dma/qcom/gpi.c
2011
gpi_free_ring(&gchan->ch_ring, gpii);
drivers/dma/qcom/gpi.c
2012
vchan_free_chan_resources(&gchan->vc);
drivers/dma/qcom/gpi.c
2013
kfree(gchan->config);
drivers/dma/qcom/gpi.c
2016
gchan->pm_state = DISABLE_STATE;
drivers/dma/qcom/gpi.c
2021
if (gpii->gchan[i].ch_ring.configured)
drivers/dma/qcom/gpi.c
2055
struct gchan *gchan = to_gchan(chan);
drivers/dma/qcom/gpi.c
2056
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
2062
ret = gpi_alloc_ring(&gchan->ch_ring, CHAN_TRES,
drivers/dma/qcom/gpi.c
2067
ret = gpi_ch_init(gchan);
drivers/dma/qcom/gpi.c
2080
struct gchan *tx_chan, *rx_chan;
drivers/dma/qcom/gpi.c
2088
tx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_TX_CHAN];
drivers/dma/qcom/gpi.c
2089
rx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_RX_CHAN];
drivers/dma/qcom/gpi.c
2102
tx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_TX_CHAN];
drivers/dma/qcom/gpi.c
2103
rx_chan = &gpi_dev->gpiis[gpii].gchan[GPI_RX_CHAN];
drivers/dma/qcom/gpi.c
2125
struct gchan *gchan;
drivers/dma/qcom/gpi.c
2148
gchan = &gpi_dev->gpiis[gpii].gchan[chid];
drivers/dma/qcom/gpi.c
2149
if (gchan->vc.chan.client_count) {
drivers/dma/qcom/gpi.c
2151
gpii, chid, gchan->seid);
drivers/dma/qcom/gpi.c
2155
gchan->seid = seid;
drivers/dma/qcom/gpi.c
2156
gchan->protocol = args->args[2];
drivers/dma/qcom/gpi.c
2158
return dma_get_slave_channel(&gchan->vc.chan);
drivers/dma/qcom/gpi.c
2232
struct gchan *gchan = &gpii->gchan[chan];
drivers/dma/qcom/gpi.c
2235
gchan->ch_cntxt_base_reg = gpi_dev->ee_base +
drivers/dma/qcom/gpi.c
2237
gchan->ch_cntxt_db_reg = gpi_dev->ee_base +
drivers/dma/qcom/gpi.c
2239
gchan->ch_cmd_reg = gpi_dev->ee_base + GPII_n_CH_CMD_OFFS(i);
drivers/dma/qcom/gpi.c
2242
vchan_init(&gchan->vc, &gpi_dev->dma_device);
drivers/dma/qcom/gpi.c
2243
gchan->vc.desc_free = gpi_desc_free;
drivers/dma/qcom/gpi.c
2244
gchan->chid = chan;
drivers/dma/qcom/gpi.c
2245
gchan->gpii = gpii;
drivers/dma/qcom/gpi.c
2246
gchan->dir = GPII_CHAN_DIR[chan];
drivers/dma/qcom/gpi.c
499
struct gchan gchan[MAX_CHANNELS_PER_GPII];
drivers/dma/qcom/gpi.c
527
struct gchan *gchan;
drivers/dma/qcom/gpi.c
541
static inline struct gchan *to_gchan(struct dma_chan *dma_chan)
drivers/dma/qcom/gpi.c
543
return container_of(dma_chan, struct gchan, vc.chan);
drivers/dma/qcom/gpi.c
671
static int gpi_send_cmd(struct gpii *gpii, struct gchan *gchan,
drivers/dma/qcom/gpi.c
682
chid = gchan->chid;
drivers/dma/qcom/gpi.c
691
cmd_reg = IS_CHAN_CMD(gpi_cmd) ? gchan->ch_cmd_reg : gpii->ev_cmd_reg;
drivers/dma/qcom/gpi.c
707
if (IS_CHAN_CMD(gpi_cmd) && gchan->ch_state == gpi_cmd_info[gpi_cmd].state)
drivers/dma/qcom/gpi.c
717
static inline void gpi_write_ch_db(struct gchan *gchan,
drivers/dma/qcom/gpi.c
720
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
724
gpi_write_reg(gpii, gchan->ch_cntxt_db_reg, p_wp);
drivers/dma/qcom/gpi.c
752
struct gchan *gchan;
drivers/dma/qcom/gpi.c
763
gchan = &gpii->gchan[chid];
drivers/dma/qcom/gpi.c
764
state = gpi_read_reg(gpii, gchan->ch_cntxt_base_reg +
drivers/dma/qcom/gpi.c
775
gchan->ch_state = state;
drivers/dma/qcom/gpi.c
782
if (gchan->ch_state != CH_STATE_STOP_IN_PROC)
drivers/dma/qcom/gpi.c
914
static void gpi_process_imed_data_event(struct gchan *gchan,
drivers/dma/qcom/gpi.c
917
struct gpii *gpii = gchan->gpii;
drivers/dma/qcom/gpi.c
918
struct gpi_ring *ch_ring = &gchan->ch_ring;
drivers/dma/qcom/gpi.c
929
if (gchan->pm_state != ACTIVE_STATE) {
drivers/dma/qcom/gpi.c
931
TO_GPI_PM_STR(gchan->pm_state));
drivers/dma/qcom/gpi.c
935
spin_lock_irqsave(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
936
vd = vchan_next_desc(&gchan->vc);
drivers/dma/qcom/gpi.c
941
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
956
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
988
spin_lock_irqsave(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
990
spin_unlock_irqrestore(&gchan->vc.lock, flags);
drivers/dma/qcom/gpi.c
996
static void gpi_process_xfer_compl_event(struct gchan *gchan,
drivers/dma/qcom/gpi.c
999
struct gpii *gpii = gchan->gpii;
tools/testing/selftests/drivers/net/hw/ncdevmem.c
557
struct ethtool_channels_get_req *gchan;
tools/testing/selftests/drivers/net/hw/ncdevmem.c
572
gchan = ethtool_channels_get_req_alloc();
tools/testing/selftests/drivers/net/hw/ncdevmem.c
573
if (!gchan) {
tools/testing/selftests/drivers/net/hw/ncdevmem.c
578
ethtool_channels_get_req_set_header_dev_index(gchan, ifindex);
tools/testing/selftests/drivers/net/hw/ncdevmem.c
579
chan = ethtool_channels_get(ys, gchan);
tools/testing/selftests/drivers/net/hw/ncdevmem.c
580
ethtool_channels_get_req_free(gchan);