* [PATCH] import linux __iowrite32/64_copy support
@ 2011-06-02 15:51 Jean-Christophe PLAGNIOL-VILLARD
2011-06-03 7:02 ` Marc Reilly
2011-06-06 6:22 ` Sascha Hauer
0 siblings, 2 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-06-02 15:51 UTC (permalink / raw)
To: barebox
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
---
include/linux/io.h | 27 ++++++++++++++++++++
lib/Makefile | 1 +
lib/iomap_copy.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 98 insertions(+), 0 deletions(-)
create mode 100644 include/linux/io.h
create mode 100644 lib/iomap_copy.c
diff --git a/include/linux/io.h b/include/linux/io.h
new file mode 100644
index 0000000..a87501c
--- /dev/null
+++ b/include/linux/io.h
@@ -0,0 +1,27 @@
+/*
+ * Copyright 2006 PathScale, Inc. All Rights Reserved.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef _LINUX_IO_H
+#define _LINUX_IO_H
+
+#include <linux/types.h>
+#include <asm/io.h>
+
+void __iowrite32_copy(void __iomem *to, const void *from, size_t count);
+void __iowrite64_copy(void __iomem *to, const void *from, size_t count);
+
+#endif /* _LINUX_IO_H */
diff --git a/lib/Makefile b/lib/Makefile
index d96cfe7..b1f4f3d 100644
--- a/lib/Makefile
+++ b/lib/Makefile
@@ -1,4 +1,5 @@
obj-y += ctype.o
+obj-y += iomap_copy.o
obj-y += rbtree.o
obj-y += display_options.o
obj-y += string.o
diff --git a/lib/iomap_copy.c b/lib/iomap_copy.c
new file mode 100644
index 0000000..8732ae0
--- /dev/null
+++ b/lib/iomap_copy.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2006 PathScale, Inc. All Rights Reserved.
+ *
+ * This file is free software; you can redistribute it and/or modify
+ * it under the terms of version 2 of the GNU General Public License
+ * as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#include <module.h>
+#include <linux/io.h>
+
+/**
+ * __iowrite32_copy - copy data to MMIO space, in 32-bit units
+ * @to: destination, in MMIO space (must be 32-bit aligned)
+ * @from: source (must be 32-bit aligned)
+ * @count: number of 32-bit quantities to copy
+ *
+ * Copy data from kernel space to MMIO space, in units of 32 bits at a
+ * time. Order of access is not guaranteed, nor is a memory barrier
+ * performed afterwards.
+ */
+void __attribute__((weak)) __iowrite32_copy(void __iomem *to,
+ const void *from,
+ size_t count)
+{
+ u32 __iomem *dst = to;
+ const u32 *src = from;
+ const u32 *end = src + count;
+
+ while (src < end)
+ __raw_writel(*src++, dst++);
+}
+EXPORT_SYMBOL_GPL(__iowrite32_copy);
+
+/**
+ * __iowrite64_copy - copy data to MMIO space, in 64-bit or 32-bit units
+ * @to: destination, in MMIO space (must be 64-bit aligned)
+ * @from: source (must be 64-bit aligned)
+ * @count: number of 64-bit quantities to copy
+ *
+ * Copy data from kernel space to MMIO space, in units of 32 or 64 bits at a
+ * time. Order of access is not guaranteed, nor is a memory barrier
+ * performed afterwards.
+ */
+void __attribute__((weak)) __iowrite64_copy(void __iomem *to,
+ const void *from,
+ size_t count)
+{
+#ifdef CONFIG_64BIT
+ u64 __iomem *dst = to;
+ const u64 *src = from;
+ const u64 *end = src + count;
+
+ while (src < end)
+ __raw_writeq(*src++, dst++);
+#else
+ __iowrite32_copy(to, from, count * 2);
+#endif
+}
+
+EXPORT_SYMBOL_GPL(__iowrite64_copy);
--
1.7.4.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: [PATCH] import linux __iowrite32/64_copy support
2011-06-02 15:51 [PATCH] import linux __iowrite32/64_copy support Jean-Christophe PLAGNIOL-VILLARD
@ 2011-06-03 7:02 ` Marc Reilly
2011-06-04 12:56 ` Jean-Christophe PLAGNIOL-VILLARD
2011-06-06 6:22 ` Sascha Hauer
1 sibling, 1 reply; 5+ messages in thread
From: Marc Reilly @ 2011-06-03 7:02 UTC (permalink / raw)
To: 'Jean-Christophe PLAGNIOL-VILLARD', barebox
Hi,
<snip>
> +/**
> + * __iowrite64_copy - copy data to MMIO space, in 64-bit or 32-bit
> +units
> + * @to: destination, in MMIO space (must be 64-bit aligned)
> + * @from: source (must be 64-bit aligned)
> + * @count: number of 64-bit quantities to copy
> + *
> + * Copy data from kernel space to MMIO space, in units of 32 or 64 bits
> +at a
> + * time. Order of access is not guaranteed, nor is a memory barrier
> + * performed afterwards.
> + */
> +void __attribute__((weak)) __iowrite64_copy(void __iomem *to,
> + const void *from,
> + size_t count)
> +{
> +#ifdef CONFIG_64BIT
> + u64 __iomem *dst = to;
> + const u64 *src = from;
> + const u64 *end = src + count;
> +
> + while (src < end)
> + __raw_writeq(*src++, dst++);
> +#else
> + __iowrite32_copy(to, from, count * 2); #endif }
> +
> +EXPORT_SYMBOL_GPL(__iowrite64_copy);
> --
Is this missing #endif for CONFIG_64BIT ?
Cheers
Marc
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] import linux __iowrite32/64_copy support
2011-06-03 7:02 ` Marc Reilly
@ 2011-06-04 12:56 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-06-04 12:56 UTC (permalink / raw)
To: Marc Reilly; +Cc: barebox
On 17:02 Fri 03 Jun , Marc Reilly wrote:
> Hi,
>
> <snip>
>
> > +/**
> > + * __iowrite64_copy - copy data to MMIO space, in 64-bit or 32-bit
> > +units
> > + * @to: destination, in MMIO space (must be 64-bit aligned)
> > + * @from: source (must be 64-bit aligned)
> > + * @count: number of 64-bit quantities to copy
> > + *
> > + * Copy data from kernel space to MMIO space, in units of 32 or 64 bits
> > +at a
> > + * time. Order of access is not guaranteed, nor is a memory barrier
> > + * performed afterwards.
> > + */
> > +void __attribute__((weak)) __iowrite64_copy(void __iomem *to,
> > + const void *from,
> > + size_t count)
> > +{
> > +#ifdef CONFIG_64BIT
> > + u64 __iomem *dst = to;
> > + const u64 *src = from;
> > + const u64 *end = src + count;
> > +
> > + while (src < end)
> > + __raw_writeq(*src++, dst++);
> > +#else
> > + __iowrite32_copy(to, from, count * 2); #endif }
> > +
> > +EXPORT_SYMBOL_GPL(__iowrite64_copy);
> > --
>
> Is this missing #endif for CONFIG_64BIT ?
no in the original here it's present
please double check your e-mail
Best Regards,
J.
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] import linux __iowrite32/64_copy support
2011-06-02 15:51 [PATCH] import linux __iowrite32/64_copy support Jean-Christophe PLAGNIOL-VILLARD
2011-06-03 7:02 ` Marc Reilly
@ 2011-06-06 6:22 ` Sascha Hauer
2011-06-06 9:16 ` Jean-Christophe PLAGNIOL-VILLARD
1 sibling, 1 reply; 5+ messages in thread
From: Sascha Hauer @ 2011-06-06 6:22 UTC (permalink / raw)
To: Jean-Christophe PLAGNIOL-VILLARD; +Cc: barebox
Hi J,
On Thu, Jun 02, 2011 at 05:51:27PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> ---
> include/linux/io.h | 27 ++++++++++++++++++++
> lib/Makefile | 1 +
> lib/iomap_copy.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
No general obejctions, but without users this is quite uninteresting.
Please repost this along with the first user.
Sascha
> 3 files changed, 98 insertions(+), 0 deletions(-)
> create mode 100644 include/linux/io.h
> create mode 100644 lib/iomap_copy.c
>
> diff --git a/include/linux/io.h b/include/linux/io.h
> new file mode 100644
> index 0000000..a87501c
> --- /dev/null
> +++ b/include/linux/io.h
> @@ -0,0 +1,27 @@
> +/*
> + * Copyright 2006 PathScale, Inc. All Rights Reserved.
> + *
> + * This file is free software; you can redistribute it and/or modify
> + * it under the terms of version 2 of the GNU General Public License
> + * as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software Foundation,
> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
> + */
> +
> +#ifndef _LINUX_IO_H
> +#define _LINUX_IO_H
> +
> +#include <linux/types.h>
> +#include <asm/io.h>
> +
> +void __iowrite32_copy(void __iomem *to, const void *from, size_t count);
> +void __iowrite64_copy(void __iomem *to, const void *from, size_t count);
> +
> +#endif /* _LINUX_IO_H */
> diff --git a/lib/Makefile b/lib/Makefile
> index d96cfe7..b1f4f3d 100644
> --- a/lib/Makefile
> +++ b/lib/Makefile
> @@ -1,4 +1,5 @@
> obj-y += ctype.o
> +obj-y += iomap_copy.o
> obj-y += rbtree.o
> obj-y += display_options.o
> obj-y += string.o
> diff --git a/lib/iomap_copy.c b/lib/iomap_copy.c
> new file mode 100644
> index 0000000..8732ae0
> --- /dev/null
> +++ b/lib/iomap_copy.c
> @@ -0,0 +1,70 @@
> +/*
> + * Copyright 2006 PathScale, Inc. All Rights Reserved.
> + *
> + * This file is free software; you can redistribute it and/or modify
> + * it under the terms of version 2 of the GNU General Public License
> + * as published by the Free Software Foundation.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software Foundation,
> + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
> + */
> +
> +#include <module.h>
> +#include <linux/io.h>
> +
> +/**
> + * __iowrite32_copy - copy data to MMIO space, in 32-bit units
> + * @to: destination, in MMIO space (must be 32-bit aligned)
> + * @from: source (must be 32-bit aligned)
> + * @count: number of 32-bit quantities to copy
> + *
> + * Copy data from kernel space to MMIO space, in units of 32 bits at a
> + * time. Order of access is not guaranteed, nor is a memory barrier
> + * performed afterwards.
> + */
> +void __attribute__((weak)) __iowrite32_copy(void __iomem *to,
> + const void *from,
> + size_t count)
> +{
> + u32 __iomem *dst = to;
> + const u32 *src = from;
> + const u32 *end = src + count;
> +
> + while (src < end)
> + __raw_writel(*src++, dst++);
> +}
> +EXPORT_SYMBOL_GPL(__iowrite32_copy);
> +
> +/**
> + * __iowrite64_copy - copy data to MMIO space, in 64-bit or 32-bit units
> + * @to: destination, in MMIO space (must be 64-bit aligned)
> + * @from: source (must be 64-bit aligned)
> + * @count: number of 64-bit quantities to copy
> + *
> + * Copy data from kernel space to MMIO space, in units of 32 or 64 bits at a
> + * time. Order of access is not guaranteed, nor is a memory barrier
> + * performed afterwards.
> + */
> +void __attribute__((weak)) __iowrite64_copy(void __iomem *to,
> + const void *from,
> + size_t count)
> +{
> +#ifdef CONFIG_64BIT
> + u64 __iomem *dst = to;
> + const u64 *src = from;
> + const u64 *end = src + count;
> +
> + while (src < end)
> + __raw_writeq(*src++, dst++);
> +#else
> + __iowrite32_copy(to, from, count * 2);
> +#endif
> +}
> +
> +EXPORT_SYMBOL_GPL(__iowrite64_copy);
> --
> 1.7.4.1
>
>
> _______________________________________________
> barebox mailing list
> barebox@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/barebox
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] import linux __iowrite32/64_copy support
2011-06-06 6:22 ` Sascha Hauer
@ 2011-06-06 9:16 ` Jean-Christophe PLAGNIOL-VILLARD
0 siblings, 0 replies; 5+ messages in thread
From: Jean-Christophe PLAGNIOL-VILLARD @ 2011-06-06 9:16 UTC (permalink / raw)
To: Sascha Hauer; +Cc: barebox
On 08:22 Mon 06 Jun , Sascha Hauer wrote:
> Hi J,
>
> On Thu, Jun 02, 2011 at 05:51:27PM +0200, Jean-Christophe PLAGNIOL-VILLARD wrote:
> > Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
> > ---
> > include/linux/io.h | 27 ++++++++++++++++++++
> > lib/Makefile | 1 +
> > lib/iomap_copy.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++
>
> No general obejctions, but without users this is quite uninteresting.
> Please repost this along with the first user.
the mci support for atmel we will speed to memcpy
I'll use it also on the framebuffer console support later
Best Regards,
J.
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-06-06 9:29 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-02 15:51 [PATCH] import linux __iowrite32/64_copy support Jean-Christophe PLAGNIOL-VILLARD
2011-06-03 7:02 ` Marc Reilly
2011-06-04 12:56 ` Jean-Christophe PLAGNIOL-VILLARD
2011-06-06 6:22 ` Sascha Hauer
2011-06-06 9:16 ` Jean-Christophe PLAGNIOL-VILLARD
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox