socsvn commit: r238138 - in soc2012/aleek/beaglexm-armv6: . lib/libc lib/libc/arm lib/libc/arm/gen sys sys/arm/arm sys/arm/ti/am335x sys/boot sys/boot/fdt/dts

aleek at FreeBSD.org aleek at FreeBSD.org
Fri Jun 22 11:35:17 UTC 2012


Author: aleek
Date: Fri Jun 22 11:35:14 2012
New Revision: 238138
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238138

Log:
  merge with armv6 branch

Modified:
  soc2012/aleek/beaglexm-armv6/   (props changed)
  soc2012/aleek/beaglexm-armv6/lib/libc/   (props changed)
  soc2012/aleek/beaglexm-armv6/lib/libc/arm/Symbol.map
  soc2012/aleek/beaglexm-armv6/lib/libc/arm/gen/__aeabi_read_tp.S
  soc2012/aleek/beaglexm-armv6/sys/   (props changed)
  soc2012/aleek/beaglexm-armv6/sys/arm/arm/pmap-v6.c
  soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_prcm.c
  soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
  soc2012/aleek/beaglexm-armv6/sys/boot/   (props changed)
  soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beaglebone.dts

Modified: soc2012/aleek/beaglexm-armv6/lib/libc/arm/Symbol.map
==============================================================================
--- soc2012/aleek/beaglexm-armv6/lib/libc/arm/Symbol.map	Fri Jun 22 10:25:12 2012	(r238137)
+++ soc2012/aleek/beaglexm-armv6/lib/libc/arm/Symbol.map	Fri Jun 22 11:35:14 2012	(r238138)
@@ -70,6 +70,7 @@
 	__divdf3;
 	__floatsisf;
 	__floatsidf;
+	__flt_rounds;
 	__fixsfsi;
 	__fixdfsi;
 	__fixunssfsi;

Modified: soc2012/aleek/beaglexm-armv6/lib/libc/arm/gen/__aeabi_read_tp.S
==============================================================================
--- soc2012/aleek/beaglexm-armv6/lib/libc/arm/gen/__aeabi_read_tp.S	Fri Jun 22 10:25:12 2012	(r238137)
+++ soc2012/aleek/beaglexm-armv6/lib/libc/arm/gen/__aeabi_read_tp.S	Fri Jun 22 11:35:14 2012	(r238138)
@@ -39,6 +39,8 @@
 #endif
 	RET
 
+#ifdef ARM_TP_ADDRESS
 .Larm_tp_address:
 	.word ARM_TP_ADDRESS
+#endif
 

Modified: soc2012/aleek/beaglexm-armv6/sys/arm/arm/pmap-v6.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/arm/pmap-v6.c	Fri Jun 22 10:25:12 2012	(r238137)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/arm/pmap-v6.c	Fri Jun 22 11:35:14 2012	(r238138)
@@ -809,6 +809,12 @@
 	ptep = &l2b->l2b_kva[l2pte_index(va)];
 	pte = *ptep;
 
