From: mkl@pengutronix.de (Marc Kleine-Budde)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v4 01/11] mfd: add pruss mfd driver.
Date: Wed, 27 Apr 2011 09:29:59 +0200 [thread overview]
Message-ID: <4DB7C5F7.3080103@pengutronix.de> (raw)
In-Reply-To: <EDC1056430EF4DA8A0D850CE1DEA28FC@subhasishg>
On 04/27/2011 08:39 AM, Subhasish Ghosh wrote:
> Hi Mark,
I'm Marc.
> - Is it ok to have u32 etc for __iomem cookie ?
no - "void __iomem *" is "void __iomem *"
>> +s32 pruss_disable(struct device *dev, u8 pruss_num)
> make it a int function
>
> SG -- Ok will do
>
>> +
>> + /* Reset PRU */
>> + iowrite32(PRUCORE_CONTROL_RESETVAL,
>> + &h_pruss->control);
>> + spin_unlock(&pruss->lock);
>> +
>> + return 0;
>
> make it a void function?
>
> SG -- This should be int, in case of invalid pru num, we ret an error.
Yes - Sorry.
>> +}
>> +EXPORT_SYMBOL_GPL(pruss_disable);
>> +
>> +s32 pruss_enable(struct device *dev, u8 pruss_num)
> int?
>
> SG -- Ok will do
>
>
>> +
>> + if ((pruss_num != PRUCORE_0) && (pruss_num != PRUCORE_1))
>> + return -EINVAL;
>> +
>> + h_pruss = &pruss_mmap->core[pruss_num];
>> +
>> + /* Reset PRU */
>> + spin_lock(&pruss->lock);
>> + iowrite32(PRUCORE_CONTROL_RESETVAL, &h_pruss->control);
>
> no need to lock the ram reset below?
>
> SG -- I don't think its required. We just reset the RAM during init and
> since each pru can only be attached to only one device, the access
> will be already serialized based upon the pru num.
In the other function you lock the access to the ram, but not here.
>> + /* Reset any garbage in the ram */
>> + if (pruss_num == PRUCORE_0)
>> + for (i = 0; i < PRUSS_PRU0_RAM_SZ; i++)
>> + iowrite32(0x0, &pruss_mmap->dram0[i]);
>> + else if (pruss_num == PRUCORE_1)
>> + for (i = 0; i < PRUSS_PRU1_RAM_SZ; i++)
>> + iowrite32(0x0, &pruss_mmap->dram1[i]);
> if you make a array for these
> +struct pruss_map {
> + u8 dram0[512];
> + u8 res1[7680];
>
> + u8 dram1[512];
> + u8 res2[7680];
> ..}
> you don't need the if..else..
>
> SG - The dram/iram is not contiguous, there is a reserved space in
> between, how do I declare an array for it.
This is the struct you have:
struct pruss_map {
u8 dram0[512];
u8 res1[7680];
u8 dram1[512];
u8 res2[7680];
...
}
If you want to describe the ram with an array it translates to:
struct pruss_dram {
u8 dram[512];
u8 res[7680];
};
struct pruss_map {
struct pruss_dram[2];
...
};
BTW: Why do you declare the dram as "u8" "u32" seems more natural to me.
>> +/* Load the specified PRU with code */
>> +s32 pruss_load(struct device *dev, u8 pruss_num,
>> + u32 *pruss_code, u32 code_size_in_words)
>> +{
>> + struct pruss_priv *pruss = dev_get_drvdata(dev->parent);
>> + struct pruss_map __iomem *pruss_mmap = pruss->ioaddr;
>> + u32 __iomem *pruss_iram;
>> + u32 i;
>> +
>> + if (pruss_num == PRUCORE_0)
>> + pruss_iram = (u32 __iomem *)&pruss_mmap->iram0;
>> + else if (pruss_num == PRUCORE_1)
>> + pruss_iram = (u32 __iomem *)&pruss_mmap->iram1;
>> + else
> same here
>
> SG - same here.
same here :)
>> +s32 pruss_run(struct device *dev, u8 pruss_num)
> int?
>
> SG - Ok, Will do.
>
>
>> + while (cnt--) {
>> + temp_reg = ioread32(&h_pruss->control);
>> + if (((temp_reg & PRUCORE_CONTROL_RUNSTATE_MASK) >>
>> + PRUCORE_CONTROL_RUNSTATE_SHIFT) ==
>> + PRUCORE_CONTROL_RUNSTATE_HALT)
>> + break;
> how long might this take? what about some delay, sleep, or reschedule?
>
> SG - This does not take more than 10 to 20 counts,
Does it make sense, that the timeout is a parameter to that function?
>
>
>> +s32 pruss_writeb(struct device *dev, u32 offset, u8 pdatatowrite)
>> +{
>> + struct pruss_priv *pruss = dev_get_drvdata(dev->parent);
>> + void __iomem *paddresstowrite;
> we usually don't use "p" variable names for pointers
>
> SG - Ok, will remove.
>
>
>> +s32 pruss_rmwb(struct device *dev, u32 offset, u8 mask, u8 val)
> void function?
>
> SG - Ok, will do.
>
>> +
>> +s32 pruss_readb(struct device *dev, u32 offset, u8 *pdatatoread)
> void?
>
> SG - Ok, will do.
>
>> +{
>> + struct pruss_priv *pruss = dev_get_drvdata(dev->parent);
>> + void __iomem *paddresstoread;
>> +
>> + paddresstoread = pruss->ioaddr + offset ;
>> + *pdatatoread = ioread8(paddresstoread);
>> +
>> + return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(pruss_readb);
>> +
>> +s32 pruss_readb_multi(struct device *dev, u32 offset,
>> + u8 *pdatatoread, u16 bytestoread)
> viod?
>
> SG - Ok, will do.
>
>> +{
>> + struct pruss_priv *pruss = dev_get_drvdata(dev->parent);
>> + u8 __iomem *paddresstoread;
>> + u16 i;
> int?
>
> SG - Ok, will do.
>
>
>
>> + return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(pruss_readb_multi);
>> +
>> +s32 pruss_writel(struct device *dev, u32 offset,
>> + u32 pdatatowrite)
> void?
>
> SG - Ok, will do.
>
>
>> + return 0;
>> +}
>> +EXPORT_SYMBOL_GPL(pruss_writel);
>> +
>> +s32 pruss_writel_multi(struct device *dev, u32 offset,
>> + u32 *pdatatowrite, u16 wordstowrite)
> void?
>
> SG - Ok, will do.
>
>> +{
>> + struct pruss_priv *pruss = dev_get_drvdata(dev->parent);
>> + u32 __iomem *paddresstowrite;
>> + u16 i;
>> +
>> + paddresstowrite = pruss->ioaddr + offset;
>> +
>> + for (i = 0; i < wordstowrite; i++)
>> + iowrite32(*pdatatowrite++, paddresstowrite++);
> memcopy_to_iomem?
>
> SG -- I did not understand, could you please elaborate.
You could use memcpy_toio() - although it seems it does copy bytes
internally.
http://lxr.linux.no/linux+v2.6.38/arch/arm/include/asm/io.h#L222
>
>
>> +
>> +s32 pruss_rmwl(struct device *dev, u32 offset, u32 mask, u32 val)
> void?
>
> SG - Ok, will do.
>
>
>> +}
>> +EXPORT_SYMBOL_GPL(pruss_rmwl);
>> +
>> +s32 pruss_readl(struct device *dev, u32 offset, u32 *pdatatoread)
> void? or return the read value
>
> SG - Ok, will do.
>
>
>
regards,
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 part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 262 bytes
Desc: OpenPGP digital signature
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20110427/0ddba555/attachment-0001.sig>
next prev parent reply other threads:[~2011-04-27 7:29 UTC|newest]
Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-22 12:08 [PATCH v4 00/11] pruss mfd drivers Subhasish Ghosh
2011-04-22 11:50 ` [PATCH v4 08/11] tty: add pruss SUART driver Subhasish Ghosh
2011-04-25 21:20 ` Greg KH
2011-04-26 6:51 ` Nori, Sekhar
2011-04-26 12:45 ` Greg KH
2011-04-27 5:23 ` Subhasish Ghosh
2011-04-27 11:19 ` Nori, Sekhar
2011-04-27 13:15 ` Subhasish Ghosh
2011-04-27 17:50 ` Nori, Sekhar
2011-05-02 8:34 ` Subhasish Ghosh
2011-05-02 17:15 ` Nori, Sekhar
2011-05-10 10:54 ` Subhasish Ghosh
2011-05-10 13:13 ` Nori, Sekhar
2011-05-13 12:10 ` Subhasish Ghosh
2011-05-09 13:39 ` Subhasish Ghosh
2011-05-09 13:46 ` Alan Cox
2011-05-09 13:50 ` Subhasish Ghosh
2011-05-09 13:55 ` Alan Cox
2011-05-10 6:17 ` Subhasish Ghosh
2011-05-10 13:32 ` Alan Cox
2011-05-11 7:01 ` Subhasish Ghosh
2011-05-11 10:35 ` Alan Cox
2011-04-22 12:08 ` [PATCH v4 01/11] mfd: add pruss mfd driver Subhasish Ghosh
2011-04-22 16:00 ` Marc Kleine-Budde
2011-04-27 6:39 ` Subhasish Ghosh
2011-04-27 7:29 ` Marc Kleine-Budde [this message]
2011-04-27 9:12 ` Russell King - ARM Linux
2011-04-27 13:18 ` Subhasish Ghosh
2011-04-27 13:35 ` Marc Kleine-Budde
2011-04-28 7:22 ` Subhasish Ghosh
2011-04-28 7:46 ` Arnd Bergmann
2011-04-27 13:16 ` Arnd Bergmann
2011-04-27 13:38 ` Subhasish Ghosh
2011-04-27 14:05 ` Arnd Bergmann
2011-04-28 7:17 ` Subhasish Ghosh
2011-04-28 7:35 ` Arnd Bergmann
2011-05-04 7:18 ` Subhasish Ghosh
2011-05-04 13:44 ` Arnd Bergmann
2011-05-04 14:38 ` Nori, Sekhar
2011-05-05 13:25 ` Subhasish Ghosh
2011-05-05 14:12 ` Arnd Bergmann
2011-05-10 9:53 ` Subhasish Ghosh
2011-05-10 21:44 ` Arnd Bergmann
2011-05-11 9:28 ` Subhasish Ghosh
2011-05-11 20:03 ` Arnd Bergmann
2011-05-13 10:55 ` Subhasish Ghosh
2011-05-14 16:01 ` Mark Brown
2011-05-14 20:33 ` Arnd Bergmann
2011-05-14 22:14 ` Mark Brown
2011-05-15 9:33 ` Arnd Bergmann
2011-05-16 6:06 ` Subhasish Ghosh
2011-05-23 15:30 ` Arnd Bergmann
2011-05-24 12:17 ` Subhasish Ghosh
2011-05-24 12:40 ` Arnd Bergmann
2011-05-24 13:43 ` Greg KH
2011-05-30 13:25 ` Subhasish Ghosh
2011-05-30 14:02 ` Greg KH
2011-05-30 14:38 ` Subhasish Ghosh
2011-05-30 14:04 ` Arnd Bergmann
2011-05-30 14:13 ` Subhasish Ghosh
2011-05-30 14:43 ` Arnd Bergmann
2011-05-30 15:28 ` Subhasish Ghosh
2011-05-22 20:24 ` Samuel Ortiz
2011-05-22 20:21 ` Samuel Ortiz
2011-05-23 15:13 ` Arnd Bergmann
2011-04-22 12:08 ` [PATCH v4 02/11] da850: add pruss clock Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 03/11] da850: pruss platform specific additions Subhasish Ghosh
2011-04-26 11:06 ` Sergei Shtylyov
2011-04-27 6:43 ` Subhasish Ghosh
2011-04-27 10:05 ` Sergei Shtylyov
2011-04-27 10:19 ` Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 04/11] da850: pruss board " Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 05/11] mfd: pruss SUART private data Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 06/11] da850: pruss SUART board specific additions Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 07/11] da850: pruss SUART platform " Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 09/11] mfd: pruss CAN private data Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 10/11] da850: pruss CAN platform specific additions Subhasish Ghosh
2011-04-22 12:08 ` [PATCH v4 11/11] da850: pruss CAN board " Subhasish Ghosh
2011-04-22 16:03 ` Marc Kleine-Budde
2011-04-26 10:57 ` Sergei Shtylyov
2011-04-27 7:03 ` Subhasish Ghosh
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=4DB7C5F7.3080103@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).