2018-05-31 20:28:29

by David Lechner

[permalink] [raw]
Subject: [PATCH 0/2] ARM: LEGO MINDSTORMS EV3 Bluetooth support

This series adds Bluetooth support to LEGO MINDSTORMS EV3.

The pwm-clock depends on the common clock framework, so this requires the
recent davinci common clock series to switch to the common clock framework
before it will actually work.

David Lechner (2):
ARM: dts: da850-lego-ev3: Add Bluetooth nodes
ARM: davinci_all_defconfig: Enable Bluetooth

arch/arm/boot/dts/da850-lego-ev3.dts | 82 ++++++++++++++++++++++++++
arch/arm/configs/davinci_all_defconfig | 9 +++
2 files changed, 91 insertions(+)

--
2.17.0



2018-05-31 20:27:20

by David Lechner

[permalink] [raw]
Subject: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth

This enables Bluetooth modules in davinic_all_defconfig needed for LEGO
MINDSTORMS EV3.

Signed-off-by: David Lechner <[email protected]>
---
arch/arm/configs/davinci_all_defconfig | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/arch/arm/configs/davinci_all_defconfig b/arch/arm/configs/davinci_all_defconfig
index a1b6e106b867..f8448c4703c1 100644
--- a/arch/arm/configs/davinci_all_defconfig
+++ b/arch/arm/configs/davinci_all_defconfig
@@ -54,6 +54,13 @@ CONFIG_INET=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_NETFILTER=y
+CONFIG_BT=m
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_BNEP=m
+CONFIG_BT_HIDP=m
+CONFIG_BT_LEDS=y
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_LL=y
CONFIG_DEVTMPFS=y
CONFIG_DEVTMPFS_MOUNT=y
CONFIG_FW_LOADER=m
@@ -113,6 +120,7 @@ CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=3
CONFIG_SERIAL_8250_RUNTIME_UARTS=3
CONFIG_SERIAL_OF_PLATFORM=y
+CONFIG_SERIAL_DEV_BUS=y
# CONFIG_HW_RANDOM is not set
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
@@ -212,6 +220,7 @@ CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_OMAP=m
CONFIG_DMADEVICES=y
CONFIG_TI_EDMA=y
+CONFIG_COMMON_CLK_PWM=m
CONFIG_REMOTEPROC=m
CONFIG_DA8XX_REMOTEPROC=m
CONFIG_MEMORY=y
--
2.17.0


2018-05-31 20:27:42

by David Lechner

[permalink] [raw]
Subject: [PATCH 1/2] ARM: dts: da850-lego-ev3: Add Bluetooth nodes

This adds nodes for describing the Bluetooth chip and connections on
LEGO MINDSTORMS EV3 to da850-lego-ev3.dts.

Signed-off-by: David Lechner <[email protected]>
---
arch/arm/boot/dts/da850-lego-ev3.dts | 82 ++++++++++++++++++++++++++++
1 file changed, 82 insertions(+)

diff --git a/arch/arm/boot/dts/da850-lego-ev3.dts b/arch/arm/boot/dts/da850-lego-ev3.dts
index bef42dc78817..fe4cc87394b9 100644
--- a/arch/arm/boot/dts/da850-lego-ev3.dts
+++ b/arch/arm/boot/dts/da850-lego-ev3.dts
@@ -187,6 +187,15 @@
rechargeable-gpios = <&gpio 136 GPIO_ACTIVE_LOW>;
};

+ bt_slow_clk: bt-clock {
+ pinctrl-names = "default";
+ pinctrl-0 = <&ecap2_pins>, <&bt_clock_bias>;
+ compatible = "pwm-clock";
+ #clock-cells = <0>;
+ clock-frequency = <32768>;
+ pwms = <&ecap2 0 30518 0>;
+ };
+
/* ARM local RAM */
memory@ffff0000 {
compatible = "syscon", "simple-mfd";
@@ -251,6 +260,20 @@
bias-disable;
};
};
+
+ bt_clock_bias: bt-clock-bias-groups {
+ disable {
+ groups = "cp2";
+ bias-disable;
+ };
+ };
+
+ bt_pic_bias: bt-pic-bias-groups {
+ disable {
+ groups = "cp20";
+ bias-disable;
+ };
+ };
};

/* Input port 1 */
@@ -260,6 +283,22 @@
pinctrl-0 = <&serial1_rxtx_pins>;
};

+&serial2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&serial2_rxtx_pins>, <&serial2_rtscts_pins>, <&bt_pic_bias>;
+ status = "okay";
+
+ bluetooth {
+ compatible = "ti,cc2560";
+ clocks = <&bt_slow_clk>;
+ clock-names = "ext_clock";
+ enable-gpios = <&gpio 73 GPIO_ACTIVE_HIGH>;
+ max-speed = <2000000>;
+ nvmem-cells = <&bdaddr>;
+ nvmem-cell-names = "bd-address";
+ };
+};
+
&rtc0 {
status = "okay";
};
@@ -278,6 +317,12 @@
pagesize = <64>;
read-only;
reg = <0x50>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ bdaddr: bdaddr@3f06 {
+ reg = <0x3f06 0x06>;
+ };
};
};

@@ -362,6 +407,10 @@
};
};

