[PATCH V7 2/3] qe_common: add qe_muram_ functions to manage muram

Zhao Qiang qiang.zhao at freescale.com
Sun Sep 6 16:37:02 AEST 2015


On Mon, 2015-09-2 at 8:34 +0800, Wood Scott-B07421 wrote:
> -----Original Message-----
> From: Wood Scott-B07421
> Sent: Wednesday, September 02, 2015 8:34 AM
> To: Zhao Qiang-B45475
> Cc: linux-kernel at vger.kernel.org; linuxppc-dev at lists.ozlabs.org;
> lauraa at codeaurora.org; Xie Xiaobo-R63061; benh at kernel.crashing.org; Li
> Yang-Leo-R58472; paulus at samba.org
> Subject: Re: [PATCH V7 2/3] qe_common: add qe_muram_ functions to manage
> muram
> 
> On Mon, 2015-08-31 at 16:58 +0800, Zhao Qiang wrote:
> 
> > @@ -187,12 +190,25 @@ static inline int qe_alive_during_sleep(void)  }
> >
> >  /* we actually use cpm_muram implementation, define this for
> > convenience */ -#define qe_muram_init cpm_muram_init -#define
> > qe_muram_alloc cpm_muram_alloc -#define qe_muram_alloc_fixed
> > cpm_muram_alloc_fixed -#define qe_muram_free cpm_muram_free -#define
> > qe_muram_addr cpm_muram_addr -#define qe_muram_offset cpm_muram_offset
> > +#define cpm_muram_init qe_muram_init
> > +#define cpm_muram_alloc qe_muram_alloc #define cpm_muram_alloc_fixed
> > +qe_muram_alloc_fixed #define cpm_muram_free qe_muram_free #define
> > +cpm_muram_addr qe_muram_addr #define cpm_muram_offset qe_muram_offset
> 
> Why?  This is unnecessary churn.
> 
This is necessary. QE is on both ARM and PowerPC, its code is under public code.
But CPM is only on PowerPC and its code is under PowerPC.
So when build ARM, QE will not find cpm_muram_* function.
> 
> 
> >
> > -int cpm_muram_init(void)
> > -{
> > -     struct device_node *np;
> > -     struct resource r;
> > -     u32 zero[OF_MAX_ADDR_CELLS] = {};
> > -     resource_size_t max = 0;
> > -     int i = 0;
> > -     int ret = 0;
> > -
> > -     if (muram_pbase)
> > -             return 0;
> > -
> > -     spin_lock_init(&cpm_muram_lock);
> > -     /* initialize the info header */
> > -     rh_init(&cpm_muram_info, 1,
> > -             sizeof(cpm_boot_muram_rh_block) /
> > -             sizeof(cpm_boot_muram_rh_block[0]),
> > -             cpm_boot_muram_rh_block);
> > -
> > -     np = of_find_compatible_node(NULL, NULL, "fsl,cpm-muram-data");
> > -     if (!np) {
> > -             /* try legacy bindings */
> > -             np = of_find_node_by_name(NULL, "data-only");
> > -             if (!np) {
> > -                     printk(KERN_ERR "Cannot find CPM muram data
> node");
> > -                     ret = -ENODEV;
> > -                     goto out;
> > -             }
> > -     }
> > -
> > -     muram_pbase = of_translate_address(np, zero);
> > -     if (muram_pbase == (phys_addr_t)OF_BAD_ADDR) {
> > -             printk(KERN_ERR "Cannot translate zero through CPM muram
> node");
> > -             ret = -ENODEV;
> > -             goto out;
> > -     }
> > 
> -Scott



More information about the Linuxppc-dev mailing list