Private
Public Access
2
0

aiotdevkit: add support for IEI Tank platforms

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
This commit is contained in:
Mihai Tudor Panu
2018-05-31 21:04:20 -07:00
parent 7d58d4c6d0
commit 9c5f940dad
6 changed files with 190 additions and 0 deletions

View File

@@ -59,6 +59,7 @@ typedef enum {
MRAA_UP2 = 16, /**< The UP^2 Board */
MRAA_MTK_LINKIT = 17, /**< Mediatek MT7688 based Linkit boards */
MRAA_MTK_OMEGA2 = 18, /**< MT7688 based Onion Omega2 board */
MRAA_IEI_TANK = 19, /**< IEI Tank System*/
// USB platform extenders start at 256
MRAA_FTDI_FT4222 = 256, /**< FTDI FT4222 USB to i2c bridge */

View File

@@ -55,6 +55,7 @@ typedef enum {
PHYBOARD_WEGA = 14, /**< The phyBOARD-Wega */
DE_NANO_SOC = 15, /**< Terasic DE-Nano-SoC Board */
INTEL_UP2 = 16, /**< The UP^2 Board */
IEI_TANK = 19, /**< IEI Tank System*/
FTDI_FT4222 = 256, /**< FTDI FT4222 USB to i2c bridge */

41
include/x86/iei_tank.h Normal file
View File

@@ -0,0 +1,41 @@
/*
* Author: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
* Copyright (c) 2018 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include "mraa_internal.h"
#define MRAA_IEI_TANK_PINCOUNT 9
#define MRAA_IEI_TANK_UARTCOUNT 6
mraa_board_t*
mraa_iei_tank();
#ifdef __cplusplus
}
#endif

View File

@@ -53,6 +53,7 @@ set (mraa_LIB_X86_SRCS_NOAUTO
${PROJECT_SOURCE_DIR}/src/x86/up.c
${PROJECT_SOURCE_DIR}/src/x86/up2.c
${PROJECT_SOURCE_DIR}/src/x86/intel_joule_expansion.c
${PROJECT_SOURCE_DIR}/src/x86/iei_tank.c
)
message (STATUS "INFO - Adding support for platform ${MRAAPLATFORMFORCE}")
@@ -82,6 +83,8 @@ if (NOT ${MRAAPLATFORMFORCE} STREQUAL "ALL")
set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/up2.c)
elseif( ${MRAAPLATFORMFORCE} STREQUAL "MRAA_INTEL_JOULE_EXPANSION")
set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/intel_joule_expansion.c)
elseif( ${MRAAPLATFORMFORCE} STREQUAL "MRAA_IEI_TANK")
set (mraa_LIB_X86_SRCS_NOAUTO ${PROJECT_SOURCE_DIR}/src/x86/x86.c ${PROJECT_SOURCE_DIR}/src/x86/iei_tank.c)
else ()
message (FATAL_ERROR "Unknown x86 platform enabled!")
endif ()

140
src/x86/iei_tank.c Normal file
View File

@@ -0,0 +1,140 @@
/*
* Author: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
* Copyright (c) 2018 Intel Corporation.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "common.h"
#include "x86/iei_tank.h"
#define PLATFORM_NAME "IEI Tank"
mraa_board_t*
mraa_iei_tank()
{
mraa_board_t* b = (mraa_board_t*) calloc(1, sizeof(mraa_board_t));
if (b == NULL) {
return NULL;
}
b->platform_name = PLATFORM_NAME;
b->phy_pin_count = MRAA_IEI_TANK_PINCOUNT;
b->chardev_capable = 1;
b->adv_func = (mraa_adv_func_t*) calloc(1, sizeof(mraa_adv_func_t));
if (b->adv_func == NULL) {
goto error;
}
b->pins = (mraa_pininfo_t*) calloc(MRAA_IEI_TANK_PINCOUNT,sizeof(mraa_pininfo_t));
if (b->pins == NULL) {
free(b->adv_func);
goto error;
}
// Maps the DB9 DIO connector
strncpy(b->pins[0].name, "DIN0", 8);
b->pins[0].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[0].gpio.gpio_chip = 0;
b->pins[0].gpio.gpio_line = 4;
strncpy(b->pins[1].name, "DOUT0", 8);
b->pins[1].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[1].gpio.gpio_chip = 0;
b->pins[1].gpio.gpio_line = 0;
strncpy(b->pins[2].name, "DIN1", 8);
b->pins[2].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[2].gpio.gpio_chip = 1;
b->pins[2].gpio.gpio_line = 1;
strncpy(b->pins[3].name, "DOUT1", 8);
b->pins[3].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[3].gpio.gpio_chip = 0;
b->pins[3].gpio.gpio_line = 1;
strncpy(b->pins[4].name, "DIN2", 8);
b->pins[4].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[4].gpio.gpio_chip = 1;
b->pins[4].gpio.gpio_line = 2;
strncpy(b->pins[5].name, "DOUT2", 8);
b->pins[5].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[5].gpio.gpio_chip = 0;
b->pins[5].gpio.gpio_line = 2;
strncpy(b->pins[6].name, "DIN3", 8);
b->pins[6].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[6].gpio.gpio_chip = 1;
b->pins[6].gpio.gpio_line = 3;
strncpy(b->pins[7].name, "DOUT3", 8);
b->pins[7].capabilities = (mraa_pincapabilities_t){ 1, 1, 0, 0, 0, 0, 0, 0 };
b->pins[0].gpio.gpio_chip = 0;
b->pins[0].gpio.gpio_line = 3;
strncpy(b->pins[8].name, "5V", 8);
b->pins[8].capabilities = (mraa_pincapabilities_t){ 1, 0, 0, 0, 0, 0, 0, 0 };
// Maps the 6 uart ports
b->uart_dev_count = 6;
b->def_uart_dev = 0;
//b->uart_dev[0].device_path = "/dev/ttyS0";
//b->uart_dev[1].device_path = "/dev/ttyS1";
//b->uart_dev[2].device_path = "/dev/ttyS2";
//b->uart_dev[3].device_path = "/dev/ttyS3";
//b->uart_dev[4].device_path = "/dev/ttyS4";
//b->uart_dev[5].device_path = "/dev/ttyS5";
if (mraa_find_uart_bus_pci("/sys/devices/pnp0/00:03/tty",
&(b->uart_dev[0].device_path)) != MRAA_SUCCESS) {
syslog(LOG_WARNING, "Unable to initialize COM1");
b->uart_dev_count--;
}
if (mraa_find_uart_bus_pci("/sys/devices/pnp0/00:04/tty",
&(b->uart_dev[1].device_path)) != MRAA_SUCCESS) {
syslog(LOG_WARNING, "Unable to initialize COM2");
b->uart_dev_count--;
}
if (mraa_find_uart_bus_pci("/sys/devices/pnp0/00:05/tty",
&(b->uart_dev[2].device_path)) != MRAA_SUCCESS) {
syslog(LOG_WARNING, "Unable to initialize COM3");
b->uart_dev_count--;
}
if (mraa_find_uart_bus_pci("/sys/devices/pnp0/00:06/tty",
&(b->uart_dev[3].device_path)) != MRAA_SUCCESS) {
syslog(LOG_WARNING, "Unable to initialize COM4");
b->uart_dev_count--;
}
if (mraa_find_uart_bus_pci("/sys/devices/pnp0/00:07/tty",
&(b->uart_dev[4].device_path)) != MRAA_SUCCESS) {
syslog(LOG_WARNING, "Unable to initialize COM5");
b->uart_dev_count--;
}
if (mraa_find_uart_bus_pci("/sys/devices/pnp0/00:08/tty",
&(b->uart_dev[5].device_path)) != MRAA_SUCCESS) {
syslog(LOG_WARNING, "Unable to initialize COM6");
b->uart_dev_count--;
}
return b;
error:
syslog(LOG_CRIT, "iei-tank: Platform failed to initialize");
free(b);
return NULL;
}

View File

@@ -39,6 +39,7 @@
#include "x86/up.h"
#include "x86/up2.h"
#include "x86/intel_joule_expansion.h"
#include "x86/iei_tank.h"
mraa_platform_t
mraa_x86_platform()
@@ -102,6 +103,9 @@ mraa_x86_platform()
} else if (strncasecmp(line, "SDS", strlen("SDS") + 1) == 0) {
platform_type = MRAA_INTEL_JOULE_EXPANSION;
plat = mraa_joule_expansion_board();
} else if ((strncasecmp(line, "SAF3", strlen("SAF3") + 1) == 0) ) {
platform_type = MRAA_IEI_TANK;
plat = mraa_iei_tank();
} else {
syslog(LOG_ERR, "Platform not supported, not initialising");
platform_type = MRAA_UNKNOWN_PLATFORM;