diff --git a/hid-sony-fix-dkms.c b/hid-sony-fix-dkms.c index 4571bbe..c970c2d 100644 --- a/hid-sony-fix-dkms.c +++ b/hid-sony-fix-dkms.c @@ -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) ||