From 0a1cf1af3bf3a8c9e45d3329ff625f0a82626684 Mon Sep 17 00:00:00 2001 From: Thomas Ingleby Date: Thu, 31 Jul 2014 14:53:03 +0100 Subject: [PATCH] edison: spi addition completed Signed-off-by: Thomas Ingleby --- src/intel_edison_fab_c.c | 73 ++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 62 insertions(+), 11 deletions(-) diff --git a/src/intel_edison_fab_c.c b/src/intel_edison_fab_c.c index 60f9193..27afbdf 100644 --- a/src/intel_edison_fab_c.c +++ b/src/intel_edison_fab_c.c @@ -278,6 +278,55 @@ mraa_intel_edison_pwm_init_post(mraa_pwm_context pwm) return MRAA_SUCCESS; } +mraa_result_t +mraa_intel_edison_spi_init_pre(int bus) +{ + mraa_gpio_write(tristate, 0); + + mraa_gpio_context io10_out = mraa_gpio_init_raw(258); + mraa_gpio_context io11_out = mraa_gpio_init_raw(259); + mraa_gpio_context io12_out = mraa_gpio_init_raw(260); + mraa_gpio_context io13_out = mraa_gpio_init_raw(261); + mraa_gpio_dir(io10_out, MRAA_GPIO_OUT); + mraa_gpio_dir(io11_out, MRAA_GPIO_OUT); + mraa_gpio_dir(io12_out, MRAA_GPIO_OUT); + mraa_gpio_dir(io13_out, MRAA_GPIO_OUT); + + mraa_gpio_write(io10_out, 1); + mraa_gpio_write(io11_out, 1); + mraa_gpio_write(io12_out, 0); + mraa_gpio_write(io13_out, 1); + + mraa_gpio_close(io10_out); + mraa_gpio_close(io11_out); + mraa_gpio_close(io12_out); + mraa_gpio_close(io13_out); + + mraa_gpio_context io10_pull = mraa_gpio_init_raw(226); + mraa_gpio_context io11_pull = mraa_gpio_init_raw(227); + mraa_gpio_context io12_pull = mraa_gpio_init_raw(228); + mraa_gpio_context io13_pull = mraa_gpio_init_raw(229); + + mraa_gpio_dir(io10_pull, MRAA_GPIO_IN); + mraa_gpio_dir(io11_pull, MRAA_GPIO_IN); + mraa_gpio_dir(io12_pull, MRAA_GPIO_IN); + mraa_gpio_dir(io13_pull, MRAA_GPIO_IN); + + mraa_gpio_close(io10_pull); + mraa_gpio_close(io11_pull); + mraa_gpio_close(io12_pull); + mraa_gpio_close(io13_pull); + + return MRAA_SUCCESS; +} + +mraa_result_t +mraa_intel_edison_spi_init_post(mraa_spi_context spi) +{ + mraa_gpio_write(tristate, 1); + return MRAA_SUCCESS; +} + mraa_board_t* mraa_intel_edison_fab_c() { @@ -298,6 +347,8 @@ mraa_intel_edison_fab_c() advance_func->aio_init_post = &mraa_intel_edison_aio_init_post; advance_func->pwm_init_pre = &mraa_intel_edison_pwm_init_pre; advance_func->pwm_init_post = &mraa_intel_edison_pwm_init_post; + advance_func->spi_init_pre = &mraa_intel_edison_spi_init_pre; + advance_func->spi_init_post = &mraa_intel_edison_spi_init_post; b->pins = (mraa_pininfo_t*) malloc(sizeof(mraa_pininfo_t)*MRAA_INTEL_EDISON_PINCOUNT); @@ -391,12 +442,12 @@ mraa_intel_edison_fab_c() b->pins[10].gpio.mux[0].value = 1; b->pins[10].gpio.mux[1].pin = 240; b->pins[10].gpio.mux[1].value = 0; - b->pins[11].spi.pinmap = 5; - b->pins[11].spi.mux_total = 2; - b->pins[11].spi.mux[0].pin = 263; - b->pins[11].spi.mux[0].value = 1; - b->pins[11].spi.mux[1].pin = 240; - b->pins[11].spi.mux[2].value = 1; + b->pins[10].spi.pinmap = 5; + b->pins[10].spi.mux_total = 2; + b->pins[10].spi.mux[0].pin = 263; + b->pins[10].spi.mux[0].value = 1; + b->pins[10].spi.mux[1].pin = 240; + b->pins[10].spi.mux[1].value = 1; strncpy(b->pins[11].name, "IO11", 8); b->pins[11].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0}; @@ -412,7 +463,7 @@ mraa_intel_edison_fab_c() b->pins[11].spi.mux[0].pin = 262; b->pins[11].spi.mux[0].value = 1; b->pins[11].spi.mux[1].pin = 241; - b->pins[11].spi.mux[2].value = 1; + b->pins[11].spi.mux[1].value = 1; strncpy(b->pins[12].name, "IO12", 8); b->pins[12].capabilites = (mraa_pincapabilities_t) {1,1,0,0,1,0,0,0}; @@ -433,10 +484,10 @@ mraa_intel_edison_fab_c() b->pins[13].gpio.mux_total = 1; b->pins[13].gpio.mux[0].pin = 243; b->pins[13].gpio.mux[0].value = 0; - b->pins[12].spi.pinmap = 5; - b->pins[12].spi.mux_total = 1; - b->pins[12].spi.mux[0].pin = 243; - b->pins[12].spi.mux[0].value = 1; + b->pins[13].spi.pinmap = 5; + b->pins[13].spi.mux_total = 1; + b->pins[13].spi.mux[0].pin = 243; + b->pins[13].spi.mux[0].value = 1; strncpy(b->pins[14].name, "A0", 8); b->pins[14].capabilites = (mraa_pincapabilities_t) {1,1,0,0,0,0,1,0}; -- 2.7.4