All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] lego: ev3: use mainline kernel
@ 2017-05-15 23:21 David Lechner
  2017-05-16 20:56 ` Peter Korsgaard
  0 siblings, 1 reply; 4+ messages in thread
From: David Lechner @ 2017-05-15 23:21 UTC (permalink / raw)
  To: buildroot

It is finally possible to boot LEGO MINDSTORMS EV3 from the mainline
Linux kernel. This patch updates the defconfg to use the mainline kernel
instead of the custom ev3dev kernel.

Signed-off-by: David Lechner <david@lechnology.com>
---
 board/lego/ev3/busybox.fragment                    |  3 +
 board/lego/ev3/genimage.cfg                        |  2 +-
 board/lego/ev3/linux.fragment                      | 49 +++++++++++++
 .../patches/linux/0001-adc-device-tree-node.patch  | 56 ++++++++++++++
 .../linux/0002-sound-device-tree-node.patch        | 85 ++++++++++++++++++++++
 board/lego/ev3/post-image.sh                       |  2 +
 board/lego/ev3/readme.txt                          |  9 +--
 configs/lego_ev3_defconfig                         | 20 +++--
 8 files changed, 210 insertions(+), 16 deletions(-)
 create mode 100644 board/lego/ev3/busybox.fragment
 create mode 100644 board/lego/ev3/patches/linux/0001-adc-device-tree-node.patch
 create mode 100644 board/lego/ev3/patches/linux/0002-sound-device-tree-node.patch

diff --git a/board/lego/ev3/busybox.fragment b/board/lego/ev3/busybox.fragment
new file mode 100644
index 0000000..901274d
--- /dev/null
+++ b/board/lego/ev3/busybox.fragment
@@ -0,0 +1,3 @@
+CONFIG_BEEP=y
+CONFIG_FEATURE_BEEP_FREQ=440
+CONFIG_FEATURE_BEEP_LENGTH_MS=250
diff --git a/board/lego/ev3/genimage.cfg b/board/lego/ev3/genimage.cfg
index 6b8546c..3568295 100644
--- a/board/lego/ev3/genimage.cfg
+++ b/board/lego/ev3/genimage.cfg
@@ -19,7 +19,7 @@ image flash.bin {
 		size = 320K
 	}
 	partition uimage {
-		image = "uImage"
+		image = "uImage.da850-lego-ev3"
 		size = 3M
 		offset = 0x50000
 	}
diff --git a/board/lego/ev3/linux.fragment b/board/lego/ev3/linux.fragment
index 5593636..439cccf 100644
--- a/board/lego/ev3/linux.fragment
+++ b/board/lego/ev3/linux.fragment
@@ -1,6 +1,55 @@
+CONFIG_ARCH_DAVINCI_DM644x=n
+CONFIG_ARCH_DAVINCI_DM355=n
+CONFIG_ARCH_DAVINCI_DM646x=n
+CONFIG_ARCH_DAVINCI_DA830=n
+CONFIG_ARCH_DAVINCI_DM365=n
+CONFIG_MACH_SFFSDR=n
+CONFIG_MACH_NEUROS_OSD2=n
+CONFIG_MACH_DM355_LEOPARD=n
+CONFIG_MACH_MITYOMAPL138=n
+CONFIG_MACH_OMAPL138_HAWKBOARD=n
+CONFIG_MACH_DAVINCI_DA850_EVM=n
+CONFIG_ATA=n
+CONFIG_MTD=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_M25P80=y
+CONFIG_MTD_SPI_NOR=y
+CONFIG_MTD_UBI=y
 CONFIG_BLK_DEV_RAM=y
 CONFIG_BLK_DEV_RAM_COUNT=1
 CONFIG_BLK_DEV_RAM_SIZE=32768
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_PWM_BEEPER=y
+CONFIG_SPI_DAVINCI=y
+CONFIG_PINCTRL_DA850_PUPD=y
+CONFIG_V4L_PLATFORM_DRIVERS=n
+CONFIG_SOUND=n
+CONFIG_SND=n
+CONFIG_SND_SOC=n
+CONFIG_SND_EDMA_SOC=n
+CONFIG_SND_DAVINCI_SOC_MCASP=n
+CONFIG_SND_SOC_TLV320AIC3X=n
+CONFIG_SND_SIMPLE_CARD=n
+CONFIG_DAVINCI_WATCHDOG=y
+CONFIG_USB=y
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_DAVINCI=y
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_GADGET=y
+CONFIG_USB_MUSB_DA8XX=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_USB_GADGET=y
+CONFIG_LEDS_CLASS=y
+CONFIG_LEDS_GPIO=y
+CONFIG_LEDS_TRIGGER_MTD=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_CPU=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_DRV_OMAP=y
+CONFIG_IIO=y
+CONFIG_TI_ADS7950=y
+CONFIG_PWM_TIECAP=y
+CONFIG_PWM_TIEHRPWM=y
 CONFIG_SQUASHFS=y
 CONFIG_SQUASHFS_LZ4=y
 CONFIG_SQUASHFS_LZO=y
diff --git a/board/lego/ev3/patches/linux/0001-adc-device-tree-node.patch b/board/lego/ev3/patches/linux/0001-adc-device-tree-node.patch
new file mode 100644
index 0000000..dabda1e
--- /dev/null
+++ b/board/lego/ev3/patches/linux/0001-adc-device-tree-node.patch
@@ -0,0 +1,56 @@
+From 8a81ff173c5c9a0ab1df84fab17971dbcce8490a Mon Sep 17 00:00:00 2001
+From: David Lechner <david@lechnology.com>
+Date: Tue, 7 Feb 2017 13:22:07 -0600
+Subject: ARM: da850-lego-ev3: Add device tree node for A/DC
+
+This adds a node for the TI ADS7957 analog/digital converter on LEGO
+MINDSTORMS EV3 as well as a regulator node that is used by the A/DC node.
+
+Signed-off-by: David Lechner <david@lechnology.com>
+Signed-off-by: Sekhar Nori <nsekhar@ti.com>
+---
+ arch/arm/boot/dts/da850-lego-ev3.dts | 21 +++++++++++++++++++++
+ 1 file changed, 21 insertions(+)
+
+diff --git a/arch/arm/boot/dts/da850-lego-ev3.dts b/arch/arm/boot/dts/da850-lego-ev3.dts
+index 112ec92..0309537 100644
+--- a/arch/arm/boot/dts/da850-lego-ev3.dts
++++ b/arch/arm/boot/dts/da850-lego-ev3.dts
+@@ -139,6 +139,19 @@
+ 		enable-active-high;
+ 		regulator-boot-on;
+ 	};
++
++	/*
++	 * This is a simple voltage divider on VCC5V to provide a 2.5V
++	 * reference signal to the ADC.
++	 */
++	adc_ref: regulator2 {
++		compatible = "regulator-fixed";
++		regulator-name = "adc ref";
++		regulator-min-microvolt = <2500000>;
++		regulator-max-microvolt = <2500000>;
++		regulator-boot-on;
++		vin-supply = <&vcc5v>;
++	};
+ };
+ 
+ &pmx_core {
+@@ -293,6 +306,14 @@
+ 			};
+ 		};
+ 	};
++
++	adc: adc at 3 {
++		compatible = "ti,ads7957";
++		reg = <3>;
++		#io-channel-cells = <1>;
++		spi-max-frequency = <10000000>;
++		vref-supply = <&adc_ref>;
++	};
+ };
+ 
+ &gpio {
+-- 
+cgit v1.1
+
diff --git a/board/lego/ev3/patches/linux/0002-sound-device-tree-node.patch b/board/lego/ev3/patches/linux/0002-sound-device-tree-node.patch
new file mode 100644
index 0000000..a095222
--- /dev/null
+++ b/board/lego/ev3/patches/linux/0002-sound-device-tree-node.patch
@@ -0,0 +1,85 @@
+From 7723d70bebd749ef24fef19db52d827c7fd7f858 Mon Sep 17 00:00:00 2001
+From: David Lechner <david@lechnology.com>
+Date: Tue, 7 Feb 2017 13:22:09 -0600
+Subject: ARM: da850-lego-ev3: Add device tree node for sound
+
+This adds a device tree node for sound on LEGO MINDSTORMS EV3. The EV3
+uses one of the SoC PWMs connected to an amplifier to create sound from
+a speaker.
+
+The PWM is passed through a low-pass filter, so it is actually possible
+to do PCM playback, but there is no existing driver, so just using
+pwm-beeper for now, since it is also a compatible mode of operation.
+
+Signed-off-by: David Lechner <david@lechnology.com>
+Signed-off-by: Sekhar Nori <nsekhar@ti.com>
+---
+ arch/arm/boot/dts/da850-lego-ev3.dts | 31 +++++++++++++++++++++++++++++++
+ 1 file changed, 31 insertions(+)
+
+diff --git a/arch/arm/boot/dts/da850-lego-ev3.dts b/arch/arm/boot/dts/da850-lego-ev3.dts
+index 0309537..c20580a 100644
+--- a/arch/arm/boot/dts/da850-lego-ev3.dts
++++ b/arch/arm/boot/dts/da850-lego-ev3.dts
+@@ -123,6 +123,14 @@
+ 		pinctrl-0 = <&system_power_pin>;
+ 	};
+ 
++	sound {
++		compatible = "pwm-beeper";
++		pinctrl-names = "default";
++		pinctrl-0 = <&ehrpwm0b_pins>;
++		pwms = <&ehrpwm0 1 1000000 0>;
++		amp-supply = <&amp>;
++	};
++
+ 	/*
+ 	 * This is a 5V current limiting regulator that is shared by USB,
+ 	 * the sensor (input) ports, the motor (output) ports and the A/DC.
+@@ -152,6 +160,18 @@
+ 		regulator-boot-on;
+ 		vin-supply = <&vcc5v>;
+ 	};
++
++	/*
++	 * This is the amplifier for the speaker.
++	 */
++	amp: regulator3 {
++		pinctrl-names = "default";
++		pinctrl-0 = <&amp_pins>;
++		compatible = "regulator-fixed";
++		regulator-name = "amp";
++		gpio = <&gpio 111 GPIO_ACTIVE_HIGH>;
++		enable-active-high;
++	};
+ };
+ 
+ &pmx_core {
+@@ -208,6 +228,13 @@
+ 			0x4c 0x00008000 0x0000f000
+ 		>;
+ 	};
++
++	amp_pins: pinmux_amp_pins {
++		pinctrl-single,bits = <
++			/* GP6[15] */
++			0x34 0x00000008 0x0000000f
++		>;
++	};
+ };
+ 
+ &pinconf {
+@@ -316,6 +343,10 @@
+ 	};
+ };
+ 
++&ehrpwm0 {
++	status = "okay";
++};
++
+ &gpio {
+ 	status = "okay";
+ };
+-- 
+cgit v1.1
+
diff --git a/board/lego/ev3/post-image.sh b/board/lego/ev3/post-image.sh
index 81626dc..553d27a 100755
--- a/board/lego/ev3/post-image.sh
+++ b/board/lego/ev3/post-image.sh
@@ -4,6 +4,8 @@ BOARD_DIR="$(dirname $0)"
 GENIMAGE_CFG="${BOARD_DIR}/genimage.cfg"
 GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"
 
+ln -sf "uImage.da850-lego-ev3" "${BINARIES_DIR}/uImage"
+
 rm -rf "${GENIMAGE_TMP}"
 
 genimage \
diff --git a/board/lego/ev3/readme.txt b/board/lego/ev3/readme.txt
index c40907c..8df91ac 100644
--- a/board/lego/ev3/readme.txt
+++ b/board/lego/ev3/readme.txt
@@ -13,12 +13,6 @@ See:
 - http://www.lego.com/en-us/mindstorms/products/ev3/31313-mindstorms-ev3/
 - http://www.ti.com/product/am1808
 
-The buildroot configuration uses the Linux kernel of the ev3dev project.
-See:
-- https://github.com/ev3dev/ev3-kernel/
-- https://github.com/ev3dev/lego-linux-drivers/
-- http://www.ev3dev.org/
-
 How it works
 ============
 
@@ -65,7 +59,8 @@ After building, you should obtain this tree:
     ??? rootfs.squashfs
     ??? sdcard.img
     ??? u-boot.bin
-    ??? uImage
+    ??? uImage -> uImage.da850-lego-ev3
+    ??? uImage.da850-lego-ev3
 
 Installation
 ============
diff --git a/configs/lego_ev3_defconfig b/configs/lego_ev3_defconfig
index 543a227..0996b8c 100644
--- a/configs/lego_ev3_defconfig
+++ b/configs/lego_ev3_defconfig
@@ -2,22 +2,26 @@
 BR2_arm=y
 BR2_arm926t=y
 
+# Build options
+BR2_GLOBAL_PATCH_DIR="board/lego/ev3/patches"
+
 # system
 BR2_TARGET_GENERIC_GETTY=y
 BR2_TARGET_GENERIC_GETTY_PORT="ttyS1"
 BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh"
-# Linux headers same as kernel, a 4.4 series
-BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y
 
 # Kernel
 BR2_LINUX_KERNEL=y
-BR2_LINUX_KERNEL_CUSTOM_GIT=y
-BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/ev3dev/ev3dev-kernel.git"
-BR2_LINUX_KERNEL_CUSTOM_REPO_VERSION="v4.4.19-15-ev3dev-ev3_1"
-BR2_LINUX_KERNEL_DEFCONFIG="ev3dev"
+BR2_LINUX_KERNEL_CUSTOM_VERSION=y
+BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.11"
+BR2_LINUX_KERNEL_DEFCONFIG="davinci_all"
 BR2_LINUX_KERNEL_CONFIG_FRAGMENT_FILES="board/lego/ev3/linux.fragment"
-BR2_LINUX_KERNEL_UIMAGE=y
-BR2_LINUX_KERNEL_EXT_EV3DEV_LINUX_DRIVERS=y
+BR2_LINUX_KERNEL_UIMAGE_LOADADDR="0xc0008000"
+BR2_LINUX_KERNEL_APPENDED_UIMAGE=y
+BR2_LINUX_KERNEL_INTREE_DTS_NAME="da850-lego-ev3"
+
+# Target packages
+BR2_PACKAGE_BUSYBOX_CONFIG_FRAGMENT_FILES="board/lego/ev3/busybox.fragment"
 
 # filesystem
 BR2_TARGET_ROOTFS_EXT2=y
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH 1/1] lego: ev3: use mainline kernel
  2017-05-15 23:21 [Buildroot] [PATCH 1/1] lego: ev3: use mainline kernel David Lechner
@ 2017-05-16 20:56 ` Peter Korsgaard
  2017-05-17 15:28   ` David Lechner
  0 siblings, 1 reply; 4+ messages in thread
From: Peter Korsgaard @ 2017-05-16 20:56 UTC (permalink / raw)
  To: buildroot

>>>>> "David" == David Lechner <david@lechnology.com> writes:

 > It is finally possible to boot LEGO MINDSTORMS EV3 from the mainline
 > Linux kernel. This patch updates the defconfg to use the mainline kernel
 > instead of the custom ev3dev kernel.

Great, thanks!

 >  .../patches/linux/0001-adc-device-tree-node.patch  | 56 ++++++++++++++
 >  .../linux/0002-sound-device-tree-node.patch        | 85 ++++++++++++++++++++++

I see these patches are already in mainline post-4.11, so that's great.

> +++ b/board/lego/ev3/genimage.cfg
 > @@ -19,7 +19,7 @@ image flash.bin {
 >  		size = 320K
 >  	}
 >  	partition uimage {
 > -		image = "uImage"
 > +		image = "uImage.da850-lego-ev3"
 >  		size = 3M
 >  		offset = 0x50000
 >  	}

I guess this change isn't strictly needed because of the symlink, but
OK.

> diff --git a/configs/lego_ev3_defconfig b/configs/lego_ev3_defconfig
 > index 543a227..0996b8c 100644
 > --- a/configs/lego_ev3_defconfig
 > +++ b/configs/lego_ev3_defconfig
 > @@ -2,22 +2,26 @@
 >  BR2_arm=y
 >  BR2_arm926t=y
 
 > +# Build options
 > +BR2_GLOBAL_PATCH_DIR="board/lego/ev3/patches"
 > +
 >  # system
 >  BR2_TARGET_GENERIC_GETTY=y
 >  BR2_TARGET_GENERIC_GETTY_PORT="ttyS1"
 >  BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh"
 > -# Linux headers same as kernel, a 4.4 series
 > -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y

This shouldn't be dropped (after changing to 4.11) as the defconfig
would otherwise break whenever 4.12 gets added.

Committed to next with that fixed, thanks.

I see you are still using a relatively old u-boot and ext3. Any reason
to not use 2017.05 and ext4?

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH 1/1] lego: ev3: use mainline kernel
  2017-05-16 20:56 ` Peter Korsgaard
