FreeCalypso > hg > freecalypso-tools
diff loadtools/old/gtapower.c @ 577:62a91abc0300
loadtools: no-longer-working stuff moved into old subdir
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sun, 02 Feb 2020 21:18:37 +0000 |
parents | loadtools/gtapower.c@e7502631a0f9 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/loadtools/old/gtapower.c Sun Feb 02 21:18:37 2020 +0000 @@ -0,0 +1,54 @@ +/* + * This module is included only when loadtools are being built to run on the + * GTA0x application processor (AP). It provides automated modem power + * control, i.e., coordinates modem power control with loadtools operations + * for convenience. + */ + +#include <sys/types.h> +#include <sys/file.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> + +/* + * Check this pathname: it is correct for the kernel version I'm using + * on my test GTA02, but it differs for some other kernel versions. + */ +static char modem_powerctl_pathname[] = + "/sys/bus/platform/devices/gta02-pm-gsm.0/power_on"; + +void +set_gta_modem_power_ctrl(boolval) +{ + char strbuf[16]; + int len, fd; + + len = sprintf(strbuf, "%d\n", boolval); + fd = open(modem_powerctl_pathname, O_WRONLY); + if (fd < 0) { + perror(modem_powerctl_pathname); + exit(1); + } + write(fd, strbuf, len); + close(fd); +} + +void +fork_gta_modem_poweron() +{ + int i; + + i = fork(); + if (i < 0) { + perror("fork"); + exit(1); + } + if (i) + return; + printf("Toggling %s\n", modem_powerctl_pathname); + set_gta_modem_power_ctrl(0); + usleep(350000); + set_gta_modem_power_ctrl(1); + exit(0); +}