2002-08-28 01:33:46

by Adam Belay

[permalink] [raw]
Subject: [PATCH] 2.5.32 port PnP BIOS to the driver model RESEND #1

As we discussed earlier, I converted the PnP BIOS driver to the driver
model Please advice on any changes you would like. I look forward to
hearing from you.

Thanks,
-Adam





The following are potential changes for future pnpbios patches listed in
order of priority. Let me know if you support them.

1.) Add pnpbios specific interfaces to the driver model, this includes
resource management and escd.
2.) add pnpbios dev id list support, similiar to the devlist found in pci
3.) remove dependancy on struct pci_dev and create a pnpbios specific
dev structure
4.) split the pnpbios files into smaller more manageable files as well
as other cleanups
5.) port some drivers to use the pnpbios driver if available. Should
this include the pci driver?


Attachments:
pnpbios1.patch.gz (2.47 kB)

2002-08-28 05:10:19

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] 2.5.32 port PnP BIOS to the driver model RESEND #1

On Tue, Aug 27, 2002 at 09:40:54PM +0000, Adam Belay wrote:
> As we discussed earlier, I converted the PnP BIOS driver to the driver
> model Please advice on any changes you would like. I look forward to
> hearing from you.

Hi,

I don't have a box with a PnP BIOS (well, I don't think I do...), so
could you send the relevant portions of the driverfs tree, showing the
new devices that you add for this bus?

Also a few minor comments on the patch:
- pnpbios_bus_type should probably be made static, along with
alloc_pnpbios_root().
- You don't check for out of memory in alloc_pnpbios_root() when
you call kmalloc().
- why are you modifying the set_limit() parameters at the top of
your patch? That doesn't seem relevant to the driverfs
changes.
- in pnpbios_bus_match(), don't you have to check the value of
the call to match_device() to make sure you have a match?
That would keep pnpbios_device_probe() from being called for
every device like it looks your patch causes.
- the pnpbios_device_probe() call should return a negative error
number if the device does not match, or some error happens.
Returning 1 does not mean success. You also need to save off
the device specific info somehow in your structure, so that
the pnpbios_device_remove() can remove it. Or am I just
missing something here?

And is there some way you can inline the patch? It wasn't that big...

thanks,

greg k-h

2002-08-30 00:28:45

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] 2.5.32 port PnP BIOS to the driver model RESEND #1



[email protected] wrote:

>
>Hi,
>
>I don't have a box with a PnP BIOS (well, I don't think I do...), so
>could you send the relevant portions of the driverfs tree, showing the
>new devices that you add for this bus?
>
Just out of curiosity what architecture are you using, is it one that
doesn't support PnP BIOS?

Here they are:
/driverfs/device/pnp
/driverfs/device/pnp/01
/driverfs/device/pnp/02
/driverfs/device/pnp/03
etc.
/driverfs/bus/pnp
/driverfs/bus/pnp/devices
etc.
/driverfs/bus/pnp/drivers
etc.

>
>
>Also a few minor comments on the patch:
> - pnpbios_bus_type should probably be made static, along with
> alloc_pnpbios_root().
>
alloc_pnpbios_root is now static. I'm going to leave bus_type as it is
because I want it open to other files at least for now.

>
> - You don't check for out of memory in alloc_pnpbios_root() when
> you call kmalloc().
>
Thanks for pointing it out, fixed it.

>
> - why are you modifying the set_limit() parameters at the top of
> your patch? That doesn't seem relevant to the driverfs
> changes.
>
The pnpbios driver will not compile without these changes, it was broken
a few versions back. I also made some improvements to insert_device.

>
> - in pnpbios_bus_match(), don't you have to check the value of
> the call to match_device() to make sure you have a match?
> That would keep pnpbios_device_probe() from being called for
> every device like it looks your patch causes.
>
I did some serious restructuring here and in pnpbios_device_probe. Also
I made it a bit more like the one used by pci. Hopefully it's all right
now.

>
> - the pnpbios_device_probe() call should return a negative error
> number if the device does not match, or some error happens.
> Returning 1 does not mean success. You also need to save off
> the device specific info somehow in your structure, so that
> the pnpbios_device_remove() can remove it. Or am I just
> missing something here?
>
pnpbios_device_probe now returns a negative number on failure. I'm
creating a more flexible pnpbios specific device data structure that can
be used instead of pci_dev in my next patch. I should be able to clean
some of this up once I do that. I'll take care of the device specific
info then.

