All of lore.kernel.org
 help / color / mirror / Atom feed
From: Stefan Roese <sr@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH 1/5] ubi: Expose a few simple functions from the cmd_ubi
Date: Mon, 11 Feb 2013 11:45:16 +0100	[thread overview]
Message-ID: <5118CBBC.6000800@denx.de> (raw)
In-Reply-To: <1360354046-32392-2-git-send-email-joe.hershberger@ni.com>

On 02/08/2013 09:07 PM, Joe Hershberger wrote:
> Part, Read, and Write functionality that will be used by env_ubi.
> 
> Signed-off-by: Joe Hershberger <joe.hershberger@ni.com>

Some minor nitpicking comments below.

> ---
>  common/cmd_ubi.c    | 146 ++++++++++++++++++++++++++++------------------------
>  include/ubi_uboot.h |   3 ++
>  2 files changed, 83 insertions(+), 66 deletions(-)
> 
> diff --git a/common/cmd_ubi.c b/common/cmd_ubi.c
> index 35b1d31..01335dd 100644
> --- a/common/cmd_ubi.c
> +++ b/common/cmd_ubi.c
> @@ -263,7 +263,7 @@ out_err:
>  	return err;
>  }
>  
> -static int ubi_volume_write(char *volume, void *buf, size_t size)
> +int ubi_volume_write(char *volume, void *buf, size_t size)
>  {
>  	int err = 1;
>  	int rsvd_bytes = 0;
> @@ -308,12 +308,10 @@ static int ubi_volume_write(char *volume, void *buf, size_t size)
>  		ubi_gluebi_updated(vol);
>  	}
>  
> -	printf("%d bytes written to volume %s\n", size, volume);
> -
>  	return 0;
>  }
>  
> -static int ubi_volume_read(char *volume, char *buf, size_t size)
> +int ubi_volume_read(char *volume, char *buf, size_t size)
>  {
>  	int err, lnum, off, len, tbuf_size;
>  	void *tbuf;
> @@ -325,8 +323,6 @@ static int ubi_volume_read(char *volume, char *buf, size_t size)
>  	if (vol == NULL)
>  		return ENODEV;
>  
> -	printf("Read %d bytes from volume %s to %p\n", size, volume, buf);
> -
>  	if (vol->updating) {
>  		printf("updating");
>  		return EBUSY;
> @@ -431,26 +427,82 @@ static int ubi_dev_scan(struct mtd_info *info, char *ubidev,
>  	return 0;
>  }
>  
> -static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
> +int ubi_part(char *part_name, const char *vid_header_offset)
>  {
> -	size_t size = 0;
> -	ulong addr = 0;
>  	int err = 0;
> -
> -	if (argc < 2)
> -		return CMD_RET_USAGE;
> +	char mtd_dev[16];
> +	struct mtd_device *dev;
> +	struct part_info *part;
> +	u8 pnum;
>  
>  	if (mtdparts_init() != 0) {
>  		printf("Error initializing mtdparts!\n");
>  		return 1;
>  	}
>  
> +#ifdef CONFIG_CMD_UBIFS
> +	/*
> +	 * Automatically unmount UBIFS partition when user
> +	 * changes the UBI device. Otherwise the following
> +	 * UBIFS commands will crash.
> +	 */
> +	if (ubifs_is_mounted())
> +		cmd_ubifs_umount();
> +#endif
> +
> +	/* todo: get dev number for NAND... */
> +	ubi_dev.nr = 0;
> +
> +	/*
> +	 * Call ubi_exit() before re-initializing the UBI subsystem
> +	 */
> +	if (ubi_initialized) {
> +		ubi_exit();
> +		del_mtd_partitions(ubi_dev.mtd_info);
> +	}
> +
> +	/*
> +	 * Search the mtd device number where this partition
> +	 * is located
> +	 */
> +	if (find_dev_and_part(part_name, &dev, &pnum, &part)) {
> +		printf("Partition %s not found!\n", part_name);
> +		return 1;
> +	}
> +	sprintf(mtd_dev, "%s%d", MTD_DEV_TYPE(dev->id->type), dev->id->num);
> +	ubi_dev.mtd_info = get_mtd_device_nm(mtd_dev);
> +	if (IS_ERR(ubi_dev.mtd_info)) {
> +		printf("Partition %s not found on device %s!\n", part_name,
> +			mtd_dev);
> +		return 1;
> +	}
> +
> +	ubi_dev.selected = 1;
> +
> +	strcpy(ubi_dev.part_name, part_name);
> +	err = ubi_dev_scan(ubi_dev.mtd_info, ubi_dev.part_name,
> +			vid_header_offset);
> +	if (err) {
> +		printf("UBI init error %d\n", err);
> +		ubi_dev.selected = 0;
> +		return err;
> +	}
> +
> +	ubi = ubi_devices[0];
> +
> +	return 0;
> +}
> +
> +static int do_ubi(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
> +{
> +	size_t size = 0;
> +	ulong addr = 0;
> +
> +	if (argc < 2)
> +		return CMD_RET_USAGE;
> +
>  	if (strcmp(argv[1], "part") == 0) {
> -		char mtd_dev[16];
> -		struct mtd_device *dev;
> -		struct part_info *part;
>  		const char *vid_header_offset = NULL;
> -		u8 pnum;
>  
>  		/* Print current partition */
>  		if (argc == 2) {
> @@ -467,58 +519,10 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
>  		if (argc < 3)
>  			return CMD_RET_USAGE;
>  
> -#ifdef CONFIG_CMD_UBIFS
> -		/*
> -		 * Automatically unmount UBIFS partition when user
> -		 * changes the UBI device. Otherwise the following
> -		 * UBIFS commands will crash.
> -		 */
> -		if (ubifs_is_mounted())
> -			cmd_ubifs_umount();
> -#endif
> -
> -		/* todo: get dev number for NAND... */
> -		ubi_dev.nr = 0;
> -
> -		/*
> -		 * Call ubi_exit() before re-initializing the UBI subsystem
> -		 */
> -		if (ubi_initialized) {
> -			ubi_exit();
> -			del_mtd_partitions(ubi_dev.mtd_info);
> -		}
> -
> -		/*
> -		 * Search the mtd device number where this partition
> -		 * is located
> -		 */
> -		if (find_dev_and_part(argv[2], &dev, &pnum, &part)) {
> -			printf("Partition %s not found!\n", argv[2]);
> -			return 1;
> -		}
> -		sprintf(mtd_dev, "%s%d", MTD_DEV_TYPE(dev->id->type), dev->id->num);
> -		ubi_dev.mtd_info = get_mtd_device_nm(mtd_dev);
> -		if (IS_ERR(ubi_dev.mtd_info)) {
> -			printf("Partition %s not found on device %s!\n", argv[2], mtd_dev);
> -			return 1;
> -		}
> -
> -		ubi_dev.selected = 1;
> -
>  		if (argc > 3)
>  			vid_header_offset = argv[3];
> -		strcpy(ubi_dev.part_name, argv[2]);
> -		err = ubi_dev_scan(ubi_dev.mtd_info, ubi_dev.part_name,
> -				vid_header_offset);
> -		if (err) {
> -			printf("UBI init error %d\n", err);
> -			ubi_dev.selected = 0;
> -			return err;
> -		}
>  
> -		ubi = ubi_devices[0];
> -
> -		return 0;
> +		return ubi_part(argv[2], vid_header_offset);
>  	}
>  
>  	if ((strcmp(argv[1], "part") != 0) && (!ubi_dev.selected)) {
> @@ -571,6 +575,8 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
>  	}
>  
>  	if (strncmp(argv[1], "write", 5) == 0) {
> +		int ret;
> +
>  		if (argc < 5) {
>  			printf("Please see usage\n");
>  			return 1;
> @@ -579,7 +585,12 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
>  		addr = simple_strtoul(argv[2], NULL, 16);
>  		size = simple_strtoul(argv[4], NULL, 16);
>  
> -		return ubi_volume_write(argv[3], (void *)addr, size);
> +		ret = ubi_volume_write(argv[3], (void *)addr, size);
> +		if (!ret)
> +			printf("%d bytes written to volume %s\n", size,
> +				argv[3]);

Use parentheses on multi-line statements please.

> +
> +		return ret;
>  	}
>  
>  	if (strncmp(argv[1], "read", 4) == 0) {
> @@ -598,6 +609,9 @@ static int do_ubi(cmd_tbl_t * cmdtp, int flag, int argc, char * const argv[])
>  		}
>  
>  		if (argc == 3)
> +			printf("Read %d bytes from volume %s to %lx\n", size,
> +				argv[3], addr);

Again.

> +
>  			return ubi_volume_read(argv[3], (char *)addr, size);
>  	}
>  
> diff --git a/include/ubi_uboot.h b/include/ubi_uboot.h
> index 69006e2..1207895 100644
> --- a/include/ubi_uboot.h
> +++ b/include/ubi_uboot.h
> @@ -214,6 +214,9 @@ static inline long IS_ERR(const void *ptr)
>  extern int ubi_mtd_param_parse(const char *val, struct kernel_param *kp);
>  extern int ubi_init(void);
>  extern void ubi_exit(void);
> +int ubi_part(char *part_name, const char *vid_header_offset);
> +extern int ubi_volume_write(char *volume, void *buf, size_t size);
> +extern int ubi_volume_read(char *volume, char *buf, size_t size);

Why do you add one function prototype without "extern" and 2 with?
Please handle this consistently.

Thanks,
Stefan

  reply	other threads:[~2013-02-11 10:45 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-02-08 20:07 [U-Boot] [PATCH 0/5] Add support for using an UBI volume for environment Joe Hershberger
2013-02-08 20:07 ` [U-Boot] [PATCH 1/5] ubi: Expose a few simple functions from the cmd_ubi Joe Hershberger
2013-02-11 10:45   ` Stefan Roese [this message]
2013-02-08 20:07 ` [U-Boot] [PATCH 2/5] ubi: ubifs: Turn off verbose prints Joe Hershberger
2013-02-11 10:52   ` Stefan Roese
2013-03-20 10:07     ` Joe Hershberger
2013-03-20 10:14       ` Stefan Roese
2013-03-20 10:19         ` Joe Hershberger
2013-03-20 13:11           ` Tom Rini
2013-02-08 20:07 ` [U-Boot] [PATCH 3/5] mtd: Make mtdparts work with pre-reloc env Joe Hershberger
2013-02-11 10:53   ` Stefan Roese
2013-02-08 20:07 ` [U-Boot] [PATCH 4/5] env: Add support for UBI environment Joe Hershberger
2013-02-11 10:54   ` Stefan Roese
2013-02-08 20:07 ` [U-Boot] [PATCH 5/5] env: Add redundant env support to UBI env Joe Hershberger
2013-02-11 11:00   ` Stefan Roese
2013-02-11 10:39 ` [U-Boot] [PATCH 0/5] Add support for using an UBI volume for environment Stefan Roese
2013-02-12  2:37 ` Scott Wood
2013-02-12 16:04   ` Tom Rini
2013-02-12 18:10     ` Scott Wood
2013-02-18 18:27 ` Tom Rini
2013-03-26 21:53 ` [U-Boot] [PATCH v2 0/6] " Joe Hershberger
2013-03-26 21:53   ` [U-Boot] [PATCH v2 1/6] ubi: Fix broken cleanup code in attach_by_scanning Joe Hershberger
2013-03-26 21:53   ` [U-Boot] [PATCH v2 2/6] ubi: Expose a few simple functions from the cmd_ubi Joe Hershberger
2013-03-26 21:53   ` [U-Boot] [PATCH v2 3/6] ubi: ubifs: Turn off verbose prints Joe Hershberger
2013-04-02 10:46     ` Stefan Roese
2013-04-02 18:25       ` Tom Rini
2013-03-26 21:53   ` [U-Boot] [PATCH v2 4/6] mtd: Make mtdparts work with pre-reloc env Joe Hershberger
2013-03-26 21:53   ` [U-Boot] [PATCH v2 5/6] env: Add support for UBI environment Joe Hershberger
2013-03-26 21:53   ` [U-Boot] [PATCH v2 6/6] env: Add redundant env support to UBI env Joe Hershberger
2013-04-08 20:32   ` [U-Boot] [PATCH v3 0/7] Add support for using an UBI volume for environment Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 1/7] ubi: Fix broken cleanup code in attach_by_scanning Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 2/7] ubi: Expose a few simple functions from the cmd_ubi Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 3/7] ubi: ubifs: Add documentation for README Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 4/7] ubi: ubifs: Turn off verbose prints Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 5/7] mtd: Make mtdparts work with pre-reloc env Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 6/7] env: Add support for UBI environment Joe Hershberger
2013-04-08 20:32     ` [U-Boot] [PATCH v3 7/7] env: Add redundant env support to UBI env Joe Hershberger
2013-04-11 22:26     ` [U-Boot] [PATCH v3 0/7] Add support for using an UBI volume for environment Tom Rini
2013-04-12  6:19       ` Stefan Roese
2013-04-12 11:30         ` Tom Rini
2013-04-12 12:52           ` Joe Hershberger
2013-04-12 14:14             ` Stefan Roese

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=5118CBBC.6000800@denx.de \
    --to=sr@denx.de \
    --cc=u-boot@lists.denx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.