@ 2017-05-17 15:28   ` David Lechner
  2017-05-17 19:49     ` Peter Korsgaard
  0 siblings, 1 reply; 4+ messages in thread
From: David Lechner @ 2017-05-17 15:28 UTC (permalink / raw)
  To: buildroot

On 05/16/2017 03:56 PM, Peter Korsgaard wrote:
>>>>>> "David" == David Lechner <david@lechnology.com> writes:
>
>  > It is finally possible to boot LEGO MINDSTORMS EV3 from the mainline
>  > Linux kernel. This patch updates the defconfg to use the mainline kernel
>  > instead of the custom ev3dev kernel.
>
> Great, thanks!
>
>  >  .../patches/linux/0001-adc-device-tree-node.patch  | 56 ++++++++++++++
>  >  .../linux/0002-sound-device-tree-node.patch        | 85 ++++++++++++++++++++++
>
> I see these patches are already in mainline post-4.11, so that's great.
>
>> +++ b/board/lego/ev3/genimage.cfg
>  > @@ -19,7 +19,7 @@ image flash.bin {
>  >  		size = 320K
>  >  	}
>  >  	partition uimage {
>  > -		image = "uImage"
>  > +		image = "uImage.da850-lego-ev3"
>  >  		size = 3M
>  >  		offset = 0x50000
>  >  	}
>
> I guess this change isn't strictly needed because of the symlink, but
> OK.

