[0/8] firewire: core: support legacy layout of configuration ROM for AV/C device

Message ID 20231220041806.39816-1-o-takashi@sakamocchi.jp
Headers
Series firewire: core: support legacy layout of configuration ROM for AV/C device |

Message

Takashi Sakamoto Dec. 20, 2023, 4:17 a.m. UTC
  Hi,

This series of change is to update my previous post for RFC[1], and for
merge.

Current core function of Linux FireWire subsystem has support for legacy
layout of configuration ROM, described in annex of 1394TA document[2].
However, in a point of device attributes (e.g. nodes in sysfs), there
are differences between devices with the legacy and standard layout of
configuration ROM. The differences bring some inconveniences to users[3].
The series includes changes to solve them.

The series includes changes relevant to driver matching procedure and
notification to user space, thus could easily bring functional regression.
For safe, the series includes some KUnit applications to test the change.

However, backward incompatibility is inevitable due to change of modalias
for device corresponding to unit. As long as I investigated, any unit
drivers in kernel are not affected by the change. Additionally, less
applications in user space are not as well. I think we can be optimistic
to the regression.

Changes from RFC:
* rename file and KUnit tests so that they are related to device
  attributes
* fix traverse failure when detecting textual descriptor
* remove redundant indication for CSR key type

[1] [RFC PATCH 0/8] firewire: core: support legacy layout of configuration
    ROM for AV/C device
https://lore.kernel.org/lkml/20231217103012.41273-1-o-takashi@sakamocchi.jp/
[2] Configuration ROM for AV/C Devices 1.0 (December 12, 2000, 1394
    Trading Association, TA Document 1999027)
https://web.archive.org/web/20210216003030/http://1394ta.org/wp-content/uploads/2015/07/1999027.pdf
[3] [PATCH] Fix missing sysfs vendor/model entries for some devices
https://sourceforge.net/p/linux1394/mailman/message/55802731/


Takashi Sakamoto (8):
  firewire: core: adds constant qualifier for local helper functions
  firewire: core: replace magic number with macro
  firewire: test: add KUnit test for device attributes
  firewire: test: add test of device attributes for simple AV/C device
  firewire: test: add test of device attributes for legacy AV/C device
  firewire: core: detect numeric model identifier for legacy layout of
    configuration ROM
  firewire: core: detect model name for legacy layout of configuration
    ROM
  firewire: core: change modalias of unit device with backward
    incompatibility

 drivers/firewire/.kunitconfig            |   1 +
 drivers/firewire/Kconfig                 |  16 ++
 drivers/firewire/core-device.c           | 127 +++++++++---
 drivers/firewire/device-attribute-test.c | 251 +++++++++++++++++++++++
 4 files changed, 368 insertions(+), 27 deletions(-)
 create mode 100644 drivers/firewire/device-attribute-test.c