diff mbox

[U-Boot,2/2] ARMv8: enable DM in vexpress64 board

Message ID 1422676529-34859-3-git-send-email-fenghua@phytium.com.cn
State Accepted
Delegated to: Albert ARIBAUD
Headers show

Commit Message

fenghua@phytium.com.cn Jan. 31, 2015, 3:55 a.m. UTC
From: David Feng <fenghua@phytium.com.cn>

Signed-off-by: David Feng <fenghua@phytium.com.cn>
---
 board/armltd/vexpress64/vexpress64.c |   13 +++++++++++++
 include/configs/vexpress_aemv8a.h    |   14 ++++++++++++--
 2 files changed, 25 insertions(+), 2 deletions(-)

Comments

Albert ARIBAUD March 27, 2015, 3:36 p.m. UTC | #1
Hello fenghua@phytium.com.cn,

On Sat, 31 Jan 2015 11:55:29 +0800, fenghua@phytium.com.cn <fenghua@phytium.com.cn> wrote:
> From: David Feng <fenghua@phytium.com.cn>
> 
> Signed-off-by: David Feng <fenghua@phytium.com.cn>
> ---
>  board/armltd/vexpress64/vexpress64.c |   13 +++++++++++++
>  include/configs/vexpress_aemv8a.h    |   14 ++++++++++++--
>  2 files changed, 25 insertions(+), 2 deletions(-)
> 
> diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c
> index 5897318..4171c6e 100644
> --- a/board/armltd/vexpress64/vexpress64.c
> +++ b/board/armltd/vexpress64/vexpress64.c
> @@ -12,9 +12,22 @@
>  #include <asm/io.h>
>  #include <linux/compiler.h>
>  #include <asm/semihosting.h>
> +#include <dm/platdata.h>
> +#include <dm/platform_data/serial_pl01x.h>
>  
>  DECLARE_GLOBAL_DATA_PTR;
>  
> +static const struct pl01x_serial_platdata serial_platdata = {
> +	.base = V2M_UART0,
> +	.type = TYPE_PL011,
> +	.clock = 2400 * 1000,
> +};
> +
> +U_BOOT_DEVICE(vexpress_serials) = {
> +	.name = "serial_pl01x",
> +	.platdata = &serial_platdata,
> +};
> +
>  int board_init(void)
>  {
>  	return 0;
> diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
> index 027d78b..9b31c2d 100644
> --- a/include/configs/vexpress_aemv8a.h
> +++ b/include/configs/vexpress_aemv8a.h
> @@ -8,6 +8,8 @@
>  #ifndef __VEXPRESS_AEMV8A_H
>  #define __VEXPRESS_AEMV8A_H
>  
> +#define CONFIG_DM
> +
>  /* We use generic board for v8 Versatile Express */
>  #define CONFIG_SYS_GENERIC_BOARD
>  
> @@ -52,7 +54,6 @@
>  /* Flat Device Tree Definitions */
>  #define CONFIG_OF_LIBFDT
>  
> -
>  /* SMP Spin Table Definitions */
>  #ifdef CONFIG_BASE_FVP
>  #define CPU_RELEASE_ADDR		(CONFIG_SYS_SDRAM_BASE + 0x03f00000)
> @@ -132,6 +133,7 @@
>  #define CONFIG_SYS_MEMTEST_END		(V2M_BASE + 0x80000000)
>  
>  /* Size of malloc() pool */
> +#define CONFIG_SYS_MALLOC_F_LEN		0x2000
>  #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (8 << 20))
>  
>  /* SMSC91C111 Ethernet Configuration */
> @@ -139,11 +141,19 @@
>  #define CONFIG_SMC91111_BASE		(0x01A000000)
>  
>  /* PL011 Serial Configuration */
> +#define CONFIG_BAUDRATE			115200
> +#ifdef CONFIG_DM
> +#define CONFIG_DM_SERIAL
> +#define CONFIG_PL01X_SERIAL
> +#else
> +#define CONFIG_SYS_SERIAL0		V2M_UART0
> +#define CONFIG_SYS_SERIAL1		V2M_UART1
> +#define CONFIG_CONS_INDEX		0
>  #define CONFIG_PL011_SERIAL
>  #define CONFIG_PL011_CLOCK		24000000
>  #define CONFIG_PL01x_PORTS		{(void *)CONFIG_SYS_SERIAL0, \
>  					 (void *)CONFIG_SYS_SERIAL1}
> -#define CONFIG_CONS_INDEX		0
> +#endif
>  
>  #define CONFIG_BAUDRATE			115200
>  #define CONFIG_SYS_SERIAL0		V2M_UART0
> -- 
> 1.7.9.5
> 
> 

