25 #include "switchtec/gas_mrpc.h"
27 #include "switchtec_priv.h"
33 #define GAS_MRPC_MEMCPY_MAX 512
60 const void *src,
size_t n)
65 uint32_t offset = (uint32_t)(dest - (
void __gas *)dev->gas_map);
69 if (len >
sizeof(cmd.data))
70 len =
sizeof(cmd.data);
71 cmd.len = htole32(len);
72 cmd.gas_offset = htole32(offset);
73 memcpy(&cmd.data, src, len);
76 len +
sizeof(cmd) -
sizeof(cmd.data),
95 const void __gas *src,
size_t n)
101 cmd.gas_offset = htole32((uint32_t)(src - (
void __gas *)dev->gas_map));
105 if (len > GAS_MRPC_MEMCPY_MAX)
106 len = GAS_MRPC_MEMCPY_MAX;
107 cmd.len = htole32(len);
110 sizeof(cmd), dest, len);
112 memset(dest, 0xff, n);
118 cmd.gas_offset += len;
132 const void __gas *src,
size_t n)
134 char buf[MRPC_MAX_DATA_LEN];
135 ssize_t ret, total = 0;
140 if (txfr_sz >
sizeof(buf))
141 txfr_sz =
sizeof(buf);
145 ret = write(fd, buf, txfr_sz);