The symlink is something that I meant to ask about but forgot. I made 
the symlink so that the file name in the FAT partition is correct when 
creating an SD card image. I was wondering if there might be a better 
way to rename the file using the genimage tool.

>
>> diff --git a/configs/lego_ev3_defconfig b/configs/lego_ev3_defconfig
>  > index 543a227..0996b8c 100644
>  > --- a/configs/lego_ev3_defconfig
>  > +++ b/configs/lego_ev3_defconfig
>  > @@ -2,22 +2,26 @@
>  >  BR2_arm=y
>  >  BR2_arm926t=y
>
>  > +# Build options
>  > +BR2_GLOBAL_PATCH_DIR="board/lego/ev3/patches"
>  > +
>  >  # system
>  >  BR2_TARGET_GENERIC_GETTY=y
>  >  BR2_TARGET_GENERIC_GETTY_PORT="ttyS1"
>  >  BR2_ROOTFS_POST_IMAGE_SCRIPT="board/lego/ev3/post-image.sh"
>  > -# Linux headers same as kernel, a 4.4 series
>  > -BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_4=y
>
> This shouldn't be dropped (after changing to 4.11) as the defconfig
> would otherwise break whenever 4.12 gets added.
>
> Committed to next with that fixed, thanks.
>
> I see you are still using a relatively old u-boot and ext3. Any reason
> to not use 2017.05 and ext4?
>


