intel_edison_fab_c.c: Fix frequency setting on edison r2 images
This reworks the mraa_intel_edison_i2c_freq() function. i2c_dw_sysnode is a folder not a file so we need to grab the mode file from that folder. We now also support i2c-1 frequency changing Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
@@ -674,8 +674,19 @@ mraa_intel_edison_mmap_setup(mraa_gpio_context dev, mraa_boolean_t en)
|
|||||||
mraa_result_t
|
mraa_result_t
|
||||||
mraa_intel_edison_i2c_freq(mraa_i2c_context dev, mraa_i2c_mode_t mode)
|
mraa_intel_edison_i2c_freq(mraa_i2c_context dev, mraa_i2c_mode_t mode)
|
||||||
{
|
{
|
||||||
if (dev->busnum == 6) {
|
int sysnode = -1;
|
||||||
int sysnode = open("/sys/devices/pci0000:00/0000:00:09.1/i2c_dw_sysnode", O_RDWR);
|
|
||||||
|
switch (dev->busnum) {
|
||||||
|
case 1:
|
||||||
|
sysnode = open("/sys/devices/pci0000:00/0000:00:08.0/i2c_dw_sysnode/mode", O_RDWR);
|
||||||
|
break;
|
||||||
|
case 6:
|
||||||
|
sysnode = open("/sys/devices/pci0000:00/0000:00:09.1/i2c_dw_sysnode/mode", O_RDWR);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
syslog(LOG_NOTICE, "i2c bus selected does not support frequency changes");
|
||||||
|
return MRAA_ERROR_FEATURE_NOT_SUPPORTED;
|
||||||
|
}
|
||||||
if (sysnode == -1) {
|
if (sysnode == -1) {
|
||||||
return MRAA_ERROR_INVALID_RESOURCE;
|
return MRAA_ERROR_INVALID_RESOURCE;
|
||||||
}
|
}
|
||||||
@@ -692,6 +703,10 @@ mraa_intel_edison_i2c_freq(mraa_i2c_context dev, mraa_i2c_mode_t mode)
|
|||||||
case MRAA_I2C_HIGH:
|
case MRAA_I2C_HIGH:
|
||||||
length = snprintf(bu, sizeof(bu), "high");
|
length = snprintf(bu, sizeof(bu), "high");
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
syslog(LOG_ERR, "Invalid i2c mode selected");
|
||||||
|
close(sysnode);
|
||||||
|
return MRAA_ERROR_INVALID_PARAMETER;
|
||||||
}
|
}
|
||||||
if (write(sysnode, bu, length*sizeof(char)) == -1) {
|
if (write(sysnode, bu, length*sizeof(char)) == -1) {
|
||||||
close(sysnode);
|
close(sysnode);
|
||||||
@@ -700,8 +715,6 @@ mraa_intel_edison_i2c_freq(mraa_i2c_context dev, mraa_i2c_mode_t mode)
|
|||||||
close(sysnode);
|
close(sysnode);
|
||||||
return MRAA_SUCCESS;
|
return MRAA_SUCCESS;
|
||||||
}
|
}
|
||||||
return MRAA_ERROR_FEATURE_NOT_SUPPORTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
mraa_result_t
|
mraa_result_t
|
||||||
mraa_intel_edison_miniboard(mraa_board_t* b)
|
mraa_intel_edison_miniboard(mraa_board_t* b)
|
||||||
|
|||||||
Reference in New Issue
Block a user