From: Alan Cox Date: Thu, 6 Aug 2009 19:45:24 +0000 (+0100) Subject: Staging: sep: rework write_register/read_register X-Git-Tag: v2.6.32-rc1~668^2~217 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79de99e864fb731392bec78f251ce0310fed5d9a;p=pandora-kernel.git Staging: sep: rework write_register/read_register Replace the macros with an inline to get type safety and pass sep_dev instead of the reg pointer Signed-off-by: Alan Cox Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/staging/sep/sep_dev.h b/drivers/staging/sep/sep_dev.h index b3d48e16dc63..1baff8993889 100644 --- a/drivers/staging/sep/sep_dev.h +++ b/drivers/staging/sep/sep_dev.h @@ -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 Reading git-diff-tree failed