>
>
>And is there some way you can inline the patch? It wasn't that big...
>
Yep, I'm getting a new isp and email address soon, then I'll be able to
use Mutt instead of Mozzila. It turns out netscape mail doesn't really
use imap like it appeared to, so it's incompatible. For now this is the
only safe way I can send patches.

>
>
>thanks,
>
>greg k-h
>
Thank you for reviewing my patch. I appreciate it. If there are any
other issues please let me know.

thanks,
Adam


Attachments:
pnpbios1-rev1.patch.gz (2.64 kB)

2002-08-30 05:24:55

by Greg KH

[permalink] [raw]
Subject: Re: [PATCH] 2.5.32 port PnP BIOS to the driver model RESEND #1

On Thu, Aug 29, 2002 at 08:36:01PM +0000, Adam Belay wrote:
>
>
> [email protected] wrote:
>
> >
> >Hi,
> >
> >I don't have a box with a PnP BIOS (well, I don't think I do...), so
> >could you send the relevant portions of the driverfs tree, showing the
> >new devices that you add for this bus?
> >
> Just out of curiosity what architecture are you using, is it one that
> doesn't support PnP BIOS?

i386, with PnP BIOS support turned off :)

I haven't tried enabling this before, what kind of devices does it
enable?

> Here they are:
> /driverfs/device/pnp
> /driverfs/device/pnp/01
> /driverfs/device/pnp/02
> /driverfs/device/pnp/03
> etc.
> /driverfs/bus/pnp
> /driverfs/bus/pnp/devices
> etc.
> /driverfs/bus/pnp/drivers
> etc.

But what are these devices? Can you run 'tree' on this so as to
visualize the structure better?

> >Also a few minor comments on the patch:
> > - pnpbios_bus_type should probably be made static, along with
> > alloc_pnpbios_root().
> >
> alloc_pnpbios_root is now static. I'm going to leave bus_type as it is
> because I want it open to other files at least for now.

Why? I don't think there's a need for any other code to need to point
to it. If in the future it's needed, you can always export it :)

> > - in pnpbios_bus_match(), don't you have to check the value of
> > the call to match_device() to make sure you have a match?
> > That would keep pnpbios_device_probe() from being called for
> > every device like it looks your patch causes.
> >
> I did some serious restructuring here and in pnpbios_device_probe. Also
> I made it a bit more like the one used by pci. Hopefully it's all right
> now.

Wrong placement of your {} in the while statement :)
You also might want to not hard code the "7" in the memcmp, but use the
size of the smaller field there, incase things change in the future.

> > - the pnpbios_device_probe() call should return a negative error
> > number if the device does not match, or some error happens.
> > Returning 1 does not mean success. You also need to save off
> > the device specific info somehow in your structure, so that
> > the pnpbios_device_remove() can remove it. Or am I just
> > missing something here?
> >
> pnpbios_device_probe now returns a negative number on failure. I'm
> creating a more flexible pnpbios specific device data structure that can
> be used instead of pci_dev in my next patch. I should be able to clean
> some of this up once I do that. I'll take care of the device specific
> info then.

But it still looks like you aren't saving off the needed information in
the dev.driver_data structure. Or am I missing something?

thanks,

greg k-h

2002-08-30 18:40:49

by Adam Belay

[permalink] [raw]
Subject: Re: [PATCH] 2.5.32 port PnP BIOS to the driver model RESEND #1



[email protected] wrote

>
>i386, with PnP BIOS support turned off :)
>
>I haven't tried enabling this before, what kind of devices does it
>enable?
>
It mainly controls system devices that aren't shown by the currently
supported buses. These include devices ranging from the pc speaker to
the monitor. I encourage you to try it out. It allows the user to
change the resources used by these devices and provides information for
drivers. It also can be used to enable devices that were disabled by
the BIOS. Here's a list of supported devices. I hope to incorporate
this list into the pnpbios driver in the future.

ID range Category
-------- -------------
PNP0xxx System devices
PNP8xxx Network adapters
PNPAxxx SCSI, proprietary CD adapters
PNPBxxx Sound, video capture, multimedia
PNPCxxx - Dxxx Modems

The following device ID is provided only for compatibility
with earlier device ID lists:

Device ID Description
-------- -------------
PNP0802 Microsoft Sound System-compatible device
(obsolete; use PNPB0xx instead)

