[RFC 0/2] Add support for Meson MX "SDIO" MMC driver
Ulf Hansson
ulf.hansson at linaro.org
Wed May 10 01:44:34 PDT 2017
On 6 May 2017 at 19:18, Martin Blumenstingl
<martin.blumenstingl at googlemail.com> wrote:
> This is the successor to Carlo Caione's "Add support for Amlogic Meson
> MMC driver" series (v5) from [0].
>
> I would like you to specifically review:
> - whether I've (ab)used the MMC framework properly (as this is my first
> "larger" contribution to an MMC driver)
I take a look soonish.
> - I think I have improved the locking compared to Carlo's version,
> however I'd still like feedback on whether this looks sane now or if I
> can improve that even further
>
> (notable) changes since Carlo's latest version are:
> - renamed the driver to meson-mx-sdio (Amlogic's reference kernel calls
> the driver "aml_sdio" as there is a second MMC controller in these SoCs
> which they call the "SDHC controller"). do the same with our driver to
I don't like to renaming drivers, just because there are a reference
kernel using a different name.
What's is really the difference between controllers? Why do they have
two variants?
Can they be managed by the same driver?
> avoid confusion once we add support for the second controller (which uses
> a completely different register layout)
Besides that, do they behave differently in some other way?
> - add support for the internal "mux" in this MMC controller (which allows
> connecting up to three devices to the the controller - at the cost of
> performance though since the controller can only process one request at
> a time). The driver registers a new device for each sub-node, which is
> then fed into the MMC framework to allow per-slot configuration using
> devicetree (see the example in the documentation)
Unless there really is deployment for more than one slot on some
boards/SoCs, I would strongly suggest to *not* implement this.
Simply because of overhead and introduced complexity to the driver.
> - use the common clock framework internally for managing the MMC clock
> (there is a fixed-factor clock in the controller which takes clk81 as
> input and divides it's clock by two and a divider clock which takes
> the result from the fixed-factor clock as input)
> - support the regulators provided by the MMC framework
> - support for GPIO-based card-detection and read-only-detection through
> the MMC framework
> - use of the <linux/bitfield.h> FIELD_PREP and FIELD_GET macros where it
> make sense (and thus the code easier to read)
> - re-worked locking (based on the locking in dw_mmc as that also provides
> multiple "MMC slots")
Lots of changes!
Before even start to review (or someone else), you really need to make
this review-able.
So, please, one change per patch - and make sure to write good
changelogs. Then I can start to review.
>
> tests done so far:
> - reading an OLD 256MiB SD card (which uses only a 1-bit bus) works fine
> (sha1sum of the whole device matches with what I get on my PC's
> card-reader)
> - reading a somewhat more modern class 10 SD card and putting Arch Linux
> ARM on it (and using that as root file system)
> - it successfully detects the RTL8723BS SDIO wifi chip in my device (even
> if the SD card is also enabled)
> - reading a 128MiB file from the SD card while scanning wifi networks on
> the RTL8723BS card does not seem to result in any corruption (sha1sum
> of the read file seems to match)
> - read speed of my class 10 SD card: ~15MiB/s
> - (unfortunately I could NOT test downloading a file over wifi to the SD
> card because the RTL8723BS driver refuses to see any wifi networks, but
> that might be a problem on the RTL8723BS driver side since I don't get
> any error and the driver has just landed a few weeks ago in staging)
>
>
> [0] http://lists.infradead.org/pipermail/linux-arm-kernel/2016-February/412136.html
>
[...]
Kind regards
Uffe
More information about the linux-arm-kernel
mailing list