From: Vinod Koul <vkoul@kernel.org> To: Amit Singh Tomar <amittomer25@gmail.com> Cc: andre.przywara@arm.com, afaerber@suse.de, manivannan.sadhasivam@linaro.org, dan.j.williams@intel.com, cristian.ciocaltea@gmail.com, dmaengine@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-actions@lists.infradead.org Subject: Re: [PATCH v4 02/10] dmaengine: Actions: Add support for S700 DMA engine Date: Wed, 24 Jun 2020 11:45:29 +0530 [thread overview] Message-ID: <20200624061529.GF2324254@vkoul-mobl> (raw) In-Reply-To: <1591697830-16311-3-git-send-email-amittomer25@gmail.com> Hi Amit, On 09-06-20, 15:47, Amit Singh Tomar wrote: > @@ -372,6 +383,7 @@ static inline int owl_dma_cfg_lli(struct owl_dma_vchan *vchan, > struct dma_slave_config *sconfig, > bool is_cyclic) > { > + struct owl_dma *od = to_owl_dma(vchan->vc.chan.device); > u32 mode, ctrlb; > > mode = OWL_DMA_MODE_PW(0); > @@ -427,14 +439,26 @@ static inline int owl_dma_cfg_lli(struct owl_dma_vchan *vchan, > lli->hw[OWL_DMADESC_DADDR] = dst; > lli->hw[OWL_DMADESC_SRC_STRIDE] = 0; > lli->hw[OWL_DMADESC_DST_STRIDE] = 0; > - /* > - * Word starts from offset 0xC is shared between frame length > - * (max frame length is 1MB) and frame count, where first 20 > - * bits are for frame length and rest of 12 bits are for frame > - * count. > - */ > - lli->hw[OWL_DMADESC_FLEN] = len | FCNT_VAL << 20; > - lli->hw[OWL_DMADESC_CTRLB] = ctrlb; > + > + if (od->devid == S700_DMA) { > + /* Max frame length is 1MB */ > + lli->hw[OWL_DMADESC_FLEN] = len; > + /* > + * On S700, word starts from offset 0x1C is shared between > + * frame count and ctrlb, where first 12 bits are for frame > + * count and rest of 20 bits are for ctrlb. > + */ > + lli->hw[OWL_DMADESC_CTRLB] = FCNT_VAL | ctrlb; > + } else { > + /* > + * On S900, word starts from offset 0xC is shared between > + * frame length (max frame length is 1MB) and frame count, > + * where first 20 bits are for frame length and rest of > + * 12 bits are for frame count. > + */ > + lli->hw[OWL_DMADESC_FLEN] = len | FCNT_VAL << 20; > + lli->hw[OWL_DMADESC_CTRLB] = ctrlb; Unfortunately this wont scale, we will keep adding new conditions for newer SoC's! So rather than this why not encode max frame length in driver_data rather than S900_DMA/S700_DMA.. In future one can add values for newer SoC and not code above logic again. > +static const struct of_device_id owl_dma_match[] = { > + { .compatible = "actions,s900-dma", .data = (void *)S900_DMA,}, > + { .compatible = "actions,s700-dma", .data = (void *)S700_DMA,}, Is the .compatible documented, Documentation patch should come before the driver use patch in a series > static int owl_dma_probe(struct platform_device *pdev) > { > struct device_node *np = pdev->dev.of_node; > struct owl_dma *od; > int ret, i, nr_channels, nr_requests; > + const struct of_device_id *of_id = > + of_match_device(owl_dma_match, &pdev->dev); You care about driver_data rather than of_id, so using of_device_get_match_data() would be better.. > od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL); > if (!od) > @@ -1083,6 +1116,8 @@ static int owl_dma_probe(struct platform_device *pdev) > dev_info(&pdev->dev, "dma-channels %d, dma-requests %d\n", > nr_channels, nr_requests); > > + od->devid = (enum owl_dma_id)(uintptr_t)of_id->data; Funny casts, I dont think you need uintptr_t! -- ~Vinod
WARNING: multiple messages have this Message-ID (diff)
From: Vinod Koul <vkoul@kernel.org> To: Amit Singh Tomar <amittomer25@gmail.com> Cc: andre.przywara@arm.com, linux-actions@lists.infradead.org, linux-kernel@vger.kernel.org, cristian.ciocaltea@gmail.com, manivannan.sadhasivam@linaro.org, dmaengine@vger.kernel.org, dan.j.williams@intel.com, afaerber@suse.de, linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v4 02/10] dmaengine: Actions: Add support for S700 DMA engine Date: Wed, 24 Jun 2020 11:45:29 +0530 [thread overview] Message-ID: <20200624061529.GF2324254@vkoul-mobl> (raw) In-Reply-To: <1591697830-16311-3-git-send-email-amittomer25@gmail.com> Hi Amit, On 09-06-20, 15:47, Amit Singh Tomar wrote: > @@ -372,6 +383,7 @@ static inline int owl_dma_cfg_lli(struct owl_dma_vchan *vchan, > struct dma_slave_config *sconfig, > bool is_cyclic) > { > + struct owl_dma *od = to_owl_dma(vchan->vc.chan.device); > u32 mode, ctrlb; > > mode = OWL_DMA_MODE_PW(0); > @@ -427,14 +439,26 @@ static inline int owl_dma_cfg_lli(struct owl_dma_vchan *vchan, > lli->hw[OWL_DMADESC_DADDR] = dst; > lli->hw[OWL_DMADESC_SRC_STRIDE] = 0; > lli->hw[OWL_DMADESC_DST_STRIDE] = 0; > - /* > - * Word starts from offset 0xC is shared between frame length > - * (max frame length is 1MB) and frame count, where first 20 > - * bits are for frame length and rest of 12 bits are for frame > - * count. > - */ > - lli->hw[OWL_DMADESC_FLEN] = len | FCNT_VAL << 20; > - lli->hw[OWL_DMADESC_CTRLB] = ctrlb; > + > + if (od->devid == S700_DMA) { > + /* Max frame length is 1MB */ > + lli->hw[OWL_DMADESC_FLEN] = len; > + /* > + * On S700, word starts from offset 0x1C is shared between > + * frame count and ctrlb, where first 12 bits are for frame > + * count and rest of 20 bits are for ctrlb. > + */ > + lli->hw[OWL_DMADESC_CTRLB] = FCNT_VAL | ctrlb; > + } else { > + /* > + * On S900, word starts from offset 0xC is shared between > + * frame length (max frame length is 1MB) and frame count, > + * where first 20 bits are for frame length and rest of > + * 12 bits are for frame count. > + */ > + lli->hw[OWL_DMADESC_FLEN] = len | FCNT_VAL << 20; > + lli->hw[OWL_DMADESC_CTRLB] = ctrlb; Unfortunately this wont scale, we will keep adding new conditions for newer SoC's! So rather than this why not encode max frame length in driver_data rather than S900_DMA/S700_DMA.. In future one can add values for newer SoC and not code above logic again. > +static const struct of_device_id owl_dma_match[] = { > + { .compatible = "actions,s900-dma", .data = (void *)S900_DMA,}, > + { .compatible = "actions,s700-dma", .data = (void *)S700_DMA,}, Is the .compatible documented, Documentation patch should come before the driver use patch in a series > static int owl_dma_probe(struct platform_device *pdev) > { > struct device_node *np = pdev->dev.of_node; > struct owl_dma *od; > int ret, i, nr_channels, nr_requests; > + const struct of_device_id *of_id = > + of_match_device(owl_dma_match, &pdev->dev); You care about driver_data rather than of_id, so using of_device_get_match_data() would be better.. > od = devm_kzalloc(&pdev->dev, sizeof(*od), GFP_KERNEL); > if (!od) > @@ -1083,6 +1116,8 @@ static int owl_dma_probe(struct platform_device *pdev) > dev_info(&pdev->dev, "dma-channels %d, dma-requests %d\n", > nr_channels, nr_requests); > > + od->devid = (enum owl_dma_id)(uintptr_t)of_id->data; Funny casts, I dont think you need uintptr_t! -- ~Vinod _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2020-06-24 6:15 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-09 10:17 [PATCH v4 00/10] Add MMC and DMA support for Actions S700 Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 01/10] dmaengine: Actions: get rid of bit fields from dma descriptor Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 02/10] dmaengine: Actions: Add support for S700 DMA engine Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-24 6:15 ` Vinod Koul [this message] 2020-06-24 6:15 ` Vinod Koul 2020-06-24 9:35 ` André Przywara 2020-06-24 9:35 ` André Przywara 2020-06-29 8:28 ` Amit Tomer 2020-06-29 8:28 ` Amit Tomer 2020-06-29 9:54 ` Vinod Koul 2020-06-29 9:54 ` Vinod Koul 2020-06-29 11:19 ` André Przywara 2020-06-29 11:19 ` André Przywara 2020-06-29 13:21 ` Vinod Koul 2020-06-29 13:21 ` Vinod Koul 2020-06-29 8:19 ` Amit Tomer 2020-06-29 8:19 ` Amit Tomer 2020-06-29 9:52 ` Vinod Koul 2020-06-29 9:52 ` Vinod Koul 2020-06-30 9:47 ` Amit Tomer 2020-06-30 9:47 ` Amit Tomer 2020-06-30 14:24 ` Vinod Koul 2020-06-30 14:24 ` Vinod Koul 2020-06-30 18:14 ` Amit Tomer 2020-06-30 18:14 ` Amit Tomer 2020-06-09 10:17 ` [PATCH v4 03/10] clk: actions: Add MMC clock-register reset bits Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 11:29 ` kernel test robot 2020-06-09 11:29 ` kernel test robot 2020-06-09 11:29 ` kernel test robot 2020-06-09 10:17 ` [PATCH v4 04/10] arm64: dts: actions: limit address range for pinctrl node Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 05/10] dt-bindings: dmaengine: convert Actions Semi Owl SoCs bindings to yaml Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-17 21:16 ` Rob Herring 2020-06-17 21:16 ` Rob Herring 2020-06-09 10:17 ` [PATCH v4 06/10] arm64: dts: actions: Add DMA Controller for S700 Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 07/10] dt-bindings: reset: s700: Add binding constants for mmc Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 08/10] dt-bindings: mmc: owl: add compatible string actions,s700-mmc Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 08/10] dt-bindings: mmc: owl: add compatible string actions, s700-mmc Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 09/10] arm64: dts: actions: Add MMC controller support for S700 Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar 2020-06-09 10:17 ` [PATCH v4 10/10] arm64: dts: actions: Add uSD support for Cubieboard7 Amit Singh Tomar 2020-06-09 10:17 ` Amit Singh Tomar
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=20200624061529.GF2324254@vkoul-mobl \ --to=vkoul@kernel.org \ --cc=afaerber@suse.de \ --cc=amittomer25@gmail.com \ --cc=andre.przywara@arm.com \ --cc=cristian.ciocaltea@gmail.com \ --cc=dan.j.williams@intel.com \ --cc=dmaengine@vger.kernel.org \ --cc=linux-actions@lists.infradead.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=manivannan.sadhasivam@linaro.org \ /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.