Linux MIPS Architecture development
 help / color / mirror / Atom feed
From: Hauke Mehrtens <hauke@hauke-m.de>
To: "Rafał Miłecki" <zajec5@gmail.com>,
	linux-mips@linux-mips.org, "Ralf Baechle" <ralf@linux-mips.org>
Subject: Re: [PATCH V2] MIPS: BCM47XX: Make ssb init NVRAM instead of bcm47xx polling it
Date: Wed, 03 Sep 2014 22:08:33 +0200	[thread overview]
Message-ID: <54077541.3090006@hauke-m.de> (raw)
In-Reply-To: <1409744065-24334-1-git-send-email-zajec5@gmail.com>

On 09/03/2014 01:34 PM, Rafał Miłecki wrote:
> This makes NVRAM code less bcm47xx/ssb specific allowing it to become a
> standalone driver in the future. A similar patch for bcma will follow
> when it's ready.
> 
> Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
> ---
> This patch depends on
> [PATCH] MIPS: BCM47XX: Get rid of calls to KSEG1ADDR in nvram
> 
> V2: Typo in commit message s/bcma/ssb/
> ---
>  arch/mips/bcm47xx/nvram.c     | 30 +++++++++---------------------
>  drivers/ssb/driver_mipscore.c | 18 +++++++++++++++++-
>  2 files changed, 26 insertions(+), 22 deletions(-)
> 
> diff --git a/arch/mips/bcm47xx/nvram.c b/arch/mips/bcm47xx/nvram.c
> index 2f0a646..8ea2116 100644
> --- a/arch/mips/bcm47xx/nvram.c
> +++ b/arch/mips/bcm47xx/nvram.c
> @@ -98,7 +98,14 @@ found:
>  	return 0;
>  }
>  
> -static int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
> +/*
> + * On bcm47xx we need access to the NVRAM very early, so we can't use mtd
> + * subsystem to access flash. We can't even use platform device / driver to
> + * store memory offset.
> + * To handle this we provide following symbol. It's supposed to be called as
> + * soon as we get info about flash device, before any NVRAM entry is needed.
> + */
> +int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
>  {
>  	void __iomem *iobase;
>  
> @@ -109,25 +116,6 @@ static int bcm47xx_nvram_init_from_mem(u32 base, u32 lim)
>  	return nvram_find_and_copy(iobase, lim);
>  }
>  
> -#ifdef CONFIG_BCM47XX_SSB
> -static int nvram_init_ssb(void)
> -{
> -	struct ssb_mipscore *mcore = &bcm47xx_bus.ssb.mipscore;
> -	u32 base;
> -	u32 lim;
> -
> -	if (mcore->pflash.present) {
> -		base = mcore->pflash.window;
> -		lim = mcore->pflash.window_size;
> -	} else {
> -		pr_err("Couldn't find supported flash memory\n");
> -		return -ENXIO;
> -	}
> -
> -	return bcm47xx_nvram_init_from_mem(base, lim);
> -}
> -#endif
> -
>  #ifdef CONFIG_BCM47XX_BCMA
>  static int nvram_init_bcma(void)
>  {
> @@ -163,7 +151,7 @@ static int nvram_init(void)
>  	switch (bcm47xx_bus_type) {
>  #ifdef CONFIG_BCM47XX_SSB
>  	case BCM47XX_BUS_TYPE_SSB:
> -		return nvram_init_ssb();
> +		break;
>  #endif
>  #ifdef CONFIG_BCM47XX_BCMA
>  	case BCM47XX_BUS_TYPE_BCMA:
> diff --git a/drivers/ssb/driver_mipscore.c b/drivers/ssb/driver_mipscore.c
> index 0907706..c51802f 100644
> --- a/drivers/ssb/driver_mipscore.c
> +++ b/drivers/ssb/driver_mipscore.c
> @@ -207,9 +207,17 @@ static void ssb_mips_serial_init(struct ssb_mipscore *mcore)
>  		mcore->nr_serial_ports = 0;
>  }
>  
> +/* bcm47xx_nvram isn't a separated driver yet and doesn't have its own header.
> + * Once we make it a standalone driver, remove following extern!
> + */
> +#ifdef CONFIG_BCM47XX
> +extern int bcm47xx_nvram_init_from_mem(u32 base, u32 lim);
> +#endif
> +

I do not like forward declarations, could you add this to the nvram
header file and make this file include it. When we move the nvram header
file to /include/linux/... we can provide an empty implementation and
get rid of all these ugly ifdef.

>  static void ssb_mips_flash_detect(struct ssb_mipscore *mcore)
>  {
>  	struct ssb_bus *bus = mcore->dev->bus;
> +	struct ssb_sflash *sflash = &mcore->sflash;
>  	struct ssb_pflash *pflash = &mcore->pflash;
>  
>  	/* When there is no chipcommon on the bus there is 4MB flash */
> @@ -242,7 +250,15 @@ static void ssb_mips_flash_detect(struct ssb_mipscore *mcore)
>  	}
>  
>  ssb_pflash:
> -	if (pflash->present) {
> +	if (sflash->present) {
> +#ifdef CONFIG_BCM47XX
> +		bcm47xx_nvram_init_from_mem(sflash->window, sflash->size);
> +#endif
> +	} else if (pflash->present) {
> +#ifdef CONFIG_BCM47XX
> +		bcm47xx_nvram_init_from_mem(pflash->window, pflash->window_size);
> +#endif
> +
>  		ssb_pflash_data.width = pflash->buswidth;
>  		ssb_pflash_resource.start = pflash->window;
>  		ssb_pflash_resource.end = pflash->window + pflash->window_size;
> 

  reply	other threads:[~2014-09-03 20:08 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-03 11:32 [PATCH] MIPS: BCM47XX: Make bcma init NVRAM instead of bcm47xx polling it Rafał Miłecki
2014-09-03 11:34 ` [PATCH V2] MIPS: BCM47XX: Make ssb " Rafał Miłecki
2014-09-03 20:08   ` Hauke Mehrtens [this message]
2014-09-03 20:59   ` [PATCH V3] " Rafał Miłecki
2014-09-07 20:05     ` Hauke Mehrtens

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=54077541.3090006@hauke-m.de \
    --to=hauke@hauke-m.de \
    --cc=linux-mips@linux-mips.org \
    --cc=ralf@linux-mips.org \
    --cc=zajec5@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox