Merge master.kernel.org:/pub/scm/linux/kernel/git/mchehab/v4l-dvb
[linux-2.6] / include / linux / amba / bus.h
1 /*
2  *  linux/include/asm-arm/hardware/amba.h
3  *
4  *  Copyright (C) 2003 Deep Blue Solutions Ltd, All Rights Reserved.
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  */
10 #ifndef ASMARM_AMBA_H
11 #define ASMARM_AMBA_H
12
13 #define AMBA_NR_IRQS    2
14
15 struct amba_device {
16         struct device           dev;
17         struct resource         res;
18         u64                     dma_mask;
19         unsigned int            periphid;
20         unsigned int            irq[AMBA_NR_IRQS];
21 };
22
23 struct amba_id {
24         unsigned int            id;
25         unsigned int            mask;
26         void                    *data;
27 };
28
29 struct amba_driver {
30         struct device_driver    drv;
31         int                     (*probe)(struct amba_device *, void *);
32         int                     (*remove)(struct amba_device *);
33         void                    (*shutdown)(struct amba_device *);
34         int                     (*suspend)(struct amba_device *, pm_message_t);
35         int                     (*resume)(struct amba_device *);
36         struct amba_id          *id_table;
37 };
38
39 #define amba_get_drvdata(d)     dev_get_drvdata(&d->dev)
40 #define amba_set_drvdata(d,p)   dev_set_drvdata(&d->dev, p)
41
42 int amba_driver_register(struct amba_driver *);
43 void amba_driver_unregister(struct amba_driver *);
44 int amba_device_register(struct amba_device *, struct resource *);
45 void amba_device_unregister(struct amba_device *);
46 struct amba_device *amba_find_device(const char *, struct device *, unsigned int, unsigned int);
47 int amba_request_regions(struct amba_device *, const char *);
48 void amba_release_regions(struct amba_device *);
49
50 #define amba_config(d)  (((d)->periphid >> 24) & 0xff)
51 #define amba_rev(d)     (((d)->periphid >> 20) & 0x0f)
52 #define amba_manf(d)    (((d)->periphid >> 12) & 0xff)
53 #define amba_part(d)    ((d)->periphid & 0xfff)
54
55 #endif