second commit

main
ozz-is-here 4 years ago
parent 56eb0698fc
commit dae97a29f2

@ -1130,30 +1130,18 @@ static void dualshock4_parse_report(struct sony_sc *sc, u8 *rd, int size)
/* Store data in int for more precision during mult_frac. */
int raw_data = (short)((rd[offset+1] << 8) | rd[offset]);
struct ds4_calibration_data *calib = &sc->ds4_calib_data[n];
int calib_data;
int calib_sens_numer = calib->sens_numer;
int raw_data_calib_bias = raw_data - calib->bias;
int calib_sens_denom = calib->sens_denom;
if (raw_data_calib_bias == 0)
raw_data_calib_bias = 1;
if (calib_sens_numer == 0)
calib_sens_numer = 1;
if (calib_sens_denom == 0)
calib_sens_denom = 1;
/* High precision is needed during calibration, but the
* calibrated values are within 32-bit.
* Note: we swap numerator 'x' and 'numer' in mult_frac for
* precision reasons so we don't need 64-bit.
*/
//int calib_data = mult_frac(calib->sens_numer,
/*calib_data = mult_frac(calib->sens_numer,
/*int calib_data = mult_frac(calib->sens_numer,
raw_data - calib->bias,
calib->sens_denom);*/
calib_data = mult_frac(calib_sens_numer, raw_data_calib_bias, calib_sens_denom);
int calib_data = mult_frac((calib->sens_numer == 0) ? 1 : calib->sens_numer,
(raw_data - calib->bias == 0) ? 1 : raw_data - calib->bias,
(calib->sens_denom == 0) ? 1 : calib->sens_denom);
input_report_abs(sc->sensor_dev, calib->abs_code, calib_data);
@ -2633,9 +2621,7 @@ static int sony_check_add(struct sony_sc *sc)
return 0;
}
} else if (sc->quirks & (DUALSHOCK4_CONTROLLER_USB | DUALSHOCK4_DONGLE)) {
//buf = kmalloc(DS4_FEATURE_REPORT_0x81_SIZE, GFP_KERNEL);
buf = kmalloc(max(DS4_FEATURE_REPORT_0x12_SIZE, DS4_FEATURE_REPORT_0x81_SIZE), GFP_KERNEL);
//buf = kmalloc(max(DS4_FEATURE_REPORT_0x12_SIZE, DS4_FEATURE_REPORT_0x81_SIZE), GFP_NOIO);
if (!buf)
return -ENOMEM;
@ -2657,12 +2643,6 @@ static int sony_check_add(struct sony_sc *sc)
DS4_FEATURE_REPORT_0x81_SIZE, HID_FEATURE_REPORT,
HID_REQ_GET_REPORT);
/*if (ret != DS4_FEATURE_REPORT_0x81_SIZE) {
hid_err(sc->hdev, "failed to retrieve feature report 0x81 with the DualShock 4 MAC address\n");
ret = ret < 0 ? ret : -EINVAL;
goto out_free;
}*/
if (ret == DS4_FEATURE_REPORT_0x81_SIZE) {
memcpy(sc->mac_address, &buf[1], sizeof(sc->mac_address));
goto out_free;
@ -2671,8 +2651,6 @@ static int sony_check_add(struct sony_sc *sc)
hid_err(sc->hdev, "failed to retrieve feature reports 0x81 and 0x12 with the DualShock 4 MAC address\n");
ret = ret < 0 ? ret : -EINVAL;
//memcpy(sc->mac_address, &buf[1], sizeof(sc->mac_address));
snprintf(sc->hdev->uniq, sizeof(sc->hdev->uniq),
"%pMR", sc->mac_address);
} else if ((sc->quirks & SIXAXIS_CONTROLLER_USB) ||

Loading…
Cancel
Save