All of lore.kernel.org
 help / color / mirror / Atom feed
From: Russell King - ARM Linux <linux@arm.linux.org.uk>
To: Olof Johansson <olof@lixom.net>
Cc: Jean-Francois Moine <moinejf@free.fr>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>
Subject: Re: [PATCH v3 16/24] drm/i2c: tda998x: add DT documentation
Date: Wed, 22 Jan 2014 22:40:39 +0000	[thread overview]
Message-ID: <20140122224039.GM15937@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAOesGMhngiw+f8bkfB9C4COTPksXg_ZsYA-p1r5WJ6FZuBE3KQ@mail.gmail.com>

On Tue, Jan 21, 2014 at 10:17:56AM -0800, Olof Johansson wrote:
> Ok, this is a classic case where the binding should describe how
> things are configured/wired up instead of hardcoding a register value
> like this. From the data sheet there seems to be a _lot_ of settings,
> so selecting the needed subset for now might be acceptable (and go
> with defaults on the rest).

The issue is not that simple, because the register is kind of backwards.

Rather than describing what is on each nibble of the input bus, you
specify how each nibble of the internal bus maps to the external world.
The internal bus is mostly fixed as to which nibbles are red, green and
blue (there is internal support for swapping red/blue on the internal
bus, but we don't use that - it just adds extra unnecessary headaches
to the mapping.)

The way I ended up describing it in platform data was via the individual
nibble settings for the register:

        .swap_a = 2,
        .swap_b = 3,
        .swap_c = 4,
        .swap_d = 5,
        .swap_e = 0,
        .swap_f = 1,

which gives you a way to refer back to the data sheet.  There's also the
control whether the nibble is bit-big-endian or bit-little-endian.

So basically, swap_a controls which nibble of the input bus is mapped to
the internal bus bits 23:20, and mirror_a whether it's bit 0123 -> 0123
or 0123 -> 3210.

This means it's possible to tell the chip that each nibble of the interal
bus comes from the same four pins!

If we want to describe what each nibble set on the input pins does, it's
going to make for some complex code to convert that from "forward" notation
(which we'll have to invent) to the "reverse" notation that the chip needs.

-- 
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up.  Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".

WARNING: multiple messages have this Message-ID (diff)
From: linux@arm.linux.org.uk (Russell King - ARM Linux)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 16/24] drm/i2c: tda998x: add DT documentation
Date: Wed, 22 Jan 2014 22:40:39 +0000	[thread overview]
Message-ID: <20140122224039.GM15937@n2100.arm.linux.org.uk> (raw)
In-Reply-To: <CAOesGMhngiw+f8bkfB9C4COTPksXg_ZsYA-p1r5WJ6FZuBE3KQ@mail.gmail.com>

On Tue, Jan 21, 2014 at 10:17:56AM -0800, Olof Johansson wrote:
> Ok, this is a classic case where the binding should describe how
> things are configured/wired up instead of hardcoding a register value
> like this. From the data sheet there seems to be a _lot_ of settings,
> so selecting the needed subset for now might be acceptable (and go
> with defaults on the rest).

The issue is not that simple, because the register is kind of backwards.

Rather than describing what is on each nibble of the input bus, you
specify how each nibble of the internal bus maps to the external world.
The internal bus is mostly fixed as to which nibbles are red, green and
blue (there is internal support for swapping red/blue on the internal
bus, but we don't use that - it just adds extra unnecessary headaches
to the mapping.)

The way I ended up describing it in platform data was via the individual
nibble settings for the register:

        .swap_a = 2,
        .swap_b = 3,
        .swap_c = 4,
        .swap_d = 5,
        .swap_e = 0,
        .swap_f = 1,

which gives you a way to refer back to the data sheet.  There's also the
control whether the nibble is bit-big-endian or bit-little-endian.

So basically, swap_a controls which nibble of the input bus is mapped to
the internal bus bits 23:20, and mirror_a whether it's bit 0123 -> 0123
or 0123 -> 3210.

This means it's possible to tell the chip that each nibble of the interal
bus comes from the same four pins!

