Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Mar 2012 10:26:53 +0000 (UTC)
From:      Damjan Marion <dmarion@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r233301 - in projects/armv6/sys/arm/ti: . am335x
Message-ID:  <201203221026.q2MAQr6x020364@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dmarion
Date: Thu Mar 22 10:26:53 2012
New Revision: 233301
URL: http://svn.freebsd.org/changeset/base/233301

Log:
  Add PRCM and SCM prereqs for USB controller on AM335x
  
  Approved by:	cognet (mentor)

Modified:
  projects/armv6/sys/arm/ti/am335x/am335x_prcm.c
  projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
  projects/armv6/sys/arm/ti/ti_prcm.h

Modified: projects/armv6/sys/arm/ti/am335x/am335x_prcm.c
==============================================================================
--- projects/armv6/sys/arm/ti/am335x/am335x_prcm.c	Thu Mar 22 09:51:31 2012	(r233300)
+++ projects/armv6/sys/arm/ti/am335x/am335x_prcm.c	Thu Mar 22 10:26:53 2012	(r233301)
@@ -59,6 +59,7 @@ __FBSDID("$FreeBSD$");
 #define CM_PER_L3S_CLKSTCTRL		(CM_PER + 0x004)
 #define CM_PER_L3_CLKSTCTRL		(CM_PER + 0x00C)
 #define CM_PER_CPGMAC0_CLKCTRL		(CM_PER + 0x014)
+#define CM_PER_USB0_CLKCTRL		(CM_PER + 0x01C)
 #define CM_PER_I2C2_CLKCTRL		(CM_PER + 0x044)
 #define CM_PER_I2C1_CLKCTRL		(CM_PER + 0x048)
 #define CM_PER_TIMER7_CLKCTRL		(CM_PER + 0x07C)
@@ -78,6 +79,7 @@ __FBSDID("$FreeBSD$");
 #define CM_WKUP_CONTROL_CLKCTRL		(CM_WKUP + 0x004)
 #define CM_WKUP_CM_L3_AON_CLKSTCTRL	(CM_WKUP + 0x01C)
 #define CM_WKUP_CM_CLKSEL_DPLL_MPU	(CM_WKUP + 0x02C)
+#define CM_WKUP_CM_CLKDCOLDO_DPLL_PER	(CM_WKUP + 0x07C)
 #define CM_WKUP_I2C0_CLKCTRL		(CM_WKUP + 0x0B8)
 
 #define CM_DPLL				0x500
