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
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
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
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.
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
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
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
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