On Mon, Nov 06, 2017 at 06:55:52AM +0000, Gilad Ben-Yossef wrote:
> Registers ioread/iowrite operations were done via macros,
> sometime using a "magical" implicit parameter.
> 
> Replace all register access with simple inline macros.
> 
> Signed-off-by: Gilad Ben-Yossef <gi...@benyossef.com>

Hi,

Nice work. I had a little trouble following this one. Perhaps you are
doing more than one thing per patch, feel free to ignore me if I am
wrong but it seems you are moving the macro definition of CC_REG to a
different header, adding the new inline functions and doing some other
change that I can't grok (commented on below).

Perhaps this patch could be broken up.

> ---
>  drivers/staging/ccree/cc_hal.h           | 33 ------------------
>  drivers/staging/ccree/cc_regs.h          | 35 --------------------
>  drivers/staging/ccree/dx_reg_base_host.h | 25 --------------
>  drivers/staging/ccree/ssi_driver.c       | 47 ++++++++++++--------------
>  drivers/staging/ccree/ssi_driver.h       | 20 +++++++++--
>  drivers/staging/ccree/ssi_fips.c         | 12 +++----
>  drivers/staging/ccree/ssi_pm.c           |  4 +--
>  drivers/staging/ccree/ssi_request_mgr.c  | 57 
> ++++++++++++++++----------------
>  drivers/staging/ccree/ssi_sysfs.c        | 11 +++---
>  9 files changed, 78 insertions(+), 166 deletions(-)
>  delete mode 100644 drivers/staging/ccree/cc_hal.h
>  delete mode 100644 drivers/staging/ccree/cc_regs.h
>  delete mode 100644 drivers/staging/ccree/dx_reg_base_host.h
> 
> diff --git a/drivers/staging/ccree/cc_hal.h b/drivers/staging/ccree/cc_hal.h
> deleted file mode 100644
> index eecc866..0000000
> --- a/drivers/staging/ccree/cc_hal.h
> +++ /dev/null
> @@ -1,33 +0,0 @@
> -/*
> - * Copyright (C) 2012-2017 ARM Limited or its affiliates.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/* pseudo cc_hal.h for cc7x_perf_test_driver (to be able to include code from
> - * CC drivers).
> - */
> -
> -#ifndef __CC_HAL_H__
> -#define __CC_HAL_H__
> -
> -#include <linux/io.h>
> -
> -#define READ_REGISTER(_addr) ioread32((_addr))
> -#define WRITE_REGISTER(_addr, _data)  iowrite32((_data), (_addr))
> -
> -#define CC_HAL_WRITE_REGISTER(offset, val) \
> -     WRITE_REGISTER(cc_base + (offset), val)
> -#define CC_HAL_READ_REGISTER(offset) READ_REGISTER(cc_base + (offset))
> -
> -#endif
> diff --git a/drivers/staging/ccree/cc_regs.h b/drivers/staging/ccree/cc_regs.h
> deleted file mode 100644
> index 2a8fc73..0000000
> --- a/drivers/staging/ccree/cc_regs.h
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -/*
> - * Copyright (C) 2012-2017 ARM Limited or its affiliates.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -/*!
> - * @file
> - * @brief This file contains macro definitions for accessing ARM TrustZone
> - *        CryptoCell register space.
> - */
> -
> -#ifndef _CC_REGS_H_
> -#define _CC_REGS_H_
> -
> -#include <linux/bitfield.h>
> -
> -#define AXIM_MON_COMP_VALUE GENMASK(DX_AXIM_MON_COMP_VALUE_BIT_SIZE + \
> -                                 DX_AXIM_MON_COMP_VALUE_BIT_SHIFT, \
> -                                 DX_AXIM_MON_COMP_VALUE_BIT_SHIFT)
> -
> -/* Register name mangling macro */
> -#define CC_REG(reg_name) DX_ ## reg_name ## _REG_OFFSET
> -
> -#endif /*_CC_REGS_H_*/
> diff --git a/drivers/staging/ccree/dx_reg_base_host.h 
> b/drivers/staging/ccree/dx_reg_base_host.h
> deleted file mode 100644
> index 47bbadb..0000000
> --- a/drivers/staging/ccree/dx_reg_base_host.h
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -/*
> - * Copyright (C) 2012-2017 ARM Limited or its affiliates.
> - *
> - * This program is free software; you can redistribute it and/or modify
> - * it under the terms of the GNU General Public License version 2 as
> - * published by the Free Software Foundation.
> - *
> - * This program is distributed in the hope that it will be useful,
> - * but WITHOUT ANY WARRANTY; without even the implied warranty of
> - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> - * GNU General Public License for more details.
> - *
> - * You should have received a copy of the GNU General Public License
> - * along with this program; if not, see <http://www.gnu.org/licenses/>.
> - */
> -
> -#ifndef __DX_REG_BASE_HOST_H__
> -#define __DX_REG_BASE_HOST_H__
> -
> -#define DX_BASE_CC 0x80000000
> -#define DX_BASE_HOST_RGF 0x0UL
> -#define DX_BASE_CRY_KERNEL     0x0UL
> -#define DX_BASE_ROM     0x40000000
> -
> -#endif /*__DX_REG_BASE_HOST_H__*/
> diff --git a/drivers/staging/ccree/ssi_driver.c 
> b/drivers/staging/ccree/ssi_driver.c
> index 1a9b9c9..1a3c481 100644
> --- a/drivers/staging/ccree/ssi_driver.c
> +++ b/drivers/staging/ccree/ssi_driver.c
> @@ -91,7 +91,6 @@ void dump_byte_array(const char *name, const u8 *buf, 
> size_t len)
>  static irqreturn_t cc_isr(int irq, void *dev_id)
>  {
>       struct ssi_drvdata *drvdata = (struct ssi_drvdata *)dev_id;
> -     void __iomem *cc_base = drvdata->cc_base;
>       struct device *dev = drvdata_to_dev(drvdata);
>       u32 irr;
>       u32 imr;
> @@ -99,22 +98,22 @@ static irqreturn_t cc_isr(int irq, void *dev_id)
>       /* STAT_OP_TYPE_GENERIC STAT_PHASE_0: Interrupt */
>  
>       /* read the interrupt status */
> -     irr = CC_HAL_READ_REGISTER(CC_REG(HOST_IRR));
> +     irr = cc_ioread(drvdata, CC_REG(HOST_IRR));
>       dev_dbg(dev, "Got IRR=0x%08X\n", irr);
>       if (unlikely(irr == 0)) { /* Probably shared interrupt line */
>               dev_err(dev, "Got interrupt with empty IRR\n");
>               return IRQ_NONE;
>       }
> -     imr = CC_HAL_READ_REGISTER(CC_REG(HOST_IMR));
> +     imr = cc_ioread(drvdata, CC_REG(HOST_IMR));
>  
>       /* clear interrupt - must be before processing events */
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_ICR), irr);
> +     cc_iowrite(drvdata, CC_REG(HOST_ICR), irr);
>  
>       drvdata->irq = irr;
>       /* Completion interrupt - most probable */
>       if (likely((irr & SSI_COMP_IRQ_MASK) != 0)) {
>               /* Mask AXI completion interrupt - will be unmasked in Deferred 
> service handler */
> -             CC_HAL_WRITE_REGISTER(CC_REG(HOST_IMR), imr | 
> SSI_COMP_IRQ_MASK);
> +             cc_iowrite(drvdata, CC_REG(HOST_IMR), imr | SSI_COMP_IRQ_MASK);
>               irr &= ~SSI_COMP_IRQ_MASK;
>               complete_request(drvdata);
>       }
> @@ -122,7 +121,7 @@ static irqreturn_t cc_isr(int irq, void *dev_id)
>       /* TEE FIPS interrupt */
>       if (likely((irr & SSI_GPR0_IRQ_MASK) != 0)) {
>               /* Mask interrupt - will be unmasked in Deferred service 
> handler */
> -             CC_HAL_WRITE_REGISTER(CC_REG(HOST_IMR), imr | 
> SSI_GPR0_IRQ_MASK);
> +             cc_iowrite(drvdata, CC_REG(HOST_IMR), imr | SSI_GPR0_IRQ_MASK);
>               irr &= ~SSI_GPR0_IRQ_MASK;
>               fips_handler(drvdata);
>       }
> @@ -132,7 +131,7 @@ static irqreturn_t cc_isr(int irq, void *dev_id)
>               u32 axi_err;
>  
>               /* Read the AXI error ID */
> -             axi_err = CC_HAL_READ_REGISTER(CC_REG(AXIM_MON_ERR));
> +             axi_err = cc_ioread(drvdata, CC_REG(AXIM_MON_ERR));
>               dev_dbg(dev, "AXI completion error: axim_mon_err=0x%08X\n",
>                       axi_err);
>  
> @@ -151,47 +150,44 @@ static irqreturn_t cc_isr(int irq, void *dev_id)
>  int init_cc_regs(struct ssi_drvdata *drvdata, bool is_probe)
>  {
>       unsigned int val, cache_params;
> -     void __iomem *cc_base = drvdata->cc_base;
>       struct device *dev = drvdata_to_dev(drvdata);
>  
>       /* Unmask all AXI interrupt sources AXI_CFG1 register */
> -     val = CC_HAL_READ_REGISTER(CC_REG(AXIM_CFG));
> -     CC_HAL_WRITE_REGISTER(CC_REG(AXIM_CFG), val & ~SSI_AXI_IRQ_MASK);
> +     val = cc_ioread(drvdata, CC_REG(AXIM_CFG));
> +     cc_iowrite(drvdata, CC_REG(AXIM_CFG), val & ~SSI_AXI_IRQ_MASK);
>       dev_dbg(dev, "AXIM_CFG=0x%08X\n",
> -             CC_HAL_READ_REGISTER(CC_REG(AXIM_CFG)));
> +             cc_ioread(drvdata, CC_REG(AXIM_CFG)));
>  
>       /* Clear all pending interrupts */
> -     val = CC_HAL_READ_REGISTER(CC_REG(HOST_IRR));
> +     val = cc_ioread(drvdata, CC_REG(HOST_IRR));
>       dev_dbg(dev, "IRR=0x%08X\n", val);
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_ICR), val);
> +     cc_iowrite(drvdata, CC_REG(HOST_ICR), val);
>  
>       /* Unmask relevant interrupt cause */
>       val = (unsigned int)(~(SSI_COMP_IRQ_MASK | SSI_AXI_ERR_IRQ_MASK |
>                              SSI_GPR0_IRQ_MASK));
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_IMR), val);
> +     cc_iowrite(drvdata, CC_REG(HOST_IMR), val);
>  
>  #ifdef DX_HOST_IRQ_TIMER_INIT_VAL_REG_OFFSET
>  #ifdef DX_IRQ_DELAY
>       /* Set CC IRQ delay */
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_IRQ_TIMER_INIT_VAL),
> -                           DX_IRQ_DELAY);
> +     cc_iowrite(drvdata, CC_REG(HOST_IRQ_TIMER_INIT_VAL), DX_IRQ_DELAY);
>  #endif
> -     if (CC_HAL_READ_REGISTER(CC_REG(HOST_IRQ_TIMER_INIT_VAL)) > 0) {
> +     if (cc_ioread(drvdata, CC_REG(HOST_IRQ_TIMER_INIT_VAL)) > 0) {
>               dev_dbg(dev, "irq_delay=%d CC cycles\n",
> -                     CC_HAL_READ_REGISTER(CC_REG(HOST_IRQ_TIMER_INIT_VAL)));
> +                     cc_ioread(drvdata, CC_REG(HOST_IRQ_TIMER_INIT_VAL)));
>       }
>  #endif
>  
>       cache_params = (drvdata->coherent ? CC_COHERENT_CACHE_PARAMS : 0x0);
>  
> -     val = CC_HAL_READ_REGISTER(CC_REG(AXIM_CACHE_PARAMS));
> +     val = cc_ioread(drvdata, CC_REG(AXIM_CACHE_PARAMS));
>  
>       if (is_probe)
>               dev_info(dev, "Cache params previous: 0x%08X\n", val);
>  
> -     CC_HAL_WRITE_REGISTER(CC_REG(AXIM_CACHE_PARAMS),
> -                           cache_params);
> -     val = CC_HAL_READ_REGISTER(CC_REG(AXIM_CACHE_PARAMS));
> +     cc_iowrite(drvdata, CC_REG(AXIM_CACHE_PARAMS), cache_params);
> +     val = cc_ioread(drvdata, CC_REG(AXIM_CACHE_PARAMS));
>  
>       if (is_probe)
>               dev_info(dev, "Cache params current: 0x%08X (expect: 0x%08X)\n",
> @@ -280,7 +276,7 @@ static int init_cc_resources(struct platform_device 
> *plat_dev)
>       }
>  
>       /* Verify correct mapping */
> -     signature_val = CC_HAL_READ_REGISTER(CC_REG(HOST_SIGNATURE));
> +     signature_val = cc_ioread(new_drvdata, CC_REG(HOST_SIGNATURE));
>       if (signature_val != DX_DEV_SIGNATURE) {
>               dev_err(dev, "Invalid CC signature: SIGNATURE=0x%08X != 
> expected=0x%08X\n",
>                       signature_val, (u32)DX_DEV_SIGNATURE);
> @@ -292,7 +288,7 @@ static int init_cc_resources(struct platform_device 
> *plat_dev)
>       /* Display HW versions */
>       dev_info(dev, "ARM CryptoCell %s Driver: HW version 0x%08X, Driver 
> version %s\n",
>                SSI_DEV_NAME_STR,
> -              CC_HAL_READ_REGISTER(CC_REG(HOST_VERSION)),
> +              cc_ioread(new_drvdata, CC_REG(HOST_VERSION)),
>                DRV_MODULE_VERSION);
>  
>       rc = init_cc_regs(new_drvdata, true);
> @@ -410,8 +406,7 @@ static int init_cc_resources(struct platform_device 
> *plat_dev)
>  void fini_cc_regs(struct ssi_drvdata *drvdata)
>  {
>       /* Mask all interrupts */
> -     WRITE_REGISTER(drvdata->cc_base +
> -                    CC_REG(HOST_IMR), 0xFFFFFFFF);
> +     cc_iowrite(drvdata, CC_REG(HOST_IMR), 0xFFFFFFFF);
>  }
>  
>  static void cleanup_cc_resources(struct platform_device *plat_dev)
> diff --git a/drivers/staging/ccree/ssi_driver.h 
> b/drivers/staging/ccree/ssi_driver.h
> index e01c880..94c755c 100644
> --- a/drivers/staging/ccree/ssi_driver.h
> +++ b/drivers/staging/ccree/ssi_driver.h
> @@ -40,11 +40,8 @@
>  #include <linux/platform_device.h>
>  
>  /* Registers definitions from shared/hw/ree_include */
> -#include "dx_reg_base_host.h"
>  #include "dx_host.h"
> -#include "cc_regs.h"
>  #include "dx_reg_common.h"
> -#include "cc_hal.h"
>  #define CC_SUPPORT_SHA DX_DEV_SHA_MAX
>  #include "cc_crypto_ctx.h"
>  #include "ssi_sysfs.h"
> @@ -73,6 +70,13 @@
>  
>  #define SSI_COMP_IRQ_MASK BIT(DX_HOST_IRR_AXIM_COMP_INT_BIT_SHIFT)
>  
> +#define AXIM_MON_COMP_VALUE GENMASK(DX_AXIM_MON_COMP_VALUE_BIT_SIZE + \
> +                                 DX_AXIM_MON_COMP_VALUE_BIT_SHIFT, \
> +                                 DX_AXIM_MON_COMP_VALUE_BIT_SHIFT)
> +
> +/* Register name mangling macro */
> +#define CC_REG(reg_name) DX_ ## reg_name ## _REG_OFFSET
> +
>  /* TEE FIPS status interrupt */
>  #define SSI_GPR0_IRQ_MASK BIT(DX_HOST_IRR_GPR0_BIT_SHIFT)
>  
> @@ -188,5 +192,15 @@ void fini_cc_regs(struct ssi_drvdata *drvdata);
>  int cc_clk_on(struct ssi_drvdata *drvdata);
>  void cc_clk_off(struct ssi_drvdata *drvdata);
>  
> +static inline void cc_iowrite(struct ssi_drvdata *drvdata, u32 reg, u32 val)
> +{
> +     iowrite32(val, (drvdata->cc_base + reg));
> +}
> +
> +static inline u32 cc_ioread(struct ssi_drvdata *drvdata, u32 reg)
> +{
> +     return ioread32(drvdata->cc_base + reg);
> +}
> +
>  #endif /*__SSI_DRIVER_H__*/
>  
> diff --git a/drivers/staging/ccree/ssi_fips.c 
> b/drivers/staging/ccree/ssi_fips.c
> index d424aef..4aea99f 100644
> --- a/drivers/staging/ccree/ssi_fips.c
> +++ b/drivers/staging/ccree/ssi_fips.c
> @@ -19,7 +19,6 @@
>  
>  #include "ssi_config.h"
>  #include "ssi_driver.h"
> -#include "cc_hal.h"
>  #include "ssi_fips.h"
>  
>  static void fips_dsr(unsigned long devarg);
> @@ -34,9 +33,8 @@ struct ssi_fips_handle {
>  static bool cc_get_tee_fips_status(struct ssi_drvdata *drvdata)
>  {
>       u32 reg;
> -     void __iomem *cc_base = drvdata->cc_base;
>  
> -     reg = CC_HAL_READ_REGISTER(CC_REG(GPR_HOST));
> +     reg = cc_ioread(drvdata, CC_REG(GPR_HOST));
>       return (reg == (CC_FIPS_SYNC_TEE_STATUS | CC_FIPS_SYNC_MODULE_OK));
>  }
>  
> @@ -46,12 +44,11 @@ static bool cc_get_tee_fips_status(struct ssi_drvdata 
> *drvdata)
>   */
>  void cc_set_ree_fips_status(struct ssi_drvdata *drvdata, bool status)
>  {
> -     void __iomem *cc_base = drvdata->cc_base;
>       int val = CC_FIPS_SYNC_REE_STATUS;
>  
>       val |= (status ? CC_FIPS_SYNC_MODULE_OK : CC_FIPS_SYNC_MODULE_ERROR);
>  
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_GPR0), val);
> +     cc_iowrite(drvdata, CC_REG(HOST_GPR0), val);
>  }
>  
>  void ssi_fips_fini(struct ssi_drvdata *drvdata)
> @@ -89,13 +86,12 @@ static void fips_dsr(unsigned long devarg)
>  {
>       struct ssi_drvdata *drvdata = (struct ssi_drvdata *)devarg;
>       struct device *dev = drvdata_to_dev(drvdata);
> -     void __iomem *cc_base = drvdata->cc_base;
>       u32 irq, state, val;
>  
>       irq = (drvdata->irq & (SSI_GPR0_IRQ_MASK));
>  
>       if (irq) {
> -             state = CC_HAL_READ_REGISTER(CC_REG(GPR_HOST));
> +             state = cc_ioread(drvdata, CC_REG(GPR_HOST));
>  
>               if (state != (CC_FIPS_SYNC_TEE_STATUS | CC_FIPS_SYNC_MODULE_OK))
>                       tee_fips_error(dev);
> @@ -105,7 +101,7 @@ static void fips_dsr(unsigned long devarg)
>        * unmask AXI completion interrupt.
>        */
>       val = (CC_REG(HOST_IMR) & ~irq);
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_IMR), val);
> +     cc_iowrite(drvdata, CC_REG(HOST_IMR), val);
>  }
>  
>  /* The function called once at driver entry point .*/
> diff --git a/drivers/staging/ccree/ssi_pm.c b/drivers/staging/ccree/ssi_pm.c
> index 73b31cd..36a4980 100644
> --- a/drivers/staging/ccree/ssi_pm.c
> +++ b/drivers/staging/ccree/ssi_pm.c
> @@ -41,7 +41,7 @@ int ssi_power_mgr_runtime_suspend(struct device *dev)
>       int rc;
>  
>       dev_dbg(dev, "set HOST_POWER_DOWN_EN\n");
> -     WRITE_REGISTER(drvdata->cc_base + CC_REG(HOST_POWER_DOWN_EN), 
> POWER_DOWN_ENABLE);
> +     cc_iowrite(drvdata, CC_REG(HOST_POWER_DOWN_EN), POWER_DOWN_ENABLE);
>       rc = ssi_request_mgr_runtime_suspend_queue(drvdata);
>       if (rc != 0) {
>               dev_err(dev, "ssi_request_mgr_runtime_suspend_queue (%x)\n",
> @@ -60,7 +60,7 @@ int ssi_power_mgr_runtime_resume(struct device *dev)
>               (struct ssi_drvdata *)dev_get_drvdata(dev);
>  
>       dev_dbg(dev, "unset HOST_POWER_DOWN_EN\n");
> -     WRITE_REGISTER(drvdata->cc_base + CC_REG(HOST_POWER_DOWN_EN), 
> POWER_DOWN_DISABLE);
> +     cc_iowrite(drvdata, CC_REG(HOST_POWER_DOWN_EN), POWER_DOWN_DISABLE);
>  
>       rc = cc_clk_on(drvdata);
>       if (rc) {
> diff --git a/drivers/staging/ccree/ssi_request_mgr.c 
> b/drivers/staging/ccree/ssi_request_mgr.c
> index 2f12ee2..a8a7dc6 100644
> --- a/drivers/staging/ccree/ssi_request_mgr.c
> +++ b/drivers/staging/ccree/ssi_request_mgr.c
> @@ -122,8 +122,8 @@ int request_mgr_init(struct ssi_drvdata *drvdata)
>       dev_dbg(dev, "Initializing completion tasklet\n");
>       tasklet_init(&req_mgr_h->comptask, comp_handler, (unsigned 
> long)drvdata);
>  #endif
> -     req_mgr_h->hw_queue_size = READ_REGISTER(drvdata->cc_base +
> -             CC_REG(DSCRPTR_QUEUE_SRAM_SIZE));
> +     req_mgr_h->hw_queue_size = cc_ioread(drvdata,
> +                                          CC_REG(DSCRPTR_QUEUE_SRAM_SIZE));
>       dev_dbg(dev, "hw_queue_size=0x%08X\n", req_mgr_h->hw_queue_size);
>       if (req_mgr_h->hw_queue_size < MIN_HW_QUEUE_SIZE) {
>               dev_err(dev, "Invalid HW queue size = %u (Min. required is 
> %u)\n",
> @@ -197,12 +197,12 @@ static void request_mgr_complete(struct device *dev, 
> void *dx_compl_h, void __io
>  }
>  
>  static inline int request_mgr_queues_status_check(
> -             struct device *dev,
> +             struct ssi_drvdata *drvdata,
>               struct ssi_request_mgr_handle *req_mgr_h,
> -             void __iomem *cc_base,
>               unsigned int total_seq_len)
>  {
>       unsigned long poll_queue;
> +     struct device *dev = drvdata_to_dev(drvdata);
>  
>       /* SW queue is checked only once as it will not
>        * be chaned during the poll becasue the spinlock_bh
> @@ -222,7 +222,7 @@ static inline int request_mgr_queues_status_check(
>       /* Wait for space in HW queue. Poll constant num of iterations. */
>       for (poll_queue = 0; poll_queue < SSI_MAX_POLL_ITER ; poll_queue++) {
>               req_mgr_h->q_free_slots =
> -                     CC_HAL_READ_REGISTER(CC_REG(DSCRPTR_QUEUE_CONTENT));
> +                     cc_ioread(drvdata, CC_REG(DSCRPTR_QUEUE_CONTENT));
>               if (unlikely(req_mgr_h->q_free_slots <
>                                               req_mgr_h->min_free_hw_slots)) {
>                       req_mgr_h->min_free_hw_slots = req_mgr_h->q_free_slots;
> @@ -288,7 +288,7 @@ int send_request(
>                * in case iv gen add the max size and in case of no dout add 1
>                * for the internal completion descriptor
>                */
> -             rc = request_mgr_queues_status_check(dev, req_mgr_h, cc_base,
> +             rc = request_mgr_queues_status_check(drvdata, req_mgr_h,
>                                                    max_required_seq_len);
>               if (likely(rc == 0))
>                       /* There is enough place in the queue */
> @@ -404,14 +404,13 @@ int send_request(
>  int send_request_init(
>       struct ssi_drvdata *drvdata, struct cc_hw_desc *desc, unsigned int len)
>  {
> -     struct device *dev = drvdata_to_dev(drvdata);
>       void __iomem *cc_base = drvdata->cc_base;
>       struct ssi_request_mgr_handle *req_mgr_h = drvdata->request_mgr_handle;
>       unsigned int total_seq_len = len; /*initial sequence length*/
>       int rc = 0;
>  
>       /* Wait for space in HW and SW FIFO. Poll for as much as FIFO_TIMEOUT. 
> */
> -     rc = request_mgr_queues_status_check(dev, req_mgr_h, cc_base,
> +     rc = request_mgr_queues_status_check(drvdata, req_mgr_h,
>                                            total_seq_len);
>       if (unlikely(rc != 0))
>               return rc;
> @@ -422,7 +421,7 @@ int send_request_init(
>  
>       /* Update the free slots in HW queue */
>       req_mgr_h->q_free_slots =
> -             CC_HAL_READ_REGISTER(CC_REG(DSCRPTR_QUEUE_CONTENT));
> +             cc_ioread(drvdata, CC_REG(DSCRPTR_QUEUE_CONTENT));
>  
>       return 0;
>  }
> @@ -486,7 +485,8 @@ static void proc_completions(struct ssi_drvdata *drvdata)
>  
>                       dev_info(dev, "Delay\n");
>                       for (i = 0; i < 1000000; i++)
> -                             axi_err = READ_REGISTER(drvdata->cc_base + 
> CC_REG(AXIM_MON_ERR));
> +                             axi_err = cc_ioread(drvdata,
> +                                                 CC_REG(AXIM_MON_ERR));
>               }
>  #endif /* COMPLETION_DELAY */
>  
> @@ -507,20 +507,16 @@ static void proc_completions(struct ssi_drvdata 
> *drvdata)
>       }
>  }
>  
> -static inline u32 cc_axi_comp_count(void __iomem *cc_base)
> +static inline u32 cc_axi_comp_count(struct ssi_drvdata *drvdata)
>  {
> -     /* The CC_HAL_READ_REGISTER macro implictly requires and uses
> -      * a base MMIO register address variable named cc_base.
> -      */
>       return FIELD_GET(AXIM_MON_COMP_VALUE,
> -                      CC_HAL_READ_REGISTER(CC_REG(AXIM_MON_COMP)));
> +                      cc_ioread(drvdata, CC_REG(AXIM_MON_COMP)));
>  }
>  
>  /* Deferred service handler, run as interrupt-fired tasklet */
>  static void comp_handler(unsigned long devarg)
>  {
>       struct ssi_drvdata *drvdata = (struct ssi_drvdata *)devarg;
> -     void __iomem *cc_base = drvdata->cc_base;
>       struct ssi_request_mgr_handle *request_mgr_handle =
>                                               drvdata->request_mgr_handle;
>  
> @@ -529,12 +525,16 @@ static void comp_handler(unsigned long devarg)
>       irq = (drvdata->irq & SSI_COMP_IRQ_MASK);
>  
>       if (irq & SSI_COMP_IRQ_MASK) {
> -             /* To avoid the interrupt from firing as we unmask it, we clear 
> it now */
> -             CC_HAL_WRITE_REGISTER(CC_REG(HOST_ICR), SSI_COMP_IRQ_MASK);
> +             /* To avoid the interrupt from firing as we unmask it,
> +              * we clear it now
> +              */
> +             cc_iowrite(drvdata, CC_REG(HOST_ICR), SSI_COMP_IRQ_MASK);
>  
> -             /* Avoid race with above clear: Test completion counter once 
> more */
> +             /* Avoid race with above clear: Test completion counter
> +              * once more
> +              */
>               request_mgr_handle->axi_completed +=
> -                             cc_axi_comp_count(cc_base);
> +                             cc_axi_comp_count(drvdata);
>  
>               while (request_mgr_handle->axi_completed) {
>                       do {
> @@ -543,20 +543,21 @@ static void comp_handler(unsigned long devarg)
>                                * request_mgr_handle->axi_completed is 0.
>                                */
>                               request_mgr_handle->axi_completed =
> -                                             cc_axi_comp_count(cc_base);
> +                                             cc_axi_comp_count(drvdata);

I can't easily see why you are making this change. Is this more than one
thing per patch?

>                       } while (request_mgr_handle->axi_completed > 0);
>  
> -                     /* To avoid the interrupt from firing as we unmask it, 
> we clear it now */
> -                     CC_HAL_WRITE_REGISTER(CC_REG(HOST_ICR), 
> SSI_COMP_IRQ_MASK);
> +                     cc_iowrite(drvdata, CC_REG(HOST_ICR),
> +                                SSI_COMP_IRQ_MASK);
>  
> -                     /* Avoid race with above clear: Test completion counter 
> once more */
>                       request_mgr_handle->axi_completed +=
> -                                     cc_axi_comp_count(cc_base);
> +                                     cc_axi_comp_count(drvdata);

And here again.

>               }
>       }
> -     /* after verifing that there is nothing to do, Unmask AXI completion 
> interrupt */
> -     CC_HAL_WRITE_REGISTER(CC_REG(HOST_IMR),
> -                           CC_HAL_READ_REGISTER(CC_REG(HOST_IMR)) & ~irq);
> +     /* after verifing that there is nothing to do,
> +      * unmask AXI completion interrupt
> +      */
> +     cc_iowrite(drvdata, CC_REG(HOST_IMR),
> +                cc_ioread(drvdata, CC_REG(HOST_IMR)) & ~irq);
>  }
>  
>  /*
> diff --git a/drivers/staging/ccree/ssi_sysfs.c 
> b/drivers/staging/ccree/ssi_sysfs.c
> index b5bc5f8..5d39f15 100644
> --- a/drivers/staging/ccree/ssi_sysfs.c
> +++ b/drivers/staging/ccree/ssi_sysfs.c
> @@ -29,18 +29,17 @@ static ssize_t ssi_sys_regdump_show(struct kobject *kobj,
>  {
>       struct ssi_drvdata *drvdata = sys_get_drvdata();
>       u32 register_value;
> -     void __iomem *cc_base = drvdata->cc_base;
>       int offset = 0;
>  
> -     register_value = CC_HAL_READ_REGISTER(CC_REG(HOST_SIGNATURE));
> +     register_value = cc_ioread(drvdata, CC_REG(HOST_SIGNATURE));
>       offset += scnprintf(buf + offset, PAGE_SIZE - offset, "%s \t(0x%lX)\t 
> 0x%08X\n", "HOST_SIGNATURE       ", DX_HOST_SIGNATURE_REG_OFFSET, 
> register_value);
> -     register_value = CC_HAL_READ_REGISTER(CC_REG(HOST_IRR));
> +     register_value = cc_ioread(drvdata, CC_REG(HOST_IRR));
>       offset += scnprintf(buf + offset, PAGE_SIZE - offset, "%s \t(0x%lX)\t 
> 0x%08X\n", "HOST_IRR             ", DX_HOST_IRR_REG_OFFSET, register_value);
> -     register_value = CC_HAL_READ_REGISTER(CC_REG(HOST_POWER_DOWN_EN));
> +     register_value = cc_ioread(drvdata, CC_REG(HOST_POWER_DOWN_EN));
>       offset += scnprintf(buf + offset, PAGE_SIZE - offset, "%s \t(0x%lX)\t 
> 0x%08X\n", "HOST_POWER_DOWN_EN   ", DX_HOST_POWER_DOWN_EN_REG_OFFSET, 
> register_value);
> -     register_value =  CC_HAL_READ_REGISTER(CC_REG(AXIM_MON_ERR));
> +     register_value =  cc_ioread(drvdata, CC_REG(AXIM_MON_ERR));
>       offset += scnprintf(buf + offset, PAGE_SIZE - offset, "%s \t(0x%lX)\t 
> 0x%08X\n", "AXIM_MON_ERR         ", DX_AXIM_MON_ERR_REG_OFFSET, 
> register_value);
> -     register_value = CC_HAL_READ_REGISTER(CC_REG(DSCRPTR_QUEUE_CONTENT));
> +     register_value = cc_ioread(drvdata, CC_REG(DSCRPTR_QUEUE_CONTENT));
>       offset += scnprintf(buf + offset, PAGE_SIZE - offset, "%s \t(0x%lX)\t 
> 0x%08X\n", "DSCRPTR_QUEUE_CONTENT", DX_DSCRPTR_QUEUE_CONTENT_REG_OFFSET, 
> register_value);
>       return offset;
>  }
> -- 
> 2.7.4
> 
> _______________________________________________
> devel mailing list
> de...@linuxdriverproject.org
> http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

hope this helps,
Tobin.
_______________________________________________
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

Reply via email to