aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-03-10 19:03:33 +0100
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2022-02-02 13:29:16 +0100
commit69025f6aa22f60aaa390c9641e883e742cc73e51 (patch)
tree0ed09a4b3a9a30b603cd6bf9fe58637a731bc12e
parent7e4f0e079ac308510c3e34a2abf721ac1a2edab2 (diff)
downloadhardware_replicant_libsamsung-ipc-69025f6aa22f60aaa390c9641e883e742cc73e51.tar.gz
hardware_replicant_libsamsung-ipc-69025f6aa22f60aaa390c9641e883e742cc73e51.tar.bz2
hardware_replicant_libsamsung-ipc-69025f6aa22f60aaa390c9641e883e742cc73e51.zip
Add more logging
Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--samsung-ipc/devices/generic/generic.c176
1 files changed, 148 insertions, 28 deletions
diff --git a/samsung-ipc/devices/generic/generic.c b/samsung-ipc/devices/generic/generic.c
index cb5f619..3837231 100644
--- a/samsung-ipc/devices/generic/generic.c
+++ b/samsung-ipc/devices/generic/generic.c
@@ -19,7 +19,7 @@
*/
#define _GNU_SOURCE /* See feature_test_macros(7) */
-#define GENERIC_DEBUG 0
+#define GENERIC_DEBUG 1
#include <errno.h>
#include <fcntl.h>
@@ -45,9 +45,16 @@ int xmm626_kernel_linux_modem_power(__attribute__((unused)) int device_fd,
{
int rc;
+ ipc_client_log(client, "ENTER %s", __func__);
+
rc = sysfs_value_write(XMM626_KERNEL_LINUX_POWER_PATH, !!power);
- if (rc == -1)
+ if (rc == -1) {
+ ipc_client_log(client, "%s: sysfs_value_write failed with error -1",
+ __func__);
return rc;
+ }
+
+ ipc_client_log(client, "%s DONE", __func__);
return 0;
}
@@ -56,6 +63,8 @@ int xmm626_kernel_linux_modem_hci_power(struct ipc_client *client, int power)
{
int ehci_rc, ohci_rc = -1;
+ ipc_client_log(client, "ENTER %s", __func__);
+
if (!!power) {
ohci_rc = sysfs_value_write(
XMM626_KERNEL_LINUX_PDA_ACTIVE_SYSFS, 1);
@@ -84,19 +93,25 @@ int xmm626_kernel_linux_modem_hci_power(struct ipc_client *client, int power)
}
if (ohci_rc < 0) {
- ipc_client_log(client, "%s: ohci_rc < 0\n", __func__);
+ ipc_client_log(client, "%s: ohci_rc < 0", __func__);
}
- if (ehci_rc < 0 && ohci_rc < 0)
+
+ if (ehci_rc < 0 && ohci_rc < 0) {
+ ipc_client_log(client, "%s: error: ehci_rc < 0 && ohci_rc < 0",
+ __func__);
+
return -1;
+ }
+ ipc_client_log(client, "%s: DONE", __func__);
return 0;
}
int xmm626_kernel_linux_modem_link_control_enable(
__attribute__((unused)) int device_fd, int enable)
{
- if (enable) {
- }
+ ipc_client_log(client, "ENTER %s: dummy function", __func__);
+
return 0;
}
@@ -105,9 +120,16 @@ int xmm626_kernel_linux_modem_link_control_active(
{
int rc;
+ ipc_client_log(client, "ENTER %s", __func__);
+
rc = sysfs_value_write(XMM626_KERNEL_LINUX_LINK_ACTIVE_PATH, !!active);
- if (rc < 0)
+ if (rc < 0) {
+ ipc_client_log(client, "%s: sysfs_value_write failed with error -1",
+ __func__);
return -1;
+ }
+
+ ipc_client_log(client, "%s DONE", __func__);
return 0;
}
@@ -117,12 +139,16 @@ int xmm626_kernel_linux_modem_link_connected_wait(
{
int i;
+ ipc_client_log(client, "ENTER %s", __func__);
+
i = 0;
for (i = 0; i < 10; i++) {
usleep(50000);
}
+ ipc_client_log(client, "EXIT %s", __func__);
+
return 0;
}
@@ -131,12 +157,16 @@ int xmm626_kernel_linux_modem_link_get_hostwake_wait(
{
int i;
+ ipc_client_log(client, "ENTER %s", __func__);
+
i = 0;
for (i = 0; i < 10; i++) {
/* TODO: read host wake GPIOs */
usleep(500000);
}
+ ipc_client_log(client, "%s DONE", __func__);
+
return 0;
}
@@ -146,7 +176,7 @@ int xmm626_kernel_linux_modem_open(struct ipc_client *client, int type)
int i = 0;
int err = 0;
- ipc_client_log(client, "ENTER %s\n", __func__);
+ ipc_client_log(client, "ENTER %s", __func__);
while (fd < 0 && i < 30) {
i++;
usleep(30000);
@@ -161,7 +191,7 @@ int xmm626_kernel_linux_modem_open(struct ipc_client *client, int type)
err = errno;
ipc_client_log(client, "%s: open(%s, "
"O_RDWR | O_NOCTTY | O_NONBLOCK) => "
- "%d errno: %d\n",
+ "%d errno: %d",
__func__,
XMM626_KERNEL_LINUX_IPC0_DEVICE, fd,
err);
@@ -176,19 +206,21 @@ int xmm626_kernel_linux_modem_open(struct ipc_client *client, int type)
err = errno;
ipc_client_log(client, "%s: open(%s, "
"O_RDWR | O_NOCTTY | O_NONBLOCK) => "
- "%d errno: %d\n",
+ "%d errno: %d",
__func__,
XMM626_KERNEL_LINUX_RFS0_DEVICE,
fd, err);
}
break;
default:
- ipc_client_log(client, "%s: unknown client type %s\n",
+ ipc_client_log(client, "%s: unknown client type %s",
__func__, ipc_client_type_string(type));
return -1;
}
}
+ ipc_client_log(client, "EXIT %s", __func__);
+
return fd;
}
@@ -196,11 +228,15 @@ int xmm626_kernel_linux_modem_read(int fd, void *buffer, size_t length)
{
int rc;
+ ipc_client_log(client, "ENTER %s", __func__);
+
if (fd < 0 || buffer == NULL || length <= 0)
return -1;
rc = read(fd, buffer, length);
+ ipc_client_log(client, "%s DONE", __func__);
+
return rc;
}
@@ -208,11 +244,19 @@ int xmm626_kernel_linux_modem_write(int fd, const void *buffer, size_t length)
{
int rc;
- if (fd < 0 || buffer == NULL || length <= 0)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (fd < 0 || buffer == NULL || length <= 0) {
+ ipc_client_log(client, "%s: error: fd < 0 || buffer == NULL || length <= 0",
+ __func__);
+
return -1;
+ }
rc = write(fd, buffer, length);
+ ipc_client_log(client, "%s DONE", __func__);
+
return rc;
}
@@ -220,11 +264,19 @@ char *xmm626_kernel_linux_modem_gprs_get_iface(unsigned int cid)
{
char *iface = NULL;
- if (cid > XMM626_SEC_MODEM_GPRS_IFACE_COUNT)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (cid > XMM626_SEC_MODEM_GPRS_IFACE_COUNT) {
+ ipc_client_log(client,
+ "%s: error: cid > XMM626_SEC_MODEM_GPRS_IFACE_COUNT",
+ __func__);
return NULL;
+ }
asprintf(&iface, "%s%d", XMM626_SEC_MODEM_GPRS_IFACE_PREFIX, cid - 1);
+ ipc_client_log(client, "%s DONE", __func__);
+
return iface;
}
@@ -232,11 +284,18 @@ int generic_gprs_get_capabilities(
__attribute__((unused)) struct ipc_client *client,
struct ipc_client_gprs_capabilities *capabilities)
{
- if (capabilities == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (capabilities == NULL) {
+ ipc_client_log(client, "%s: error: capabilities == NULL",
+ __func__);
return -1;
+ }
capabilities->cid_count = XMM626_SEC_MODEM_GPRS_IFACE_COUNT;
+ ipc_client_log(client, "%s DONE", __func__);
+
return 0;
}
@@ -251,6 +310,8 @@ int generic_boot(struct ipc_client *client)
int rc;
int unused = 0;
+ ipc_client_log(client, "ENTER %s", __func__);
+
if (client == NULL)
return -1;
@@ -304,7 +365,7 @@ int generic_boot(struct ipc_client *client)
rc = xmm626_kernel_linux_modem_power(unused, 1);
ipc_client_log(client,
- "%s: xmm626_kernel_linux_modem_power(NULL, 1) = %d\n",
+ "%s: xmm626_kernel_linux_modem_power(NULL, 1) = %d",
__func__, rc);
if (rc < 0) {
ipc_client_log(client,
@@ -315,7 +376,7 @@ int generic_boot(struct ipc_client *client)
rc = xmm626_kernel_linux_modem_hci_power(client, 1);
ipc_client_log(client,
- "%s: xmm626_kernel_linux_modem_hci_power(client, 1) = %d\n",
+ "%s: xmm626_kernel_linux_modem_hci_power(client, 1) = %d",
__func__, rc);
if (rc < 0) {
ipc_client_log(client,
@@ -472,6 +533,9 @@ complete:
if (modem_link_fd >= 0)
close(modem_link_fd);
+ if (rc != -1)
+ ipc_client_log(client, "%s DONE", __func__);
+
return rc;
}
@@ -479,14 +543,23 @@ int generic_open(struct ipc_client *client, void *data, int type)
{
struct generic_transport_data *transport_data;
- if (data == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+ if (data == NULL) {
+ ipc_client_log(client, "%s: error: data == NULL",
+ __func__);
return -1;
+ }
transport_data = (struct generic_transport_data *) data;
transport_data->fd = xmm626_kernel_linux_modem_open(client, type);
- if (transport_data->fd < 0)
+ if (transport_data->fd < 0) {
+ ipc_client_log(client, "%s: transport_data->fd < 0",
+ __func__);
return -1;
+ }
+
+ ipc_client_log(client, "%s DONE", __func__);
return 0;
}
@@ -495,14 +568,22 @@ int generic_close(__attribute__((unused)) struct ipc_client *client, void *data)
{
struct generic_transport_data *transport_data;
- if (data == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (data == NULL){
+ ipc_client_log(client, "%s: error: data == NULL",
+ __func__);
+
return -1;
+ }
transport_data = (struct generic_transport_data *) data;
xmm626_kernel_smdk4412_close(client, transport_data->fd);
transport_data->fd = -1;
+ ipc_client_log(client, "%s DONE", __func__);
+
return 0;
}
@@ -512,13 +593,21 @@ int generic_read(__attribute__((unused)) struct ipc_client *client,
struct generic_transport_data *transport_data;
int rc;
- if (data == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (data == NULL) {
+ ipc_client_log(client, "%s: error: data == NULL",
+ __func__);
+
return -1;
+ }
transport_data = (struct generic_transport_data *) data;
rc = xmm626_kernel_linux_modem_read(transport_data->fd, buffer, length);
+ ipc_client_log(client, "%s DONE", __func__);
+
return rc;
}
@@ -528,14 +617,19 @@ int generic_write(__attribute__((unused)) struct ipc_client *client,
struct generic_transport_data *transport_data;
int rc;
- if (data == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (data == NULL) {
+ ipc_client_log(client, "%s: error: data == NULL", __func__);
return -1;
+ }
transport_data = (struct generic_transport_data *) data;
rc = xmm626_kernel_linux_modem_write(transport_data->fd,
buffer, length);
+ ipc_client_log(client, "%s DONE", __func__);
return rc;
}
@@ -558,9 +652,9 @@ int generic_poll(__attribute__((unused)) struct ipc_client *client,
fd.fd = transport_data->fd;
fd.events = POLLRDNORM | POLLIN;
-#if GENERIC_DEBUG
- ipc_client_log(client, "%s: transport_data->fd: %d", __func__, transport_data->fd);
-#endif
+//#if GENERIC_DEBUG
+// ipc_client_log(client, "%s: transport_data->fd: %d", __func__, transport_data->fd);
+//#endif
rc = poll(&fd, 1, -1);
if (rc == -1) {
rc = errno;
@@ -594,13 +688,16 @@ int generic_smdk_poll(__attribute__((unused)) struct ipc_client *client, void *d
rc = xmm626_kernel_smdk4412_poll(client, transport_data->fd, fds,
timeout);
- ipc_client_log(client, "%s: poll: %d", __func__, rc);
+ ipc_client_log(client, "%s DONE: poll: %d", __func__, rc);
+
return rc;
}
int generic_power_on(__attribute__((unused)) struct ipc_client *client,
__attribute__((unused)) void *data)
{
+ ipc_client_log(client, "ENTER %s: dummy function", __func__);
+
return 0;
}
@@ -610,6 +707,8 @@ int generic_power_off(__attribute__((unused)) struct ipc_client *client,
int fd;
int rc;
+ ipc_client_log(client, "ENTER %s", __func__);
+
fd = open(XMM626_KERNEL_LINUX_BOOT0_DEVICE,
O_RDWR | O_NOCTTY | O_NONBLOCK);
if (fd < 0)
@@ -619,9 +718,13 @@ int generic_power_off(__attribute__((unused)) struct ipc_client *client,
close(fd);
- if (rc < 0)
+ if (rc < 0) {
+ ipc_client_log(client, "%s: xmm626_kernel_linux_modem_power failed with error %d",
+ __func__, rc);
return -1;
+ }
+ ipc_client_log(client, "%s DONE", __func__);
return 0;
}
@@ -629,6 +732,8 @@ int generic_gprs_activate(__attribute__((unused)) struct ipc_client *client,
__attribute__((unused)) void *data,
__attribute__((unused)) unsigned int cid)
{
+ ipc_client_log(client, "ENTER %s: dummy function", __func__);
+
return 0;
}
@@ -636,6 +741,8 @@ int generic_gprs_deactivate(__attribute__((unused)) struct ipc_client *client,
__attribute__((unused)) void *data,
__attribute__((unused)) unsigned int cid)
{
+ ipc_client_log(client, "ENTER %s: dummy function", __func__);
+
return 0;
}
@@ -644,11 +751,17 @@ int generic_data_create(__attribute__((unused)) struct ipc_client *client,
__attribute__((unused)) void **power_data,
__attribute__((unused)) void **gprs_data)
{
- if (transport_data == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (transport_data == NULL) {
+ ipc_client_log(client, "%s: error: transport_data == NULL",
+ __func__);
return -1;
+ }
*transport_data = calloc(1, sizeof(struct generic_transport_data));
+ ipc_client_log(client, "%s DONE", __func__);
return 0;
}
@@ -657,11 +770,18 @@ int generic_data_destroy(__attribute__((unused)) struct ipc_client *client,
__attribute__((unused)) void *power_data,
__attribute__((unused)) void *gprs_data)
{
- if (transport_data == NULL)
+ ipc_client_log(client, "ENTER %s", __func__);
+
+ if (transport_data == NULL) {
+ ipc_client_log(client, "%s: error: transport_data == NULL",
+ __func__);
return -1;
+ }
free(transport_data);
+ ipc_client_log(client, "%s DONE", __func__);
+
return 0;
}