@@ -67,7 +67,6 @@ struct ucd9000_data {
6767 struct gpio_chip gpio ;
6868#endif
6969 struct dentry * debugfs ;
70- ktime_t write_time ;
7170};
7271#define to_ucd9000_data (_info ) container_of(_info, struct ucd9000_data, info)
7372
@@ -86,63 +85,6 @@ struct ucd9000_debugfs_entry {
8685 */
8786#define UCD90320_WAIT_DELAY_US 500
8887
89- static inline void ucd90320_wait (const struct ucd9000_data * data )
90- {
91- s64 delta = ktime_us_delta (ktime_get (), data -> write_time );
92-
93- if (delta < UCD90320_WAIT_DELAY_US )
94- udelay (UCD90320_WAIT_DELAY_US - delta );
95- }
96-
97- static int ucd90320_read_word_data (struct i2c_client * client , int page ,
98- int phase , int reg )
99- {
100- const struct pmbus_driver_info * info = pmbus_get_driver_info (client );
101- struct ucd9000_data * data = to_ucd9000_data (info );
102-
103- if (reg >= PMBUS_VIRT_BASE )
104- return - ENXIO ;
105-
106- ucd90320_wait (data );
107- return pmbus_read_word_data (client , page , phase , reg );
108- }
109-
110- static int ucd90320_read_byte_data (struct i2c_client * client , int page , int reg )
111- {
112- const struct pmbus_driver_info * info = pmbus_get_driver_info (client );
113- struct ucd9000_data * data = to_ucd9000_data (info );
114-
115- ucd90320_wait (data );
116- return pmbus_read_byte_data (client , page , reg );
117- }
118-
119- static int ucd90320_write_word_data (struct i2c_client * client , int page ,
120- int reg , u16 word )
121- {
122- const struct pmbus_driver_info * info = pmbus_get_driver_info (client );
123- struct ucd9000_data * data = to_ucd9000_data (info );
124- int ret ;
125-
126- ucd90320_wait (data );
127- ret = pmbus_write_word_data (client , page , reg , word );
128- data -> write_time = ktime_get ();
129-
130- return ret ;
131- }
132-
133- static int ucd90320_write_byte (struct i2c_client * client , int page , u8 value )
134- {
135- const struct pmbus_driver_info * info = pmbus_get_driver_info (client );
136- struct ucd9000_data * data = to_ucd9000_data (info );
137- int ret ;
138-
139- ucd90320_wait (data );
140- ret = pmbus_write_byte (client , page , value );
141- data -> write_time = ktime_get ();
142-
143- return ret ;
144- }
145-
14688static int ucd9000_get_fan_config (struct i2c_client * client , int fan )
14789{
14890 int fan_config = 0 ;
@@ -667,10 +609,8 @@ static int ucd9000_probe(struct i2c_client *client)
667609 info -> func [0 ] |= PMBUS_HAVE_FAN12 | PMBUS_HAVE_STATUS_FAN12
668610 | PMBUS_HAVE_FAN34 | PMBUS_HAVE_STATUS_FAN34 ;
669611 } else if (mid -> driver_data == ucd90320 ) {
670- info -> read_byte_data = ucd90320_read_byte_data ;
671- info -> read_word_data = ucd90320_read_word_data ;
672- info -> write_byte = ucd90320_write_byte ;
673- info -> write_word_data = ucd90320_write_word_data ;
612+ /* Delay SMBus operations after a write */
613+ info -> write_delay = UCD90320_WAIT_DELAY_US ;
674614 }
675615
676616 ucd9000_probe_gpio (client , mid , data );
0 commit comments