usb: dwc2: Update Core Reset programming flow.
[linux-2.6-microblaze.git] / drivers / i3c / master.c
index 7f8f896..d79cd6d 100644 (file)
@@ -241,12 +241,34 @@ out:
 }
 static DEVICE_ATTR_RO(hdrcap);
 
+static ssize_t modalias_show(struct device *dev,
+                            struct device_attribute *da, char *buf)
+{
+       struct i3c_device *i3c = dev_to_i3cdev(dev);
+       struct i3c_device_info devinfo;
+       u16 manuf, part, ext;
+
+       i3c_device_get_info(i3c, &devinfo);
+       manuf = I3C_PID_MANUF_ID(devinfo.pid);
+       part = I3C_PID_PART_ID(devinfo.pid);
+       ext = I3C_PID_EXTRA_INFO(devinfo.pid);
+
+       if (I3C_PID_RND_LOWER_32BITS(devinfo.pid))
+               return sprintf(buf, "i3c:dcr%02Xmanuf%04X", devinfo.dcr,
+                              manuf);
+
+       return sprintf(buf, "i3c:dcr%02Xmanuf%04Xpart%04Xext%04X",
+                      devinfo.dcr, manuf, part, ext);
+}
+static DEVICE_ATTR_RO(modalias);
+
 static struct attribute *i3c_device_attrs[] = {
        &dev_attr_bcr.attr,
        &dev_attr_dcr.attr,
        &dev_attr_pid.attr,
        &dev_attr_dynamic_address.attr,
        &dev_attr_hdrcap.attr,
+       &dev_attr_modalias.attr,
        NULL,
 };
 ATTRIBUTE_GROUPS(i3c_device);
@@ -267,7 +289,7 @@ static int i3c_device_uevent(struct device *dev, struct kobj_uevent_env *env)
                                      devinfo.dcr, manuf);
 
        return add_uevent_var(env,
-                             "MODALIAS=i3c:dcr%02Xmanuf%04Xpart%04xext%04x",
+                             "MODALIAS=i3c:dcr%02Xmanuf%04Xpart%04Xext%04X",
                              devinfo.dcr, manuf, part, ext);
 }
 
@@ -1953,7 +1975,7 @@ of_i3c_master_add_i2c_boardinfo(struct i3c_master_controller *master,
         * DEFSLVS command.
         */
        if (boardinfo->base.flags & I2C_CLIENT_TEN) {
-               dev_err(&master->dev, "I2C device with 10 bit address not supported.");
+               dev_err(dev, "I2C device with 10 bit address not supported.");
                return -ENOTSUPP;
        }
 
@@ -2138,7 +2160,7 @@ static int i3c_master_i2c_adapter_init(struct i3c_master_controller *master)
         * correctly even if one or more i2c devices are not registered.
         */
        i3c_bus_for_each_i2cdev(&master->bus, i2cdev)
-               i2cdev->dev = i2c_new_device(adap, &i2cdev->boardinfo->base);
+               i2cdev->dev = i2c_new_client_device(adap, &i2cdev->boardinfo->base);
 
        return 0;
 }