diff mbox

[RFC,v3,16/16] ARM: dts: add AM33XX SPI support

Message ID 1350566815-409-17-git-send-email-mporter@ti.com (mailing list archive)
State Changes Requested
Headers show

Commit Message

Matt Porter Oct. 18, 2012, 1:26 p.m. UTC
Adds AM33XX SPI support for am335x-bone and am335x-evm.

Signed-off-by: Matt Porter <mporter@ti.com>
---
 arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
 arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
 arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
 3 files changed, 69 insertions(+)

Comments

Sekhar Nori Oct. 28, 2012, 11:31 a.m. UTC | #1
On 10/18/2012 6:56 PM, Matt Porter wrote:
> Adds AM33XX SPI support for am335x-bone and am335x-evm.
> 
> Signed-off-by: Matt Porter <mporter@ti.com>
> ---
>  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
>  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
>  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 69 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
> index 5510979..23edfd8 100644
> --- a/arch/arm/boot/dts/am335x-bone.dts
> +++ b/arch/arm/boot/dts/am335x-bone.dts
> @@ -18,6 +18,17 @@
>  		reg = <0x80000000 0x10000000>; /* 256 MB */
>  	};
>  
> +	am3358_pinmux: pinmux@44e10800 {
> +		spi1_pins: pinmux_spi1_pins {
> +			pinctrl-single,pins = <
> +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
> +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
> +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
> +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
> +			>;

Is there a single pinmux setting that provides SPI functionality on the
bone headers? Or this is specific to a cape you tested with?

Thanks,
Sekhar
avinash philip Oct. 29, 2012, 9:11 a.m. UTC | #2
On Thu, Oct 18, 2012 at 18:56:55, Porter, Matt wrote:
> Adds AM33XX SPI support for am335x-bone and am335x-evm.
> 
> Signed-off-by: Matt Porter <mporter@ti.com>
> ---
>  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
>  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
>  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
>  3 files changed, 69 insertions(+)
> 
> diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
> index 5510979..23edfd8 100644
> --- a/arch/arm/boot/dts/am335x-bone.dts
> +++ b/arch/arm/boot/dts/am335x-bone.dts
> @@ -18,6 +18,17 @@
>  		reg = <0x80000000 0x10000000>; /* 256 MB */
>  	};
>  
> +	am3358_pinmux: pinmux@44e10800 {
> +		spi1_pins: pinmux_spi1_pins {
> +			pinctrl-single,pins = <
> +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
> +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
> +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
> +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
> +			>;
> +		};
> +	};
> +

Change to am33xx_pinmux.

>  	ocp {
>  		uart1: serial@44e09000 {
>  			status = "okay";
> @@ -84,3 +95,9 @@
>  &mmc1 {
>  	vmmc-supply = <&ldo3_reg>;
>  };
> +
> +&spi1 {
> +	status = "okay";
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&spi1_pins>;
> +};
> diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
> index d63fce8..8d5f660 100644
> --- a/arch/arm/boot/dts/am335x-evm.dts
> +++ b/arch/arm/boot/dts/am335x-evm.dts
> @@ -124,3 +124,12 @@
>  &mmc1 {
>  	vmmc-supply = <&vmmc_reg>;
>  };
> +
> +&spi0 {
> +	status = "okay";
> +	spi-flash@0 {
> +		compatible = "spansion,s25fl064k", "m25p80";
> +		spi-max-frequency = <24000000>;
> +		reg = <0>;
> +	};
> +};

In AM335x-evm, SPI flash available in profile #2 (am335x evm specific profiles).
So can you drop this changes as if I understood correctly, am335x-evm.dts will be
populated for devices present only on profile #0.

> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> index 26a6af7..063ecea 100644
> --- a/arch/arm/boot/dts/am33xx.dtsi
> +++ b/arch/arm/boot/dts/am33xx.dtsi
> @@ -40,6 +40,15 @@
>  		};
>  	};
>  
> +	am3358_pinmux: pinmux@44e10800 {
> +		compatible = "pinctrl-single";
> +		reg = <0x44e10800 0x0238>;
> +		#address-cells = <1>;
> +		#size-cells = <0>;
> +		pinctrl-single,register-width = <32>;
> +		pinctrl-single,function-mask = <0x7f>;
> +	};
> +

Pin ctrl support already submitted
http://git.kernel.org/?p=linux/kernel/git/bcousson/linux-omap-dt.git;a=commitdiff;h=3e0603e905d9ba662e8c1885ecb1d28bc454e448

Thanks
Avinash

>  	/*
>  	 * XXX: Use a flat representation of the AM33XX interconnect.
>  	 * The real AM33XX interconnect network is quite complex.Since
> @@ -261,6 +270,40 @@
>  			status = "disabled";
>  		};
>  
> +		spi0: spi@48030000 {
> +			compatible = "ti,omap4-mcspi";
> +			ti,hwmods = "spi0";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			reg = <0x48030000 0x400>;
> +			interrupt-parent = <&intc>;
> +			interrupt = <65>;
> +			dmas = <&edma 16
> +				&edma 17
> +				&edma 18
> +				&edma 19>;
> +			dma-names = "tx0", "rx0", "tx1", "rx1";
> +			ti,spi-num-cs = <2>;
> +			status = "disabled";
> +		};
> +
> +		spi1: spi@481a0000 {
> +			compatible = "ti,omap4-mcspi";
> +			ti,hwmods = "spi1";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +			reg = <0x481a0000 0x400>;
> +			interrupt-parent = <&intc>;
> +			interrupt = <125>;
> +			dmas = <&edma 42
> +				&edma 43
> +				&edma 44
> +				&edma 45>;
> +			dma-names = "tx0", "rx0", "tx1", "rx1";
> +			ti,spi-num-cs = <2>;
> +			status = "disabled";
> +		};
> +
>  		wdt2: wdt@44e35000 {
>  			compatible = "ti,omap3-wdt";
>  			ti,hwmods = "wd_timer2";
> -- 
> 1.7.9.5
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
avinash philip Oct. 30, 2012, 9:41 a.m. UTC | #3
On Mon, Oct 29, 2012 at 14:40:02, Philip, Avinash wrote:
> On Thu, Oct 18, 2012 at 18:56:55, Porter, Matt wrote:
> > Adds AM33XX SPI support for am335x-bone and am335x-evm.

Matt,

Can you build SPI DT patch with DMA support on top of SPI DT patch
I submitted [1]. With the patch [1] SPI can work on PIO mode.
So we can have basic SPI support available in 3.8.

Benoit,
Can you accept the SPI DT patch [1]

In case if you want I will resubmit a patch with subject line modified.

Current subject line
arm/dts: AM33XX: Add SPI device tree data

1. https://patchwork.kernel.org/patch/1470661/

Thanks
Avinash

> > 
> > Signed-off-by: Matt Porter <mporter@ti.com>
> > ---
> >  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
> >  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
> >  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
> >  3 files changed, 69 insertions(+)
> > 
> > diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
> > index 5510979..23edfd8 100644
> > --- a/arch/arm/boot/dts/am335x-bone.dts
> > +++ b/arch/arm/boot/dts/am335x-bone.dts
> > @@ -18,6 +18,17 @@
> >  		reg = <0x80000000 0x10000000>; /* 256 MB */
> >  	};
> >  
> > +	am3358_pinmux: pinmux@44e10800 {
> > +		spi1_pins: pinmux_spi1_pins {
> > +			pinctrl-single,pins = <
> > +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
> > +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
> > +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
> > +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
> > +			>;
> > +		};
> > +	};
> > +
> 
> Change to am33xx_pinmux.
> 
> >  	ocp {
> >  		uart1: serial@44e09000 {
> >  			status = "okay";
> > @@ -84,3 +95,9 @@
> >  &mmc1 {
> >  	vmmc-supply = <&ldo3_reg>;
> >  };
> > +
> > +&spi1 {
> > +	status = "okay";
> > +	pinctrl-names = "default";
> > +	pinctrl-0 = <&spi1_pins>;
> > +};
> > diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
> > index d63fce8..8d5f660 100644
> > --- a/arch/arm/boot/dts/am335x-evm.dts
> > +++ b/arch/arm/boot/dts/am335x-evm.dts
> > @@ -124,3 +124,12 @@
> >  &mmc1 {
> >  	vmmc-supply = <&vmmc_reg>;
> >  };
> > +
> > +&spi0 {
> > +	status = "okay";
> > +	spi-flash@0 {
> > +		compatible = "spansion,s25fl064k", "m25p80";
> > +		spi-max-frequency = <24000000>;
> > +		reg = <0>;
> > +	};
> > +};
> 
> In AM335x-evm, SPI flash available in profile #2 (am335x evm specific profiles).
> So can you drop this changes as if I understood correctly, am335x-evm.dts will be
> populated for devices present only on profile #0.
> 
> > diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> > index 26a6af7..063ecea 100644
> > --- a/arch/arm/boot/dts/am33xx.dtsi
> > +++ b/arch/arm/boot/dts/am33xx.dtsi
> > @@ -40,6 +40,15 @@
> >  		};
> >  	};
> >  
> > +	am3358_pinmux: pinmux@44e10800 {
> > +		compatible = "pinctrl-single";
> > +		reg = <0x44e10800 0x0238>;
> > +		#address-cells = <1>;
> > +		#size-cells = <0>;
> > +		pinctrl-single,register-width = <32>;
> > +		pinctrl-single,function-mask = <0x7f>;
> > +	};
> > +
> 
> Pin ctrl support already submitted
> http://git.kernel.org/?p=linux/kernel/git/bcousson/linux-omap-dt.git;a=commitdiff;h=3e0603e905d9ba662e8c1885ecb1d28bc454e448
> 
> Thanks
> Avinash
> 
> >  	/*
> >  	 * XXX: Use a flat representation of the AM33XX interconnect.
> >  	 * The real AM33XX interconnect network is quite complex.Since
> > @@ -261,6 +270,40 @@
> >  			status = "disabled";
> >  		};
> >  
> > +		spi0: spi@48030000 {
> > +			compatible = "ti,omap4-mcspi";
> > +			ti,hwmods = "spi0";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +			reg = <0x48030000 0x400>;
> > +			interrupt-parent = <&intc>;
> > +			interrupt = <65>;
> > +			dmas = <&edma 16
> > +				&edma 17
> > +				&edma 18
> > +				&edma 19>;
> > +			dma-names = "tx0", "rx0", "tx1", "rx1";
> > +			ti,spi-num-cs = <2>;
> > +			status = "disabled";
> > +		};
> > +
> > +		spi1: spi@481a0000 {
> > +			compatible = "ti,omap4-mcspi";
> > +			ti,hwmods = "spi1";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +			reg = <0x481a0000 0x400>;
> > +			interrupt-parent = <&intc>;
> > +			interrupt = <125>;
> > +			dmas = <&edma 42
> > +				&edma 43
> > +				&edma 44
> > +				&edma 45>;
> > +			dma-names = "tx0", "rx0", "tx1", "rx1";
> > +			ti,spi-num-cs = <2>;
> > +			status = "disabled";
> > +		};
> > +
> >  		wdt2: wdt@44e35000 {
> >  			compatible = "ti,omap3-wdt";
> >  			ti,hwmods = "wd_timer2";
> > -- 
> > 1.7.9.5
> > 
> > 
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > 
> 
>
Benoit Cousson Oct. 31, 2012, 10:16 a.m. UTC | #4
Hi Avinash,

On 10/30/2012 10:41 AM, Philip, Avinash wrote:
> On Mon, Oct 29, 2012 at 14:40:02, Philip, Avinash wrote:
>> On Thu, Oct 18, 2012 at 18:56:55, Porter, Matt wrote:
>>> Adds AM33XX SPI support for am335x-bone and am335x-evm.
> 
> Matt,
> 
> Can you build SPI DT patch with DMA support on top of SPI DT patch
> I submitted [1]. With the patch [1] SPI can work on PIO mode.
> So we can have basic SPI support available in 3.8.
> 
> Benoit,
> Can you accept the SPI DT patch [1]

Yes, I've just applied it in for_3.8/dts branch

> In case if you want I will resubmit a patch with subject line modified.

No, that's fine.

Thanks,
Benoit

> 
> Current subject line
> arm/dts: AM33XX: Add SPI device tree data
> 
> 1. https://patchwork.kernel.org/patch/1470661/
> 
> Thanks
> Avinash
> 
>>>
>>> Signed-off-by: Matt Porter <mporter@ti.com>
>>> ---
>>>  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
>>>  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
>>>  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
>>>  3 files changed, 69 insertions(+)
>>>
>>> diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
>>> index 5510979..23edfd8 100644
>>> --- a/arch/arm/boot/dts/am335x-bone.dts
>>> +++ b/arch/arm/boot/dts/am335x-bone.dts
>>> @@ -18,6 +18,17 @@
>>>  		reg = <0x80000000 0x10000000>; /* 256 MB */
>>>  	};
>>>  
>>> +	am3358_pinmux: pinmux@44e10800 {
>>> +		spi1_pins: pinmux_spi1_pins {
>>> +			pinctrl-single,pins = <
>>> +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
>>> +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
>>> +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
>>> +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
>>> +			>;
>>> +		};
>>> +	};
>>> +
>>
>> Change to am33xx_pinmux.
>>
>>>  	ocp {
>>>  		uart1: serial@44e09000 {
>>>  			status = "okay";
>>> @@ -84,3 +95,9 @@
>>>  &mmc1 {
>>>  	vmmc-supply = <&ldo3_reg>;
>>>  };
>>> +
>>> +&spi1 {
>>> +	status = "okay";
>>> +	pinctrl-names = "default";
>>> +	pinctrl-0 = <&spi1_pins>;
>>> +};
>>> diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
>>> index d63fce8..8d5f660 100644
>>> --- a/arch/arm/boot/dts/am335x-evm.dts
>>> +++ b/arch/arm/boot/dts/am335x-evm.dts
>>> @@ -124,3 +124,12 @@
>>>  &mmc1 {
>>>  	vmmc-supply = <&vmmc_reg>;
>>>  };
>>> +
>>> +&spi0 {
>>> +	status = "okay";
>>> +	spi-flash@0 {
>>> +		compatible = "spansion,s25fl064k", "m25p80";
>>> +		spi-max-frequency = <24000000>;
>>> +		reg = <0>;
>>> +	};
>>> +};
>>
>> In AM335x-evm, SPI flash available in profile #2 (am335x evm specific profiles).
>> So can you drop this changes as if I understood correctly, am335x-evm.dts will be
>> populated for devices present only on profile #0.
>>
>>> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
>>> index 26a6af7..063ecea 100644
>>> --- a/arch/arm/boot/dts/am33xx.dtsi
>>> +++ b/arch/arm/boot/dts/am33xx.dtsi
>>> @@ -40,6 +40,15 @@
>>>  		};
>>>  	};
>>>  
>>> +	am3358_pinmux: pinmux@44e10800 {
>>> +		compatible = "pinctrl-single";
>>> +		reg = <0x44e10800 0x0238>;
>>> +		#address-cells = <1>;
>>> +		#size-cells = <0>;
>>> +		pinctrl-single,register-width = <32>;
>>> +		pinctrl-single,function-mask = <0x7f>;
>>> +	};
>>> +
>>
>> Pin ctrl support already submitted
>> http://git.kernel.org/?p=linux/kernel/git/bcousson/linux-omap-dt.git;a=commitdiff;h=3e0603e905d9ba662e8c1885ecb1d28bc454e448
>>
>> Thanks
>> Avinash
>>
>>>  	/*
>>>  	 * XXX: Use a flat representation of the AM33XX interconnect.
>>>  	 * The real AM33XX interconnect network is quite complex.Since
>>> @@ -261,6 +270,40 @@
>>>  			status = "disabled";
>>>  		};
>>>  
>>> +		spi0: spi@48030000 {
>>> +			compatible = "ti,omap4-mcspi";
>>> +			ti,hwmods = "spi0";
>>> +			#address-cells = <1>;
>>> +			#size-cells = <0>;
>>> +			reg = <0x48030000 0x400>;
>>> +			interrupt-parent = <&intc>;
>>> +			interrupt = <65>;
>>> +			dmas = <&edma 16
>>> +				&edma 17
>>> +				&edma 18
>>> +				&edma 19>;
>>> +			dma-names = "tx0", "rx0", "tx1", "rx1";
>>> +			ti,spi-num-cs = <2>;
>>> +			status = "disabled";
>>> +		};
>>> +
>>> +		spi1: spi@481a0000 {
>>> +			compatible = "ti,omap4-mcspi";
>>> +			ti,hwmods = "spi1";
>>> +			#address-cells = <1>;
>>> +			#size-cells = <0>;
>>> +			reg = <0x481a0000 0x400>;
>>> +			interrupt-parent = <&intc>;
>>> +			interrupt = <125>;
>>> +			dmas = <&edma 42
>>> +				&edma 43
>>> +				&edma 44
>>> +				&edma 45>;
>>> +			dma-names = "tx0", "rx0", "tx1", "rx1";
>>> +			ti,spi-num-cs = <2>;
>>> +			status = "disabled";
>>> +		};
>>> +
>>>  		wdt2: wdt@44e35000 {
>>>  			compatible = "ti,omap3-wdt";
>>>  			ti,hwmods = "wd_timer2";
>>> -- 
>>> 1.7.9.5
>>>
>>>
>>> _______________________________________________
>>> linux-arm-kernel mailing list
>>> linux-arm-kernel@lists.infradead.org
>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>>
>>
>>
>
Benoit Cousson Oct. 31, 2012, 10:35 a.m. UTC | #5
On 10/31/2012 11:16 AM, Benoit Cousson wrote:
> Hi Avinash,
> 
> On 10/30/2012 10:41 AM, Philip, Avinash wrote:
>> On Mon, Oct 29, 2012 at 14:40:02, Philip, Avinash wrote:
>>> On Thu, Oct 18, 2012 at 18:56:55, Porter, Matt wrote:
>>>> Adds AM33XX SPI support for am335x-bone and am335x-evm.
>>
>> Matt,
>>
>> Can you build SPI DT patch with DMA support on top of SPI DT patch
>> I submitted [1]. With the patch [1] SPI can work on PIO mode.
>> So we can have basic SPI support available in 3.8.
>>
>> Benoit,
>> Can you accept the SPI DT patch [1]
> 
> Yes, I've just applied it in for_3.8/dts branch

Well, in fact I did not, it does not apply :-(

Can you rebase on top of the for_3.8/dts branch? I've just applied the
RTC patch on top that was OK.

Thanks,
Benoit

> 
>> In case if you want I will resubmit a patch with subject line modified.
> 
> No, that's fine.
> 
> Thanks,
> Benoit
> 
>>
>> Current subject line
>> arm/dts: AM33XX: Add SPI device tree data
>>
>> 1. https://patchwork.kernel.org/patch/1470661/
>>
>> Thanks
>> Avinash
>>
>>>>
>>>> Signed-off-by: Matt Porter <mporter@ti.com>
>>>> ---
>>>>  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
>>>>  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
>>>>  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
>>>>  3 files changed, 69 insertions(+)
>>>>
>>>> diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
>>>> index 5510979..23edfd8 100644
>>>> --- a/arch/arm/boot/dts/am335x-bone.dts
>>>> +++ b/arch/arm/boot/dts/am335x-bone.dts
>>>> @@ -18,6 +18,17 @@
>>>>  		reg = <0x80000000 0x10000000>; /* 256 MB */
>>>>  	};
>>>>  
>>>> +	am3358_pinmux: pinmux@44e10800 {
>>>> +		spi1_pins: pinmux_spi1_pins {
>>>> +			pinctrl-single,pins = <
>>>> +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
>>>> +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
>>>> +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
>>>> +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
>>>> +			>;
>>>> +		};
>>>> +	};
>>>> +
>>>
>>> Change to am33xx_pinmux.
>>>
>>>>  	ocp {
>>>>  		uart1: serial@44e09000 {
>>>>  			status = "okay";
>>>> @@ -84,3 +95,9 @@
>>>>  &mmc1 {
>>>>  	vmmc-supply = <&ldo3_reg>;
>>>>  };
>>>> +
>>>> +&spi1 {
>>>> +	status = "okay";
>>>> +	pinctrl-names = "default";
>>>> +	pinctrl-0 = <&spi1_pins>;
>>>> +};
>>>> diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
>>>> index d63fce8..8d5f660 100644
>>>> --- a/arch/arm/boot/dts/am335x-evm.dts
>>>> +++ b/arch/arm/boot/dts/am335x-evm.dts
>>>> @@ -124,3 +124,12 @@
>>>>  &mmc1 {
>>>>  	vmmc-supply = <&vmmc_reg>;
>>>>  };
>>>> +
>>>> +&spi0 {
>>>> +	status = "okay";
>>>> +	spi-flash@0 {
>>>> +		compatible = "spansion,s25fl064k", "m25p80";
>>>> +		spi-max-frequency = <24000000>;
>>>> +		reg = <0>;
>>>> +	};
>>>> +};
>>>
>>> In AM335x-evm, SPI flash available in profile #2 (am335x evm specific profiles).
>>> So can you drop this changes as if I understood correctly, am335x-evm.dts will be
>>> populated for devices present only on profile #0.
>>>
>>>> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
>>>> index 26a6af7..063ecea 100644
>>>> --- a/arch/arm/boot/dts/am33xx.dtsi
>>>> +++ b/arch/arm/boot/dts/am33xx.dtsi
>>>> @@ -40,6 +40,15 @@
>>>>  		};
>>>>  	};
>>>>  
>>>> +	am3358_pinmux: pinmux@44e10800 {
>>>> +		compatible = "pinctrl-single";
>>>> +		reg = <0x44e10800 0x0238>;
>>>> +		#address-cells = <1>;
>>>> +		#size-cells = <0>;
>>>> +		pinctrl-single,register-width = <32>;
>>>> +		pinctrl-single,function-mask = <0x7f>;
>>>> +	};
>>>> +
>>>
>>> Pin ctrl support already submitted
>>> http://git.kernel.org/?p=linux/kernel/git/bcousson/linux-omap-dt.git;a=commitdiff;h=3e0603e905d9ba662e8c1885ecb1d28bc454e448
>>>
>>> Thanks
>>> Avinash
>>>
>>>>  	/*
>>>>  	 * XXX: Use a flat representation of the AM33XX interconnect.
>>>>  	 * The real AM33XX interconnect network is quite complex.Since
>>>> @@ -261,6 +270,40 @@
>>>>  			status = "disabled";
>>>>  		};
>>>>  
>>>> +		spi0: spi@48030000 {
>>>> +			compatible = "ti,omap4-mcspi";
>>>> +			ti,hwmods = "spi0";
>>>> +			#address-cells = <1>;
>>>> +			#size-cells = <0>;
>>>> +			reg = <0x48030000 0x400>;
>>>> +			interrupt-parent = <&intc>;
>>>> +			interrupt = <65>;
>>>> +			dmas = <&edma 16
>>>> +				&edma 17
>>>> +				&edma 18
>>>> +				&edma 19>;
>>>> +			dma-names = "tx0", "rx0", "tx1", "rx1";
>>>> +			ti,spi-num-cs = <2>;
>>>> +			status = "disabled";
>>>> +		};
>>>> +
>>>> +		spi1: spi@481a0000 {
>>>> +			compatible = "ti,omap4-mcspi";
>>>> +			ti,hwmods = "spi1";
>>>> +			#address-cells = <1>;
>>>> +			#size-cells = <0>;
>>>> +			reg = <0x481a0000 0x400>;
>>>> +			interrupt-parent = <&intc>;
>>>> +			interrupt = <125>;
>>>> +			dmas = <&edma 42
>>>> +				&edma 43
>>>> +				&edma 44
>>>> +				&edma 45>;
>>>> +			dma-names = "tx0", "rx0", "tx1", "rx1";
>>>> +			ti,spi-num-cs = <2>;
>>>> +			status = "disabled";
>>>> +		};
>>>> +
>>>>  		wdt2: wdt@44e35000 {
>>>>  			compatible = "ti,omap3-wdt";
>>>>  			ti,hwmods = "wd_timer2";
>>>> -- 
>>>> 1.7.9.5
>>>>
>>>>
>>>> _______________________________________________
>>>> linux-arm-kernel mailing list
>>>> linux-arm-kernel@lists.infradead.org
>>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>>>>
>>>
>>>
>>
>
avinash philip Oct. 31, 2012, 11:03 a.m. UTC | #6
On Wed, Oct 31, 2012 at 16:05:13, Cousson, Benoit wrote:
> 
> On 10/31/2012 11:16 AM, Benoit Cousson wrote:
> > Hi Avinash,
> > 
> > On 10/30/2012 10:41 AM, Philip, Avinash wrote:
> >> On Mon, Oct 29, 2012 at 14:40:02, Philip, Avinash wrote:
> >>> On Thu, Oct 18, 2012 at 18:56:55, Porter, Matt wrote:
> >>>> Adds AM33XX SPI support for am335x-bone and am335x-evm.
> >>
> >> Matt,
> >>
> >> Can you build SPI DT patch with DMA support on top of SPI DT patch
> >> I submitted [1]. With the patch [1] SPI can work on PIO mode.
> >> So we can have basic SPI support available in 3.8.
> >>
> >> Benoit,
> >> Can you accept the SPI DT patch [1]
> > 
> > Yes, I've just applied it in for_3.8/dts branch
> 
> Well, in fact I did not, it does not apply :-(
> 
> Can you rebase on top of the for_3.8/dts branch? I've just applied the
> RTC patch on top that was OK.

Ok.

Thanks
Avinash

> 
> Thanks,
> Benoit
> 
> > 
> >> In case if you want I will resubmit a patch with subject line modified.
> > 
> > No, that's fine.
> > 
> > Thanks,
> > Benoit
> > 
> >>
> >> Current subject line
> >> arm/dts: AM33XX: Add SPI device tree data
> >>
> >> 1. https://patchwork.kernel.org/patch/1470661/
> >>
> >> Thanks
> >> Avinash
> >>
> >>>>
> >>>> Signed-off-by: Matt Porter <mporter@ti.com>
> >>>> ---
> >>>>  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
> >>>>  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
> >>>>  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
> >>>>  3 files changed, 69 insertions(+)
> >>>>
> >>>> diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
> >>>> index 5510979..23edfd8 100644
> >>>> --- a/arch/arm/boot/dts/am335x-bone.dts
> >>>> +++ b/arch/arm/boot/dts/am335x-bone.dts
> >>>> @@ -18,6 +18,17 @@
> >>>>  		reg = <0x80000000 0x10000000>; /* 256 MB */
> >>>>  	};
> >>>>  
> >>>> +	am3358_pinmux: pinmux@44e10800 {
> >>>> +		spi1_pins: pinmux_spi1_pins {
> >>>> +			pinctrl-single,pins = <
> >>>> +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
> >>>> +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
> >>>> +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
> >>>> +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
> >>>> +			>;
> >>>> +		};
> >>>> +	};
> >>>> +
> >>>
> >>> Change to am33xx_pinmux.
> >>>
> >>>>  	ocp {
> >>>>  		uart1: serial@44e09000 {
> >>>>  			status = "okay";
> >>>> @@ -84,3 +95,9 @@
> >>>>  &mmc1 {
> >>>>  	vmmc-supply = <&ldo3_reg>;
> >>>>  };
> >>>> +
> >>>> +&spi1 {
> >>>> +	status = "okay";
> >>>> +	pinctrl-names = "default";
> >>>> +	pinctrl-0 = <&spi1_pins>;
> >>>> +};
> >>>> diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
> >>>> index d63fce8..8d5f660 100644
> >>>> --- a/arch/arm/boot/dts/am335x-evm.dts
> >>>> +++ b/arch/arm/boot/dts/am335x-evm.dts
> >>>> @@ -124,3 +124,12 @@
> >>>>  &mmc1 {
> >>>>  	vmmc-supply = <&vmmc_reg>;
> >>>>  };
> >>>> +
> >>>> +&spi0 {
> >>>> +	status = "okay";
> >>>> +	spi-flash@0 {
> >>>> +		compatible = "spansion,s25fl064k", "m25p80";
> >>>> +		spi-max-frequency = <24000000>;
> >>>> +		reg = <0>;
> >>>> +	};
> >>>> +};
> >>>
> >>> In AM335x-evm, SPI flash available in profile #2 (am335x evm specific profiles).
> >>> So can you drop this changes as if I understood correctly, am335x-evm.dts will be
> >>> populated for devices present only on profile #0.
> >>>
> >>>> diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
> >>>> index 26a6af7..063ecea 100644
> >>>> --- a/arch/arm/boot/dts/am33xx.dtsi
> >>>> +++ b/arch/arm/boot/dts/am33xx.dtsi
> >>>> @@ -40,6 +40,15 @@
> >>>>  		};
> >>>>  	};
> >>>>  
> >>>> +	am3358_pinmux: pinmux@44e10800 {
> >>>> +		compatible = "pinctrl-single";
> >>>> +		reg = <0x44e10800 0x0238>;
> >>>> +		#address-cells = <1>;
> >>>> +		#size-cells = <0>;
> >>>> +		pinctrl-single,register-width = <32>;
> >>>> +		pinctrl-single,function-mask = <0x7f>;
> >>>> +	};
> >>>> +
> >>>
> >>> Pin ctrl support already submitted
> >>> http://git.kernel.org/?p=linux/kernel/git/bcousson/linux-omap-dt.git;a=commitdiff;h=3e0603e905d9ba662e8c1885ecb1d28bc454e448
> >>>
> >>> Thanks
> >>> Avinash
> >>>
> >>>>  	/*
> >>>>  	 * XXX: Use a flat representation of the AM33XX interconnect.
> >>>>  	 * The real AM33XX interconnect network is quite complex.Since
> >>>> @@ -261,6 +270,40 @@
> >>>>  			status = "disabled";
> >>>>  		};
> >>>>  
> >>>> +		spi0: spi@48030000 {
> >>>> +			compatible = "ti,omap4-mcspi";
> >>>> +			ti,hwmods = "spi0";
> >>>> +			#address-cells = <1>;
> >>>> +			#size-cells = <0>;
> >>>> +			reg = <0x48030000 0x400>;
> >>>> +			interrupt-parent = <&intc>;
> >>>> +			interrupt = <65>;
> >>>> +			dmas = <&edma 16
> >>>> +				&edma 17
> >>>> +				&edma 18
> >>>> +				&edma 19>;
> >>>> +			dma-names = "tx0", "rx0", "tx1", "rx1";
> >>>> +			ti,spi-num-cs = <2>;
> >>>> +			status = "disabled";
> >>>> +		};
> >>>> +
> >>>> +		spi1: spi@481a0000 {
> >>>> +			compatible = "ti,omap4-mcspi";
> >>>> +			ti,hwmods = "spi1";
> >>>> +			#address-cells = <1>;
> >>>> +			#size-cells = <0>;
> >>>> +			reg = <0x481a0000 0x400>;
> >>>> +			interrupt-parent = <&intc>;
> >>>> +			interrupt = <125>;
> >>>> +			dmas = <&edma 42
> >>>> +				&edma 43
> >>>> +				&edma 44
> >>>> +				&edma 45>;
> >>>> +			dma-names = "tx0", "rx0", "tx1", "rx1";
> >>>> +			ti,spi-num-cs = <2>;
> >>>> +			status = "disabled";
> >>>> +		};
> >>>> +
> >>>>  		wdt2: wdt@44e35000 {
> >>>>  			compatible = "ti,omap3-wdt";
> >>>>  			ti,hwmods = "wd_timer2";
> >>>> -- 
> >>>> 1.7.9.5
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> linux-arm-kernel mailing list
> >>>> linux-arm-kernel@lists.infradead.org
> >>>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> >>>>
> >>>
> >>>
> >>
> > 
> 
>
Matt Porter Jan. 10, 2013, 7:35 p.m. UTC | #7
On Sun, Oct 28, 2012 at 05:01:29PM +0530, Sekhar Nori wrote:
> On 10/18/2012 6:56 PM, Matt Porter wrote:
> > Adds AM33XX SPI support for am335x-bone and am335x-evm.
> > 
> > Signed-off-by: Matt Porter <mporter@ti.com>
> > ---
> >  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
> >  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
> >  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
> >  3 files changed, 69 insertions(+)
> > 
> > diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
> > index 5510979..23edfd8 100644
> > --- a/arch/arm/boot/dts/am335x-bone.dts
> > +++ b/arch/arm/boot/dts/am335x-bone.dts
> > @@ -18,6 +18,17 @@
> >  		reg = <0x80000000 0x10000000>; /* 256 MB */
> >  	};
> >  
> > +	am3358_pinmux: pinmux@44e10800 {
> > +		spi1_pins: pinmux_spi1_pins {
> > +			pinctrl-single,pins = <
> > +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
> > +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
> > +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
> > +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
> > +			>;
> 
> Is there a single pinmux setting that provides SPI functionality on the
> bone headers? Or this is specific to a cape you tested with?

No, there are two usable settings for spi1 and one setting for spi0.
I'm dropping this from the series since it's specific to how I wired up
the homebrew cape I use for spi testing on the Bone. I publish the
branch where all these extra "test-specific" patches (that aren't intended
to be merged) are at in the cover letter.  Anybody that needs context of
how/what worked and was tested can grab them there.

-Matt
Matt Porter Jan. 10, 2013, 8:49 p.m. UTC | #8
On Thu, Jan 10, 2013 at 01:46:53PM -0600, Nishanth Menon wrote:
> On 14:35-20130110, Matt Porter wrote:
> > On Sun, Oct 28, 2012 at 05:01:29PM +0530, Sekhar Nori wrote:
> > > On 10/18/2012 6:56 PM, Matt Porter wrote:
> > > > Adds AM33XX SPI support for am335x-bone and am335x-evm.
> > > > 
> > > > Signed-off-by: Matt Porter <mporter@ti.com>
> > > > ---
> > > >  arch/arm/boot/dts/am335x-bone.dts |   17 +++++++++++++++
> > > >  arch/arm/boot/dts/am335x-evm.dts  |    9 ++++++++
> > > >  arch/arm/boot/dts/am33xx.dtsi     |   43 +++++++++++++++++++++++++++++++++++++
> > > >  3 files changed, 69 insertions(+)
> > > > 
> > > > diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
> > > > index 5510979..23edfd8 100644
> > > > --- a/arch/arm/boot/dts/am335x-bone.dts
> > > > +++ b/arch/arm/boot/dts/am335x-bone.dts
> > > > @@ -18,6 +18,17 @@
> > > >  		reg = <0x80000000 0x10000000>; /* 256 MB */
> > > >  	};
> > > >  
> > > > +	am3358_pinmux: pinmux@44e10800 {
> > > > +		spi1_pins: pinmux_spi1_pins {
> > > > +			pinctrl-single,pins = <
> > > > +				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
> > > > +				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
> > > > +				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
> minor comment:
> doing as a 0x33 is better for both d1, d0 as D0,D1 can be switched between SDI and SDO
> as needed with ti,pindir-d0-out-d1-in

Yes, thanks. Forgot about the new property and feature even though I
told somebody about it yesterday. :)

> > > > +				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
> > > > +			>;
> > > 
> > > Is there a single pinmux setting that provides SPI functionality on the
> > > bone headers? Or this is specific to a cape you tested with?
> > 
> > No, there are two usable settings for spi1 and one setting for spi0.
> > I'm dropping this from the series since it's specific to how I wired up
> > the homebrew cape I use for spi testing on the Bone. I publish the
> > branch where all these extra "test-specific" patches (that aren't intended
> > to be merged) are at in the cover letter.  Anybody that needs context of
> > how/what worked and was tested can grab them there.
> Possibly dumb question:
> Cant we have pre-usable spi configurations?  Like spi1_configuration1_pins,
> spi2_configuration1_pins, spi0_configuration1_pins? If documented with
> P9 pin names in the bone dts, it saves a bit of effort in looking up
> pad offset when dealing with capes.

Yes, let's introduce these things separately. I plan to reintroduce
patches to fix the incorrect 1-based numbering on many of the AM33xx as
previous ones were dropped...and I think this makes sense on top of
that.

-Matt
> -- 
> Regards,
> Nishanth Menon
> --
> To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/arm/boot/dts/am335x-bone.dts b/arch/arm/boot/dts/am335x-bone.dts
index 5510979..23edfd8 100644
--- a/arch/arm/boot/dts/am335x-bone.dts
+++ b/arch/arm/boot/dts/am335x-bone.dts
@@ -18,6 +18,17 @@ 
 		reg = <0x80000000 0x10000000>; /* 256 MB */
 	};
 
+	am3358_pinmux: pinmux@44e10800 {
+		spi1_pins: pinmux_spi1_pins {
+			pinctrl-single,pins = <
+				0x190 0x13	/* mcasp0_aclkx.spi1_sclk, OUTPUT_PULLUP | MODE3 */
+				0x194 0x33	/* mcasp0_fsx.spi1_d0, INPUT_PULLUP | MODE3 */
+				0x198 0x13	/* mcasp0_axr0.spi1_d1, OUTPUT_PULLUP | MODE3 */
+				0x19c 0x13	/* mcasp0_ahclkr.spi1_cs0, OUTPUT_PULLUP | MODE3 */
+			>;
+		};
+	};
+
 	ocp {
 		uart1: serial@44e09000 {
 			status = "okay";
@@ -84,3 +95,9 @@ 
 &mmc1 {
 	vmmc-supply = <&ldo3_reg>;
 };
+
+&spi1 {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = <&spi1_pins>;
+};
diff --git a/arch/arm/boot/dts/am335x-evm.dts b/arch/arm/boot/dts/am335x-evm.dts
index d63fce8..8d5f660 100644
--- a/arch/arm/boot/dts/am335x-evm.dts
+++ b/arch/arm/boot/dts/am335x-evm.dts
@@ -124,3 +124,12 @@ 
 &mmc1 {
 	vmmc-supply = <&vmmc_reg>;
 };
+
+&spi0 {
+	status = "okay";
+	spi-flash@0 {
+		compatible = "spansion,s25fl064k", "m25p80";
+		spi-max-frequency = <24000000>;
+		reg = <0>;
+	};
+};
diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
index 26a6af7..063ecea 100644
--- a/arch/arm/boot/dts/am33xx.dtsi
+++ b/arch/arm/boot/dts/am33xx.dtsi
@@ -40,6 +40,15 @@ 
 		};
 	};
 
+	am3358_pinmux: pinmux@44e10800 {
+		compatible = "pinctrl-single";
+		reg = <0x44e10800 0x0238>;
+		#address-cells = <1>;
+		#size-cells = <0>;
+		pinctrl-single,register-width = <32>;
+		pinctrl-single,function-mask = <0x7f>;
+	};
+
 	/*
 	 * XXX: Use a flat representation of the AM33XX interconnect.
 	 * The real AM33XX interconnect network is quite complex.Since
@@ -261,6 +270,40 @@ 
 			status = "disabled";
 		};
 
+		spi0: spi@48030000 {
+			compatible = "ti,omap4-mcspi";
+			ti,hwmods = "spi0";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0x48030000 0x400>;
+			interrupt-parent = <&intc>;
+			interrupt = <65>;
+			dmas = <&edma 16
+				&edma 17
+				&edma 18
+				&edma 19>;
+			dma-names = "tx0", "rx0", "tx1", "rx1";
+			ti,spi-num-cs = <2>;
+			status = "disabled";
+		};
+
+		spi1: spi@481a0000 {
+			compatible = "ti,omap4-mcspi";
+			ti,hwmods = "spi1";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0x481a0000 0x400>;
+			interrupt-parent = <&intc>;
+			interrupt = <125>;
+			dmas = <&edma 42
+				&edma 43
+				&edma 44
+				&edma 45>;
+			dma-names = "tx0", "rx0", "tx1", "rx1";
+			ti,spi-num-cs = <2>;
+			status = "disabled";
+		};
+
 		wdt2: wdt@44e35000 {
 			compatible = "ti,omap3-wdt";
 			ti,hwmods = "wd_timer2";