Skip to content

Commit d201c91

Browse files
committed
source/c_pwm.c: HACK: PocketBeagle: v4.14.x
Signed-off-by: Robert Nelson <robertcnelson@gmail.com>
1 parent 4e180c5 commit d201c91

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

source/c_pwm.c

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -313,10 +313,11 @@ BBIO_err pwm_setup(const char *key, __attribute__ ((unused)) float duty, __attri
313313
char pwm_addr_path[60]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm"
314314
char pwm_chip_path[75]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0"
315315
char pwm_export_path[80]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0/export"
316-
char pwm_path[80]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0/pwm1"
317-
char duty_path[90]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0/pwm1/duty_cycle"
318-
char period_path[90];
319-
char polarity_path[90];
316+
char pwm_path[85]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0/pwm1"
317+
char pwm_path_udev[85]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0/pwm-0:1"
318+
char duty_path[95]; // "/sys/devices/platform/ocp/48300000.epwmss/48300200.ehrpwm/pwm/pwmchip0/pwm1/duty_cycle"
319+
char period_path[95];
320+
char polarity_path[95];
320321
char enable_path[90];
321322
char pin_mode[PIN_MODE_LEN]; // "pwm" or "pwm2"
322323

@@ -387,6 +388,7 @@ BBIO_err pwm_setup(const char *key, __attribute__ ((unused)) float duty, __attri
387388
}
388389

389390
snprintf(pwm_path, sizeof(pwm_path), "%s/pwm%d", pwm_chip_path, p->index);
391+
snprintf(pwm_path_udev, sizeof(pwm_path_udev), "%s/pwm-%s:%d", pwm_chip_path, pwm_chip_path, p->index);
390392

391393
// Export PWM if hasn't already been
392394
e = stat(pwm_path, &s);
@@ -422,7 +424,17 @@ BBIO_err pwm_setup(const char *key, __attribute__ ((unused)) float duty, __attri
422424
if (ENOENT == errno) {
423425
// Directory still doesn't exist, exit with error
424426
syslog(LOG_ERR, "pwm_setup: %s %s doesn't exist", key, pwm_path);
425-
return BBIO_GEN;
427+
//return BBIO_GEN;
428+
429+
e = stat(pwm_path_udev, &s);
430+
if (-1 == e) {
431+
if (ENOENT == errno) {
432+
// Directory still doesn't exist, exit with error
433+
syslog(LOG_ERR, "pwm_setup: %s %s doesn't exist", key, pwm_path_udev);
434+
return BBIO_GEN;
435+
}
436+
}
437+
strncpy(pwm_path, pwm_path_udev, sizeof(pwm_path_udev));
426438
}
427439
}
428440

0 commit comments

Comments
 (0)