+	cpu_idcache_wbinv_range(va, PAGE_SIZE);
+#ifdef ARM_L2_PIPT
+	cpu_l2cache_wbinv_range(pte & L2_S_FRAME, PAGE_SIZE);
+#else
+	cpu_l2cache_wbinv_range(va, PAGE_SIZE);
+#endif
 	if ((pte & L2_S_CACHE_MASK) != pte_l2_s_cache_mode_pt) {
 		/*
 		 * Page tables must have the cache-mode set to

Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_prcm.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_prcm.c	Fri Jun 22 10:25:12 2012	(r238137)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_prcm.c	Fri Jun 22 11:35:14 2012	(r238138)
@@ -118,6 +118,7 @@
 static struct am335x_prcm_softc *am335x_prcm_sc = NULL;
 
 static int am335x_clk_generic_activate(struct ti_clock_dev *clkdev);
+static int am335x_clk_gpio_activate(struct ti_clock_dev *clkdev);
 static int am335x_clk_generic_deactivate(struct ti_clock_dev *clkdev);
 static int am335x_clk_generic_set_source(struct ti_clock_dev *clkdev, clk_src_t clksrc);
 static int am335x_clk_hsmmc_get_source_freq(struct ti_clock_dev *clkdev,  unsigned int *freq);
@@ -136,6 +137,15 @@
 		.clk_get_source_freq = NULL \
 	}
 
+#define AM335X_GPIO_CLOCK_DEV(i) \
+	{	.id = (i), \
+		.clk_activate = am335x_clk_gpio_activate, \
+		.clk_deactivate = am335x_clk_generic_deactivate, \
+		.clk_set_source = am335x_clk_generic_set_source, \
+		.clk_accessible = NULL, \
+		.clk_get_source_freq = NULL \
+	}
+
 #define AM335X_MMCHS_CLOCK_DEV(i) \
 	{	.id = (i), \
 		.clk_activate = am335x_clk_generic_activate, \
@@ -189,10 +199,10 @@
 	AM335X_GENERIC_CLOCK_DEV(DMTIMER7_CLK),
 
 	/* GPIO */
-	AM335X_GENERIC_CLOCK_DEV(GPIO0_CLK),
-	AM335X_GENERIC_CLOCK_DEV(GPIO1_CLK),
-	AM335X_GENERIC_CLOCK_DEV(GPIO2_CLK),
-	AM335X_GENERIC_CLOCK_DEV(GPIO3_CLK),
+	AM335X_GPIO_CLOCK_DEV(GPIO0_CLK),
+	AM335X_GPIO_CLOCK_DEV(GPIO1_CLK),
+	AM335X_GPIO_CLOCK_DEV(GPIO2_CLK),
+	AM335X_GPIO_CLOCK_DEV(GPIO3_CLK),
 
 	/* I2C */
 	AM335X_GENERIC_CLOCK_DEV(I2C0_CLK),
@@ -361,6 +371,30 @@
 }
 
 static int