---------------------------------------------------------------------------
Device ID Description
-------- -------------
***** System Devices - PNP0xxx **************************
--Interrupt Controllers--
PNP0000 AT Interrupt Controller
PNP0001 EISA Interrupt Controller
PNP0002 MCA Interrupt Controller
PNP0003 APIC
PNP0004 Cyrix SLiC MP interrupt controller

--Timers--
PNP0100 AT Timer
PNP0101 EISA Timer
PNP0102 MCA Timer

--DMA--
PNP0200 AT DMA Controller
PNP0201 EISA DMA Controller
PNP0202 MCA DMA Controller

--Keyboards--
PNP0300 IBM PC/XT keyboard controller (83-key)
PNP0301 IBM PC/AT keyboard controller (86-key)
PNP0302 IBM PC/XT keyboard controller (84-key)
PNP0303 IBM Enhanced (101/102-key, PS/2 mouse support)
PNP0304 Olivetti Keyboard (83-key)
PNP0305 Olivetti Keyboard (102-key)
PNP0306 Olivetti Keyboard (86-key)
PNP0307 Microsoft Windows(R) Keyboard
PNP0308 General Input Device Emulation Interface (GIDEI) legacy
PNP0309 Olivetti Keyboard (A101/102 key)
PNP030A AT&T 302 keyboard
PNP030B Reserved by Microsoft
PNP0320 Japanese 106-key keyboard A01
PNP0321 Japanese 101-key keyboard
PNP0322 Japanese AX keyboard
PNP0323 Japanese 106-key keyboard 002/003
PNP0324 Japanese 106-key keyboard 001
PNP0325 Japanese Toshiba Desktop keyboard
PNP0326 Japanese Toshiba Laptop keyboard
PNP0327 Japanese Toshiba Notebook keyboard
PNP0340 Korean 84-key keyboard
PNP0341 Korean 86-key keyboard
PNP0342 Korean Enhanced keyboard
PNP0343 Korean Enhanced keyboard 101b
PNP0343 Korean Enhanced keyboard 101c
PNP0344 Korean Enhanced keyboard 103

--Parallel Devices--
PNP0400 Standard LPT printer port
PNP0401 ECP printer port

--Serial Devices--
PNP0500 Standard PC COM port
PNP0501 16550A-compatible COM port
PNP0502 Multiport serial device (non-intelligent 16550)
PNP0510 Generic IRDA-compatible device
PNP0511 Generic IRDA-compatible device

--Disk Controllers--
PNP0600 Generic ESDI/IDE/ATA compatible hard disk controller
PNP0601 Plus Hardcard II
PNP0602 Plus Hardcard IIXL/EZ
PNP0603 Generic IDE supporting Microsoft Device Bay Specification
PNP0700 PC standard floppy disk controller
PNP0701 Standard floppy controller supporting MS Device Bay Spec

--Compatibility with early device ID list--
PNP0802 Microsoft Sound System compatible device (obsolete, use
PNPB0xx instead)
--Display Adapters--
PNP0900 VGA Compatible
PNP0901 Video Seven VRAM/VRAM II/1024i
PNP0902 8514/A Compatible
PNP0903 Trident VGA
PNP0904 Cirrus Logic Laptop VGA
PNP0905 Cirrus Logic VGA
PNP0906 Tseng ET4000
PNP0907 Western Digital VGA
PNP0908 Western Digital Laptop VGA
PNP0909 S3 Inc. 911/924
PNP090A ATI Ultra Pro/Plus (Mach 32)
PNP090B ATI Ultra (Mach 8)
PNP090C XGA Compatible
PNP090D ATI VGA Wonder
PNP090E Weitek P9000 Graphics Adapter
PNP090F Oak Technology VGA
PNP0910 Compaq QVision
PNP0911 XGA/2
PNP0912 Tseng Labs W32/W32i/W32p
PNP0913 S3 Inc. 801/928/964
PNP0914 Cirrus Logic 5429/5434 (memory mapped)
PNP0915 Compaq Advanced VGA (AVGA)
PNP0916 ATI Ultra Pro Turbo (Mach64)
PNP0917 Reserved by Microsoft
PNP0918 Matrox MGA
PNP0919 Compaq QVision 2000
PNP091A Tseng W128
PNP0930 Chips & Technologies Super VGA
PNP0931 Chips & Technologies Accelerator
PNP0940 NCR 77c22e Super VGA
PNP0941 NCR 77c32blt
PNP09FF Plug and Play Monitors (VESA DDC)

