Re: [U-Boot] [PATCH V3 2/2] trats2: enable ums support on Trats2

2013-11-21 Thread Minkyu Kang
Dear Piotr Wilczek,

On 08/11/13 00:00, Piotr Wilczek wrote:
 This patch adds support for USB and enables 'ums' command on Trats2 board.
 
 Signed-off-by: Piotr Wilczek p.wilc...@samsung.com
 Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
 CC: Minkyu Kang mk7.k...@samsung.com
 
 Acked-by: Jaehoon Chung jh80.ch...@samsung.com
 ---
 This patch depends on the lated u-boot-usb/master.
 
 Changes for v3:
  - no changes
 
 Changes for v2:
  - rebased on current USB tree
  - removed unnecessary pmic probing
 
  board/samsung/trats2/trats2.c |   92 
 +
  include/configs/trats2.h  |   18 
  2 files changed, 110 insertions(+)
 
 diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c
 index d44d825..41a7310 100644
 --- a/board/samsung/trats2/trats2.c
 +++ b/board/samsung/trats2/trats2.c
 @@ -25,6 +25,9 @@
  #include power/max77693_fg.h
  #include libtizen.h
  #include errno.h
 +#include usb.h
 +#include usb/s3c_udc.h
 +#include usb_mass_storage.h
  
  DECLARE_GLOBAL_DATA_PTR;
  
 @@ -308,6 +311,95 @@ int board_mmc_init(bd_t *bis)
   return err0  err2;
  }
  
 +#ifdef CONFIG_USB_GADGET
 +static int s5pc210_phy_control(int on)
 +{
 + int ret = 0;
 + unsigned int val;
 + struct pmic *p, *p_pmic, *p_muic;
 +
 + p_pmic = pmic_get(MAX77686_PMIC);
 + if (!p_pmic)
 + return -ENODEV;
 +
 + if (pmic_probe(p_pmic))
 + return -1;
 +
 + p_muic = pmic_get(MAX77693_MUIC);
 + if (!p_muic)
 + return -ENODEV;
 +
 + if (pmic_probe(p_muic))
 + return -1;
 +
 + if (on) {
 + ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_ON);
 + if (ret)
 + return -1;
 +
 + p = pmic_get(MAX77693_PMIC);
 + if (!p)
 + return -ENODEV;
 +
 + if (pmic_probe(p))
 + return -1;
 +
 + /* SAFEOUT */
 + ret = pmic_reg_read(p, MAX77693_SAFEOUT, val);
 + if (ret)
 + return -1;
 +
 + val |= MAX77693_ENSAFEOUT1;
 + ret = pmic_reg_write(p, MAX77693_SAFEOUT, val);
 + if (ret)
 + return -1;
 +
 + /* PATH: USB */
 + ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
 + MAX77693_MUIC_CTRL1_DN1DP2);
 +
 + } else {
 + ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_LPM);
 + if (ret)
 + return -1;
 +
 + /* PATH: UART */
 + ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
 + MAX77693_MUIC_CTRL1_UT1UR2);
 + }
 +
 + if (ret)
 + return -1;
 +

