public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
* [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware
@ 2014-09-27  2:51 Stephen Warren
  2014-09-27  2:51 ` [U-Boot] [PATCH 2/2] ARM: rpi_b: enable USB/DHCP/PXE in bootcmd Stephen Warren
  2014-09-27 19:43 ` [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Marek Vasut
  0 siblings, 2 replies; 5+ messages in thread
From: Stephen Warren @ 2014-09-27  2:51 UTC (permalink / raw)
  To: u-boot

The built-in SMSC 95xx chip doesn't know its own MAC address. Instead,
we must query it from the VC firmware; it's probably encoded in fuses
on the BCM2835.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
---
v2: Don't set usbethaddr if it's already set
---
 arch/arm/include/asm/arch-bcm2835/mbox.h | 14 ++++++++++++++
 board/raspberrypi/rpi_b/rpi_b.c          | 29 +++++++++++++++++++++++++++++
 include/configs/rpi_b.h                  |  1 +
 3 files changed, 44 insertions(+)

diff --git a/arch/arm/include/asm/arch-bcm2835/mbox.h b/arch/arm/include/asm/arch-bcm2835/mbox.h
index dded857..61f427d 100644
--- a/arch/arm/include/asm/arch-bcm2835/mbox.h
+++ b/arch/arm/include/asm/arch-bcm2835/mbox.h
@@ -119,6 +119,20 @@ struct bcm2835_mbox_tag_hdr {
  * };
  */
 
+#define BCM2835_MBOX_TAG_GET_MAC_ADDRESS	0x00010003
+
+struct bcm2835_mbox_tag_get_mac_address {
+	struct bcm2835_mbox_tag_hdr tag_hdr;
+	union {
+		struct {
+		} req;
+		struct {
+			u8 mac[6];
+			u8 pad[2];
+		} resp;
+	} body;
+};
+
 #define BCM2835_MBOX_TAG_GET_ARM_MEMORY		0x00010005
 
 struct bcm2835_mbox_tag_get_arm_mem {
diff --git a/board/raspberrypi/rpi_b/rpi_b.c b/board/raspberrypi/rpi_b/rpi_b.c
index 220bb90..a92c1ec 100644
--- a/board/raspberrypi/rpi_b/rpi_b.c
+++ b/board/raspberrypi/rpi_b/rpi_b.c
@@ -31,6 +31,12 @@ struct msg_get_arm_mem {
 	u32 end_tag;
 };
 
+struct msg_get_mac_address {
+	struct bcm2835_mbox_hdr hdr;
+	struct bcm2835_mbox_tag_get_mac_address get_mac_address;
+	u32 end_tag;
+};
+
 struct msg_set_power_state {
 	struct bcm2835_mbox_hdr hdr;
 	struct bcm2835_mbox_tag_set_power_state set_power_state;
@@ -62,6 +68,29 @@ int dram_init(void)
 	return 0;
 }
 
+int misc_init_r(void)
+{
+	ALLOC_ALIGN_BUFFER(struct msg_get_mac_address, msg, 1, 16);
+	int ret;
+
+	if (getenv("usbethaddr"))
+		return 0;
+
+	BCM2835_MBOX_INIT_HDR(msg);
+	BCM2835_MBOX_INIT_TAG(&msg->get_mac_address, GET_MAC_ADDRESS);
+
+	ret = bcm2835_mbox_call_prop(BCM2835_MBOX_PROP_CHAN, &msg->hdr);
+	if (ret) {
+		printf("bcm2835: Could not query MAC address\n");
+		/* Ignore error; not critical */
+		return 0;
+	}
+
+	eth_setenv_enetaddr("usbethaddr", msg->get_mac_address.body.resp.mac);
+
+	return 0;
+}
+
 static int power_on_module(u32 module)
 {
 	ALLOC_ALIGN_BUFFER(struct msg_set_power_state, msg_pwr, 1, 16);
diff --git a/include/configs/rpi_b.h b/include/configs/rpi_b.h
index 9a53232..3c3ba9a 100644
--- a/include/configs/rpi_b.h
+++ b/include/configs/rpi_b.h
@@ -182,6 +182,7 @@
 #define CONFIG_USB_STORAGE
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_SMSC95XX
+#define CONFIG_MISC_INIT_R
 #endif
 
 #endif
-- 
1.9.1

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

* [U-Boot] [PATCH 2/2] ARM: rpi_b: enable USB/DHCP/PXE in bootcmd
  2014-09-27  2:51 [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Stephen Warren
@ 2014-09-27  2:51 ` Stephen Warren
  2014-09-27 19:43 ` [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Marek Vasut
  1 sibling, 0 replies; 5+ messages in thread
From: Stephen Warren @ 2014-09-27  2:51 UTC (permalink / raw)
  To: u-boot

USB support must be enabled before config_distro_bootcmd.h is included
for bootcmd to include USB-related functionality.

Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
---
 include/configs/rpi_b.h | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/include/configs/rpi_b.h b/include/configs/rpi_b.h
index 3c3ba9a..6d01b61 100644
--- a/include/configs/rpi_b.h
+++ b/include/configs/rpi_b.h
@@ -77,6 +77,16 @@
 #define CONFIG_MMC_SDHCI_IO_ACCESSORS
 #define CONFIG_BCM2835_SDHCI
 
+#define CONFIG_CMD_USB
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_DWC2
+#define CONFIG_USB_DWC2_REG_ADDR 0x20980000
+#define CONFIG_USB_STORAGE
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_SMSC95XX
+#define CONFIG_MISC_INIT_R
+#endif
+
 /* Console UART */
 #define CONFIG_PL011_SERIAL
 #define CONFIG_PL011_CLOCK		3000000
@@ -165,7 +175,10 @@
 	"ramdisk_addr_r=0x02100000\0" \
 
 #define BOOT_TARGET_DEVICES(func) \
-	func(MMC, mmc, 0)
+	func(MMC, mmc, 0) \
+	func(USB, usb, 0) \
+	func(PXE, pxe, na) \
+	func(DHCP, dhcp, na)
 #include <config_distro_bootcmd.h>
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
@@ -175,14 +188,4 @@
 
 #define CONFIG_BOOTDELAY 2
 
-#define CONFIG_CMD_USB
-#ifdef CONFIG_CMD_USB
-#define CONFIG_USB_DWC2
-#define CONFIG_USB_DWC2_REG_ADDR 0x20980000
-#define CONFIG_USB_STORAGE
-#define CONFIG_USB_HOST_ETHER
-#define CONFIG_USB_ETHER_SMSC95XX
-#define CONFIG_MISC_INIT_R
-#endif
-
 #endif
-- 
1.9.1

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

* [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware
  2014-09-27  2:51 [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Stephen Warren
  2014-09-27  2:51 ` [U-Boot] [PATCH 2/2] ARM: rpi_b: enable USB/DHCP/PXE in bootcmd Stephen Warren
@ 2014-09-27 19:43 ` Marek Vasut
  2014-09-30  4:21   ` Stephen Warren
  1 sibling, 1 reply; 5+ messages in thread
From: Marek Vasut @ 2014-09-27 19:43 UTC (permalink / raw)
  To: u-boot

On Saturday, September 27, 2014 at 04:51:39 AM, Stephen Warren wrote:
> The built-in SMSC 95xx chip doesn't know its own MAC address. Instead,
> we must query it from the VC firmware; it's probably encoded in fuses
> on the BCM2835.
> 
> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
> ---
> v2: Don't set usbethaddr if it's already set
> ---
>  arch/arm/include/asm/arch-bcm2835/mbox.h | 14 ++++++++++++++
>  board/raspberrypi/rpi_b/rpi_b.c          | 29
> +++++++++++++++++++++++++++++ include/configs/rpi_b.h                  | 
> 1 +
>  3 files changed, 44 insertions(+)
> 
> diff --git a/arch/arm/include/asm/arch-bcm2835/mbox.h
> b/arch/arm/include/asm/arch-bcm2835/mbox.h index dded857..61f427d 100644
> --- a/arch/arm/include/asm/arch-bcm2835/mbox.h
> +++ b/arch/arm/include/asm/arch-bcm2835/mbox.h
> @@ -119,6 +119,20 @@ struct bcm2835_mbox_tag_hdr {
>   * };
>   */
> 
> +#define BCM2835_MBOX_TAG_GET_MAC_ADDRESS	0x00010003
> +
> +struct bcm2835_mbox_tag_get_mac_address {
> +	struct bcm2835_mbox_tag_hdr tag_hdr;
> +	union {
> +		struct {
> +		} req;
> +		struct {
> +			u8 mac[6];
> +			u8 pad[2];
> +		} resp;

Well, can't this be a simple u32 here ?

[...]

Who will pick this series , shall I pick it ?

Best regards,
Marek Vasut

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

* [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware
  2014-09-27 19:43 ` [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Marek Vasut
@ 2014-09-30  4:21   ` Stephen Warren
  2014-09-30 12:49     ` Marek Vasut
  0 siblings, 1 reply; 5+ messages in thread
From: Stephen Warren @ 2014-09-30  4:21 UTC (permalink / raw)
  To: u-boot

On 09/27/2014 01:43 PM, Marek Vasut wrote:
> On Saturday, September 27, 2014 at 04:51:39 AM, Stephen Warren wrote:
>> The built-in SMSC 95xx chip doesn't know its own MAC address. Instead,
>> we must query it from the VC firmware; it's probably encoded in fuses
>> on the BCM2835.
>>
>> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
>> ---
>> v2: Don't set usbethaddr if it's already set
>> ---
>>  arch/arm/include/asm/arch-bcm2835/mbox.h | 14 ++++++++++++++
>>  board/raspberrypi/rpi_b/rpi_b.c          | 29
>> +++++++++++++++++++++++++++++ include/configs/rpi_b.h                  | 
>> 1 +
>>  3 files changed, 44 insertions(+)
>>
>> diff --git a/arch/arm/include/asm/arch-bcm2835/mbox.h
>> b/arch/arm/include/asm/arch-bcm2835/mbox.h index dded857..61f427d 100644
>> --- a/arch/arm/include/asm/arch-bcm2835/mbox.h
>> +++ b/arch/arm/include/asm/arch-bcm2835/mbox.h
>> @@ -119,6 +119,20 @@ struct bcm2835_mbox_tag_hdr {
>>   * };
>>   */
>>
>> +#define BCM2835_MBOX_TAG_GET_MAC_ADDRESS	0x00010003
>> +
>> +struct bcm2835_mbox_tag_get_mac_address {
>> +	struct bcm2835_mbox_tag_hdr tag_hdr;
>> +	union {
>> +		struct {
>> +		} req;
>> +		struct {
>> +			u8 mac[6];
>> +			u8 pad[2];
>> +		} resp;
> 
> Well, can't this be a simple u32 here ?

If you ignore the fact the message format really is 6 individual bytes,
sure:-P.

> [...]
> 
> Who will pick this series , shall I pick it ?

That sounds reasonable to me; they depend on your patches. I suppose
Albert might want to ack that.

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

* [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware
  2014-09-30  4:21   ` Stephen Warren
@ 2014-09-30 12:49     ` Marek Vasut
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Vasut @ 2014-09-30 12:49 UTC (permalink / raw)
  To: u-boot

On Tuesday, September 30, 2014 at 06:21:46 AM, Stephen Warren wrote:
> On 09/27/2014 01:43 PM, Marek Vasut wrote:
> > On Saturday, September 27, 2014 at 04:51:39 AM, Stephen Warren wrote:
> >> The built-in SMSC 95xx chip doesn't know its own MAC address. Instead,
> >> we must query it from the VC firmware; it's probably encoded in fuses
> >> on the BCM2835.
> >> 
> >> Signed-off-by: Stephen Warren <swarren@wwwdotorg.org>
> >> ---
> >> v2: Don't set usbethaddr if it's already set
> >> ---
> >> 
> >>  arch/arm/include/asm/arch-bcm2835/mbox.h | 14 ++++++++++++++
> >>  board/raspberrypi/rpi_b/rpi_b.c          | 29
> >> 
> >> +++++++++++++++++++++++++++++ include/configs/rpi_b.h                  |
> >> 1 +
> >> 
> >>  3 files changed, 44 insertions(+)
> >> 
> >> diff --git a/arch/arm/include/asm/arch-bcm2835/mbox.h
> >> b/arch/arm/include/asm/arch-bcm2835/mbox.h index dded857..61f427d 100644
> >> --- a/arch/arm/include/asm/arch-bcm2835/mbox.h
> >> +++ b/arch/arm/include/asm/arch-bcm2835/mbox.h
> >> @@ -119,6 +119,20 @@ struct bcm2835_mbox_tag_hdr {
> >> 
> >>   * };
> >>   */
> >> 
> >> +#define BCM2835_MBOX_TAG_GET_MAC_ADDRESS	0x00010003
> >> +
> >> +struct bcm2835_mbox_tag_get_mac_address {
> >> +	struct bcm2835_mbox_tag_hdr tag_hdr;
> >> +	union {
> >> +		struct {
> >> +		} req;
> >> +		struct {
> >> +			u8 mac[6];
> >> +			u8 pad[2];
> >> +		} resp;
> > 
> > Well, can't this be a simple u32 here ?
> 
> If you ignore the fact the message format really is 6 individual bytes,
> sure:-P.

Aw, u64 then. Anyway, it's not critical, it's just that the code looks a bit 
iffy, that's all.

> > [...]
> > 
> > Who will pick this series , shall I pick it ?
> 
> That sounds reasonable to me; they depend on your patches. I suppose
> Albert might want to ack that.

OK, I placed it into u-boot-usb/topic/dwc2-20140930 for now.

Best regards,
Marek Vasut

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

end of thread, other threads:[~2014-09-30 12:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-09-27  2:51 [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Stephen Warren
2014-09-27  2:51 ` [U-Boot] [PATCH 2/2] ARM: rpi_b: enable USB/DHCP/PXE in bootcmd Stephen Warren
2014-09-27 19:43 ` [U-Boot] [PATCH V2 1/2] ARM: rpi_b: query internal MAC address from firmware Marek Vasut
2014-09-30  4:21   ` Stephen Warren
2014-09-30 12:49     ` Marek Vasut

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox