@@ -78,6 +78,7 @@ enum hmc5843_ids {
78
78
* HMC5883: Typical data output rate
79
79
*/
80
80
#define HMC5843_RATE_OFFSET 0x02
81
+ #define HMC5843_RATE_DEFAULT 0x04
81
82
#define HMC5843_RATE_BITMASK 0x1C
82
83
#define HMC5843_RATE_NOT_USED 0x07
83
84
@@ -599,23 +600,13 @@ static const struct hmc5843_chip_info hmc5843_chip_info_tbl[] = {
599
600
},
600
601
};
601
602
602
- /* Called when we have found a new HMC58X3 */
603
- static void hmc5843_init_client (struct i2c_client * client ,
604
- const struct i2c_device_id * id )
603
+ static void hmc5843_init (struct hmc5843_data * data )
605
604
{
606
- struct iio_dev * indio_dev = i2c_get_clientdata (client );
607
- struct hmc5843_data * data = iio_priv (indio_dev );
608
-
609
- data -> variant = & hmc5843_chip_info_tbl [id -> driver_data ];
610
- indio_dev -> channels = data -> variant -> channels ;
611
- indio_dev -> num_channels = 3 ;
612
- hmc5843_set_meas_conf (data , data -> meas_conf );
613
- hmc5843_set_rate (data , data -> rate );
614
- hmc5843_configure (client , data -> operating_mode );
615
- i2c_smbus_write_byte_data (client , HMC5843_CONFIG_REG_B , data -> range );
616
- mutex_init (& data -> lock );
617
-
618
- pr_info ("%s initialized\n" , id -> name );
605
+ hmc5843_set_meas_conf (data , HMC5843_MEAS_CONF_NORMAL );
606
+ hmc5843_set_rate (data , HMC5843_RATE_DEFAULT );
607
+ hmc5843_configure (data -> client , HMC5843_MODE_CONVERSION_CONTINUOUS );
608
+ i2c_smbus_write_byte_data (data -> client , HMC5843_CONFIG_REG_B ,
609
+ HMC5843_RANGE_GAIN_DEFAULT );
619
610
}
620
611
621
612
static const struct iio_info hmc5843_info = {
@@ -638,17 +629,18 @@ static int hmc5843_probe(struct i2c_client *client,
638
629
/* default settings at probe */
639
630
data = iio_priv (indio_dev );
640
631
data -> client = client ;
641
- data -> meas_conf = HMC5843_MEAS_CONF_NORMAL ;
642
- data -> range = HMC5843_RANGE_GAIN_DEFAULT ;
643
- data -> operating_mode = HMC5843_MODE_CONVERSION_CONTINUOUS ;
632
+ data -> variant = & hmc5843_chip_info_tbl [id -> driver_data ];
633
+ mutex_init (& data -> lock );
644
634
645
635
i2c_set_clientdata (client , indio_dev );
646
- hmc5843_init_client (client , id );
647
-
648
636
indio_dev -> info = & hmc5843_info ;
649
637
indio_dev -> name = id -> name ;
650
638
indio_dev -> dev .parent = & client -> dev ;
651
639
indio_dev -> modes = INDIO_DIRECT_MODE ;
640
+ indio_dev -> channels = data -> variant -> channels ;
641
+ indio_dev -> num_channels = 3 ;
642
+
643
+ hmc5843_init (data );
652
644
653
645
err = iio_device_register (indio_dev );
654
646
if (err )
0 commit comments