please remove blank line.

 +
 + return 0;
 +}
 +
 +struct s3c_plat_otg_data s5pc210_otg_data = {
 + .phy_control= s5pc210_phy_control,
 + .regs_phy   = EXYNOS4X12_USBPHY_BASE,
 + .regs_otg   = EXYNOS4X12_USBOTG_BASE,
 + .usb_phy_ctrl   = EXYNOS4X12_USBPHY_CONTROL,
 + .usb_flags  = PHY0_SLEEP,
 +};
 +
 +int board_usb_init(int index, enum usb_init_type init)
 +{
 + debug(USB_udc_probe\n);
 + return s3c_udc_probe(s5pc210_otg_data);
 +}
 +
 +#ifdef CONFIG_USB_CABLE_CHECK
 +int usb_cable_connected(void)
 +{
 + struct pmic *muic = pmic_get(MAX77693_MUIC);
 + int cable_connected = muic-chrg-chrg_type(muic);

Please check that muic is available.

 +
 + return !!cable_connected;

I think, cable_connected is unnecessary.

return !!muic-chrg-chrg_type(muic);

 +}
 +#endif
 +#endif
 +
  static int pmic_init_max77686(void)
  {
   struct pmic *p = pmic_get(MAX77686_PMIC);
 diff --git a/include/configs/trats2.h b/include/configs/trats2.h
 index 0e93836..66b1c95 100644
 --- a/include/configs/trats2.h
 +++ b/include/configs/trats2.h
 @@ -113,6 +113,16 @@
  #define CONFIG_CMD_EXT4
  #define CONFIG_CMD_EXT4_WRITE
  
 +/* USB Composite download gadget - g_dnl */
 +#define CONFIG_USBDOWNLOAD_GADGET
 +#define CONFIG_DFU_FUNCTION
 +#define CONFIG_DFU_MMC
 +
 +/* USB Samsung's IDs */
 +#define CONFIG_G_DNL_VENDOR_NUM 0x04E8
 +#define CONFIG_G_DNL_PRODUCT_NUM 0x6601
 +#define CONFIG_G_DNL_MANUFACTURER Samsung
 +
  /* To use the TFTPBOOT over USB, Please enable the CONFIG_CMD_NET */
  #undef CONFIG_CMD_NET
  
 @@ -293,6 +303,11 @@
  #define CONFIG_POWER_MUIC_MAX77693
  #define CONFIG_POWER_FG_MAX77693
  #define CONFIG_POWER_BATTERY_TRATS2
 +#define CONFIG_USB_GADGET
 +#define CONFIG_USB_GADGET_S3C_UDC_OTG
 +#define CONFIG_USB_GADGET_DUALSPEED
 +#define CONFIG_USB_GADGET_VBUS_DRAW  2
 +#define CONFIG_USB_CABLE_CHECK
  
  /* LCD */
  #define CONFIG_EXYNOS_FB
 @@ -305,6 +320,9 @@
  #define CONFIG_VIDEO_BMP_GZIP
  #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 250 * 4) + (1  12))
  
 +#define CONFIG_CMD_USB_MASS_STORAGE
 +#define CONFIG_USB_GADGET_MASS_STORAGE
 +
  /* Pass open firmware flat tree */
  #define CONFIG_OF_LIBFDT1
  
 

Thanks,
Minkyu 

Re: [U-Boot] [PATCH V3 2/2] trats2: enable ums support on Trats2

2013-11-21 Thread Piotr Wilczek
Dear Minkyu Kang,

 -Original Message-
 From: Minkyu Kang [mailto:mk7.k...@samsung.com]
 Sent: Thursday, November 21, 2013 9:24 AM
 To: Piotr Wilczek
 Cc: u-boot@lists.denx.de; Kyungmin Park
 Subject: Re: [PATCH V3 2/2] trats2: enable ums support on Trats2
 
 Dear Piotr Wilczek,
 
 On 08/11/13 00:00, Piotr Wilczek wrote:
  This patch adds support for USB and enables 'ums' command on Trats2
 board.
 
  Signed-off-by: Piotr Wilczek p.wilc...@samsung.com
  Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
  CC: Minkyu Kang mk7.k...@samsung.com
 
  Acked-by: Jaehoon Chung jh80.ch...@samsung.com
  ---
  This patch depends on the lated u-boot-usb/master.
 
  Changes for v3:
   - no changes
 
  Changes for v2:
   - rebased on current USB tree
   - removed unnecessary pmic probing
 
   board/samsung/trats2/trats2.c |   92
 +
   include/configs/trats2.h  |   18 
   2 files changed, 110 insertions(+)
 
  diff --git a/board/samsung/trats2/trats2.c
  b/board/samsung/trats2/trats2.c index d44d825..41a7310 100644
  --- a/board/samsung/trats2/trats2.c
  +++ b/board/samsung/trats2/trats2.c
  @@ -25,6 +25,9 @@
   #include power/max77693_fg.h
   #include libtizen.h
   #include errno.h
  +#include usb.h
  +#include usb/s3c_udc.h
  +#include usb_mass_storage.h
 
   DECLARE_GLOBAL_DATA_PTR;
 
  @@ -308,6 +311,95 @@ int board_mmc_init(bd_t *bis)
  return err0  err2;
   }
 
  +#ifdef CONFIG_USB_GADGET
  +static int s5pc210_phy_control(int on) {
  +   int ret = 0;
  +   unsigned int val;
  +   struct pmic *p, *p_pmic, *p_muic;
  +
  +   p_pmic = pmic_get(MAX77686_PMIC);
  +   if (!p_pmic)
  +   return -ENODEV;
  +
  +   if (pmic_probe(p_pmic))
  +   return -1;
  +
  +   p_muic = pmic_get(MAX77693_MUIC);
  +   if (!p_muic)
  +   return -ENODEV;
  +
  +   if (pmic_probe(p_muic))
  +   return -1;
  +
  +   if (on) {
  +   ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_ON);
  +   if (ret)
  +   return -1;
  +
  +   p = pmic_get(MAX77693_PMIC);
  +   if (!p)
  +   return -ENODEV;
  +
  +   if (pmic_probe(p))
  +   return -1;
  +
  +   /* SAFEOUT */
  +   ret = pmic_reg_read(p, MAX77693_SAFEOUT, val);
  +   if (ret)
  +   return -1;
  +
  +   val |= MAX77693_ENSAFEOUT1;
  +   ret = pmic_reg_write(p, MAX77693_SAFEOUT, val);
  +   if (ret)
  +   return -1;
  +
  +   /* PATH: USB */
  +   ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
  +   MAX77693_MUIC_CTRL1_DN1DP2);
  +
  +   } else {
  +   ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_LPM);
  +   if (ret)
  +   return -1;
  +
  +   /* PATH: UART */
  +   ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
  +   MAX77693_MUIC_CTRL1_UT1UR2);
  +   }
  +
  +   if (ret)
  +   return -1;
  +
 
 please remove blank line.
