Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3861581pxb; Tue, 26 Jan 2021 06:42:00 -0800 (PST) X-Google-Smtp-Source: ABdhPJzGRovEvio0sEyCu6WEFacZ6zKVoRoYU3/CS/hvq+2X5HPbsU340X71PnXSGbRwcYXGNr3p X-Received: by 2002:a05:6402:ca9:: with SMTP id cn9mr4955784edb.208.1611672120045; Tue, 26 Jan 2021 06:42:00 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1611672120; cv=none; d=google.com; s=arc-20160816; b=acAl6nMOoPnZwo0Pa66OsLsEFKq6Xv9J2BUvG+NTdEArg7MiQKS/Wn0jLnxXnEoefk fMudapJ7/gNip/2CsINi7OgJn66dvm9cBk9HnJiXR/BWbc5nGxYXed49/fUXzQC/VmEu S/7i1AocFxJBSfBH5BWFfkrsuEBNELIM8BdTFUciOs/mdSN1PiHmMJ4r1q+BBdxu9vk8 gffoxtMDvYH1hhww1WYNnTrBGDKkqRMOqy/rNwyOeq/6hVPqygruxY3rKMrQlxp8HFA3 7jtThwbJdxlcPb3ByBQF+/NJEeodoSbDVosLkXBxBvhCxSrc5OtRCdQ2gGlyRz9niDbd 5ChQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=+tsTVFiw1Gtfp0wv7p/mLaARUHZIRA81DZ+qea3DqCs=; b=TsTxE5am1KWYlLG0tQWLt+1I6qrZ3uWYjYU5iu8GpQQsb56WBa7Jbw3YuUCGUIZSiw 0AvJBEZ9uht3fYL8by5FvPC5ga+fhdOj603KIkpxbAefX7kU+uvRzHhFGiM6wb0M9z9R ILYR6Jz3TnuAzxCazA4PCqByyiaE3ht+5i2Dh52YlcXSR3nlCVe0TZIuOByw44a5unkx 24+lPCM1zQrl5BlVANR1SvBBmB00fKj1SiG7+p+LMgDnM90YDOc3fZIU2fcrMIuMeayG 96GjkYrX7ULHauJja1Q+HTidF4bUJG/Q0gRRPXjVmhR10KA6Gap4XD7Y/JZ+ygwRlCDY 4xtw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=asem.it Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d2si8619480edd.145.2021.01.26.06.41.35; Tue, 26 Jan 2021 06:42:00 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=asem.it Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731133AbhAZOj1 (ORCPT + 99 others); Tue, 26 Jan 2021 09:39:27 -0500 Received: from smtp.asem.it ([151.1.184.197]:64868 "EHLO smtp.asem.it" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2405924AbhAZOie (ORCPT ); Tue, 26 Jan 2021 09:38:34 -0500 Received: from webmail.asem.it by asem.it (smtp.asem.it) (SecurityGateway 6.5.2) with ESMTP id SG000733461.MSG for ; Tue, 26 Jan 2021 15:37:50 +0100S Received: from ASAS044.asem.intra (172.16.16.44) by ASAS044.asem.intra (172.16.16.44) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Tue, 26 Jan 2021 15:37:50 +0100 Received: from flavio-x.asem.intra (172.16.17.208) by ASAS044.asem.intra (172.16.16.44) with Microsoft SMTP Server id 15.1.1979.3 via Frontend Transport; Tue, 26 Jan 2021 15:37:50 +0100 From: Flavio Suligoi To: Tudor Ambarus , Miquel Raynal , Richard Weinberger , Vignesh Raghavendra CC: , , Flavio Suligoi Subject: [PATCH v1] mtd: spi-nor: add ACPI support for non-JEDEC SPI-NOR Date: Tue, 26 Jan 2021 15:37:48 +0100 Message-ID: <20210126143748.1546187-1-f.suligoi@asem.it> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-SGHeloLookup-Result: pass smtp.helo=webmail.asem.it (ip=172.16.16.44) X-SGSPF-Result: none (smtp.asem.it) X-SGOP-RefID: str=0001.0A782F15.6010293E.00A0,ss=1,re=0.000,recu=0.000,reip=0.000,cl=1,cld=1,fgs=0 (_st=1 _vt=0 _iwf=0) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org In a x86 machine, an additional device can be described inside the BIOS ACPI tables. For example, an I2C GPIO expander, a LED, etc., can be successfully declared in ACPI, so that the related device driver can start automatically at the boot. But for the SPI NOR devices, the ACPI description works for JEDEC-compatible devices only. For example, an Everspin MR25H40 MRAM device (non-JEDEC compatible), declared using the following table, does not work: Scope (\_SB.SPI1) { Device (NVR0) { Name (_HID, "PRP0001") Name (_DDN, "Everspin MR25H40 MRAM") Name (_CRS, ResourceTemplate () { SpiSerialBus ( 1, // Chip select PolarityLow, // Chip select is active low FourWireMode, // Full duplex 8, // Bits per word is 8 (byte) ControllerInitiated, // Don't care 10000000, // 10 MHz ClockPolarityLow, // SPI mode 0 ClockPolarityLow ClockPhaseFirst, // SPI mode 0 ClockPhaseFirst "\\_SB.SPI1", // SPI host controller 0, // Must be 0 ResourceConsumer, , ) }) Name (_DSD, Package () { ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"), Package () { Package () {"compatible", "mr25h40"}, } }) } } To enable the detection of a non-JEDEC device described in a BIOS ACPI table, it is necessary to add its id name in the spi_nor_of_table structure. With this change, all the SPI NOR devices (JEDEC and non-JEDEC) can be detected by the kernel (and the above example of ACPI table finally works). Signed-off-by: Flavio Suligoi --- drivers/mtd/spi-nor/core.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/mtd/spi-nor/core.c b/drivers/mtd/spi-nor/core.c index 6ae7d4c2d2b6..b6fb8b15c439 100644 --- a/drivers/mtd/spi-nor/core.c +++ b/drivers/mtd/spi-nor/core.c @@ -3755,6 +3755,19 @@ static const struct of_device_id spi_nor_of_table[] = { * JEDEC READ ID opcode (0x9F). Use this, if possible. */ { .compatible = "jedec,spi-nor" }, + { .compatible = "m25p05-nonjedec" }, + { .compatible = "m25p10-nonjedec" }, + { .compatible = "m25p20-nonjedec" }, + { .compatible = "m25p40-nonjedec" }, + { .compatible = "m25p80-nonjedec" }, + { .compatible = "m25p16-nonjedec" }, + { .compatible = "m25p32-nonjedec" }, + { .compatible = "m25p64-nonjedec" }, + { .compatible = "m25p128-nonjedec" }, + { .compatible = "mr25h128" }, + { .compatible = "mr25h256" }, + { .compatible = "mr25h10" }, + { .compatible = "mr25h40" }, { /* sentinel */ }, }; MODULE_DEVICE_TABLE(of, spi_nor_of_table); -- 2.25.1