Usphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/pcmcia/driver-changesmodnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/pcmcia/driver-changesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/pcmcia/driver-changesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/pcmcia/driver-changesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/pcmcia/driver-changesmodnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/pcmcia/driver-changesmodnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hDriver changesh]hDriver changes}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/pcmcia/driver-changes.rsthKubh paragraph)}(hIThis file details changes in 2.6 which affect PCMCIA card driver authors:h]hIThis file details changes in 2.6 which affect PCMCIA card driver authors:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(hXpcmcia_loop_config() and autoconfiguration (as of 2.6.36) If `struct pcmcia_device *p_dev->config_flags` is set accordingly, pcmcia_loop_config() now sets up certain configuration values automatically, though the driver may still override the settings in the callback function. The following autoconfiguration options are provided at the moment: - CONF_AUTO_CHECK_VCC : check for matching Vcc - CONF_AUTO_SET_VPP : set Vpp - CONF_AUTO_AUDIO : auto-enable audio line, if required - CONF_AUTO_SET_IO : set ioport resources (->resource[0,1]) - CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2]) h]hdefinition_list)}(hhh]hdefinition_list_item)}(hXpcmcia_loop_config() and autoconfiguration (as of 2.6.36) If `struct pcmcia_device *p_dev->config_flags` is set accordingly, pcmcia_loop_config() now sets up certain configuration values automatically, though the driver may still override the settings in the callback function. The following autoconfiguration options are provided at the moment: - CONF_AUTO_CHECK_VCC : check for matching Vcc - CONF_AUTO_SET_VPP : set Vpp - CONF_AUTO_AUDIO : auto-enable audio line, if required - CONF_AUTO_SET_IO : set ioport resources (->resource[0,1]) - CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2]) h](hterm)}(h9pcmcia_loop_config() and autoconfiguration (as of 2.6.36)h]h9pcmcia_loop_config() and autoconfiguration (as of 2.6.36)}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhubh definition)}(hhh](h)}(hXIf `struct pcmcia_device *p_dev->config_flags` is set accordingly, pcmcia_loop_config() now sets up certain configuration values automatically, though the driver may still override the settings in the callback function. The following autoconfiguration options are provided at the moment:h](hIf }(hhhhhNhNubhtitle_reference)}(h+`struct pcmcia_device *p_dev->config_flags`h]h)struct pcmcia_device *p_dev->config_flags}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhubh is set accordingly, pcmcia_loop_config() now sets up certain configuration values automatically, though the driver may still override the settings in the callback function. The following autoconfiguration options are provided at the moment:}(hhhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubh block_quote)}(hX - CONF_AUTO_CHECK_VCC : check for matching Vcc - CONF_AUTO_SET_VPP : set Vpp - CONF_AUTO_AUDIO : auto-enable audio line, if required - CONF_AUTO_SET_IO : set ioport resources (->resource[0,1]) - CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2]) h]h)}(hhh](h)}(h,CONF_AUTO_CHECK_VCC : check for matching Vcch]h)}(hjh]h,CONF_AUTO_CHECK_VCC : check for matching Vcc}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hCONF_AUTO_SET_VPP : set Vpph]h)}(hj6h]hCONF_AUTO_SET_VPP : set Vpp}(hj8hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj4ubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h9CONF_AUTO_AUDIO : auto-enable audio line, if requiredh]h)}(hjMh]h9CONF_AUTO_AUDIO : auto-enable audio line, if required}(hjOhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjKubah}(h]h ]h"]h$]h&]uh1hhjubh)}(hresource[0,1])h]h)}(hjdh]hresource[0,1])}(hjfhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjbubah}(h]h ]h"]h$]h&]uh1hhjubh)}(h?CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2]) h]h)}(h>CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2])h]h>CONF_AUTO_SET_IOMEM : set first iomem resource (->resource[2])}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjyubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1jhhhKhhubeh}(h]h ]h"]h$]h&]uh1hhhubeh}(h]h ]h"]h$]h&]uh1hhhhKhhubah}(h]h ]h"]h$]h&]uh1hhhubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hX5pcmcia_request_configuration -> pcmcia_enable_device (as of 2.6.36) pcmcia_request_configuration() got renamed to pcmcia_enable_device(), as it mirrors pcmcia_disable_device(). Configuration settings are now stored in struct pcmcia_device, e.g. in the fields config_flags, config_index, config_base, vpp. h]h)}(hhh]h)}(hX1pcmcia_request_configuration -> pcmcia_enable_device (as of 2.6.36) pcmcia_request_configuration() got renamed to pcmcia_enable_device(), as it mirrors pcmcia_disable_device(). Configuration settings are now stored in struct pcmcia_device, e.g. in the fields config_flags, config_index, config_base, vpp. h](h)}(hCpcmcia_request_configuration -> pcmcia_enable_device (as of 2.6.36)h]hCpcmcia_request_configuration -> pcmcia_enable_device (as of 2.6.36)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hhh]h)}(hpcmcia_request_configuration() got renamed to pcmcia_enable_device(), as it mirrors pcmcia_disable_device(). Configuration settings are now stored in struct pcmcia_device, e.g. in the fields config_flags, config_index, config_base, vpp.h]hpcmcia_request_configuration() got renamed to pcmcia_enable_device(), as it mirrors pcmcia_disable_device(). Configuration settings are now stored in struct pcmcia_device, e.g. in the fields config_flags, config_index, config_base, vpp.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hXSpcmcia_request_window changes (as of 2.6.36) Instead of win_req_t, drivers are now requested to fill out `struct pcmcia_device *p_dev->resource[2,3,4,5]` for up to four ioport ranges. After a call to pcmcia_request_window(), the regions found there are reserved and may be used immediately -- until pcmcia_release_window() is called. h]h)}(hhh]h)}(hXNpcmcia_request_window changes (as of 2.6.36) Instead of win_req_t, drivers are now requested to fill out `struct pcmcia_device *p_dev->resource[2,3,4,5]` for up to four ioport ranges. After a call to pcmcia_request_window(), the regions found there are reserved and may be used immediately -- until pcmcia_release_window() is called. h](h)}(h,pcmcia_request_window changes (as of 2.6.36)h]h,pcmcia_request_window changes (as of 2.6.36)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hhh]h)}(hX Instead of win_req_t, drivers are now requested to fill out `struct pcmcia_device *p_dev->resource[2,3,4,5]` for up to four ioport ranges. After a call to pcmcia_request_window(), the regions found there are reserved and may be used immediately -- until pcmcia_release_window() is called.h](hresource[2,3,4,5]`h]h.struct pcmcia_device *p_dev->resource[2,3,4,5]}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjubh for up to four ioport ranges. After a call to pcmcia_request_window(), the regions found there are reserved and may be used immediately -- until pcmcia_release_window() is called.}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hX<pcmcia_request_io changes (as of 2.6.36) Instead of io_req_t, drivers are now requested to fill out `struct pcmcia_device *p_dev->resource[0,1]` for up to two ioport ranges. After a call to pcmcia_request_io(), the ports found there are reserved, after calling pcmcia_request_configuration(), they may be used. h]h)}(hhh]h)}(hX7pcmcia_request_io changes (as of 2.6.36) Instead of io_req_t, drivers are now requested to fill out `struct pcmcia_device *p_dev->resource[0,1]` for up to two ioport ranges. After a call to pcmcia_request_io(), the ports found there are reserved, after calling pcmcia_request_configuration(), they may be used. h](h)}(h(pcmcia_request_io changes (as of 2.6.36)h]h(pcmcia_request_io changes (as of 2.6.36)}(hjXhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK&hjTubh)}(hhh]h)}(hX Instead of io_req_t, drivers are now requested to fill out `struct pcmcia_device *p_dev->resource[0,1]` for up to two ioport ranges. After a call to pcmcia_request_io(), the ports found there are reserved, after calling pcmcia_request_configuration(), they may be used.h](h;Instead of io_req_t, drivers are now requested to fill out }(hjihhhNhNubh)}(h,`struct pcmcia_device *p_dev->resource[0,1]`h]h*struct pcmcia_device *p_dev->resource[0,1]}(hjqhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjiubh for up to two ioport ranges. After a call to pcmcia_request_io(), the ports found there are reserved, after calling pcmcia_request_configuration(), they may be used.}(hjihhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK"hjfubah}(h]h ]h"]h$]h&]uh1hhjTubeh}(h]h ]h"]h$]h&]uh1hhhhK&hjQubah}(h]h ]h"]h$]h&]uh1hhjMubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hNo dev_info_t, no cs_types.h (as of 2.6.36) dev_info_t and a few other typedefs are removed. No longer use them in PCMCIA device drivers. Also, do not include pcmcia/cs_types.h, as this file is gone. h]h)}(hhh]h)}(hNo dev_info_t, no cs_types.h (as of 2.6.36) dev_info_t and a few other typedefs are removed. No longer use them in PCMCIA device drivers. Also, do not include pcmcia/cs_types.h, as this file is gone. h](h)}(h+No dev_info_t, no cs_types.h (as of 2.6.36)h]h+No dev_info_t, no cs_types.h (as of 2.6.36)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK+hjubh)}(hhh]h)}(hdev_info_t and a few other typedefs are removed. No longer use them in PCMCIA device drivers. Also, do not include pcmcia/cs_types.h, as this file is gone.h]hdev_info_t and a few other typedefs are removed. No longer use them in PCMCIA device drivers. Also, do not include pcmcia/cs_types.h, as this file is gone.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK+hjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hZNo dev_node_t (as of 2.6.35) There is no more need to fill out a "dev_node_t" structure. h]h)}(hhh]h)}(hYNo dev_node_t (as of 2.6.35) There is no more need to fill out a "dev_node_t" structure. h](h)}(hNo dev_node_t (as of 2.6.35)h]hNo dev_node_t (as of 2.6.35)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubh)}(hhh]h)}(h;There is no more need to fill out a "dev_node_t" structure.h]h?There is no more need to fill out a “dev_node_t” structure.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK.hjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hX\New IRQ request rules (as of 2.6.35) Instead of the old pcmcia_request_irq() interface, drivers may now choose between: - calling request_irq/free_irq directly. Use the IRQ from `*p_dev->irq`. - use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will clean up automatically on calls to pcmcia_disable_device() or device ejection. h]h)}(hhh]h)}(hXVNew IRQ request rules (as of 2.6.35) Instead of the old pcmcia_request_irq() interface, drivers may now choose between: - calling request_irq/free_irq directly. Use the IRQ from `*p_dev->irq`. - use pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will clean up automatically on calls to pcmcia_disable_device() or device ejection. h](h)}(h$New IRQ request rules (as of 2.6.35)h]h$New IRQ request rules (as of 2.6.35)}(hj0hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK7hj,ubh)}(hhh](h)}(hRInstead of the old pcmcia_request_irq() interface, drivers may now choose between:h]hRInstead of the old pcmcia_request_irq() interface, drivers may now choose between:}(hjAhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK1hj>ubh)}(hhh](h)}(hFcalling request_irq/free_irq directly. Use the IRQ from `*p_dev->irq`.h]h)}(hjTh](h8calling request_irq/free_irq directly. Use the IRQ from }(hjVhhhNhNubh)}(h `*p_dev->irq`h]h *p_dev->irq}(hj]hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjVubh.}(hjVhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK4hjRubah}(h]h ]h"]h$]h&]uh1hhjOubh)}(huse pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will clean up automatically on calls to pcmcia_disable_device() or device ejection. h]h)}(huse pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will clean up automatically on calls to pcmcia_disable_device() or device ejection.h]huse pcmcia_request_irq(p_dev, handler_t); the PCMCIA core will clean up automatically on calls to pcmcia_disable_device() or device ejection.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK5hj{ubah}(h]h ]h"]h$]h&]uh1hhjOubeh}(h]h ]h"]h$]h&]jjuh1hhhhK4hj>ubeh}(h]h ]h"]h$]h&]uh1hhj,ubeh}(h]h ]h"]h$]h&]uh1hhhhK7hj)ubah}(h]h ]h"]h$]h&]uh1hhj%ubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hno cs_error / CS_CHECK / CONFIG_PCMCIA_DEBUG (as of 2.6.33) Instead of the cs_error() callback or the CS_CHECK() macro, please use Linux-style checking of return values, and -- if necessary -- debug messages using "dev_dbg()" or "pr_debug()". h]h)}(hhh]h)}(hno cs_error / CS_CHECK / CONFIG_PCMCIA_DEBUG (as of 2.6.33) Instead of the cs_error() callback or the CS_CHECK() macro, please use Linux-style checking of return values, and -- if necessary -- debug messages using "dev_dbg()" or "pr_debug()". h](h)}(h;no cs_error / CS_CHECK / CONFIG_PCMCIA_DEBUG (as of 2.6.33)h]h;no cs_error / CS_CHECK / CONFIG_PCMCIA_DEBUG (as of 2.6.33)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKdriver matching (as of 2.6.13) PCMCIA devices and their correct drivers can now be matched in kernelspace. See 'devicetable.txt' for details. h]h)}(hhh]h)}(hin-kernel device<->driver matching (as of 2.6.13) PCMCIA devices and their correct drivers can now be matched in kernelspace. See 'devicetable.txt' for details. h](h)}(h1in-kernel device<->driver matching (as of 2.6.13)h]h1in-kernel device<->driver matching (as of 2.6.13)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhjubh)}(hhh]h)}(hnPCMCIA devices and their correct drivers can now be matched in kernelspace. See 'devicetable.txt' for details.h]hrPCMCIA devices and their correct drivers can now be matched in kernelspace. See ‘devicetable.txt’ for details.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKghjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hDevice model integration (as of 2.6.11) A struct pcmcia_device is registered with the device model core, and can be used (e.g. for SET_NETDEV_DEV) by using handle_to_dev(client_handle_t * handle). h]h)}(hhh]h)}(hDevice model integration (as of 2.6.11) A struct pcmcia_device is registered with the device model core, and can be used (e.g. for SET_NETDEV_DEV) by using handle_to_dev(client_handle_t * handle). h](h)}(h'Device model integration (as of 2.6.11)h]h'Device model integration (as of 2.6.11)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKmhjubh)}(hhh]h)}(hA struct pcmcia_device is registered with the device model core, and can be used (e.g. for SET_NETDEV_DEV) by using handle_to_dev(client_handle_t * handle).h]hA struct pcmcia_device is registered with the device model core, and can be used (e.g. for SET_NETDEV_DEV) by using handle_to_dev(client_handle_t * handle).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKmhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hConvert internal I/O port addresses to unsigned int (as of 2.6.11) ioaddr_t should be replaced by unsigned int in PCMCIA card drivers. h]h)}(hhh]h)}(hConvert internal I/O port addresses to unsigned int (as of 2.6.11) ioaddr_t should be replaced by unsigned int in PCMCIA card drivers. h](h)}(hBConvert internal I/O port addresses to unsigned int (as of 2.6.11)h]hBConvert internal I/O port addresses to unsigned int (as of 2.6.11)}(hj*hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphj&ubh)}(hhh]h)}(hCioaddr_t should be replaced by unsigned int in PCMCIA card drivers.h]hCioaddr_t should be replaced by unsigned int in PCMCIA card drivers.}(hj;hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKphj8ubah}(h]h ]h"]h$]h&]uh1hhj&ubeh}(h]h ]h"]h$]h&]uh1hhhhKphj#ubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hXirq_mask and irq_list parameters (as of 2.6.11) The irq_mask and irq_list parameters should no longer be used in PCMCIA card drivers. Instead, it is the job of the PCMCIA core to determine which IRQ should be used. Therefore, link->irq.IRQInfo2 is ignored. h]h)}(hhh]h)}(hXirq_mask and irq_list parameters (as of 2.6.11) The irq_mask and irq_list parameters should no longer be used in PCMCIA card drivers. Instead, it is the job of the PCMCIA core to determine which IRQ should be used. Therefore, link->irq.IRQInfo2 is ignored. h](h)}(h/irq_mask and irq_list parameters (as of 2.6.11)h]h/irq_mask and irq_list parameters (as of 2.6.11)}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKvhjhubh)}(hhh]h)}(hThe irq_mask and irq_list parameters should no longer be used in PCMCIA card drivers. Instead, it is the job of the PCMCIA core to determine which IRQ should be used. Therefore, link->irq.IRQInfo2 is ignored.h]hThe irq_mask and irq_list parameters should no longer be used in PCMCIA card drivers. Instead, it is the job of the PCMCIA core to determine which IRQ should be used. Therefore, link->irq.IRQInfo2 is ignored.}(hj}hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKshjzubah}(h]h ]h"]h$]h&]uh1hhjhubeh}(h]h ]h"]h$]h&]uh1hhhhKvhjeubah}(h]h ]h"]h$]h&]uh1hhjaubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(h\client->PendingEvents is gone (as of 2.6.11) client->PendingEvents is no longer available. h]h)}(hhh]h)}(h[client->PendingEvents is gone (as of 2.6.11) client->PendingEvents is no longer available. h](h)}(h,client->PendingEvents is gone (as of 2.6.11)h]h,client->PendingEvents is gone (as of 2.6.11)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjubh)}(hhh]h)}(h-client->PendingEvents is no longer available.h]h-client->PendingEvents is no longer available.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKyhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKyhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hclient->Attributes are gone (as of 2.6.11) client->Attributes is unused, therefore it is removed from all PCMCIA card drivers h]h)}(hhh]h)}(h~client->Attributes are gone (as of 2.6.11) client->Attributes is unused, therefore it is removed from all PCMCIA card drivers h](h)}(h*client->Attributes are gone (as of 2.6.11)h]h*client->Attributes are gone (as of 2.6.11)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK}hjubh)}(hhh]h)}(hRclient->Attributes is unused, therefore it is removed from all PCMCIA card driversh]hRclient->Attributes is unused, therefore it is removed from all PCMCIA card drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhK}hjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hXcore functions no longer available (as of 2.6.11) The following functions have been removed from the kernel source because they are unused by all in-kernel drivers, and no external driver was reported to rely on them:: pcmcia_get_first_region() pcmcia_get_next_region() pcmcia_modify_window() pcmcia_set_event_mask() pcmcia_get_first_window() pcmcia_get_next_window() h]h)}(hhh]h)}(hXcore functions no longer available (as of 2.6.11) The following functions have been removed from the kernel source because they are unused by all in-kernel drivers, and no external driver was reported to rely on them:: pcmcia_get_first_region() pcmcia_get_next_region() pcmcia_modify_window() pcmcia_set_event_mask() pcmcia_get_first_window() pcmcia_get_next_window() h](h)}(h1core functions no longer available (as of 2.6.11)h]h1core functions no longer available (as of 2.6.11)}(hj2hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj.ubh)}(hhh](h)}(hThe following functions have been removed from the kernel source because they are unused by all in-kernel drivers, and no external driver was reported to rely on them::h]hThe following functions have been removed from the kernel source because they are unused by all in-kernel drivers, and no external driver was reported to rely on them:}(hjChhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj@ubj)}(hpcmcia_get_first_region() pcmcia_get_next_region() pcmcia_modify_window() pcmcia_set_event_mask() pcmcia_get_first_window() pcmcia_get_next_window()h]hpcmcia_get_first_region() pcmcia_get_next_region() pcmcia_modify_window() pcmcia_set_event_mask() pcmcia_get_first_window() pcmcia_get_next_window()}hjQsbah}(h]h ]h"]h$]h&]jjuh1jhhhKhj@ubeh}(h]h ]h"]h$]h&]uh1hhj.ubeh}(h]h ]h"]h$]h&]uh1hhhhKhj+ubah}(h]h ]h"]h$]h&]uh1hhj'ubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hdevice list iteration upon module removal (as of 2.6.10) It is no longer necessary to iterate on the driver's internal client list and call the ->detach() function upon module removal. h]h)}(hhh]h)}(hdevice list iteration upon module removal (as of 2.6.10) It is no longer necessary to iterate on the driver's internal client list and call the ->detach() function upon module removal. h](h)}(h8device list iteration upon module removal (as of 2.6.10)h]h8device list iteration upon module removal (as of 2.6.10)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj~ubh)}(hhh]h)}(hIt is no longer necessary to iterate on the driver's internal client list and call the ->detach() function upon module removal.h]hIt is no longer necessary to iterate on the driver’s internal client list and call the ->detach() function upon module removal.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhj~ubeh}(h]h ]h"]h$]h&]uh1hhhhKhj{ubah}(h]h ]h"]h$]h&]uh1hhjwubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hXResource management. (as of 2.6.8) Although the PCMCIA subsystem will allocate resources for cards, it no longer marks these resources busy. This means that driver authors are now responsible for claiming your resources as per other drivers in Linux. You should use request_region() to mark your IO regions in-use, and request_mem_region() to mark your memory regions in-use. The name argument should be a pointer to your driver name. Eg, for pcnet_cs, name should point to the string "pcnet_cs". h]h)}(hhh]h)}(hXResource management. (as of 2.6.8) Although the PCMCIA subsystem will allocate resources for cards, it no longer marks these resources busy. This means that driver authors are now responsible for claiming your resources as per other drivers in Linux. You should use request_region() to mark your IO regions in-use, and request_mem_region() to mark your memory regions in-use. The name argument should be a pointer to your driver name. Eg, for pcnet_cs, name should point to the string "pcnet_cs". h](h)}(h"Resource management. (as of 2.6.8)h]h"Resource management. (as of 2.6.8)}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubh)}(hhh]h)}(hXAlthough the PCMCIA subsystem will allocate resources for cards, it no longer marks these resources busy. This means that driver authors are now responsible for claiming your resources as per other drivers in Linux. You should use request_region() to mark your IO regions in-use, and request_mem_region() to mark your memory regions in-use. The name argument should be a pointer to your driver name. Eg, for pcnet_cs, name should point to the string "pcnet_cs".h]hXAlthough the PCMCIA subsystem will allocate resources for cards, it no longer marks these resources busy. This means that driver authors are now responsible for claiming your resources as per other drivers in Linux. You should use request_region() to mark your IO regions in-use, and request_mem_region() to mark your memory regions in-use. The name argument should be a pointer to your driver name. Eg, for pcnet_cs, name should point to the string “pcnet_cs”.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubeh}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhjubah}(h]h ]h"]h$]h&]uh1hhhhhhNhNubh)}(hCardServices is gone CardServices() in 2.4 is just a big switch statement to call various services. In 2.6, all of those entry points are exported and called directly (except for pcmcia_report_error(), just use cs_error() instead). h]h)}(hCardServices is gone CardServices() in 2.4 is just a big switch statement to call various services. In 2.6, all of those entry points are exported and called directly (except for pcmcia_report_error(), just use cs_error() instead).h]hCardServices is gone CardServices() in 2.4 is just a big switch statement to call various services. In 2.6, all of those entry points are exported and called directly (except for pcmcia_report_error(), just use cs_error() instead).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(hstruct pcmcia_driver You need to use struct pcmcia_driver and pcmcia_{un,}register_driver instead of {un,}register_pccard_driverh]h)}(hstruct pcmcia_driver You need to use struct pcmcia_driver and pcmcia_{un,}register_driver instead of {un,}register_pccard_driverh]hstruct pcmcia_driver You need to use struct pcmcia_driver and pcmcia_{un,}register_driver instead of {un,}register_pccard_driver}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]j*uh1hhhhKhhhhubeh}(h]driver-changesah ]h"]driver changesah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj]error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}j7j4s nametypes}j7sh}j4hs footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.