Jiri Slaby wrote: > sx, convert to pci probing > > convert old pci code to pci probing. > > Cc: <[email protected]> > Signed-off-by: Jiri Slaby <[email protected]> > > --- > commit 56b6b52313a48cbda4c84bd35252337063269d88 > tree 1f32778374ad0eb5d2671cc94674753d1198dbff > parent d8e4a1a052b460b07936030bc99d8d9fe2b4bbf9 > author Jiri Slaby <[email protected]> Sun, 22 Oct 2006 01:51:54 +0200 > committer Jiri Slaby <[email protected]> Sun, 22 Oct 2006 01:51:54 +0200 > > drivers/char/sx.c | 183 > ++++++++++++++++++++++++++++++----------------------- 1 files changed, 105 > insertions(+), 78 deletions(-) > > diff --git a/drivers/char/sx.c b/drivers/char/sx.c > index cf08be7..9b800bd 100644 > --- a/drivers/char/sx.c > +++ b/drivers/char/sx.c > @@ -246,14 +246,6 @@ #ifndef PCI_DEVICE_ID_SPECIALIX_SX_XIO_I > #define PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8 0x2000 > #endif > > -#ifdef CONFIG_PCI > -static struct pci_device_id sx_pci_tbl[] = { > - { PCI_VENDOR_ID_SPECIALIX, PCI_DEVICE_ID_SPECIALIX_SX_XIO_IO8, > PCI_ANY_ID, PCI_ANY_ID }, - { 0 } > -}; > -MODULE_DEVICE_TABLE(pci, sx_pci_tbl); > -#endif /* CONFIG_PCI */ > - > /* Configurable options: > (Don't be too sure that it'll work if you toggle them) */ > > @@ -2373,7 +2365,6 @@ static void __exit sx_release_drivers(vo > func_exit(); > } > > -#ifdef CONFIG_PCI > /******************************************************** > * Setting bit 17 in the CNTRL register of the PLX 9050 * > * chip forces a retry on writes while a read is pending.* > @@ -2404,22 +2395,112 @@ #define CNTRL_REG_GOODVALUE 0x182600 > } > iounmap(rebase); > } > -#endif > > +static int __devinit sx_pci_probe(struct pci_dev *pdev, > + const struct pci_device_id *ent) > +{ > + struct sx_board *board; > + unsigned int i; > + int retval = -EIO; > + > + for (i = 0; i < SX_NBOARDS; i++) > + if (!(boards[i].flags & SX_BOARD_PRESENT)) > + break; > + > + if (i == SX_NBOARDS) > + goto err; > + > + retval = pci_enable_device(pdev); > + if (retval) > + goto err; > + > + board = &boards[i]; I'm rather sure you need some type of locking here. > + > + board->flags &= ~SX_BOARD_TYPE; > + board->flags |= (pdev->subsystem_vendor == 0x200) ? SX_PCI_BOARD : > + SX_CFPCI_BOARD; > + > + /* CF boards use base address 3.... */ > + if (IS_CF_BOARD (board)) > + board->hw_base = pci_resource_start(pdev, 3); > + else > + board->hw_base = pci_resource_start(pdev, 2); > + board->base2 = > + board->base = ioremap(board->hw_base, WINDOW_LEN (board)); > + if (!board->base) { > + dev_err(&pdev->dev, "ioremap failed\n"); > + goto err; > + } pci_iomap() or something? > + > + /* Most of the stuff on the CF board is offset by 0x18000 .... */ > + if (IS_CF_BOARD (board)) > + board->base += 0x18000; > + > + board->irq = pdev->irq; Is this extra copy of the IRQ number needed? > @@ -2585,6 +2611,7 @@ static void __exit sx_exit (void) > struct sx_board *board; > > func_enter(); > + pci_unregister_driver(&sx_pcidriver); > for (i = 0; i < SX_NBOARDS; i++) { > board = &boards[i]; > if (board->flags & SX_BOARD_INITIALIZED) { Locking?
Attachment:
pgpk0z6Eje9Qk.pgp
Description: PGP signature
- Follow-Ups:
- Re: [PATCH 1/5] Char: sx, convert to pci probing
- From: Jiri Slaby <[email protected]>
- Re: [PATCH 1/5] Char: sx, convert to pci probing
- References:
- [PATCH 1/5] Char: sx, convert to pci probing
- From: Jiri Slaby <[email protected]>
- [PATCH 1/5] Char: sx, convert to pci probing
- Prev by Date: HPET : Legacy Route replacement patch.
- Next by Date: Re: incorrect taint of ndiswrapper
- Previous by thread: [PATCH 1/5] Char: sx, convert to pci probing
- Next by thread: Re: [PATCH 1/5] Char: sx, convert to pci probing
- Index(es):