Merge branch 'sched-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[linux-2.6-microblaze.git] / include / linux / amba / bus.h
index d143c13..f99b74a 100644 (file)
 #define AMBA_CID       0xb105f00d
 #define CORESIGHT_CID  0xb105900d
 
+/*
+ * CoreSight Architecture specification updates the ID specification
+ * for components on the AMBA bus. (ARM IHI 0029E)
+ *
+ * Bits 15:12 of the CID are the device class.
+ *
+ * Class 0xF remains for PrimeCell and legacy components. (AMBA_CID above)
+ * Class 0x9 defines the component as CoreSight (CORESIGHT_CID above)
+ * Class 0x0, 0x1, 0xB, 0xE define components that do not have driver support
+ * at present.
+ * Class 0x2-0x8,0xA and 0xD-0xD are presently reserved.
+ *
+ * Remaining CID bits stay as 0xb105-00d
+ */
+
+/**
+ * Class 0x9 components use additional values to form a Unique Component
+ * Identifier (UCI), where peripheral ID values are identical for different
+ * components. Passed to the amba bus code from the component driver via
+ * the amba_id->data pointer.
+ * @devarch    : coresight devarch register value
+ * @devarch_mask: mask bits used for matching. 0 indicates UCI not used.
+ * @devtype    : coresight device type value
+ * @data       : additional driver data. As we have usurped the original
+ *             pointer some devices may still need additional data
+ */
+struct amba_cs_uci_id {
+       unsigned int devarch;
+       unsigned int devarch_mask;
+       unsigned int devtype;
+       void *data;
+};
+
+/* define offsets for registers used by UCI */
+#define UCI_REG_DEVTYPE_OFFSET 0xFCC
+#define UCI_REG_DEVARCH_OFFSET 0xFBC
+
 struct clk;
 
 struct amba_device {
@@ -32,6 +69,8 @@ struct amba_device {
        struct resource         res;
        struct clk              *pclk;
        unsigned int            periphid;
+       unsigned int            cid;
+       struct amba_cs_uci_id   uci;
        unsigned int            irq[AMBA_NR_IRQS];
        char                    *driver_override;
 };