* [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