[PATCHSET] "nomaster" patchset (formerly pcmcia-b13) re-diffed and updated

Dominik Brodowski linux at dominikbrodowski.de
Sun May 16 19:21:20 EDT 2004


I've just re-diffed my proposal for a patchset formerly named
"13-pcmcia", now named "120-nomaster". It is built on top of
2.6.6-bk-current, "b100-socket-sysfs" and "b110-obsolete", which
are avaliable at

http://www.brodo.de/patches/2004-05-16/pcmcia-b100.tar.bz2
http://www.brodo.de/patches/2004-05-16/pcmcia-b110.tar.bz2
	
Changes to previous implementation sent to list
- re-diffed
- adapted so that "b100-socket-syfs" can be first to be merged

The aim of this patchset is to remove almost all
usages of the MASTER_INFO_CLIENT handle of ds.c
This way we can soon remove the registration of ds
as a "client" in order to equalize "client == pcmcia card function",
adding it into the device model, merge reference counting, and so on.

In most cases, this is done utilizing a "compatibility wrapper" for
default access by PCMCIA drivers, which still pass a "handle" as first
argument, and updated functions, which now take the struct pcmcia_socket
as argument as well as a "function" parameter which denotes the sub-function
to be accessed on the PCMICA device. Please note that these pccard_* functions
should not (yet) be used in any PCMCIA device drivers, as their calling
conventions are likely to change soon in future.



The patches are available in compressed form
at:
http://www.brodo.de/patches/2004-05-16/pcmcia-b120.tar.bz2
or
http://www.brodo.de/patches/2004-05-16/pcmcia-b120.tar.gz
as single diff at:
http://www.brodo.de/patches/2004-05-16/pcmcia-b120-complete

and as single patches as follows:

http://www.brodo.de/patches/2004-05-16/01-lookup_bus

pcmcia_lookup_bus is only called from ds.c, and doesn't need to know
about a handle -- just about the struct pcmcia_socket.

 drivers/pcmcia/cs.c |    9 ++-------
 drivers/pcmcia/ds.c |    4 +++-
 include/pcmcia/cs.h |    1 -
 3 files changed, 5 insertions(+), 9 deletions(-)


http://www.brodo.de/patches/2004-05-16/02-adjust_resource_info

 drivers/pcmcia/cs.c       |    1 -
 drivers/pcmcia/ds.c       |    4 +++-
 drivers/pcmcia/rsrc_mgr.c |    6 ++----
 include/pcmcia/cs.h       |    3 ---
 4 files changed, 5 insertions(+), 9 deletions(-)


http://www.brodo.de/patches/2004-05-16/03-replace_cis

pcmcia_replace_cis doesn't need to know about the handle or a sub-function,
as the cis can only be replaced as a whole. Also, remove bogus entries in
cs_internal.h

 drivers/pcmcia/cistpl.c      |    6 +-----
 drivers/pcmcia/cs_internal.h |    7 -------
 drivers/pcmcia/ds.c          |    2 +-
 include/pcmcia/cistpl.h      |    2 +-
 4 files changed, 3 insertions(+), 14 deletions(-)


http://www.brodo.de/patches/2004-05-16/04-get_firstnext_tuple

Add wrappings around pcmcia_get_{first,next}_tuple, and use the new
pccard_get_first,next_tuple calls wherever possible. 

 drivers/pcmcia/cistpl.c |   57 ++++++++++++++++++++++++++++++++----------------
 drivers/pcmcia/cs.c     |    2 -
 drivers/pcmcia/ds.c     |    4 +--
 include/pcmcia/cistpl.h |    3 ++
 4 files changed, 44 insertions(+), 22 deletions(-)


http://www.brodo.de/patches/2004-05-16/05-get_tuple_data

Add a wrapping around pcmcia_get_tuple_data, and use 
pccard_get_tuple_data wherever possible.

 drivers/pcmcia/cistpl.c |   22 ++++++++++++++++------
 drivers/pcmcia/cs.c     |    1 -
 drivers/pcmcia/ds.c     |    2 +-
 include/pcmcia/cistpl.h |    2 ++
 4 files changed, 19 insertions(+), 8 deletions(-)


http://www.brodo.de/patches/2004-05-16/06-parse_tuple

Add a wrapper around pcmcia_parse_tuple, and use pccard_parse_tuple in ds.c

 drivers/pcmcia/cistpl.c |    8 +++++++-
 drivers/pcmcia/cs.c     |    1 -
 drivers/pcmcia/ds.c     |    2 +-
 include/pcmcia/cistpl.h |    1 +
 4 files changed, 9 insertions(+), 3 deletions(-)


http://www.brodo.de/patches/2004-05-16/07-read_tuple

rename the "internal" read_tuple to pccard_read_tuple, and
update it to better calling conventions.

 drivers/pcmcia/bulkmem.c     |    6 +++---
 drivers/pcmcia/cistpl.c      |   28 +++++++++++++++++-----------
 drivers/pcmcia/cs.c          |    2 +-
 drivers/pcmcia/cs_internal.h |    2 +-
 4 files changed, 22 insertions(+), 16 deletions(-)


