[PATCH 4/6] powerpc: Add mmc-spi-slot bindings

Yann Pelletier ypelletier at haivision.com
Wed Apr 1 07:36:20 EST 2009


Original post:

Anton Vorontsov avorontsov at ru.mvista.com
Sat Jan 24 06:50:37 EST 2009

Sorry if this looks crappy, it's paste from web archive since I was not on the list at that time.

I've applied this patch set [1 to 6] to enable SPI device to be listed in the device tree instead of platform kernel file.

It is working fine but ...

> The bindings describes a case where MMC/SD/SDIO slot directly connected
> to a SPI bus. Such setups are widely used on embedded PowerPC boards.
>
> The patch also adds the mmc-spi-slot entry to the OpenFirmware modalias
> table.
>
> Signed-off-by: Anton Vorontsov <avorontsov at ru.mvista.com>
> ---
>  .../powerpc/dts-bindings/mmc-spi-slot.txt          |   23
> ++++++++++++++++++++
>  drivers/of/base.c                                  |    1 +
>  2 files changed, 24 insertions(+), 0 deletions(-)
>  create mode 100644 Documentation/powerpc/dts-bindings/mmc-spi-slot.txt
>
> diff --git a/Documentation/powerpc/dts-bindings/mmc-spi-slot.txt 
> b/Documentation/powerpc/dts-bindings/mmc-spi-slot.txt
> new file mode 100644
> index 0000000..c39ac28
> --- /dev/null
> +++ b/Documentation/powerpc/dts-bindings/mmc-spi-slot.txt
> @@ -0,0 +1,23 @@
> +MMC/SD/SDIO slot directly connected to a SPI bus
> +
> +Required properties:
> +- compatible : should be "mmc-spi-slot".
> +- reg : should specify SPI address (chip-select number).
> +- spi-max-frequency : maximum frequency for this device (Hz).
> +- voltage-ranges : two cells are required, first cell specifies minimum
> +  slot voltage (mV), second cell specifies maximum slot voltage (mV).
> +  Several ranges could be specified.
> +- gpios : (optional) may specify GPIOs in this order: Card-Detect GPIO,
> +  Write-Protect GPIO.
> +
> +Example:
> +
> +	mmc-slot at 0 {
> +		compatible = "fsl,mpc8323rdb-mmc-slot",
> +			     "mmc-spi-slot";
> +		reg = <0>;
> +		gpios = <&qe_pio_d 14 1
> +			 &qe_pio_d 15 0>;
> +		voltage-ranges = <3300 3300>;
> +		spi-max-frequency = <50000000>;
> +	};
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index cd17092..41c5dfd 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -446,6 +446,7 @@ struct of_modalias_table {
>  };
>  static struct of_modalias_table of_modalias_table[] = {
>  	{ "fsl,mcu-mpc8349emitx", "mcu-mpc8349emitx" },
> +	{ "mmc-spi-slot", "mmc_spi" },


Here I had to add 

  { "gs2970", "gs2970" },
  { "spidev", "spidev" },

>  };

To make my device get probed.  Otherwise I receive error

spi_master spi32766: cannot find modalias for /soc8313 at e0000000/spi at 7000/gs2970 at 0 
spi_master spi32766: cannot find modalias for /soc8313 at e0000000/spi at 7000/spidev at 4


I wonder if those modalias are absolutely required.  I would prefer not to add platform specific stuff to the kernel as this was my motivation to apply the patch.  Would there be a way to get around this ?




Also, from patch 3/6 in the same patch set

+static int __devinit of_mpc83xx_spi_probe(struct of_device *ofdev,
+					  const struct of_device_id *ofid)
.....
+	/* SPI controller is either clocked from QE or SoC clock. */
+	pdata->sysclk = get_brgfreq();
+	if (pdata->sysclk == -1) {
+		pdata->sysclk = fsl_get_sys_freq();
+		if (pdata->sysclk == -1) {
+			ret = -ENODEV;
+			goto err_clk;
+		}
+	}

get_brgfreq() in not defined in my system as I do not use QUICK_ENGINE


Thanks for support.



More information about the Linuxppc-dev mailing list