--Peripheral Buses--
PNP0A00 ISA Bus
PNP0A01 EISA Bus
PNP0A02 MCA Bus
PNP0A03 PCI Bus
PNP0A04 VESA/VL Bus
PNP0A05 Generic ACPI Bus
PNP0A06 Generic ACPI Extended-IO Bus (EIO bus)


-- Real Time Clock, BIOS, System board devices--
PNP0800 AT-style speaker sound
PNP0B00 AT Real-Time Clock
PNP0C00 Plug and Play BIOS (only created by the root enumerator)
PNP0C01 System Board
PNP0C02 General ID for reserving resources required by Plug and Play
motherboard registers. (Not specific to a particular device.)
PNP0C03 Plug and Play BIOS Event Notification Interrupt
PNP0C04 Math Coprocessor
PNP0C05 APM BIOS (Version independent)
PNP0C06 Reserved for identification of early Plug and Play
BIOS implementation.
PNP0C07 Reserved for identification of early Plug and Play
BIOS implementation.
PNP0C08 ACPI system board hardware
PNP0C09 ACPI Embedded Controller
PNP0C0A ACPI Control Method Battery
PNP0C0B ACPI Fan
PNP0C0C ACPI power button device
PNP0C0D ACPI lid device
PNP0C0E ACPI sleep button device
PNP0C0F PCI interrupt link device
PNP0C10 ACPI system indicator device
PNP0C11 ACPI thermal zone
PNP0C12 Device Bay Controller
PNP0C13 Plug and Play BIOS (used when ACPI mode cannot be used)

--PCMCIA Controller Chipsets--
PNP0E00 Intel 82365-Compatible PCMCIA Controller
PNP0E01 Cirrus Logic CL-PD6720 PCMCIA Controller
PNP0E02 VLSI VL82C146 PCMCIA Controller
PNP0E03 Intel 82365-compatible CardBus controller

--Mice--
PNP0F00 Microsoft Bus Mouse
PNP0F01 Microsoft Serial Mouse
PNP0F02 Microsoft InPort Mouse
PNP0F03 Microsoft PS/2-style Mouse
PNP0F04 Mouse Systems Mouse
PNP0F05 Mouse Systems 3-Button Mouse (COM2)
PNP0F06 Genius Mouse (COM1)
PNP0F07 Genius Mouse (COM2)
PNP0F08 Logitech Serial Mouse
PNP0F09 Microsoft BallPoint Serial Mouse
PNP0F0A Microsoft Plug and Play Mouse
PNP0F0B Microsoft Plug and Play BallPoint Mouse
PNP0F0C Microsoft-compatible Serial Mouse
PNP0F0D Microsoft-compatible InPort-compatible Mouse
PNP0F0E Microsoft-compatible PS/2-style Mouse
PNP0F0F Microsoft-compatible Serial BallPoint-compatible Mouse
PNP0F10 Texas Instruments QuickPort Mouse
PNP0F11 Microsoft-compatible Bus Mouse
PNP0F12 Logitech PS/2-style Mouse
PNP0F13 PS/2 Port for PS/2-style Mice
PNP0F14 Microsoft Kids Mouse
PNP0F15 Logitech bus mouse
PNP0F16 Logitech SWIFT device
PNP0F17 Logitech-compatible serial mouse
PNP0F18 Logitech-compatible bus mouse
PNP0F19 Logitech-compatible PS/2-style Mouse
PNP0F1A Logitech-compatible SWIFT Device
PNP0F1B HP Omnibook Mouse
PNP0F1C Compaq LTE Trackball PS/2-style Mouse
PNP0F1D Compaq LTE Trackball Serial Mouse
PNP0F1E Microsoft Kids Trackball Mouse
PNP0F1F Reserved by Microsoft Input Device Group
PNP0F20 Reserved by Microsoft Input Device Group
PNP0F21 Reserved by Microsoft Input Device Group
PNP0F22 Reserved by Microsoft Input Device Group
PNP0F23 Reserved by Microsoft Input Device Group
PNP0FFF Reserved by Microsoft Systems

