From: Shawn Guo <shawn.guo@linaro.org> To: linux-kernel@vger.kernel.org Cc: vinod.koul@intel.com, dan.j.williams@intel.com, cjb@laptop.org, linux-mmc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, patches@linaro.org, Shawn Guo <shawn.guo@linaro.org> Subject: [PATCH v2 1/3] dmaengine: add new dma API for max_segment_number Date: Mon, 6 Jun 2011 15:30:12 +0800 [thread overview] Message-ID: <1307345414-26872-1-git-send-email-shawn.guo@linaro.org> (raw) Like dma_set(get)_max_seg_size for max_segment_size, the patch adds max_segment_number into device_dma_parameters and creates the corresponding dmaengine API dma_set(get)_max_seg_number for it. Here is the user story that tells the need of the new api. The mxs-mmc is the mmc host controller for Freescale MXS architecture. There are a pair of mmc host specific parameters max_seg_size and max_segs that mxs-mmc host driver needs to tell mmc core, so that mmc core can know how big each data segment could be and how many segments could be handled one time in a scatter list by host driver. The mxs-mmc driver is one user of dmaengine mxs-dma, and it will call mxs-dma to transfer data in scatter list. That is to say mxs-mmc has no idea of what max_seg_size and max_segs should be, because they are all mxs-dma capability parameters, and mxs-mmc needs to query them from mxs-dma. Right now, there is well defined dma api (dma_get_max_seg_size) for mmc to query max_seg_size from dma driver, but the one for max_segs is missing. That's why mxs-mmc driver has to hard-code it. The mxs-mmc is just one example to demonstrate the need of the new api, and there are other mmc host drivers (mxcmmc on imx-dma is another example) and possibly even other dmaengine users need this new api to know the maximum segments that dma driver can handle per dma call. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- Changes since v1: * Update commit message to explain why the new api is needed include/linux/device.h | 1 + include/linux/dma-mapping.h | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/include/linux/device.h b/include/linux/device.h index c66111a..44cb2528 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -487,6 +487,7 @@ struct device_dma_parameters { * sg limitations. */ unsigned int max_segment_size; + unsigned int max_segment_number; unsigned long segment_boundary_mask; }; diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index ba8319a..fd314f4 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -131,6 +131,21 @@ static inline unsigned int dma_set_max_seg_size(struct device *dev, return -EIO; } +static inline unsigned int dma_get_max_seg_number(struct device *dev) +{ + return dev->dma_parms ? dev->dma_parms->max_segment_number : 1; +} + +static inline unsigned int dma_set_max_seg_number(struct device *dev, + unsigned int number) +{ + if (dev->dma_parms) { + dev->dma_parms->max_segment_number = number; + return 0; + } else + return -EIO; +} + static inline unsigned long dma_get_seg_boundary(struct device *dev) { return dev->dma_parms ? -- 1.7.4.1
WARNING: multiple messages have this Message-ID (diff)
From: shawn.guo@linaro.org (Shawn Guo) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v2 1/3] dmaengine: add new dma API for max_segment_number Date: Mon, 6 Jun 2011 15:30:12 +0800 [thread overview] Message-ID: <1307345414-26872-1-git-send-email-shawn.guo@linaro.org> (raw) Like dma_set(get)_max_seg_size for max_segment_size, the patch adds max_segment_number into device_dma_parameters and creates the corresponding dmaengine API dma_set(get)_max_seg_number for it. Here is the user story that tells the need of the new api. The mxs-mmc is the mmc host controller for Freescale MXS architecture. There are a pair of mmc host specific parameters max_seg_size and max_segs that mxs-mmc host driver needs to tell mmc core, so that mmc core can know how big each data segment could be and how many segments could be handled one time in a scatter list by host driver. The mxs-mmc driver is one user of dmaengine mxs-dma, and it will call mxs-dma to transfer data in scatter list. That is to say mxs-mmc has no idea of what max_seg_size and max_segs should be, because they are all mxs-dma capability parameters, and mxs-mmc needs to query them from mxs-dma. Right now, there is well defined dma api (dma_get_max_seg_size) for mmc to query max_seg_size from dma driver, but the one for max_segs is missing. That's why mxs-mmc driver has to hard-code it. The mxs-mmc is just one example to demonstrate the need of the new api, and there are other mmc host drivers (mxcmmc on imx-dma is another example) and possibly even other dmaengine users need this new api to know the maximum segments that dma driver can handle per dma call. Signed-off-by: Shawn Guo <shawn.guo@linaro.org> --- Changes since v1: * Update commit message to explain why the new api is needed include/linux/device.h | 1 + include/linux/dma-mapping.h | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/include/linux/device.h b/include/linux/device.h index c66111a..44cb2528 100644 --- a/include/linux/device.h +++ b/include/linux/device.h @@ -487,6 +487,7 @@ struct device_dma_parameters { * sg limitations. */ unsigned int max_segment_size; + unsigned int max_segment_number; unsigned long segment_boundary_mask; }; diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index ba8319a..fd314f4 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -131,6 +131,21 @@ static inline unsigned int dma_set_max_seg_size(struct device *dev, return -EIO; } +static inline unsigned int dma_get_max_seg_number(struct device *dev) +{ + return dev->dma_parms ? dev->dma_parms->max_segment_number : 1; +} + +static inline unsigned int dma_set_max_seg_number(struct device *dev, + unsigned int number) +{ + if (dev->dma_parms) { + dev->dma_parms->max_segment_number = number; + return 0; + } else + return -EIO; +} + static inline unsigned long dma_get_seg_boundary(struct device *dev) { return dev->dma_parms ? -- 1.7.4.1
next reply other threads:[~2011-06-06 7:21 UTC|newest] Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top 2011-06-06 7:30 Shawn Guo [this message] 2011-06-06 7:30 ` [PATCH v2 1/3] dmaengine: add new dma API for max_segment_number Shawn Guo 2011-06-06 7:30 ` [PATCH v2 2/3] dmaengine: mxs-dma: set up max_segment_number Shawn Guo 2011-06-06 7:30 ` Shawn Guo 2011-06-06 7:30 ` [PATCH v2 3/3] mmc: mxs-mmc: call dmaengine API to set mmc->max_segs Shawn Guo 2011-06-06 7:30 ` Shawn Guo 2011-06-06 8:06 ` [PATCH v2 1/3] dmaengine: add new dma API for max_segment_number FUJITA Tomonori 2011-06-06 8:06 ` FUJITA Tomonori 2011-06-06 9:14 ` Russell King - ARM Linux 2011-06-06 9:14 ` Russell King - ARM Linux 2011-06-06 9:41 ` FUJITA Tomonori 2011-06-06 9:41 ` FUJITA Tomonori 2011-06-06 9:47 ` Russell King - ARM Linux 2011-06-06 9:47 ` Russell King - ARM Linux 2011-06-06 10:12 ` FUJITA Tomonori 2011-06-06 10:12 ` FUJITA Tomonori 2011-06-06 10:15 ` Russell King - ARM Linux 2011-06-06 10:15 ` Russell King - ARM Linux 2011-06-06 18:48 ` Dan Williams 2011-06-06 18:48 ` Dan Williams 2011-06-08 5:23 ` FUJITA Tomonori 2011-06-08 5:23 ` FUJITA Tomonori 2011-06-08 6:56 ` Dan Williams 2011-06-08 6:56 ` Dan Williams 2011-06-08 7:10 ` FUJITA Tomonori 2011-06-08 7:10 ` FUJITA Tomonori 2011-06-08 20:05 ` Dan Williams 2011-06-08 20:05 ` Dan Williams 2011-06-08 20:05 ` Dan Williams 2011-06-08 20:41 ` Russell King - ARM Linux 2011-06-08 20:41 ` Russell King - ARM Linux 2011-06-08 21:52 ` Dan Williams 2011-06-08 21:52 ` Dan Williams 2011-06-09 0:07 ` FUJITA Tomonori 2011-06-09 0:07 ` FUJITA Tomonori 2011-06-07 22:35 ` Dan Williams 2011-06-07 22:35 ` Dan Williams 2011-06-12 15:28 ` Shawn Guo 2011-06-12 15:28 ` Shawn Guo 2011-06-12 15:28 ` Shawn Guo 2011-06-15 12:08 ` [PATCH v3] " Shawn Guo 2011-06-15 12:08 ` Shawn Guo 2011-06-15 12:08 ` Shawn Guo 2011-06-15 16:25 ` FUJITA Tomonori 2011-06-15 16:25 ` FUJITA Tomonori 2011-06-16 9:54 ` Per Forlin 2011-06-16 9:54 ` Per Forlin 2011-06-16 9:54 ` Per Forlin 2011-06-16 12:30 ` [PATCH v3 RESEND] dma-mapping: add new " Shawn Guo 2011-06-16 12:30 ` Shawn Guo 2011-06-17 12:40 ` Matthew Wilcox 2011-06-17 12:40 ` Matthew Wilcox 2011-06-17 18:09 ` Per Forlin 2011-06-17 18:09 ` Per Forlin 2011-06-21 17:44 ` FUJITA Tomonori 2011-06-21 17:44 ` FUJITA Tomonori
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1307345414-26872-1-git-send-email-shawn.guo@linaro.org \ --to=shawn.guo@linaro.org \ --cc=cjb@laptop.org \ --cc=dan.j.williams@intel.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=patches@linaro.org \ --cc=vinod.koul@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.