kvm: x86: Add "last CPU" to some KVM_EXIT information
[linux-2.6-microblaze.git] / drivers / i2c / i2c-core-base.c
index 1f1442d..d1f278f 100644 (file)
@@ -1598,6 +1598,18 @@ void i2c_del_adapter(struct i2c_adapter *adap)
 }
 EXPORT_SYMBOL(i2c_del_adapter);
 
+static void i2c_parse_timing(struct device *dev, char *prop_name, u32 *cur_val_p,
+                           u32 def_val, bool use_def)
+{
+       int ret;
+
+       ret = device_property_read_u32(dev, prop_name, cur_val_p);
+       if (ret && use_def)
+               *cur_val_p = def_val;
+
+       dev_dbg(dev, "%s: %u\n", prop_name, *cur_val_p);
+}
+
 /**
  * i2c_parse_fw_timings - get I2C related timing parameters from firmware
  * @dev: The device to scan for I2C timing properties
@@ -1616,49 +1628,28 @@ EXPORT_SYMBOL(i2c_del_adapter);
  */
 void i2c_parse_fw_timings(struct device *dev, struct i2c_timings *t, bool use_defaults)
 {
-       int ret;
-
-       ret = device_property_read_u32(dev, "clock-frequency", &t->bus_freq_hz);
-       if (ret && use_defaults)
-               t->bus_freq_hz = I2C_MAX_STANDARD_MODE_FREQ;
-
-       ret = device_property_read_u32(dev, "i2c-scl-rising-time-ns", &t->scl_rise_ns);
-       if (ret && use_defaults) {
-               if (t->bus_freq_hz <= I2C_MAX_STANDARD_MODE_FREQ)
-                       t->scl_rise_ns = 1000;
-               else if (t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ)
-                       t->scl_rise_ns = 300;
-               else
-                       t->scl_rise_ns = 120;
-       }
-
-       ret = device_property_read_u32(dev, "i2c-scl-falling-time-ns", &t->scl_fall_ns);
-       if (ret && use_defaults) {
-               if (t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ)
-                       t->scl_fall_ns = 300;
-               else
-                       t->scl_fall_ns = 120;
-       }
-
-       ret = device_property_read_u32(dev, "i2c-scl-internal-delay-ns", &t->scl_int_delay_ns);
-       if (ret && use_defaults)
-               t->scl_int_delay_ns = 0;
+       bool u = use_defaults;
+       u32 d;
 
-       ret = device_property_read_u32(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns);
-       if (ret && use_defaults)
-               t->sda_fall_ns = t->scl_fall_ns;
+       i2c_parse_timing(dev, "clock-frequency", &t->bus_freq_hz,
+                        I2C_MAX_STANDARD_MODE_FREQ, u);
 
-       ret = device_property_read_u32(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns);
-       if (ret && use_defaults)
-               t->sda_hold_ns = 0;
+       d = t->bus_freq_hz <= I2C_MAX_STANDARD_MODE_FREQ ? 1000 :
+           t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ ? 300 : 120;
+       i2c_parse_timing(dev, "i2c-scl-rising-time-ns", &t->scl_rise_ns, d, u);
 
-       ret = device_property_read_u32(dev, "i2c-digital-filter-width-ns", &t->digital_filter_width_ns);
-       if (ret && use_defaults)
-               t->digital_filter_width_ns = 0;
+       d = t->bus_freq_hz <= I2C_MAX_FAST_MODE_FREQ ? 300 : 120;
+       i2c_parse_timing(dev, "i2c-scl-falling-time-ns", &t->scl_fall_ns, d, u);
 
-       ret = device_property_read_u32(dev, "i2c-analog-filter-cutoff-frequency", &t->analog_filter_cutoff_freq_hz);
-       if (ret && use_defaults)
-               t->analog_filter_cutoff_freq_hz = 0;
+       i2c_parse_timing(dev, "i2c-scl-internal-delay-ns",
+                        &t->scl_int_delay_ns, 0, u);
+       i2c_parse_timing(dev, "i2c-sda-falling-time-ns", &t->sda_fall_ns,
+                        t->scl_fall_ns, u);
+       i2c_parse_timing(dev, "i2c-sda-hold-time-ns", &t->sda_hold_ns, 0, u);
+       i2c_parse_timing(dev, "i2c-digital-filter-width-ns",
+                        &t->digital_filter_width_ns, 0, u);
+       i2c_parse_timing(dev, "i2c-analog-filter-cutoff-frequency",
+                        &t->analog_filter_cutoff_freq_hz, 0, u);
 }
 EXPORT_SYMBOL_GPL(i2c_parse_fw_timings);
 
@@ -2195,7 +2186,6 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
        const unsigned short *address_list;
        struct i2c_client *temp_client;
        int i, err = 0;
-       int adap_id = i2c_adapter_id(adapter);
 
        address_list = driver->address_list;
        if (!driver->detect || !address_list)
@@ -2223,7 +2213,7 @@ static int i2c_detect(struct i2c_adapter *adapter, struct i2c_driver *driver)
        for (i = 0; address_list[i] != I2C_CLIENT_END; i += 1) {
                dev_dbg(&adapter->dev,
                        "found normal entry for adapter %d, addr 0x%02x\n",
-                       adap_id, address_list[i]);
+                       i2c_adapter_id(adapter), address_list[i]);
                temp_client->addr = address_list[i];
                err = i2c_detect_address(temp_client, driver);
                if (unlikely(err))