Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp5630303ybi; Wed, 31 Jul 2019 00:40:28 -0700 (PDT) X-Google-Smtp-Source: APXvYqyNmTMaGurQhlKgtDCD9+XyeqmUbT8i0h+tP4ZxtsNThCUBZNarz8ZqhRWrrFkvgUew/GXx X-Received: by 2002:a63:1f50:: with SMTP id q16mr1597398pgm.274.1564558828438; Wed, 31 Jul 2019 00:40:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564558828; cv=none; d=google.com; s=arc-20160816; b=lTDG2+kRwSubwStseI6I9XPACtrMMcHEI+A629A7NxKDHYrGWeJ0hzxUj6FEdg64Va eV8bFvIffy/Q2rxaB2qQfP3jTkd0QGgwyNofHOZCCx5w76gYBLX3StgnZkRgnN6ws0u9 2ictrNxPmXISsLA86WGRa9CdzMaJLIIwiF16BrdSlS5Oj7uuSnsgTsukfJgN7it52v3A 9uEIIY0kuXcjzF8Mf1EC6W8/qejDrYEXPfi2n5c9OVaA6YAHf4eKph6ny//MJDdxZkUk aZ8XiMtXQ7J/2s67Xi1vup3xtov0jqymBzAZlQXdw1SFhpk3pNQLakdE7RYOIJgoD5J9 GaPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from; bh=BDBOcUnn9dul5Az5mVUPt7Rd7pZSS9ydlYgetqhSBqs=; b=uBrJMuQCuIqHqV9OD+vcFaFIBC5HS7U3dhhhCCy8F1SCcPHiQ7+ynY8PdwIocU6Kyr 62yaIIgreXQJnRYaovzsdo6O7yO8GY83jZGYwgcyDJoiCf02+Td+rilm10V5/K+9re1l tgnuDBspVYw2Cvv3ZPmMFP9L240HXuJNnqo3/bF8lXfCdhy53KUne435HUdtE1jO3fmE ogQou7BpJhqza8GZVu8HDKnP7ByZj3uaxk3KRO8KKb9c/ObwbwIm8kZhElwvLOhD7qy/ 1+TwlGawLwbHD8PhdVbunnMGtwImy1oN9dLezPPS7pa5RbHLYtV69Yq/s2GskZGxI9OK h/CA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id q15si30024716pgt.150.2019.07.31.00.40.12; Wed, 31 Jul 2019 00:40:28 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726712AbfGaHPM (ORCPT + 99 others); Wed, 31 Jul 2019 03:15:12 -0400 Received: from olimex.com ([184.105.72.32]:56701 "EHLO olimex.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725913AbfGaHPM (ORCPT ); Wed, 31 Jul 2019 03:15:12 -0400 Received: from localhost.localdomain ([94.155.250.134]) by olimex.com with ESMTPSA (ECDHE-RSA-AES128-GCM-SHA256:TLSv1.2:Kx=ECDH:Au=RSA:Enc=AESGCM(128):Mac=AEAD) (SMTP-AUTH username stefan@olimex.com, mechanism PLAIN) for ; Wed, 31 Jul 2019 00:15:08 -0700 From: Stefan Mavrodiev To: Srinivas Kandagatla , Maxime Ripard , Chen-Yu Tsai , 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 Subject: [PATCH 0/1] nvmem: sunxi_sid: fix A64 SID controller support Date: Wed, 31 Jul 2019 10:14:46 +0300 Message-Id: <20190731071447.9019-1-stefan@olimex.com> X-Mailer: git-send-email 2.17.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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