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