Ok

 
  +
  +   return 0;
  +}
  +
  +struct s3c_plat_otg_data s5pc210_otg_data = {
  +   .phy_control= s5pc210_phy_control,
  +   .regs_phy   = EXYNOS4X12_USBPHY_BASE,
  +   .regs_otg   = EXYNOS4X12_USBOTG_BASE,
  +   .usb_phy_ctrl   = EXYNOS4X12_USBPHY_CONTROL,
  +   .usb_flags  = PHY0_SLEEP,
  +};
  +
  +int board_usb_init(int index, enum usb_init_type init) {
  +   debug(USB_udc_probe\n);
  +   return s3c_udc_probe(s5pc210_otg_data); }
  +
  +#ifdef CONFIG_USB_CABLE_CHECK
  +int usb_cable_connected(void)
  +{
  +   struct pmic *muic = pmic_get(MAX77693_MUIC);
  +   int cable_connected = muic-chrg-chrg_type(muic);
 
 Please check that muic is available.
Ok

 
  +
  +   return !!cable_connected;
 
 I think, cable_connected is unnecessary.
 
 return !!muic-chrg-chrg_type(muic);
 
Ok

  +}
  +#endif
  +#endif
  +
   static int pmic_init_max77686(void)
   {
  struct pmic *p = pmic_get(MAX77686_PMIC); diff --git
  a/include/configs/trats2.h b/include/configs/trats2.h index
  0e93836..66b1c95 100644
  --- a/include/configs/trats2.h
  +++ b/include/configs/trats2.h
  @@ -113,6 +113,16 @@
   #define CONFIG_CMD_EXT4
   #define CONFIG_CMD_EXT4_WRITE
 
  +/* USB Composite download gadget - g_dnl */ #define
  +CONFIG_USBDOWNLOAD_GADGET #define CONFIG_DFU_FUNCTION #define
  +CONFIG_DFU_MMC
  +
  +/* USB Samsung's IDs */
  +#define CONFIG_G_DNL_VENDOR_NUM 0x04E8 #define
  +CONFIG_G_DNL_PRODUCT_NUM 0x6601 #define CONFIG_G_DNL_MANUFACTURER
  +Samsung
  +
   /* To use the TFTPBOOT over USB, Please enable the CONFIG_CMD_NET */
  #undef CONFIG_CMD_NET
 
  @@ -293,6 +303,11 @@
   #define CONFIG_POWER_MUIC_MAX77693
   #define CONFIG_POWER_FG_MAX77693
   #define CONFIG_POWER_BATTERY_TRATS2
  +#define CONFIG_USB_GADGET
  +#define CONFIG_USB_GADGET_S3C_UDC_OTG #define
  +CONFIG_USB_GADGET_DUALSPEED
  +#define CONFIG_USB_GADGET_VBUS_DRAW2
  +#define CONFIG_USB_CABLE_CHECK
 
   /* LCD */
   

[U-Boot] [PATCH V3 2/2] trats2: enable ums support on Trats2

2013-11-07 Thread Piotr Wilczek
This patch adds support for USB and enables 'ums' command on Trats2 board.

Signed-off-by: Piotr Wilczek p.wilc...@samsung.com
Signed-off-by: Kyungmin Park kyungmin.p...@samsung.com
CC: Minkyu Kang mk7.k...@samsung.com

Acked-by: Jaehoon Chung jh80.ch...@samsung.com
---
This patch depends on the lated u-boot-usb/master.

Changes for v3:
 - no changes

Changes for v2:
 - rebased on current USB tree
 - removed unnecessary pmic probing

 board/samsung/trats2/trats2.c |   92 +
 include/configs/trats2.h  |   18 
 2 files changed, 110 insertions(+)

diff --git a/board/samsung/trats2/trats2.c b/board/samsung/trats2/trats2.c
index d44d825..41a7310 100644
--- a/board/samsung/trats2/trats2.c
+++ b/board/samsung/trats2/trats2.c
@@ -25,6 +25,9 @@
 #include power/max77693_fg.h
 #include libtizen.h
 #include errno.h
+#include usb.h
+#include usb/s3c_udc.h
+#include usb_mass_storage.h
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -308,6 +311,95 @@ int board_mmc_init(bd_t *bis)
return err0  err2;
 }
 
