* Base file is device
* |---- modalias
+ * |---- dev-status
+ * |---- status
+ * |---- device_number
Any reason why we want this under dev-status.
Both the status and device_number belong to the device, so we can
put them under device and use device properties
We already use directories for device-level and port-level properties, I
just thought it be cleaner to continue this model. We might also expand
the information later on, e.g. provide interrupt status.
I don't mind if we remove the directory and move everything up one
level, but it wouldn't be consistent with the previous work.
+static ssize_t device_number_show(struct device *dev,
+ struct device_attribute *attr, char *buf)
+{
+ struct sdw_slave *slave = dev_to_sdw_dev(dev);
+
+ if (slave->status == SDW_SLAVE_UNATTACHED)
+ return sprintf(buf, "%s", "N/A");
Do we really want N/A here, 0 should imply UNATTACHED and then the
status_show would tell UNATTACHED.
Actually no. If you look at the standard, 'Unattached' is an 'internal
state of a Slave that indicates that it is not synchronized with to the
Frame boundaries within the Bitstream'. A Slave device can only become
attached and report it's presence as Device0 in a PING frame once it's
ATTACHED - which in turn means the device has been able to sync for 15
frames. A device number of zero means the device is able to respond to
command but has not yet been enumerated, or was enumerated previously
but lost sync or went through a reset sequence and reattached. A device
number of zero does not mean the device is unattached, the logic is as
follow:
Attached -> Device 0 or 1..11
Unattached -> No concept of device number (or not an observable value).
We should not overload what 'Device0' means and instead follow the
standard to the letter. We also don't want the attribute to come and go
dynamically, so N/A (Not Applicable) is IMHO the only way to convey this
meaning.
Does this help?