#include "quicki2c-hid.h"
#include "quicki2c-protocol.h"
-static int quicki2c_init_write_buf(struct quicki2c_device *qcdev, u32 cmd, int cmd_len,
- bool append_data_reg, u8 *data, int data_len,
- u8 *write_buf, int write_buf_len)
+static ssize_t quicki2c_init_write_buf(struct quicki2c_device *qcdev, u32 cmd, size_t cmd_len,
+ bool append_data_reg, u8 *data, size_t data_len,
+ u8 *write_buf, size_t write_buf_len)
{
- int buf_len, offset = 0;
+ size_t buf_len, offset = 0;
buf_len = HIDI2C_REG_LEN + cmd_len;
return buf_len;
}
-static int quicki2c_encode_cmd(struct quicki2c_device *qcdev, u32 *cmd_buf,
- u8 opcode, u8 report_type, u8 report_id)
+static size_t quicki2c_encode_cmd(struct quicki2c_device *qcdev, u32 *cmd_buf,
+ u8 opcode, u8 report_type, u8 report_id)
{
- int cmd_len;
+ size_t cmd_len;
*cmd_buf = FIELD_PREP(HIDI2C_CMD_OPCODE, opcode) |
FIELD_PREP(HIDI2C_CMD_REPORT_TYPE, report_type);
}
static int write_cmd_to_txdma(struct quicki2c_device *qcdev, int opcode,
- int report_type, int report_id, u8 *buf, int buf_len)
+ int report_type, int report_id, u8 *buf, size_t buf_len)
{
- size_t write_buf_len;
- int cmd_len, ret;
+ size_t cmd_len;
+ ssize_t len;
u32 cmd;
cmd_len = quicki2c_encode_cmd(qcdev, &cmd, opcode, report_type, report_id);
- ret = quicki2c_init_write_buf(qcdev, cmd, cmd_len, buf ? true : false, buf,
+ len = quicki2c_init_write_buf(qcdev, cmd, cmd_len, buf ? true : false, buf,
buf_len, qcdev->report_buf, qcdev->report_len);
- if (ret < 0)
- return ret;
-
- write_buf_len = ret;
+ if (len < 0)
+ return len;
- return thc_dma_write(qcdev->thc_hw, qcdev->report_buf, write_buf_len);
+ return thc_dma_write(qcdev->thc_hw, qcdev->report_buf, len);
}
int quicki2c_set_power(struct quicki2c_device *qcdev, enum hidi2c_power_state power_state)
}
int quicki2c_get_report(struct quicki2c_device *qcdev, u8 report_type,
- unsigned int reportnum, void *buf, u32 buf_len)
+ unsigned int reportnum, void *buf, size_t buf_len)
{
struct hidi2c_report_packet *rpt;
- size_t write_buf_len, read_len = 0;
- int cmd_len, rep_type;
+ size_t cmd_len, read_len = 0;
+ int rep_type, ret;
+ ssize_t len;
u32 cmd;
- int ret;
if (report_type == HID_INPUT_REPORT) {
rep_type = HIDI2C_INPUT;
cmd_len = quicki2c_encode_cmd(qcdev, &cmd, HIDI2C_GET_REPORT, rep_type, reportnum);
- ret = quicki2c_init_write_buf(qcdev, cmd, cmd_len, true, NULL, 0,
+ len = quicki2c_init_write_buf(qcdev, cmd, cmd_len, true, NULL, 0,
qcdev->report_buf, qcdev->report_len);
- if (ret < 0)
- return ret;
-
- write_buf_len = ret;
+ if (len < 0)
+ return len;
rpt = (struct hidi2c_report_packet *)qcdev->input_buf;
- ret = thc_swdma_read(qcdev->thc_hw, qcdev->report_buf, write_buf_len,
- NULL, rpt, &read_len);
+ ret = thc_swdma_read(qcdev->thc_hw, qcdev->report_buf, len, NULL, rpt, &read_len);
if (ret) {
- dev_err_once(qcdev->dev, "Get report failed, ret %d, read len (%zu vs %d)\n",
+ dev_err_once(qcdev->dev, "Get report failed, ret %d, read len (%zu vs %zu)\n",
ret, read_len, buf_len);
return ret;
}
if (HIDI2C_DATA_LEN(le16_to_cpu(rpt->len)) != buf_len || rpt->data[0] != reportnum) {
- dev_err_once(qcdev->dev, "Invalid packet, len (%d vs %d) report id (%d vs %d)\n",
+ dev_err_once(qcdev->dev, "Invalid packet, len (%d vs %zu) report id (%d vs %d)\n",
le16_to_cpu(rpt->len), buf_len, rpt->data[0], reportnum);
return -EINVAL;
}
}
int quicki2c_set_report(struct quicki2c_device *qcdev, u8 report_type,
- unsigned int reportnum, void *buf, u32 buf_len)
+ unsigned int reportnum, void *buf, size_t buf_len)
{
int rep_type;
int ret;