static void AKECS_Report_Value(short *rbuf) { struct akm8976_data *data = i2c_get_clientdata(this_client); #if DEBUG printk(KERN_INFO "AKECS_Report_Value: yaw = %d, pitch = %d, roll = %d\n", rbuf[0], rbuf[1], rbuf[2]); printk(KERN_INFO " tmp = %d, m_stat= %d, g_stat=%d\n", rbuf[3], rbuf[4], rbuf[5]); printk(KERN_INFO " G_Sensor: x = %d LSB, y = %d LSB, z = %d LSB\n", rbuf[6], rbuf[7], rbuf[8]); #endif /* Report magnetic sensor information */ if (atomic_read(&m_flag)) { input_report_abs(data->input_dev, ABS_RX, rbuf[0]); input_report_abs(data->input_dev, ABS_RY, rbuf[1]); input_report_abs(data->input_dev, ABS_RZ, rbuf[2]); input_report_abs(data->input_dev, ABS_RUDDER, rbuf[4]); } /* Report acceleration sensor information */ if (atomic_read(&a_flag)) { input_report_abs(data->input_dev, ABS_X, rbuf[6]); input_report_abs(data->input_dev, ABS_Y, rbuf[7]); input_report_abs(data->input_dev, ABS_Z, rbuf[8]); input_report_abs(data->input_dev, ABS_WHEEL, rbuf[5]); } /* Report temperature information */ if (atomic_read(&t_flag)) { input_report_abs(data->input_dev, ABS_THROTTLE, rbuf[3]); } if (atomic_read(&mv_flag)) { input_report_abs(data->input_dev, ABS_HAT0X, rbuf[9]); input_report_abs(data->input_dev, ABS_HAT0Y, rbuf[10]); input_report_abs(data->input_dev, ABS_BRAKE, rbuf[11]); } input_sync(data->input_dev); }