+&ecap2 {
+ status = "okay";
+};
+
&ehrpwm0 {
status = "okay";
};
@@ -375,6 +424,39 @@
gpios = <6 GPIO_ACTIVE_HIGH>;
output-high;
};
+
+ /* Don't impede Bluetooth clock signal */
+ bt_clock_en {
+ gpio-hog;
+ gpios = <5 GPIO_ACTIVE_HIGH>;
+ input;
+ };
+
+ /*
+ * There is a PIC microcontroller for interfacing with an Apple MFi
+ * chip. This interferes with normal Bluetooth operation, so we need
+ * to make sure it is turned off. Note: The publicly available
+ * schematics from LEGO don't show that these pins are connected to
+ * anything, but they are present in the source code from LEGO.
+ */
+
+ bt_pic_en {
+ gpio-hog;
+ gpios = <51 GPIO_ACTIVE_HIGH>;
+ output-low;
+ };
+
+ bt_pic_rst {
+ gpio-hog;
+ gpios = <78 GPIO_ACTIVE_HIGH>;
+ output-high;
+ };
+
+ bt_pic_cts {
+ gpio-hog;
+ gpios = <87 GPIO_ACTIVE_HIGH>;
+ input;
+ };
};

&usb_phy {
--
2.17.0


2018-06-26 16:52:50

by David Lechner

[permalink] [raw]
Subject: Re: [PATCH 0/2] ARM: LEGO MINDSTORMS EV3 Bluetooth support

Hi Sekhar,

On 05/31/2018 03:25 PM, David Lechner wrote:
> This series adds Bluetooth support to LEGO MINDSTORMS EV3.
>
> The pwm-clock depends on the common clock framework, so this requires the
> recent davinci common clock series to switch to the common clock framework
> before it will actually work.
>
> David Lechner (2):
> ARM: dts: da850-lego-ev3: Add Bluetooth nodes
> ARM: davinci_all_defconfig: Enable Bluetooth
>
> arch/arm/boot/dts/da850-lego-ev3.dts | 82 ++++++++++++++++++++++++++
> arch/arm/configs/davinci_all_defconfig | 9 +++
> 2 files changed, 91 insertions(+)
>

After "ARM: dts: da850: Add power-domains to PWM nodes", this is ready to
apply.

2018-06-27 11:23:54

by Sekhar Nori

[permalink] [raw]
Subject: Re: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth

On Friday 01 June 2018 01:55 AM, David Lechner wrote:
> This enables Bluetooth modules in davinic_all_defconfig needed for LEGO

davinci_all_defconfig

> MINDSTORMS EV3.
>
> Signed-off-by: David Lechner <[email protected]>
> ---
> arch/arm/configs/davinci_all_defconfig | 9 +++++++++
> 1 file changed, 9 insertions(+)

> +CONFIG_SERIAL_DEV_BUS=y

Any reason to build this into the kernel?

Thanks,
Sekhar

2018-06-27 12:19:48

by Sekhar Nori

[permalink] [raw]
Subject: Re: [PATCH 1/2] ARM: dts: da850-lego-ev3: Add Bluetooth nodes

On Friday 01 June 2018 01:55 AM, David Lechner wrote:
> This adds nodes for describing the Bluetooth chip and connections on
> LEGO MINDSTORMS EV3 to da850-lego-ev3.dts.
>
> Signed-off-by: David Lechner <[email protected]>

Applied for v4.19.

Thanks,
Sekhar

2018-06-27 19:43:46

by David Lechner

[permalink] [raw]
Subject: Re: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth

On 06/27/2018 06:11 AM, Sekhar Nori wrote:
> On Friday 01 June 2018 01:55 AM, David Lechner wrote:
>> This enables Bluetooth modules in davinic_all_defconfig needed for LEGO
>
> davinci_all_defconfig
>
>> MINDSTORMS EV3.
>>
>> Signed-off-by: David Lechner <[email protected]>
>> ---
>> arch/arm/configs/davinci_all_defconfig | 9 +++++++++
>> 1 file changed, 9 insertions(+)
>
>> +CONFIG_SERIAL_DEV_BUS=y
>
> Any reason to build this into the kernel?
>

Yes:


config SERIAL_DEV_CTRL_TTYPORT
bool "Serial device TTY port controller"
help
Say Y here if you want to use the Serial device bus with common TTY
drivers (e.g. serial drivers).

If unsure, say Y.
depends on TTY
depends on SERIAL_DEV_BUS != m
default y

endif


2018-06-29 16:15:21

by Sekhar Nori

[permalink] [raw]
Subject: Re: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth

On Wednesday 27 June 2018 10:43 PM, David Lechner wrote:
> On 06/27/2018 06:11 AM, Sekhar Nori wrote:
>> On Friday 01 June 2018 01:55 AM, David Lechner wrote:
>>> This enables Bluetooth modules in davinic_all_defconfig needed for LEGO
>>
>> davinci_all_defconfig
>>
>>> MINDSTORMS EV3.
>>>
>>> Signed-off-by: David Lechner <[email protected]>
>>> ---
>>>   arch/arm/configs/davinci_all_defconfig | 9 +++++++++
>>>   1 file changed, 9 insertions(+)
>>
>>> +CONFIG_SERIAL_DEV_BUS=y
>>
>> Any reason to build this into the kernel?
>>
>
> Yes:
>
>
> config SERIAL_DEV_CTRL_TTYPORT
>     bool "Serial device TTY port controller"
>     help
>       Say Y here if you want to use the Serial device bus with common TTY
>       drivers (e.g. serial drivers).
>
>       If unsure, say Y.
>     depends on TTY
>     depends on SERIAL_DEV_BUS != m

Patch applied to v4.19/defconfig. I added a note about this to commit
text in case I wonder again at a later time.

Thanks,
Sekhar