@@ -37,12 +37,10 @@ extern struct zpci_iomap_entry *zpci_iomap_start;
3737#define zpci_read (LENGTH , RETTYPE ) \
3838static inline RETTYPE zpci_read_##RETTYPE(const volatile void __iomem *addr) \
3939{ \
40- struct zpci_iomap_entry *entry = &zpci_iomap_start[ZPCI_IDX(addr)]; \
41- u64 req = ZPCI_CREATE_REQ(entry->fh, entry->bar, LENGTH); \
4240 u64 data; \
4341 int rc; \
4442 \
45- rc = zpci_load(&data, req, ZPCI_OFFSET(addr)); \
43+ rc = zpci_load(&data, addr, LENGTH); \
4644 if (rc) \
4745 data = -1ULL; \
4846 return (RETTYPE) data; \
@@ -52,11 +50,9 @@ static inline RETTYPE zpci_read_##RETTYPE(const volatile void __iomem *addr) \
5250static inline void zpci_write_##VALTYPE(VALTYPE val, \
5351 const volatile void __iomem *addr) \
5452{ \
55- struct zpci_iomap_entry *entry = &zpci_iomap_start[ZPCI_IDX(addr)]; \
56- u64 req = ZPCI_CREATE_REQ(entry->fh, entry->bar, LENGTH); \
5753 u64 data = (VALTYPE) val; \
5854 \
59- zpci_store(data, req, ZPCI_OFFSET(addr)); \
55+ zpci_store(addr, data, LENGTH); \
6056}
6157
6258zpci_read (8 , u64 )
@@ -68,36 +64,38 @@ zpci_write(4, u32)
6864zpci_write (2 , u16 )
6965zpci_write (1 , u8 )
7066
71- static inline int zpci_write_single (u64 req , const u64 * data , u64 offset , u8 len )
67+ static inline int zpci_write_single (volatile void __iomem * dst , const void * src ,
68+ unsigned long len )
7269{
7370 u64 val ;
7471
7572 switch (len ) {
7673 case 1 :
77- val = (u64 ) * ((u8 * ) data );
74+ val = (u64 ) * ((u8 * ) src );
7875 break ;
7976 case 2 :
80- val = (u64 ) * ((u16 * ) data );
77+ val = (u64 ) * ((u16 * ) src );
8178 break ;
8279 case 4 :
83- val = (u64 ) * ((u32 * ) data );
80+ val = (u64 ) * ((u32 * ) src );
8481 break ;
8582 case 8 :
86- val = (u64 ) * ((u64 * ) data );
83+ val = (u64 ) * ((u64 * ) src );
8784 break ;
8885 default :
8986 val = 0 ; /* let FW report error */
9087 break ;
9188 }
92- return zpci_store (val , req , offset );
89+ return zpci_store (dst , val , len );
9390}
9491
95- static inline int zpci_read_single (u64 req , u64 * dst , u64 offset , u8 len )
92+ static inline int zpci_read_single (void * dst , const volatile void __iomem * src ,
93+ unsigned long len )
9694{
9795 u64 data ;
9896 int cc ;
9997
100- cc = zpci_load (& data , req , offset );
98+ cc = zpci_load (& data , src , len );
10199 if (cc )
102100 goto out ;
103101
@@ -119,10 +117,8 @@ static inline int zpci_read_single(u64 req, u64 *dst, u64 offset, u8 len)
119117 return cc ;
120118}
121119
122- static inline int zpci_write_block (u64 req , const u64 * data , u64 offset )
123- {
124- return zpci_store_block (data , req , offset );
125- }
120+ int zpci_write_block (volatile void __iomem * dst , const void * src ,
121+ unsigned long len );
126122
127123static inline u8 zpci_get_max_write_size (u64 src , u64 dst , int len , int max )
128124{
@@ -140,18 +136,15 @@ static inline int zpci_memcpy_fromio(void *dst,
140136 const volatile void __iomem * src ,
141137 unsigned long n )
142138{
143- struct zpci_iomap_entry * entry = & zpci_iomap_start [ZPCI_IDX (src )];
144- u64 req , offset = ZPCI_OFFSET (src );
145139 int size , rc = 0 ;
146140
147141 while (n > 0 ) {
148142 size = zpci_get_max_write_size ((u64 __force ) src ,
149143 (u64 ) dst , n , 8 );
150- req = ZPCI_CREATE_REQ (entry -> fh , entry -> bar , size );
151- rc = zpci_read_single (req , dst , offset , size );
144+ rc = zpci_read_single (dst , src , size );
152145 if (rc )
153146 break ;
154- offset += size ;
147+ src += size ;
155148 dst += size ;
156149 n -= size ;
157150 }
@@ -161,8 +154,6 @@ static inline int zpci_memcpy_fromio(void *dst,
161154static inline int zpci_memcpy_toio (volatile void __iomem * dst ,
162155 const void * src , unsigned long n )
163156{
164- struct zpci_iomap_entry * entry = & zpci_iomap_start [ZPCI_IDX (dst )];
165- u64 req , offset = ZPCI_OFFSET (dst );
166157 int size , rc = 0 ;
167158
168159 if (!src )
@@ -171,16 +162,14 @@ static inline int zpci_memcpy_toio(volatile void __iomem *dst,
171162 while (n > 0 ) {
172163 size = zpci_get_max_write_size ((u64 __force ) dst ,
173164 (u64 ) src , n , 128 );
174- req = ZPCI_CREATE_REQ (entry -> fh , entry -> bar , size );
175-
176165 if (size > 8 ) /* main path */
177- rc = zpci_write_block (req , src , offset );
166+ rc = zpci_write_block (dst , src , size );
178167 else
179- rc = zpci_write_single (req , src , offset , size );
168+ rc = zpci_write_single (dst , src , size );
180169 if (rc )
181170 break ;
182- offset += size ;
183171 src += size ;
172+ dst += size ;
184173 n -= size ;
185174 }
186175 return rc ;
0 commit comments