From b5d41e3657d3f4745f44127f512636f222c5c49e Mon Sep 17 00:00:00 2001 From: Yaroslav Chvanov Date: Mon, 24 Jan 2022 16:39:29 +0300 Subject: [PATCH] sinowealth: put reading of raw configuration data into a helper --- src/driver-sinowealth.c | 31 ++++++++++++++++++++++++------- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/driver-sinowealth.c b/src/driver-sinowealth.c index 2077e9c6..97f03637 100644 --- a/src/driver-sinowealth.c +++ b/src/driver-sinowealth.c @@ -265,14 +265,12 @@ sinowealth_print_fw_version(struct ratbag_device *device) { } static int -sinowealth_read_profile(struct ratbag_profile *profile) -{ - struct ratbag_device *device = profile->device; +sinowealth_read_raw_data(struct ratbag_device* device) { + int rc = 0; + struct sinowealth_data *drv_data = device->drv_data; struct sinowealth_config_report *config = &drv_data->config; - struct ratbag_resolution *resolution; - struct ratbag_led *led; - int rc; + uint8_t cmd[6] = {SINOWEALTH_REPORT_ID_CMD, SINOWEALTH_CMD_GET_CONFIG}; rc = ratbag_hidraw_set_feature_report(device, SINOWEALTH_REPORT_ID_CMD, cmd, sizeof(cmd)); if (rc != sizeof(cmd)) { @@ -291,6 +289,19 @@ sinowealth_read_profile(struct ratbag_profile *profile) } drv_data->config_size = rc; + return 0; +} + +/* Update profile with values from raw configuration data. */ +static int +sinowealth_update_profile(struct ratbag_profile *profile) +{ + struct ratbag_device *device = profile->device; + struct sinowealth_data *drv_data = device->drv_data; + struct sinowealth_config_report *config = &drv_data->config; + struct ratbag_resolution *resolution; + struct ratbag_led *led; + /* Report rate */ const uint8_t reported_rate = config->config & 0b111U; unsigned int hz = 0; @@ -458,8 +469,14 @@ sinowealth_probe(struct ratbag_device *device) goto err; } + rc = sinowealth_read_raw_data(device); + if (rc) { + rc = -ENODEV; + goto err; + } + profile = ratbag_device_get_profile(device, 0); - rc = sinowealth_read_profile(profile); + rc = sinowealth_update_profile(profile); if (rc) { rc = -ENODEV; goto err;