Applied to u-boot-arm/master, thanks!

Amicalement,
Linus Walleij April 13, 2015, 2:50 p.m. UTC | #2
On Sat, Jan 31, 2015 at 4:55 AM,  <fenghua@phytium.com.cn> wrote:

> From: David Feng <fenghua@phytium.com.cn>
>
> Signed-off-by: David Feng <fenghua@phytium.com.cn>

This commit breaks U-Boot on the Juno board, I don't know how to
best fix it? Is DM something we want available on all boards or just
the FVP model?

Yours,
Linus Walleij
Tom Rini April 13, 2015, 3:15 p.m. UTC | #3
On Mon, Apr 13, 2015 at 04:50:55PM +0200, Linus Walleij wrote:
> On Sat, Jan 31, 2015 at 4:55 AM,  <fenghua@phytium.com.cn> wrote:
> 
> > From: David Feng <fenghua@phytium.com.cn>
> >
> > Signed-off-by: David Feng <fenghua@phytium.com.cn>
> 
> This commit breaks U-Boot on the Juno board, I don't know how to
> best fix it? Is DM something we want available on all boards or just
> the FVP model?

All boards, moving forward more things are going to need it.  If you
poke around git log you'll see some other patches fixing "enabled DM and
now board X doesn't work" commits.
Linus Walleij April 13, 2015, 8:58 p.m. UTC | #4
On Mon, Apr 13, 2015 at 5:15 PM, Tom Rini <trini@konsulko.com> wrote:
> On Mon, Apr 13, 2015 at 04:50:55PM +0200, Linus Walleij wrote:
>> On Sat, Jan 31, 2015 at 4:55 AM,  <fenghua@phytium.com.cn> wrote:
>>
>> > From: David Feng <fenghua@phytium.com.cn>
>> >
>> > Signed-off-by: David Feng <fenghua@phytium.com.cn>
>>
>> This commit breaks U-Boot on the Juno board, I don't know how to
>> best fix it? Is DM something we want available on all boards or just
>> the FVP model?
>
> All boards, moving forward more things are going to need it.  If you
> poke around git log you'll see some other patches fixing "enabled DM and
> now board X doesn't work" commits.

Yeah well right now my problem is figuring out what DM is,
but I guess I will get it as part of fixing this...

Yours,
Linus Walleij
Simon Glass April 13, 2015, 10:26 p.m. UTC | #5
Hi Linus,

On 13 April 2015 at 14:58, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Mon, Apr 13, 2015 at 5:15 PM, Tom Rini <trini@konsulko.com> wrote:
>> On Mon, Apr 13, 2015 at 04:50:55PM +0200, Linus Walleij wrote:
>>> On Sat, Jan 31, 2015 at 4:55 AM,  <fenghua@phytium.com.cn> wrote:
>>>
>>> > From: David Feng <fenghua@phytium.com.cn>
>>> >
>>> > Signed-off-by: David Feng <fenghua@phytium.com.cn>
>>>
>>> This commit breaks U-Boot on the Juno board, I don't know how to
>>> best fix it? Is DM something we want available on all boards or just
>>> the FVP model?
>>
>> All boards, moving forward more things are going to need it.  If you
>> poke around git log you'll see some other patches fixing "enabled DM and
>> now board X doesn't work" commits.
>
> Yeah well right now my problem is figuring out what DM is,
> but I guess I will get it as part of fixing this...

