RE: [PATCH v4 2/4] drivers: dma: sh: Add DMAC driver for RZ/G2L SoC

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vinod,

Thanks for the feedback.

> Subject: Re: [PATCH v4 2/4] drivers: dma: sh: Add DMAC driver for RZ/G2L
> SoC
> 
> On 19-07-21, 10:25, Biju Das wrote:
> 
> > +struct rz_dmac_chan {
> > +	struct virt_dma_chan vc;
> > +	void __iomem *ch_base;
> > +	void __iomem *ch_cmn_base;
> > +	unsigned int index;
> > +	int irq;
> > +	struct rz_dmac_desc *desc;
> > +	int descs_allocated;
> > +
> > +	enum dma_slave_buswidth src_word_size;
> > +	enum dma_slave_buswidth dst_word_size;
> > +	dma_addr_t src_per_address;
> > +	dma_addr_t dst_per_address;
> > +
> > +	u32 chcfg;
> > +	u32 chctrl;
> > +	int mid_rid;
> > +
> > +	struct list_head ld_free;
> > +	struct list_head ld_queue;
> > +	struct list_head ld_active;
> > +
> > +	struct {
> > +		struct rz_lmdesc *base;
> > +		struct rz_lmdesc *head;
> > +		struct rz_lmdesc *tail;
> > +		int valid;
> > +		dma_addr_t base_dma;
> > +	} lmdesc;
> 
> should this be not part of rz_dmac_desc than channel?

No. It is channel specific. A channel has 64 HW legacy descriptors(see rz_dmac_chan_probe function) and 16 rz_dmac_desc( see rz_dmac_chan_resources function)

> > +static int rz_dmac_config(struct dma_chan *chan,
> > +			  struct dma_slave_config *config) {
> > +	struct rz_dmac_chan *channel = to_rz_dmac_chan(chan);
> > +	u32 *ch_cfg;
> > +
> > +	channel->src_per_address = config->src_addr;
> > +	channel->src_word_size = config->src_addr_width;
> > +	channel->dst_per_address = config->dst_addr;
> > +	channel->dst_word_size = config->dst_addr_width;
> > +
> > +	if (config->peripheral_config) {
> > +		ch_cfg = config->peripheral_config;
> > +		channel->chcfg = *ch_cfg;
> > +	}
> 
> can you explain what this the ch_cfg here and what does it represent?

It is a 32 bit value represent channel config value which supplied by each client driver during slave config.
It contains information like transfer mode,src/destination data size, Ack mode, Level type, DMA request on rising edge or falling
Edge, request direction etc...

For eg:- The channel config for SSI tx is (0x11228).
An example usage can be found here [1]

[1] https://patchwork.kernel.org/project/linux-renesas-soc/patch/20210719134040.7964-8-biju.das.jz@xxxxxxxxxxxxxx/

Regards,
Biju


> 
> --
> ~Vinod




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux