[l2-mtd:master 28/29] drivers/mtd/lpddr/lpddr2_nvm.c:149:2: error: implicit declaration of function 'writel_relaxed'

Brian Norris computersforpeace at gmail.com
Tue May 20 18:49:08 PDT 2014


On Wed, May 21, 2014 at 09:06:44AM +0800, kbuild test robot wrote:
> tree:   git://git.infradead.org/users/dedekind/l2-mtd.git master
> head:   4007e2d175cc83ea728b757e49155826b32fbff8
> commit: 96ba9dd65788a0bd2a7d1e57ec78b7642f0ccc25 [28/29] mtd: lpddr: add driver for LPDDR2-NVM PCM memories
> config: make ARCH=x86_64 allyesconfig
> 
> All error/warnings:
> 
>    drivers/mtd/lpddr/lpddr2_nvm.c: In function 'ow_enable':
> >> drivers/mtd/lpddr/lpddr2_nvm.c:149:2: error: implicit declaration of function 'writel_relaxed' [-Werror=implicit-function-declaration]
>      writel_relaxed(build_mr_cfgmask(pcm_data->bus_width) | 0x18,
>      ^
>    cc1: some warnings being treated as errors
> 
> vim +/writel_relaxed +149 drivers/mtd/lpddr/lpddr2_nvm.c
> 
>    143	 * Register, Device ID, etc
>    144	 */
>    145	static inline void ow_enable(struct map_info *map)
>    146	{
>    147		struct pcm_int_data *pcm_data = map->fldrv_priv;
>    148	
>  > 149		writel_relaxed(build_mr_cfgmask(pcm_data->bus_width) | 0x18,
>    150			pcm_data->ctl_regs + LPDDR2_MODE_REG_CFG);
>    151		writel_relaxed(0x01, pcm_data->ctl_regs + LPDDR2_MODE_REG_DATA);
>    152	}

This is because writel_relaxed is not implemented consistently across
all architectures. It looks like Will Deacon is trying to fix this.

  https://lkml.org/lkml/2014/4/17/267

Vincenzo,

What do you think? Should we:

 1. Limit your driver to ARM (or other ARCH that supports
    writel_relaxed()?
 2. Use writel() instead?
 3. Wait for other ARCH'es to support writel_relaxed()?

Brian



More information about the linux-mtd mailing list