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 V2 02/17] ARM: OMAP2+: Add variable to store number of GPMC waitpins Date: Fri, 8 Mar 2013 10:58:23 -0600 [thread overview] Message-ID: <1362761918-8696-3-git-send-email-jon-hunter@ti.com> (raw) In-Reply-To: <1362761918-8696-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 6ddecc8..452617b 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) { + 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 (IS_ERR_VALUE(gpmc_setup_irq())) 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 V2 02/17] ARM: OMAP2+: Add variable to store number of GPMC waitpins Date: Fri, 8 Mar 2013 10:58:23 -0600 [thread overview] Message-ID: <1362761918-8696-3-git-send-email-jon-hunter@ti.com> (raw) In-Reply-To: <1362761918-8696-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 6ddecc8..452617b 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) { + 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 (IS_ERR_VALUE(gpmc_setup_irq())) 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-08 16:58 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2013-03-08 16:58 [PATCH V2 00/17] ARM: OMAP2+: GPMC clean-up and DT update Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 01/17] ARM: OMAP2+: Simplify code configuring ONENAND devices Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` Jon Hunter [this message] 2013-03-08 16:58 ` [PATCH V2 02/17] ARM: OMAP2+: Add variable to store number of GPMC waitpins Jon Hunter 2013-03-08 16:58 ` [PATCH V2 03/17] ARM: OMAP2+: Add structure for storing GPMC settings Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 04/17] ARM: OMAP2+: Add function for configuring " Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 05/17] ARM: OMAP2+: Convert ONENAND to use gpmc_cs_program_settings() Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 06/17] ARM: OMAP2+: Convert NAND " Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 07/17] ARM: OMAP2+: Convert SMC91x " Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 08/17] ARM: OMAP2+: Convert TUSB " Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 09/17] ARM: OMAP2+: Don't configure of chip-select options in gpmc_cs_configure() Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 10/17] ARM: OMAP2+: Add function to read GPMC settings from device-tree Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 11/17] ARM: OMAP2+: Add device-tree support for NOR flash Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-09 3:11 ` Javier Martinez Canillas 2013-03-09 3:11 ` Javier Martinez Canillas 2013-03-08 16:58 ` [PATCH V2 12/17] ARM: OMAP2+: Add additional GPMC timing parameters Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 13/17] ARM: OMAP2+: Convert NAND to retrieve GPMC settings from DT Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 14/17] ARM: OMAP2+: Convert ONENAND " Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 15/17] ARM: OMAP2+: Detect incorrectly aligned GPMC base address Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 16/17] ARM: OMAP2+: Remove unnecesssary GPMC definitions and variable Jon Hunter 2013-03-08 16:58 ` Jon Hunter 2013-03-08 16:58 ` [PATCH V2 17/17] ARM: OMAP2+: Allow GPMC probe to complete even if CS mapping fails Jon Hunter 2013-03-08 16:58 ` Jon Hunter
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=1362761918-8696-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.