devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Ziji Hu <huziji@marvell.com>
To: Ulf Hansson <ulf.hansson@linaro.org>,
	Gregory CLEMENT <gregory.clement@free-electrons.com>
Cc: Jimmy Xu <zmxu@marvell.com>, Andrew Lunn <andrew@lunn.ch>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	Mike Turquette <mturquette@baylibre.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Nadav Haklai <nadavh@marvell.com>, Victor Gu <xigu@marvell.com>,
	Doug Jones <dougj@marvell.com>,
	linux-clk <linux-clk@vger.kernel.org>,
	Jisheng Zhang <jszhang@marvell.com>,
	Yehuda Yitschak <yehuday@marvell.com>,
	Marcin Wojtas <mw@semihalf.com>,
	Kostya Porotchkin <kostap@marvell.com>,
	Hanna Hawa <hannah@marvell.com>,
	Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	Jason Cooper <jason@lakedaemon.net>,
	Rob Herring <robh+dt@kernel.org>, Ryan Gao <ygao@marvell.com>,
	"Wei(SOCP) Liu" <liuw@marvell.com>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	Thomas
Subject: Re: [PATCH v6 03/14] mmc: core: Add mmc-card dt sub-node parse in core layer
Date: Wed, 15 Mar 2017 21:46:07 +0800	[thread overview]
Message-ID: <f6a64290-47fb-b9c7-384f-ee87c97ce399@marvell.com> (raw)
In-Reply-To: <CAPDyKFoqxMCSe-2bt2dz1AM_2X7dtVe4w6e7+oAQ==HO_=XKQw@mail.gmail.com>

Hi Ulf,

On 2017/3/15 20:43, Ulf Hansson wrote:
> On 14 February 2017 at 18:01, Gregory CLEMENT
> <gregory.clement@free-electrons.com> wrote:
>> From: Hu Ziji <huziji@marvell.com>
>>
>> Some vendor host, like Xenon, can support multiple types.
>> In dts, use mmc-card dt sub-node to indicate eMMC is in use.
>>
>> Add a generic mmc-card parse function in mmc core layer.
>> If mmc-card sub-node is detected, set eMMC common caps, such as
>> MMC_CAP_NONREMOVABLE, MMC_CAP2_NO_SD and MMC_CAP2_NO_SDIO.
>>
>> Since it is likely that struct mmc_card is not allocated yet when
>> this mmc-card parse function is called, it will return true if
>> mmc-card sub-node is detected. Otherwise, return false.
>> It can help vendor host determine if the card type is eMMC.
>>
<snip>
>> +bool mmc_of_parse_mmc_card(struct mmc_host *host)
>> +{
>> +       struct device_node *np;
>> +       bool ret = false;
>> +
>> +       np = mmc_of_find_child_device(host, 0);
> 
> There are already some places in the mmc core where child nodes are
> being parsed. You may have a look for mmc_of_find_child_device() and
> find the callers of it.
> 
> Additionally, we need a generic method of how to describe in DT, when
> an mmc host controller has more than one mmc slot. This will also be
> done using child nodes.
> 

	I'd like to confirm if you require a universal child node
	parsing function to deal with all the child node use cases.
	It might be a little difficult to us.

> So, before starting hacking on this, it seems like we need some
> consolidation of the code. In principle, I would like to move the APIs
> for parsing of the child nodes into host.c, along with existing
> mmc_of_parse() function.
> 

	I guess that your requirement is like:
	int mmc_of_pars(struct mmc_host *host)
	{

		...

		np = mmc_of_find_child_device(host, 0);
		if (np && of_device_is_compatible(np, "mmc-card")) {
			...
		}

		...

	}
	Am I correct?

	Actually, I previously tried this implementation.
	But I found that it is difficult to return eMMC card type information
	to our vendor driver. Our Xenon driver expects to know if the device
	is eMMC card through this parse.

>> +       if (np && of_device_is_compatible(np, "mmc-card")) {
>> +               /* mmc-card sub-node indicates eMMC card is in use. */
>> +               host->caps |= MMC_CAP_NONREMOVABLE;
>> +               host->caps2 |= MMC_CAP2_NO_SDIO | MMC_CAP2_NO_SD;
>> +               ret = true;
>> +       }
>> +
> 
> So instead of providing a new mmc OF parse API, let's make
> mmc_of_parse() call another internal function which deals with child
> node parsing.
> 
>> +       of_node_put(np);
>> +       return ret;
>> +}
>> +EXPORT_SYMBOL_GPL(mmc_of_parse_mmc_card);
>> +
>> +/*
>>   * Starting point for MMC card init.
>>   */
>>  int mmc_attach_mmc(struct mmc_host *host)
>> diff --git a/include/linux/mmc/core.h b/include/linux/mmc/core.h
>> index e33cc748dcfe..1b27323f3b6e 100644
>> --- a/include/linux/mmc/core.h
>> +++ b/include/linux/mmc/core.h
>> @@ -234,4 +234,6 @@ struct device_node;
>>  extern u32 mmc_vddrange_to_ocrmask(int vdd_min, int vdd_max);
>>  extern int mmc_of_parse_voltage(struct device_node *np, u32 *mask);
>>
>> +extern bool mmc_of_parse_mmc_card(struct mmc_host *host);
>> +
>>  #endif /* LINUX_MMC_CORE_H */
>> --
>> git-series 0.9.1
> 
> If you didn't quite understand my comments, then please tell me. Then
> I can help out cooking some patches for you.

	Thanks a lot. Actually I'm not sure if our implementation to detect
	eMMC card type can meet your requirement of child node parsing.
	Please help provide me some examples or patches.

	Thank you.

