Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp364195ybl; Thu, 9 Jan 2020 23:35:47 -0800 (PST) X-Google-Smtp-Source: APXvYqyxFtW+lVs06MJ/7JsuCkLBBLGI2dHFycAATOgVbLqEP51ShaTIgDEDVgIeouowdTN2iHZ3 X-Received: by 2002:a9d:67ce:: with SMTP id c14mr1462234otn.106.1578641747618; Thu, 09 Jan 2020 23:35:47 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578641747; cv=none; d=google.com; s=arc-20160816; b=uHY3RtChjaR+NtEwhcmeF5iCMH9/ZPzogkyAiok9LI87/Xiru3M7WfzlF4C8FLZIS3 akZru8QhhUCXQhKVZATbRzYqSzGAyUzHoaQsEjbnBO541G/XZQMPSH8JI5KlbQ8q1jWL Zs0M9oJFRNM7pv6dlw3ks9up2gE5oRxGNaldbZ99TX95ptCiGzhc6PSItOD+dd9scvgP iXlfh+UvnCIumUOC7bwtRCh6T7aGvVPkbjMz8Ua0Wd7elATOsWijt4zEaBp+W0Z2lq3z GEAp1vL7dMIJPRie9yW68Qz7S7t4IltBJzKLZEcKDoqRNQRhOeqziWErclxKrZ7hT6lj beEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=oPDeuXNAtQv9fBhiJzJbxRhyqm6iekz5DQDtjJ5WnyU=; b=Irmr0V7OsbCuU59wKS3F7C9kuDeeF3mT5gn3pDN3e+g5iMJIu+yHGWQxiQH1cn4U+h 4PvA91sc0t/WErWDl3WE6yrFOcjlWyQxBs81bwrB0/qaXhzrlbDIp9uNwxR7js3vEPRE dJx/Vroz72U0Fkv+4XAgmS5cChz8lkqeIyaO8J1BwXIgmAawtssKd2NSAKkORZsUHNcG QhKUEVSSyWVre6JZBnFc/eZgN0boH0MWrgN6nINQ8zrwNQX4Cm7A2/RAu0fZaHCpSEG9 t8Ykyjr7HvRvCRsl8kcNXbm6lWeZ/Y/Afj5OcC1hpTgTbbeh7pTrkXdsQHNA+rPWqaxX GTRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Si4oZXKw; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id u8si673396otq.262.2020.01.09.23.35.36; Thu, 09 Jan 2020 23:35:47 -0800 (PST) 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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=Si4oZXKw; 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; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726613AbgAJHek (ORCPT + 99 others); Fri, 10 Jan 2020 02:34:40 -0500 Received: from mail-ot1-f67.google.com ([209.85.210.67]:34506 "EHLO mail-ot1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726199AbgAJHek (ORCPT ); Fri, 10 Jan 2020 02:34:40 -0500 Received: by mail-ot1-f67.google.com with SMTP id a15so1077158otf.1 for ; Thu, 09 Jan 2020 23:34:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oPDeuXNAtQv9fBhiJzJbxRhyqm6iekz5DQDtjJ5WnyU=; b=Si4oZXKwDCMidho9srkC/elmtC59a2FPNKZ2pHw91A9GQpQx52p9KcAfBYRL5s/DDD Dl6ZxlIrVwhqTeiC1kVqfww1j9GK2/vCR+qrrnuUK3jaG1gNPZGRLRTddz2FaN4NI/fN JN4ns66+Vh2LrCW+Kwg6ktJPINa9yYQRIDlV1vkijDVXcTgWmQFtGMF4AjjFVg/aguzs 2Lyec5csMpiFDZ0A4A59V8WjrJLgOIJ6E6AqNbJsd7z5pdP7qpZj1dS3C2v03+D2bjB3 2+SAmqkEz0nvFi0uXGP5fxT8N4II7/npUG+1zyv64yiJTX0GpzFHVdT2eutqqaBvBrnt 930Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oPDeuXNAtQv9fBhiJzJbxRhyqm6iekz5DQDtjJ5WnyU=; b=Xspe1PNOzhsQYfi2WyieALQVYP5XnXvbxi8q+PKw3fopfmFi72w+wQY4W34tzTBk+2 y73uNE0jkkUxA6MM3V8twMpjJ0GibNIubnHmuycoUGgS3abRs6d2cEOsvYqckLhCDxFH A3ODwiAXBx/dHr4H4s3LYJGNb378fkzOvhbMdPZYKLg6qXqzrV6iQoAPdhNBO0FEqpBl hk8ZEBiS94Y7bE45eIXd72hKfFqeCQcHFFgqyUskpuWmxgi7rNYRLP7mzz2aJC3kCy8s zN8hc7vRKFKmBuK1dtO8xe90j1y1F2U7ppxHqDbGKUjafkDwEMzfBXu7jz3AArCC0Yq7 /HQw== X-Gm-Message-State: APjAAAX0d9NKDi+mAHuDFQJ5+R+KCwALKNet8j/T3/9thYHY6cQJkG6z 7ogqdR5CXc0hfaE8qSMJH2r/kK6Y1u8YXs6RVbRpcAJyC6Y= X-Received: by 2002:a9d:6211:: with SMTP id g17mr1427847otj.168.1578641679301; Thu, 09 Jan 2020 23:34:39 -0800 (PST) MIME-Version: 1.0 References: <20200110025218.1257809-1-gch981213@gmail.com> <20200110075859.3edfae3a@collabora.com> In-Reply-To: <20200110075859.3edfae3a@collabora.com> From: Chuanhong Guo Date: Fri, 10 Jan 2020 15:34:28 +0800 Message-ID: Subject: Re: [PATCH v2] mtd: nand: spi: rework detect procedure for different read id op To: Boris Brezillon Cc: linux-mtd@lists.infradead.org, Boris Brezillon , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra , open list Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi! On Fri, Jan 10, 2020 at 2:59 PM Boris Brezillon wrote: > [...] > > + ret = spinand_read_id_op(spinand, 1, 0, id); > > + if (ret) > > + return ret; > > + ret = spinand_manufacturer_match(spinand, > > + SPINAND_READID_METHOD_OPCODE_ADDR); > > + if (!ret) > > + return 0; > > + > > + ret = spinand_read_id_op(spinand, 0, 1, id); > > Hm, we should probably do only one of each read_id and iterate over all > manufacturers/chips each time instead of doing 3 read_ids per > manufacturer. This actually do the former instead of the latter. Maybe the function names are a bit misleading. spinand_manufacturer_match iterates over all manufacturers in one call, and spinand_manufacturer_detect is called once in spinand_detect. Do you have suggestions on function naming? > [...] > > + * SPINAND_READID_METHOD_OPCODE_DUMMY: chip id is returned after > > + * read_id opcode + 1 dummy byte. > > + */ > > +struct spinand_devid { > > + u16 id; > > Can we make that field an array of u8? > > const u8 *id; > > > + u8 len; > > + enum spinand_readid_method method; > > +}; > [...] > > > > +#define SPINAND_ID(__id, __len, __method) \ > > + { \ > > + .id = __id, \ > > + .len = __len, \ > > + .method = __method, \ > > + } > > That one can be turned into > > #define SPINAND_ID(__method, ...) \ > { \ > .id = (const u8[]){ __VA_ARGS }, \ > .len = sizeof((u8[]){ __VA_ARGS }), \ > .method = __method, \ > } Wow. I never thought of this cool trick. I'll give it a try. Regards, Chuanhong Guo