Staging: sep: rework write_register/read_register
authorAlan Cox <alan@linux.intel.com>
Thu, 6 Aug 2009 19:45:24 +0000 (20:45 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Sep 2009 19:02:12 +0000 (12:02 -0700)
Replace the macros with an inline to get type safety and pass sep_dev
instead of the reg pointer

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/sep/sep_dev.h
drivers/staging/sep/sep_driver_config.h
drivers/staging/sep/sep_ext_with_pci_driver.c
drivers/staging/sep/sep_main_mod.c

index b3d48e1..1baff89 100644 (file)
@@ -60,7 +60,7 @@ struct sep_device {
        unsigned long rar_region_addr;
 
        /* start address of the access to the SEP registers from driver */
-       unsigned long reg_base_address;
+       void __iomem *reg_base_address;
        /* transaction counter that coordinates the transactions between SEP and HOST */
        unsigned long host_to_sep_send_counter;
        /* counter for the messages from sep */
@@ -103,17 +103,27 @@ struct sep_device {
 
 extern struct sep_device *sep_dev;
 
-extern inline void sep_write_reg(struct sep_device *dev, int reg, u32 value)
+static inline void sep_write_reg(struct sep_device *dev, int reg, u32 value)
 {
        void __iomem *addr = dev->reg_base_address + reg;
-       writel(value, reg);
+       writel(value, addr);
 }
 
-extern inline u32 sep_read_reg(struct sep_device *dev, int reg)
+static inline u32 sep_read_reg(struct sep_device *dev, int reg)
 {
        void __iomem *addr = dev->reg_base_address + reg;
-       return readl(reg);
+       return readl(addr);
 }
 
+/* wait for SRAM write complete(indirect write */
+static inline void sep_wait_sram_write(struct sep_device *dev)
+{
+       u32 reg_val;
+       do
+               reg_val = sep_read_reg(dev, HW_SRAM_DATA_READY_REG_ADDR);
+       while(!(reg_val & 1));
+}
+
+
 #endif
 
Simple merge