@@ -111,6 +113,7 @@ static int am335x_clk_get_sysclk_freq(st
 static int am335x_clk_get_arm_fclk_freq(struct ti_clock_dev *clkdev, unsigned int *freq);
 static void am335x_prcm_reset(void);
 static int am335x_clk_cpsw_activate(struct ti_clock_dev *clkdev);
+static int am335x_clk_musb0_activate(struct ti_clock_dev *clkdev);
 
 #define AM335X_GENERIC_CLOCK_DEV(i) \
 	{	.id = (i), \
@@ -147,6 +150,15 @@ struct ti_clock_dev ti_clk_devmap[] = {
 		.clk_get_source_freq = NULL,
 	},
 
+	/* Mentor USB HS controller core clocks */
+	{	.id                  = MUSB0_CLK,
+		.clk_activate        = am335x_clk_musb0_activate,
+		.clk_deactivate      = NULL,
+		.clk_set_source      = NULL,
+		.clk_accessible      = NULL,
+		.clk_get_source_freq = NULL,
+	},
+
 	/* DMTimer */
 	AM335X_GENERIC_CLOCK_DEV(DMTIMER2_CLK),
 	AM335X_GENERIC_CLOCK_DEV(DMTIMER3_CLK),
@@ -416,19 +428,12 @@ static int
 am335x_clk_cpsw_activate(struct ti_clock_dev *clkdev)
 {
 	struct am335x_prcm_softc *sc = am335x_prcm_sc;
-	struct am335x_clk_details* clk_details;
 
 	if (sc == NULL)
 		return ENXIO;
 
-	clk_details = am335x_clk_details(clkdev->id);
-
-	if (clk_details == NULL)
-		return (ENXIO);
-
-
 	/* set MODULENAME to ENABLE */
-        prcm_write_4(CM_PER_CPGMAC0_CLKCTRL, 2);
+	prcm_write_4(CM_PER_CPGMAC0_CLKCTRL, 2);
 
 	/* wait for IDLEST to become Func(0) */
 	while(prcm_read_4(CM_PER_CPGMAC0_CLKCTRL) & (3<<16));
@@ -441,4 +446,30 @@ am335x_clk_cpsw_activate(struct ti_clock
 	return(0);
 }
 
+static int
+am335x_clk_musb0_activate(struct ti_clock_dev *clkdev)
+{
+	struct am335x_prcm_softc *sc = am335x_prcm_sc;
+
+	if (sc == NULL)
+		return ENXIO;
+
+	/* set ST_DPLL_CLKDCOLDO(9) to CLK_GATED(1) */
+	/* set DPLL_CLKDCOLDO_GATE_CTRL(8) to CLK_ENABLE(1)*/
+        prcm_write_4(CM_WKUP_CM_CLKDCOLDO_DPLL_PER, 0x300);
+
+	/*set MODULEMODE to ENABLE(2) */
+	prcm_write_4(CM_PER_USB0_CLKCTRL, 2);
+
+	/* wait for MODULEMODE to become ENABLE(2) */
+	while ((prcm_read_4(CM_PER_USB0_CLKCTRL) & 0x3) != 2)
+		DELAY(10);
+
+	/* wait for IDLEST to become Func(0) */
+	while(prcm_read_4(CM_PER_USB0_CLKCTRL) & (3<<16))
+		DELAY(10);
+
+	return(0);
+}
+
 

Modified: projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
==============================================================================
--- projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c	Thu Mar 22 09:51:31 2012	(r233300)
+++ projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c	Thu Mar 22 10:26:53 2012	(r233301)
@@ -216,18 +216,20 @@ const struct ti_scm_padconf ti_padconf_d
 	_PIN(0x9fc, "pmic_power_en",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0xa00, "ext_wakeup",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0xa04, "enz_kaldo_1p8v",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa08, "usb0_dm",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa0c, "usb0_dp",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa10, "usb0_ce",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa14, "usb0_id",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa18, "usb0_vbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa1c, "usb0_drvvbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa20, "usb1_dm",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa24, "usb1_dp",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa28, "usb1_ce",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa2c, "usb1_id",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa30, "usb1_vbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0xa34, "usb1_drvvbus",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+#endif
+	_PIN(0xa08, "USB0_DM",		  0, 0, "USB0_DM", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa0c, "USB0_DP",		  0, 0, "USB0_DP", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa10, "USB0_CE",		  0, 0, "USB0_CE", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa14, "USB0_ID",		  0, 0, "USB0_ID", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa18, "USB0_VBUS",	  0, 0, "USB0_VBUS", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa1c, "USB0_DRVVBUS",	 18, 7, "USB0_DRVVBUS", NULL, NULL, NULL, NULL, NULL, NULL, "gpio0_18"),
+	_PIN(0xa20, "USB1_DM",		  0, 0, "USB1_DM", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa24, "USB1_DP",		  0, 0, "USB1_DP", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa28, "USB1_CE",		  0, 0, "USB1_CE", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa2c, "USB1_ID",		  0, 0, "USB1_ID", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa30, "USB1_VBUS",	  0, 0, "USB1_VBUS", NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+	_PIN(0xa34, "USB1_DRVVBUS",	109, 7, "USB1_DRVVBUS", NULL, NULL, NULL, NULL, NULL, NULL, "gpio3_13"),
+#if 0
 	_PIN(0xa38, "ddr_resetn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0xa3c, "ddr_csn0",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0xa40, "ddr_cke",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),

Modified: projects/armv6/sys/arm/ti/ti_prcm.h
==============================================================================
--- projects/armv6/sys/arm/ti/ti_prcm.h	Thu Mar 22 09:51:31 2012	(r233300)
+++ projects/armv6/sys/arm/ti/ti_prcm.h	Thu Mar 22 10:26:53 2012	(r233301)
@@ -128,6 +128,9 @@ typedef enum {
 	/* CPSW modules */
 	CPSW_CLK = 1000,
 
+	/* Mentor USB modules */
+	MUSB0_CLK = 1100,
+
 	INVALID_CLK_IDENT
 
 } clk_ident_t;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203221026.q2MAQr6x020364>