[RFC] patches: sysfs-based client resource interface, exporting of device information in sysfs and to hotplug

Dominik Brodowski linux at dominikbrodowski.de
Wed Jan 12 15:01:12 EST 2005

With the re-worked PCMCIA IRQ handling update (thanks again for all the
feedback) on the way to the next -mm release, I'd like to discuss the next
patches I intend to submit after the big changes in Linus tree and the IRQ 
handling update have rested a bit in -rc and -mm, respectively.
Oh, and please tell me especially if the _naming_ of some files and/or
hotplug values is suboptimal.


sysfs-based resource database output

Add sysfs output to the non-static resource database. It'll reside in 
and be of the format

"0x08%lx - 0x%08%lx\n"

 drivers/pcmcia/rsrc_nonstatic.c |  105 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 105 insertions(+)

sysfs-based resource database input

Add a sysfs input method for the non-static socket resource database. It
works by writing 
"+ 0x%[l]x - 0x%[l]x"
for adding resources, and by
"- 0x%[l]x - 0x%[l]x"
for removing resources to

 drivers/pcmcia/rsrc_nonstatic.c |   69 ++++++++++++++++++++++++++++++++++++----
 1 files changed, 63 insertions(+), 6 deletions(-)

mark resource setup as done

PCMCIA device registration should only happen if we're quite confident
there are resources available to at least map the CIS space -- else we can't
determine manfid/cardid, whether it is a multifunction card, etc. So,
add a flag to struct pcmcia_socket which denotes that -- and also whether
resources were added the "old" adjust_resource_info way. On static sockets,
it is activated upon registration, on non-static sockets, it is set upon an
echo'ing of anything into 


Move the probing of a device-driver pair (a.k.a. "attach") into
pcmcia_device_probe() conforming to the driver model.

 drivers/pcmcia/ds.c |   72 +++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 55 insertions(+), 17 deletions(-)


Move the removal of a device from a driver (a.k.a. "detach") to
a driver-model conform pcmcia_device_remove() function which is called
within device_unregister().

 drivers/pcmcia/ds.c |   36 ++++++++++++++++++++++++------------
 1 files changed, 24 insertions(+), 12 deletions(-)


Re-structure the adding of PCMCIA devices and the binding of devices
and drivers by cardmgr in bind_device: pcmcia_add_device() adds a new 
PCMCIA device for a socket and a device function, if it hasn't been done 

 drivers/pcmcia/ds.c |  160 ++++++++++++++++++++++++++++++++--------------------
 include/pcmcia/ds.h |    3
 2 files changed, 104 insertions(+), 59 deletions(-)

use match function

Use bus_rescan_devices() and a pcmcia_bus_match() function to match
pcmcia devices and drivers based on cardmgr's wishes.

 drivers/pcmcia/ds.c |   45 +++++++++++++++++++++++++++------------------
 include/pcmcia/ds.h |    4 ++--
 2 files changed, 29 insertions(+), 20 deletions(-)

add pcmcia devices without cardmgr's interaction

If it's a "static" socket or the non-static socket has all its resources
set up, there's no reason why the PCMCIA core can't detect and set up
pcmcia devices without cardmgr's interaction. Matching is still done in
userspace, though; and if the PCMCIA core misses something, cardmgr can
still add devices...

 drivers/pcmcia/cs_internal.h  |    1
 drivers/pcmcia/ds.c           |   86 +++++++++++++++++++++++++++++++++---------
 drivers/pcmcia/socket_sysfs.c |   12 +++++
 3 files changed, 80 insertions(+), 19 deletions(-)

determine device information

Determine some useful information about the device, namely
a) manufactor ID
b) card ID
c) function ID
d) product information strings

 drivers/pcmcia/ds.c |   65 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 include/pcmcia/ds.h |   12 +++++++++
 2 files changed, 77 insertions(+)

export device information in sysfs

Per-device sysfs output which reports up to four product ID strings,
manufactor ID, product ID and function ID.

 drivers/pcmcia/ds.c |   37 +++++++++++++++++++++++++++++++++++++
 1 files changed, 37 insertions(+)

export device information to hotplug
Export information to /sbin/hotplug for PCMCIA devices:
card_id, manf_id, func_id, bus_id (like pcmcia1.0) and
crc32-hashes of the prod_id strings. 
Why not the prod_id strings themselves?
a) They may contain all sorts of strange and difficult to handle characters, 
   like " ".
b) It's impossible to pass multiple strings to userspace.

 drivers/pcmcia/ds.c |   84 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 84 insertions(+)

On top of all this I want to focus on kernel-based device<->driver matching (see
as a starting point, also of interest may be
http://www.kernel.org/pub/linux/kernel/people/brodo/patches/2.6.11-rc1/pcmcia-24-09-match-anonymus ).

More information about the linux-pcmcia mailing list