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 > > > So the shared transport is needed also for working with the kernel > Bluetooth stack. > > > > 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. > > > >> > >>> }; > >>> > >>> &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