Go to:
Gentoo Home
Documentation
Forums
Lists
Bugs
Planet
Store
Wiki
Get Gentoo!
Gentoo's Bugzilla – Attachment 110270 Details for
Bug 163366
net-dialup/fritzcapi-2.6.43 does not compile on >=linux-2.6.19
Home
|
New
–
[Ex]
|
Browse
|
Search
|
Privacy Policy
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
[x]
|
Forgot Password
Login:
[x]
Patch file for pcmcia changed for amd64
2.6.43-fcpcmcia.amd64.patch (text/plain), 17.79 KB, created by
Miroslaw Mieszczak
on 2007-02-15 12:38:35 UTC
(
hide
)
Description:
Patch file for pcmcia changed for amd64
Filename:
MIME Type:
Creator:
Miroslaw Mieszczak
Created:
2007-02-15 12:38:35 UTC
Size:
17.79 KB
patch
obsolete
>diff -ur usr.orig/src/kernel-modules/fritzcapi/fritz.pcmcia/src/driver.h usr/src/kernel-modules/fritzcapi/fritz.pcmcia/src/driver.h >--- usr.orig/src/kernel-modules/fritzcapi/fritz.pcmcia/src/driver.h 2005-07-07 00:00:00.000000000 +0200 >+++ usr/src/kernel-modules/fritzcapi/fritz.pcmcia/src/driver.h 2007-01-25 11:39:11.000000000 +0100 >@@ -23,7 +23,6 @@ > #ifndef __have_driver_h__ > #define __have_driver_h__ > >-#include <linux/config.h> > #include <linux/skbuff.h> > #include <linux/capi.h> > #include <linux/list.h> >diff -ur usr.orig/src/kernel-modules/fritzcapi/fritz.pcmcia/src/fcpcmcia_cs.c usr/src/kernel-modules/fritzcapi/fritz.pcmcia/src/fcpcmcia_cs.c >--- usr.orig/src/kernel-modules/fritzcapi/fritz.pcmcia/src/fcpcmcia_cs.c 2006-01-30 17:09:05.000000000 +0100 >+++ usr/src/kernel-modules/fritzcapi/fritz.pcmcia/src/fcpcmcia_cs.c 2007-02-05 21:43:14.000000000 +0100 >@@ -46,7 +46,6 @@ > #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10) > #define PCMCIA_IRQ_INFO2 > #endif >-#define NEW_PCMCIA_DRV > > /*====================================================================*/ > MODULE_LICENSE("GPL"); >@@ -111,13 +110,9 @@ > handler. > */ > >-static void cs_config(dev_link_t *); >-static void cs_release(dev_link_t *); >-#ifdef NEW_PCMCIA_DRV >-static void cs_detach(struct pcmcia_device *p_dev); >-static int cs_attach(struct pcmcia_device *p_dev); >-#else >-static int cs_event(event_t event, int priority, event_callback_args_t *); >+static int cs_config(struct pcmcia_device *link); >+static void cs_release(struct pcmcia_device *link); >+ > > /* > The attach() and detach() entry points are used to create and destroy >@@ -125,48 +120,33 @@ > needed to manage one actual PCMCIA card. > */ > >-static dev_link_t * cs_attach(void); >-static void cs_detach(dev_link_t *); >-/* >- The dev_info variable is the "key" that is used to match up this >- device driver with appropriate cards, through the card configuration >- database. >-*/ >+static void cs_detach(struct pcmcia_device *p_dev); > >-static dev_info_t dev_info = "fcpcmcia_cs"; > > /* > A linked list of "instances" of the skeleton device. Each actual > PCMCIA card corresponds to one device instance, and is described >- by one dev_link_t structure (defined in ds.h). >+ by one struct pcmcia_device structure (defined in ds.h). > > You may not want to use a linked list for this -- for example, the >- memory card driver uses an array of dev_link_t pointers, where minor >+ memory card driver uses an array of struct pcmcia_device pointers, where minor > device numbers are used to derive the corresponding array index. > */ > >-static dev_link_t *dev_list = NULL; > >-#endif > /* >- A dev_link_t structure has fields for most things that are needed >- to keep track of a socket, but there will usually be some device >- specific information that also needs to be kept track of. The >- 'priv' pointer in a dev_link_t structure can be used to point to >- a device-specific private data structure, like this. >- > A driver needs to provide a dev_node_t structure for each device > on a card. In some cases, there is only one device per card (for > example, ethernet cards, modems). In other cases, there may be > many actual or logical devices (SCSI adapters, memory cards with > multiple partitions). The dev_node_t structures need to be kept >- in a linked list starting at the 'dev' field of a dev_link_t >+ in a linked list starting at the 'dev' field of a struct pcmcia_device > structure. We allocate them in the card's private data structure, > because they generally can't be allocated dynamically. > */ > > typedef struct local_info_t { >- dev_node_t node; >+ dev_node_t node; > } local_info_t; > > /*====================================================================== >@@ -181,101 +161,52 @@ > > ======================================================================*/ > >-#ifdef NEW_PCMCIA_DRV >-static int cs_attach(struct pcmcia_device *p_dev) >+static int cs_probe(struct pcmcia_device *p_dev) > { >-#else >-static dev_link_t *cs_attach(void) >-{ >- client_reg_t client_reg; >- int ret; >-#endif >- dev_link_t *link; >- local_info_t *local; >+ local_info_t *local; > #if defined (PCMCIA_IRQ_INFO2) >- int i; >+ int i; > #endif > >- NOTE("Attaching device...\n"); >+ NOTE("Attaching device...\n"); > >- /* Initialize the dev_link_t structure */ >- link = kmalloc(sizeof(struct dev_link_t), GFP_KERNEL); >- if (!link) >- goto err; >- memset(link, 0, sizeof(struct dev_link_t)); >- >- /* The io structure describes IO port mapping */ >- link->io.NumPorts1 = 16; >- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8; >- link->io.NumPorts2 = 0; >+ /* The io structure describes IO port mapping */ >+ p_dev->io.NumPorts1 = 16; >+ p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8; >+ p_dev->io.NumPorts2 = 0; > >- /* Interrupt setup */ >- link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; >+ /* Interrupt setup */ >+ p_dev->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING|IRQ_FIRST_SHARED; > > #if defined (PCMCIA_IRQ_INFO2) >- link->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID; >- if (irq_list_count > 0) { >- for (i = 0; (i < irq_list_count) && (irq_list[i] > 0); i++) >- link->irq.IRQInfo2 |= 1 << irq_list[i]; >- } else { >- for (i = 0; (i < irq_list_count) && (default_irq_list[i] > 0); i++) >- link->irq.IRQInfo2 |= 1 << default_irq_list[i]; >- } >+ p_dev->irq.IRQInfo1 = IRQ_INFO2_VALID|IRQ_LEVEL_ID; >+ if (irq_list_count > 0) { >+ for (i = 0; (i < irq_list_count) && (irq_list[i] > 0); i++) >+ p_dev->irq.IRQInfo2 |= 1 << irq_list[i]; >+ } else { >+ for (i = 0; (i < irq_list_count) && (default_irq_list[i] > 0); i++) >+ p_dev->irq.IRQInfo2 |= 1 << default_irq_list[i]; >+ } > #else >- link->irq.IRQInfo1 = IRQ_LEVEL_ID; >+ p_dev->irq.IRQInfo1 = IRQ_LEVEL_ID; > #endif > >- /* General socket configuration */ >- link->conf.Attributes = CONF_ENABLE_IRQ; >- link->conf.Vcc = 50; >- link->conf.IntType = INT_MEMORY_AND_IO; >- link->conf.ConfigIndex = 1; >- link->conf.Present = PRESENT_OPTION; >- >- /* Allocate space for private device-specific data */ >- local = kmalloc(sizeof(local_info_t), GFP_KERNEL); >- if (!local) >- goto err_kfree; >- memset(local, 0, sizeof(local_info_t)); >- link->priv = local; >- >-#ifdef NEW_PCMCIA_DRV >- link->handle = p_dev; >- p_dev->instance = link; >- link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; >- cs_config(link); >- return 0; >-#else >- /* Register with Card Services */ >- link->next = dev_list; >- dev_list = link; >- client_reg.dev_info = &dev_info; >-#if 0 >- client_reg.Attributes = INFO_IO_CLIENT | INFO_CARD_SHARE; >- client_reg.EventMask = >- CS_EVENT_CARD_INSERTION | CS_EVENT_CARD_REMOVAL | >- CS_EVENT_RESET_PHYSICAL | CS_EVENT_CARD_RESET | >- CS_EVENT_PM_SUSPEND | CS_EVENT_PM_RESUME; >- client_reg.event_handler = &cs_event; >-#endif >- client_reg.Version = 0x0210; >- client_reg.event_callback_args.client_data = link; >- ret = pcmcia_register_client(&link->handle, &client_reg); >- if (ret != 0) { >- cs_error(link->handle, RegisterClient, ret); >- cs_detach(link); >- goto err; >- } >- return link; >-#endif >- err_kfree: >- kfree(link); >- err: >-#ifdef NEW_PCMCIA_DRV >- return -EINVAL; >-#else >- return NULL; >-#endif >+ /* General socket configuration */ >+ p_dev->conf.Attributes = CONF_ENABLE_IRQ; >+ p_dev->conf.IntType = INT_MEMORY_AND_IO; >+ p_dev->conf.ConfigIndex = 1; >+ p_dev->conf.Present = PRESENT_OPTION; >+ >+ /* Allocate space for private device-specific data */ >+ local = kmalloc(sizeof(local_info_t), GFP_KERNEL); >+ if (!local) >+ goto err_kfree; >+ memset(local, 0, sizeof(local_info_t)); >+ p_dev->priv = local; >+ return cs_config(p_dev); >+ >+err_kfree: >+ return -ENOMEM; > } /* cs_attach */ > > /*====================================================================== >@@ -286,47 +217,12 @@ > when the device is released. > > ======================================================================*/ >-#ifdef NEW_PCMCIA_DRV >-static void cs_detach(struct pcmcia_device *p_dev) >-{ >- dev_link_t *link = dev_to_instance(p_dev); > >- if (link->state & DEV_CONFIG) >- cs_release(link); >-#else >-static void cs_detach(dev_link_t *link) >+static void cs_detach(struct pcmcia_device *link) > { >- dev_link_t **linkp; >- >- NOTE("Detaching device...\n"); >- >- /* Locate device structure */ >- for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next) >- if (*linkp == link) break; >- if (*linkp == NULL) >- return; >- >- /* >- If the device is currently configured and active, we won't >- actually delete it yet. Instead, it is marked so that when >- the release() function is called, that will trigger a proper >- detach(). >- */ >- if (link->state & DEV_CONFIG) { >- link->state |= DEV_STALE_LINK; >- return; >- } >- >- /* Break the link with Card Services */ >- if (link->handle) >- pcmcia_deregister_client(link->handle); >- >- /* Unlink device structure, free pieces */ >- *linkp = link->next; >-#endif >- kfree(link->priv); >- kfree(link); >-} /* cs_detach */ >+ cs_release(link); >+ kfree(link->priv); >+} > > /*====================================================================== > >@@ -336,14 +232,15 @@ > > ======================================================================*/ > >-static int get_tuple(client_handle_t handle, tuple_t *tuple, cisparse_t *parse) >+static int get_tuple(struct pcmcia_device *handle, tuple_t *tuple, >+ cisparse_t *parse) > { > int i = pcmcia_get_tuple_data(handle, tuple); > if (i != CS_SUCCESS) return i; > return pcmcia_parse_tuple(handle, tuple, parse); > } > >-static int first_tuple(client_handle_t handle, tuple_t *tuple, >+static int first_tuple(struct pcmcia_device *handle, tuple_t *tuple, > cisparse_t *parse) > { > int i = pcmcia_get_first_tuple(handle, tuple); >@@ -351,7 +248,7 @@ > return get_tuple(handle, tuple, parse); > } > >-static int next_tuple(client_handle_t handle, tuple_t *tuple, >+static int next_tuple(struct pcmcia_device *handle, tuple_t *tuple, > cisparse_t *parse) > { > int i = pcmcia_get_next_tuple(handle, tuple); >@@ -359,9 +256,8 @@ > return get_tuple(handle, tuple, parse); > } > >-static void cs_config(dev_link_t *link) >+static int cs_config(struct pcmcia_device *link) > { >- client_handle_t handle; > tuple_t tuple; > cisparse_t parse; > cistpl_cftable_entry_t *cf = &parse.cftable_entry; >@@ -369,7 +265,6 @@ > int i; > u_char buf[64]; > char devname[128]; >- handle = link->handle; > dev = link->priv; > > /* >@@ -378,25 +273,21 @@ > */ > do { > tuple.DesiredTuple = CISTPL_CONFIG; >- i = pcmcia_get_first_tuple(handle, &tuple); >+ i = pcmcia_get_first_tuple(link, &tuple); > if (i != CS_SUCCESS) break; > tuple.TupleData = buf; > tuple.TupleDataMax = 64; > tuple.TupleOffset = 0; >- i = pcmcia_get_tuple_data(handle, &tuple); >+ i = pcmcia_get_tuple_data(link, &tuple); > if (i != CS_SUCCESS) break; >- i = pcmcia_parse_tuple(handle, &tuple, &parse); >+ i = pcmcia_parse_tuple(link, &tuple, &parse); > if (i != CS_SUCCESS) break; > link->conf.ConfigBase = parse.config.base; > } while (0); > if (i != CS_SUCCESS) { >- cs_error(link->handle, ParseTuple, i); >- link->state &= ~DEV_CONFIG_PENDING; >- return; >+ cs_error(link, ParseTuple, i); >+ return -ENODEV; > } >- >- /* Configure card */ >- link->state |= DEV_CONFIG; > > do { > >@@ -407,7 +298,7 @@ > tuple.DesiredTuple = CISTPL_VERS_1; > > devname[0] = 0; >- if( !first_tuple(handle, &tuple, &parse) && parse.version_1.ns > 1 ) { >+ if( !first_tuple(link, &tuple, &parse) && parse.version_1.ns > 1 ) { > strlcpy(devname,parse.version_1.str + parse.version_1.ofs[1], > sizeof(devname)); > } >@@ -418,7 +309,7 @@ > tuple.TupleOffset = 0; tuple.TupleDataMax = 255; > tuple.Attributes = 0; > tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY; >- i = first_tuple(handle, &tuple, &parse); >+ i = first_tuple(link, &tuple, &parse); > while (i == CS_SUCCESS) { > if (cf->io.nwin > 0) { > link->conf.ConfigIndex = cf->index; >@@ -428,36 +319,36 @@ > NOTE("testing i/o %#x-%#x\n", > link->io.BasePort1, > link->io.BasePort1+link->io.NumPorts1-1); >- i = pcmcia_request_io(link->handle, &link->io); >+ i = pcmcia_request_io(link, &link->io); > if (i == CS_SUCCESS) goto found_port; > } >- i = next_tuple(handle, &tuple, &parse); >+ i = next_tuple(link, &tuple, &parse); > } > > found_port: > if (i != CS_SUCCESS) { >- cs_error(link->handle, RequestIO, i); >+ cs_error(link, RequestIO, i); > break; > } > > /* > * allocate an interrupt line > */ >- i = pcmcia_request_irq(link->handle, &link->irq); >+ i = pcmcia_request_irq(link, &link->irq); > if (i != CS_SUCCESS) { >- cs_error(link->handle, RequestIRQ, i); >- pcmcia_release_io(link->handle, &link->io); >+ cs_error(link, RequestIRQ, i); >+ /* undo */ >+ pcmcia_disable_device(link); > break; > } > > /* > * configure the PCMCIA socket > */ >- i = pcmcia_request_configuration(link->handle, &link->conf); >+ i = pcmcia_request_configuration(link, &link->conf); > if (i != CS_SUCCESS) { >- cs_error(link->handle, RequestConfiguration, i); >- pcmcia_release_io(link->handle, &link->io); >- pcmcia_release_irq(link->handle, &link->irq); >+ cs_error(link, RequestConfiguration, i); >+ pcmcia_disable_device(link); > break; > } > >@@ -469,14 +360,13 @@ > strcpy(dev->node.dev_name, "A1"); > dev->node.major = 64; > dev->node.minor = 0; >- link->dev = &dev->node; >- >- link->state &= ~DEV_CONFIG_PENDING; >+ >+ link->dev_node = &dev->node; > /* If any step failed, release any partially configured state */ > if (i != 0) { > ERROR("Failed to setup controller, releasing link...\n"); > cs_release(link); >- return; >+ return -ENODEV; > } > NOTE("Ready to call card driver for '%s'...\n", devname); > >@@ -488,7 +378,7 @@ > link->irq.AssignedIRQ > ); > cs_release(link); >- return; >+ return -ENODEV; > } > dev->node.minor = i; > >@@ -498,6 +388,7 @@ > link->io.BasePort1, > link->irq.AssignedIRQ > ); >+ return 0; > } /* cs_config */ > > /*====================================================================== >@@ -508,96 +399,13 @@ > > ======================================================================*/ > >-static void cs_release(dev_link_t *link) >+static void cs_release(struct pcmcia_device *link) > { > fcpcmcia_delcard(link->io.BasePort1, link->irq.AssignedIRQ); > >- /* Unlink the device chain */ >- link->dev = NULL; >- >- /* Don't bother checking to see if these succeed or not */ >- pcmcia_release_configuration(link->handle); >- pcmcia_release_io(link->handle, &link->io); >- pcmcia_release_irq(link->handle, &link->irq); >- link->state &= ~DEV_CONFIG; >- >-#ifndef NEW_PCMCIA_DRV >- if (link->state & DEV_STALE_LINK) >- cs_detach(link); >-#endif >+ pcmcia_disable_device(link); > } /* cs_release */ > >-#ifdef NEW_PCMCIA_DRV >-static int cs_suspend(struct pcmcia_device *dev) >-{ >- dev_link_t *link = dev_to_instance(dev); >- >- link->state |= DEV_SUSPEND; >- if (link->state & DEV_CONFIG) >- pcmcia_release_configuration(link->handle); >- >- return 0; >-} >- >-static int cs_resume(struct pcmcia_device *dev) >-{ >- dev_link_t *link = dev_to_instance(dev); >- >- link->state &= ~DEV_SUSPEND; >- if (link->state & DEV_CONFIG) >- pcmcia_request_configuration(link->handle, &link->conf); >- >- return 0; >-} >-#else >-/*====================================================================== >- >- The card status event handler. Mostly, this schedules other >- stuff to run after an event is received. A CARD_REMOVAL event >- also sets some flags to discourage the net drivers from trying >- to talk to the card any more. >- >- When a CARD_REMOVAL event is received, we immediately set a flag >- to block future accesses to this device. All the functions that >- actually access the device should check this flag to make sure >- the card is still present. >- >-======================================================================*/ >- >-static int cs_event(event_t event, int priority, event_callback_args_t *args) >-{ >- dev_link_t *link = args->client_data; >- >- LOG("Card service event: %x\n", event); >- switch (event) { >- case CS_EVENT_CARD_REMOVAL: >- link->state &= ~DEV_PRESENT; >- if (link->state & DEV_CONFIG) >- cs_release(link); >- break; >- case CS_EVENT_CARD_INSERTION: >- link->state |= DEV_PRESENT | DEV_CONFIG_PENDING; >- cs_config(link); >- break; >- case CS_EVENT_PM_SUSPEND: >- link->state |= DEV_SUSPEND; >- /* Fall through... */ >- case CS_EVENT_RESET_PHYSICAL: >- if (link->state & DEV_CONFIG) >- pcmcia_release_configuration(link->handle); >- break; >- case CS_EVENT_PM_RESUME: >- link->state &= ~DEV_SUSPEND; >- /* Fall through... */ >- case CS_EVENT_CARD_RESET: >- if (link->state & DEV_CONFIG) >- pcmcia_request_configuration(link->handle, &link->conf); >- break; >- } >- return 0; >-} /* cs_event */ >-#endif >- > static struct pcmcia_device_id fcpcmcia_ids[] = { > PCMCIA_DEVICE_PROD_ID12("AVM", "ISDN A", 0x95d42008, 0xadc9d4bb), > PCMCIA_DEVICE_PROD_ID12("ISDN", "CARD", 0x8d9761c8, 0x01c5aa7b), >@@ -610,17 +418,10 @@ > .drv = { > .name = "fcpcmcia_cs", > }, >-#ifdef NEW_PCMCIA_DRV >- .probe = cs_attach, >- .remove = cs_detach, >- .suspend= cs_suspend, >- .resume = cs_resume, >-#else >- .attach = cs_attach, >- .detach = cs_detach, >- .event = cs_event, >-#endif >- .id_table = fcpcmcia_ids, >+ .probe = cs_probe, >+ .remove = cs_detach, >+ .id_table = fcpcmcia_ids, >+ > }; > > static int __init cs_init(void) >@@ -631,6 +432,7 @@ > static void __exit cs_exit(void) > { > pcmcia_unregister_driver(&cs_driver); >+ > } > > module_init(cs_init); >diff -ur usr.orig/src/kernel-modules/fritzcapi/fritz.pcmcia/src/main.c usr/src/kernel-modules/fritzcapi/fritz.pcmcia/src/main.c >--- usr.orig/src/kernel-modules/fritzcapi/fritz.pcmcia/src/main.c 2005-07-07 00:00:00.000000000 +0200 >+++ usr/src/kernel-modules/fritzcapi/fritz.pcmcia/src/main.c 2007-01-25 11:39:11.000000000 +0100 >@@ -22,7 +22,6 @@ > > #include <stdarg.h> > #include <asm/uaccess.h> >-#include <linux/config.h> > #include <linux/version.h> > #include <linux/kernel.h> > #include <linux/module.h>
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Raw
Actions:
View
Attachments on
bug 163366
:
107853
|
107855
|
109271
|
109279
|
110155
|
110267
|
110268
| 110270 |
110271
|
110273