From: anilkumar@ti.com (AnilKumar Ch)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 3/4] ARM: AM33XX: board-generic: Add of_dev_auxdata to pass d_can raminit
Date: Mon, 3 Sep 2012 17:22:18 +0530 [thread overview]
Message-ID: <1346673139-14540-4-git-send-email-anilkumar@ti.com> (raw)
In-Reply-To: <1346673139-14540-1-git-send-email-anilkumar@ti.com>
Add of_dev_auxdata to pass d_can raminit callback APIs to initialize
d_can RAM. D_CAN RAM initialization bits are present in CONTROL module
address space, which can be accessed by platform specific code. So
callback functions are added to serve this purpose, this can done by
using of_dev_auxdata.
Callback API is added to of_dev_auxdata with different instance numbers
for two instances of D_CAN IP. These callback functions are used to
enable/disable D_CAN RAM from CAN driver.
Signed-off-by: AnilKumar Ch <anilkumar@ti.com>
---
arch/arm/mach-omap2/board-generic.c | 40 ++++++++++++++++++++++++++++++++++-
arch/arm/mach-omap2/control.h | 4 ++++
2 files changed, 43 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
index 6f93a20..b68e642 100644
--- a/arch/arm/mach-omap2/board-generic.c
+++ b/arch/arm/mach-omap2/board-generic.c
@@ -15,6 +15,7 @@
#include <linux/of_irq.h>
#include <linux/of_platform.h>
#include <linux/irqdomain.h>
+#include <linux/can/platform/c_can.h>
#include <mach/hardware.h>
#include <asm/hardware/gic.h>
@@ -22,6 +23,8 @@
#include <plat/board.h>
#include "common.h"
+#include "control.h"
+#include "iomap.h"
#include "common-board-devices.h"
#if !(defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3))
@@ -37,11 +40,46 @@ static struct of_device_id omap_dt_match_table[] __initdata = {
{ }
};
+void d_can_hw_raminit(unsigned int instance, bool enable)
+{
+ u32 val;
+
+ val = readl(AM33XX_CTRL_REGADDR(AM33XX_CONTROL_DCAN_RAMINIT));
+ if (enable) {
+ val &= ~AM33XX_DCAN_RAMINIT_START_MASK(instance);
+ val |= AM33XX_DCAN_RAMINIT_START_MASK(instance);
+ writel(val, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_DCAN_RAMINIT));
+ } else {
+ val &= ~AM33XX_DCAN_RAMINIT_START_MASK(instance);
+ writel(val, AM33XX_CTRL_REGADDR(AM33XX_CONTROL_DCAN_RAMINIT));
+ }
+}
+
+static struct c_can_platform_data d_can0_pdata = {
+ .ram_init = d_can_hw_raminit,
+ .instance = 0,
+};
+
+static struct c_can_platform_data d_can1_pdata = {
+ .ram_init = d_can_hw_raminit,
+ .instance = 1,
+};
+
+static const struct of_dev_auxdata am33xx_auxdata_lookup[] __initconst = {
+ OF_DEV_AUXDATA("bosch,d_can", 0x481cc000, NULL, &d_can0_pdata),
+ OF_DEV_AUXDATA("bosch,d_can", 0x481d0000, NULL, &d_can1_pdata),
+ { },
+};
+
static void __init omap_generic_init(void)
{
omap_sdrc_init(NULL, NULL);
- of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
+ if (of_machine_is_compatible("ti,am33xx"))
+ of_platform_populate(NULL, omap_dt_match_table,
+ am33xx_auxdata_lookup, NULL);
+ else
+ of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
}
#ifdef CONFIG_SOC_OMAP2420
diff --git a/arch/arm/mach-omap2/control.h b/arch/arm/mach-omap2/control.h
index b8cdc85..afd189b 100644
--- a/arch/arm/mach-omap2/control.h
+++ b/arch/arm/mach-omap2/control.h
@@ -356,6 +356,10 @@
#define AM33XX_CONTROL_STATUS_SYSBOOT1_SHIFT 22
#define AM33XX_CONTROL_STATUS_SYSBOOT1_MASK (0x3 << 22)
+/* AM33XX DCAN bitfields */
+#define AM33XX_CONTROL_DCAN_RAMINIT 0x644
+#define AM33XX_DCAN_RAMINIT_START_MASK(i) (1 << (i))
+
/* CONTROL OMAP STATUS register to identify OMAP3 features */
#define OMAP3_CONTROL_OMAP_STATUS 0x044c
--
1.7.9.5
next prev parent reply other threads:[~2012-09-03 11:52 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-03 11:52 [PATCH 0/4] can: c_can: Add suspend/resume and pinctrl support AnilKumar Ch
2012-09-03 11:52 ` [PATCH 1/4] can: c_can: Adopt " AnilKumar Ch
2012-09-03 20:42 ` Marc Kleine-Budde
2012-09-04 6:14 ` AnilKumar, Chimata
2012-09-04 7:42 ` Marc Kleine-Budde
2012-09-04 8:34 ` AnilKumar, Chimata
2012-09-03 11:52 ` [PATCH 2/4] can: c_can: Add d_can raminit support AnilKumar Ch
2012-09-03 20:39 ` Marc Kleine-Budde
2012-09-04 6:14 ` AnilKumar, Chimata
2012-09-04 7:36 ` Vaibhav Hiremath
2012-09-04 7:39 ` Marc Kleine-Budde
2012-09-03 11:52 ` AnilKumar Ch [this message]
2012-09-03 20:11 ` [PATCH 3/4] ARM: AM33XX: board-generic: Add of_dev_auxdata to pass d_can raminit Marc Kleine-Budde
2012-09-04 6:26 ` AnilKumar, Chimata
2012-09-04 7:35 ` Marc Kleine-Budde
2012-09-03 11:52 ` [PATCH 4/4] can: c_can: Add d_can suspend resume support AnilKumar Ch
2012-09-03 20:01 ` Marc Kleine-Budde
2012-09-04 6:14 ` AnilKumar, Chimata
2012-09-04 7:27 ` Marc Kleine-Budde
2012-09-12 12:48 ` AnilKumar, Chimata
2012-09-12 13:02 ` Marc Kleine-Budde
2012-09-13 7:24 ` AnilKumar, Chimata
2012-09-13 8:30 ` Marc Kleine-Budde
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=1346673139-14540-4-git-send-email-anilkumar@ti.com \
--to=anilkumar@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
/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: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).