From: tony@atomide.com (Tony Lindgren)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 0/6] omap: Board specific muxing using hwmod
Date: Wed, 22 Dec 2010 19:07:58 -0800 [thread overview]
Message-ID: <20101223030757.GL7771@atomide.com> (raw)
In-Reply-To: <alpine.DEB.2.00.1012210739570.1446@utopia.booyaka.com>
* Paul Walmsley <paul@pwsan.com> [101221 09:03]:
> Hi,
>
> On Thu, 2 Dec 2010, Tony Lindgren wrote:
>
> > Here are some patches to allow us to pass the board specific mux data
> > to the platform level device init code, and then allow hwmod state
> > changes to do the pin muxing.
> >
> > Dynamic remuxing is also supported as needed, the last patch in this
> > series sets up the board-*.c data for n8x0 to do uart3 rx pin remuxing
> > for the idle modes.
>
> Tony and I have been discussing these patches recently. Here are some of
> the topics from that conversation, to share with the lists. Tony, I hope
> I've summarized our discussions accurately; please correct anything you
> feel I've misstated below. For those new to OMAP mux/padconf discussions,
> there is a short glossary at the bottom of this message that might be
> useful.
Yeah, that's a good summary, adding few more comments below.
> - We also discussed that it might make sense to defer adding a bdata the
> omap_device_build() interface for this merge window, until we had a better
> sense of the use cases and how the board data relates to the
> platform_data. We agreed that, in general, we should try to move as much
> of the common padconf details as possible out of the individual board
> files.
I've now dropped the omap_device_build parts from the patches. For now,
we can populate the hwmod mux data from each platform init function.
> Based on the discussion and review, I had a few specific comments on the
> patches:
>
> - It looks like patch 6 can use static mux directives for all but one of
> its dynamic padconf reprogramming entries (uart3_rx_irrx). In terms of
> enable/idle padconf reprogramming, it might be worth trying to minimize
> the number of these, since many IP blocks can switch frequently between
> idled and enabled states.
Good point, I've changed the n8x0 related patch to keep uart3 rx there
for now. In the long run we probably want to have a separate list for
dynamic pins. The other pins we should still enable during init and disable
when the driver is removed. But that can be added later.
> - It seems like it might be problematic to program CONTROL_PADCONF
> registers based on the enabled/idled/shutdown state of a single hwmod.
> This is because the CONTROL_PADCONF settings affect multiple hwmods. For
> example, the correct setting of ETK_D1 pad on OMAP3 can depend on the
> state of several different hwmods: ETK, McSPI3, HSUSB, GPIO1. If dynamic
> padconf reprogramming directives for the same pad(s) (e.g., ETK_D1) are
> associated with more than one of these hwmods, then the final padconf
> setting could be unpredictable: basically, the last hwmod to change state
> will be the one that determines the setting of the padconf register.
> Ultimately, it may be necessary to make dynamic padconf reprogramming
> directives conditional on the states of all of the hwmods that are
> associated with a pad. For example, something like this:
>
> omap_mux_add_dynamic_remux(etk_hwmod, HWMOD_STATE_NOT_ENABLED,
> mcspi3_hwmod, HWMOD_STATE_ENABLED,
> hsusb1_hwmod, HWMOD_STATE_NOT_ENABLED,
> gpio1_hwmod, HWMOD_STATE_DONT_CARE,
> "etk_d1", OMAP_MUX_MODE1)
>
> meaning that pad "etk_d1" would only be programmed to mode 1 (mcspi3_somi)
> when:
>
> (etk_hwmod_state != HWMOD_STATE_ENABLED) &&
> (mcspi3_hwmod_state == HWMOD_STATE_ENABLED) &&
> (hsusb1_hwmod == HWMOD_STATE_NOT_ENABLED)
>
> This may not be necessary to implement right away, since the use cases are
> not clear; and code to implement this will need some careful engineering
> to keep it from becoming too heavyweight. If it does become necessary, it
> seems that this type of data would then be best stored in some higher
> layer than the struct hwmod.
Yes these kind of issues need to be dealt separately. Probably the best
place to deal with shared pins in each board-*.c file.
> We also discussed one other general comment about the mux layer - not
> related to these patches. Since some signals can appear on multiple pads,
> at some point in the future, maybe in the future it might be useful to
> allow board files to specify their pad configurations in terms of (package
> ID, ball ID) -> (signal ID) -- so, for example, (CUS, AC11) -> (gpio_81).
> The idea being that the board designer, using a PCB design tool, might
> someday be able to export a list of padconf settings out of their EDA
> tools that we could use in the board files. Looking at the OMAP3530 IBIS
> model at
>
> http://focus.ti.com/lit/mo/symlink/omap3530-25_cus__ibis_model.ibs
>
> it includes both the ball ID (which it calls the "pin") and the pad/mode 0
> name (which it calls the "signal name").
That can be added easily, but depends on CONFIG_DEBUG_FS for the ball IDs
currently.
Regards,
Tony
prev parent reply other threads:[~2010-12-23 3:07 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-03 0:45 [PATCH 0/6] omap: Board specific muxing using hwmod Tony Lindgren
2010-12-03 0:45 ` [PATCH 1/6] omap2+: Add omap_mux_get_by_name Tony Lindgren
2010-12-03 0:45 ` [PATCH 2/6] omap2+: Add support for hwmod specific muxing of devices Tony Lindgren
2010-12-23 2:46 ` Tony Lindgren
2010-12-03 0:45 ` [PATCH 3/6] omap2+: Allow hwmod state changes to mux pads based on the state changes Tony Lindgren
2010-12-23 2:48 ` Tony Lindgren
2010-12-03 0:45 ` [PATCH 4/6] omap2+: Add struct omap_device_board_data and allow omap_device_build initialize pads to mux Tony Lindgren
2010-12-23 2:49 ` Tony Lindgren
2010-12-03 0:45 ` [PATCH 5/6] omap2+: Use omap_device_board_data for platform level serial init Tony Lindgren
2010-12-23 2:51 ` Tony Lindgren
2010-12-03 0:45 ` [PATCH 6/6] omap2+: Initialize serial ports for wake-up events for n8x0 Tony Lindgren
2010-12-14 3:17 ` Kevin Hilman
2010-12-18 17:53 ` Tony Lindgren
2010-12-23 2:53 ` Tony Lindgren
2010-12-21 17:04 ` [PATCH 0/6] omap: Board specific muxing using hwmod Paul Walmsley
2010-12-23 3:07 ` Tony Lindgren [this message]
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=20101223030757.GL7771@atomide.com \
--to=tony@atomide.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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;
as well as URLs for NNTP newsgroup(s).