]> err.no Git - linux-2.6/blobdiff - arch/powerpc/sysdev/dcr.c
[POWERPC] Add missing native dcr dcr_ind_lock spinlock
[linux-2.6] / arch / powerpc / sysdev / dcr.c
index 574b6ef44e0bbfd59c56dbd3cf9afc28f24b9876..437e48d3ae3340d5817c10f20d2a6dfc8276daeb 100644 (file)
@@ -33,6 +33,7 @@ unsigned int dcr_resource_start(struct device_node *np, unsigned int index)
 
        return dr[index * 2];
 }
+EXPORT_SYMBOL_GPL(dcr_resource_start);
 
 unsigned int dcr_resource_len(struct device_node *np, unsigned int index)
 {
@@ -44,6 +45,7 @@ unsigned int dcr_resource_len(struct device_node *np, unsigned int index)
 
        return dr[index * 2 + 1];
 }
+EXPORT_SYMBOL_GPL(dcr_resource_len);
 
 #ifndef CONFIG_PPC_DCR_NATIVE
 
@@ -102,7 +104,7 @@ u64 of_translate_dcr_address(struct device_node *dev,
 dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
                   unsigned int dcr_c)
 {
-       dcr_host_t ret = { .token = NULL, .stride = 0 };
+       dcr_host_t ret = { .token = NULL, .stride = 0, .base = dcr_n };
        u64 addr;
 
        pr_debug("dcr_map(%s, 0x%x, 0x%x)\n",
@@ -122,16 +124,19 @@ dcr_host_t dcr_map(struct device_node *dev, unsigned int dcr_n,
        ret.token -= dcr_n * ret.stride;
        return ret;
 }
+EXPORT_SYMBOL_GPL(dcr_map);
 
-void dcr_unmap(dcr_host_t host, unsigned int dcr_n, unsigned int dcr_c)
+void dcr_unmap(dcr_host_t host, unsigned int dcr_c)
 {
        dcr_host_t h = host;
 
        if (h.token == NULL)
                return;
-       h.token += dcr_n * h.stride;
+       h.token += host.base * h.stride;
        iounmap(h.token);
        h.token = NULL;
 }
-
-#endif /* !defined(CONFIG_PPC_DCR_NATIVE) */
+EXPORT_SYMBOL_GPL(dcr_unmap);
+#else  /* defined(CONFIG_PPC_DCR_NATIVE) */
+DEFINE_SPINLOCK(dcr_ind_lock);
+#endif /* !defined(CONFIG_PPC_DCR_NATIVE) */