http://www.brodo.de/patches/2004-05-16/08-validate_cis

Add a wrapper around pcmcia_validate_cis, and use pccard_validate_cis in
ds.c

 drivers/pcmcia/cistpl.c   |   22 ++++++++++++++--------
 drivers/pcmcia/cs.c       |    1 -
 drivers/pcmcia/ds.c       |    2 +-
 drivers/pcmcia/rsrc_mgr.c |    2 +-
 include/pcmcia/cistpl.h   |    2 ++
 5 files changed, 18 insertions(+), 11 deletions(-)


http://www.brodo.de/patches/2004-05-16/09-pcmcia_compat

Move the compatibility pcmcia_* functions which take a "handle" as argument
to a new file, pcmcia_compat.c, which is built into "ds" a.k.a. "pcmcia.ko".
This makes sense as only 16-bit PCMCIA drivers have a valid handle.

 drivers/pcmcia/Makefile        |    2 -
 drivers/pcmcia/cistpl.c        |   50 ---------------------------
 drivers/pcmcia/pcmcia_compat.c |   75 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 76 insertions(+), 51 deletions(-)


http://www.brodo.de/patches/2004-05-16/10-get_window

Change calling conventions to pcmcia_get_window, and use this function
directly in ds.c, but keep the existing wrappers pcmcia_get_{first,next}_window
in pcmcia_compat.c

 drivers/pcmcia/cs.c            |   26 +++-----------------------
 drivers/pcmcia/cs_internal.h   |    1 +
 drivers/pcmcia/ds.c            |    5 ++---
 drivers/pcmcia/pcmcia_compat.c |   21 +++++++++++++++++++++
 4 files changed, 27 insertions(+), 26 deletions(-)


http://www.brodo.de/patches/2004-05-16/11-configuration_info

 drivers/pcmcia/cs.c            |   21 ++++++---------------
 drivers/pcmcia/cs_internal.h   |    1 +
 drivers/pcmcia/ds.c            |    6 +++++-
 drivers/pcmcia/pcmcia_compat.c |   14 ++++++++++++++
 4 files changed, 26 insertions(+), 16 deletions(-)


http://www.brodo.de/patches/2004-05-16/12-reset_card

pcmcia_reset_card doesn't need to know about the handle,
but add a wrapper for backwards compatibility anyways.

 drivers/pcmcia/cs.c            |   11 ++---------
 drivers/pcmcia/cs_internal.h   |    1 +
 drivers/pcmcia/ds.c            |    2 +-
 drivers/pcmcia/pcmcia_compat.c |   14 ++++++++++++++
 include/pcmcia/cs.h            |    1 -
 5 files changed, 18 insertions(+), 11 deletions(-)


http://www.brodo.de/patches/2004-05-16/13-get_status

Add a wrapper around pcmcia_get_status, and use
pccard_get_status in ds.c

 drivers/pcmcia/cs.c            |   16 +++-------------
 drivers/pcmcia/cs_internal.h   |    1 +
 drivers/pcmcia/ds.c            |    6 +++++-
 drivers/pcmcia/pcmcia_compat.c |   10 ++++++++++
 4 files changed, 19 insertions(+), 14 deletions(-)


http://www.brodo.de/patches/2004-05-16/14-access_configuration

Add a wrapper around pcmcia_access_configuration_register, and use
pccard_access_configuration_register in ds.c

 drivers/pcmcia/cs.c            |   22 ++++++++--------------
 drivers/pcmcia/cs_internal.h   |    1 +
 drivers/pcmcia/ds.c            |    6 +++++-
 drivers/pcmcia/pcmcia_compat.c |   11 +++++++++++
 4 files changed, 25 insertions(+), 15 deletions(-)


http://www.brodo.de/patches/2004-05-16/15-get_firstnext_region

pcmcia_get_{first,next}_region are tricky: they're used
only by ds.c, but to keep backwards compatibility proper
wrappers are needed (for the moment). However, match_region()
doesn't work without knowing about ds.c's handle, it seems... 
but wait:

    while (list != NULL) {
        if (!(handle->Attributes & INFO_MTD_CLIENT) ||
            (strcmp(handle->dev_info, list->dev_info) == 0)) {
            *match = list->info;
            return CS_SUCCESS;
        }
        list = list->info.next;
    }

as ds.c's handle doesn't have INFO_MTD_CLIENT, the if always
succeeds -- allowing is to simplify it for ds.c. However, this
means we need special functions for ds.c. It's not too large,
fortunately:

 drivers/pcmcia/bulkmem.c     |   55 ++++++++++++++++++++++++++++++++++---------
 drivers/pcmcia/cs_internal.h |    4 ---
 drivers/pcmcia/ds.c          |    6 +++-
 3 files changed, 48 insertions(+), 17 deletions(-)



More information about the linux-pcmcia mailing list