cmake: add FTDI FT4222 support
Existing FTDI D2xx support is just for serial comms library but FT4222 needs a different library for i2c operation. Signed-off-by: Henry Bruce <henry.bruce@intel.com> Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
committed by
Brendan Le Foll
parent
e353508e30
commit
1c9b87bfd3
@@ -56,6 +56,7 @@ option (BUILDSWIGNODE "Build swig node modules." ON)
|
||||
option (BUILDSWIGJAVA "Build Java API." OFF)
|
||||
option (USBPLAT "Detection USB platform." ON)
|
||||
option (FTDID2XX "Build with FTDI D2xx subplatform support." OFF)
|
||||
option (FTDI4222 "Build with FTDI FT4222 subplatform support." OFF)
|
||||
option (IPK "Generate IPK using CPack" OFF)
|
||||
option (RPM "Generate RPM using CPack" OFF)
|
||||
option (BUILDPYTHON3 "Use python3 for building/installing" OFF)
|
||||
|
||||
75
cmake/modules/FindFtd4222.cmake
Normal file
75
cmake/modules/FindFtd4222.cmake
Normal file
@@ -0,0 +1,75 @@
|
||||
# - Try to find LIBFT4222
|
||||
# Once done this will define
|
||||
#
|
||||
# LIBFT4222_FOUND - system has LIBFT4222
|
||||
# LIBFT4222_INCLUDE_DIRS - the LIBFT4222 include directory
|
||||
# LIBFT4222_LIBRARIES - Link these to use LIBFT4222
|
||||
# LIBFT4222_DEFINITIONS - Compiler switches required for using LIBFT4222
|
||||
#
|
||||
# Adapted from cmake-modules Google Code project
|
||||
#
|
||||
# Copyright (c) 2006 Andreas Schneider <mail@cynapses.org>
|
||||
#
|
||||
# (Changes for LIBFTD2XX) Copyright (c) 2008 Kyle Machulis <kyle@nonpolynomial.com>
|
||||
# (Changes for LIBFT4222) Henry Bruce <henry.bruce@intel.com> Copyright (c) 2015 Intel Corporation.
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the New BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
if (LIBFT4222_LIBRARIES AND LIBFT4222_INCLUDE_DIRS)
|
||||
# in cache already
|
||||
set(LIBFT4222_FOUND TRUE)
|
||||
else (LIBFT4222_LIBRARIES AND LIBFT4222_INCLUDE_DIRS)
|
||||
find_path(LIBFT4222_INCLUDE_DIR
|
||||
NAMES
|
||||
libft4222.h
|
||||
PATHS
|
||||
/usr/include
|
||||
/usr/local/include
|
||||
/opt/local/include
|
||||
/sw/include
|
||||
)
|
||||
|
||||
SET(FTD4222_LIBNAME ft4222)
|
||||
IF(WIN32)
|
||||
SET(FTD4222_LIBNAME LibFT4222.lib)
|
||||
ENDIF(WIN32)
|
||||
|
||||
find_library(LIBFT4222_LIBRARY
|
||||
NAMES
|
||||
${FTD4222_LIBNAME}
|
||||
PATHS
|
||||
/usr/lib
|
||||
/usr/local/lib
|
||||
/opt/local/lib
|
||||
/sw/lib
|
||||
)
|
||||
|
||||
if(LIBFT4222_INCLUDE_DIR)
|
||||
set(LIBFT4222_INCLUDE_DIRS
|
||||
${LIBFT4222_INCLUDE_DIR}
|
||||
)
|
||||
endif(LIBFT4222_INCLUDE_DIR)
|
||||
set(LIBFT4222_LIBRARIES
|
||||
${LIBFT4222_LIBRARY}
|
||||
)
|
||||
|
||||
if (LIBFT4222_INCLUDE_DIRS AND LIBFT4222_LIBRARIES)
|
||||
set(LIBFT4222_FOUND TRUE)
|
||||
endif (LIBFT4222_INCLUDE_DIRS AND LIBFT4222_LIBRARIES)
|
||||
|
||||
if (LIBFT4222_FOUND)
|
||||
if (NOT LIBFT4222_FIND_QUIETLY)
|
||||
message(STATUS "Found LIBFT4222: ${LIBFT4222_LIBRARIES}")
|
||||
endif (NOT LIBFT4222_FIND_QUIETLY)
|
||||
else (LIBFT4222_FOUND)
|
||||
if (LIBFT4222_FIND_REQUIRED)
|
||||
message(FATAL_ERROR "Could not find LIBFT4222")
|
||||
endif (LIBFT4222_FIND_REQUIRED)
|
||||
endif (LIBFT4222_FOUND)
|
||||
|
||||
# show the LIBFT4222_INCLUDE_DIRS and LIBFT4222_LIBRARIES variables only in the advanced view
|
||||
mark_as_advanced(LIBFT4222_INCLUDE_DIRS LIBFT4222_LIBRARIES)
|
||||
|
||||
endif (LIBFT4222_LIBRARIES AND LIBFT4222_INCLUDE_DIRS)
|
||||
|
||||
@@ -14,7 +14,7 @@ add_executable (mraa-i2c mraa-i2c.c)
|
||||
add_executable (spi_max7219 spi_max7219.c)
|
||||
|
||||
include_directories(${PROJECT_SOURCE_DIR}/api)
|
||||
# FIXME Hack to access internal types used by mraa-i2c
|
||||
# FIXME Hack to access mraa internal types used by mraa-i2c
|
||||
include_directories(${PROJECT_SOURCE_DIR}/include)
|
||||
include_directories(${PROJECT_SOURCE_DIR}/api/mraa)
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ if (ARMPLAT)
|
||||
endif()
|
||||
|
||||
if (USBPLAT)
|
||||
add_subdirectory(usb)
|
||||
message (INFO " - Adding USB platforms")
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DUSBPLAT=1")
|
||||
find_package (Ftd2xx)
|
||||
if (FTDID2xx)
|
||||
@@ -59,9 +59,18 @@ if (USBPLAT)
|
||||
message (WARNING " - Enabled FTDID2xx support but library not found")
|
||||
endif ()
|
||||
endif ()
|
||||
find_package (Ftd4222)
|
||||
if (FTDI4222)
|
||||
if (${LIBFT4222_FOUND})
|
||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DFTDI4222=1")
|
||||
set (mraa_LIBS ${mraa_LIBS} ${LIBFT4222_LIBRARIES})
|
||||
else ()
|
||||
message (WARNING " - Enabled FTDI4222 support but library not found")
|
||||
endif ()
|
||||
endif ()
|
||||
add_subdirectory(usb)
|
||||
endif ()
|
||||
|
||||
|
||||
set (mraa_LIB_SRCS
|
||||
${mraa_LIB_PLAT_SRCS_NOAUTO}
|
||||
# autogenerated version file
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
message (INFO " - Adding USB platforms")
|
||||
set (mraa_LIB_SRCS_NOAUTO ${mraa_LIB_SRCS_NOAUTO}
|
||||
${PROJECT_SOURCE_DIR}/src/usb/usb.c
|
||||
PARENT_SCOPE
|
||||
)
|
||||
if (FTDID2XX)
|
||||
set (mraa_LIB_SRCS_NOAUTO
|
||||
|
||||
if (FTDI4222)
|
||||
message (INFO " - FTDI4222")
|
||||
set (mraa_LIB_SRCS_NOAUTO ${mraa_LIB_SRCS_NOAUTO}
|
||||
${PROJECT_SOURCE_DIR}/src/usb/ftdi_ft4222.c
|
||||
PARENT_SCOPE
|
||||
)
|
||||
endif ()
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
#include <string.h>
|
||||
|
||||
#include "mraa_internal.h"
|
||||
#ifdef FTDID2XX
|
||||
#ifdef FTDI4222
|
||||
#include "usb/ftdi_ft4222.h"
|
||||
#endif
|
||||
|
||||
@@ -35,7 +35,7 @@ mraa_platform_t
|
||||
mraa_usb_platform_extender(mraa_board_t* board)
|
||||
{
|
||||
mraa_platform_t platform_type = MRAA_UNKNOWN_PLATFORM;
|
||||
#ifdef FTDID2XX
|
||||
#ifdef FTDI4222
|
||||
if (mraa_ftdi_ft4222_init() == MRAA_SUCCESS) {
|
||||
unsigned int versionChip, versionLib;
|
||||
if (mraa_ftdi_ft4222_get_version(&versionChip, &versionLib) == MRAA_SUCCESS) {
|
||||
@@ -43,13 +43,17 @@ mraa_usb_platform_extender(mraa_board_t* board)
|
||||
platform_type = MRAA_FTDI_FT4222;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
switch (platform_type) {
|
||||
#ifdef FTDI4222
|
||||
case MRAA_FTDI_FT4222:
|
||||
mraa_ftdi_ft4222(board);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
syslog(LOG_ERR, "Unknown USB Platform Extender, currently not supported by MRAA");
|
||||
}
|
||||
#endif
|
||||
|
||||
return platform_type;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user