Re: Correct DT properties for Arasan controller

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux USB Devel]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux