* [PATCH 0/3] DA923RC: enable UBIFS support to allow firmware flash booting
@ 2014-01-29 11:06 Renaud Barbier
2014-01-29 11:06 ` [PATCH 1/3] ppc: remove bit operation headers file conflict Renaud Barbier
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Renaud Barbier @ 2014-01-29 11:06 UTC (permalink / raw)
To: barebox
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
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
^ permalink raw reply [flat|nested] 5+ messages in thread
* [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
end of thread, other threads:[~2014-01-30 7:43 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
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 ` [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
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox