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). Regards, Peter Hurley >>> >>>> >>>>> }; >>>>> >>>>> &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 > -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html