aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2020-07-22 01:29:33 +0200
committerDenis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>2021-09-01 13:10:07 +0200
commitc2f4653a6ae9a8eb66ba3f0a7ac9f50da9624fab (patch)
tree715e3cf373a53d580f4e1155216682208805736b
parent305cd64245e679aaf3de12291f871de7213af3a7 (diff)
downloadhardware_replicant_libsamsung-ipc-c2f4653a6ae9a8eb66ba3f0a7ac9f50da9624fab.tar.gz
hardware_replicant_libsamsung-ipc-c2f4653a6ae9a8eb66ba3f0a7ac9f50da9624fab.tar.bz2
hardware_replicant_libsamsung-ipc-c2f4653a6ae9a8eb66ba3f0a7ac9f50da9624fab.zip
modems: xmm626: abstract xmm626_kernel_smdk4412_firmware_send
The idea is to build an abstraction for loading the various subpartitions of the modem OS partition in the modem. To do that we start small and just wrap the various loading function as-is. At the end, the function are expected to be generic and the modem would implement them while the devices will provide a struct with the relevant subpartition informations. Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
-rw-r--r--samsung-ipc/ipc.h2
-rw-r--r--samsung-ipc/modems/modem.c8
-rw-r--r--samsung-ipc/modems/modem.h3
-rw-r--r--samsung-ipc/modems/xmm626/xmm626_hsic.c2
-rw-r--r--samsung-ipc/modems/xmm626/xmm626_mipi.c2
5 files changed, 17 insertions, 0 deletions
diff --git a/samsung-ipc/ipc.h b/samsung-ipc/ipc.h
index 2135a23..7e51f07 100644
--- a/samsung-ipc/ipc.h
+++ b/samsung-ipc/ipc.h
@@ -81,6 +81,8 @@ struct ipc_client_gprs_specs {
struct ipc_client_modem_driver_ops {
int (*data_send)(struct ipc_client *client, int device_fd,
const void *data, size_t size, int address);
+ int (*firmware_send)(struct ipc_client *client, int device_fd,
+ const void *firmware_data, size_t firmware_size);
};
struct ipc_client_nv_data_specs {
diff --git a/samsung-ipc/modems/modem.c b/samsung-ipc/modems/modem.c
index 9bfd4ae..e3e426d 100644
--- a/samsung-ipc/modems/modem.c
+++ b/samsung-ipc/modems/modem.c
@@ -25,3 +25,11 @@ int modem_data_send(struct ipc_client *client, int device_fd, const void *data,
return client->modem_driver_ops->data_send(client, device_fd, data,
size, address);
}
+
+int modem_firmware_send(struct ipc_client *client, int device_fd,
+ const void *firmware_data, size_t firmware_size)
+{
+ return client->modem_driver_ops->firmware_send(client, device_fd,
+ firmware_data,
+ firmware_size);
+}
diff --git a/samsung-ipc/modems/modem.h b/samsung-ipc/modems/modem.h
index c821760..5c362c6 100644
--- a/samsung-ipc/modems/modem.h
+++ b/samsung-ipc/modems/modem.h
@@ -25,4 +25,7 @@
int modem_data_send(struct ipc_client *client, int device_fd, const void *data,
size_t size, int address);
+int modem_firmware_send(struct ipc_client *client, int device_fd,
+ const void *firmware_data, size_t firmware_size);
+
#endif /* __SAMSUNG_IPC_MODEM_H__ */
diff --git a/samsung-ipc/modems/xmm626/xmm626_hsic.c b/samsung-ipc/modems/xmm626/xmm626_hsic.c
index 06c1bf8..4e1263d 100644
--- a/samsung-ipc/modems/xmm626/xmm626_hsic.c
+++ b/samsung-ipc/modems/xmm626/xmm626_hsic.c
@@ -33,6 +33,7 @@
#include "modems/modem.h"
#include "modems/xmm626/xmm626.h"
#include "modems/xmm626/xmm626_hsic.h"
+#include "modems/xmm626/xmm626_kernel_smdk4412.h"
#include "modems/xmm626/xmm626_mipi.h"
int xmm626_hsic_ack_read(__attribute__((unused)) struct ipc_client *client,
@@ -565,4 +566,5 @@ int xmm626_hsic_hw_reset_send(struct ipc_client *client, int device_fd)
struct ipc_client_modem_driver_ops xmm626_hsic_modem_driver_ops = {
.data_send = xmm626_hsic_modem_data_send,
+ .firmware_send = xmm626_kernel_smdk4412_firmware_send,
};
diff --git a/samsung-ipc/modems/xmm626/xmm626_mipi.c b/samsung-ipc/modems/xmm626/xmm626_mipi.c
index b39e712..54adb91 100644
--- a/samsung-ipc/modems/xmm626/xmm626_mipi.c
+++ b/samsung-ipc/modems/xmm626/xmm626_mipi.c
@@ -32,6 +32,7 @@
#include "ipc.h"
#include "modems/modem.h"
#include "modems/xmm626/xmm626.h"
+#include "modems/xmm626/xmm626_kernel_smdk4412.h"
#include "modems/xmm626/xmm626_mipi.h"
int xmm626_mipi_crc_calculate(const void *data, size_t size)
@@ -626,4 +627,5 @@ int xmm626_mipi_hw_reset_send(struct ipc_client *client, int device_fd)
struct ipc_client_modem_driver_ops xmm626_mipi_modem_driver_ops = {
.data_send = xmm626_mipi_modem_data_send,
+ .firmware_send = xmm626_kernel_smdk4412_firmware_send,
};