summaryrefslogtreecommitdiff
path: root/plugins/nokia-gpio.c
diff options
context:
space:
mode:
authorClayton Craft <clayton@craftyguy.net>2017-09-26 19:56:07 -0700
committerDenis Kenzior <denkenz@gmail.com>2017-10-05 11:32:59 -0500
commitc33c567ef635c9b3735f2082a9059545d4c882aa (patch)
treeaa2ba6fa2e73771d86d990cd11d6e810890520f8 /plugins/nokia-gpio.c
parent61bbbb0d7ae70bde2b9a34279aa58ff3fedc2e33 (diff)
downloadofono-c33c567ef635c9b3735f2082a9059545d4c882aa.tar.gz
nokia-gpio: do not create links to gpios in /dev/cmt
The nokia-gpio plugin should not try to create symlinks to relevant gpio pins under /dev/cmt, since the location it is looking is no longer correct on newer kernels and it might change again in the future. This patch removes code from nokia-gpio that tries to create a symlink. Users will now need to symlink the modem gpios to /dev/cmt themselves. On the 4.13 kernel, this can be done by, for example, adding a udev rule to: # ln -sf /sys/bus/hsi/devices/n900-modem /dev/cmt
Diffstat (limited to 'plugins/nokia-gpio.c')
-rw-r--r--plugins/nokia-gpio.c74
1 files changed, 4 insertions, 70 deletions
diff --git a/plugins/nokia-gpio.c b/plugins/nokia-gpio.c
index 7a93106c..cbd9a08f 100644
--- a/plugins/nokia-gpio.c
+++ b/plugins/nokia-gpio.c
@@ -143,13 +143,6 @@ static int file_exists(char const *filename)
return stat(filename, &st) == 0;
}
-static int dir_exists(char const *filename)
-{
- struct stat st;
-
- return stat(filename, &st) == 0 && S_ISDIR(st.st_mode);
-}
-
static int file_write(char const *filename, char const *output)
{
FILE *f;
@@ -632,74 +625,15 @@ static void phonet_status_cb(GIsiModem *idx, enum GIsiPhonetLinkState state,
static int gpio_probe_links(void)
{
- char const *gpiodir = "/sys/class/gpio";
char const *cmtdir = "/dev/cmt";
- DIR *gpio;
- struct dirent *d;
-
- if (file_exists(cmtdir)) {
- DBG("Using %s", cmtdir);
- return 0;
- }
- DBG("Using %s: trying to make links to %s", gpiodir, cmtdir);
-
- if (!dir_exists(cmtdir)) {
- if (mkdir(cmtdir, 0755) == -1) {
- DBG("%s: %s", cmtdir, strerror(errno));
- return -(errno = ENODEV);
- }
- }
-
- gpio = opendir(gpiodir);
- if (gpio == NULL) {
- DBG("%s: %s", "gpiodir", strerror(errno));
+ if (!file_exists(cmtdir)) {
+ DBG("%s: %s", cmtdir, strerror(errno));
return -(errno = ENODEV);
}
- while ((d = readdir(gpio)) != NULL) {
- char nn[PATH_MAX], name[PATH_MAX], from[PATH_MAX], to[PATH_MAX];
- FILE *nf;
- size_t len;
-
- snprintf(nn, sizeof nn, "%s/%s/name", gpiodir, d->d_name);
-
- nf = fopen(nn, "rb");
- if (nf == NULL) {
- DBG("%s: %s", nn, strerror(errno));
- continue;
- }
-
- len = fread(name, sizeof name, 1, nf);
-
- if (ferror(nf)) {
- DBG("read from %s: %s", nn, strerror(errno));
- fclose(nf);
- continue;
- }
-
- fclose(nf);
-
- if (len < 4)
- continue;
-
- name[--len] = '\0';
-
- if (strncmp(name, "cmt_", 4))
- continue;
-
- snprintf(from, sizeof from, "%s/%s", gpiodir, d->d_name);
- snprintf(to, sizeof to, "%s/%s", cmtdir, name);
-
- if (symlink(from, to) == -1)
- DBG("%s: %s", to, strerror(errno));
- }
-
- DBG("%s: %s", "/sys/class/gpio", strerror(errno));
-
- (void) closedir(gpio);
-
- return -(errno = ENODEV);
+ DBG("Using %s", cmtdir);
+ return 0;
}