root/include/linux/zorro.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. zorro_dev_driver
  2. zorro_get_drvdata
  3. zorro_set_drvdata

   1 /*
   2  *  linux/zorro.h -- Amiga AutoConfig (Zorro) Bus Definitions
   3  *
   4  *  Copyright (C) 1995--2003 Geert Uytterhoeven
   5  *
   6  *  This file is subject to the terms and conditions of the GNU General Public
   7  *  License.  See the file COPYING in the main directory of this archive
   8  *  for more details.
   9  */
  10 
  11 #ifndef _LINUX_ZORRO_H
  12 #define _LINUX_ZORRO_H
  13 
  14 
  15 #include <uapi/linux/zorro.h>
  16 
  17 #include <linux/device.h>
  18 #include <linux/init.h>
  19 #include <linux/ioport.h>
  20 #include <linux/mod_devicetable.h>
  21 
  22 #include <asm/zorro.h>
  23 
  24 
  25     /*
  26      *  Zorro devices
  27      */
  28 
  29 struct zorro_dev {
  30     struct ExpansionRom rom;
  31     zorro_id id;
  32     struct zorro_driver *driver;        /* which driver has allocated this device */
  33     struct device dev;                  /* Generic device interface */
  34     u16 slotaddr;
  35     u16 slotsize;
  36     char name[64];
  37     struct resource resource;
  38 };
  39 
  40 #define to_zorro_dev(n) container_of(n, struct zorro_dev, dev)
  41 
  42 
  43     /*
  44      *  Zorro bus
  45      */
  46 
  47 extern struct bus_type zorro_bus_type;
  48 
  49 
  50     /*
  51      *  Zorro device drivers
  52      */
  53 
  54 struct zorro_driver {
  55     struct list_head node;
  56     char *name;
  57     const struct zorro_device_id *id_table;     /* NULL if wants all devices */
  58     int (*probe)(struct zorro_dev *z, const struct zorro_device_id *id);        /* New device inserted */
  59     void (*remove)(struct zorro_dev *z);        /* Device removed (NULL if not a hot-plug capable driver) */
  60     struct device_driver driver;
  61 };
  62 
  63 #define to_zorro_driver(drv)    container_of(drv, struct zorro_driver, driver)
  64 
  65 
  66 #define zorro_for_each_dev(dev) \
  67         for (dev = &zorro_autocon[0]; dev < zorro_autocon+zorro_num_autocon; dev++)
  68 
  69 
  70 /* New-style probing */
  71 extern int zorro_register_driver(struct zorro_driver *);
  72 extern void zorro_unregister_driver(struct zorro_driver *);
  73 extern const struct zorro_device_id *zorro_match_device(const struct zorro_device_id *ids, const struct zorro_dev *z);
  74 static inline struct zorro_driver *zorro_dev_driver(const struct zorro_dev *z)
  75 {
  76     return z->driver;
  77 }
  78 
  79 
  80 extern unsigned int zorro_num_autocon;  /* # of autoconfig devices found */
  81 extern struct zorro_dev *zorro_autocon;
  82 
  83 
  84     /*
  85      * Minimal information about a Zorro device, passed from bootinfo
  86      * Only available temporarily, i.e. until initmem has been freed!
  87      */
  88 
  89 struct zorro_dev_init {
  90         struct ExpansionRom rom;
  91         u16 slotaddr;
  92         u16 slotsize;
  93         u32 boardaddr;
  94         u32 boardsize;
  95 };
  96 
  97 extern struct zorro_dev_init zorro_autocon_init[ZORRO_NUM_AUTO] __initdata;
  98 
  99 
 100     /*
 101      *  Zorro Functions
 102      */
 103 
 104 extern struct zorro_dev *zorro_find_device(zorro_id id,
 105                                            struct zorro_dev *from);
 106 
 107 #define zorro_resource_start(z) ((z)->resource.start)
 108 #define zorro_resource_end(z)   ((z)->resource.end)
 109 #define zorro_resource_len(z)   (resource_size(&(z)->resource))
 110 #define zorro_resource_flags(z) ((z)->resource.flags)
 111 
 112 #define zorro_request_device(z, name) \
 113     request_mem_region(zorro_resource_start(z), zorro_resource_len(z), name)
 114 #define zorro_release_device(z) \
 115     release_mem_region(zorro_resource_start(z), zorro_resource_len(z))
 116 
 117 /* Similar to the helpers above, these manipulate per-zorro_dev
 118  * driver-specific data.  They are really just a wrapper around
 119  * the generic device structure functions of these calls.
 120  */
 121 static inline void *zorro_get_drvdata (struct zorro_dev *z)
 122 {
 123         return dev_get_drvdata(&z->dev);
 124 }
 125 
 126 static inline void zorro_set_drvdata (struct zorro_dev *z, void *data)
 127 {
 128         dev_set_drvdata(&z->dev, data);
 129 }
 130 
 131 
 132     /*
 133      *  Bitmask indicating portions of available Zorro II RAM that are unused
 134      *  by the system. Every bit represents a 64K chunk, for a maximum of 8MB
 135      *  (128 chunks, physical 0x00200000-0x009fffff).
 136      *
 137      *  If you want to use (= allocate) portions of this RAM, you should clear
 138      *  the corresponding bits.
 139      */
 140 
 141 extern DECLARE_BITMAP(zorro_unused_z2ram, 128);
 142 
 143 #define Z2RAM_START             (0x00200000)
 144 #define Z2RAM_END               (0x00a00000)
 145 #define Z2RAM_SIZE              (0x00800000)
 146 #define Z2RAM_CHUNKSIZE         (0x00010000)
 147 #define Z2RAM_CHUNKMASK         (0x0000ffff)
 148 #define Z2RAM_CHUNKSHIFT        (16)
 149 
 150 
 151 #endif /* _LINUX_ZORRO_H */

/* [<][>][^][v][top][bottom][index][help] */