Best regards,
Hu Ziji

> 
> Kind regards
> Uffe
> 

  reply	other threads:[~2017-03-15 13:46 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-14 17:01 [PATCH v6 00/14] mmc: Add support to Marvell Xenon SD Host Controller Gregory CLEMENT
2017-02-14 17:01 ` [PATCH v6 01/14] clk: apn806: Add eMMC clock to system controller driver Gregory CLEMENT
2017-02-14 17:01 ` [PATCH v6 02/14] clk: apn806: Turn the eMMC clock as optional for dts backwards compatible Gregory CLEMENT
2017-02-14 17:01 ` [PATCH v6 04/14] mmc: sdhci: Export sdhci_set_ios() from sdhci.c Gregory CLEMENT
     [not found]   ` <b95bc01da68874afbf85968d6181c60508fc56ff.1487091464.git-series.gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-22 14:48     ` Adrian Hunter
2017-02-14 17:01 ` [PATCH v6 05/14] mmc: sdhci: Export sdhci_start_signal_voltage_switch() in sdhci.c Gregory CLEMENT
     [not found]   ` <ebab2ad6a83a91683c9589b976a6975141167296.1487091464.git-series.gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-03-22 14:49     ` Adrian Hunter
2017-02-14 17:01 ` [PATCH v6 06/14] mmc: sdhci: Export sdhci_enable_sdio_irq() from sdhci.c Gregory CLEMENT
2017-03-22 14:49   ` Adrian Hunter
2017-02-14 17:01 ` [PATCH v6 07/14] dt: bindings: Add bindings for Marvell Xenon SD Host Controller Gregory CLEMENT
     [not found]   ` <3a4ce2fd25ed812482b0fc96f50dd305c8f40fe9.1487091464.git-series.gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-02-22 21:44     ` Rob Herring
2017-03-15 12:48   ` Ulf Hansson
2017-03-23  5:32     ` [EXT] " Ziji Hu
2017-02-14 17:01 ` [PATCH v6 08/14] mmc: sdhci-xenon: Add Marvell Xenon SDHC core functionality Gregory CLEMENT
2017-03-15 13:11   ` Ulf Hansson
2017-03-15 13:58     ` Ziji Hu
2017-03-16  2:24       ` Jisheng Zhang
2017-03-22 14:32   ` Adrian Hunter
     [not found] ` <cover.ff78bebe0384f650a51e5e6f0f1dca6e7894b53b.1487091464.git-series.gregory.clement-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-02-14 17:01   ` [PATCH v6 03/14] mmc: core: Add mmc-card dt sub-node parse in core layer Gregory CLEMENT
2017-03-15 12:43     ` Ulf Hansson
2017-03-15 13:46       ` Ziji Hu [this message]
2017-03-22 17:11       ` Gregory CLEMENT
2017-02-14 17:01   ` [PATCH v6 09/14] mmc: sdhci-xenon: Add support to PHYs of Marvell Xenon SDHC Gregory CLEMENT
2017-03-15 13:39     ` Ulf Hansson
2017-03-15 14:31       ` Ziji Hu
2017-03-22 14:33     ` Adrian Hunter
2017-02-14 17:01   ` [PATCH v6 10/14] mmc: sdhci-xenon: Add SoC PHY PAD voltage control Gregory CLEMENT
2017-03-22 14:47     ` Adrian Hunter
2017-02-14 17:01   ` [PATCH v6 12/14] arm64: dts: marvell: add eMMC support for Armada 37xx Gregory CLEMENT
2017-02-14 17:01 ` [PATCH v6 11/14] MAINTAINERS: add entry for Marvell Xenon MMC Host Controller drivers Gregory CLEMENT
2017-02-14 17:01 ` [PATCH v6 13/14] arm64: dts: marvell: add sdhci support for Armada 7K/8K Gregory CLEMENT
2017-02-14 17:01 ` [PATCH v6 14/14] arm64: configs: enable SDHCI driver for Xenon Gregory CLEMENT
2017-02-20 16:59 ` [PATCH v6 00/14] mmc: Add support to Marvell Xenon SD Host Controller Gregory CLEMENT
     [not found]   ` <87y3x0ajdv.fsf-wi1+55ScJUtKEb57/3fJTNBPR1lH4CV8@public.gmane.org>
2017-02-20 19:32     ` Ulf Hansson
2017-02-27  9:41       ` Ziji Hu
     [not found]       ` <CAPDyKFqXQmuxWFZwcnTgQcKU_t5MKCtBj6s+tv5gzVWS11x0qA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2017-03-10 10:15         ` Gregory CLEMENT
2017-02-20 17:07 ` Russell King - ARM Linux

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=f6a64290-47fb-b9c7-384f-ee87c97ce399@marvell.com \
    --to=huziji@marvell.com \
    --cc=andrew@lunn.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dougj@marvell.com \
    --cc=gregory.clement@free-electrons.com \
    --cc=hannah@marvell.com \
    --cc=jason@lakedaemon.net \
    --cc=jszhang@marvell.com \
    --cc=kostap@marvell.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=liuw@marvell.com \
    --cc=mturquette@baylibre.com \
    --cc=mw@semihalf.com \
    --cc=nadavh@marvell.com \
    --cc=robh+dt@kernel.org \
    --cc=sebastian.hesselbarth@gmail.com \
    --cc=ulf.hansson@linaro.org \
    --cc=xigu@marvell.com \
    --cc=yehuday@marvell.com \
    --cc=ygao@marvell.com \
    --cc=zmxu@marvell.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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).