Lines Matching +full:0 +full:x10100
31 #define RING_WRITE_SLOT GENMASK(1, 0)
37 #define STATUS_DESC_DONE BIT(0)
42 #define REG_TX_START 0x0000
43 #define REG_TX_STOP 0x0004
44 #define REG_RX_START 0x0008
45 #define REG_RX_STOP 0x000c
46 #define REG_IMPRINT 0x0090
47 #define REG_TX_SRAM_SIZE 0x0094
48 #define REG_RX_SRAM_SIZE 0x0098
50 #define REG_CHAN_CTL(ch) (0x8000 + (ch) * 0x200)
51 #define REG_CHAN_CTL_RST_RINGS BIT(0)
53 #define REG_DESC_RING(ch) (0x8070 + (ch) * 0x200)
54 #define REG_REPORT_RING(ch) (0x8074 + (ch) * 0x200)
56 #define REG_RESIDUE(ch) (0x8064 + (ch) * 0x200)
58 #define REG_BUS_WIDTH(ch) (0x8040 + (ch) * 0x200)
60 #define BUS_WIDTH_WORD_SIZE GENMASK(3, 0)
62 #define BUS_WIDTH_8BIT 0x00
63 #define BUS_WIDTH_16BIT 0x01
64 #define BUS_WIDTH_32BIT 0x02
65 #define BUS_WIDTH_FRAME_2_WORDS 0x10
66 #define BUS_WIDTH_FRAME_4_WORDS 0x20
68 #define REG_CHAN_SRAM_CARVEOUT(ch) (0x8050 + (ch) * 0x200)
70 #define CHAN_SRAM_CARVEOUT_BASE GENMASK(15, 0)
72 #define REG_CHAN_FIFOCTL(ch) (0x8054 + (ch) * 0x200)
74 #define CHAN_FIFOCTL_THRESHOLD GENMASK(15, 0)
76 #define REG_DESC_WRITE(ch) (0x10000 + ((ch) / 2) * 0x4 + ((ch) & 1) * 0x4000)
77 #define REG_REPORT_READ(ch) (0x10100 + ((ch) / 2) * 0x4 + ((ch) & 1) * 0x4000)
79 #define REG_TX_INTSTATE(idx) (0x0030 + (idx) * 4)
80 #define REG_RX_INTSTATE(idx) (0x0040 + (idx) * 4)
81 #define REG_GLOBAL_INTSTATE(idx) (0x0050 + (idx) * 4)
82 #define REG_CHAN_INTSTATUS(ch, idx) (0x8010 + (ch) * 0x200 + (idx) * 4)
83 #define REG_CHAN_INTMASK(ch, idx) (0x8020 + (ch) * 0x200 + (idx) * 4)
155 int i, ret = 0, nblocks; in admac_alloc_sram_carveout()
167 for (i = 0; i < nblocks; i++) in admac_alloc_sram_carveout()
249 return 0; in admac_desc_free()
274 adtx->submitted_pos = 0; in admac_prep_dma_cyclic()
275 adtx->reclaimed_pos = 0; in admac_prep_dma_cyclic()
297 dev_dbg(ad->dev, "ch%d descriptor: addr=0x%pad len=0x%zx flags=0x%lx\n", in admac_cyclic_write_one_desc()
318 for (i = 0; i < 4; i++) { in admac_cyclic_write_desc()
333 WARN_ON((ringval & (RING_FULL | RING_EMPTY)) == 0); in admac_ring_noccupied_slots()
338 return 0; in admac_ring_noccupied_slots()
397 residue = 0; in admac_tx_status()
458 writel_relaxed(0, ad->base + REG_CHAN_CTL(adchan->no)); in admac_reset_rings()
467 writel_relaxed(0, ad->base + REG_CHAN_CTL(ch)); in admac_start_current_tx()
487 adchan->nperiod_acks = 0; in admac_issue_pending()
499 return 0; in admac_pause()
508 return 0; in admac_resume()
532 return 0; in admac_terminate_all()
563 if (ret < 0) in admac_alloc_chan_resources()
568 return 0; in admac_alloc_chan_resources()
590 index = dma_spec->args[0]; in admac_dma_of_xlate()
604 for (count = 0; count < 4; count++) { in admac_drain_reports()
615 dev_dbg(ad->dev, "ch%d report: countval=0x%llx unk1=0x%x flags=0x%x\n", in admac_drain_reports()
641 STATUS_ERR, 0); in admac_handle_status_err()
694 for (i = 0; i < ad->nchannels; i += 2) { in admac_interrupt()
709 writel_relaxed(~(u32) 0, ad->base + REG_GLOBAL_INTSTATE(ad->irq_index)); in admac_interrupt()
726 adchan->nperiod_acks = 0; in admac_chan_tasklet()
733 tx_result.residue = 0; in admac_chan_tasklet()
746 int wordsize = 0; in admac_device_config()
775 case 0 ... 1: in admac_device_config()
796 writel_relaxed(FIELD_PREP(CHAN_FIFOCTL_LIMIT, 0x30 * wordsize) in admac_device_config()
797 | FIELD_PREP(CHAN_FIFOCTL_THRESHOLD, 0x18 * wordsize), in admac_device_config()
800 return 0; in admac_device_config()
830 for (i = 0; i < IRQ_NOUTPUTS; i++) { in admac_probe()
832 if (irq >= 0) { in admac_probe()
838 if (irq < 0) in admac_probe()
842 ad->base = devm_platform_ioremap_resource(pdev, 0); in admac_probe()
878 for (i = 0; i < nchannels; i++) { in admac_probe()
897 err = request_irq(irq, admac_interrupt, 0, dev_name(&pdev->dev), ad); in admac_probe()
919 return 0; in admac_probe()