RE: [PATCH] am437x-gp-evm: add wilink8 support

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

 



Hi Peter,

> -----Original Message-----
> From: Peter Hurley [mailto:peter@xxxxxxxxxxxxxxxxxx]
> Sent: Monday, May 04, 2015 2:02 PM
> To: Reizer, Eyal; Eyal Reizer
> Cc: tony@xxxxxxxxxxx; robh+dt@xxxxxxxxxx; pawel.moll@xxxxxxx;
> mark.rutland@xxxxxxx; ijc+devicetree@xxxxxxxxxxxxxx;
> galak@xxxxxxxxxxxxxx; linux@xxxxxxxxxxxxxxxx; linux-omap@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH] am437x-gp-evm: add wilink8 support
> 
> On 05/03/2015 09:44 AM, Reizer, Eyal wrote:
> > Hi Peter,
> >
> >> -----Original Message-----
> >> From: Peter Hurley [mailto:peter@xxxxxxxxxxxxxxxxxx]
> >> Sent: Sunday, May 03, 2015 4:26 PM
> >> To: Reizer, Eyal; Eyal Reizer
> >> Cc: tony@xxxxxxxxxxx; robh+dt@xxxxxxxxxx; pawel.moll@xxxxxxx;
> >> mark.rutland@xxxxxxx; ijc+devicetree@xxxxxxxxxxxxxx;
> >> galak@xxxxxxxxxxxxxx; linux@xxxxxxxxxxxxxxxx;
> >> linux-omap@xxxxxxxxxxxxxxx
> >> Subject: Re: [PATCH] am437x-gp-evm: add wilink8 support
> >>
> >> On 05/03/2015 08:47 AM, Reizer, Eyal wrote:
> >>> Hi Peter,
> >>>
> >>>> -----Original Message-----
> >>>> From: Peter Hurley [mailto:peter@xxxxxxxxxxxxxxxxxx]
> >>>> Sent: Sunday, May 03, 2015 2:46 PM
> >>>> To: Eyal Reizer
> >>>> Cc: tony@xxxxxxxxxxx; robh+dt@xxxxxxxxxx; pawel.moll@xxxxxxx;
> >>>> mark.rutland@xxxxxxx; ijc+devicetree@xxxxxxxxxxxxxx;
> >>>> galak@xxxxxxxxxxxxxx; linux@xxxxxxxxxxxxxxxx;
> >>>> linux-omap@xxxxxxxxxxxxxxx; Reizer, Eyal
> >>>> Subject: Re: [PATCH] am437x-gp-evm: add wilink8 support
> >>>>
> >>>> Hi Eyal,
> >>>>
> >>>> On 04/30/2015 05:15 AM, Eyal Reizer wrote:
> >>>>> enable mmc3 used for wlan and uart3 used for bluetooth
> >>>>>
> >>>>> configure the gpios used for wlan and bluetooth controls
> >>>>>
> >>>>> add fixed voltage regulator used for wlan power control
> >>>>>
> >>>>> Configure shared transport support for uart3
> >>>>>
> >>>>> Signed-off-by: Eyal Reizer <eyalr@xxxxxx>
> >>>>> ---
> >>>>>  arch/arm/boot/dts/am437x-gp-evm.dts  |  114
> >>>> ++++++++++++++++++++++++++++++++++
> >>>>>  include/dt-bindings/pinctrl/am43xx.h |    1 +
> >>>>>  2 files changed, 115 insertions(+)
> >>>>>
> >>>>> diff --git a/arch/arm/boot/dts/am437x-gp-evm.dts
> >>>>> b/arch/arm/boot/dts/am437x-gp-evm.dts
> >>>>> index 26956cb..2b2f715 100644
> >>>>> --- a/arch/arm/boot/dts/am437x-gp-evm.dts
> >>>>> +++ b/arch/arm/boot/dts/am437x-gp-evm.dts
> >>>>> @@ -21,6 +21,7 @@
> >>>>>
> >>>>>  	aliases {
> >>>>>  		display0 = &lcd0;
> >>>>> +		serial3 = &uart3;
> >>>>>  	};
> >>>>>
> >>>>>  	vmmcsd_fixed: fixedregulator-sd { @@ -42,6 +43,15 @@
> >>>>>  		gpio = <&gpio5 7 GPIO_ACTIVE_HIGH>;
> >>>>>  	};
> >>>>>
> >>>>> +	vmmcwl_fixed: fixedregulator-mmcwl {
> >>>>> +		compatible = "regulator-fixed";
> >>>>> +		regulator-name = "vmmcwl_fixed";
> >>>>> +		regulator-min-microvolt = <1800000>;
> >>>>> +		regulator-max-microvolt = <1800000>;
> >>>>> +		gpio = <&gpio1 20 GPIO_ACTIVE_HIGH>;
> >>>>> +		enable-active-high;
> >>>>> +	};
> >>>>> +
> >>>>>  	backlight {
> >>>>>  		compatible = "pwm-backlight";
> >>>>>  		pwms = <&ecap0 0 50000 PWM_POLARITY_INVERTED>; @@
> >>>> -106,9 +116,25 @@
> >>>>>  			};
> >>>>>  		};
> >>>>>  	};
> >>>>> +
> >>>>> +	kim {
> >>>>> +		compatible = "kim";
> >>>>> +		nshutdown_gpio = <48>; /* Bank1, pin16 */
> >>>>> +		dev_name = "/dev/ttyS3";
> >>>>> +		flow_cntrl = <1>;
> >>>>> +		baud_rate = <3000000>;
> >>>>> +	};
> >>>>> +
> >>>>> +	btwilink {
> >>>>> +		compatible = "btwilink";
> >>>>> +	};
> >>>>
> >>>> I'd really like to see TI working _with_ the Linux kernel bluetooth
> >>>> stack, rather than working *around* it.
> >>>>
> >>>> The st_kim driver is really a mess, and wilink8 has no other
> >>>> channels but BT, which the hci_ll BT protocol driver already handles.
> >>>>
> >>>
> >>> Wilink8 has both Bluetooth as well as GPS using the same UART.
> >>
> >> Oh, great!
> >>
> >> What part is that? I've been all over the TI products search and have
> >> only found the WL183x and WL180x series, neither of which support GPS.
> >>
> >
> > See the below link.
> > http://www.jorjin.com.tw/#!wg7871-bn/c246o
> 
> Oh, so this isn't a part that can actually be plugged into the dedicated COM8
> header?
> 
> IOW, the only existing h/w for that header is bluetooth only.
> 
> >>> So the shared transport is needed also for working with the kernel
> >> Bluetooth stack.
> 
> Not true.
> The kernel bluetooth stack runs fine on wilink8, by simply enabling the BT_EN
> gpio.
> 
> Moreover, if this patch goes upstream, all _future_ users will be forced to use
> st_kim, even though they only have bluetooth-only h/w.
> 
> >>> The st_kim driver indeed needs some rework and it will be looked at
> >> regardless.
> >>> Still we want to have wilink8 Bluetooth functional in upstream with
> >>> the
> >> driver that is there today.
> 
> That's trivially possible without the kim/btwilink hunk above (eg., with
> userspace sysfs gpio).
> 

