diff --git a/doc/fmc-bus.in b/doc/fmc-bus.in
index 9715a504c8a50be888000b1e6fcf2ad71053f0ea..ae6d39331d26945125fbb8957a9b18db4b2f1e45 100644
--- a/doc/fmc-bus.in
+++ b/doc/fmc-bus.in
@@ -183,7 +183,7 @@ this document):
 @smallexample
 struct fmc_operations {
         uint32_t (*readl)(struct fmc_device *fmc, int offset);
-        void (*writel)(struct fmc_device *fmc, int offset, uint32_t value);
+        void (*writel)(struct fmc_device *fmc, uint32_t value, int offset);
         int (*reprogram)(struct fmc_device *fmc, void *data, int len);
         int (*irq_request)(struct fmc_device *fmc, irq_handler_t h,
                            char *name, int flags);
diff --git a/kernel/include/linux/fmc.h b/kernel/include/linux/fmc.h
index b748a40a9d88cce7350847238247fc4ea2c6c57c..88f3055a9bf9fe05835e15fdb75ae18872c62534 100644
--- a/kernel/include/linux/fmc.h
+++ b/kernel/include/linux/fmc.h
@@ -34,7 +34,7 @@ struct fmc_driver {
 /* To be carrier-independent, we need to abstract hardware access */
 struct fmc_operations {
 	uint32_t (*readl)(struct fmc_device *fmc, int offset);
-	void (*writel)(struct fmc_device *fmc, int offset, uint32_t value);
+	void (*writel)(struct fmc_device *fmc, uint32_t value, int offset);
 	int (*reprogram)(struct fmc_device *fmc, void *data, int len);
 	int (*irq_request)(struct fmc_device *fmc, irq_handler_t h,
 			   char *name, int flags);