svn commit: r237020 - in projects/armv6/sys: arm/ti/am335x
boot/fdt/dts
Damjan Marion
dmarion at FreeBSD.org
Wed Jun 13 20:14:41 UTC 2012
Author: dmarion
Date: Wed Jun 13 20:14:41 2012
New Revision: 237020
URL: http://svn.freebsd.org/changeset/base/237020
Log:
Few changes in AM335x/beaglebone padconf:
- added padconf to gpio mapping functions
- renamed pad states
- added more padmux definitions
With this changes gpioctl(8) can be used for controlling gpios.
Following example toggles LED1 (bank 1 pin 21) on beaglebone:
gpioctl -f /dev/gpioc0 -c 53 OUT
gpioctl -f /dev/gpioc0 -t 53
Modified:
projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
projects/armv6/sys/boot/fdt/dts/beaglebone.dts
Modified: projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c
==============================================================================
--- projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c Wed Jun 13 19:53:29 2012 (r237019)
+++ projects/armv6/sys/arm/ti/am335x/am335x_scm_padconf.c Wed Jun 13 20:14:41 2012 (r237020)
@@ -43,6 +43,7 @@ __FBSDID("$FreeBSD$");
#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 @@ __FBSDID("$FreeBSD$");
#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 @@ const struct ti_scm_padconf ti_padconf_d
_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 @@ const struct ti_scm_padconf ti_padconf_d
_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 @@ const struct ti_scm_device ti_scm_dev =
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: projects/armv6/sys/boot/fdt/dts/beaglebone.dts
==============================================================================
--- projects/armv6/sys/boot/fdt/dts/beaglebone.dts Wed Jun 13 19:53:29 2012 (r237019)
+++ projects/armv6/sys/boot/fdt/dts/beaglebone.dts Wed Jun 13 20:14:41 2012 (r237020)
@@ -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-src-projects
mailing list