@@ -286,23 +286,25 @@ static int sdxi_fn_activate(struct sdxi_dev *sdxi)
286286 return err ;
287287}
288288
289+ static int sdxi_create_dma_pool (struct sdxi_dev * sdxi , struct dma_pool * * pool ,
290+ const char * name , size_t size )
291+ {
292+ * pool = dmam_pool_create (name , sdxi_to_dev (sdxi ), size , size , 0 );
293+ return * pool ? 0 : - ENOMEM ;
294+ }
295+
289296static int sdxi_device_init (struct sdxi_dev * sdxi )
290297{
291298 int err ;
292299
293- /*
294- * FIXME: the PAGE_SIZE for the pools' object size+align is a
295- * temporary hack for the uAPI's sake. These should be reverted
296- * to the real object sizes once that's dealt with.
297- */
298- sdxi -> write_index_pool = dmam_pool_create ("Write_Index" , sdxi_to_dev (sdxi ),
299- PAGE_SIZE , PAGE_SIZE , 0 );
300- sdxi -> cxt_sts_pool = dmam_pool_create ("CXT_STS" , sdxi_to_dev (sdxi ),
301- PAGE_SIZE , PAGE_SIZE , 0 );
302- sdxi -> cxt_ctl_pool = dmam_pool_create ("CXT_CTL" , sdxi_to_dev (sdxi ),
303- sizeof (struct sdxi_cxt_ctl ),
304- sizeof (struct sdxi_cxt_ctl ), 0 );
305- if (!sdxi -> write_index_pool || !sdxi -> cxt_sts_pool || !sdxi -> cxt_ctl_pool )
300+ if (sdxi_create_dma_pool (sdxi , & sdxi -> write_index_pool ,
301+ "Write_Index" , sizeof (__le64 )))
302+ return - ENOMEM ;
303+ if (sdxi_create_dma_pool (sdxi , & sdxi -> cxt_sts_pool ,
304+ "CXT_STS" , sizeof (struct sdxi_cxt_sts )))
305+ return - ENOMEM ;
306+ if (sdxi_create_dma_pool (sdxi , & sdxi -> cxt_ctl_pool ,
307+ "CXT_CTL" , sizeof (struct sdxi_cxt_ctl )))
306308 return - ENOMEM ;
307309
308310 err = sdxi_fn_activate (sdxi );
0 commit comments