summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Gilles <jgilles@multitech.com>2012-11-08 13:53:58 -0600
committerJesse Gilles <jgilles@multitech.com>2012-11-08 13:53:58 -0600
commitef8856a810429e44003294fd9585b16509a9d962 (patch)
tree151a6d141a3eb2932dc35084914c66069691b0b6
parent19b229e8a044eb1a52a4d94e4d6e024700334bf3 (diff)
downloadcdp-io-controller-ef8856a810429e44003294fd9585b16509a9d962.tar.gz
cdp-io-controller-ef8856a810429e44003294fd9585b16509a9d962.tar.bz2
cdp-io-controller-ef8856a810429e44003294fd9585b16509a9d962.zip
add mtr2 rev A support
* added wifi led * rsersrc is removed * new serial_mode pins, rs4xx_term_res pin * bt-enable pin changed
-rw-r--r--io-module/mts_io.c85
1 files changed, 43 insertions, 42 deletions
diff --git a/io-module/mts_io.c b/io-module/mts_io.c
index 9b089b6..547f730 100644
--- a/io-module/mts_io.c
+++ b/io-module/mts_io.c
@@ -427,7 +427,7 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
{
.name = "LS_LED",
.attr_name = "led-ls",
- .pin = AT91_PIN_PA29,
+ .pin = AT91_PIN_PA14,
#if LED_LS_CONTROLLABLE
.direction = GPIO_DIR_OUTPUT,
#else
@@ -477,15 +477,15 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
.use_pullup = 0,
},
{
- .name = "RSERSRC",
- .attr_name = "rsersrc",
- .pin = AT91_PIN_PC14,
+ .name = "LED13",
+ .attr_name = "led-wifi",
+ .pin = AT91_PIN_PA29,
.direction = GPIO_DIR_OUTPUT,
.output_value = 1,
.use_pullup = 0,
},
{
- .name = "DTR1",
+ .name = "UART3_DTR",
.attr_name = "extserial-dtr",
.pin = AT91_PIN_PC12,
.direction = GPIO_DIR_INPUT,
@@ -493,7 +493,7 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
.use_pullup = 0,
},
{
- .name = "DSR1",
+ .name = "UART3_DSR",
.attr_name = "extserial-dsr",
.pin = AT91_PIN_PC11,
.direction = GPIO_DIR_OUTPUT,
@@ -501,7 +501,7 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
.use_pullup = 0,
},
{
- .name = "DCD1",
+ .name = "UART3_DCD",
.attr_name = "extserial-dcd",
.pin = AT91_PIN_PC10,
.direction = GPIO_DIR_OUTPUT,
@@ -509,7 +509,7 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
.use_pullup = 0,
},
{
- .name = "RI1",
+ .name = "UART3_RI",
.attr_name = "extserial-ri",
.pin = AT91_PIN_PC13,
.direction = GPIO_DIR_OUTPUT,
@@ -527,7 +527,7 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
{
.name = "BT_EN",
.attr_name = "bt-enabled",
- .pin = AT91_PIN_PC0,
+ .pin = AT91_PIN_PD21,
.direction = GPIO_DIR_OUTPUT,
.output_value = 0,
.use_pullup = 0,
@@ -542,31 +542,31 @@ static struct gpio_pin gpio_pins_mtr2_0_0[] = {
},
{
.name = "SERIAL_MODE0",
- .attr_name = "",
+ .attr_name = "serial_mode",
.pin = AT91_PIN_PC23,
.direction = GPIO_DIR_OUTPUT,
- .output_value = 0,
+ .output_value = 1,
.use_pullup = 0,
},
{
- .name = "SERIAL_MODE2",
- .attr_name = "",
+ .name = "SERIAL_MODE1",
+ .attr_name = "serial_mode",
.pin = AT91_PIN_PC24,
.direction = GPIO_DIR_OUTPUT,
- .output_value = 1,
+ .output_value = 0,
.use_pullup = 0,
},
{
- .name = "RS422_TERM_RES",
- .attr_name = "rs422-term-res",
+ .name = "SERIAL_MODE2",
+ .attr_name = "serial_mode",
.pin = AT91_PIN_PC25,
.direction = GPIO_DIR_OUTPUT,
.output_value = 0,
.use_pullup = 0,
},
{
- .name = "RS485_TERM_RES",
- .attr_name = "rs485-term-res",
+ .name = "RS4XX_TERM_RES",
+ .attr_name = "rs4xx-term-res",
.pin = AT91_PIN_PC26,
.direction = GPIO_DIR_OUTPUT,
.output_value = 0,
@@ -2054,18 +2054,9 @@ static struct device_attribute dev_attr_reset = {
.show = mts_attr_show_gpio_pin_inverted,
};
-static struct device_attribute dev_attr_rs485_term_res = {
+static struct device_attribute dev_attr_rs4xx_term_res = {
.attr = {
- .name = "rs485-term-res",
- .mode = MTS_ATTR_MODE_RW,
- },
- .show = mts_attr_show_gpio_pin,
- .store = mts_attr_store_gpio_pin,
-};
-
-static struct device_attribute dev_attr_rs422_term_res = {
- .attr = {
- .name = "rs422-term-res",
+ .name = "rs4xx-term-res",
.mode = MTS_ATTR_MODE_RW,
},
.show = mts_attr_show_gpio_pin,
@@ -2438,25 +2429,30 @@ static ssize_t mts_attr_show_serial_mode(struct device *dev,
{
int ret;
int smode0;
+ int smode1;
int smode2;
struct gpio_pin *pin_smode0 = gpio_pin_by_name("SERIAL_MODE0");
+ struct gpio_pin *pin_smode1 = gpio_pin_by_name("SERIAL_MODE1");
struct gpio_pin *pin_smode2 = gpio_pin_by_name("SERIAL_MODE2");
- if (!pin_smode0 || !pin_smode2)
+ if (!pin_smode0 || !pin_smode1 || !pin_smode2)
return -ENODEV;
mutex_lock(&mts_io_mutex);
smode0 = at91_get_gpio_value(pin_smode0->pin);
+ smode1 = at91_get_gpio_value(pin_smode1->pin);
smode2 = at91_get_gpio_value(pin_smode2->pin);
- if (smode2 == 0 && smode0 == 1)
- ret = sprintf(buf, "rs485\n");
- else if (smode2 == 1 && smode0 == 0)
+ if (smode2 == 0 && smode1 == 0 && smode0 == 1)
ret = sprintf(buf, "rs232\n");
- else if (smode2 == 1 && smode0 == 1)
+ else if (smode2 == 0 && smode1 == 1 && smode0 == 0)
+ ret = sprintf(buf, "rs485\n");
+ else if (smode2 == 1 && smode1 == 0 && smode0 == 0)
ret = sprintf(buf, "rs422\n");
+ else
+ ret = sprintf(buf, "error\n");
mutex_unlock(&mts_io_mutex);
@@ -2467,24 +2463,29 @@ static ssize_t mts_attr_store_serial_mode(struct device *dev,
struct device_attribute *attr, const char *buf, size_t count)
{
int smode0;
+ int smode1;
int smode2;
struct gpio_pin *pin_smode0 = gpio_pin_by_name("SERIAL_MODE0");
+ struct gpio_pin *pin_smode1 = gpio_pin_by_name("SERIAL_MODE1");
struct gpio_pin *pin_smode2 = gpio_pin_by_name("SERIAL_MODE2");
- if (!pin_smode0 || !pin_smode2)
+ if (!pin_smode0 || !pin_smode1 || !pin_smode2)
return -ENODEV;
- if (!strcasecmp(buf, "rs485")) {
+ if (!strcasecmp(buf, "rs232")) {
smode2 = 0;
+ smode1 = 0;
smode0 = 1;
}
- else if (!strcasecmp(buf, "rs232")) {
- smode2 = 1;
+ else if (!strcasecmp(buf, "rs485")) {
+ smode2 = 0;
+ smode1 = 1;
smode0 = 0;
}
else if (!strcasecmp(buf, "rs422")) {
smode2 = 1;
- smode0 = 1;
+ smode1 = 0;
+ smode0 = 0;
}
else {
return -EINVAL;
@@ -2493,6 +2494,7 @@ static ssize_t mts_attr_store_serial_mode(struct device *dev,
mutex_lock(&mts_io_mutex);
at91_set_gpio_value(pin_smode2->pin, smode2);
+ at91_set_gpio_value(pin_smode1->pin, smode1);
at91_set_gpio_value(pin_smode0->pin, smode0);
mutex_unlock(&mts_io_mutex);
@@ -2610,20 +2612,19 @@ static struct attribute *mtr2_platform_attributes[] = {
&dev_attr_extserial_dsr_gpio.attr,
&dev_attr_extserial_ri_gpio.attr,
&dev_attr_extserial_cd.attr,
- &dev_attr_rsersrc.attr,
&dev_attr_eth_switch_enabled.attr,
&dev_attr_bt_enabled.attr,
&dev_attr_wlan_enabled.attr,
&dev_attr_serial_mode.attr,
- &dev_attr_rs485_term_res.attr,
- &dev_attr_rs422_term_res.attr,
+ &dev_attr_rs4xx_term_res.attr,
&dev_attr_led_status.attr,
&dev_attr_led_sig1_gpio.attr,
&dev_attr_led_sig2_gpio.attr,
&dev_attr_led_sig3_gpio.attr,
&dev_attr_led_cd_gpio.attr,
+ &dev_attr_led_wifi.attr,
&dev_attr_board_temperature.attr,