Hi, Lukasz

On 15-07-07 06:33 AM, Lukasz Majewski wrote:
Hi Steve,

From: "JD (Jiandong) Zheng" <jdzh...@broadcom.com>

Add the required files for the Broadcom UDC OTG interface.

Signed-off-by: Steve Rae <s...@broadcom.com>
---

Changes in v2: None

  arch/arm/include/asm/arch-bcm281xx/sysmap.h |  7 ++++
  drivers/usb/gadget/bcm_udc_otg.h            | 17 ++++++++++
  drivers/usb/gadget/bcm_udc_otg_phy.c        | 50
+++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+)
  create mode 100644 drivers/usb/gadget/bcm_udc_otg.h
  create mode 100644 drivers/usb/gadget/bcm_udc_otg_phy.c

diff --git a/arch/arm/include/asm/arch-bcm281xx/sysmap.h
b/arch/arm/include/asm/arch-bcm281xx/sysmap.h index 93ebf34..dbcc88c
100644 --- a/arch/arm/include/asm/arch-bcm281xx/sysmap.h
+++ b/arch/arm/include/asm/arch-bcm281xx/sysmap.h
@@ -27,4 +27,11 @@
  #define SECWD2_BASE_ADDR      0x35002f40
  #define TIMER_BASE_ADDR               0x3e00d000

+#define HSOTG_DCTL_OFFSET
0x00000804 +#define
HSOTG_DCTL_SFTDISCON_MASK                               0x00000002 +
+#define HSOTG_CTRL_PHY_P1CTL_OFFSET
0x00000008 +#define
HSOTG_CTRL_PHY_P1CTL_SOFT_RESET_MASK
0x00000002 +#define
HSOTG_CTRL_PHY_P1CTL_NON_DRIVING_MASK           0x00000001 +
#endif diff --git a/drivers/usb/gadget/bcm_udc_otg.h
b/drivers/usb/gadget/bcm_udc_otg.h new file mode 100644
index 0000000..81a1fc0
--- /dev/null
+++ b/drivers/usb/gadget/bcm_udc_otg.h
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2015 Broadcom Corporation.

--> Please also add the name of the code author.
this is not standard practice at Broadcom....
and it seems that at least five (5) people have contributed to the code in this commit....
What would you suggest? The most recent author, or ???


+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __BCM_UDC_OTG_H
+#define __BCM_UDC_OTG_H
+
+#include <linux/types.h>
+
+#define wfld_set(addr, fld_val, fld_mask) \
+               (writel(((readl(addr) & ~(fld_mask)) | (fld_val)),
(addr))) +#define wfld_clear(addr, fld_mask) \
+               (writel((readl(addr) & ~(fld_mask)), (addr)))

Maybe we could replace those preprocessor macros with static inline
functions?
Hmmm - since writel() and readl() are also macros, it makes it difficult to make these into functions....
I guess we could use "uintprt_t" and "uint32_t"
Would you agree?

+
+#endif
diff --git a/drivers/usb/gadget/bcm_udc_otg_phy.c
b/drivers/usb/gadget/bcm_udc_otg_phy.c new file mode 100644
index 0000000..1aa9f91
--- /dev/null
+++ b/drivers/usb/gadget/bcm_udc_otg_phy.c
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2015 Broadcom Corporation.

---> The same as above.

+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/sysmap.h>
+
+#include <usb/s3c_udc.h>
+#include "bcm_udc_otg.h"
+
+void otg_phy_init(struct s3c_udc *dev)
+{
+       /* set Phy to driving mode */
+       wfld_clear(HSOTG_CTRL_BASE_ADDR +
HSOTG_CTRL_PHY_P1CTL_OFFSET,
+                  HSOTG_CTRL_PHY_P1CTL_NON_DRIVING_MASK);
+
+       udelay(100);
+
+       /* clear Soft Disconnect */
+       wfld_clear(HSOTG_BASE_ADDR + HSOTG_DCTL_OFFSET,
+                  HSOTG_DCTL_SFTDISCON_MASK);
+
+       /* invoke Reset (active low) */
+       wfld_clear(HSOTG_CTRL_BASE_ADDR +
HSOTG_CTRL_PHY_P1CTL_OFFSET,
+                  HSOTG_CTRL_PHY_P1CTL_SOFT_RESET_MASK);
+
+       udelay(10000);
        ^^^^^^^^^^^^^^ -- would it be possible to add some comment
        regarding for what we are waiting here?
OK

+
+       /* release Reset */
+       wfld_set(HSOTG_CTRL_BASE_ADDR + HSOTG_CTRL_PHY_P1CTL_OFFSET,
+                HSOTG_CTRL_PHY_P1CTL_SOFT_RESET_MASK,
+                HSOTG_CTRL_PHY_P1CTL_SOFT_RESET_MASK);
+}
+
+void otg_phy_off(struct s3c_udc *dev)
+{
+       /* Soft Disconnect */
+       wfld_set(HSOTG_BASE_ADDR + HSOTG_DCTL_OFFSET,
+                HSOTG_DCTL_SFTDISCON_MASK,
+                HSOTG_DCTL_SFTDISCON_MASK);
+
+       /* set Phy to non-driving (reset) mode */
+       wfld_set(HSOTG_CTRL_BASE_ADDR + HSOTG_CTRL_PHY_P1CTL_OFFSET,
+                HSOTG_CTRL_PHY_P1CTL_NON_DRIVING_MASK,
+                HSOTG_CTRL_PHY_P1CTL_NON_DRIVING_MASK);
+}



Thanks, Steve
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to