From: Heiko Schocher <hs@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v3 8/9] tegra: i2c: Enable new CONFIG_SYS_I2C framework
Date: Wed, 31 Jul 2013 09:36:19 +0200 [thread overview]
Message-ID: <51F8BE73.2010101@denx.de> (raw)
In-Reply-To: <20130731090644.2b4ce215@lilith>
Hello Albert,
Am 31.07.2013 09:06, schrieb Albert ARIBAUD:
> Hi Wolfgang,
>
> On Wed, 31 Jul 2013 07:18:21 +0200, Wolfgang Denk<wd@denx.de> wrote:
>
>> Dear Albert ARIBAUD,
>>
>> In message<20130731000921.724f5c71@lilith> you wrote:
>>>
>>> board_init_f() is supposed to initialize just enough of the system to
>>> allow relocation. Is initializing i2c necessary in this context?
>>
>> On some boards, yes. For example, if they store the environment in an
>> I2C attached EEPROM. Then you need I2C support early, before console,
>> to read for example the baudrate setting.
>
> Thanks, so some I2C reads are needed. Next question: on these boards,
> do these I2C reads require DT reads? Maybe a few hard-coded low level
If I understand the tegra driver, dt reads are needed for init
the i2c driver ... but this should be done in the i2c driver
init function ... and this should be possible without writes
> I2C reads are enough. I guess DT writes are completely unneeded at
> that point. Also, why exactly do I2C and, as the case may be, DT, need
> to write to .data?
I2c do not write before relocation (I hope so), see:
drivers/i2c/i2c_core.c
All writes to internal i2c structs are (should be) protected by a:
if (gd->flags & GD_FLG_RELOC) {
but using i2c write/reads are possible.
> More generally, while I think the board_init_f() part of U-Boot should
> be as short and compact as possible, I understand and admit that it
> might have to read from just about any (local) storage resource, be it
> environment or DT or any stored information it needs.
>
> On the other hand, it may be hard to immediately know what functions
> throughout U-boot are safe to call from within board_init_f(); maybe we
> should start thinking about checking and marking these, the simplest
> way being to suffix them with "_f" once we have made sure they are safe
> to call from within board_init_f().
Hmmm... Maybe instead we should think (also in thinking common bring
up for all boards) about:
getting rid of board_init_f in u-boot code, instead use for all
boards spl code to init needed things and copy and relocate u-boot
to ram in spl code ... so we have in u-boot no longer such
restictions ... but thats just an idea which whirs in my head ...
without thinking to deep in it.
But this approach would have some advantages ...
> But we should strictly limit the scope of board_init_f() or we'll find
> the board_init_f()/board_init_r() pair following a patch similar to the
> SPL/U-Boot pair, where SPL started out as a tiny helper piece of code
> and ending up a resizeable (and, I dare to say, sizeable as well) kind
> of U-boot. If we let too many features slip in board_init_f(), it'll
> blur into a board_init_r() like and before we know it, it'll *require*
> DDR, and write access to it too...
>
> So, board_init_() should *strictly* be limited to setting up a console
> (for information purposes) and giving access to DDR while in the same
> time never writing to it itself. Bonus points if it can limit itself to
> *enabling* and postpone any *optimizing*(I am thinking of DDR settings
> here and no, I don't have specific existing cases in mind; just sayin').
>
> In the present instance, I'd rather we either:
>
> - removed dependency on DT etc. by using "hard-coded" low level I2C
> reads for those boards that need it (I assume that for each of these
> boards the I2C slave, offset, and length to read are constant) in _f
> phase, or
But DT is used for initializing the i2c driver in tegra ...
> - parsed the _f phase looking for offending functions or calls which
> write to .data or .bss and fix them, suffixing them with _f; in
> essence, that amounts to starting the implementation of my suggestion
> above alongside fixing the issue at hand.
>
> The first approach is rather "let's bring the thing back up first", so
> it does not have my preference, but I would understand the need to
> quickly fix things.
Yes.
> The second approach seems to be going in the same direction as Heiko's
> proposal of 07:52 +0200, which I thus second provided it is applicable
> to all the boards Wolfgang had in mind.
Lets do us this step as fixup ;-)
bye,
Heiko
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
next prev parent reply other threads:[~2013-07-31 7:36 UTC|newest]
Thread overview: 104+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-05-04 12:01 [U-Boot] [PATCH v3 0/9] Bring in new I2C framework Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 1/9] i2c: add i2c_core and prepare for new multibus support Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 2/9] i2c: common changes for multibus/multiadapter support Heiko Schocher
2013-05-06 16:39 ` Daniel Schwierzeck
2013-05-07 13:05 ` Heiko Schocher
2013-05-11 21:17 ` Simon Glass
2013-05-13 4:47 ` Heiko Schocher
2013-05-11 21:33 ` Simon Glass
2013-05-13 5:41 ` Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 3/9] i2c, soft-i2c: switch to new " Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 4/9] i2c, fsl_i2c: " Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 5/9] i2c, multibus: get rid of CONFIG_I2C_MUX Heiko Schocher
2013-05-06 12:23 ` Holger Brunck
2013-05-06 13:57 ` Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 6/9] i2c, multibus, keymile: get rid of EEprom_ivm envvariable Heiko Schocher
2013-05-06 12:24 ` Holger Brunck
2013-05-06 13:58 ` Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 7/9] tegra: i2c: Add function to know about current bus Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 8/9] tegra: i2c: Enable new CONFIG_SYS_I2C framework Heiko Schocher
2013-05-06 19:08 ` Stephen Warren
2013-05-07 8:01 ` [U-Boot] [PATCH v3 8/9] tegra: i2c: Enable new CONFIG_SYS_I2Cframework Marc Dietrich
2013-05-07 14:55 ` Stephen Warren
2013-05-07 16:17 ` Simon Glass
2013-05-08 4:11 ` Heiko Schocher
2013-05-07 13:07 ` [U-Boot] [PATCH v3 8/9] tegra: i2c: Enable new CONFIG_SYS_I2C framework Heiko Schocher
[not found] ` <5FBF8E85CA34454794F0F7ECBA79798F37ACAFEF3F@HQMAIL04.nvidia.com>
2013-05-07 13:12 ` Heiko Schocher
2013-07-29 16:12 ` Stephen Warren
2013-07-30 4:28 ` Heiko Schocher
2013-07-30 4:34 ` Simon Glass
2013-07-30 18:56 ` Stephen Warren
2013-07-31 4:29 ` Heiko Schocher
2013-07-30 19:22 ` Stephen Warren
2013-07-30 20:00 ` Stephen Warren
2013-07-30 21:21 ` Simon Glass
2013-07-30 21:32 ` Stephen Warren
2013-07-30 21:46 ` Simon Glass
2013-07-30 21:51 ` Stephen Warren
2013-07-30 22:05 ` Simon Glass
2013-07-31 5:46 ` Heiko Schocher
2013-07-31 19:31 ` Stephen Warren
2013-08-01 4:32 ` Heiko Schocher
2013-08-01 5:39 ` Stephen Warren
2013-08-01 6:02 ` Heiko Schocher
2013-08-01 6:53 ` Albert ARIBAUD
2013-08-01 8:38 ` Heiko Schocher
2013-08-01 14:22 ` Simon Glass
2013-08-01 15:06 ` Heiko Schocher
2013-08-01 20:16 ` Albert ARIBAUD
2013-08-02 19:32 ` Simon Glass
2013-08-01 20:14 ` Albert ARIBAUD
2013-08-01 20:34 ` Stephen Warren
2013-08-01 20:32 ` Stephen Warren
2013-08-02 4:40 ` Heiko Schocher
2013-08-02 19:35 ` Simon Glass
2013-08-02 21:43 ` Stephen Warren
2013-08-03 3:55 ` Heiko Schocher
2013-08-05 15:40 ` Simon Glass
2013-08-05 17:28 ` Stephen Warren
2013-08-05 20:12 ` Simon Glass
2013-08-05 20:15 ` Stephen Warren
2013-08-05 17:59 ` Stephen Warren
2013-07-30 22:09 ` Albert ARIBAUD
2013-07-30 22:11 ` Simon Glass
2013-07-31 5:18 ` Wolfgang Denk
2013-07-31 5:55 ` Heiko Schocher
2013-07-31 7:06 ` Albert ARIBAUD
2013-07-31 7:36 ` Heiko Schocher [this message]
2013-07-31 8:16 ` Albert ARIBAUD
2013-07-31 8:31 ` Heiko Schocher
2013-07-31 9:38 ` Albert ARIBAUD
2013-07-31 12:30 ` Simon Glass
2013-07-31 13:03 ` Heiko Schocher
2013-07-31 19:41 ` Stephen Warren
2013-08-01 4:32 ` Heiko Schocher
2013-07-31 19:39 ` Wolfgang Denk
2013-07-31 5:52 ` Heiko Schocher
2013-07-31 5:03 ` Heiko Schocher
2013-08-05 19:21 ` Stephen Warren
2013-08-05 20:08 ` Tom Rini
2013-08-05 21:06 ` Stephen Warren
2013-08-05 23:18 ` Stephen Warren
2013-07-30 21:19 ` Simon Glass
2013-07-30 21:21 ` Stephen Warren
2013-07-30 21:45 ` Simon Glass
2013-07-31 5:01 ` Heiko Schocher
2013-05-04 12:01 ` [U-Boot] [PATCH v3 9/9] i2c, ppc4xx_i2c: switch to new multibus/multiadapter support Heiko Schocher
2013-05-06 6:52 ` Stefan Roese
2013-05-06 8:57 ` [U-Boot] [PATCH v3 0/9] Bring in new I2C framework Dirk Eibach
2013-05-06 14:11 ` Heiko Schocher
2013-05-17 13:17 ` Piotr Wilczek
2013-05-18 17:41 ` Simon Glass
2013-05-20 6:13 ` Piotr Wilczek
2013-06-19 22:07 ` Simon Glass
2013-06-20 3:38 ` Heiko Schocher
2013-06-20 5:50 ` Minkyu Kang
2013-06-20 6:41 ` Piotr Wilczek
2013-06-20 7:14 ` Heiko Schocher
2013-06-20 8:34 ` Piotr Wilczek
2013-06-20 9:19 ` Heiko Schocher
2013-06-20 5:52 ` Piotr Wilczek
2013-06-20 6:52 ` Dirk Eibach
2013-06-20 7:59 ` Heiko Schocher
2013-06-20 8:20 ` Dirk Eibach
2013-06-20 9:11 ` Heiko Schocher
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=51F8BE73.2010101@denx.de \
--to=hs@denx.de \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox