Ignore:
Timestamp:
Aug 27, 2007, 7:18:21 PM (18 years ago)
Author:
Brendan Oakley
Message:

Use pnp.h from ALSA 1.0.14 instead

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GPL/trunk/include/linux/pnp.h

    r245 r249  
    11/*
    2  * Linux Plug and Play Support Emulation for OS/2
    3  * This file is part of Uniaud32
    4  * Copyright Netlabs
    5  * Based on code taken from pnp.h in Linux 2.6.22
     2 * Linux Plug and Play Support
    63 * Copyright by Adam Belay <ambx1@neo.rr.com>
    74 *
     5 * Reduced and backported for compatibility reasons for 2.2 and
     6 * 2.4 kernels by Jaroslav Kysela <perex@suse.cz>
     7 *
    88 */
    99
    1010#ifndef _LINUX_PNP_H
    1111#define _LINUX_PNP_H
     12
     13#ifdef __KERNEL__
     14
     15#ifndef TARGET_OS2
     16#include <linux/isapnp.h>
     17#else /* TARGET_OS2 */
     18#include <sound/isapnp.h>
     19#endif /* TARGET_OS2 */
     20#include <linux/list.h>
     21
     22#define PNP_MAX_PORT            8
     23#define PNP_MAX_MEM             4
     24#define PNP_MAX_IRQ             2
     25#define PNP_MAX_DMA             2
     26#define PNP_MAX_DEVICES         8
     27#define PNP_ID_LEN              8
     28
     29#ifndef ISAPNP_ALSA_LOCAL
     30#define isapnp_dev pci_dev
     31#define isapnp_card pci_bus
     32#endif
     33
     34struct pnp_card {
     35        struct isapnp_card p;
     36};
     37
     38struct pnp_dev {
     39        struct isapnp_dev p;
     40        void * driver_data;
     41        struct pm_dev *pm;
     42};
     43
     44static inline void *pnp_get_drvdata (struct pnp_dev *dev)
     45{
     46        return dev->driver_data;
     47}
     48
     49static inline void pnp_set_drvdata (struct pnp_dev *dev, void *data)
     50{
     51        dev->driver_data = data;
     52}
     53
     54/*
     55 * Resource Management
     56 */
     57
     58/* Use these instead of directly reading pnp_dev to get resource information */
     59#define pnp_port_start(dev,bar)   ((dev)->p.resource[(bar)].start)
     60#define pnp_port_end(dev,bar)     ((dev)->p.resource[(bar)].end)
     61#define pnp_port_flags(dev,bar)   ((dev)->p.resource[(bar)].flags)
     62#define pnp_port_valid(dev,bar)   (pnp_port_flags((dev),(bar)) & IORESOURCE_IO)
     63#define pnp_port_len(dev,bar) \
     64        ((pnp_port_start((dev),(bar)) == 0 &&   \
     65          pnp_port_end((dev),(bar)) ==          \
     66          pnp_port_start((dev),(bar))) ? 0 :    \
     67                                                \
     68         (pnp_port_end((dev),(bar)) -           \
     69          pnp_port_start((dev),(bar)) + 1))
     70
     71#define pnp_mem_start(dev,bar)   ((dev)->p.resource[(bar)+8].start)
     72#define pnp_mem_end(dev,bar)     ((dev)->p.resource[(bar)+8].end)
     73#define pnp_mem_flags(dev,bar)   ((dev)->p.resource[(bar)+8].flags)
     74#define pnp_mem_valid(dev,bar)   (pnp_mem_flags((dev),(bar)) & IORESOURCE_MEM)
     75#define pnp_mem_len(dev,bar) \
     76        ((pnp_mem_start((dev),(bar)) == 0 &&    \
     77          pnp_mem_end((dev),(bar)) ==           \
     78          pnp_mem_start((dev),(bar))) ? 0 :     \
     79                                                \
     80         (pnp_mem_end((dev),(bar)) -            \
     81          pnp_mem_start((dev),(bar)) + 1))
     82
     83#define pnp_irq(dev,bar)         ((dev)->p.irq_resource[(bar)].start)
     84#define pnp_irq_flags(dev,bar)   ((dev)->p.irq_resource[(bar)].flags)
     85#define pnp_irq_valid(dev,bar)   (pnp_irq_flags((dev),(bar)) & IORESOURCE_IRQ)
     86
     87#define pnp_dma(dev,bar)         ((dev)->p.dma_resource[(bar)].start)
     88#define pnp_dma_flags(dev,bar)   ((dev)->p.dma_resource[(bar)].flags)
     89#define pnp_dma_valid(dev,bar)   (pnp_dma_flags((dev),(bar)) & IORESOURCE_DMA)
     90
     91#define PNP_PORT_FLAG_16BITADDR ISAPNP_PORT_FLAG_16BITADDR
     92#define PNP_PORT_FLAG_FIXED     ISAPNP_PORT_FLAG_FIXED
     93
     94#define PNP_RES_PRIORITY_PREFERRED      ISAPNP_RES_PRIORITY_PREFERRED
     95#define PNP_RES_PRIORITY_ACCEPTABLE     ISAPNP_RES_PRIORITY_ACCEPTABLE
     96#define PNP_RES_PRIORITY_FUNCTIONAL     ISAPNP_RES_PRIORITY_FUNCTIONAL
     97#define PNP_RES_PRIORITY_INVALID        ISAPNP_RES_PRIORITY_INVALID
     98
     99struct pnp_resource_table {
     100        struct resource port_resource[PNP_MAX_PORT];
     101        struct resource mem_resource[PNP_MAX_MEM];
     102        struct resource dma_resource[PNP_MAX_DMA];
     103        struct resource irq_resource[PNP_MAX_IRQ];
     104};
     105
     106
     107/*
     108 * Device Managemnt
     109 */
    12110
    13111struct pnp_card_link {
     
    15113        struct pnp_card_driver * driver;
    16114        void * driver_data;
    17         pm_message_t pm_state;
    18 };
     115        struct pm_dev *pm;
     116};
     117
     118static inline void *pnp_get_card_drvdata (struct pnp_card_link *pcard)
     119{
     120        return pcard->driver_data;
     121}
    19122
    20123static inline void pnp_set_card_drvdata (struct pnp_card_link *pcard, void *data)
     
    23126}
    24127
     128struct pnp_fixup {
     129        char id[7];
     130        void (*quirk_function)(struct pnp_dev *dev);    /* fixup function */
     131};
     132
     133/* config modes */
     134#define PNP_CONFIG_AUTO         0x0001  /* Use the Resource Configuration Engine to determine resource settings */
     135#define PNP_CONFIG_MANUAL       0x0002  /* the config has been manually specified */
     136#define PNP_CONFIG_FORCE        0x0004  /* disables validity checking */
     137#define PNP_CONFIG_INVALID      0x0008  /* If this flag is set, the pnp layer will refuse to activate the device */
     138
     139/* capabilities */
     140#define PNP_READ                0x0001
     141#define PNP_WRITE               0x0002
     142#define PNP_DISABLE             0x0004
     143#define PNP_CONFIGURABLE        0x0008
     144#define PNP_REMOVABLE           0x0010
     145
     146#define pnp_can_read(dev)       1
     147#define pnp_can_write(dev)      1
     148#define pnp_can_disable(dev)    0
     149#define pnp_can_configure(dev)  1
     150
     151#define pnp_device_is_isapnp(dev) 1
     152
     153#define isapnp_card_number(dev) (dev->p.bus->number)
     154#define isapnp_csn_number(dev)  (dev->p.devfn)
     155
     156/*
     157 * Driver Management
     158 */
     159
     160struct pnp_id {
     161        char id[PNP_ID_LEN];
     162        struct pnp_id * next;
     163};
     164
     165struct pnp_device_id {
     166        char id[PNP_ID_LEN];
     167        unsigned long driver_data;      /* data private to the driver */
     168};
     169
     170struct pnp_card_device_id {
     171        char id[PNP_ID_LEN];
     172        unsigned long driver_data;      /* data private to the driver */
     173        struct {
     174                char id[PNP_ID_LEN];
     175        } devs[PNP_MAX_DEVICES];        /* logical devices */
     176};
     177
     178struct pnp_driver {
     179        char * name;
     180        const struct pnp_device_id *id_table;
     181        unsigned int flags;
     182        int  (*probe)  (struct pnp_dev *dev, const struct pnp_device_id *dev_id);
     183        void (*remove) (struct pnp_dev *dev);
     184        int (*suspend)(struct pnp_dev *dev, pm_message_t state);
     185        int (*resume)(struct pnp_dev *dev);
     186};
     187
     188#define to_pnp_driver(drv) container_of(drv, struct pnp_driver, driver)
     189
     190struct pnp_card_driver {
     191        struct list_head global_list;
     192        char * name;
     193        const struct pnp_card_device_id *id_table;
     194        unsigned int flags;
     195        int  (*probe)  (struct pnp_card_link *card, const struct pnp_card_device_id *card_id);
     196        void (*remove) (struct pnp_card_link *card);
     197        int (*suspend)(struct pnp_card_link *card, pm_message_t state);
     198        int (*resume)(struct pnp_card_link *card);
     199        struct pnp_driver link;
     200};
     201
     202#define to_pnp_card_driver(drv) container_of(drv, struct pnp_card_driver, link)
     203
     204/* pnp driver flags */
     205#define PNP_DRIVER_RES_DO_NOT_CHANGE    0x0001  /* do not change the state of the device */
     206#define PNP_DRIVER_RES_DISABLE          0x0003  /* ensure the device is disabled */
     207
     208#define pnp_resource_change(resource, start, size) isapnp_resource_change(resource, start, size)
     209
     210#if defined(CONFIG_PNP)
     211
     212struct pnp_dev * pnp_request_card_device(struct pnp_card_link *clink, const char * id, struct pnp_dev * from);
     213void pnp_release_card_device(struct pnp_dev * dev);
     214int pnp_register_card_driver(struct pnp_card_driver * drv);
     215void pnp_unregister_card_driver(struct pnp_card_driver * drv);
     216int pnp_register_driver(struct pnp_driver *drv);
     217void pnp_unregister_driver(struct pnp_driver *drv);
     218void pnp_init_resource_table(struct pnp_resource_table *table);
     219int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode);
     220int pnp_activate_dev(struct pnp_dev *dev);
     221static inline int pnp_is_active(struct pnp_dev *dev) { return dev->p.active; }
     222int pnp_disable_dev(struct pnp_dev *dev);
     223
     224#else
     225
     226static inline struct pnp_dev * pnp_request_card_device(struct pnp_card_link *clink, const char * id, struct pnp_dev * from) { return NULL; }
     227static inline void pnp_release_card_device(struct pnp_dev * dev) { ; }
     228static inline int pnp_register_card_driver(struct pnp_card_driver * drv) { return 0; }
     229static inline void pnp_unregister_card_driver(struct pnp_card_driver * drv) { ; }
     230static inline int pnp_register_driver(struct pnp_driver *drv) { return 0; }
     231static inline void pnp_unregister_driver(struct pnp_driver *drv) { ; }
     232static inline void pnp_init_resource_table(struct pnp_resource_table *table) { ; }
     233static inline int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode) { return -ENODEV; }
     234static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; }
     235static inline int pnp_is_active(struct pnp_dev * dev) { return -ENODEV; }
     236static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; }
     237
     238#endif
     239
     240
     241#endif /* __KERNEL__ */
     242
    25243#endif /* _LINUX_PNP_H */
Note: See TracChangeset for help on using the changeset viewer.