@@ -85,15 +85,15 @@ static int ms5611_read_prom(struct iio_dev *indio_dev)
8585 struct ms5611_state * st = iio_priv (indio_dev );
8686
8787 for (i = 0 ; i < MS5611_PROM_WORDS_NB ; i ++ ) {
88- ret = st -> read_prom_word (st , i , & st -> chip_info -> prom [i ]);
88+ ret = st -> read_prom_word (st , i , & st -> prom [i ]);
8989 if (ret < 0 ) {
9090 dev_err (& indio_dev -> dev ,
9191 "failed to read prom at %d\n" , i );
9292 return ret ;
9393 }
9494 }
9595
96- if (!ms5611_prom_is_valid (st -> chip_info -> prom , MS5611_PROM_WORDS_NB )) {
96+ if (!ms5611_prom_is_valid (st -> prom , MS5611_PROM_WORDS_NB )) {
9797 dev_err (& indio_dev -> dev , "PROM integrity check failed\n" );
9898 return - ENODEV ;
9999 }
@@ -114,21 +114,20 @@ static int ms5611_read_temp_and_pressure(struct iio_dev *indio_dev,
114114 return ret ;
115115 }
116116
117- return st -> chip_info -> temp_and_pressure_compensate (st -> chip_info ,
118- temp , pressure );
117+ return st -> compensate_temp_and_pressure (st , temp , pressure );
119118}
120119
121- static int ms5611_temp_and_pressure_compensate (struct ms5611_chip_info * chip_info ,
120+ static int ms5611_temp_and_pressure_compensate (struct ms5611_state * st ,
122121 s32 * temp , s32 * pressure )
123122{
124123 s32 t = * temp , p = * pressure ;
125124 s64 off , sens , dt ;
126125
127- dt = t - (chip_info -> prom [5 ] << 8 );
128- off = ((s64 )chip_info -> prom [2 ] << 16 ) + ((chip_info -> prom [4 ] * dt ) >> 7 );
129- sens = ((s64 )chip_info -> prom [1 ] << 15 ) + ((chip_info -> prom [3 ] * dt ) >> 8 );
126+ dt = t - (st -> prom [5 ] << 8 );
127+ off = ((s64 )st -> prom [2 ] << 16 ) + ((st -> prom [4 ] * dt ) >> 7 );
128+ sens = ((s64 )st -> prom [1 ] << 15 ) + ((st -> prom [3 ] * dt ) >> 8 );
130129
131- t = 2000 + ((chip_info -> prom [6 ] * dt ) >> 23 );
130+ t = 2000 + ((st -> prom [6 ] * dt ) >> 23 );
132131 if (t < 2000 ) {
133132 s64 off2 , sens2 , t2 ;
134133
@@ -154,17 +153,17 @@ static int ms5611_temp_and_pressure_compensate(struct ms5611_chip_info *chip_inf
154153 return 0 ;
155154}
156155
157- static int ms5607_temp_and_pressure_compensate (struct ms5611_chip_info * chip_info ,
156+ static int ms5607_temp_and_pressure_compensate (struct ms5611_state * st ,
158157 s32 * temp , s32 * pressure )
159158{
160159 s32 t = * temp , p = * pressure ;
161160 s64 off , sens , dt ;
162161
163- dt = t - (chip_info -> prom [5 ] << 8 );
164- off = ((s64 )chip_info -> prom [2 ] << 17 ) + ((chip_info -> prom [4 ] * dt ) >> 6 );
165- sens = ((s64 )chip_info -> prom [1 ] << 16 ) + ((chip_info -> prom [3 ] * dt ) >> 7 );
162+ dt = t - (st -> prom [5 ] << 8 );
163+ off = ((s64 )st -> prom [2 ] << 17 ) + ((st -> prom [4 ] * dt ) >> 6 );
164+ sens = ((s64 )st -> prom [1 ] << 16 ) + ((st -> prom [3 ] * dt ) >> 7 );
166165
167- t = 2000 + ((chip_info -> prom [6 ] * dt ) >> 23 );
166+ t = 2000 + ((st -> prom [6 ] * dt ) >> 23 );
168167 if (t < 2000 ) {
169168 s64 off2 , sens2 , t2 , tmp ;
170169
@@ -342,15 +341,6 @@ static int ms5611_write_raw(struct iio_dev *indio_dev,
342341
343342static const unsigned long ms5611_scan_masks [] = {0x3 , 0 };
344343
345- static struct ms5611_chip_info chip_info_tbl [] = {
346- [MS5611 ] = {
347- .temp_and_pressure_compensate = ms5611_temp_and_pressure_compensate ,
348- },
349- [MS5607 ] = {
350- .temp_and_pressure_compensate = ms5607_temp_and_pressure_compensate ,
351- }
352- };
353-
354344static const struct iio_chan_spec ms5611_channels [] = {
355345 {
356346 .type = IIO_PRESSURE ,
@@ -433,7 +423,20 @@ int ms5611_probe(struct iio_dev *indio_dev, struct device *dev,
433423 struct ms5611_state * st = iio_priv (indio_dev );
434424
435425 mutex_init (& st -> lock );
436- st -> chip_info = & chip_info_tbl [type ];
426+
427+ switch (type ) {
428+ case MS5611 :
429+ st -> compensate_temp_and_pressure =
430+ ms5611_temp_and_pressure_compensate ;
431+ break ;
432+ case MS5607 :
433+ st -> compensate_temp_and_pressure =
434+ ms5607_temp_and_pressure_compensate ;
435+ break ;
436+ default :
437+ return - EINVAL ;
438+ }
439+
437440 st -> temp_osr =
438441 & ms5611_avail_temp_osr [ARRAY_SIZE (ms5611_avail_temp_osr ) - 1 ];
439442 st -> pressure_osr =
0 commit comments