From: Jon Hunter <jon-hunter@ti.com> To: Rob Herring <rob.herring@calxeda.com>, Grant Likely <grant.likely@secretlab.ca>, Tony Lindgren <tony@atomide.com>, Benoit Cousson <b-cousson@ti.com> Cc: device-tree <devicetree-discuss@lists.ozlabs.org>, linux-omap <linux-omap@vger.kernel.org>, linux-arm <linux-arm-kernel@lists.infradead.org>, Daniel Mack <zonque@gmail.com>, Ezequiel Garcia <elezegarcia@gmail.com>, Mark Jackson <mpfj-list@mimc.co.uk>, Jon Hunter <jon-hunter@ti.com> Subject: [PATCH V3 02/18] ARM: OMAP2+: Add variable to store number of GPMC waitpins Date: Fri, 15 Mar 2013 10:21:00 -0500 [thread overview] Message-ID: <1363360876-13617-3-git-send-email-jon-hunter@ti.com> (raw) In-Reply-To: <1363360876-13617-1-git-send-email-jon-hunter@ti.com> The GPMC has wait-pin signals that can be assigned to a chip-select to monitor the ready signal of an external device. Add a variable to indicate the total number of wait-pins for a given device. This will allow us to detect if the wait-pin being selected is valid or not. When booting with device-tree read the number of wait-pins from the device-tree blob. When device-tree is not used set the number of wait-pins to 4 which is valid for OMAP2-5 devices. Newer devices that have less wait-pins (such as AM335x) only support booting with device-tree and so hard-coding the wait-pin number when not using device-tree is fine. Signed-off-by: Jon Hunter <jon-hunter@ti.com> --- arch/arm/mach-omap2/gpmc.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index ef655d9..88a261c 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c @@ -108,6 +108,8 @@ #define GPMC_HAS_WR_ACCESS 0x1 #define GPMC_HAS_WR_DATA_MUX_BUS 0x2 +#define GPMC_NR_WAITPINS 4 + /* XXX: Only NAND irq has been considered,currently these are the only ones used */ #define GPMC_NR_IRQ 2 @@ -153,6 +155,7 @@ static struct resource gpmc_cs_mem[GPMC_CS_NUM]; static DEFINE_SPINLOCK(gpmc_mem_lock); /* Define chip-selects as reserved by default until probe completes */ static unsigned int gpmc_cs_map = ((1 << GPMC_CS_NUM) - 1); +static unsigned int gpmc_nr_waitpins; static struct device *gpmc_dev; static int gpmc_irq; static resource_size_t phys_base, mem_size; @@ -1297,6 +1300,13 @@ static int gpmc_probe_dt(struct platform_device *pdev) if (!of_id) return 0; + ret = of_property_read_u32(pdev->dev.of_node, "gpmc,num-waitpins", + &gpmc_nr_waitpins); + if (ret < 0) { + pr_err("%s: number of wait pins not found!\n", __func__); + return ret; + } + for_each_node_by_name(child, "nand") { ret = gpmc_probe_nand_child(pdev, child); if (ret < 0) { @@ -1372,6 +1382,12 @@ static int gpmc_probe(struct platform_device *pdev) if (gpmc_setup_irq() < 0) dev_warn(gpmc_dev, "gpmc_setup_irq failed\n"); + /* Now the GPMC is initialised, unreserve the chip-selects */ + gpmc_cs_map = 0; + + if (!pdev->dev.of_node) + gpmc_nr_waitpins = GPMC_NR_WAITPINS; + rc = gpmc_probe_dt(pdev); if (rc < 0) { clk_disable_unprepare(gpmc_l3_clk); -- 1.7.10.4
WARNING: multiple messages have this Message-ID (diff)
From: jon-hunter@ti.com (Jon Hunter) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH V3 02/18] ARM: OMAP2+: Add variable to store number of GPMC waitpins Date: Fri, 15 Mar 2013 10:21:00 -0500 [thread overview] Message-ID: <1363360876-13617-3-git-send-email-jon-hunter@ti.com> (raw) In-Reply-To: <1363360876-13617-1-git-send-email-jon-hunter@ti.com> The GPMC has wait-pin signals that can be assigned to a chip-select to monitor the ready signal of an external device. Add a variable to indicate the total number of wait-pins for a given device. This will allow us to detect if the wait-pin being selected is valid or not. When booting with device-tree read the number of wait-pins from the device-tree blob. When device-tree is not used set the number of wait-pins to 4 which is valid for OMAP2-5 devices. Newer devices that have less wait-pins (such as AM335x) only support booting with device-tree and so hard-coding the wait-pin number when not using device-tree is fine. Signed-off-by: Jon Hunter <jon-hunter@ti.com> --- arch/arm/mach-omap2/gpmc.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index ef655d9..88a261c 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c @@ -108,6 +108,8 @@ #define GPMC_HAS_WR_ACCESS 0x1 #define GPMC_HAS_WR_DATA_MUX_BUS 0x2 +#define GPMC_NR_WAITPINS 4 + /* XXX: Only NAND irq has been considered,currently these are the only ones used */ #define GPMC_NR_IRQ 2 @@ -153,6 +155,7 @@ static struct resource gpmc_cs_mem[GPMC_CS_NUM]; static DEFINE_SPINLOCK(gpmc_mem_lock); /* Define chip-selects as reserved by default until probe completes */ static unsigned int gpmc_cs_map = ((1 << GPMC_CS_NUM) - 1); +static unsigned int gpmc_nr_waitpins; static struct device *gpmc_dev; static int gpmc_irq; static resource_size_t phys_base, mem_size; @@ -1297,6 +1300,13 @@ static int gpmc_probe_dt(struct platform_device *pdev) if (!of_id) return 0; + ret = of_property_read_u32(pdev->dev.of_node, "gpmc,num-waitpins", + &gpmc_nr_waitpins); + if (ret < 0) { + pr_err("%s: number of wait pins not found!\n", __func__); + return ret; + } + for_each_node_by_name(child, "nand") { ret = gpmc_probe_nand_child(pdev, child); if (ret < 0) { @@ -1372,6 +1382,12 @@ static int gpmc_probe(struct platform_device *pdev) if (gpmc_setup_irq() < 0) dev_warn(gpmc_dev, "gpmc_setup_irq failed\n"); + /* Now the GPMC is initialised, unreserve the chip-selects */ + gpmc_cs_map = 0; + + if (!pdev->dev.of_node) + gpmc_nr_waitpins = GPMC_NR_WAITPINS; + rc = gpmc_probe_dt(pdev); if (rc < 0) { clk_disable_unprepare(gpmc_l3_clk); -- 1.7.10.4
next prev parent reply other threads:[~2013-03-15 15:21 UTC|newest] Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-03-15 15:20 [PATCH V3 00/18] ARM: OMAP2+: GPMC clean-up and DT update Jon Hunter 2013-03-15 15:20 ` Jon Hunter 2013-03-15 15:20 ` [PATCH V3 01/18] ARM: OMAP2+: Simplify code configuring ONENAND devices Jon Hunter 2013-03-15 15:20 ` Jon Hunter 2013-03-15 15:21 ` Jon Hunter [this message] 2013-03-15 15:21 ` [PATCH V3 02/18] ARM: OMAP2+: Add variable to store number of GPMC waitpins Jon Hunter 2013-03-16 20:59 ` Ezequiel Garcia 2013-03-16 20:59 ` Ezequiel Garcia 2013-03-18 13:43 ` Jon Hunter 2013-03-18 13:43 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 03/18] ARM: OMAP2+: Add structure for storing GPMC settings Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 04/18] ARM: OMAP2+: Add function for configuring " Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 05/18] ARM: OMAP2+: Convert ONENAND to use gpmc_cs_program_settings() Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 06/18] ARM: OMAP2+: Convert NAND " Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 07/18] ARM: OMAP2+: Convert SMC91x " Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 08/18] ARM: OMAP2+: Convert TUSB " Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 09/18] ARM: OMAP2+: Don't configure of chip-select options in gpmc_cs_configure() Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 10/18] ARM: OMAP2+: Add function to read GPMC settings from device-tree Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-17 5:24 ` Ezequiel Garcia 2013-03-17 5:24 ` Ezequiel Garcia 2013-03-18 13:43 ` Jon Hunter 2013-03-18 13:43 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 11/18] ARM: OMAP2+: Add device-tree support for NOR flash Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 12/18] ARM: OMAP2+: Add additional GPMC timing parameters Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-18 14:07 ` Rob Herring 2013-03-18 14:07 ` Rob Herring 2013-03-18 14:32 ` Jon Hunter 2013-03-18 14:32 ` Jon Hunter 2013-03-18 15:59 ` Jon Hunter 2013-03-18 15:59 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 13/18] ARM: OMAP2+: Convert NAND to retrieve GPMC settings from DT Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 14/18] ARM: OMAP2+: Convert ONENAND " Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 15/18] ARM: OMAP2+: Detect incorrectly aligned GPMC base address Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 16/18] ARM: OMAP2+: Remove unnecesssary GPMC definitions and variable Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 17/18] ARM: OMAP2+: Allow GPMC probe to complete even if CS mapping fails Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-15 15:21 ` [PATCH V3 18/18] ARM: OMAP2+: return -ENODEV if GPMC child device creation fails Jon Hunter 2013-03-15 15:21 ` Jon Hunter 2013-03-17 5:34 ` [PATCH V3 00/18] ARM: OMAP2+: GPMC clean-up and DT update Ezequiel Garcia 2013-03-17 5:34 ` Ezequiel Garcia
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=1363360876-13617-3-git-send-email-jon-hunter@ti.com \ --to=jon-hunter@ti.com \ --cc=b-cousson@ti.com \ --cc=devicetree-discuss@lists.ozlabs.org \ --cc=elezegarcia@gmail.com \ --cc=grant.likely@secretlab.ca \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-omap@vger.kernel.org \ --cc=mpfj-list@mimc.co.uk \ --cc=rob.herring@calxeda.com \ --cc=tony@atomide.com \ --cc=zonque@gmail.com \ /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: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.