mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
[PATCH 1_4] Merge common get_dev() routines for block devices
Each of the filesystem drivers duplicate the get_dev routine. This change merges them into a single function in part.c Signed-off-by: Grant Likely <grant.likely@secretlab.ca>
This commit is contained in:
parent
620d3c9a14
commit
735dd97b1b
15 changed files with 82 additions and 125 deletions
|
@ -33,6 +33,7 @@
|
|||
#include <asm/byteorder.h>
|
||||
#include <linux/mtd/nand_legacy.h>
|
||||
#include <fat.h>
|
||||
#include <part.h>
|
||||
|
||||
#include "auto_update.h"
|
||||
|
||||
|
@ -71,8 +72,6 @@ extern int transfer_pic(unsigned char, unsigned char *, int, int);
|
|||
extern int flash_sect_erase(ulong, ulong);
|
||||
extern int flash_sect_protect (int, ulong, ulong);
|
||||
extern int flash_write (char *, ulong, ulong);
|
||||
/* change char* to void* to shutup the compiler */
|
||||
extern block_dev_desc_t *get_dev (char*, int);
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_NAND) && defined(CFG_NAND_LEGACY)
|
||||
/* references to names in cmd_nand.c */
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
#include <image.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <usb.h>
|
||||
#include <part.h>
|
||||
|
||||
#ifdef CFG_HUSH_PARSER
|
||||
#include <hush.h>
|
||||
|
@ -128,8 +129,6 @@ extern int i2c_read (unsigned char, unsigned int, int , unsigned char* , int);
|
|||
extern int flash_sect_erase(ulong, ulong);
|
||||
extern int flash_sect_protect (int, ulong, ulong);
|
||||
extern int flash_write (char *, ulong, ulong);
|
||||
/* change char* to void* to shutup the compiler */
|
||||
extern block_dev_desc_t *get_dev (char*, int);
|
||||
extern int u_boot_hush_start(void);
|
||||
|
||||
int au_check_cksum_valid(int idx, long nbytes)
|
||||
|
|
|
@ -73,9 +73,6 @@
|
|||
|
||||
DECLARE_GLOBAL_DATA_PTR;
|
||||
|
||||
extern block_dev_desc_t * scsi_get_dev(int dev);
|
||||
extern block_dev_desc_t * ide_get_dev(int dev);
|
||||
|
||||
#undef SDRAM_DEBUG
|
||||
#define ENABLE_ECC /* for ecc boards */
|
||||
#define FALSE 0
|
||||
|
|
|
@ -203,7 +203,6 @@ extern int flash_write (char *, ulong, ulong);
|
|||
/* change char* to void* to shutup the compiler */
|
||||
extern int i2c_write_multiple (uchar, uint, int, void *, int);
|
||||
extern int i2c_read_multiple (uchar, uint, int, void *, int);
|
||||
extern block_dev_desc_t *get_dev (char*, int);
|
||||
extern int u_boot_hush_start(void);
|
||||
|
||||
int
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
* Ext2fs support
|
||||
*/
|
||||
#include <common.h>
|
||||
#include <part.h>
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_EXT2)
|
||||
#include <config.h>
|
||||
|
@ -57,41 +58,6 @@
|
|||
#define PRINTF(fmt,args...)
|
||||
#endif
|
||||
|
||||
static block_dev_desc_t *get_dev (char* ifname, int dev)
|
||||
{
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_IDE)
|
||||
if (strncmp(ifname,"ide",3)==0) {
|
||||
extern block_dev_desc_t * ide_get_dev(int dev);
|
||||
return((dev >= CFG_IDE_MAXDEVICE) ? NULL : ide_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_SCSI)
|
||||
if (strncmp(ifname,"scsi",4)==0) {
|
||||
extern block_dev_desc_t * scsi_get_dev(int dev);
|
||||
return((dev >= CFG_SCSI_MAXDEVICE) ? NULL : scsi_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if ((CONFIG_COMMANDS & CFG_CMD_USB) && defined(CONFIG_USB_STORAGE))
|
||||
if (strncmp(ifname,"usb",3)==0) {
|
||||
extern block_dev_desc_t * usb_stor_get_dev(int dev);
|
||||
return((dev >= USB_MAX_STOR_DEV) ? NULL : usb_stor_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_MMC)
|
||||
if (strncmp(ifname,"mmc",3)==0) {
|
||||
extern block_dev_desc_t * mmc_get_dev(int dev);
|
||||
return((dev >= 1) ? NULL : mmc_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_SYSTEMACE)
|
||||
if (strcmp(ifname,"ace")==0) {
|
||||
extern block_dev_desc_t * systemace_get_dev(int dev);
|
||||
return((dev >= 1) ? NULL : systemace_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
return(NULL);
|
||||
}
|
||||
|
||||
int do_ext2ls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
char *filename = "/";
|
||||
|
@ -106,7 +72,7 @@ int do_ext2ls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return(1);
|
||||
}
|
||||
dev = (int)simple_strtoul (argv[2], &ep, 16);
|
||||
dev_desc=get_dev(argv[1],dev);
|
||||
dev_desc = get_dev(argv[1],dev);
|
||||
|
||||
if (dev_desc == NULL) {
|
||||
printf ("\n** Block device %s %d not supported\n", argv[1], dev);
|
||||
|
@ -210,7 +176,7 @@ int do_ext2load (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
}
|
||||
|
||||
dev = (int)simple_strtoul (argv[2], &ep, 16);
|
||||
dev_desc=get_dev(argv[1],dev);
|
||||
dev_desc = get_dev(argv[1],dev);
|
||||
if (dev_desc==NULL) {
|
||||
printf ("\n** Block device %s %d not supported\n", argv[1], dev);
|
||||
return(1);
|
||||
|
|
|
@ -29,6 +29,7 @@
|
|||
#include <s_record.h>
|
||||
#include <net.h>
|
||||
#include <ata.h>
|
||||
#include <part.h>
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_FAT)
|
||||
|
||||
|
@ -37,42 +38,6 @@
|
|||
#include <fat.h>
|
||||
|
||||
|
||||
block_dev_desc_t *get_dev (char* ifname, int dev)
|
||||
{
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_IDE)
|
||||
if (strncmp(ifname,"ide",3)==0) {
|
||||
extern block_dev_desc_t * ide_get_dev(int dev);
|
||||
return(ide_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_SCSI)
|
||||
if (strncmp(ifname,"scsi",4)==0) {
|
||||
extern block_dev_desc_t * scsi_get_dev(int dev);
|
||||
return(scsi_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if ((CONFIG_COMMANDS & CFG_CMD_USB) && defined(CONFIG_USB_STORAGE))
|
||||
if (strncmp(ifname,"usb",3)==0) {
|
||||
extern block_dev_desc_t * usb_stor_get_dev(int dev);
|
||||
return(usb_stor_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_MMC)
|
||||
if (strncmp(ifname,"mmc",3)==0) {
|
||||
extern block_dev_desc_t * mmc_get_dev(int dev);
|
||||
return(mmc_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_SYSTEMACE)
|
||||
if (strcmp(ifname,"ace")==0) {
|
||||
extern block_dev_desc_t * systemace_get_dev(int dev);
|
||||
return(systemace_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
int do_fat_fsload (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
long size;
|
||||
|
|
|
@ -31,20 +31,26 @@
|
|||
#include <command.h>
|
||||
#include <image.h>
|
||||
#include <asm/byteorder.h>
|
||||
|
||||
#if defined(CONFIG_IDE_8xx_DIRECT) || defined(CONFIG_IDE_PCMCIA)
|
||||
# include <pcmcia.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_8xx
|
||||
# include <mpc8xx.h>
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_MPC5xxx
|
||||
#include <mpc5xxx.h>
|
||||
#endif
|
||||
|
||||
#include <ide.h>
|
||||
#include <ata.h>
|
||||
|
||||
#ifdef CONFIG_STATUS_LED
|
||||
# include <status_led.h>
|
||||
#endif
|
||||
|
||||
#ifndef __PPC__
|
||||
#include <asm/io.h>
|
||||
#ifdef __MIPS__
|
||||
|
@ -697,7 +703,7 @@ void ide_init (void)
|
|||
|
||||
block_dev_desc_t * ide_get_dev(int dev)
|
||||
{
|
||||
return ((block_dev_desc_t *)&ide_dev_desc[dev]);
|
||||
return (dev < CFG_IDE_MAXDEVICE) ? &ide_dev_desc[dev] : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
#include <linux/ctype.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <reiserfs.h>
|
||||
#include <part.h>
|
||||
|
||||
#ifndef CONFIG_DOS_PARTITION
|
||||
#error DOS partition support must be selected
|
||||
|
@ -48,41 +49,6 @@
|
|||
#define PRINTF(fmt,args...)
|
||||
#endif
|
||||
|
||||
static block_dev_desc_t *get_dev (char* ifname, int dev)
|
||||
{
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_IDE)
|
||||
if (strncmp(ifname,"ide",3)==0) {
|
||||
extern block_dev_desc_t * ide_get_dev(int dev);
|
||||
return((dev >= CFG_IDE_MAXDEVICE) ? NULL : ide_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_SCSI)
|
||||
if (strncmp(ifname,"scsi",4)==0) {
|
||||
extern block_dev_desc_t * scsi_get_dev(int dev);
|
||||
return((dev >= CFG_SCSI_MAXDEVICE) ? NULL : scsi_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if ((CONFIG_COMMANDS & CFG_CMD_USB) && defined(CONFIG_USB_STORAGE))
|
||||
if (strncmp(ifname,"usb",3)==0) {
|
||||
extern block_dev_desc_t * usb_stor_get_dev(int dev);
|
||||
return((dev >= USB_MAX_STOR_DEV) ? NULL : usb_stor_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_MMC)
|
||||
if (strncmp(ifname,"mmc",3)==0) {
|
||||
extern block_dev_desc_t * mmc_get_dev(int dev);
|
||||
return((dev >= 1) ? NULL : mmc_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
#if defined(CONFIG_SYSTEMACE)
|
||||
if (strcmp(ifname,"ace")==0) {
|
||||
extern block_dev_desc_t * systemace_get_dev(int dev);
|
||||
return((dev >= 1) ? NULL : systemace_get_dev(dev));
|
||||
}
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int do_reiserls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
||||
{
|
||||
char *filename = "/";
|
||||
|
@ -97,7 +63,7 @@ int do_reiserls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
dev = (int)simple_strtoul (argv[2], &ep, 16);
|
||||
dev_desc=get_dev(argv[1],dev);
|
||||
dev_desc = get_dev(argv[1],dev);
|
||||
|
||||
if (dev_desc == NULL) {
|
||||
printf ("\n** Block device %s %d not supported\n", argv[1], dev);
|
||||
|
@ -196,7 +162,7 @@ int do_reiserload (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
|
|||
}
|
||||
|
||||
dev = (int)simple_strtoul (argv[2], &ep, 16);
|
||||
dev_desc=get_dev(argv[1],dev);
|
||||
dev_desc = get_dev(argv[1],dev);
|
||||
if (dev_desc==NULL) {
|
||||
printf ("\n** Block device %s %d not supported\n", argv[1], dev);
|
||||
return 1;
|
||||
|
|
|
@ -194,7 +194,7 @@ void scsi_init(void)
|
|||
|
||||
block_dev_desc_t * scsi_get_dev(int dev)
|
||||
{
|
||||
return((block_dev_desc_t *)&scsi_dev_desc[dev]);
|
||||
return (dev < CFG_SCSI_MAX_DEVICE) ? &scsi_dev_desc[dev] : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@
|
|||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <asm/byteorder.h>
|
||||
#include <part.h>
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_USB)
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
|
||||
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_USB)
|
||||
#include <part.h>
|
||||
#include <usb.h>
|
||||
|
||||
#ifdef CONFIG_USB_STORAGE
|
||||
|
@ -174,7 +175,7 @@ void uhci_show_temp_int_td(void);
|
|||
|
||||
block_dev_desc_t *usb_stor_get_dev(int index)
|
||||
{
|
||||
return &usb_dev_desc[index];
|
||||
return (index < USB_MAX_STOR_DEV) ? &usb_dev_desc[index] : NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -37,7 +37,7 @@ static block_dev_desc_t mmc_dev;
|
|||
|
||||
block_dev_desc_t * mmc_get_dev(int dev)
|
||||
{
|
||||
return ((block_dev_desc_t *)&mmc_dev);
|
||||
return (dev == 0) ? &mmc_dev : NULL;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
49
disk/part.c
49
disk/part.c
|
@ -24,6 +24,7 @@
|
|||
#include <common.h>
|
||||
#include <command.h>
|
||||
#include <ide.h>
|
||||
#include <part.h>
|
||||
|
||||
#undef PART_DEBUG
|
||||
|
||||
|
@ -33,6 +34,54 @@
|
|||
#define PRINTF(fmt,args...)
|
||||
#endif
|
||||
|
||||
#if ((CONFIG_COMMANDS & CFG_CMD_IDE) || \
|
||||
(CONFIG_COMMANDS & CFG_CMD_SCSI) || \
|
||||
(CONFIG_COMMANDS & CFG_CMD_USB) || \
|
||||
defined(CONFIG_MMC) || \
|
||||
defined(CONFIG_SYSTEMACE) )
|
||||
|
||||
struct block_drvr {
|
||||
char *name;
|
||||
block_dev_desc_t* (*get_dev)(int dev);
|
||||
};
|
||||
|
||||
static const struct block_drvr block_drvr[] = {
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_IDE)
|
||||
{ .name = "ide", .get_dev = ide_get_dev, },
|
||||
#endif
|
||||
#if (CONFIG_COMMANDS & CFG_CMD_SCSI)
|
||||
{ .name = "scsi", .get_dev = scsi_get_dev, },
|
||||
#endif
|
||||
#if ((CONFIG_COMMANDS & CFG_CMD_USB) && defined(CONFIG_USB_STORAGE))
|
||||
{ .name = "usb", .get_dev = usb_stor_get_dev, },
|
||||
#endif
|
||||
#if defined(CONFIG_MMC)
|
||||
{ .name = "mmc", .get_dev = mmc_get_dev, },
|
||||
#endif
|
||||
#if defined(CONFIG_SYSTEMACE)
|
||||
{ .name = "ace", .get_dev = systemace_get_dev, },
|
||||
#endif
|
||||
{ },
|
||||
};
|
||||
|
||||
block_dev_desc_t *get_dev(char* ifname, int dev)
|
||||
{
|
||||
const struct block_drvr *drvr = block_drvr;
|
||||
|
||||
while (drvr->name) {
|
||||
if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0)
|
||||
return drvr->get_dev(dev);
|
||||
drvr++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
block_dev_desc_t *get_dev(char* ifname, int dev)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if ((CONFIG_COMMANDS & CFG_CMD_IDE) || \
|
||||
(CONFIG_COMMANDS & CFG_CMD_SCSI) || \
|
||||
(CONFIG_COMMANDS & CFG_CMD_USB) || \
|
||||
|
|
|
@ -48,8 +48,8 @@ typedef ulong lbaint_t;
|
|||
* Function Prototypes
|
||||
*/
|
||||
|
||||
void ide_init (void);
|
||||
ulong ide_read (int device, lbaint_t blknr, ulong blkcnt, ulong *buffer);
|
||||
ulong ide_write (int device, lbaint_t blknr, ulong blkcnt, ulong *buffer);
|
||||
void ide_init(void);
|
||||
ulong ide_read(int device, lbaint_t blknr, ulong blkcnt, ulong *buffer);
|
||||
ulong ide_write(int device, lbaint_t blknr, ulong blkcnt, ulong *buffer);
|
||||
|
||||
#endif /* _IDE_H */
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
*/
|
||||
#ifndef _PART_H
|
||||
#define _PART_H
|
||||
|
||||
#include <ide.h>
|
||||
|
||||
typedef struct block_dev_desc {
|
||||
|
@ -83,6 +84,14 @@ typedef struct disk_partition {
|
|||
uchar type[32]; /* string type description */
|
||||
} disk_partition_t;
|
||||
|
||||
/* Misc _get_dev functions */
|
||||
block_dev_desc_t* get_dev(char* ifname, int dev);
|
||||
block_dev_desc_t* ide_get_dev(int dev);
|
||||
block_dev_desc_t* scsi_get_dev(int dev);
|
||||
block_dev_desc_t* usb_stor_get_dev(int dev);
|
||||
block_dev_desc_t* mmc_get_dev(int dev);
|
||||
block_dev_desc_t* systemace_get_dev(int dev);
|
||||
|
||||
/* disk/part.c */
|
||||
int get_partition_info (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
|
||||
void print_part (block_dev_desc_t *dev_desc);
|
||||
|
|
Loading…
Reference in a new issue