From nobody Fri Dec 19 20:33:08 2025 Received: from mail-lj1-f169.google.com (mail-lj1-f169.google.com [209.85.208.169]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 933221714D7 for ; Thu, 9 Jan 2025 07:58:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736409525; cv=none; b=rcKqAARe7q5aNfJuVkn+ymqR8zEZh2NHbXfv4HAgpCXo8ITPAZvG7+YnsU9vJvxB9BGuBFfR7VKaUuHAmcNfFhfponTGk8EOj3TRbt2c6e8xCNrXbzsFwIYlxKFzaggBsG394nNNuQd+kSZAZ0ItrB6e9rR9/5Xd2K8+Hxuddmo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1736409525; c=relaxed/simple; bh=4tPy1jCrlfBi6CXyYMq0EShW0iSuWd5Lr1xnPK3i0qs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=Db35m7xFAEYaC3q1yVlegrOxivEf3IhID7yb7lYMr7BJMhRD5FawWs83qFz9e3L+JaTpjpS06q/Reo9yyci7tL5cRp1zHBJuGOu0koYxYOC/sxBJHYehUF24DoQGIA5iQ9n9A0vcc8czMaJLrKUPJVoJHc2SCuajO5LhncvklMI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=DhKJXtCv; arc=none smtp.client-ip=209.85.208.169 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="DhKJXtCv" Received: by mail-lj1-f169.google.com with SMTP id 38308e7fff4ca-30227ccf803so4768301fa.2 for ; Wed, 08 Jan 2025 23:58:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1736409522; x=1737014322; darn=vger.kernel.org; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:from:to:cc:subject:date:message-id:reply-to; bh=LnZP0PSO9gLeR2UA6K/C1ZXfipw4GVw1JGk9X062c0I=; b=DhKJXtCvkp9nHeTXUbk/9NubQ7dZ0ENZwHbRryNxHsSpwRM5/FQwiff6bpk7AxsK/Y S1xbFngiTboinUNAyTq422fQ/hUO0grQXRoBV7VPzN3Bgz6A4kXe7cmJqQK6SDaFRObP QPVqpj9Alpcty2PU7+kNVoRqPkBV1CwHGX3K5uVmk0JFCYwuKdS4i3jvSEE6U3nFp0uN 3UpN/KzPhD6CDj6I1KCtvgBklMmEREqV0P/dyZxz/oHeGxYispiVEycxH958ZENq8jXm czZl3N3clTUvBlnUN8YMvZ5jtIubo+VnrLPY/pYyifbeL1c92S7qMkrgq6GwW/oN5QnW 2gcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1736409522; x=1737014322; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=LnZP0PSO9gLeR2UA6K/C1ZXfipw4GVw1JGk9X062c0I=; b=iZZCrPdIj9X7nZOkLfq6oHXCZFu3cpVyuJ/0U/jYLfvmTfgiDIZy868IwnmfmnUw8w Go8/Y7InBK7cj1sSgMzf8anHWRH5qYu8DkpBy7TXzh+iWP/dEVMPbcRYoAJCA77iFIj7 WLl7vvDNidop7Y1db+dBWVVj064coSEalZU9RM7UZjK3IsbnWSUEf1yLE3EF08I4DkdG jdbpSTMuYSnAl3gT3Mkz4I7zGJaygIRAXD1V0c+OYoq2/Wqz7a182fJUokqwC8NPmVaa kt+e9Grh0Juz4L0b94PSpuOxj2MQH4DQu4GhZ1gqCSkGFyjhOpPwgGbS7eis90EdR+fS w0QQ== X-Forwarded-Encrypted: i=1; AJvYcCWCh8bgOC4S6PtQ+k9R+mCXl0tlStC7gpZ41vTYbf9vdz1G4Bge7kmVzToDxgAz+HwrD6FLOTTInhOPYK8=@vger.kernel.org X-Gm-Message-State: AOJu0YxGzEuc8tnc5tEAZpkxGnYGlG1zVDzeUq0aNXlqNt9rrFWUyPw5 3hyWzpfRsizF81U5LlWxWGh3gWZICS6rloZJ9dSaGdmaHY9P8M5a X-Gm-Gg: ASbGncsQOc2IUHy+dR8SOE0T0+0NX9lF9zhi+mwgKvbXWlKkUM49JdqoDHU4W9I+goQ EzanuZi48YWZnU6+S6qk1O5MWZhj2Sf5el655qE3WewCUgyx4wSGmlOT59J2Z6+lqSRwW2ldZ92 z/e3RRk3uEpbXO9U5sn4NpZAFoi6kaFHbhVUEoBgXBFqeve5q5egNQ/iFPM4hmR6rK1O7n4u/j1 jx+JnpA3xXUESW25b+za72yYxB5HBxM9liGztycPktQbU4BeLyU4/N7rWAYjlqpf/BpD6KaUy+/ fppSBtmtOair8e0ovB0FTyRQsA== X-Google-Smtp-Source: AGHT+IHQdXBRjl53ZE3Au6MCvT/MDSuTdCNw+tMoAVNX4Ml0jMaxOjFDZ5z6jGCueTvhcyVbEZ8SMQ== X-Received: by 2002:a05:6512:3d18:b0:542:2a28:e30f with SMTP id 2adb3069b0e04-542845d315emr1652301e87.31.1736409521339; Wed, 08 Jan 2025 23:58:41 -0800 (PST) Received: from [192.168.1.199] (83-233-6-197.cust.bredband2.com. [83.233.6.197]) by smtp.gmail.com with ESMTPSA id 2adb3069b0e04-5428be499e5sm116185e87.5.2025.01.08.23.58.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jan 2025 23:58:39 -0800 (PST) From: Marcus Folkesson Date: Thu, 09 Jan 2025 08:58:31 +0100 Subject: [PATCH v2] mtd: rawnand: davinci: add ROM supported OOB layout Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250109-davinci-nand-v2-1-06bc5a3d177a@gmail.com> X-B4-Tracking: v=1; b=H4sIAKaBf2cC/3XMywrCMBCF4Vcps3YkF7OoK99Dupjm0g7YRBIJS sm7G7t3+R843w7FZ/YFrsMO2VcunGIPdRrArhQXj+x6gxLKCClGdFQ5WsZI0aEdvaKgQtA0Q78 8sw/8Prj71Hvl8kr5c+hV/tY/UJUo0ZlZW6uFkRd9Wzbix9mmDabW2hfvNVbhqAAAAA== X-Change-ID: 20250109-davinci-nand-c9e2af2ff3ab To: Miquel Raynal , Richard Weinberger , Vignesh Raghavendra Cc: linux-mtd@lists.infradead.org, linux-kernel@vger.kernel.org, Marcus Folkesson , Marcus Folkesson X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=openpgp-sha256; l=3136; i=marcus.folkesson@gmail.com; h=from:subject:message-id; bh=d0tJxhEDAeUt2VXbOzMJeEAz14hNE4fDb/B1ZBEHMNg=; b=owEBbQKS/ZANAwAIAYiATm9ZXVIyAcsmYgBnf4Gp5PoQlxX6ch0FpCIaffnt2ccwKb7gHWniJ BnjbZD98LaJAjMEAAEIAB0WIQQFUaLotmy1TWTBLGWIgE5vWV1SMgUCZ3+BqQAKCRCIgE5vWV1S MgGbEACxcndLfUYpL6eKNKDenSk9RvBqM2hvCeSE5wPudKDAHGagsE+Lsu4Rom/BBfo7yeFeDII eWU9U3NfAhJb6pxQ1ri/+aipyYvx1l+SQun3aKRTev0pJ4/XiBix3Imzkd63x02swyzhxtmlbLZ 9EiKPY/uIpVuzyPjQPYaLnyEWuf8Ve8CXDFhAvH9W3gazIWOlQJg5izSvOI4ej9OOpIeJ2BOzsj bxx5kBSJbaoQH6S5tQK/kmupdvAP011OYt+neqGtHZTczveslOB6I30OPbA+2EZliLZU89Lh4Tj 2KY9HTnT4+j6chFIXWWXXW/IQZjfUR9duVqrvn/9BLHshtb+TJ1ykHrJ2JQezB1JzOUbi7DWsdM LJvnuaKDYT3PGrxQ74mV5UXRHX2gpr4SXC8qPPbPNogrdArtt/HWgGBrzZSbhf+mkEE3D8tBmEo HNsJ7chiFPnf2Q5htTUVZIQ5Dwo5cAqWwAgGMIvlyUG6hfL0dCG9vuk7DtO+ym03sLEvCuxoVNR q4qvPcIQPF8idcD158akm2cuLCQryNPjC86/F+zmsEWb7nE1iTuuT3PGY5zp3I5PS1hPM3DWcUD V9TWfeolcLze/Q8yYDKPOu12KrG5CpyAiHhBoF99TIyaevrXQ9Q55x+sPxTV3ZIDBvpQT/pQRRL zCjh7tydc0CODNA== X-Developer-Key: i=marcus.folkesson@gmail.com; a=openpgp; fpr=AB91D46C7E0F6E6FB2AB640EC0FE25D598F6C127 From: Marcus Folkesson Add support for the OOB layout used by the ROM bootloader. The same layout is used by both Keystone [1] and OMAPL138/DA850 [2] which currently is the only users of davinci-nand. Only select this layout if the `nand-is-boot-medium` property is set. This to avoid breaking any existing devices out there. [1] https://www.ti.com/lit/ug/spruhj3/spruhj3.pdf [2] https://www.ti.com/lit/an/sprab41f/sprab41f.pdf Signed-off-by: Marcus Folkesson --- Changes in v2: - Changed email used in signed-off-by tag - Link to v1: https://lore.kernel.org/r/20250109-davinci-nand-v1-1-d5b3cc30= 5143@gmail.com --- drivers/mtd/nand/raw/davinci_nand.c | 45 +++++++++++++++++++++++++++++++++= ++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/drivers/mtd/nand/raw/davinci_nand.c b/drivers/mtd/nand/raw/dav= inci_nand.c index 1f8354acfb50b2f4d155cdfc03afcf2863539f66..09119a8db0210cb14236dd2f887= 2c18fcb9be7d8 100644 --- a/drivers/mtd/nand/raw/davinci_nand.c +++ b/drivers/mtd/nand/raw/davinci_nand.c @@ -479,6 +479,44 @@ static const struct mtd_ooblayout_ops hwecc4_small_oob= layout_ops =3D { .free =3D hwecc4_ooblayout_small_free, }; =20 +static int hwecc4_ooblayout_large_ecc(struct mtd_info *mtd, int section, + struct mtd_oob_region *oobregion) +{ + struct nand_device *nand =3D mtd_to_nanddev(mtd); + unsigned int total_ecc_bytes =3D nand->ecc.ctx.total; + int nregions =3D total_ecc_bytes / 10; /* 10 bytes per chunk */ + + if (section >=3D nregions) + return -ERANGE; + + oobregion->offset =3D (section * 16) + 6; + oobregion->length =3D 10; + + return 0; +} + +static int hwecc4_ooblayout_large_free(struct mtd_info *mtd, int section, + struct mtd_oob_region *oobregion) +{ + struct nand_device *nand =3D mtd_to_nanddev(mtd); + unsigned int total_ecc_bytes =3D nand->ecc.ctx.total; + int nregions =3D total_ecc_bytes / 10; /* 10 bytes per chunk */ + + /* First region is used for BBT */ + if (section >=3D (nregions - 1)) + return -ERANGE; + + oobregion->offset =3D ((section + 1) * 16); + oobregion->length =3D 6; + + return 0; +} + +static const struct mtd_ooblayout_ops hwecc4_large_ooblayout_ops =3D { + .ecc =3D hwecc4_ooblayout_large_ecc, + .free =3D hwecc4_ooblayout_large_free, +}; + #if defined(CONFIG_OF) static const struct of_device_id davinci_nand_of_match[] =3D { {.compatible =3D "ti,davinci-nand", }, @@ -638,9 +676,12 @@ static int davinci_nand_attach_chip(struct nand_chip *= chip) mtd_set_ooblayout(mtd, &hwecc4_small_ooblayout_ops); } else if (chunks =3D=3D 4 || chunks =3D=3D 8) { - mtd_set_ooblayout(mtd, - nand_get_large_page_ooblayout()); chip->ecc.read_page =3D nand_read_page_hwecc_oob_first; + + if (chip->options & NAND_IS_BOOT_MEDIUM) + mtd_set_ooblayout(mtd, &hwecc4_large_ooblayout_ops); + else + mtd_set_ooblayout(mtd, nand_get_large_page_ooblayout()); } else { return -EIO; } --- base-commit: eea6e4b4dfb8859446177c32961c96726d0117be change-id: 20250109-davinci-nand-c9e2af2ff3ab Best regards, --=20 Marcus Folkesson