* [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).