staging: west bridge, block driver change for partition support
authorDavid Cross <david.cross@cypress.com>
Wed, 6 Oct 2010 01:50:26 +0000 (18:50 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 6 Oct 2010 03:28:34 +0000 (20:28 -0700)
This patch fixes an error in the block driver wherein multiple
partitions in an mmc card were not detected correctly due to
incorrect alloc_disk arguments.

Signed-off-by: David Cross <david.cross@cypress.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/westbridge/astoria/block/cyasblkdev_block.c

index 99d3e7e158b358fa36c1972a18e2ed7d28d1e71b..f428a7af357a6812fe1f0c7ca8f73a7f88aecf24 100644 (file)
@@ -403,7 +403,7 @@ int cyasblkdev_media_changed(struct gendisk *gd)
        }
 
        /* return media change state "1" yes, 0 no */
-       return 1;
+       return 0;
 }
 
 /*  this one called by kernel to give us a chence
@@ -1111,7 +1111,8 @@ static int cyasblkdev_add_disks(int bus_num,
                 * public partition beginning */
                if (vfat_search) {
                        bd->user_disk_0_first_sector =
-                               cyasblkdev_get_vfat_offset(0,
+                               cyasblkdev_get_vfat_offset(
+                                       bd->user_disk_0_bus_num,
                                        bd->user_disk_0_unit_no);
                } else {
                        bd->user_disk_0_first_sector = 0;
@@ -1244,7 +1245,8 @@ static int cyasblkdev_add_disks(int bus_num,
                if (vfat_search) {
                        bd->user_disk_1_first_sector =
                                cyasblkdev_get_vfat_offset(
-                                       1, bd->user_disk_1_unit_no);
+                                       bd->user_disk_1_bus_num,
+                                       bd->user_disk_1_unit_no);
                } else {
                        bd->user_disk_1_first_sector
                                = 0;
@@ -1256,8 +1258,8 @@ static int cyasblkdev_add_disks(int bus_num,
        if (lcl_unit_no > 0) {
                if (bd->system_disk == NULL) {
                        bd->system_disk =
-                               alloc_disk(CYASBLKDEV_MINOR_2
-                                       << CYASBLKDEV_SHIFT);
+                               alloc_disk(8);
+
                        if (bd->system_disk == NULL) {
                                kfree(bd);
                                bd = ERR_PTR(-ENOMEM);
@@ -1423,8 +1425,7 @@ static struct cyasblkdev_blk_data *cyasblkdev_blk_alloc(void)
                        if (bd->user_disk_0 == NULL) {
 
                                bd->user_disk_0 =
-                                       alloc_disk(CYASBLKDEV_MINOR_0
-                                               << CYASBLKDEV_SHIFT);
+                                       alloc_disk(8);
                                if (bd->user_disk_0 == NULL) {
                                        kfree(bd);
                                        bd = ERR_PTR(-ENOMEM);
@@ -1443,8 +1444,7 @@ static struct cyasblkdev_blk_data *cyasblkdev_blk_alloc(void)
                if (total_media_count == 2) {
                        if (bd->user_disk_1 == NULL) {
                                bd->user_disk_1 =
-                                       alloc_disk(CYASBLKDEV_MINOR_1
-                                               << CYASBLKDEV_SHIFT);
+                                       alloc_disk(8);
                                if (bd->user_disk_1 == NULL) {
                                        kfree(bd);
                                        bd = ERR_PTR(-ENOMEM);