Private
Public Access
2
0

usb: Converted sub-platform bus/pin helper macros to functions.

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:
Henry Bruce
2015-06-26 14:22:09 -07:00
committed by Brendan Le Foll
parent 1c9b87bfd3
commit 4a6bf832bc
4 changed files with 56 additions and 14 deletions

View File

@@ -31,9 +31,6 @@
#define MRAA_SUB_PLATFORM_BIT_SHIFT 9
#define MRAA_SUB_PLATFORM_MASK (1<<MRAA_SUB_PLATFORM_BIT_SHIFT)
#define MRAA_IS_ON_SUB_PLATFORM(pin_or_bus) (((pin_or_bus)|MRAA_SUB_PLATFORM_MASK) != 0)
#define MRAA_USE_SUB_PLATFORM(pin_or_bus) ((pin_or_bus)|MRAA_SUB_PLATFORM_MASK)
#define MRAA_GET_SUB_PLATFORM_INDEX(pin_or_bus) ((pin_or_bus)&(~MRAA_SUB_PLATFORM_MASK))
@@ -191,6 +188,34 @@ char* mraa_get_pin_name(int pin);
*/
int mraa_get_default_2c_bus();
/**
* Check if pin or bus id includes sub platform mask.
*
* @param int pin or bus number
*
* @return mraa_boolean_t 1 if pin or bus is for sub platform, 0 otherwise
*/
mraa_boolean_t mraa_is_on_sub_platform(int pin_or_bus);
/**
* Convert pin or bus id to corresponding sub platform id.
*
* @param int pin or bus number
*
* @return int sub platform pin or bus number
*/
int mraa_use_sub_platform(int pin_or_bus);
/**
* Convert pin or bus sub platform id to base platform id.
*
* @param int sub platform pin or bus number
*
* @return int base platform pin or bus number
*/
int mraa_get_sub_platform_index(int pin_or_bus);
#ifdef __cplusplus
}

View File

@@ -63,9 +63,8 @@ print_command_error()
void
print_bus(mraa_board_t* board)
{
int bus_index;
int bus;
for (bus = 0; bus < board->i2c_bus_count; ++bus) {
int i, bus;
for (i = 0; i < board->i2c_bus_count; ++i) {
char* busType;
switch (mraa_get_platform_type()) {
case MRAA_INTEL_GALILEO_GEN1:
@@ -76,21 +75,21 @@ print_bus(mraa_board_t* board)
case MRAA_RASPBERRY_PI:
case MRAA_BEAGLEBONE:
case MRAA_BANANA:
bus_index = bus;
bus = i;
busType = "stdapi";
break;
case MRAA_FTDI_FT4222:
busType = "ft4222";
bus_index = MRAA_USE_SUB_PLATFORM(bus);
bus = mraa_use_sub_platform(i);
break;
default:
busType = "unknown";
break;
}
fprintf(stdout, "Bus %2d: id=%02d type=%s ", bus_index, plat->i2c_bus[bus].bus_id, busType);
if (bus == plat->def_i2c_bus)
fprintf(stdout, " default", bus);
fprintf(stdout, "\n", bus);
fprintf(stdout, "Bus %2d: id=%02d type=%s ", bus, plat->i2c_bus[bus].bus_id, busType);
if (i == plat->def_i2c_bus)
fprintf(stdout, " default", i);
fprintf(stdout, "\n");
}
}

View File

@@ -80,14 +80,14 @@ mraa_i2c_init(int bus)
return NULL;
}
if (MRAA_IS_ON_SUB_PLATFORM(bus)) {
if (mraa_is_on_sub_platform(bus)) {
syslog(LOG_NOTICE, "i2c: Using sub platform");
board = board->sub_platform;
if (board == NULL) {
syslog(LOG_ERR, "i2c: Sub platform Not Initialised");
return NULL;
}
bus = MRAA_GET_SUB_PLATFORM_INDEX(bus);
bus = mraa_get_sub_platform_index(bus);
}
if (board->i2c_bus_count == 0) {

View File

@@ -586,3 +586,21 @@ mraa_find_i2c_bus(const char* devname, int startfrom)
return ret;
}
mraa_boolean_t
mraa_is_on_sub_platform(int pin_or_bus)
{
return (pin_or_bus | MRAA_SUB_PLATFORM_MASK) != 0;
}
int
mraa_use_sub_platform(int pin_or_bus)
{
return pin_or_bus | MRAA_SUB_PLATFORM_MASK;
}
int
mraa_get_sub_platform_index(int pin_or_bus)
{
return pin_or_bus & (~MRAA_SUB_PLATFORM_MASK);
}