If we want to describe what each nibble set on the input pins does, it's
going to make for some complex code to convert that from "forward" notation
(which we'll have to invent) to the "reverse" notation that the chip needs.

-- 
FTTC broadband for 0.8mile line: 5.8Mbps down 500kbps up.  Estimation
in database were 13.1 to 19Mbit for a good line, about 7.5+ for a bad.
Estimate before purchase was "up to 13.2Mbit".

  reply	other threads:[~2014-01-22 22:40 UTC|newest]

Thread overview: 120+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1390153344.git.moinejf@free.fr>
2014-01-19 18:58 ` [PATCH v3 01/24] drm/i2c: tda998x: simplify the i2c read/write functions Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 02/24] drm/i2c: tda998x: check more I/O errors Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 21:21   ` Russell King - ARM Linux
2014-01-22 21:21     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 04/24] drm/i2c: tda998x: change probe message origin Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 03/24] drm/i2c: tda998x: code cleanup Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 21:22   ` Russell King - ARM Linux
2014-01-22 21:22     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 05/24] drm/i2c: tda998x: don't freeze the system at audio startup time Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 06/24] drm/i2c: tda998x: force the page register at " Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 07/24] drm/i2c: tda998x: set the video mode from the adjusted value Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 21:28   ` Russell King - ARM Linux
2014-01-22 21:28     ` Russell King - ARM Linux
2014-01-23 23:29   ` Darren Etheridge
2014-01-23 23:29     ` Darren Etheridge
2014-01-23 23:29     ` Darren Etheridge
2014-01-28 17:12     ` Jean-Francois Moine
2014-01-28 17:12       ` Jean-Francois Moine
2014-01-28 17:12       ` Jean-Francois Moine
2014-01-28 19:24       ` Darren Etheridge
2014-01-28 19:24         ` Darren Etheridge
2014-01-28 19:24         ` Darren Etheridge
2014-01-19 18:58 ` [PATCH v3 08/24] drm/i2c: tda998x: fix bad value in the AIF Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 12/24] drm/i2c: tda998x: check the CEC device creation Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 11/24] drm/i2c: tda998x: free the CEC device on encoder_destroy Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 09/24] drm/i2c: tda998x: use HDMI constants Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 10/24] drm/i2c: tda998x: don't read write-only registers Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 21:35   ` Russell King - ARM Linux
2014-01-22 21:35     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 13/24] drm/i2c: tda998x: fix a NULL pointer dereference Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 21:41   ` Russell King - ARM Linux
2014-01-22 21:41     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 15/24] drm/i2c: tda998x: use irq for connection status and EDID read Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 22:27   ` Russell King - ARM Linux
2014-01-22 22:27     ` Russell King - ARM Linux
2014-01-24 17:29     ` Sebastian Hesselbarth
2014-01-24 17:29       ` Sebastian Hesselbarth
2014-01-24 17:47       ` Russell King - ARM Linux
2014-01-24 17:47         ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 14/24] drm/i2c: tda998x: add DT support Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 21:37   ` Russell King - ARM Linux
2014-01-22 21:37     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 17/24] drm/i2c: tda998x: get a better status of the connection Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 22:51   ` Russell King - ARM Linux
2014-01-22 22:51     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 16/24] drm/i2c: tda998x: add DT documentation Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-20  4:06   ` Olof Johansson
2014-01-20  4:06     ` Olof Johansson
2014-01-20  4:06     ` Olof Johansson
2014-01-20  9:54     ` Jean-Francois Moine
2014-01-20  9:54     ` Jean-Francois Moine
2014-01-20  9:54       ` Jean-Francois Moine
2014-01-20  9:54       ` Jean-Francois Moine
2014-01-21 18:17       ` Olof Johansson
2014-01-21 18:17         ` Olof Johansson
2014-01-21 18:17         ` Olof Johansson
2014-01-22 22:40         ` Russell King - ARM Linux [this message]
2014-01-22 22:40           ` Russell King - ARM Linux
2014-01-22 22:40           ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 19/24] drm/i2c: tda998x: use global constants Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 23:29   ` Russell King - ARM Linux
2014-01-22 23:29     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 18/24] drm/i2c: tda998x: fix the ENABLE_SPACE register Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 23:27   ` Russell King - ARM Linux
2014-01-22 23:27     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 21/24] drm/i2c: tda998x: add the active aspect in HDMI AVI frame Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 23:37   ` Russell King - ARM Linux
2014-01-22 23:37     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 20/24] drm/i2c: tda998x: remove the unused variable ca_i2s Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 23:30   ` Russell King - ARM Linux
2014-01-22 23:30     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 23/24] drm/i2c: tda998x: code optimization Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58 ` [PATCH v3 22/24] drm/i2c: tda998x: change the frequence in the audio channel Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-22 23:52   ` Russell King - ARM Linux
2014-01-22 23:52     ` Russell King - ARM Linux
2014-01-19 18:58 ` [PATCH v3 24/24] drm/i2c: tda998x: adjust the audio clock divider for S/PDIF Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine
2014-01-19 18:58   ` Jean-Francois Moine

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=20140122224039.GM15937@n2100.arm.linux.org.uk \
    --to=linux@arm.linux.org.uk \
    --cc=devicetree@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=moinejf@free.fr \
    --cc=olof@lixom.net \
    /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.