[U-Boot] [PATCH v2 4/4] implement Fastboot via USB OTG on bcm28155_ap boards

Lukasz Majewski
2015-07-07T13:39:09Z

Hi Steve,

> From: "JD (Jiandong) Zheng" <jdzheng@broadcom.com>
>
> Signed-off-by: Steve Rae <srae@broadcom.com>
> ---
>
> Changes in v2:
> - rebased against u-boot-dfu
>
> board/broadcom/bcm28155_ap/bcm28155_ap.c | 40
> ++++++++++++++++++++++++++++++++
> drivers/usb/gadget/Makefile | 1 +
> include/configs/bcm28155_ap.h | 21 +++++++++++++++++ 3
> files changed, 62 insertions(+)
>
> diff --git a/board/broadcom/bcm28155_ap/bcm28155_ap.c
> b/board/broadcom/bcm28155_ap/bcm28155_ap.c index 940a1c2..20eb191
> 100644 --- a/board/broadcom/bcm28155_ap/bcm28155_ap.c
> +++ b/board/broadcom/bcm28155_ap/bcm28155_ap.c
> @@ -12,12 +12,20 @@
> #include <asm/kona-common/clk.h>
> #include <asm/arch/sysmap.h>
>
> +#include <usb.h>
> +#include <usb/s3c_udc.h>
> +#include <g_dnl.h>
> +
> #define SECWATCHDOG_SDOGCR_OFFSET 0x00000000
> #define SECWATCHDOG_SDOGCR_EN_SHIFT 27
> #define SECWATCHDOG_SDOGCR_SRSTEN_SHIFT 26
> #define SECWATCHDOG_SDOGCR_CLKS_SHIFT 20
> #define SECWATCHDOG_SDOGCR_LD_SHIFT 0
>
> +#ifndef CONFIG_USB_SERIALNO
> +#define CONFIG_USB_SERIALNO "1234567890"
> +#endif
> +
> DECLARE_GLOBAL_DATA_PTR;
>
> /*
> @@ -85,3 +93,35 @@ int board_mmc_init(bd_t *bis)
> return ret;
> }
> #endif
> +
> +#ifdef CONFIG_USB_GADGET
> +static struct s3c_plat_otg_data bcm_otg_data = {
> + .regs_otg = HSOTG_BASE_ADDR
> +};
> +
> +int board_usb_init(int index, enum usb_init_type init)
> +{
> + debug("%s: performing s3c_udc_probe\n", __func__);
> + return s3c_udc_probe(&bcm_otg_data);
> +}
> +
> +int g_dnl_bind_fixup(struct usb_device_descriptor *dev, const char
> *name) +{
> + debug("%s\n", __func__);
> + if (!getenv("serial#"))
> + g_dnl_set_serialnumber(CONFIG_USB_SERIALNO);
> + return 0;
> +}
> +
> +int g_dnl_get_board_bcd_device_number(int gcnum)
> +{
> + debug("%s\n", __func__);
> + return 1;
> +}
> +
> +int board_usb_cleanup(int index, enum usb_init_type init)
> +{
> + debug("%s\n", __func__);
> + return 0;
> +}
> +#endif
> diff --git a/drivers/usb/gadget/Makefile b/drivers/usb/gadget/Makefile
> index 4e15323..4c11a7e 100644
> --- a/drivers/usb/gadget/Makefile
> +++ b/drivers/usb/gadget/Makefile
> @@ -11,6 +11,7 @@ obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o
> usbstring.o # new USB gadget layer dependencies
> ifdef CONFIG_USB_GADGET
> obj-$(CONFIG_USB_GADGET_ATMEL_USBA) += atmel_usba_udc.o
> +obj-$(CONFIG_USB_GADGET_BCM_UDC_OTG_PHY) += bcm_udc_otg_phy.o
> obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += s3c_udc_otg.o
> obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG_PHY) += s3c_udc_otg_phy.o
> obj-$(CONFIG_USB_GADGET_FOTG210) += fotg210.o
> diff --git a/include/configs/bcm28155_ap.h
> b/include/configs/bcm28155_ap.h index 900dc42..46920a1 100644
> --- a/include/configs/bcm28155_ap.h
> +++ b/include/configs/bcm28155_ap.h
> @@ -109,6 +109,7 @@
> * for example.
> */
> #define CONFIG_DOS_PARTITION
> +#define CONFIG_EFI_PARTITION
>
> /* version string, parser, etc */
> #define CONFIG_VERSION_VARIABLE
> @@ -136,4 +137,24 @@
>
> #undef CONFIG_CMD_NFS
>
> +/* Fastboot and USB OTG */
> +#define CONFIG_USB_FUNCTION_FASTBOOT
> +#define CONFIG_CMD_FASTBOOT
> +#define CONFIG_FASTBOOT_FLASH
> +#define CONFIG_FASTBOOT_FLASH_MMC_DEV 0
> +#define CONFIG_SYS_CACHELINE_SIZE 64
> +#define CONFIG_USB_FASTBOOT_BUF_SIZE (CONFIG_SYS_SDRAM_SIZE -
> (1024 * 1024)) +#define CONFIG_USB_FASTBOOT_BUF_ADDR
^^^^^^^^^^^ Here you can use SZ_1M

> CONFIG_SYS_SDRAM_BASE +#define CONFIG_USB_GADGET
> +#define CONFIG_USB_GADGET_DUALSPEED
> +#define CONFIG_USB_GADGET_VBUS_DRAW 0
> +#define CONFIG_USB_GADGET_S3C_UDC_OTG
> +#define CONFIG_USB_GADGET_BCM_UDC_OTG_PHY
> +#define CONFIG_USB_GADGET_PHY_8_BIT
> +#define CONFIG_USB_GADGET_DOWNLOAD
> +#define CONFIG_USBID_ADDR 0x34052c46
> +#define CONFIG_G_DNL_VENDOR_NUM 0x18d1 /*
> google */ +#define CONFIG_G_DNL_PRODUCT_NUM 0x0d02 /*
> nexus one */ +#define CONFIG_G_DNL_MANUFACTURER "Broadcom
> Corporation" +
> #endif /* __BCM28155_AP_H */

--
Best regards,

Lukasz Majewski

Samsung R&D Institute Poland (SRPOL) | Linux Platform Group