OK, Understood.
I will remove the kim/btwilink part from the device tree patch, leaving only wlan and uart pin muxing and submit a v2.

Best Regards,
Eyal

> 
> 
> >>>
> >>>>
> >>>>>  };
> >>>>>
> >>>>>  &am43xx_pinmux {
> >>>>> +	pinctrl-names = "default", "sleep";
> >>>>> +	pinctrl-0 = <&wlan_pins_default>;
> >>>>> +	pinctrl-1 = <&wlan_pins_sleep>;
> >>>>> +
> >>>>>  	i2c0_pins: i2c0_pins {
> >>>>>  		pinctrl-single,pins = <
> >>>>>  			0x188 (PIN_INPUT_PULLUP | SLEWCTRL_FAST |
> >>>> MUX_MODE0)  /*
> >>>>> i2c0_sda.i2c0_sda */ @@ -340,6 +366,53 @@
> >>>>>  			0x204 (DS0_PULL_UP_DOWN_EN | INPUT_EN |
> >>>> MUX_MODE7)  /* cam1_data7 mode 0*/
> >>>>>  		>;
> >>>>>  	};
> >>>>> +
> >>>>> +	mmc3_pins_default: pinmux_mmc3_pins_default {
> >>>>> +		pinctrl-single,pins = <
> >>>>> +			0x8c (PIN_INPUT_PULLUP | MUX_MODE3)
> /*
> >>>> gpmc_clk.mmc2_clk */
> >>>>> +			0x88 (PIN_INPUT_PULLUP | MUX_MODE3)
> /*
> >>>> gpmc_csn3.mmc2_cmd */
> >>>>> +			0x44 (PIN_INPUT_PULLUP | MUX_MODE3)
> /*
> >>>> gpmc_a1.mmc2_dat0 */
> >>>>> +			0x48 (PIN_INPUT_PULLUP | MUX_MODE3)
> /*
> >>>> gpmc_a2.mmc2_dat1 */
> >>>>> +			0x4c (PIN_INPUT_PULLUP | MUX_MODE3)
> /*
> >>>> gpmc_a3.mmc2_dat2 */
> >>>>> +			0x78 (PIN_INPUT_PULLUP | MUX_MODE3)
> /*
> >>>> gpmc_be1n.mmc2_dat3 */
> >>>>> +		>;
> >>>>> +	};
> >>>>> +
> >>>>> +	mmc3_pins_sleep: pinmux_mmc3_pins_sleep {
> >>>>> +		pinctrl-single,pins = <
> >>>>> +			0x8c (PIN_INPUT_PULLDOWN |
> MUX_MODE7)	/*
> >>>> gpmc_clk.mmc2_clk */
> >>>>> +			0x88 (PIN_INPUT_PULLDOWN |
> MUX_MODE7)	/*
> >>>> gpmc_csn3.mmc2_cmd */
> >>>>> +			0x44 (PIN_INPUT_PULLDOWN |
> MUX_MODE7)	/*
> >>>> gpmc_a1.mmc2_dat0 */
> >>>>> +			0x48 (PIN_INPUT_PULLDOWN |
> MUX_MODE7)	/*
> >>>> gpmc_a2.mmc2_dat1 */
> >>>>> +			0x4c (PIN_INPUT_PULLDOWN |
> MUX_MODE7)	/*
> >>>> gpmc_a3.mmc2_dat2 */
> >>>>> +			0x78 (PIN_INPUT_PULLDOWN |
> MUX_MODE7)	/*
> >>>> gpmc_be1n.mmc2_dat3 */
> >>>>> +		>;
> >>>>> +	};
> >>>>> +
> >>>>> +	wlan_pins_default: pinmux_wlan_pins_default {
> >>>>> +		pinctrl-single,pins = <
> >>>>> +			0x50 (PIN_OUTPUT_PULLDOWN |
> MUX_MODE7)
> >>>> 		/* gpmc_a4.gpio1_20 WL_EN */
> >>>>> +			0x5c (PIN_INPUT | WAKEUP_ENABLE |
> MUX_MODE7)
> >>>> 	/* gpmc_a7.gpio1_23 WL_IRQ*/
> >>>>> +			0x40 (PIN_OUTPUT_PULLDOWN |
> MUX_MODE7)
> >>>> 		/* gpmc_a0.gpio1_16 BT_EN*/
> >>>>> +		>;
> >>>>> +	};
> >>>>> +
> >>>>> +	wlan_pins_sleep: pinmux_wlan_pins_sleep {
> >>>>> +		pinctrl-single,pins = <
> >>>>> +			0x50 (PIN_OUTPUT_PULLDOWN |
> MUX_MODE7)
> >>>> 		/* gpmc_a4.gpio1_20 WL_EN */
> >>>>> +			0x5c (PIN_INPUT | WAKEUP_ENABLE |
> MUX_MODE7)
> >>>> 	/* gpmc_a7.gpio1_23 WL_IRQ*/
> >>>>> +			0x40 (PIN_OUTPUT_PULLUP | MUX_MODE7)
> >>>> 	/* gpmc_a0.gpio1_16 BT_EN*/
> >>>>> +		>;
> >>>>> +	};
> >>>>> +
> >>>>> +	uart3_pins: uart3_pins {
> >>>>> +		pinctrl-single,pins = <
> >>>>> +			0x228 (PIN_INPUT | MUX_MODE0)
> 	/*
> >>>> uart3_rxd.uart3_rxd */
> >>>>> +			0x22c (PIN_OUTPUT_PULLDOWN |
> MUX_MODE0) /*
> >>>> uart3_txd.uart3_txd */
> >>>>> +			0x230 (PIN_INPUT_PULLUP | MUX_MODE0)
> 	/*
> >>>> uart3_ctsn.uart3_ctsn */
> >>>>> +			0x234 (PIN_OUTPUT_PULLDOWN |
> MUX_MODE0) /*
> >>>> uart3_rtsn.uart3_rtsn */
> >>>>> +		>;
> >>>>> +	};
> >>>>>  };
> >>>>>
> >>>>>  &i2c0 {
> >>>>> @@ -446,6 +519,10 @@
> >>>>>  	status = "okay";
> >>>>>  };
> >>>>>
> >>>>> +&gpio1 {
> >>>>> +	status = "okay";
> >>>>> +};
> >>>>> +
> >>>>>  &gpio3 {
> >>>>>  	status = "okay";
> >>>>>  };
> >>>>> @@ -468,6 +545,43 @@
> >>>>>  	cd-gpios = <&gpio0 6 GPIO_ACTIVE_HIGH>;  };
> >>>>>
> >>>>> +&mmc3 {
> >>>>> +	status = "okay";
> >>>>> +	/* these are on the crossbar and are outlined in the
> >>>>> +	   xbar-event-map element */
> >>>>> +	dmas = <&edma 30
> >>>>> +		&edma 31>;
> >>>>> +	dma-names = "tx", "rx";
> >>>>> +	vmmc-supply = <&vmmcwl_fixed>;
> >>>>> +	bus-width = <4>;
> >>>>> +	pinctrl-names = "default", "sleep";
> >>>>> +	pinctrl-0 = <&mmc3_pins_default>;
> >>>>> +	pinctrl-1 = <&mmc3_pins_sleep>;
> >>>>
> >>>> So the wilink8 module is the only thing that can be plugged into
> >>>> the camera header?
> >>>>
> >>>> I think all this really needs to go into a DT overlay.
> >>>>
> >>>
> >>> Am437x-evm has a dedicated com8 connector used for connecting the
> >> wilink8 module.
> >>> It is not using the camera header.
> >>>
> >>>> Regards,
> >>>> Peter Hurley
> >>>>
> >>>>
> >>>>> +	cap-power-off-card;
> >>>>> +	keep-power-in-suspend;
> >>>>> +	ti,non-removable;
> >>>>> +
> >>>>> +	#address-cells = <1>;
> >>>>> +	#size-cells = <0>;
> >>>>> +	wlcore: wlcore@0 {
> >>>>> +		compatible = "ti,wl1835";
> >>>>> +		reg = <2>;
> >>>>> +		interrupt-parent = <&gpio1>;
> >>>>> +		interrupts = <23 IRQ_TYPE_LEVEL_HIGH>;
> >>>>> +	};
> >>>>> +};
> >>>>> +
> >>>>> +&edma {
> >>>>> +	ti,edma-xbar-event-map = /bits/ 16 <1 30
> >>>>> +					    2 31>;
> >>>>> +};
> >>>>> +
> >>>>> +&uart3 {
> >>>>> +	status = "okay";
> >>>>> +	pinctrl-names = "default";
> >>>>> +	pinctrl-0 = <&uart3_pins>;
> >>>>> +};
> >>>>> +
> >>>>>  &usb2_phy1 {
> >>>>>  	status = "okay";
> >>>>>  };
> >>>>> diff --git a/include/dt-bindings/pinctrl/am43xx.h
> >>>>> b/include/dt-bindings/pinctrl/am43xx.h
> >>>>> index 5f4d0189..b00bbc9 100644
> >>>>> --- a/include/dt-bindings/pinctrl/am43xx.h
> >>>>> +++ b/include/dt-bindings/pinctrl/am43xx.h
> >>>>> @@ -21,6 +21,7 @@
> >>>>>  #define SLEWCTRL_SLOW		(1 << 19)
> >>>>>  #define SLEWCTRL_FAST		0
> >>>>>  #define DS0_PULL_UP_DOWN_EN	(1 << 27)
> >>>>> +#define WAKEUP_ENABLE		(1 << 29)
> >>>>>
> >>>>>  #define PIN_OUTPUT		(PULL_DISABLE)
> >>>>>  #define PIN_OUTPUT_PULLUP	(PULL_UP)
> >>>>
> >>>
> >
> > Best Regards,
> > Eyal
> >

��.n��������+%������w��{.n�����{�������ܨ}���Ơz�j:+v�����w����ޙ��&�)ߡ�a����z�ޗ���ݢj��w�f





[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux