On 23 March 2017 at 09:58, Jan Glauber <jan.glauber@xxxxxxxxxxxxxxxxxx> wrote: > On Fri, Mar 17, 2017 at 03:58:26PM +0100, Ulf Hansson wrote: >> On 10 March 2017 at 14:25, Jan Glauber <jglauber@xxxxxxxxxx> wrote: >> > Add a platform driver for ThunderX ARM SOCs. >> > >> > Signed-off-by: Jan Glauber <jglauber@xxxxxxxxxx> >> > --- >> > drivers/mmc/host/Kconfig | 10 ++ >> > drivers/mmc/host/Makefile | 2 + >> > drivers/mmc/host/cavium-mmc.h | 10 +- >> > drivers/mmc/host/cavium-pci-thunderx.c | 198 +++++++++++++++++++++++++++++++++ >> > 4 files changed, 218 insertions(+), 2 deletions(-) >> > create mode 100644 drivers/mmc/host/cavium-pci-thunderx.c >> > >> > diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig >> > index 68cc811..3983dee 100644 >> > --- a/drivers/mmc/host/Kconfig >> > +++ b/drivers/mmc/host/Kconfig >> > @@ -632,6 +632,16 @@ config MMC_CAVIUM_OCTEON >> > >> > If unsure, say N. >> > >> > +config MMC_CAVIUM_THUNDERX >> > + tristate "Cavium ThunderX SD/MMC Card Interface support" >> > + depends on PCI && 64BIT && (ARM64 || COMPILE_TEST) >> > + select GPIO_THUNDERX >> >> Do you really need to select GPIO_THUNDERX? What is the relationship? > > I don't know much about gpio, but in the end despite all these layers > there must be a gpio set function called doing the writeq on our SOC > to enable/disable the power gpio, right? > > GPIO_THUNDERX implements this gpio set function for Cavium's SOC. Got it. However using "select" should be avoided. Please use "depends on GPIOLIB" instead. The select of "GPIO_THUNDERX" should be done part of the defconfig or via an SoC specifc Kconfig file. [...] > >> > + * Create a dummy device per slot and set the node pointer to >> > + * the slot. The easiest way to get this is using >> > + * of_platform_device_create. >> > + */ >> > + if (!slot_pdev[i]) >> > + slot_pdev[i] = of_platform_device_create(child_node, NULL, >> > + &pdev->dev); >> >> Seems like we should verify that this is a slot node, by checking the >> compatible, before creating a platform device for it. No? > > Not sure I understand you correctly. Before creating the platform device > I don't have a device for the slot. Looking at functions I could use to > check the compatible all of these need a device, which I'm just going to > create. Can you point me to a function I can use here? if (of_device_is_compatible(child_node, "mmc-slot")) ->create device [...] Kind regards Uffe -- 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