From: Michal Simek <monstr@monstr.eu>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 3/3] dm: sf: Add support for all targets which requires MANUAL_RELOC
Date: Wed, 28 Oct 2015 10:51:49 +0100 [thread overview]
Message-ID: <56309AB5.9000105@monstr.eu> (raw)
In-Reply-To: <dfa1a451f4e9c46bfeed445f4a73984c0c2eb952.1445958066.git.michal.simek@xilinx.com>
On 10/27/2015 04:01 PM, Michal Simek wrote:
> It is follow up patch based on
> "dm: Add support for all targets which requires MANUAL_RELOC"
> (sha1: 484fdf5ba058b07be5ca82763aa2b72063540ef3)
> to update function pointers for DM.
>
> Using post_bind is not ideal but it is one on current option what can be
> used. Variable reloc_done has to be used do not call relocation after
> every bind. Maybe new core functions should be introduced for this case.
>
> Signed-off-by: Michal Simek <michal.simek@xilinx.com>
> ---
>
> drivers/mtd/spi/sf-uclass.c | 22 ++++++++++++++++++++++
> 1 file changed, 22 insertions(+)
>
> diff --git a/drivers/mtd/spi/sf-uclass.c b/drivers/mtd/spi/sf-uclass.c
> index 350e21aa7d65..07204094cfce 100644
> --- a/drivers/mtd/spi/sf-uclass.c
> +++ b/drivers/mtd/spi/sf-uclass.c
> @@ -11,6 +11,8 @@
> #include <dm/device-internal.h>
> #include "sf_internal.h"
>
> +DECLARE_GLOBAL_DATA_PTR;
> +
> int spi_flash_read_dm(struct udevice *dev, u32 offset, size_t len, void *buf)
> {
> return sf_get_ops(dev)->read(dev, offset, len, buf);
> @@ -72,8 +74,28 @@ int spi_flash_remove(struct udevice *dev)
> return device_remove(dev);
> }
>
> +static int reloc_done;
> +
> +static int spi_flash_post_bind(struct udevice *dev)
> +{
> + struct dm_spi_flash_ops *ops = sf_get_ops(dev);
> +
> + if (!reloc_done) {
> + if (ops->read)
> + ops->read += gd->reloc_off;
> + if (ops->write)
> + ops->write += gd->reloc_off;
> + if (ops->erase)
> + ops->erase += gd->reloc_off;
> +
> + reloc_done++;
> + }
> + return 0;
> +}
> +
This is missing some #if defined(CONFIG_NEEDS_MANUAL_RELOC) around.
Will fix it in v2 but would like to know if this is the best way how to
call this because I am not convinced about it.
That solution with static variable is not the best one.
Thanks,
Michal
--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20151028/45006417/attachment.sig>
next prev parent reply other threads:[~2015-10-28 9:51 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-27 15:01 [U-Boot] [PATCH 1/3] dm: spi: Add support for all targets which requires MANUAL_RELOC Michal Simek
2015-10-27 15:01 ` [U-Boot] [PATCH 2/3] dm: core: Add missing entries for manual relocation Michal Simek
2015-10-29 17:18 ` Simon Glass
2015-10-30 5:47 ` Michal Simek
2015-10-27 15:01 ` [U-Boot] [PATCH 3/3] dm: sf: Add support for all targets which requires MANUAL_RELOC Michal Simek
2015-10-28 9:51 ` Michal Simek [this message]
2015-10-29 17:19 ` [U-Boot] [PATCH 1/3] dm: spi: " Simon Glass
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=56309AB5.9000105@monstr.eu \
--to=monstr@monstr.eu \
--cc=u-boot@lists.denx.de \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.