Private
Public Access
2
0

pwm: removed unused code and optimized flow for subplatform support

Signed-off-by: Mihai Tudor Panu <mihai.tudor.panu@intel.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Mihai Tudor Panu
2016-03-15 16:34:29 -07:00
committed by Brendan Le Foll
parent 9a5abb7d56
commit 0e5dadeb8c
3 changed files with 32 additions and 19 deletions

View File

@@ -189,16 +189,18 @@ mraa_result_t mraa_pwm_config_percent(mraa_pwm_context dev, int period, float du
/**
* Get the maximum pwm period in us
*
* @param dev The pwm context to use
* @return max pwm in us
*/
int mraa_pwm_get_max_period();
int mraa_pwm_get_max_period(mraa_pwm_context dev);
/**
* Get the minimum pwm period in us
*
* @param dev The pwm context to use
* @return min pwm in us
*/
int mraa_pwm_get_min_period();
int mraa_pwm_get_min_period(mraa_pwm_context dev);
#ifdef __cplusplus
}

View File

@@ -176,10 +176,7 @@ class Pwm
Result
enable(bool enable)
{
if (enable)
return (Result) mraa_pwm_enable(m_pwm, 1);
else
return (Result) mraa_pwm_enable(m_pwm, 0);
return (Result) mraa_pwm_enable(m_pwm, enable);
}
/**
* Set the period and duty of a PWM object.
@@ -213,7 +210,7 @@ class Pwm
int
max_period()
{
return mraa_pwm_get_max_period();
return mraa_pwm_get_max_period(m_pwm);
}
/**
* Get the minimum pwm period in us
@@ -223,7 +220,7 @@ class Pwm
int
min_period()
{
return mraa_pwm_get_min_period();
return mraa_pwm_get_min_period(m_pwm);
}
private:

View File

@@ -98,6 +98,10 @@ mraa_pwm_write_duty(mraa_pwm_context dev, int duty)
static int
mraa_pwm_read_period(mraa_pwm_context dev)
{
if (IS_FUNC_DEFINED(dev, pwm_read_replace)) {
return dev->period;
}
char bu[MAX_SIZE];
char output[MAX_SIZE];
snprintf(bu, MAX_SIZE, "/sys/class/pwm/pwmchip%d/pwm%d/period", dev->chipid, dev->pin);
@@ -134,6 +138,10 @@ mraa_pwm_read_period(mraa_pwm_context dev)
static int
mraa_pwm_read_duty(mraa_pwm_context dev)
{
if (IS_FUNC_DEFINED(dev, pwm_read_replace)) {
return dev->advance_func->pwm_read_replace(dev);
}
if (dev->duty_fp == -1) {
if (mraa_pwm_setup_duty_fp(dev) == 1) {
return MRAA_ERROR_INVALID_HANDLE;
@@ -316,9 +324,6 @@ mraa_pwm_write(mraa_pwm_context dev, float percentage)
float
mraa_pwm_read(mraa_pwm_context dev)
{
if (IS_FUNC_DEFINED(dev, pwm_read_replace)) {
return dev->advance_func->pwm_read_replace(dev);
}
int period = mraa_pwm_read_period(dev);
if (period > 0) {
return (mraa_pwm_read_duty(dev) / (float) period);
@@ -341,7 +346,15 @@ mraa_pwm_period_ms(mraa_pwm_context dev, int ms)
mraa_result_t
mraa_pwm_period_us(mraa_pwm_context dev, int us)
{
if (us < plat->pwm_min_period || us > plat->pwm_max_period) {
int min, max;
if (mraa_is_sub_platform_id(dev->chipid)) {
min = plat->sub_platform->pwm_min_period;
max = plat->sub_platform->pwm_max_period;
} else {
min = plat->pwm_min_period;
max = plat->pwm_max_period;
}
if (us < min || us > max) {
syslog(LOG_ERR, "pwm: period value outside platform range");
return MRAA_ERROR_INVALID_PARAMETER;
}
@@ -373,11 +386,6 @@ mraa_pwm_enable(mraa_pwm_context dev, int enable)
return dev->advance_func->pwm_enable_replace(dev, enable);
}
int status;
if (enable != 0) {
status = 1;
} else {
status = enable;
}
char bu[MAX_SIZE];
snprintf(bu, MAX_SIZE, "/sys/class/pwm/pwmchip%d/pwm%d/enable", dev->chipid, dev->pin);
@@ -498,19 +506,25 @@ mraa_pwm_config_percent(mraa_pwm_context dev, int ms, float percentage)
}
int
mraa_pwm_get_max_period()
mraa_pwm_get_max_period(mraa_pwm_context dev)
{
if (plat == NULL) {
return -1;
}
if (mraa_is_sub_platform_id(dev->chipid)) {
return plat->sub_platform->pwm_max_period;
}
return plat->pwm_max_period;
}
int
mraa_pwm_get_min_period()
mraa_pwm_get_min_period(mraa_pwm_context dev)
{
if (plat == NULL) {
return -1;
}
if (mraa_is_sub_platform_id(dev->chipid)) {
return plat->sub_platform->pwm_min_period;
}
return plat->pwm_min_period;
}