***** Network Adapters - PNP8xxx ***********************
PNP8001 Novell/Anthem NE3200
PNP8004 Compaq NE3200
PNP8006 Intel EtherExpress/32
PNP8008 HP EtherTwist EISA LAN Adapter/32 (HP27248A)
PNP8065 Ungermann-Bass NIUps or NIUps/EOTP
PNP8072 DEC (DE211) EtherWorks MC/TP
PNP8073 DEC (DE212) EtherWorks MC/TP_BNC
PNP8078 DCA 10 Mb MCA
PNP8074 HP MC LAN Adapter/16 TP (PC27246)
PNP80c9 IBM Token Ring
PNP80ca IBM Token Ring II
PNP80cb IBM Token Ring II/Short
PNP80cc IBM Token Ring 4/16Mbs
PNP80d3 Novell/Anthem NE1000
PNP80d4 Novell/Anthem NE2000
PNP80d5 NE1000 Compatible
PNP80d6 NE2000 Compatible
PNP80d7 Novell/Anthem NE1500T
PNP80d8 Novell/Anthem NE2100
PNP80dd SMC ARCNETPC
PNP80de SMC ARCNET PC100, PC200
PNP80df SMC ARCNET PC110, PC210, PC250
PNP80e0 SMC ARCNET PC130/E
PNP80e1 SMC ARCNET PC120, PC220, PC260
PNP80e2 SMC ARCNET PC270/E
PNP80e5 SMC ARCNET PC600W, PC650W
PNP80e7 DEC DEPCA
PNP80e8 DEC (DE100) EtherWorks LC
PNP80e9 DEC (DE200) EtherWorks Turbo
PNP80ea DEC (DE101) EtherWorks LC/TP
PNP80eb DEC (DE201) EtherWorks Turbo/TP
PNP80ec DEC (DE202) EtherWorks Turbo/TP_BNC
PNP80ed DEC (DE102) EtherWorks LC/TP_BNC
PNP80ee DEC EE101 (Built-In)
PNP80ef DECpc 433 WS (Built-In)
PNP80f1 3Com EtherLink Plus
PNP80f3 3Com EtherLink II or IITP (8 or 16-bit)
PNP80f4 3Com TokenLink
PNP80f6 3Com EtherLink 16
PNP80f7 3Com EtherLink III
PNP80f8 3Com Generic Etherlink Plug and Play Device
PNP80fb Thomas Conrad TC6045
PNP80fc Thomas Conrad TC6042
PNP80fd Thomas Conrad TC6142
PNP80fe Thomas Conrad TC6145
PNP80ff Thomas Conrad TC6242
PNP8100 Thomas Conrad TC6245
PNP8105 DCA 10 MB
PNP8106 DCA 10 MB Fiber Optic
PNP8107 DCA 10 MB Twisted Pair
PNP8113 Racal NI6510
PNP811C Ungermann-Bass NIUpc
PNP8120 Ungermann-Bass NIUpc/EOTP
PNP8123 SMC StarCard PLUS (WD/8003S)
PNP8124 SMC StarCard PLUS With On Board Hub (WD/8003SH)
PNP8125 SMC EtherCard PLUS (WD/8003E)
PNP8126 SMC EtherCard PLUS With Boot ROM Socket (WD/8003EBT)
PNP8127 SMC EtherCard PLUS With Boot ROM Socket (WD/8003EB)
PNP8128 SMC EtherCard PLUS TP (WD/8003WT)
PNP812a SMC EtherCard PLUS 16 With Boot ROM Socket (WD/8013EBT)
PNP812d Intel EtherExpress 16 or 16TP
PNP812f Intel TokenExpress 16/4
PNP8130 Intel TokenExpress MCA 16/4
PNP8132 Intel EtherExpress 16 (MCA)
PNP8137 Artisoft AE-1
PNP8138 Artisoft AE-2 or AE-3
PNP8141 Amplicard AC 210/XT
PNP8142 Amplicard AC 210/AT
PNP814b Everex SpeedLink /PC16 (EV2027)
PNP8155 HP PC LAN Adapter/8 TP (HP27245)
PNP8156 HP PC LAN Adapter/16 TP (HP27247A)
PNP8157 HP PC LAN Adapter/8 TL (HP27250)
PNP8158 HP PC LAN Adapter/16 TP Plus (HP27247B)
PNP8159 HP PC LAN Adapter/16 TL Plus (HP27252)
PNP815f National Semiconductor Ethernode *16AT
PNP8160 National Semiconductor AT/LANTIC EtherNODE 16-AT3
PNP816a NCR Token-Ring 4 Mbs ISA
PNP816d NCR Token-Ring 16/4 Mbs ISA
PNP8191 Olicom 16/4 Token-Ring Adapter
PNP81c3 SMC EtherCard PLUS Elite (WD/8003EP)
PNP81c4 SMC EtherCard PLUS 10T (WD/8003W)
PNP81c5 SMC EtherCard PLUS Elite 16 (WD/8013EP)
PNP81c6 SMC EtherCard PLUS Elite 16T (WD/8013W)
PNP81c7 SMC EtherCard PLUS Elite 16 Combo (WD/8013EW or 8013EWC)
PNP81c8 SMC EtherElite Ultra 16
PNP81e4 Pure Data PDI9025-32 (Token Ring)
PNP81e6 Pure Data PDI508+ (ArcNet)
PNP81e7 Pure Data PDI516+ (ArcNet)
PNP81eb Proteon Token Ring (P1390)
PNP81ec Proteon Token Ring (P1392)
PNP81ed Proteon ISA Token Ring (1340)
PNP81ee Proteon ISA Token Ring (1342)
PNP81ef Proteon ISA Token Ring (1346)
PNP81f0 Proteon ISA Token Ring (1347)
PNP81ff Cabletron E2000 Series DNI
PNP8200 Cabletron E2100 Series DNI
PNP8209 Zenith Data Systems Z-Note
PNP820a Zenith Data Systems NE2000-Compatible
PNP8213 Xircom Pocket Ethernet II
PNP8214 Xircom Pocket Ethernet I
PNP821d RadiSys EXM-10
PNP8227 SMC 3000 Series
PNP8228 SMC 91C2 controller
PNP8231 Advanced Micro Devices AM2100/AM1500T
PNP8263 Tulip NCC-16
PNP8277 Exos 105
PNP828A Intel '595 based Ethernet
PNP828B TI2000-style Token Ring
PNP828C AMD PCNet Family cards
PNP828D AMD PCNet32 (VL version)
PNP8294 IrDA Infrared NDIS driver (Microsoft-supplied)
PNP82bd IBM PCMCIA-NIC
PNP82C2 Xircom CE10
PNP82C3 Xircom CEM2
PNP8321 DEC Ethernet (All Types)
PNP8323 SMC EtherCard (All Types except 8013/A)
PNP8324 ARCNET Compatible
PNP8326 Thomas Conrad (All Arcnet Types)
PNP8327 IBM Token Ring (All Types)
PNP8385 Remote Network Access Driver
PNP8387 RNA Point-to-point Protocol Driver
PNP8388 Reserved for Microsoft Networking components
PNP8389 Peer IrLAN infrared driver (Microsoft-supplied)
PNP8390 Generic network adapter