+#ifdef CONFIG_USB_GADGET
+static int s5pc210_phy_control(int on)
+{
+   int ret = 0;
+   unsigned int val;
+   struct pmic *p, *p_pmic, *p_muic;
+
+   p_pmic = pmic_get(MAX77686_PMIC);
+   if (!p_pmic)
+   return -ENODEV;
+
+   if (pmic_probe(p_pmic))
+   return -1;
+
+   p_muic = pmic_get(MAX77693_MUIC);
+   if (!p_muic)
+   return -ENODEV;
+
+   if (pmic_probe(p_muic))
+   return -1;
+
+   if (on) {
+   ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_ON);
+   if (ret)
+   return -1;
+
+   p = pmic_get(MAX77693_PMIC);
+   if (!p)
+   return -ENODEV;
+
+   if (pmic_probe(p))
+   return -1;
+
+   /* SAFEOUT */
+   ret = pmic_reg_read(p, MAX77693_SAFEOUT, val);
+   if (ret)
+   return -1;
+
+   val |= MAX77693_ENSAFEOUT1;
+   ret = pmic_reg_write(p, MAX77693_SAFEOUT, val);
+   if (ret)
+   return -1;
+
+   /* PATH: USB */
+   ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
+   MAX77693_MUIC_CTRL1_DN1DP2);
+
+   } else {
+   ret = max77686_set_ldo_mode(p_pmic, 12, OPMODE_LPM);
+   if (ret)
+   return -1;
+
+   /* PATH: UART */
+   ret = pmic_reg_write(p_muic, MAX77693_MUIC_CONTROL1,
+   MAX77693_MUIC_CTRL1_UT1UR2);
+   }
+
+   if (ret)
+   return -1;
+
+
+   return 0;
+}
+
+struct s3c_plat_otg_data s5pc210_otg_data = {
+   .phy_control= s5pc210_phy_control,
+   .regs_phy   = EXYNOS4X12_USBPHY_BASE,
+   .regs_otg   = EXYNOS4X12_USBOTG_BASE,
+   .usb_phy_ctrl   = EXYNOS4X12_USBPHY_CONTROL,
+   .usb_flags  = PHY0_SLEEP,
+};
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+   debug(USB_udc_probe\n);
+   return s3c_udc_probe(s5pc210_otg_data);
+}
+
+#ifdef CONFIG_USB_CABLE_CHECK
+int usb_cable_connected(void)
+{
+   struct pmic *muic = pmic_get(MAX77693_MUIC);
+   int cable_connected = muic-chrg-chrg_type(muic);
+
+   return !!cable_connected;
+}
+#endif
+#endif
+
 static int pmic_init_max77686(void)
 {
struct pmic *p = pmic_get(MAX77686_PMIC);
diff --git a/include/configs/trats2.h b/include/configs/trats2.h
index 0e93836..66b1c95 100644
--- a/include/configs/trats2.h
+++ b/include/configs/trats2.h
@@ -113,6 +113,16 @@
 #define CONFIG_CMD_EXT4
 #define CONFIG_CMD_EXT4_WRITE
 
+/* USB Composite download gadget - g_dnl */
+#define CONFIG_USBDOWNLOAD_GADGET
+#define CONFIG_DFU_FUNCTION
+#define CONFIG_DFU_MMC
+
+/* USB Samsung's IDs */
+#define CONFIG_G_DNL_VENDOR_NUM 0x04E8
+#define CONFIG_G_DNL_PRODUCT_NUM 0x6601
+#define CONFIG_G_DNL_MANUFACTURER Samsung
+
 /* To use the TFTPBOOT over USB, Please enable the CONFIG_CMD_NET */
 #undef CONFIG_CMD_NET
 
@@ -293,6 +303,11 @@
 #define CONFIG_POWER_MUIC_MAX77693
 #define CONFIG_POWER_FG_MAX77693
 #define CONFIG_POWER_BATTERY_TRATS2
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_USB_GADGET_VBUS_DRAW2
+#define CONFIG_USB_CABLE_CHECK
 
 /* LCD */
 #define CONFIG_EXYNOS_FB
@@ -305,6 +320,9 @@
 #define CONFIG_VIDEO_BMP_GZIP
 #define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE ((500 * 250 * 4) + (1  12))
 
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+
 /* Pass open firmware flat tree */
 #define CONFIG_OF_LIBFDT1
 
-- 
1.7.9.5

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot