Merge branch 'topic/asoc' into for-linus
[pandora-kernel.git] / drivers / ieee1394 / csr1212.h
index df909ce..a892d92 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <linux/types.h>
 #include <linux/slab.h>
+#include <asm/atomic.h>
 
 #define CSR1212_MALLOC(size)   kmalloc((size), GFP_KERNEL)
 #define CSR1212_FREE(ptr)      kfree(ptr)
@@ -149,7 +150,7 @@ struct csr1212_keyval {
                struct csr1212_directory directory;
        } value;
        struct csr1212_keyval *associate;
-       int refcnt;
+       atomic_t refcnt;
 
        /* used in generating and/or parsing CSR image */
        struct csr1212_keyval *next, *prev;     /* flat list of CSR elements */
@@ -180,7 +181,7 @@ struct csr1212_csr_rom_cache {
 struct csr1212_csr {
        size_t bus_info_len;    /* bus info block length in bytes */
        size_t crc_len;         /* crc length in bytes */
-       u32 *bus_info_data;     /* bus info data incl bus name and EUI */
+       __be32 *bus_info_data;  /* bus info data incl bus name and EUI */
 
        void *private;          /* private, bus specific data */
        struct csr1212_bus_ops *ops;
@@ -199,7 +200,7 @@ struct csr1212_bus_ops {
         * entries located in the Units Space.  Must return 0 on success
         * anything else indicates an error. */
        int (*bus_read) (struct csr1212_csr *csr, u64 addr,
-                        u16 length, void *buffer, void *private);
+                        void *buffer, void *private);
 
        /* This function is used by csr1212 to allocate a region in units space
         * in the event that Config ROM entries don't all fit in the predefined
@@ -210,11 +211,6 @@ struct csr1212_bus_ops {
        /* This function is used by csr1212 to release a region in units space
         * that is no longer needed. */
        void (*release_addr) (u64 addr, void *private);
-
-       /* This function is used by csr1212 to determine the max read request
-        * supported by a remote node when reading the ConfigROM space.  Must
-        * return 0, 1, or 2 per IEEE 1212.  */
-       int (*get_max_rom) (u32 *bus_info, void *private);
 };
 
 
@@ -350,7 +346,8 @@ csr1212_get_keyval(struct csr1212_csr *csr, struct csr1212_keyval *kv);
  * need for code to retain a keyval that has been parsed. */
 static inline void csr1212_keep_keyval(struct csr1212_keyval *kv)
 {
-       kv->refcnt++;
+       atomic_inc(&kv->refcnt);
+       smp_mb__after_atomic_inc();
 }