ARM: LEGO MINDSTORMS EV3 Bluetooth support
Subsystems (2)
cover 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(+)
Signature · 1 line
2.17.0
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.
--- arch/arm/boot/dts/da850-lego-ev3.dts | 82 ++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+)
arch/arm/boot/dts/da850-lego-ev3.dts +82 -0
@@ -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 at 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 at 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 {
Signature · 1 line
2.17.0
Re: [PATCH 1/2] ARM: dts: da850-lego-ev3: Add Bluetooth nodes
Quoted 4 lines · David Lechner
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
PATCH 2/2 ARM: davinci_all_defconfig: Enable Bluetooth
In reply to David LechnerThis enables Bluetooth modules in davinic_all_defconfig needed for LEGO MINDSTORMS EV3.
--- arch/arm/configs/davinci_all_defconfig | 9 +++++++++ 1 file changed, 9 insertions(+)
arch/arm/configs/davinci_all_defconfig +9 -0
@@ -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
Signature · 1 line
2.17.0
Re: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth
Quoted 1 line · David Lechner
This enables Bluetooth modules in
davinic_all_defconfigneeded for LEGO
davinci_all_defconfig
Quoted 8 lines
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
Re: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth
Quoted 7 lines · Sekhar Nori
Quoted 1 line · David Lechner
This enables Bluetooth modules in
davinic_all_defconfigneeded for LEGO
davinci_all_defconfigQuoted 2 lines
MINDSTORMS EV3.
Quoted 9 lines
Quoted 6 lines
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
Re: [PATCH 2/2] ARM: davinci_all_defconfig: Enable Bluetooth
Quoted 27 lines · David Lechner
Quoted 7 lines · Sekhar Nori
Quoted 1 line · David Lechner
This enables Bluetooth modules in
davinic_all_defconfigneeded for LEGO
davinci_all_defconfigQuoted 2 lines
MINDSTORMS EV3.
Quoted 9 lines
Quoted 6 lines
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).
Quoted 3 lines
????? If unsure, say Y.
????depends on TTY
????depends onSERIAL_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
Hi Sekhar,
Quoted 6 lines · David Lechner
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.
Quoted 8 lines
David Lechner (2):
ARM: dts: da850-lego-ev3: Add Bluetooth nodes
ARM:davinci_all_defconfig: Enable Bluetootharch/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.