+am335x_clk_gpio_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 *_CLKCTRL register MODULEMODE[1:0] to enable(2) */
+	/* set *_CLKCTRL register OPTFCLKEN_GPIO_1_G DBCLK[18] to FCLK_EN(1) */
+	prcm_write_4(clk_details->clkctrl_reg, 2 | (1 << 18));
+	while ((prcm_read_4(clk_details->clkctrl_reg) & 
+	    (3 | (1 << 18) )) != (2 | (1 << 18)))
+		DELAY(10);
+
+	return (0);
+}
+
+static int
 am335x_clk_generic_deactivate(struct ti_clock_dev *clkdev)
 {
 	struct am335x_prcm_softc *sc = am335x_prcm_sc;

Modified: soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_scm_padconf.c	Fri Jun 22 10:25:12 2012	(r238137)
+++ soc2012/aleek/beaglexm-armv6/sys/arm/ti/am335x/am335x_scm_padconf.c	Fri Jun 22 11:35:14 2012	(r238138)
@@ -43,6 +43,7 @@
 #include <machine/frame.h>
 #include <machine/resource.h>
 #include <machine/intr.h>
+#include <sys/gpio.h>
 
 #include <arm/ti/tivar.h>
 #include <arm/ti/ti_scm.h>
@@ -65,16 +66,22 @@
 #define SLEWCTRL	(0x01 << 6) /* faster(0) or slower(1) slew rate. */
 #define RXACTIVE	(0x01 << 5) /* Input enable value for the Pad */
 #define PULLTYPESEL	(0x01 << 4) /* Pad pullup/pulldown type selection */
-#define PULLUDEN	(0x01 << 3) /* Pullup/pulldown enabled */
+#define PULLUDEN	(0x01 << 3) /* Pullup/pulldown disabled */
+
+#define PADCONF_OUTPUT			(0)
+#define PADCONF_OUTPUT_PULLUP		(PULLTYPESEL)
+#define PADCONF_INPUT			(RXACTIVE | PULLUDEN)
+#define PADCONF_INPUT_PULLUP		(RXACTIVE | PULLTYPESEL)
+#define PADCONF_INPUT_PULLDOWN		(RXACTIVE)
+#define PADCONF_INPUT_PULLUP_SLOW	(PADCONF_INPUT_PULLUP | SLEWCTRL)
 
 const struct ti_scm_padstate ti_padstate_devmap[] = {
-	{"output",			0 },
-	{"output_pullup",		PULLTYPESEL },
-	{"input",			RXACTIVE },
-	{"input_pulldown",		RXACTIVE | PULLUDEN },
-	{"input_pullup",		RXACTIVE | PULLUDEN | PULLTYPESEL },
-	{"input_pullup_inact",		RXACTIVE | PULLTYPESEL },
-	{"input_pullup_inact_slow",	RXACTIVE | PULLTYPESEL | SLEWCTRL },
+	{"output",		PADCONF_OUTPUT },
+	{"output_pullup",	PADCONF_OUTPUT_PULLUP },
+	{"input",		PADCONF_INPUT },
+	{"input_pulldown",	PADCONF_INPUT_PULLDOWN },
+	{"input_pullup",	PADCONF_INPUT_PULLUP },
+	{"i2c",			PADCONF_INPUT_PULLUP_SLOW },
 	{ .state = NULL }
 };
 
@@ -101,10 +108,12 @@
 	_PIN(0x848, "gpmc_a2",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x84C, "gpmc_a3",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x850, "gpmc_a4",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0x854, "gpmc_a5",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0x858, "gpmc_a6",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0x85C, "gpmc_a7",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0x860, "gpmc_a8",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+#endif
+	_PIN(0x854, "GPMC_A5",		 53, 7, "gpmc_a5", "gmii2_txd0", "rgmii2_td0", "rmii2_txd0", "gpmc_a21", "pr1_mii1_rxd3", "eQEP1B_in", "gpio1_21"),
+	_PIN(0x858, "GPMC_A6",		 54, 7, "gpmc_a6", "gmii2_txclk", "rgmii2_tclk", "mmc2_dat4", "gpmc_a22", "pr1_mii1_rxd2", "eQEP1_index", "gpio1_22"),
+	_PIN(0x85C, "GPMC_A7",		 55, 7, "gpmc_a7", "gmii2_rxclk", "rgmii2_rclk", "mmc2_dat5", "gpmc_a23", "pr1_mii1_rxd1", "eQEP1_strobe", "gpio1_23"),
+	_PIN(0x860, "GPMC_A8",		 56, 7, "gpmc_a8", "gmii2_rxd3", "rgmii2_rd3", "mmc2_dat6", "gpmc_a24", "pr1_mii1_rxd0", "mcasp0_aclkx", "gpio1_24"),
+#if 0
 	_PIN(0x864, "gpmc_a9",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x868, "gpmc_a10",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x86C, "gpmc_a11",		0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
@@ -178,8 +187,10 @@
 	_PIN(0x96c, "uart0_rtsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x970, "uart0_rxd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x974, "uart0_txd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0x978, "uart1_ctsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
-	_PIN(0x97c, "uart1_rtsn",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
+#endif
+	_PIN(0x978, "uart1_ctsn",	 12, 7, "uart1_ctsn", "timer6_mux1", "dcan0_tx", "I2C2_SDA", "spi1_cs0", "pr1_uart0_cts_n", "pr1_edc_latch0_in", "gpio0_12"),
+	_PIN(0x97c, "uart1_rtsn",	 13, 7, "uart1_rtsn", "timer5_mux1", "dcan0_rx", "I2C2_SCL", "spi1_cs1", "pr1_uart0_rts_n	", "pr1_edc_latch1_in", "gpio0_13"),
+#if 0
 	_PIN(0x980, "uart1_rxd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 	_PIN(0x984, "uart1_txd",	0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL),
 #endif
@@ -313,13 +324,50 @@
 int
 ti_scm_padconf_set_gpioflags(uint32_t gpio, uint32_t flags)
 {
-	/* TODO */
-	return (EINVAL);
+	unsigned int state = 0;
+	if (flags & GPIO_PIN_OUTPUT) {
+		if (flags & GPIO_PIN_PULLUP)
+			state = PADCONF_OUTPUT_PULLUP;
+		else
+			state = PADCONF_OUTPUT;
+	} else if (flags & GPIO_PIN_INPUT) {
+		if (flags & GPIO_PIN_PULLUP)
+			state = PADCONF_INPUT_PULLUP;
+		else if (flags & GPIO_PIN_PULLDOWN)
+			state = PADCONF_INPUT_PULLDOWN;
+		else
+			state = PADCONF_INPUT;
+	}
+	return ti_scm_padconf_set_gpiomode(gpio, state);
 }
 
 void
 ti_scm_padconf_get_gpioflags(uint32_t gpio, uint32_t *flags)
 {
-	/* TODO */
+	unsigned int state;
+	if (ti_scm_padconf_get_gpiomode(gpio, &state) != 0)
+		*flags = 0;
+	else {
+		switch (state) {
+			case PADCONF_OUTPUT:
+				*flags = GPIO_PIN_OUTPUT;
+				break;
+			case PADCONF_OUTPUT_PULLUP:
+				*flags = GPIO_PIN_OUTPUT | GPIO_PIN_PULLUP;
+				break;
+			case PADCONF_INPUT:
+				*flags = GPIO_PIN_INPUT;
+				break;
+			case PADCONF_INPUT_PULLUP:
+				*flags = GPIO_PIN_INPUT | GPIO_PIN_PULLUP;
+				break;
+			case PADCONF_INPUT_PULLDOWN:
+				*flags = GPIO_PIN_INPUT | GPIO_PIN_PULLDOWN;
+				break;
+			default:
+				*flags = 0;
+				break;
+		}
+	}
 }
 

Modified: soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beaglebone.dts
==============================================================================
--- soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beaglebone.dts	Fri Jun 22 10:25:12 2012	(r238137)
+++ soc2012/aleek/beaglexm-armv6/sys/boot/fdt/dts/beaglebone.dts	Fri Jun 22 11:35:14 2012	(r238138)
@@ -65,31 +65,31 @@
 			/* Set of triplets < padname, muxname, padstate> */
 			scm-pad-config =
 				/* I2C0 */
-				"I2C0_SDA", "I2C0_SDA","input_pullup_inact_slow",
-				"I2C0_SCL", "I2C0_SCL","input_pullup_inact_slow",
+				"I2C0_SDA", "I2C0_SDA","i2c",
+				"I2C0_SCL", "I2C0_SCL","i2c",
 				/* Ethernet */
-				"MII1_RX_ER", "gmii1_rxerr", "input",
+				"MII1_RX_ER", "gmii1_rxerr", "input_pulldown",
 				"MII1_TX_EN", "gmii1_txen", "output",
-				"MII1_RX_DV", "gmii1_rxdv", "input",
+				"MII1_RX_DV", "gmii1_rxdv", "input_pulldown",
 				"MII1_TXD3", "gmii1_txd3", "output",
 				"MII1_TXD2", "gmii1_txd2", "output",
 				"MII1_TXD1", "gmii1_txd1", "output",
 				"MII1_TXD0", "gmii1_txd0", "output",
-				"MII1_TX_CLK", "gmii1_txclk", "input",
-				"MII1_RX_CLK", "gmii1_rxclk", "input",
-				"MII1_RXD3", "gmii1_rxd3", "input",
-				"MII1_RXD2", "gmii1_rxd2", "input",
-				"MII1_RXD1", "gmii1_rxd1",  "input",
-				"MII1_RXD0", "gmii1_rxd0",  "input",
-				"MDIO", "mdio_data", "input_pullup_inact",
+				"MII1_TX_CLK", "gmii1_txclk", "input_pulldown",
+				"MII1_RX_CLK", "gmii1_rxclk", "input_pulldown",
+				"MII1_RXD3", "gmii1_rxd3", "input_pulldown",
+				"MII1_RXD2", "gmii1_rxd2", "input_pulldown",
+				"MII1_RXD1", "gmii1_rxd1",  "input_pulldown",
+				"MII1_RXD0", "gmii1_rxd0",  "input_pulldown",
+				"MDIO", "mdio_data", "input_pullup",
 				"MDC", "mdio_clk", "output_pullup",
 				/* MMCSD0 */
-				"MMC0_CMD", "mmc0_cmd", "input_pullup_inact",
-				"MMC0_CLK", "mmc0_clk", "input_pullup_inact",
-				"MMC0_DAT0", "mmc0_dat0", "input_pullup_inact",
-				"MMC0_DAT1", "mmc0_dat1", "input_pullup_inact",
-				"MMC0_DAT2", "mmc0_dat2", "input_pullup_inact",
-				"MMC0_DAT3", "mmc0_dat3", "input_pullup_inact";
+				"MMC0_CMD", "mmc0_cmd", "input_pullup",
+				"MMC0_CLK", "mmc0_clk", "input_pullup",
+				"MMC0_DAT0", "mmc0_dat0", "input_pullup",
+				"MMC0_DAT1", "mmc0_dat1", "input_pullup",
+				"MMC0_DAT2", "mmc0_dat2", "input_pullup",
+				"MMC0_DAT3", "mmc0_dat3", "input_pullup";
 		};
 
 		prcm at 44E00000 {


More information about the svn-soc-all mailing list