It's a driver model for U-Boot. You could start with
doc/driver-model/README.txt and try the 'demo' command in sandbox. The
demo drivers are pretty easy to follow.

Regards,
Simon
Linus Walleij April 15, 2015, 8:08 a.m. UTC | #6
On Tue, Apr 14, 2015 at 12:26 AM, Simon Glass <sjg@chromium.org> wrote:
> On 13 April 2015 at 14:58, Linus Walleij <linus.walleij@linaro.org> wrote:

>> Yeah well right now my problem is figuring out what DM is,
>> but I guess I will get it as part of fixing this...
>
> It's a driver model for U-Boot. You could start with
> doc/driver-model/README.txt and try the 'demo' command in sandbox. The
> demo drivers are pretty easy to follow.

Thanks Simon, much appreciated. Reading up and becoming a better
developer.

Yours,
Linus Walleij
diff mbox

Patch

diff --git a/board/armltd/vexpress64/vexpress64.c b/board/armltd/vexpress64/vexpress64.c
index 5897318..4171c6e 100644
--- a/board/armltd/vexpress64/vexpress64.c
+++ b/board/armltd/vexpress64/vexpress64.c
@@ -12,9 +12,22 @@ 
 #include <asm/io.h>
 #include <linux/compiler.h>
 #include <asm/semihosting.h>
+#include <dm/platdata.h>
+#include <dm/platform_data/serial_pl01x.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+static const struct pl01x_serial_platdata serial_platdata = {
+	.base = V2M_UART0,
+	.type = TYPE_PL011,
+	.clock = 2400 * 1000,
+};
+
+U_BOOT_DEVICE(vexpress_serials) = {
+	.name = "serial_pl01x",
+	.platdata = &serial_platdata,
+};
+
 int board_init(void)
 {
 	return 0;
diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
index 027d78b..9b31c2d 100644
--- a/include/configs/vexpress_aemv8a.h
+++ b/include/configs/vexpress_aemv8a.h
@@ -8,6 +8,8 @@ 
 #ifndef __VEXPRESS_AEMV8A_H
 #define __VEXPRESS_AEMV8A_H
 
+#define CONFIG_DM
+
 /* We use generic board for v8 Versatile Express */
 #define CONFIG_SYS_GENERIC_BOARD
 
@@ -52,7 +54,6 @@ 
 /* Flat Device Tree Definitions */
 #define CONFIG_OF_LIBFDT
 
-
 /* SMP Spin Table Definitions */
 #ifdef CONFIG_BASE_FVP
 #define CPU_RELEASE_ADDR		(CONFIG_SYS_SDRAM_BASE + 0x03f00000)
@@ -132,6 +133,7 @@ 
 #define CONFIG_SYS_MEMTEST_END		(V2M_BASE + 0x80000000)
 
 /* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_F_LEN		0x2000
 #define CONFIG_SYS_MALLOC_LEN		(CONFIG_ENV_SIZE + (8 << 20))
 
 /* SMSC91C111 Ethernet Configuration */
@@ -139,11 +141,19 @@ 
 #define CONFIG_SMC91111_BASE		(0x01A000000)
 
 /* PL011 Serial Configuration */
+#define CONFIG_BAUDRATE			115200
+#ifdef CONFIG_DM
+#define CONFIG_DM_SERIAL
+#define CONFIG_PL01X_SERIAL
+#else
+#define CONFIG_SYS_SERIAL0		V2M_UART0
+#define CONFIG_SYS_SERIAL1		V2M_UART1
+#define CONFIG_CONS_INDEX		0
 #define CONFIG_PL011_SERIAL
 #define CONFIG_PL011_CLOCK		24000000
 #define CONFIG_PL01x_PORTS		{(void *)CONFIG_SYS_SERIAL0, \
 					 (void *)CONFIG_SYS_SERIAL1}
-#define CONFIG_CONS_INDEX		0
+#endif
 
 #define CONFIG_BAUDRATE			115200
 #define CONFIG_SYS_SERIAL0		V2M_UART0