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