From: mkl@pengutronix.de (Marc Kleine-Budde)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/2] hwinit support for non-TI devices
Date: Mon, 05 May 2014 14:22:51 +0200 [thread overview]
Message-ID: <5367829B.4000104@pengutronix.de> (raw)
In-Reply-To: <5367824D.2070406@pengutronix.de>
On 05/05/2014 02:21 PM, Marc Kleine-Budde wrote:
> On 05/05/2014 02:08 PM, Pavel Machek wrote:
>> Non-TI chips (including socfpga) needs different raminit
>> sequence. Implement it.
>>
>> Tested-by: Thor Thayer <tthayer@altera.com>
>> Signed-off-by: Thor Thayer <tthayer@altera.com>
>> Signed-off-by: Pavel Machek <pavel@denx.de>
>>
>> diff --git a/drivers/net/can/c_can/c_can_platform.c b/drivers/net/can/c_can/c_can_platform.c
>> index 1df0b32..476d1e0 100644
>> --- a/drivers/net/can/c_can/c_can_platform.c
>> +++ b/drivers/net/can/c_can/c_can_platform.c
>> @@ -40,6 +40,7 @@
>> #define CAN_RAMINIT_START_MASK(i) (0x001 << (i))
>> #define CAN_RAMINIT_DONE_MASK(i) (0x100 << (i))
>> #define CAN_RAMINIT_ALL_MASK(i) (0x101 << (i))
>> +#define DCAN_RAM_INIT_BIT (1 << 3)
>> static DEFINE_SPINLOCK(raminit_lock);
>> /*
>> * 16-bit c_can registers can be arranged differently in the memory
>> @@ -80,7 +81,7 @@ static void c_can_hw_raminit_wait(const struct c_can_priv *priv, u32 mask,
>> udelay(1);
>> }
>>
>> -static void c_can_hw_raminit(const struct c_can_priv *priv, bool enable)
>> +static void c_can_hw_raminit_ti(const struct c_can_priv *priv, bool enable)
>> {
>> u32 mask = CAN_RAMINIT_ALL_MASK(priv->instance);
>> u32 ctrl;
>> @@ -88,7 +89,8 @@ static void c_can_hw_raminit(const struct c_can_priv *priv, bool enable)
>> spin_lock(&raminit_lock);
>>
>> ctrl = readl(priv->raminit_ctrlreg);
>> - /* We clear the done and start bit first. The start bit is
>> + /*
>> + * We clear the done and start bit first. The start bit is
>
> Please don't reformat comments.
>
>> * looking at the 0 -> transition, but is not self clearing;
>> * And we clear the init done bit as well.
>> */
>> @@ -108,6 +110,54 @@ static void c_can_hw_raminit(const struct c_can_priv *priv, bool enable)
>> spin_unlock(&raminit_lock);
>> }
>>
>> +static void c_can_hw_raminit(const struct c_can_priv *priv, bool enable)
>> +{
>> + u32 ctrl;
>> +
>> + spin_lock(&raminit_lock);
>
> Why do you need this spinlock?
>
>> +
>> + ctrl = readl(priv->raminit_ctrlreg);
>> + ctrl &= ~DCAN_RAM_INIT_BIT;
>> + writel(ctrl, priv->raminit_ctrlreg);
>
> Why don't use use the reg directly? Have you read my previous review?
>
>> + c_can_hw_raminit_wait(priv, ctrl, 0);
>> +
>> + if (enable) {
>> + /* Set start bit. */
>> + ctrl |= DCAN_RAM_INIT_BIT;
>> + writel(ctrl, priv->raminit_ctrlreg);
>> + c_can_hw_raminit_wait(priv, ctrl, 0);
>> + }
>> + spin_unlock(&raminit_lock);
>> +}
>> +
>> +static u32 c_can_plat_read_reg32(struct c_can_priv *priv, enum reg index)
>> +{
>> + u32 val;
>> +
>> + val = priv->read_reg(priv, index);
>> + val |= ((u32) priv->read_reg(priv, index + 1)) << 16;
>> +
>> + return val;
>> +}
>
> Why are you adding the read32() support here? Your commit message
> doesn't mention it. Please move this into a different patch.
>
>> +
>> +static void c_can_plat_write_reg32(struct c_can_priv *priv, enum reg index,
>> + u32 val)
>> +{
>> + priv->write_reg(priv, index + 1, val>>16);
>> + priv->write_reg(priv, index, val);
>> +}
>> +
>> +static u32 d_can_plat_read_reg32(struct c_can_priv *priv, enum reg index)
>> +{
>> + return readl(priv->base + priv->regs[index]);
>> +}
>> +
>> +static void d_can_plat_write_reg32(struct c_can_priv *priv, enum reg index,
>> + u32 val)
>> +{
>> + writel(val, priv->base + priv->regs[index]);
>> +}
>> +
>> static struct platform_device_id c_can_id_table[] = {
>> [BOSCH_C_CAN_PLATFORM] = {
>> .name = KBUILD_MODNAME,
>> @@ -201,11 +251,15 @@ static int c_can_plat_probe(struct platform_device *pdev)
>> case IORESOURCE_MEM_32BIT:
>> priv->read_reg = c_can_plat_read_reg_aligned_to_32bit;
>> priv->write_reg = c_can_plat_write_reg_aligned_to_32bit;
>> + priv->read_reg32 = c_can_plat_read_reg32;
>> + priv->write_reg32 = c_can_plat_write_reg32;
This will not compile.
Marc
--
Pengutronix e.K. | Marc Kleine-Budde |
Industrial Linux Solutions | Phone: +49-231-2826-924 |
Vertretung West/Dortmund | Fax: +49-5121-206917-5555 |
Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
next prev parent reply other threads:[~2014-05-05 12:22 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-02 7:11 [PATCH v2 1/6] ARM: socfpga: dts: fix pdma interrupt Steffen Trumtrar
2014-04-02 7:11 ` [PATCH v2 2/6] ARM: socfpga: dts: add remaining interrupts for pdma Steffen Trumtrar
2014-04-02 7:11 ` [PATCH v2 3/6] ARM: socfpga: dts: add i2c busses Steffen Trumtrar
2014-04-02 7:11 ` [PATCH v2 4/6] ARM: socfpga: dts: add can0+1 Steffen Trumtrar
2014-04-04 10:28 ` Pavel Machek
2014-04-25 19:53 ` can problems on socfpga [was Re: [PATCH v2 4/6] ARM: socfpga: dts: add can0+1] Pavel Machek
2014-04-25 20:24 ` Dinh Nguyen
2014-04-25 21:31 ` Thor Thayer
2014-04-26 8:57 ` Pavel Machek
2014-04-26 9:16 ` Pavel Machek
2014-04-26 9:36 ` Pavel Machek
2014-04-26 20:31 ` Pavel Machek
2014-04-26 20:51 ` Oliver Hartkopp
2014-04-26 22:37 ` Marc Kleine-Budde
2014-04-27 12:25 ` [patch] Fix CAN on socfpga, for net/master Pavel Machek
2014-04-28 20:20 ` Thor Thayer
2014-04-28 21:15 ` Pavel Machek
2014-04-28 23:37 ` T Thayer
[not found] ` <CAF03EBd19PC5RAsLR6-dMPF2x3XRf9X4bFPgX2kRdCYWUQBYcA@mail.gmail.com>
2014-04-30 21:53 ` Pavel Machek
2014-05-01 13:15 ` Thor Thayer
2014-05-02 8:48 ` [PATCHv2] " Pavel Machek
2014-05-02 12:27 ` Marc Kleine-Budde
2014-05-05 12:07 ` Pavel Machek
2014-05-13 12:07 ` Pavel Machek
2014-05-05 12:08 ` [PATCH 2/2] Add 32-bit accesses Pavel Machek
2014-05-05 12:40 ` Marc Kleine-Budde
2014-05-06 13:57 ` [PATCHv3] C_CAN: " Pavel Machek
2014-05-12 15:47 ` Marc Kleine-Budde
2014-05-13 11:29 ` Pavel Machek
2014-05-13 13:09 ` [PATCHv3] C_CAN: hwinit support for non-TI devices Pavel Machek
2014-05-13 13:36 ` Marc Kleine-Budde
2014-05-13 15:08 ` Pavel Machek
2014-05-13 15:18 ` Marc Kleine-Budde
2014-05-05 12:08 ` [PATCH 1/2] " Pavel Machek
2014-05-05 12:21 ` Marc Kleine-Budde
2014-05-05 12:22 ` Marc Kleine-Budde [this message]
2014-05-05 12:58 ` Pavel Machek
2014-05-05 13:00 ` Marc Kleine-Budde
2014-05-05 13:00 ` Pavel Machek
2014-04-02 7:11 ` [PATCH v2 5/6] ARM: socfpga: dts: add support for EBV SOCrates Steffen Trumtrar
2014-04-04 10:28 ` Pavel Machek
2014-04-02 7:11 ` [PATCH v2 6/6] ARM: socfpga: dts: add rtc on i2c0 to socrates Steffen Trumtrar
2014-04-02 17:33 ` [PATCH v2 1/6] ARM: socfpga: dts: fix pdma interrupt Dinh Nguyen
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=5367829B.4000104@pengutronix.de \
--to=mkl@pengutronix.de \
--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).