summaryrefslogtreecommitdiff
path: root/Documentation/pnp.txt
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-06-27 14:56:51 -0300
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>2019-07-15 11:03:02 -0300
commit4f4cfa6c560c93ba180c30675cf845e1597de44c (patch)
tree0bbe2ec9e6ef62ed2a347504dda50c6bdbe43703 /Documentation/pnp.txt
parentda82c92f1150f66afabf78d2c85ef9ac18dc6d38 (diff)
docs: admin-guide: add a series of orphaned documents
There are lots of documents that belong to the admin-guide but are on random places (most under Documentation root dir). Move them to the admin guide. Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> Acked-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Diffstat (limited to 'Documentation/pnp.txt')
-rw-r--r--Documentation/pnp.txt292
1 files changed, 0 insertions, 292 deletions
diff --git a/Documentation/pnp.txt b/Documentation/pnp.txt
deleted file mode 100644
index bab2d10631f0..000000000000
--- a/Documentation/pnp.txt
+++ /dev/null
@@ -1,292 +0,0 @@
-=================================
-Linux Plug and Play Documentation
-=================================
-
-:Author: Adam Belay <ambx1@neo.rr.com>
-:Last updated: Oct. 16, 2002
-
-
-Overview
---------
-
-Plug and Play provides a means of detecting and setting resources for legacy or
-otherwise unconfigurable devices. The Linux Plug and Play Layer provides these
-services to compatible drivers.
-
-
-The User Interface
-------------------
-
-The Linux Plug and Play user interface provides a means to activate PnP devices
-for legacy and user level drivers that do not support Linux Plug and Play. The
-user interface is integrated into sysfs.
-
-In addition to the standard sysfs file the following are created in each
-device's directory:
-- id - displays a list of support EISA IDs
-- options - displays possible resource configurations
-- resources - displays currently allocated resources and allows resource changes
-
-activating a device
-^^^^^^^^^^^^^^^^^^^
-
-::
-
- # echo "auto" > resources
-
-this will invoke the automatic resource config system to activate the device
-
-manually activating a device
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-::
-
- # echo "manual <depnum> <mode>" > resources
-
- <depnum> - the configuration number
- <mode> - static or dynamic
- static = for next boot
- dynamic = now
-
-disabling a device
-^^^^^^^^^^^^^^^^^^
-
-::
-
- # echo "disable" > resources
-
-
-EXAMPLE:
-
-Suppose you need to activate the floppy disk controller.
-
-1. change to the proper directory, in my case it is
- /driver/bus/pnp/devices/00:0f::
-
- # cd /driver/bus/pnp/devices/00:0f
- # cat name
- PC standard floppy disk controller
-
-2. check if the device is already active::
-
- # cat resources
- DISABLED
-
- - Notice the string "DISABLED". This means the device is not active.
-
-3. check the device's possible configurations (optional)::
-
- # cat options
- Dependent: 01 - Priority acceptable
- port 0x3f0-0x3f0, align 0x7, size 0x6, 16-bit address decoding
- port 0x3f7-0x3f7, align 0x0, size 0x1, 16-bit address decoding
- irq 6
- dma 2 8-bit compatible
- Dependent: 02 - Priority acceptable
- port 0x370-0x370, align 0x7, size 0x6, 16-bit address decoding
- port 0x377-0x377, align 0x0, size 0x1, 16-bit address decoding
- irq 6
- dma 2 8-bit compatible
-
-4. now activate the device::
-
- # echo "auto" > resources
-
-5. finally check if the device is active::
-
- # cat resources
- io 0x3f0-0x3f5
- io 0x3f7-0x3f7
- irq 6
- dma 2
-
-also there are a series of kernel parameters::
-
- pnp_reserve_irq=irq1[,irq2] ....
- pnp_reserve_dma=dma1[,dma2] ....
- pnp_reserve_io=io1,size1[,io2,size2] ....
- pnp_reserve_mem=mem1,size1[,mem2,size2] ....
-
-
-
-The Unified Plug and Play Layer
--------------------------------
-
-All Plug and Play drivers, protocols, and services meet at a central location
-called the Plug and Play Layer. This layer is responsible for the exchange of
-information between PnP drivers and PnP protocols. Thus it automatically
-forwards commands to the proper protocol. This makes writing PnP drivers
-significantly easier.
-
-The following functions are available from the Plug and Play Layer:
-
-pnp_get_protocol
- increments the number of uses by one
-
-pnp_put_protocol
- deincrements the number of uses by one
-
-pnp_register_protocol
- use this to register a new PnP protocol
-
-pnp_unregister_protocol
- use this function to remove a PnP protocol from the Plug and Play Layer
-
-pnp_register_driver
- adds a PnP driver to the Plug and Play Layer
-
- this includes driver model integration
- returns zero for success or a negative error number for failure; count
- calls to the .add() method if you need to know how many devices bind to
- the driver
-
-pnp_unregister_driver
- removes a PnP driver from the Plug and Play Layer
-
-
-
-Plug and Play Protocols
------------------------
-
-This section contains information for PnP protocol developers.
-
-The following Protocols are currently available in the computing world:
-
-- PNPBIOS:
- used for system devices such as serial and parallel ports.
-- ISAPNP:
- provides PnP support for the ISA bus
-- ACPI:
- among its many uses, ACPI provides information about system level
- devices.
-
-It is meant to replace the PNPBIOS. It is not currently supported by Linux
-Plug and Play but it is planned to be in the near future.
-
-
-Requirements for a Linux PnP protocol:
-1. the protocol must use EISA IDs
-2. the protocol must inform the PnP Layer of a device's current configuration
-
-- the ability to set resources is optional but preferred.
-
-The following are PnP protocol related functions:
-
-pnp_add_device
- use this function to add a PnP device to the PnP layer
-
- only call this function when all wanted values are set in the pnp_dev
- structure
-
-pnp_init_device
- call this to initialize the PnP structure
-
-pnp_remove_device
- call this to remove a device from the Plug and Play Layer.
- it will fail if the device is still in use.
- automatically will free mem used by the device and related structures
-
-pnp_add_id
- adds an EISA ID to the list of supported IDs for the specified device
-
-For more information consult the source of a protocol such as
-/drivers/pnp/pnpbios/core.c.
-
-
-
-Linux Plug and Play Drivers
----------------------------
-
-This section contains information for Linux PnP driver developers.
-
-The New Way
-^^^^^^^^^^^
-
-1. first make a list of supported EISA IDS
-
- ex::
-
- static const struct pnp_id pnp_dev_table[] = {
- /* Standard LPT Printer Port */
- {.id = "PNP0400", .driver_data = 0},
- /* ECP Printer Port */
- {.id = "PNP0401", .driver_data = 0},
- {.id = ""}
- };
-
- Please note that the character 'X' can be used as a wild card in the function
- portion (last four characters).
-
- ex::
-
- /* Unknown PnP modems */
- { "PNPCXXX", UNKNOWN_DEV },
-
- Supported PnP card IDs can optionally be defined.
- ex::
-
- static const struct pnp_id pnp_card_table[] = {
- { "ANYDEVS", 0 },
- { "", 0 }
- };
-
-2. Optionally define probe and remove functions. It may make sense not to
- define these functions if the driver already has a reliable method of detecting
- the resources, such as the parport_pc driver.
-
- ex::
-
- static int
- serial_pnp_probe(struct pnp_dev * dev, const struct pnp_id *card_id, const
- struct pnp_id *dev_id)
- {
- . . .
-
- ex::
-
- static void serial_pnp_remove(struct pnp_dev * dev)
- {
- . . .
-
- consult /drivers/serial/8250_pnp.c for more information.
-
-3. create a driver structure
-
- ex::
-
- static struct pnp_driver serial_pnp_driver = {
- .name = "serial",
- .card_id_table = pnp_card_table,
- .id_table = pnp_dev_table,
- .probe = serial_pnp_probe,
- .remove = serial_pnp_remove,
- };
-
- * name and id_table cannot be NULL.
-
-4. register the driver
-
- ex::
-
- static int __init serial8250_pnp_init(void)
- {
- return pnp_register_driver(&serial_pnp_driver);
- }
-
-The Old Way
-^^^^^^^^^^^
-
-A series of compatibility functions have been created to make it easy to convert
-ISAPNP drivers. They should serve as a temporary solution only.
-
-They are as follows::
-
- struct pnp_card *pnp_find_card(unsigned short vendor,
- unsigned short device,
- struct pnp_card *from)
-
- struct pnp_dev *pnp_find_dev(struct pnp_card *card,
- unsigned short vendor,
- unsigned short function,
- struct pnp_dev *from)
-