From 89904c08bb3768ff993da750dab268989fe6dec0 Mon Sep 17 00:00:00 2001 From: Alexander Tarasikov Date: Thu, 12 Jul 2012 03:26:18 +0400 Subject: Fix GPS on tuna by setting the UART mux correctly --- samsung-ipc/device/maguro/maguro_loader.c | 22 +++++----------------- 1 file changed, 5 insertions(+), 17 deletions(-) (limited to 'samsung-ipc/device/maguro') diff --git a/samsung-ipc/device/maguro/maguro_loader.c b/samsung-ipc/device/maguro/maguro_loader.c index 0bf757a..4d15e04 100644 --- a/samsung-ipc/device/maguro/maguro_loader.c +++ b/samsung-ipc/device/maguro/maguro_loader.c @@ -605,26 +605,9 @@ static int maguro_modem_reboot(struct ipc_client *client, else { ipc_client_log(client, "disabled modem power"); } - - if ((ret = modemctl_modem_boot_power(client, io_data, false)) < 0) { - ipc_client_log(client, "Error: failed to disable modem boot power"); - goto fail; - } - else { - ipc_client_log(client, "disabled modem boot power"); - } - /* * Now, initialize the hardware */ - if ((ret = modemctl_modem_boot_power(client, io_data, true)) < 0) { - ipc_client_log(client, "Error: failed to enable modem boot power"); - goto fail; - } - else { - ipc_client_log(client, "enabled modem boot power"); - } - if ((ret = modemctl_modem_power(client, io_data, true)) < 0) { ipc_client_log(client, "Error: failed to enable modem power"); goto fail; @@ -797,6 +780,11 @@ int maguro_modem_bootstrap(struct ipc_client *client) ipc_client_log(client, "Error: failed to wait for modem to become online"); goto fail; } + + /* + * This restores UART MUX to GPS + */ + modemctl_modem_boot_power(client, &io_data, false); ipc_client_log(client, "Modem is online!"); ret = 0; -- cgit v1.1 From 4bd59903ac2a4697241730d1d30476f2be088414 Mon Sep 17 00:00:00 2001 From: Alexander Tarasikov Date: Thu, 26 Jul 2012 14:07:54 +0400 Subject: Implement maguro poweroff --- samsung-ipc/device/maguro/maguro_ipc.c | 2 +- samsung-ipc/device/maguro/maguro_loader.c | 22 ++++++++++++++++++++++ samsung-ipc/device/maguro/maguro_loader.h | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) (limited to 'samsung-ipc/device/maguro') diff --git a/samsung-ipc/device/maguro/maguro_ipc.c b/samsung-ipc/device/maguro/maguro_ipc.c index fb4121d..19b5ba4 100644 --- a/samsung-ipc/device/maguro/maguro_ipc.c +++ b/samsung-ipc/device/maguro/maguro_ipc.c @@ -48,7 +48,7 @@ struct ipc_handlers maguro_default_handlers = { .open = xmm6260_ipc_open, .close = xmm6260_ipc_close, .power_on = xmm6260_ipc_power_on, - .power_off = xmm6260_ipc_power_off, + .power_off = maguro_power_off, .common_data = NULL, .common_data_create = xmm6260_ipc_common_data_create, .common_data_destroy = xmm6260_ipc_common_data_destroy, diff --git a/samsung-ipc/device/maguro/maguro_loader.c b/samsung-ipc/device/maguro/maguro_loader.c index 4d15e04..062d4c5 100644 --- a/samsung-ipc/device/maguro/maguro_loader.c +++ b/samsung-ipc/device/maguro/maguro_loader.c @@ -620,6 +620,28 @@ fail: return ret; } +int maguro_power_off(void *io_data_unused) { + int ret = -1; + struct modemctl_io_data io_data; + + io_data.boot_fd = open(BOOT_DEV, O_RDWR | O_NOCTTY | O_NONBLOCK); + if (io_data.boot_fd < 0) { + ret = io_data.boot_fd; + goto fail; + } + + if ((ret = modemctl_modem_power(NULL, &io_data, false)) < 0) { + goto fail_pwr; + } + + ret = 0; + +fail_pwr: + close(io_data.boot_fd); +fail: + return ret; +} + int maguro_modem_bootstrap(struct ipc_client *client) { int ret = -1; diff --git a/samsung-ipc/device/maguro/maguro_loader.h b/samsung-ipc/device/maguro/maguro_loader.h index 7a47635..cb059fc 100644 --- a/samsung-ipc/device/maguro/maguro_loader.h +++ b/samsung-ipc/device/maguro/maguro_loader.h @@ -98,6 +98,7 @@ struct maguro_boot_tail_header name = {\ } int maguro_modem_bootstrap(struct ipc_client *client); +int maguro_power_off(void *io_data); #endif -- cgit v1.1