Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1210976
| Path | csiph.com!eternal-september.org!feeder.eternal-september.org!weretis.net!feeder1.news.weretis.net!newsfeed.CARNet.hr!news.spin.it!bofh.it!news.nic.it!robomod |
|---|---|
| From | Shawn Lin <shawn.lin@rock-chips.com> |
| Newsgroups | linux.kernel |
| Subject | Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support |
| Date | Fri, 21 Aug 2015 09:50:02 +0200 |
| Message-ID | <pZPfk-5Az-23@gated-at.bofh.it> (permalink) |
| References | <pZtHQ-8aH-11@gated-at.bofh.it> <pZtHQ-8aH-17@gated-at.bofh.it> <pZNZV-3SZ-43@gated-at.bofh.it> <pZO9C-44i-55@gated-at.bofh.it> <pZO9C-44i-59@gated-at.bofh.it> <pZOVY-5dT-13@gated-at.bofh.it> <pZP5E-5p6-27@gated-at.bofh.it> |
| X-Original-To | Jaehoon Chung <jh80.chung@samsung.com>, ulf.hansson@linaro.org |
| X-263anti-Spam | KSV:0; |
| X-Mail-Delivery | 1 |
| X-Abs-Checked | 4 |
| X-Rl-Sender | shawn.lin@rock-chips.com |
| X-Fst-To | jun.nie@linaro.org |
| X-Sender-IP | 58.22.7.114 |
| X-Login-Name | shawn.lin@rock-chips.com |
| X-Unique-Tag | <e56a2fc8057f0f63bafe3501038351a7> |
| X-Sender | lintao@rock-chips.com |
| User-Agent | Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 |
| MIME-Version | 1.0 |
| Content-Type | text/plain; charset=utf-8; format=flowed |
| Content-Transfer-Encoding | 8bit |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 216 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | shawn.lin@rock-chips.com, linux-mips@linux-mips.org, Krzysztof Kozlowski <k.kozlowski@samsung.com>, heiko@sntech.de, linux-kernel@vger.kernel.org, linux-samsung-soc@vger.kernel.org, Russell King <linux@arm.linux.org.uk>, Alexey Brodkin <abrodkin@synopsys.com>, Wei Xu <xuwei5@hisilicon.com>, linux-rockchip@lists.infradead.org, Kukjin Kim <kgene@kernel.org>, CPGS <cpgs@samsung.com>, Zhangfei Gao <zhangfei.gao@linaro.org>, Joachim Eastwood <manabian@gmail.com>, devicetree@vger.kernel.org, Arnd Bergmann <arnd@arndb.de>, Vineet.Gupta1@synopsys.com, Govindraj Raja <govindraj.raja@imgtec.com>, linux-arm-kernel@lists.infradead.org, linux-mmc@vger.kernel.org, dianders@chromium.org, Ralf Baechle <ralf@linux-mips.org>, Jun Nie <jun.nie@linaro.org> |
| X-Original-Date | Fri, 21 Aug 2015 15:48:33 +0800 |
| X-Original-Message-ID | <55D6D7D1.90105@rock-chips.com> |
| X-Original-References | <1440060204-26203-1-git-send-email-shawn.lin@rock-chips.com> <1440060233-26244-1-git-send-email-shawn.lin@rock-chips.com> <55D6C4D4.8010005@samsung.com> <55D6C57D.4070402@rock-chips.com> <55D6C6B6.3060706@samsung.com> <55D6D2EF.7010501@rock-chips.com> <55D6D581.3050509@samsung.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1210976 |
Show key headers only | View raw
On 2015/8/21 15:38, Jaehoon Chung wrote:
> On 08/21/2015 04:27 PM, Shawn Lin wrote:
>> On 2015/8/21 14:35, Jaehoon Chung wrote:
>>> On 08/21/2015 03:30 PM, Shawn Lin wrote:
>>>> On 2015/8/21 14:27, Jaehoon Chung wrote:
>>>>> Hi, Shawn.
>>>>>
>>>>> Is this based on Ulf's repository?
>>>>
>>>>
>>>> no, it's based on "https://github.com/jh80chung/dw-mmc.git tags/dw-mmc-for-ulf-v4.2" :)
>>>
>>> Oh..I will rebase to Ulf's next branch on this weekend.
>>> Then could you rebase this patch? And i added more comments at below.. :)
>>>
>>
>> Okay, I will rebase to Ulf's next.
>>
>>> Best Regards,
>>> Jaehoon Chung
>>>
>>>>
>>
>> [...]
>>
>>>>>> index ec6dbcd..7e1d13b 100644
>>>>>> --- a/drivers/mmc/host/dw_mmc-pltfm.c
>>>>>> +++ b/drivers/mmc/host/dw_mmc-pltfm.c
>>>>>> @@ -59,6 +59,8 @@ int dw_mci_pltfm_register(struct platform_device *pdev,
>>>>>> host->pdata = pdev->dev.platform_data;
>>>>>>
>>>>>> regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
>>>>>> + /* Get registers' physical base address */
>>>>>> + host->phy_regs = (void *)(regs->start);
>>>>>> host->regs = devm_ioremap_resource(&pdev->dev, regs);
>>>>>> if (IS_ERR(host->regs))
>>>>>> return PTR_ERR(host->regs);
>>>>>
>>>>> Is this board specific code? If so, separate the patch.
>>
>> It's might not board specific code.
>> dmaengine need dw_mmc's *physical* fifo address for data transfer, so I get controller physical address here in order to calculate physical fifo address.
>>
>> regs is from dt-bindings, for instance:
>> dwmmc0@12200000 {
>> compatible = "snps,dw-mshc";
>> clocks = <&clock 351>, <&clock 132>;
>> clock-names = "biu", "ciu";
>> reg = <0x12200000 0x1000>;
>> interrupts = <0 75 0>;
>> #address-cells = <1>;
>> #size-cells = <0>;
>> };
>>
>> so, host->phy_regs will be 0x12200000 .
>>
>> [...]
>>
>>>>>> +static void dw_mci_dmac_complete_dma(void *arg)
>>>>>> {
>>>>>> + struct dw_mci *host = arg;
>>>>>> struct mmc_data *data = host->data;
>>>>>>
>>>>>> dev_vdbg(host->dev, "DMA complete\n");
>>>>>>
>>>>>> + if (host->use_dma == TRANS_MODE_EDMAC)
>>>>>> + if (data && (data->flags & MMC_DATA_READ))
>>>>>
>>>>> Combine one condition.
>>
>> okay.
>>
>> [...]
>>
>>>>>> + u32 fifo_offset = host->fifo_reg - host->regs;
>>>>>> + int ret = 0;
>>>>>> +
>>>>>> + /* Set external dma config: burst size, burst width */
>>>>>> + cfg.dst_addr = (dma_addr_t)(host->phy_regs + fifo_offset);
>>>>>
>>>>> host->phy_regs is not assigned?
>>
>> we got it at dw_mci_pltfm_register. See comments above. :)
>>
>> [...]
>>
>>>>>> mmc->max_blk_count = mmc->max_req_size / 512;
>>>>>> + } else if (host->use_dma == TRANS_MODE_EDMAC) {
>>>>>> + mmc->max_segs = 64;
>>>>>> + mmc->max_blk_size = 65536;
>>>>>> + mmc->max_blk_count = 65535;
>>>>>> + mmc->max_req_size =
>>>>>> + mmc->max_blk_size * mmc->max_blk_count;
>>>>>> + mmc->max_seg_size = mmc->max_req_size;
>>>>>
>>>>> Fix the indention
>>
>> Hmm..I check it attentively but can't find the indention . Might it's because you apply it against Ulf's repo?
>>
>>>>>
>>
>> [...]
>>
>>>>>>
>>>>>> - /* Alloc memory for sg translation */
>>>>>> - host->sg_cpu = dmam_alloc_coherent(host->dev, PAGE_SIZE,
>>>>>> - &host->sg_dma, GFP_KERNEL);
>>>>>> - if (!host->sg_cpu) {
>>>>>> - dev_err(host->dev, "%s: could not alloc DMA memory\n",
>>>>>> - __func__);
>>>>>> + /* Check tansfer mode */
>>>>>> + trans_mode = SDMMC_GET_TRANS_MODE(mci_readl(host, HCON));
>>>>>> + if (trans_mode == 0) {
>>>>>> + trans_mode = TRANS_MODE_IDMAC;
>>>>>> + } else if (trans_mode == 1 || trans_mode == 2) {
>>>>>> + trans_mode = TRANS_MODE_EDMAC;
>>>>>> + } else {
>>>>>> + trans_mode = TRANS_MODE_PIO;
>>>>>
>>>>> what are trans_mode "0, 1, 2"?
>>>>> (00 - none) is NO-DMA interface, isn't? is it IDMAC mode?
>>>>>
>>
>> No, I guess the databook's ambiguous description confuse everybody.
>>
>> I got double comfirm from my ASCI team as well as Synoposys
>> 2b'00: NO-DMA interface --> It support IDMAC actually
>> 2b'01 & 2b'02: DW_DMA & GENERIC_DMA --> Support 2 types of external dma.
>> 2b'02: NON-DW-DMA --> only support PIO
>
> Then Could you add the comment about this?
> Use definition instead of "0, 1, 2". Developer don't know meaning that is 0, 1, 2.
>
Okay. :)))
> Best Regards,
> Jaehoon Chung
>
>>
>> refer to the description below:
>> Parameter Name: DMA_INTERFACE
>> Legal Values: 0-3
>> Default Value: 0
>> Description:
>> 0- No DMA Interface
>> 1- DesignWare DMA Interface
>> 2- Generic DMA Interface
>> 3- Non DW DMA Interface
>> In DesignWare DMA mode, request/acknowledge protocol meets DW_ahb_dmac
>> controller protocol. In this mode, host data bus is also used for DMA transfers.Generic DMA-type interface has simpler request/acknowledge handshake and has dedicated read/write data bus for DMA transfers. Non DW DMAC interface uses dw_dma_single interface in addition to the existing interface and uses host data bus for DMA transfers. This is configurable only if INTERNAL_DMAC=0.
>>
>>>>>> goto no_dma;
>>>>>> }
>>>
>>>>>> + dev_info(host->dev, "Using external DMA controller.\n");
>>>>>> + }
>>>>>>
>>>>>> if (!host->dma_ops)
>>>>>> goto no_dma;
>>>>>> @@ -2562,12 +2720,12 @@ static void dw_mci_init_dma(struct dw_mci *host)
>>>>>> goto no_dma;
>>>>>> }
>>>>>>
>>>>>> - host->use_dma = 1;
>>>>>> + host->use_dma = trans_mode;
>>>>>
>>>>> Also confuse, if trans_mode is assigned host->use_dma, can mode value be directly assigned to host->use_dma?
>>>>>
>>
>> Good idea, I will do it. :)
>>
>>>>> trans_mode = TRAMS_MODE_PIO;
>>>>> host->use_dma = trans_mode;
>>>>>
>>
>> [...]
>>
>>>>>>
>>>>>> @@ -2890,7 +3047,7 @@ int dw_mci_probe(struct dw_mci *host)
>>>>>> * Get the host data width - this assumes that HCON has been set with
>>>>>> * the correct values.
>>>>>> */
>>>>>> - i = (mci_readl(host, HCON) >> 7) & 0x7;
>>>>>> + i = SDMMC_GET_HDATA_WIDTH(mci_readl(host, HCON));
>>>>>
>>>>> This is not related with supporting external dma interface.
>>>>> Separate this.
>>>>>
>>
>> Okay, It will be split into another one.
>>
>>>>>> if (!i) {
>>>>>> host->push_data = dw_mci_push_data16;
>>>>>> host->pull_data = dw_mci_pull_data16;
>>
>>
>>
>
>
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip
>
--
Best Regards
Shawn Lin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next — Previous in thread | Find similar | Unroll thread
[RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Shawn Lin <shawn.lin@rock-chips.com> - 2015-08-20 10:50 +0200
Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Jaehoon Chung <jh80.chung@samsung.com> - 2015-08-21 08:30 +0200
Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Shawn Lin <shawn.lin@rock-chips.com> - 2015-08-21 08:40 +0200
Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Jaehoon Chung <jh80.chung@samsung.com> - 2015-08-21 08:40 +0200
Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Shawn Lin <shawn.lin@rock-chips.com> - 2015-08-21 09:30 +0200
Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Jaehoon Chung <jh80.chung@samsung.com> - 2015-08-21 09:40 +0200
Re: [RFC PATCH v6 1/9] mmc: dw_mmc: Add external dma interface support Shawn Lin <shawn.lin@rock-chips.com> - 2015-08-21 09:50 +0200
csiph-web