No reason. I will send another patch to update.

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [Buildroot] [PATCH 1/1] lego: ev3: use mainline kernel
  2017-05-17 15:28   ` David Lechner
@ 2017-05-17 19:49     ` Peter Korsgaard
  0 siblings, 0 replies; 4+ messages in thread
From: Peter Korsgaard @ 2017-05-17 19:49 UTC (permalink / raw)
  To: buildroot

>>>>> "David" == David Lechner <david@lechnology.com> writes:

Hi,

 >> I guess this change isn't strictly needed because of the symlink, but
 >> OK.

 > The symlink is something that I meant to ask about but forgot. I made
 > the symlink so that the file name in the FAT partition is correct when
 > creating an SD card image. I was wondering if there might be a better
 > way to rename the file using the genimage tool.

Looking at the source code, you CAN do it using the file argument
(instead of files):

image boot.vfat {
	vfat {
		file uImage {
		     image = "uImage.da850-lego-ev3"
		}
	}
	size = 16M
}

The file section title (uImage) is the name the file will have inside
the fat filesystem, and image is the source name.

If this is really more readable than the symlink or not I don't know.

 > No reason. I will send another patch to update.

Great, thanks!

-- 
Bye, Peter Korsgaard

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-05-17 19:49 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-15 23:21 [Buildroot] [PATCH 1/1] lego: ev3: use mainline kernel David Lechner
2017-05-16 20:56 ` Peter Korsgaard
2017-05-17 15:28   ` David Lechner
2017-05-17 19:49     ` Peter Korsgaard

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.