On 19/11/2015 21:56, Arnd Bergmann wrote:
> On Thursday 19 November 2015 17:37:13 Marc Gonzalez wrote:
>> Hello everyone,
>>
>> My SoC provides an "SD3.0 / SDIO3.0 / eMMC4.4 AHB Host Controller"
>> from Arasan Chip Systems (data sheet says rev 6.0, dated Feb 2010).
>>
>> There are two instances of the controller:
>> mmc0 is wired to an SD card reader,
>> mmc1 is wired to an eMMC chip.
>>
>> I'm trying to figure out how to write the DT.
>> (Currently using Linux 4.2)
>>
>> This is what I have so far:
>>
>> mmc0: mmc@21000 {
>> compatible = "arasan,sdhci-8.9a";
>
> make this "arasan,sdhci-6.0", plus a chip specific string
> in front of it.
Sorry, I wasn't clear...
6.0 is the revision of the documentation, not of the hardware block.
(Actually, I don't know what 4.9a and 8.9a refer to.
Does anyone know?)
>> reg = <0x21000 0x200>;
>> clock-names = "clk_xin", "clk_ahb";
>> clocks = <&sdio_clk>, <&clkgen 1>;
>> interrupts = <60 IRQ_TYPE_LEVEL_HIGH>;
>> bus-width = <8>;
>> cap-sd-highspeed;
>> sd-uhs-sdr12;
>> sd-uhs-sdr25;
>> sd-uhs-sdr50;
>> sd-uhs-ddr50;
>> sd-uhs-sdr104;
>> };
>>
>> mmc1: mmc@21200 {
>> compatible = "arasan,sdhci-8.9a";
>> reg = <0x21200 0x200>;
>> clock-names = "clk_xin", "clk_ahb";
>> clocks = <&sdio_clk>, <&clkgen 1>;
>> interrupts = <8 IRQ_TYPE_LEVEL_HIGH>;
>> bus-width = <8>;
>> non-removable;
>> };
>>
>> https://www.kernel.org/doc/Documentation/devicetree/bindings/mmc/mmc.txt
>>
>> (I don't know anything about MMC, SDHCI, SDIO, etc.)
>>
>> Are cap-sd-highspeed and sd-uhs-* limited to mmc0? (wired to SD card reader)
>>
>> Are cap-mmc-highspeed and mmc-* limited to mmc1? (wired to eMMC)
>
> It depends: if the wiring is board specific, put them into the .dts file
> and put the generic properties (interrupts, clocks, reg, compatible)
> into the .dtsi file.
Hmmm, sorry again. I was not asking where to put them. I was asking
if I should only use sd-uhs-* properties for an SD card reader node?
And should I only use mmc-* for an eMMC node?
>> What about these?
>> - bus-width: Number of data lines, can be <1>, <4>, or <8>. The default
>> will be <1> if the property is absent.
>
> board specific
HW guy tells me the controller handles 8 bits. Do you mean that the
board could actually use only 1 or 4 wires?
>> - cap-power-off-card: powering off the card is safe
>> - cap-mmc-hw-reset: eMMC hardware reset is supported
>> - cap-sdio-irq: enable SDIO IRQ signalling on this interface
>> - full-pwr-cycle: full power cycle of the card is supported
>>
>> Also, I set clk_xin to 48 MHz (and clk_ahb is set to 400 MHz).
>> Does clk_xin need to be higher for the faster modes?
>
> don't know. I think the clock gets set by the driver, so the
> clock controller needs to be programmable.
The input clock is definitely not programmable. I see a clock
divider inside the controller (SDCLK Frequency Select)
I also see "00h - base clock (10MHz-63MHz)"
However, elsewhere the doc states:
> clk_xin - Input SD Clock used to generate SD Clock based on the
> divisor value programmed by the Host Driver. This SD clock input is
> used to generate SD Clock. This clock is also used to derive Sleep
> clock used to detect Card insertion / removal.
> For maximum efficiency > this should be around 52 MHz (for MMC) /
> 208Mhz (for SD3.0) / 50Mhz (for SD2.0)
Since the controller supports SD3.0, I'm wondering if I should use
a faster clock for that.
Regards.
--
To unsubscribe from this list: send the line "unsubscribe linux-mmc" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html