block: pass block dev not num to read/write/erase()
This will allow the implementation to make use of data in the block_dev structure beyond the base device number. This will be useful so that eMMC block devices can encompass the HW partition ID rather than treating this out-of-band. Equally, the existence of the priv field is crying out for this patch to exist. Signed-off-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Tom Rini <trini@konsulko.com>
This commit is contained in:
@@ -140,8 +140,7 @@ struct rigid_disk_block *get_rdisk(block_dev_desc_t *dev_desc)
|
||||
|
||||
for (i=0; i<limit; i++)
|
||||
{
|
||||
ulong res = dev_desc->block_read(dev_desc->dev, i, 1,
|
||||
(ulong *)block_buffer);
|
||||
ulong res = dev_desc->block_read(dev_desc, i, 1, (ulong *)block_buffer);
|
||||
if (res == 1)
|
||||
{
|
||||
struct rigid_disk_block *trdb = (struct rigid_disk_block *)block_buffer;
|
||||
@@ -183,7 +182,7 @@ struct bootcode_block *get_bootcode(block_dev_desc_t *dev_desc)
|
||||
|
||||
for (i = 0; i < limit; i++)
|
||||
{
|
||||
ulong res = dev_desc->block_read(dev_desc->dev, i, 1, (ulong *)block_buffer);
|
||||
ulong res = dev_desc->block_read(dev_desc, i, 1, (ulong *)block_buffer);
|
||||
if (res == 1)
|
||||
{
|
||||
struct bootcode_block *boot = (struct bootcode_block *)block_buffer;
|
||||
@@ -258,7 +257,7 @@ static struct partition_block *find_partition(block_dev_desc_t *dev_desc, int pa
|
||||
|
||||
while (block != 0xFFFFFFFF)
|
||||
{
|
||||
ulong res = dev_desc->block_read(dev_desc->dev, block, 1,
|
||||
ulong res = dev_desc->block_read(dev_desc, block, 1,
|
||||
(ulong *)block_buffer);
|
||||
if (res == 1)
|
||||
{
|
||||
@@ -354,8 +353,7 @@ void print_part_amiga (block_dev_desc_t *dev_desc)
|
||||
|
||||
PRINTF("Trying to load block #0x%X\n", block);
|
||||
|
||||
res = dev_desc->block_read(dev_desc->dev, block, 1,
|
||||
(ulong *)block_buffer);
|
||||
res = dev_desc->block_read(dev_desc, block, 1, (ulong *)block_buffer);
|
||||
if (res == 1)
|
||||
{
|
||||
p = (struct partition_block *)block_buffer;
|
||||
|
||||
@@ -91,7 +91,7 @@ int test_part_dos (block_dev_desc_t *dev_desc)
|
||||
{
|
||||
ALLOC_CACHE_ALIGN_BUFFER(unsigned char, buffer, dev_desc->blksz);
|
||||
|
||||
if (dev_desc->block_read(dev_desc->dev, 0, 1, (ulong *) buffer) != 1)
|
||||
if (dev_desc->block_read(dev_desc, 0, 1, (ulong *)buffer) != 1)
|
||||
return -1;
|
||||
|
||||
if (test_block_type(buffer) != DOS_MBR)
|
||||
@@ -111,7 +111,8 @@ static void print_partition_extended(block_dev_desc_t *dev_desc,
|
||||
dos_partition_t *pt;
|
||||
int i;
|
||||
|
||||
if (dev_desc->block_read(dev_desc->dev, ext_part_sector, 1, (ulong *) buffer) != 1) {
|
||||
if (dev_desc->block_read(dev_desc, ext_part_sector, 1,
|
||||
(ulong *)buffer) != 1) {
|
||||
printf ("** Can't read partition table on %d:" LBAFU " **\n",
|
||||
dev_desc->dev, ext_part_sector);
|
||||
return;
|
||||
@@ -177,7 +178,8 @@ static int get_partition_info_extended (block_dev_desc_t *dev_desc,
|
||||
int i;
|
||||
int dos_type;
|
||||
|
||||
if (dev_desc->block_read (dev_desc->dev, ext_part_sector, 1, (ulong *) buffer) != 1) {
|
||||
if (dev_desc->block_read(dev_desc, ext_part_sector, 1,
|
||||
(ulong *)buffer) != 1) {
|
||||
printf ("** Can't read partition table on %d:" LBAFU " **\n",
|
||||
dev_desc->dev, ext_part_sector);
|
||||
return -1;
|
||||
|
||||
@@ -324,7 +324,7 @@ int test_part_efi(block_dev_desc_t * dev_desc)
|
||||
ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz);
|
||||
|
||||
/* Read legacy MBR from block 0 and validate it */
|
||||
if ((dev_desc->block_read(dev_desc->dev, 0, 1, (ulong *)legacymbr) != 1)
|
||||
if ((dev_desc->block_read(dev_desc, 0, 1, (ulong *)legacymbr) != 1)
|
||||
|| (is_pmbr_valid(legacymbr) != 1)) {
|
||||
return -1;
|
||||
}
|
||||
@@ -354,7 +354,7 @@ static int set_protective_mbr(block_dev_desc_t *dev_desc)
|
||||
p_mbr->partition_record[0].nr_sects = (u32) dev_desc->lba - 1;
|
||||
|
||||
/* Write MBR sector to the MMC device */
|
||||
if (dev_desc->block_write(dev_desc->dev, 0, 1, p_mbr) != 1) {
|
||||
if (dev_desc->block_write(dev_desc, 0, 1, p_mbr) != 1) {
|
||||
printf("** Can't write to device %d **\n",
|
||||
dev_desc->dev);
|
||||
return -1;
|
||||
@@ -386,22 +386,22 @@ int write_gpt_table(block_dev_desc_t *dev_desc,
|
||||
gpt_h->header_crc32 = cpu_to_le32(calc_crc32);
|
||||
|
||||
/* Write the First GPT to the block right after the Legacy MBR */
|
||||
if (dev_desc->block_write(dev_desc->dev, 1, 1, gpt_h) != 1)
|
||||
if (dev_desc->block_write(dev_desc, 1, 1, gpt_h) != 1)
|
||||
goto err;
|
||||
|
||||
if (dev_desc->block_write(dev_desc->dev, 2, pte_blk_cnt, gpt_e)
|
||||
if (dev_desc->block_write(dev_desc, 2, pte_blk_cnt, gpt_e)
|
||||
!= pte_blk_cnt)
|
||||
goto err;
|
||||
|
||||
prepare_backup_gpt_header(gpt_h);
|
||||
|
||||
if (dev_desc->block_write(dev_desc->dev,
|
||||
if (dev_desc->block_write(dev_desc,
|
||||
(lbaint_t)le64_to_cpu(gpt_h->last_usable_lba)
|
||||
+ 1,
|
||||
pte_blk_cnt, gpt_e) != pte_blk_cnt)
|
||||
goto err;
|
||||
|
||||
if (dev_desc->block_write(dev_desc->dev,
|
||||
if (dev_desc->block_write(dev_desc,
|
||||
(lbaint_t)le64_to_cpu(gpt_h->my_lba), 1,
|
||||
gpt_h) != 1)
|
||||
goto err;
|
||||
@@ -737,7 +737,7 @@ int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
|
||||
/* write MBR */
|
||||
lba = 0; /* MBR is always at 0 */
|
||||
cnt = 1; /* MBR (1 block) */
|
||||
if (dev_desc->block_write(dev_desc->dev, lba, cnt, buf) != cnt) {
|
||||
if (dev_desc->block_write(dev_desc, lba, cnt, buf) != cnt) {
|
||||
printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
|
||||
__func__, "MBR", cnt, lba);
|
||||
return 1;
|
||||
@@ -746,7 +746,7 @@ int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
|
||||
/* write Primary GPT */
|
||||
lba = GPT_PRIMARY_PARTITION_TABLE_LBA;
|
||||
cnt = 1; /* GPT Header (1 block) */
|
||||
if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_h) != cnt) {
|
||||
if (dev_desc->block_write(dev_desc, lba, cnt, gpt_h) != cnt) {
|
||||
printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
|
||||
__func__, "Primary GPT Header", cnt, lba);
|
||||
return 1;
|
||||
@@ -754,7 +754,7 @@ int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
|
||||
|
||||
lba = le64_to_cpu(gpt_h->partition_entry_lba);
|
||||
cnt = gpt_e_blk_cnt;
|
||||
if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_e) != cnt) {
|
||||
if (dev_desc->block_write(dev_desc, lba, cnt, gpt_e) != cnt) {
|
||||
printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
|
||||
__func__, "Primary GPT Entries", cnt, lba);
|
||||
return 1;
|
||||
@@ -765,7 +765,7 @@ int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
|
||||
/* write Backup GPT */
|
||||
lba = le64_to_cpu(gpt_h->partition_entry_lba);
|
||||
cnt = gpt_e_blk_cnt;
|
||||
if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_e) != cnt) {
|
||||
if (dev_desc->block_write(dev_desc, lba, cnt, gpt_e) != cnt) {
|
||||
printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
|
||||
__func__, "Backup GPT Entries", cnt, lba);
|
||||
return 1;
|
||||
@@ -773,7 +773,7 @@ int write_mbr_and_gpt_partitions(block_dev_desc_t *dev_desc, void *buf)
|
||||
|
||||
lba = le64_to_cpu(gpt_h->my_lba);
|
||||
cnt = 1; /* GPT Header (1 block) */
|
||||
if (dev_desc->block_write(dev_desc->dev, lba, cnt, gpt_h) != cnt) {
|
||||
if (dev_desc->block_write(dev_desc, lba, cnt, gpt_h) != cnt) {
|
||||
printf("%s: failed writing '%s' (%d blks at 0x" LBAF ")\n",
|
||||
__func__, "Backup GPT Header", cnt, lba);
|
||||
return 1;
|
||||
@@ -843,8 +843,7 @@ static int is_gpt_valid(block_dev_desc_t *dev_desc, u64 lba,
|
||||
}
|
||||
|
||||
/* Read GPT Header from device */
|
||||
if (dev_desc->block_read(dev_desc->dev, (lbaint_t)lba, 1, pgpt_head)
|
||||
!= 1) {
|
||||
if (dev_desc->block_read(dev_desc, (lbaint_t)lba, 1, pgpt_head) != 1) {
|
||||
printf("*** ERROR: Can't read GPT header ***\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -881,6 +880,7 @@ static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t * dev_desc,
|
||||
gpt_header * pgpt_head)
|
||||
{
|
||||
size_t count = 0, blk_cnt;
|
||||
lbaint_t blk;
|
||||
gpt_entry *pte = NULL;
|
||||
|
||||
if (!dev_desc || !pgpt_head) {
|
||||
@@ -909,12 +909,10 @@ static gpt_entry *alloc_read_gpt_entries(block_dev_desc_t * dev_desc,
|
||||
}
|
||||
|
||||
/* Read GPT Entries from device */
|
||||
blk = le64_to_cpu(pgpt_head->partition_entry_lba);
|
||||
blk_cnt = BLOCK_CNT(count, dev_desc);
|
||||
if (dev_desc->block_read (dev_desc->dev,
|
||||
(lbaint_t)le64_to_cpu(pgpt_head->partition_entry_lba),
|
||||
(lbaint_t) (blk_cnt), pte)
|
||||
!= blk_cnt) {
|
||||
|
||||
if (dev_desc->block_read(dev_desc, blk, (lbaint_t)blk_cnt, pte)
|
||||
!= blk_cnt) {
|
||||
printf("*** ERROR: Can't read GPT Entries ***\n");
|
||||
free(pte);
|
||||
return NULL;
|
||||
|
||||
@@ -62,8 +62,8 @@ int get_partition_info_iso_verb(block_dev_desc_t * dev_desc, int part_num, disk_
|
||||
|
||||
/* the first sector (sector 0x10) must be a primary volume desc */
|
||||
blkaddr=PVD_OFFSET;
|
||||
if (dev_desc->block_read (dev_desc->dev, PVD_OFFSET, 1, (ulong *) tmpbuf) != 1)
|
||||
return (-1);
|
||||
if (dev_desc->block_read(dev_desc, PVD_OFFSET, 1, (ulong *)tmpbuf) != 1)
|
||||
return -1;
|
||||
if(ppr->desctype!=0x01) {
|
||||
if(verb)
|
||||
printf ("** First descriptor is NOT a primary desc on %d:%d **\n",
|
||||
@@ -84,8 +84,8 @@ int get_partition_info_iso_verb(block_dev_desc_t * dev_desc, int part_num, disk_
|
||||
PRINTF(" Lastsect:%08lx\n",lastsect);
|
||||
for(i=blkaddr;i<lastsect;i++) {
|
||||
PRINTF("Reading block %d\n", i);
|
||||
if (dev_desc->block_read (dev_desc->dev, i, 1, (ulong *) tmpbuf) != 1)
|
||||
return (-1);
|
||||
if (dev_desc->block_read(dev_desc, i, 1, (ulong *)tmpbuf) != 1)
|
||||
return -1;
|
||||
if(ppr->desctype==0x00)
|
||||
break; /* boot entry found */
|
||||
if(ppr->desctype==0xff) {
|
||||
@@ -104,7 +104,7 @@ int get_partition_info_iso_verb(block_dev_desc_t * dev_desc, int part_num, disk_
|
||||
}
|
||||
bootaddr=le32_to_int(pbr->pointer);
|
||||
PRINTF(" Boot Entry at: %08lX\n",bootaddr);
|
||||
if (dev_desc->block_read (dev_desc->dev, bootaddr, 1, (ulong *) tmpbuf) != 1) {
|
||||
if (dev_desc->block_read(dev_desc, bootaddr, 1, (ulong *)tmpbuf) != 1) {
|
||||
if(verb)
|
||||
printf ("** Can't read Boot Entry at %lX on %d:%d **\n",
|
||||
bootaddr,dev_desc->dev, part_num);
|
||||
|
||||
@@ -51,7 +51,8 @@ int test_part_mac (block_dev_desc_t *dev_desc)
|
||||
|
||||
n = 1; /* assuming at least one partition */
|
||||
for (i=1; i<=n; ++i) {
|
||||
if ((dev_desc->block_read(dev_desc->dev, i, 1, (ulong *)mpart) != 1) ||
|
||||
if ((dev_desc->block_read(dev_desc, i, 1,
|
||||
(ulong *)mpart) != 1) ||
|
||||
(mpart->signature != MAC_PARTITION_MAGIC) ) {
|
||||
return (-1);
|
||||
}
|
||||
@@ -104,7 +105,7 @@ void print_part_mac (block_dev_desc_t *dev_desc)
|
||||
char c;
|
||||
|
||||
printf ("%4ld: ", i);
|
||||
if (dev_desc->block_read (dev_desc->dev, i, 1, (ulong *)mpart) != 1) {
|
||||
if (dev_desc->block_read(dev_desc, i, 1, (ulong *)mpart) != 1) {
|
||||
printf ("** Can't read Partition Map on %d:%ld **\n",
|
||||
dev_desc->dev, i);
|
||||
return;
|
||||
@@ -150,7 +151,7 @@ void print_part_mac (block_dev_desc_t *dev_desc)
|
||||
*/
|
||||
static int part_mac_read_ddb (block_dev_desc_t *dev_desc, mac_driver_desc_t *ddb_p)
|
||||
{
|
||||
if (dev_desc->block_read(dev_desc->dev, 0, 1, (ulong *)ddb_p) != 1) {
|
||||
if (dev_desc->block_read(dev_desc, 0, 1, (ulong *)ddb_p) != 1) {
|
||||
printf ("** Can't read Driver Desriptor Block **\n");
|
||||
return (-1);
|
||||
}
|
||||
@@ -178,7 +179,7 @@ static int part_mac_read_pdb (block_dev_desc_t *dev_desc, int part, mac_partitio
|
||||
* partition 1 first since this is the only way to
|
||||
* know how many partitions we have.
|
||||
*/
|
||||
if (dev_desc->block_read (dev_desc->dev, n, 1, (ulong *)pdb_p) != 1) {
|
||||
if (dev_desc->block_read(dev_desc, n, 1, (ulong *)pdb_p) != 1) {
|
||||
printf ("** Can't read Partition Map on %d:%d **\n",
|
||||
dev_desc->dev, n);
|
||||
return (-1);
|
||||
|
||||
Reference in New Issue
Block a user