***** SCSI, Proprietary CD Adapters - PNPAxxx **********
PNPA002 Future Domain 16-700 compatible controller
PNPA003 Panasonic proprietary CD-ROM adapter (SBPro/SB16)
PNPA01B Trantor 128 SCSI Controller
PNPA01D Trantor T160 SCSI Controller
PNPA01E Trantor T338 Parallel SCSI controller
PNPA01F Trantor T348 Parallel SCSI controller
PNPA020 Trantor Media Vision SCSI controller
PNPA022 Always IN-2000 SCSI controller
PNPA02B Sony proprietary CD-ROM controller
PNPA02D Trantor T13b 8-bit SCSI controller
PNPA02F Trantor T358 Parallel SCSI controller
PNPA030 Mitsumi LU-005 Single Speed CD-ROM controller + drive
PNPA031 Mitsumi FX-001 Single Speed CD-ROM controller + drive
PNPA032 Mitsumi FX-001 Double Speed CD-ROM controller + drive

***** Sound/Video-capture, multimedia - PNPBxxx ********
PNPB000 Sound Blaster 1.5 sound device
PNPB001 Sound Blaster 2.0 sound device
PNPB002 Sound Blaster Pro sound device
PNPB003 Sound Blaster 16 sound device
PNPB004 Thunderboard-compatible sound device
PNPB005 Adlib-compatible FM synthesizer device
PNPB006 MPU401 compatible
PNPB007 Microsoft Windows Sound System-compatible sound device
PNPB008 Compaq Business Audio
PNPB009 Plug and Play Microsoft Windows Sound System Device
PNPB00A MediaVision Pro Audio Spectrum
(Trantor SCSI enabled, Thunder Chip Disabled)
PNPB00B MediaVision Pro Audio 3D
PNPB00C MusicQuest MQX-32M
PNPB00D MediaVision Pro Audio Spectrum Basic
(No Trantor SCSI, Thunder Chip Enabled)
PNPB00E MediaVision Pro Audio Spectrum
(Trantor SCSI enabled, Thunder Chip Enabled)
PNPB00F MediaVision Jazz-16 chipset (OEM Versions)
PNPB010 Auravision VxP500 chipset - Orchid Videola
PNPB018 MediaVision Pro Audio Spectrum 8-bit
PNPB019 MediaVision Pro Audio Spectrum Basic
(no Trantor SCSI, Thunder chip Disabled)
PNPB020 Yamaha OPL3-compatible FM synthesizer device
PNPB02F Joystick/Game port

