* [PATCH 1/3] ppc: remove bit operation headers file conflict
2014-01-29 11:06 [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting Renaud Barbier
@ 2014-01-29 11:06 ` Renaud Barbier
2014-01-29 11:06 ` [PATCH 2/3] UBIFS: implement readlink entry point Renaud Barbier
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Renaud Barbier @ 2014-01-29 11:06 UTC (permalink / raw)
To: barebox
Removed the ppc bit operation functions and definitions in the ppc
file asm/bitops.h since these are already defined in the asm-generic header
files. Moved ffs64 definition to the mpc85xx header files because
the function requires the inclusion of linux/log2.h which also includes
asm/bitops.h.
The conflict was noted when UBIFS was enabled in barebox.
Signed-off-by: Renaud Barbier <renaud.barbier@ge.com>
---
arch/ppc/cpu-85xx/tlb.c | 2 +-
arch/ppc/include/asm/bitops.h | 46 +--------------------------
arch/ppc/mach-mpc85xx/fsl_law.c | 1 +
arch/ppc/mach-mpc85xx/include/mach/ffs64.h | 20 ++++++++++++
4 files changed, 24 insertions(+), 45 deletions(-)
create mode 100644 arch/ppc/mach-mpc85xx/include/mach/ffs64.h
diff --git a/arch/ppc/cpu-85xx/tlb.c b/arch/ppc/cpu-85xx/tlb.c
index 3ffcfff..a2739d0 100644
--- a/arch/ppc/cpu-85xx/tlb.c
+++ b/arch/ppc/cpu-85xx/tlb.c
@@ -24,7 +24,7 @@
#include <common.h>
#include <asm/processor.h>
#include <asm/config.h>
-#include <asm/bitops.h>
+#include <linux/log2.h>
#include <mach/mmu.h>
void e500_invalidate_tlb(u8 tlb)
diff --git a/arch/ppc/include/asm/bitops.h b/arch/ppc/include/asm/bitops.h
index 3b31d54..eea9e0c 100644
--- a/arch/ppc/include/asm/bitops.h
+++ b/arch/ppc/include/asm/bitops.h
@@ -6,13 +6,7 @@
#define _PPC_BITOPS_H
#include <asm/byteorder.h>
-
-extern void set_bit(int nr, volatile void *addr);
-extern void clear_bit(int nr, volatile void *addr);
-extern void change_bit(int nr, volatile void *addr);
-extern int test_and_set_bit(int nr, volatile void *addr);
-extern int test_and_clear_bit(int nr, volatile void *addr);
-extern int test_and_change_bit(int nr, volatile void *addr);
+#include <asm-generic/bitops/ops.h>
/*
* Arguably these bit operations don't imply any memory barrier or
@@ -143,13 +137,6 @@ extern __inline__ int test_and_change_bit(int nr, volatile void *addr)
}
#endif /* __INLINE_BITOPS */
-extern __inline__ int test_bit(int nr, __const__ volatile void *addr)
-{
- __const__ unsigned int *p = (__const__ unsigned int *) addr;
-
- return ((p[nr >> 5] >> (nr & 0x1f)) & 1) != 0;
-}
-
/* Return the bit position of the most significant 1 bit in a word */
extern __inline__ int __ilog2(unsigned int x)
{
@@ -178,36 +165,6 @@ static inline int fls(unsigned int x)
return 32 - lz;
}
-/*
- * fls64 - find last set bit in a 64-bit word
- * @x: the word to search
- *
- * This is defined in a similar way as the libc and compiler builtin
- * ffsll, but returns the position of the most significant set bit.
- *
- * fls64(value) returns 0 if value is 0 or the position of the last
- * set bit if value is nonzero. The last (most significant) bit is
- * at position 64.
- */
-
-static inline int fls64(__u64 x)
-{
- __u32 h = x >> 32;
- if (h)
- return fls(h) + 32;
- return fls(x);
-}
-
-static inline int __ilog2_u64(u64 n)
-{
- return fls64(n) - 1;
-}
-
-static inline int ffs64(u64 x)
-{
- return __ilog2_u64(x & -x) + 1ull;
-}
-
#ifdef __KERNEL__
/*
@@ -220,6 +177,7 @@ extern __inline__ int ffs(int x)
return __ilog2(x & -x) + 1;
}
+#include <asm-generic/bitops/fls64.h>
#include <asm-generic/bitops/hweight.h>
#endif /* __KERNEL__ */
diff --git a/arch/ppc/mach-mpc85xx/fsl_law.c b/arch/ppc/mach-mpc85xx/fsl_law.c
index 34c039d..38902e3 100644
--- a/arch/ppc/mach-mpc85xx/fsl_law.c
+++ b/arch/ppc/mach-mpc85xx/fsl_law.c
@@ -24,6 +24,7 @@
#include <common.h>
#include <asm/config.h>
#include <asm/fsl_law.h>
+#include <mach/ffs64.h>
#define FSL_HW_NUM_LAWS FSL_NUM_LAWS
diff --git a/arch/ppc/mach-mpc85xx/include/mach/ffs64.h b/arch/ppc/mach-mpc85xx/include/mach/ffs64.h
new file mode 100644
index 0000000..045498c
--- /dev/null
+++ b/arch/ppc/mach-mpc85xx/include/mach/ffs64.h
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2013 GE Intelligent Platforms, Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * 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.
+ *
+ */
+#include <linux/log2.h>
+
+static inline int ffs64(u64 x)
+{
+ return __ilog2_u64(x & -x) + 1ull;
+}
--
1.7.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 2/3] UBIFS: implement readlink entry point
2014-01-29 11:06 [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting Renaud Barbier
2014-01-29 11:06 ` [PATCH 1/3] ppc: remove bit operation headers file conflict Renaud Barbier
@ 2014-01-29 11:06 ` Renaud Barbier
2014-01-29 11:06 ` [PATCH 3/3] DA923RC: enable UBI/UBIFS configuration Renaud Barbier
2014-01-30 7:43 ` [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting Sascha Hauer
3 siblings, 0 replies; 5+ messages in thread
From: Renaud Barbier @ 2014-01-29 11:06 UTC (permalink / raw)
To: barebox
Implement the readlink entry point for future use by the DA923RC.
Signed-off-by: Renaud Barbier <renaud.barbier@ge.com>
---
fs/ubifs/ubifs.c | 38 ++++++++++++++++++++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/fs/ubifs/ubifs.c b/fs/ubifs/ubifs.c
index dfa6107..e2f9593 100644
--- a/fs/ubifs/ubifs.c
+++ b/fs/ubifs/ubifs.c
@@ -24,6 +24,7 @@
*/
#include <common.h>
+#include <malloc.h>
#include <driver.h>
#include <init.h>
#include <malloc.h>
@@ -549,6 +550,42 @@ static int ubifs_stat(struct device_d *dev, const char *filename, struct stat *s
return 0;
}
+static char *ubifs_symlink(struct inode *inode)
+{
+ struct ubifs_inode *ui;
+ char *symlink;
+
+ ui = ubifs_inode(inode);
+ symlink = malloc(ui->data_len + 1);
+
+ memcpy(symlink, ui->data, ui->data_len);
+ symlink[ui->data_len] = '\0';
+
+ return symlink;
+}
+
+static int ubifs_readlink(struct device_d *dev, const char *pathname, char *buf,
+ size_t bufsz)
+{
+ struct ubifs_priv *priv = dev->priv;
+ struct inode *inode;
+ char *symlink;
+ int len;
+
+ inode = ubifs_findfile(priv->sb, pathname);
+
+ if (!inode)
+ return -ENOENT;
+
+ symlink = ubifs_symlink(inode);
+
+ len = min(bufsz, strlen(symlink));
+ memcpy(buf, symlink, len);
+ free(symlink);
+
+ return 0;
+}
+
static int ubifs_probe(struct device_d *dev)
{
struct fs_device_d *fsdev = dev_to_fs_device(dev);
@@ -609,6 +646,7 @@ static struct fs_driver_d ubifs_driver = {
.readdir = ubifs_readdir,
.closedir = ubifs_closedir,
.stat = ubifs_stat,
+ .readlink = ubifs_readlink,
.type = filetype_ubifs,
.flags = 0,
.drv = {
--
1.7.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH 3/3] DA923RC: enable UBI/UBIFS configuration
2014-01-29 11:06 [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting Renaud Barbier
2014-01-29 11:06 ` [PATCH 1/3] ppc: remove bit operation headers file conflict Renaud Barbier
2014-01-29 11:06 ` [PATCH 2/3] UBIFS: implement readlink entry point Renaud Barbier
@ 2014-01-29 11:06 ` Renaud Barbier
2014-01-30 7:43 ` [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting Sascha Hauer
3 siblings, 0 replies; 5+ messages in thread
From: Renaud Barbier @ 2014-01-29 11:06 UTC (permalink / raw)
To: barebox
The UBI/UBIFS support is enabled and a script is added to attach
the UBI device and mount the UBIFS partition. This allows the loading
of firmware images from the NOR flash.
Signed-off-by: Renaud Barbier <renaud.barbier@ge.com>
---
arch/ppc/boards/geip-da923rc/env/bin/init | 12 ++++++++++++
arch/ppc/configs/da923rc_defconfig | 6 ++++++
2 files changed, 18 insertions(+), 0 deletions(-)
diff --git a/arch/ppc/boards/geip-da923rc/env/bin/init b/arch/ppc/boards/geip-da923rc/env/bin/init
index 6308999..330a435 100644
--- a/arch/ppc/boards/geip-da923rc/env/bin/init
+++ b/arch/ppc/boards/geip-da923rc/env/bin/init
@@ -2,3 +2,15 @@
export PATH=/env/bin
source /env/config
+
+#Define a 26MB partition in flash starting at offset 0x20000
+addpart -n /dev/nor0 0x1a00000@0x20000(boot)
+ubiattach /dev/boot
+
+if [ $? -ne 0 ]; then
+ echo "Fail to attach UBI device"
+ exit 1;
+fi
+
+mkdir /mnt
+mount -t ubifs /dev/ubi0.boot /mnt
diff --git a/arch/ppc/configs/da923rc_defconfig b/arch/ppc/configs/da923rc_defconfig
index a9dc0df..da1b13a 100644
--- a/arch/ppc/configs/da923rc_defconfig
+++ b/arch/ppc/configs/da923rc_defconfig
@@ -42,6 +42,12 @@ CONFIG_DRIVER_CFI_BANK_WIDTH_4=n
CONFIG_CFI_BUFFER_WRITE=y
CONFIG_MTD=y
CONFIG_MTD_WRITE=y
+CONFIG_MTD_UBI=y
+CONFIG_CMD_UBI=y
+CONFIG_FS_UBIFS=y
+CONFIG_FS_UBIFS_COMPRESSION_LZO=y
+CONFIG_CMD_UNLZO=y
+CONFIG_LZO_DECOMPRESS=y
CONFIG_MALLOC_SIZE=0x2800000
CONFIG_PROMPT="GE> "
CONFIG_BAUDRATE=9600
--
1.7.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 0/3] DA923RC: enable UBIFS support to allow firmware flash booting
2014-01-29 11:06 [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting Renaud Barbier
` (2 preceding siblings ...)
2014-01-29 11:06 ` [PATCH 3/3] DA923RC: enable UBI/UBIFS configuration Renaud Barbier
@ 2014-01-30 7:43 ` Sascha Hauer
3 siblings, 0 replies; 5+ messages in thread
From: Sascha Hauer @ 2014-01-30 7:43 UTC (permalink / raw)
To: Renaud Barbier; +Cc: barebox
On Wed, Jan 29, 2014 at 11:06:49AM +0000, Renaud Barbier wrote:
> UBI/UBIFS are enabled for the DA923RC board to load and boot images from
> the NOR flash storage. As images may be loaded through a symlink, the
> readlink entry point is implemented in the UBIFS driver support.
>
> ppc bit operations header files are updated as they are in conflict with
> main header files when UBIFS is enabled.
>
> Renaud Barbier (3):
> ppc: remove bit operation headers file conflict
> UBIFS: implement readlink entry point
> DA923RC: enable UBI/UBIFS configuration
Applied this series, thanks
Sascha
>
> arch/ppc/boards/geip-da923rc/env/bin/init | 12 +++++++
> arch/ppc/configs/da923rc_defconfig | 6 ++++
> arch/ppc/cpu-85xx/tlb.c | 2 +-
> arch/ppc/include/asm/bitops.h | 46 +--------------------------
> arch/ppc/mach-mpc85xx/fsl_law.c | 1 +
> arch/ppc/mach-mpc85xx/include/mach/ffs64.h | 20 ++++++++++++
> fs/ubifs/ubifs.c | 38 +++++++++++++++++++++++
> 7 files changed, 80 insertions(+), 45 deletions(-)
> create mode 100644 arch/ppc/mach-mpc85xx/include/mach/ffs64.h
>
>
> _______________________________________________
> 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