Private
Public Access
2
0

intel_galileo_rev_g: remove platform code from core

* Using hook functionality swap_complex is now done in the pre direction
* set area.

Signed-off-by: Thomas Ingleby <thomas.c.ingleby@intel.com>
This commit is contained in:
Thomas Ingleby
2014-07-14 17:46:18 +01:00
parent 3d5512c15e
commit ce1fe370c4
3 changed files with 25 additions and 45 deletions

View File

@@ -402,11 +402,9 @@ mraa_gpio_dir(mraa_gpio_context dev, gpio_dir_t dir)
char bu[MAX_SIZE];
int length;
int out_switch = 0;
switch(dir) {
case MRAA_GPIO_OUT:
length = snprintf(bu, sizeof(bu), "out");
out_switch = 1;
break;
case MRAA_GPIO_IN:
length = snprintf(bu, sizeof(bu), "in");
@@ -416,12 +414,6 @@ mraa_gpio_dir(mraa_gpio_context dev, gpio_dir_t dir)
return MRAA_ERROR_FEATURE_NOT_IMPLEMENTED;
}
if (dev->phy_pin >= 0) {
mraa_result_t swap_res = mraa_swap_complex_gpio(dev->phy_pin, out_switch);
if (swap_res != MRAA_SUCCESS)
return swap_res;
}
if (write(direction, bu, length*sizeof(char)) == -1) {
close(direction);
return MRAA_ERROR_INVALID_RESOURCE;

View File

@@ -29,6 +29,29 @@
#include "common.h"
#include "intel_galileo_rev_g.h"
mraa_result_t
mraa_intel_galileo_gen2_dir_pre(mraa_gpio_context dev, gpio_dir_t dir)
{
if (dev->phy_pin >= 0) {
int pin = dev->phy_pin;
if (plat->pins[pin].gpio.complex_cap.complex_pin != 1)
return MRAA_SUCCESS;
if (plat->pins[pin].gpio.complex_cap.output_en == 1) {
mraa_gpio_context output_e;
output_e = mraa_gpio_init_raw(plat->pins[pin].gpio.output_enable);
if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS)
return MRAA_ERROR_INVALID_RESOURCE;
int output_val = 1;
if (dir == MRAA_GPIO_OUT)
output_val = 0;
if (mraa_gpio_write(output_e, output_val) != MRAA_SUCCESS)
return MRAA_ERROR_INVALID_RESOURCE;
}
}
return MRAA_SUCCESS;
}
mraa_board_t*
mraa_intel_galileo_gen2()
{
@@ -42,6 +65,8 @@ mraa_intel_galileo_gen2()
b->adc_raw = 12;
b->adc_supported = 10;
advance_func->gpio_dir_pre = &mraa_intel_galileo_gen2_dir_pre;
b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t)*MRAA_INTEL_GALILEO_GEN_2_PINCOUNT);
strncpy(b->pins[0].name, "IO0", 8);

View File

@@ -383,43 +383,6 @@ mraa_setup_mmap_gpio(int pin)
return ret;
}
mraa_result_t
mraa_swap_complex_gpio(int pin, int out)
{
if (plat == NULL)
return MRAA_ERROR_INVALID_PLATFORM;
switch (platform_type) {
case MRAA_INTEL_GALILEO_GEN2:
if (plat->pins[pin].gpio.complex_cap.complex_pin != 1)
return MRAA_SUCCESS;
if (plat->pins[pin].gpio.complex_cap.output_en == 1) {
mraa_gpio_context output_e;
output_e = mraa_gpio_init_raw(plat->pins[pin].gpio.output_enable);
if (mraa_gpio_dir(output_e, MRAA_GPIO_OUT) != MRAA_SUCCESS)
return MRAA_ERROR_INVALID_RESOURCE;
int output_val;
if (plat->pins[pin].gpio.complex_cap.output_en_high == 1)
output_val = out;
else
if (out == 1)
output_val = 0;
else
output_val = 1;
if (mraa_gpio_write(output_e, output_val) != MRAA_SUCCESS)
return MRAA_ERROR_INVALID_RESOURCE;
}
//if (plat->pins[pin].gpio.complex_cap.pullup_en == 1) {
// mraa_gpio_context pullup_e;
// pullup_e = mraa_gpio_init_raw(plat->pins[pin].gpio.pullup_enable);
// if (mraa_gpio_mode(pullup_e, MRAA_GPIO_HIZ) != MRAA_SUCCESS)
// return MRAA_ERROR_INVALID_RESOURCE;
//}
break;
default: return MRAA_SUCCESS;
}
}
mraa_platform_t mraa_get_platform_type()
{
return platform_type;