@@ -121,12 +121,13 @@ static int gyro_report_value(struct i2c_client *client, struct sensor_axis *axis
121121 struct sensor_private_data * sensor =
122122 (struct sensor_private_data * ) i2c_get_clientdata (client );
123123
124- /* Report GYRO information */
125- input_report_rel (sensor -> input_dev , ABS_RX , axis -> x );
126- input_report_rel (sensor -> input_dev , ABS_RY , axis -> y );
127- input_report_rel (sensor -> input_dev , ABS_RZ , axis -> z );
128- input_sync (sensor -> input_dev );
129- DBG ("gyro x==%d y==%d z==%d\n" ,axis -> x ,axis -> y ,axis -> z );
124+ if (sensor -> status_cur == SENSOR_ON ) {
125+ /* Report GYRO information */
126+ input_report_rel (sensor -> input_dev , ABS_RX , axis -> x );
127+ input_report_rel (sensor -> input_dev , ABS_RY , axis -> y );
128+ input_report_rel (sensor -> input_dev , ABS_RZ , axis -> z );
129+ input_sync (sensor -> input_dev );
130+ }
130131
131132 return 0 ;
132133}
@@ -184,16 +185,11 @@ static int sensor_report_value(struct i2c_client *client)
184185 axis .z = z ;
185186 }
186187
187- //filter gyro data
188- if ((abs (axis .x ) > pdata -> x_min )|| (abs (axis .y ) > pdata -> y_min )|| (abs (axis .z ) > pdata -> z_min ))
189- {
190- gyro_report_value (client , & axis );
188+ gyro_report_value (client , & axis );
191189
192- /* »¥³âµØ»º´æÊý¾Ý. */
193- mutex_lock (& (sensor -> data_mutex ) );
194- sensor -> axis = axis ;
195- mutex_unlock (& (sensor -> data_mutex ) );
196- }
190+ mutex_lock (& sensor -> data_mutex );
191+ sensor -> axis = axis ;
192+ mutex_unlock (& sensor -> data_mutex );
197193
198194 if ((sensor -> pdata -> irq_enable )&& (sensor -> ops -> int_status_reg >= 0 )) //read sensor intterupt status register
199195 {
@@ -207,21 +203,21 @@ static int sensor_report_value(struct i2c_client *client)
207203
208204
209205struct sensor_operate gyro_l3g4200d_ops = {
210- .name = "l3g4200d" ,
211- .type = SENSOR_TYPE_GYROSCOPE ,//sensor type and it should be correct
212- .id_i2c = GYRO_ID_L3G4200D , //i2c id number
213- .read_reg = GYRO_DATA_REG , //read data
214- .read_len = 6 , //data length
215- .id_reg = GYRO_WHO_AM_I , //read device id from this register
216- .id_data = GYRO_DEVID_L3G4200D , //device id
217- .precision = 8 , //8 bits
218- .ctrl_reg = GYRO_CTRL_REG1 , //enable or disable
219- .int_status_reg = GYRO_INT_SRC , //intterupt status register,if no exist then -1
220- .range = {-32768 ,32768 }, //range
221- .trig = IRQF_TRIGGER_LOW | IRQF_ONESHOT ,
222- .active = sensor_active ,
206+ .name = "l3g4200d" ,
207+ .type = SENSOR_TYPE_GYROSCOPE ,
208+ .id_i2c = GYRO_ID_L3G4200D ,
209+ .read_reg = GYRO_DATA_REG ,
210+ .read_len = 6 ,
211+ .id_reg = GYRO_WHO_AM_I ,
212+ .id_data = GYRO_DEVID_L3G4200D ,
213+ .precision = 16 ,
214+ .ctrl_reg = GYRO_CTRL_REG1 ,
215+ .int_status_reg = GYRO_INT_SRC ,
216+ .range = {-32768 , 32768 },
217+ .trig = IRQF_TRIGGER_LOW | IRQF_ONESHOT ,
218+ .active = sensor_active ,
223219 .init = sensor_init ,
224- .report = sensor_report_value ,
220+ .report = sensor_report_value ,
225221};
226222
227223/****************operate according to sensor chip:end************/
0 commit comments