linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Mavrodiev <stefan@olimex.com>
To: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>,
	Maxime Ripard <maxime.ripard@bootlin.com>,
	Chen-Yu Tsai <wens@csie.org>,
	linux-arm-kernel@lists.infradead.org (moderated
	list:ARM/Allwinner sunXi SoC support),
	linux-kernel@vger.kernel.org (open list)
Cc: linux-sunxi@googlegroups.com, Stefan Mavrodiev <stefan@olimex.com>
Subject: [PATCH 0/1] nvmem: sunxi_sid: fix A64 SID controller support
Date: Wed, 31 Jul 2019 10:14:46 +0300	[thread overview]
Message-ID: <20190731071447.9019-1-stefan@olimex.com> (raw)

A64 SID controller has some issues when readind data, To exampine the
problem I've done the following steps.


When reading the whole nvmem memory in one chunk the returned bytes
are valid:

dd if=/sys/bus/nvmem/devices/sunxi-sid0/nvmem 2>/dev/null | hexdump -C
00000000  ba 00 c0 92 20 46 10 84  00 45 34 50 0e 04 26 48  |.... F...E4P..&H|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  00 00 00 00 87 07 8d 07  8e 07 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100


When bs is set to 4 bytes the data is no longer valid:

dd if=/sys/bus/nvmem/devices/sunxi-sid0/nvmem bs=4 2>/dev/null | hexdump -C
00000000  ba 00 c0 92 20 46 10 84  00 45 34 50 0e 04 26 48  |.... F...E4P..&H|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  00 00 00 00 87 00 00 00  8e 00 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100


You can see that only the data at 0x34 and 0x38 is corrupted. It appears
that A64 needs minimun 8 bytes block size;

dd if=/sys/bus/nvmem/devices/sunxi-sid0/nvmem bs=8 2>/dev/null | hexdump -C
00000000  ba 00 c0 92 20 46 10 84  00 45 34 50 0e 04 26 48  |.... F...E4P..&H|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  00 00 00 00 87 07 8d 07  8e 07 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100


In the driver stride is set to 4 and word_size to 1. When you're using
nvmem as thermal calibration data in the dts you write something like this:

sid: eeprom@1c14000 {
	compatible = "allwinner,sun50i-a64-sid";
	.....

	thermal_calibration: calib@34 {
		reg = <0x34 0x08>;
	};
};

This will return incorrect data.
One way to fix this is to set stride/word_size to 8, but this will be
inconvenient for the dts.
Other is to enable reading data via register access. After the fix:

dd if=/sys/bus/nvmem/devices/sunxi-sid0/nvmem bs=4 2>/dev/null | hexdump -C
00000000  ba 00 c0 92 20 46 10 84  00 45 34 50 0e 04 26 48  |.... F...E4P..&H|
00000010  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000030  00 00 00 00 87 07 8d 07  8e 07 00 00 00 00 00 00  |................|
00000040  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000100


Stefan Mavrodiev (1):
  nvmem: sunxi_sid: fix A64 SID controller support

 drivers/nvmem/sunxi_sid.c | 1 +
 1 file changed, 1 insertion(+)

-- 
2.17.1


             reply	other threads:[~2019-07-31  7:15 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-07-31  7:14 Stefan Mavrodiev [this message]
2019-07-31  7:14 ` [PATCH 1/1] nvmem: sunxi_sid: fix A64 SID controller support Stefan Mavrodiev
2019-07-31  8:43   ` Chen-Yu Tsai
2019-08-01  1:42     ` [linux-sunxi] " Vasily Khoruzhick
2019-08-06 10:03   ` Srinivas Kandagatla

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=20190731071447.9019-1-stefan@olimex.com \
    --to=stefan@olimex.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=maxime.ripard@bootlin.com \
    --cc=srinivas.kandagatla@linaro.org \
    --cc=wens@csie.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).