~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/pcmcia/driver-changes.rst

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/pcmcia/driver-changes.rst (Version linux-6.11.5) and /Documentation/pcmcia/driver-changes.rst (Version linux-5.8.18)


  1 ==============                                      1 ==============
  2 Driver changes                                      2 Driver changes
  3 ==============                                      3 ==============
  4                                                     4 
  5 This file details changes in 2.6 which affect       5 This file details changes in 2.6 which affect PCMCIA card driver authors:
  6                                                     6 
  7 * pcmcia_loop_config() and autoconfiguration (      7 * pcmcia_loop_config() and autoconfiguration (as of 2.6.36)
  8    If `struct pcmcia_device *p_dev->config_fla      8    If `struct pcmcia_device *p_dev->config_flags` is set accordingly,
  9    pcmcia_loop_config() now sets up certain co      9    pcmcia_loop_config() now sets up certain configuration values
 10    automatically, though the driver may still      10    automatically, though the driver may still override the settings
 11    in the callback function. The following aut     11    in the callback function. The following autoconfiguration options
 12    are provided at the moment:                     12    are provided at the moment:
 13                                                    13 
 14         - CONF_AUTO_CHECK_VCC : check for matc     14         - CONF_AUTO_CHECK_VCC : check for matching Vcc
 15         - CONF_AUTO_SET_VPP   : set Vpp            15         - CONF_AUTO_SET_VPP   : set Vpp
 16         - CONF_AUTO_AUDIO     : auto-enable au     16         - CONF_AUTO_AUDIO     : auto-enable audio line, if required
 17         - CONF_AUTO_SET_IO    : set ioport res     17         - CONF_AUTO_SET_IO    : set ioport resources (->resource[0,1])
 18         - CONF_AUTO_SET_IOMEM : set first iome     18         - CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2])
 19                                                    19 
 20 * pcmcia_request_configuration -> pcmcia_enabl     20 * pcmcia_request_configuration -> pcmcia_enable_device (as of 2.6.36)
 21    pcmcia_request_configuration() got renamed      21    pcmcia_request_configuration() got renamed to pcmcia_enable_device(),
 22    as it mirrors pcmcia_disable_device(). Conf     22    as it mirrors pcmcia_disable_device(). Configuration settings are now
 23    stored in struct pcmcia_device, e.g. in the     23    stored in struct pcmcia_device, e.g. in the fields config_flags,
 24    config_index, config_base, vpp.                 24    config_index, config_base, vpp.
 25                                                    25 
 26 * pcmcia_request_window changes (as of 2.6.36)     26 * pcmcia_request_window changes (as of 2.6.36)
 27    Instead of win_req_t, drivers are now reque     27    Instead of win_req_t, drivers are now requested to fill out
 28    `struct pcmcia_device *p_dev->resource[2,3,     28    `struct pcmcia_device *p_dev->resource[2,3,4,5]` for up to four ioport
 29    ranges. After a call to pcmcia_request_wind     29    ranges. After a call to pcmcia_request_window(), the regions found there
 30    are reserved and may be used immediately --     30    are reserved and may be used immediately -- until pcmcia_release_window()
 31    is called.                                      31    is called.
 32                                                    32 
 33 * pcmcia_request_io changes (as of 2.6.36)         33 * pcmcia_request_io changes (as of 2.6.36)
 34    Instead of io_req_t, drivers are now reques     34    Instead of io_req_t, drivers are now requested to fill out
 35    `struct pcmcia_device *p_dev->resource[0,1]     35    `struct pcmcia_device *p_dev->resource[0,1]` for up to two ioport
 36    ranges. After a call to pcmcia_request_io()     36    ranges. After a call to pcmcia_request_io(), the ports found there
 37    are reserved, after calling pcmcia_request_     37    are reserved, after calling pcmcia_request_configuration(), they may
 38    be used.                                        38    be used.
 39                                                    39 
 40 * No dev_info_t, no cs_types.h (as of 2.6.36)      40 * No dev_info_t, no cs_types.h (as of 2.6.36)
 41    dev_info_t and a few other typedefs are rem     41    dev_info_t and a few other typedefs are removed. No longer use them
 42    in PCMCIA device drivers. Also, do not incl     42    in PCMCIA device drivers. Also, do not include pcmcia/cs_types.h, as
 43    this file is gone.                              43    this file is gone.
 44                                                    44 
 45 * No dev_node_t (as of 2.6.35)                     45 * No dev_node_t (as of 2.6.35)
 46    There is no more need to fill out a "dev_no     46    There is no more need to fill out a "dev_node_t" structure.
 47                                                    47 
 48 * New IRQ request rules (as of 2.6.35)             48 * New IRQ request rules (as of 2.6.35)
 49    Instead of the old pcmcia_request_irq() int     49    Instead of the old pcmcia_request_irq() interface, drivers may now
 50    choose between:                                 50    choose between:
 51                                                    51 
 52    - calling request_irq/free_irq directly. Us     52    - calling request_irq/free_irq directly. Use the IRQ from `*p_dev->irq`.
 53    - use pcmcia_request_irq(p_dev, handler_t);     53    - use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will
 54      clean up automatically on calls to pcmcia     54      clean up automatically on calls to pcmcia_disable_device() or
 55      device ejection.                              55      device ejection.
 56                                                    56 
 57 * no cs_error / CS_CHECK / CONFIG_PCMCIA_DEBUG     57 * no cs_error / CS_CHECK / CONFIG_PCMCIA_DEBUG (as of 2.6.33)
 58    Instead of the cs_error() callback or the C     58    Instead of the cs_error() callback or the CS_CHECK() macro, please use
 59    Linux-style checking of return values, and      59    Linux-style checking of return values, and -- if necessary -- debug
 60    messages using "dev_dbg()" or "pr_debug()".     60    messages using "dev_dbg()" or "pr_debug()".
 61                                                    61 
 62 * New CIS tuple access (as of 2.6.33)              62 * New CIS tuple access (as of 2.6.33)
 63    Instead of pcmcia_get_{first,next}_tuple(),     63    Instead of pcmcia_get_{first,next}_tuple(), pcmcia_get_tuple_data() and
 64    pcmcia_parse_tuple(), a driver shall use "p     64    pcmcia_parse_tuple(), a driver shall use "pcmcia_get_tuple()" if it is
 65    only interested in one (raw) tuple, or "pcm     65    only interested in one (raw) tuple, or "pcmcia_loop_tuple()" if it is
 66    interested in all tuples of one type. To de     66    interested in all tuples of one type. To decode the MAC from CISTPL_FUNCE,
 67    a new helper "pcmcia_get_mac_from_cis()" wa     67    a new helper "pcmcia_get_mac_from_cis()" was added.
 68                                                    68 
 69 * New configuration loop helper (as of 2.6.28)     69 * New configuration loop helper (as of 2.6.28)
 70    By calling pcmcia_loop_config(), a driver c     70    By calling pcmcia_loop_config(), a driver can iterate over all available
 71    configuration options. During a driver's pr     71    configuration options. During a driver's probe() phase, one doesn't need
 72    to use pcmcia_get_{first,next}_tuple, pcmci     72    to use pcmcia_get_{first,next}_tuple, pcmcia_get_tuple_data and
 73    pcmcia_parse_tuple directly in most if not      73    pcmcia_parse_tuple directly in most if not all cases.
 74                                                    74 
 75 * New release helper (as of 2.6.17)                75 * New release helper (as of 2.6.17)
 76    Instead of calling pcmcia_release_{configur     76    Instead of calling pcmcia_release_{configuration,io,irq,win}, all that's
 77    necessary now is calling pcmcia_disable_dev     77    necessary now is calling pcmcia_disable_device. As there is no valid
 78    reason left to call pcmcia_release_io and p     78    reason left to call pcmcia_release_io and pcmcia_release_irq, the
 79    exports for them were removed.                  79    exports for them were removed.
 80                                                    80 
 81 * Unify detach and REMOVAL event code, as well     81 * Unify detach and REMOVAL event code, as well as attach and INSERTION
 82   code (as of 2.6.16)::                            82   code (as of 2.6.16)::
 83                                                    83 
 84        void (*remove)          (struct pcmcia_     84        void (*remove)          (struct pcmcia_device *dev);
 85        int (*probe)            (struct pcmcia_     85        int (*probe)            (struct pcmcia_device *dev);
 86                                                    86 
 87 * Move suspend, resume and reset out of event      87 * Move suspend, resume and reset out of event handler (as of 2.6.16)::
 88                                                    88 
 89        int (*suspend)          (struct pcmcia_     89        int (*suspend)          (struct pcmcia_device *dev);
 90        int (*resume)           (struct pcmcia_     90        int (*resume)           (struct pcmcia_device *dev);
 91                                                    91 
 92   should be initialized in struct pcmcia_drive     92   should be initialized in struct pcmcia_driver, and handle
 93   (SUSPEND == RESET_PHYSICAL) and (RESUME == C     93   (SUSPEND == RESET_PHYSICAL) and (RESUME == CARD_RESET) events
 94                                                    94 
 95 * event handler initialization in struct pcmci     95 * event handler initialization in struct pcmcia_driver (as of 2.6.13)
 96    The event handler is notified of all events     96    The event handler is notified of all events, and must be initialized
 97    as the event() callback in the driver's str     97    as the event() callback in the driver's struct pcmcia_driver.
 98                                                    98 
 99 * pcmcia/version.h should not be used (as of 2     99 * pcmcia/version.h should not be used (as of 2.6.13)
100    This file will be removed eventually.          100    This file will be removed eventually.
101                                                   101 
102 * in-kernel device<->driver matching (as of 2.    102 * in-kernel device<->driver matching (as of 2.6.13)
103    PCMCIA devices and their correct drivers ca    103    PCMCIA devices and their correct drivers can now be matched in
104    kernelspace. See 'devicetable.txt' for deta    104    kernelspace. See 'devicetable.txt' for details.
105                                                   105 
106 * Device model integration (as of 2.6.11)         106 * Device model integration (as of 2.6.11)
107    A struct pcmcia_device is registered with t    107    A struct pcmcia_device is registered with the device model core,
108    and can be used (e.g. for SET_NETDEV_DEV) b    108    and can be used (e.g. for SET_NETDEV_DEV) by using
109    handle_to_dev(client_handle_t * handle).       109    handle_to_dev(client_handle_t * handle).
110                                                   110 
111 * Convert internal I/O port addresses to unsig    111 * Convert internal I/O port addresses to unsigned int (as of 2.6.11)
112    ioaddr_t should be replaced by unsigned int    112    ioaddr_t should be replaced by unsigned int in PCMCIA card drivers.
113                                                   113 
114 * irq_mask and irq_list parameters (as of 2.6.    114 * irq_mask and irq_list parameters (as of 2.6.11)
115    The irq_mask and irq_list parameters should    115    The irq_mask and irq_list parameters should no longer be used in
116    PCMCIA card drivers. Instead, it is the job    116    PCMCIA card drivers. Instead, it is the job of the PCMCIA core to
117    determine which IRQ should be used. Therefo    117    determine which IRQ should be used. Therefore, link->irq.IRQInfo2
118    is ignored.                                    118    is ignored.
119                                                   119 
120 * client->PendingEvents is gone (as of 2.6.11)    120 * client->PendingEvents is gone (as of 2.6.11)
121    client->PendingEvents is no longer availabl    121    client->PendingEvents is no longer available.
122                                                   122 
123 * client->Attributes are gone (as of 2.6.11)      123 * client->Attributes are gone (as of 2.6.11)
124    client->Attributes is unused, therefore it     124    client->Attributes is unused, therefore it is removed from all
125    PCMCIA card drivers                            125    PCMCIA card drivers
126                                                   126 
127 * core functions no longer available (as of 2.    127 * core functions no longer available (as of 2.6.11)
128    The following functions have been removed f    128    The following functions have been removed from the kernel source
129    because they are unused by all in-kernel dr    129    because they are unused by all in-kernel drivers, and no external
130    driver was reported to rely on them::          130    driver was reported to rely on them::
131                                                   131 
132         pcmcia_get_first_region()                 132         pcmcia_get_first_region()
133         pcmcia_get_next_region()                  133         pcmcia_get_next_region()
134         pcmcia_modify_window()                    134         pcmcia_modify_window()
135         pcmcia_set_event_mask()                   135         pcmcia_set_event_mask()
136         pcmcia_get_first_window()                 136         pcmcia_get_first_window()
137         pcmcia_get_next_window()                  137         pcmcia_get_next_window()
138                                                   138 
139 * device list iteration upon module removal (a    139 * device list iteration upon module removal (as of 2.6.10)
140    It is no longer necessary to iterate on the    140    It is no longer necessary to iterate on the driver's internal
141    client list and call the ->detach() functio    141    client list and call the ->detach() function upon module removal.
142                                                   142 
143 * Resource management. (as of 2.6.8)              143 * Resource management. (as of 2.6.8)
144    Although the PCMCIA subsystem will allocate    144    Although the PCMCIA subsystem will allocate resources for cards,
145    it no longer marks these resources busy. Th    145    it no longer marks these resources busy. This means that driver
146    authors are now responsible for claiming yo    146    authors are now responsible for claiming your resources as per
147    other drivers in Linux. You should use requ    147    other drivers in Linux. You should use request_region() to mark
148    your IO regions in-use, and request_mem_reg    148    your IO regions in-use, and request_mem_region() to mark your
149    memory regions in-use. The name argument sh    149    memory regions in-use. The name argument should be a pointer to
150    your driver name. Eg, for pcnet_cs, name sh    150    your driver name. Eg, for pcnet_cs, name should point to the
151    string "pcnet_cs".                             151    string "pcnet_cs".
152                                                   152 
153 * CardServices is gone                            153 * CardServices is gone
154   CardServices() in 2.4 is just a big switch s    154   CardServices() in 2.4 is just a big switch statement to call various
155   services.  In 2.6, all of those entry points    155   services.  In 2.6, all of those entry points are exported and called
156   directly (except for pcmcia_report_error(),     156   directly (except for pcmcia_report_error(), just use cs_error() instead).
157                                                   157 
158 * struct pcmcia_driver                            158 * struct pcmcia_driver
159   You need to use struct pcmcia_driver and pcm    159   You need to use struct pcmcia_driver and pcmcia_{un,}register_driver
160   instead of {un,}register_pccard_driver          160   instead of {un,}register_pccard_driver
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php