linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] mmc: CQHCI: solve DMA boundary limitation of CQHCI driver
@ 2022-11-16  2:00 Jyan Chou
  2022-11-16  6:43 ` Adrian Hunter
  0 siblings, 1 reply; 2+ messages in thread
From: Jyan Chou @ 2022-11-16  2:00 UTC (permalink / raw)
  To: adrian.hunter, riteshh, asutoshd
  Cc: linux-mmc, james.tai, cy.huang, Jyan Chou

Because CQHCI has its own DMA descriptors, when using DMA,
if the DMA addr or buffer size has limitaion, we need to add an
option to set up tran_desc.

Signed-off-by: Jyan Chou <jyanchou@realtek.com>
---
 drivers/mmc/host/cqhci-core.c | 5 +++++
 drivers/mmc/host/cqhci.h      | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
index b3d7d6d8d654..4d6fb228a21e 100644
--- a/drivers/mmc/host/cqhci-core.c
+++ b/drivers/mmc/host/cqhci-core.c
@@ -516,6 +516,11 @@ static int cqhci_prep_tran_desc(struct mmc_request *mrq,
 
 	desc = get_trans_desc(cq_host, tag);
 
+	if (cq_host->ops->setup_tran_desc) {
+		cq_host->ops->setup_tran_desc(data, cq_host, desc, sg_count);
+		return 0;
+	}
+
 	for_each_sg(data->sg, sg, sg_count, i) {
 		addr = sg_dma_address(sg);
 		len = sg_dma_len(sg);
diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
index ba9387ed90eb..2e47461096e8 100644
--- a/drivers/mmc/host/cqhci.h
+++ b/drivers/mmc/host/cqhci.h
@@ -290,6 +290,8 @@ struct cqhci_host_ops {
 	int (*program_key)(struct cqhci_host *cq_host,
 			   const union cqhci_crypto_cfg_entry *cfg, int slot);
 #endif
+	void (*setup_tran_desc)(struct mmc_data *data,
+		struct cqhci_host *cq_host, u8 *desc, int sg_count);
 };
 
 static inline void cqhci_writel(struct cqhci_host *host, u32 val, int reg)
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] mmc: CQHCI: solve DMA boundary limitation of CQHCI driver
  2022-11-16  2:00 [PATCH] mmc: CQHCI: solve DMA boundary limitation of CQHCI driver Jyan Chou
@ 2022-11-16  6:43 ` Adrian Hunter
  0 siblings, 0 replies; 2+ messages in thread
From: Adrian Hunter @ 2022-11-16  6:43 UTC (permalink / raw)
  To: Jyan Chou, riteshh, asutoshd; +Cc: linux-mmc, james.tai, cy.huang

On 16/11/22 04:00, Jyan Chou wrote:
> Because CQHCI has its own DMA descriptors, when using DMA,
> if the DMA addr or buffer size has limitaion, we need to add an
> option to set up tran_desc.

Thanks for the patch, however we always require that features must
be used to be included in the kernel i.e. the patch with driver
changes that implements the ->setup_tran_desc() callback must
also be submitted.

> 
> Signed-off-by: Jyan Chou <jyanchou@realtek.com>
> ---
>  drivers/mmc/host/cqhci-core.c | 5 +++++
>  drivers/mmc/host/cqhci.h      | 2 ++
>  2 files changed, 7 insertions(+)
> 
> diff --git a/drivers/mmc/host/cqhci-core.c b/drivers/mmc/host/cqhci-core.c
> index b3d7d6d8d654..4d6fb228a21e 100644
> --- a/drivers/mmc/host/cqhci-core.c
> +++ b/drivers/mmc/host/cqhci-core.c
> @@ -516,6 +516,11 @@ static int cqhci_prep_tran_desc(struct mmc_request *mrq,
>  
>  	desc = get_trans_desc(cq_host, tag);
>  
> +	if (cq_host->ops->setup_tran_desc) {
> +		cq_host->ops->setup_tran_desc(data, cq_host, desc, sg_count);
> +		return 0;
> +	}
> +
>  	for_each_sg(data->sg, sg, sg_count, i) {
>  		addr = sg_dma_address(sg);
>  		len = sg_dma_len(sg);
> diff --git a/drivers/mmc/host/cqhci.h b/drivers/mmc/host/cqhci.h
> index ba9387ed90eb..2e47461096e8 100644
> --- a/drivers/mmc/host/cqhci.h
> +++ b/drivers/mmc/host/cqhci.h
> @@ -290,6 +290,8 @@ struct cqhci_host_ops {
>  	int (*program_key)(struct cqhci_host *cq_host,
>  			   const union cqhci_crypto_cfg_entry *cfg, int slot);
>  #endif
> +	void (*setup_tran_desc)(struct mmc_data *data,
> +		struct cqhci_host *cq_host, u8 *desc, int sg_count);
>  };
>  
>  static inline void cqhci_writel(struct cqhci_host *host, u32 val, int reg)


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-11-16  6:48 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-11-16  2:00 [PATCH] mmc: CQHCI: solve DMA boundary limitation of CQHCI driver Jyan Chou
2022-11-16  6:43 ` Adrian Hunter

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).