***** Modems - PNPCxxx-Dxxx****************************
PNPC000 Compaq 14400 Modem (TBD)
PNPC001 Compaq 2400/9600 Modem (TBD)

>
>
>
>But what are these devices? Can you run 'tree' on this so as to
>visualize the structure better?
>
Sure. Here's a copy of my tree.

.
|-- bus
| |-- pci
| | |-- devices
| | | |-- 00:00.0 -> ../../../root/pci0/00:00.0
| | | |-- 00:01.0 -> ../../../root/pci0/00:01.0
| | | |-- 00:1e.0 -> ../../../root/pci0/00:1e.0
| | | |-- 00:1f.0 -> ../../../root/pci0/00:1f.0
| | | |-- 00:1f.1 -> ../../../root/pci0/00:1f.1
| | | |-- 00:1f.2 -> ../../../root/pci0/00:1f.2
| | | |-- 00:1f.3 -> ../../../root/pci0/00:1f.3
| | | |-- 01:09.0 -> ../../../root/pci0/00:1e.0/01:09.0
| | | |-- 01:09.1 -> ../../../root/pci0/00:1e.0/01:09.1
| | | |-- 01:0a.0 -> ../../../root/pci0/00:1e.0/01:0a.0
| | | `-- 01:0b.0 -> ../../../root/pci0/00:1e.0/01:0b.0
| | `-- drivers
| | |-- Ensoniq AudioPCI
| | |-- agpgart
| | |-- cardbus
| | |-- e100
| | |-- parport_pc
| | `-- uhci-hcd
| |-- pnp
| | |-- devices
| | | |-- 00 -> ../../../root/pnp/00
| | | |-- 01 -> ../../../root/pnp/01
| | | |-- 02 -> ../../../root/pnp/02
| | | |-- 03 -> ../../../root/pnp/03
| | | |-- 04 -> ../../../root/pnp/04
| | | |-- 05 -> ../../../root/pnp/05
| | | |-- 06 -> ../../../root/pnp/06
| | | |-- 07 -> ../../../root/pnp/07
| | | |-- 08 -> ../../../root/pnp/08
| | | |-- 09 -> ../../../root/pnp/09
| | | |-- 0b -> ../../../root/pnp/0b
| | | |-- 0c -> ../../../root/pnp/0c
| | | |-- 0d -> ../../../root/pnp/0d
| | | |-- 0e -> ../../../root/pnp/0e
| | | |-- 0f -> ../../../root/pnp/0f
| | | |-- 10 -> ../../../root/pnp/10
| | | |-- 11 -> ../../../root/pnp/11
| | | |-- 12 -> ../../../root/pnp/12
| | | `-- 13 -> ../../../root/pnp/13
| | `-- drivers
| |-- scsi
| | |-- devices
| | `-- drivers
| | |-- sd
| | |-- sg
| | `-- sr
| `-- usb
| |-- devices
| | |-- 00:1f.2-0:0 ->
../../../root/pci0/00:1f.2/usb_bus/00:1f.2-0:0
| | `-- 00:1f.2-1:0 ->
../../../root/pci0/00:1f.2/usb_bus/1/00:1f.2-1:0
| `-- drivers
|-- class
| `-- input
| |-- devices
| |-- drivers
| `-- mouse
`-- root
|-- pci0
| |-- 00:00.0
| | |-- irq
| | |-- name
| | |-- power
| | `-- resource
| |-- 00:01.0
| | |-- irq
| | |-- name
| | |-- power
| | `-- resource
| |-- 00:1e.0
| | |-- 01:09.0
| | | |-- irq
| | | |-- name
| | | |-- power
| | | `-- resource
| | |-- 01:09.1
| | | |-- irq
| | | |-- name
| | | |-- power
| | | `-- resource
| | |-- 01:0a.0
| | | |-- irq
| | | |-- name
| | | |-- power
| | | `-- resource
| | |-- 01:0b.0
| | | |-- irq
| | | |-- name
| | | |-- power
| | | `-- resource
| | |-- irq
| | |-- name
| | |-- power
| | `-- resource
| |-- 00:1f.0
| | |-- irq
| | |-- name
| | |-- power
| | `-- resource
| |-- 00:1f.1
| | |-- irq
| | |-- name
| | |-- power
| | `-- resource
| |-- 00:1f.2
| | |-- irq
| | |-- name
| | |-- power
| | |-- resource
| | `-- usb_bus
| | |-- 00:1f.2-0:0
| | | |-- altsetting
| | | |-- name
| | | `-- power
| | |-- 1
| | | |-- 00:1f.2-1:0
| | | | |-- altsetting
| | | | |-- name
| | | | `-- power
| | | |-- configuration
| | | |-- manufacturer
| | | |-- name
| | | |-- power
| | | `-- product
| | |-- configuration
| | |-- manufacturer
| | |-- name
| | |-- power
| | |-- product
| | `-- serial
| |-- 00:1f.3
| | |-- irq
| | |-- name
| | |-- power
| | `-- resource
| |-- name
| `-- power
|-- pnp
| |-- 00
| | |-- name
| | `-- power
| |-- 01
| | |-- name
| | `-- power
| |-- 02
| | |-- name
| | `-- power
| |-- 03
| | |-- name
| | `-- power
| |-- 04
| | |-- name
| | `-- power
| |-- 05
| | |-- name
| | `-- power
| |-- 06
| | |-- name
| | `-- power
| |-- 07
| | |-- name
| | `-- power
| |-- 08
| | |-- name
| | `-- power
| |-- 09
| | |-- name
| | `-- power
| |-- 0b
| | |-- name
| | `-- power
| |-- 0c
| | |-- name
| | `-- power
| |-- 0d
| | |-- name
| | `-- power
| |-- 0e
| | |-- name
| | `-- power
| |-- 0f
| | |-- name
| | `-- power
| |-- 10
| | |-- name
| | `-- power
| |-- 11
| | |-- name
| | `-- power
| |-- 12
| | |-- name
| | `-- power
| |-- 13
| | |-- name
| | `-- power
| |-- name
| `-- power
|-- scsi0
| |-- name
| `-- power
`-- sys
|-- 0020
| |-- name
| `-- power
|-- 0040
| |-- name
| `-- power
|-- 03?0
| |-- name
| `-- power
|-- name
`-- power

101 directories, 113 files


>
>
>>>Also a few minor comments on the patch:
>>> - pnpbios_bus_type should probably be made static, along with
>>> alloc_pnpbios_root().
>>>
>>alloc_pnpbios_root is now static. I'm going to leave bus_type as it is
>>because I want it open to other files at least for now.
>>
>
>Why? I don't think there's a need for any other code to need to point
>to it. If in the future it's needed, you can always export it :)
>
Ok, I'll make it static too.

>
>
>>> - in pnpbios_bus_match(), don't you have to check the value of
>>> the call to match_device() to make sure you have a match?
>>> That would keep pnpbios_device_probe() from being called for
>>> every device like it looks your patch causes.
>>>
>>I did some serious restructuring here and in pnpbios_device_probe. Also
>>I made it a bit more like the one used by pci. Hopefully it's all right
>>now.
>>
>
>Wrong placement of your {} in the while statement :)
>You also might want to not hard code the "7" in the memcmp, but use the
>size of the smaller field there, incase things change in the future.
>
I fixed the {}. :-) The pnpbios driver only supports dev ids with the
length of 7. Any shorter or longer would be considered invalid by the
PNPBIOS Specifications. Therefore it makes sence to force it to use a
length of 7. Look at the devid list I included.

>
>
>>> - the pnpbios_device_probe() call should return a negative error
>>> number if the device does not match, or some error happens.
>>> Returning 1 does not mean success. You also need to save off
>>> the device specific info somehow in your structure, so that
>>> the pnpbios_device_remove() can remove it. Or am I just
>>> missing something here?
>>>
>>pnpbios_device_probe now returns a negative number on failure. I'm
>>creating a more flexible pnpbios specific device data structure that can
>>be used instead of pci_dev in my next patch. I should be able to clean
>>some of this up once I do that. I'll take care of the device specific
>>info then.
>>
>
>But it still looks like you aren't saving off the needed information in
>the dev.driver_data structure. Or am I missing something?
>
Ok, I'll store the info to dev.driver_data for now.

>
>
>thanks,
>
>greg k-h
>
Thanks,
Adam