Add support for Pinephone Pro

This commit is contained in:
Ondrej Jirman 2022-01-16 17:00:03 +01:00
parent af4009e3bf
commit 3ade80f425
2 changed files with 11 additions and 4 deletions

View file

@ -224,7 +224,7 @@ static int pogo_i2c_open(void)
if (!read_file(path, buf, sizeof buf)) if (!read_file(path, buf, sizeof buf))
continue; continue;
if (!strstr(buf, "OF_FULLNAME=/soc/i2c@1c2b400")) if (!strstr(buf, "OF_FULLNAME=/soc/i2c@1c2b400") && !strstr(buf, "OF_FULLNAME=/i2c@ff140000"))
continue; continue;
snprintf(path, sizeof path, "/dev/i2c-%d", i); snprintf(path, sizeof path, "/dev/i2c-%d", i);
@ -337,11 +337,10 @@ static int gpiochip_open(const char* match)
return fd; return fd;
} }
error("Can't find %s gpiochip", match);
return -1; return -1;
} }
static int gpio_setup_pl12(unsigned flags) static int gpio_setup_pogo_int(unsigned flags)
{ {
int ret; int ret;
struct gpio_v2_line_request req = { struct gpio_v2_line_request req = {
@ -352,6 +351,14 @@ static int gpio_setup_pl12(unsigned flags)
}; };
int fd = gpiochip_open("OF_FULLNAME=/soc/pinctrl@1f02c00"); int fd = gpiochip_open("OF_FULLNAME=/soc/pinctrl@1f02c00");
if (fd < 0) {
fd = gpiochip_open("OF_FULLNAME=/pinctrl/gpio@ff788000");
if (fd < 0)
error("Can't find gpiochip for POGO interrupt pin");
// On Pinephone Pro, POGO-INT is GPIO3_A0
req.offsets[0] = 0;
}
ret = ioctl(fd, GPIO_V2_GET_LINE_IOCTL, &req); ret = ioctl(fd, GPIO_V2_GET_LINE_IOCTL, &req);
syscall_error(ret < 0, "GPIO_V2_GET_LINE_IOCTL failed"); syscall_error(ret < 0, "GPIO_V2_GET_LINE_IOCTL failed");

View file

@ -302,7 +302,7 @@ int main(int ac, char* av[])
fd = pogo_i2c_open(); fd = pogo_i2c_open();
uinput_fd = open_uinput_dev(); uinput_fd = open_uinput_dev();
int lfd = gpio_setup_pl12(GPIO_V2_LINE_FLAG_INPUT | GPIO_V2_LINE_FLAG_BIAS_PULL_UP | /*GPIO_V2_LINE_FLAG_ACTIVE_HIGH |*/ GPIO_V2_LINE_FLAG_EDGE_FALLING); int lfd = gpio_setup_pogo_int(GPIO_V2_LINE_FLAG_INPUT | GPIO_V2_LINE_FLAG_BIAS_PULL_UP | /*GPIO_V2_LINE_FLAG_ACTIVE_HIGH |*/ GPIO_V2_LINE_FLAG_EDGE_FALLING);
struct pollfd fds[2] = { struct pollfd fds[2] = {
{ .fd = lfd, .events = POLLIN, }, { .fd = lfd, .events = POLLIN, },