diff options
Diffstat (limited to 'drivers/mtd/ftl.c')
| -rw-r--r-- | drivers/mtd/ftl.c | 121 | 
1 files changed, 61 insertions, 60 deletions
diff --git a/drivers/mtd/ftl.c b/drivers/mtd/ftl.c index 037b399df3f..19d637266fc 100644 --- a/drivers/mtd/ftl.c +++ b/drivers/mtd/ftl.c @@ -168,8 +168,8 @@ static int scan_header(partition_t *part)  	 (offset + sizeof(header)) < max_offset;  	 offset += part->mbd.mtd->erasesize ? : 0x2000) { -	err = part->mbd.mtd->read(part->mbd.mtd, offset, sizeof(header), &ret, -			      (unsigned char *)&header); +	err = mtd_read(part->mbd.mtd, offset, sizeof(header), &ret, +                       (unsigned char *)&header);  	if (err)  	    return err; @@ -224,8 +224,8 @@ static int build_maps(partition_t *part)      for (i = 0; i < le16_to_cpu(part->header.NumEraseUnits); i++) {  	offset = ((i + le16_to_cpu(part->header.FirstPhysicalEUN))  		      << part->header.EraseUnitSize); -	ret = part->mbd.mtd->read(part->mbd.mtd, offset, sizeof(header), &retval, -			      (unsigned char *)&header); +	ret = mtd_read(part->mbd.mtd, offset, sizeof(header), &retval, +                       (unsigned char *)&header);  	if (ret)  	    goto out_XferInfo; @@ -289,9 +289,9 @@ static int build_maps(partition_t *part)  	part->EUNInfo[i].Deleted = 0;  	offset = part->EUNInfo[i].Offset + le32_to_cpu(header.BAMOffset); -	ret = part->mbd.mtd->read(part->mbd.mtd, offset, -			      part->BlocksPerUnit * sizeof(uint32_t), &retval, -			      (unsigned char *)part->bam_cache); +	ret = mtd_read(part->mbd.mtd, offset, +                       part->BlocksPerUnit * sizeof(uint32_t), &retval, +                       (unsigned char *)part->bam_cache);  	if (ret)  		goto out_bam_cache; @@ -339,7 +339,7 @@ static int erase_xfer(partition_t *part,      struct erase_info *erase;      xfer = &part->XferInfo[xfernum]; -    DEBUG(1, "ftl_cs: erasing xfer unit at 0x%x\n", xfer->Offset); +    pr_debug("ftl_cs: erasing xfer unit at 0x%x\n", xfer->Offset);      xfer->state = XFER_ERASING;      /* Is there a free erase slot? Always in MTD. */ @@ -355,7 +355,7 @@ static int erase_xfer(partition_t *part,      erase->len = 1 << part->header.EraseUnitSize;      erase->priv = (u_long)part; -    ret = part->mbd.mtd->erase(part->mbd.mtd, erase); +    ret = mtd_erase(part->mbd.mtd, erase);      if (!ret)  	    xfer->EraseCount++; @@ -415,15 +415,15 @@ static int prepare_xfer(partition_t *part, int i)      xfer = &part->XferInfo[i];      xfer->state = XFER_FAILED; -    DEBUG(1, "ftl_cs: preparing xfer unit at 0x%x\n", xfer->Offset); +    pr_debug("ftl_cs: preparing xfer unit at 0x%x\n", xfer->Offset);      /* Write the transfer unit header */      header = part->header;      header.LogicalEUN = cpu_to_le16(0xffff);      header.EraseCount = cpu_to_le32(xfer->EraseCount); -    ret = part->mbd.mtd->write(part->mbd.mtd, xfer->Offset, sizeof(header), -			   &retlen, (u_char *)&header); +    ret = mtd_write(part->mbd.mtd, xfer->Offset, sizeof(header), &retlen, +                    (u_char *)&header);      if (ret) {  	return ret; @@ -438,8 +438,8 @@ static int prepare_xfer(partition_t *part, int i)      for (i = 0; i < nbam; i++, offset += sizeof(uint32_t)) { -	ret = part->mbd.mtd->write(part->mbd.mtd, offset, sizeof(uint32_t), -			       &retlen, (u_char *)&ctl); +	ret = mtd_write(part->mbd.mtd, offset, sizeof(uint32_t), &retlen, +                        (u_char *)&ctl);  	if (ret)  	    return ret; @@ -476,7 +476,7 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,      eun = &part->EUNInfo[srcunit];      xfer = &part->XferInfo[xferunit]; -    DEBUG(2, "ftl_cs: copying block 0x%x to 0x%x\n", +    pr_debug("ftl_cs: copying block 0x%x to 0x%x\n",  	  eun->Offset, xfer->Offset); @@ -485,9 +485,9 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,  	offset = eun->Offset + le32_to_cpu(part->header.BAMOffset); -	ret = part->mbd.mtd->read(part->mbd.mtd, offset, -			      part->BlocksPerUnit * sizeof(uint32_t), -			      &retlen, (u_char *) (part->bam_cache)); +	ret = mtd_read(part->mbd.mtd, offset, +                       part->BlocksPerUnit * sizeof(uint32_t), &retlen, +                       (u_char *)(part->bam_cache));  	/* mark the cache bad, in case we get an error later */  	part->bam_index = 0xffff; @@ -503,8 +503,8 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,      offset = xfer->Offset + 20; /* Bad! */      unit = cpu_to_le16(0x7fff); -    ret = part->mbd.mtd->write(part->mbd.mtd, offset, sizeof(uint16_t), -			   &retlen, (u_char *) &unit); +    ret = mtd_write(part->mbd.mtd, offset, sizeof(uint16_t), &retlen, +                    (u_char *)&unit);      if (ret) {  	printk( KERN_WARNING "ftl: Failed to write back to BAM cache in copy_erase_unit()!\n"); @@ -523,16 +523,16 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,  	    break;  	case BLOCK_DATA:  	case BLOCK_REPLACEMENT: -	    ret = part->mbd.mtd->read(part->mbd.mtd, src, SECTOR_SIZE, -                        &retlen, (u_char *) buf); +	    ret = mtd_read(part->mbd.mtd, src, SECTOR_SIZE, &retlen, +                           (u_char *)buf);  	    if (ret) {  		printk(KERN_WARNING "ftl: Error reading old xfer unit in copy_erase_unit\n");  		return ret;              } -	    ret = part->mbd.mtd->write(part->mbd.mtd, dest, SECTOR_SIZE, -                        &retlen, (u_char *) buf); +	    ret = mtd_write(part->mbd.mtd, dest, SECTOR_SIZE, &retlen, +                            (u_char *)buf);  	    if (ret)  {  		printk(KERN_WARNING "ftl: Error writing new xfer unit in copy_erase_unit\n");  		return ret; @@ -550,9 +550,11 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,      }      /* Write the BAM to the transfer unit */ -    ret = part->mbd.mtd->write(part->mbd.mtd, xfer->Offset + le32_to_cpu(part->header.BAMOffset), -                    part->BlocksPerUnit * sizeof(int32_t), &retlen, -		    (u_char *)part->bam_cache); +    ret = mtd_write(part->mbd.mtd, +                    xfer->Offset + le32_to_cpu(part->header.BAMOffset), +                    part->BlocksPerUnit * sizeof(int32_t), +                    &retlen, +                    (u_char *)part->bam_cache);      if (ret) {  	printk( KERN_WARNING "ftl: Error writing BAM in copy_erase_unit\n");  	return ret; @@ -560,8 +562,8 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,      /* All clear? Then update the LogicalEUN again */ -    ret = part->mbd.mtd->write(part->mbd.mtd, xfer->Offset + 20, sizeof(uint16_t), -			   &retlen, (u_char *)&srcunitswap); +    ret = mtd_write(part->mbd.mtd, xfer->Offset + 20, sizeof(uint16_t), +                    &retlen, (u_char *)&srcunitswap);      if (ret) {  	printk(KERN_WARNING "ftl: Error writing new LogicalEUN in copy_erase_unit\n"); @@ -598,7 +600,7 @@ static int copy_erase_unit(partition_t *part, uint16_t srcunit,      unit with the fewest erases, and usually pick the data unit with      the most deleted blocks.  But with a small probability, pick the      oldest data unit instead.  This means that we generally postpone -    the next reclaimation as long as possible, but shuffle static +    the next reclamation as long as possible, but shuffle static      stuff around a bit for wear leveling.  ======================================================================*/ @@ -609,8 +611,8 @@ static int reclaim_block(partition_t *part)      uint32_t best;      int queued, ret; -    DEBUG(0, "ftl_cs: reclaiming space...\n"); -    DEBUG(3, "NumTransferUnits == %x\n", part->header.NumTransferUnits); +    pr_debug("ftl_cs: reclaiming space...\n"); +    pr_debug("NumTransferUnits == %x\n", part->header.NumTransferUnits);      /* Pick the least erased transfer unit */      best = 0xffffffff; xfer = 0xffff;      do { @@ -618,22 +620,22 @@ static int reclaim_block(partition_t *part)  	for (i = 0; i < part->header.NumTransferUnits; i++) {  	    int n=0;  	    if (part->XferInfo[i].state == XFER_UNKNOWN) { -		DEBUG(3,"XferInfo[%d].state == XFER_UNKNOWN\n",i); +		pr_debug("XferInfo[%d].state == XFER_UNKNOWN\n",i);  		n=1;  		erase_xfer(part, i);  	    }  	    if (part->XferInfo[i].state == XFER_ERASING) { -		DEBUG(3,"XferInfo[%d].state == XFER_ERASING\n",i); +		pr_debug("XferInfo[%d].state == XFER_ERASING\n",i);  		n=1;  		queued = 1;  	    }  	    else if (part->XferInfo[i].state == XFER_ERASED) { -		DEBUG(3,"XferInfo[%d].state == XFER_ERASED\n",i); +		pr_debug("XferInfo[%d].state == XFER_ERASED\n",i);  		n=1;  		prepare_xfer(part, i);  	    }  	    if (part->XferInfo[i].state == XFER_PREPARED) { -		DEBUG(3,"XferInfo[%d].state == XFER_PREPARED\n",i); +		pr_debug("XferInfo[%d].state == XFER_PREPARED\n",i);  		n=1;  		if (part->XferInfo[i].EraseCount <= best) {  		    best = part->XferInfo[i].EraseCount; @@ -641,22 +643,21 @@ static int reclaim_block(partition_t *part)  		}  	    }  		if (!n) -		    DEBUG(3,"XferInfo[%d].state == %x\n",i, part->XferInfo[i].state); +		    pr_debug("XferInfo[%d].state == %x\n",i, part->XferInfo[i].state);  	}  	if (xfer == 0xffff) {  	    if (queued) { -		DEBUG(1, "ftl_cs: waiting for transfer " +		pr_debug("ftl_cs: waiting for transfer "  		      "unit to be prepared...\n"); -		if (part->mbd.mtd->sync) -			part->mbd.mtd->sync(part->mbd.mtd); +		mtd_sync(part->mbd.mtd);  	    } else {  		static int ne = 0;  		if (++ne < 5)  		    printk(KERN_NOTICE "ftl_cs: reclaim failed: no "  			   "suitable transfer units!\n");  		else -		    DEBUG(1, "ftl_cs: reclaim failed: no " +		    pr_debug("ftl_cs: reclaim failed: no "  			  "suitable transfer units!\n");  		return -EIO; @@ -666,7 +667,7 @@ static int reclaim_block(partition_t *part)      eun = 0;      if ((jiffies % shuffle_freq) == 0) { -	DEBUG(1, "ftl_cs: recycling freshest block...\n"); +	pr_debug("ftl_cs: recycling freshest block...\n");  	best = 0xffffffff;  	for (i = 0; i < part->DataUnits; i++)  	    if (part->EUNInfo[i].EraseCount <= best) { @@ -686,7 +687,7 @@ static int reclaim_block(partition_t *part)  		printk(KERN_NOTICE "ftl_cs: reclaim failed: "  		       "no free blocks!\n");  	    else -		DEBUG(1,"ftl_cs: reclaim failed: " +		pr_debug("ftl_cs: reclaim failed: "  		       "no free blocks!\n");  	    return -EIO; @@ -747,10 +748,11 @@ static uint32_t find_free(partition_t *part)  	/* Invalidate cache */  	part->bam_index = 0xffff; -	ret = part->mbd.mtd->read(part->mbd.mtd, -		       part->EUNInfo[eun].Offset + le32_to_cpu(part->header.BAMOffset), -		       part->BlocksPerUnit * sizeof(uint32_t), -		       &retlen, (u_char *) (part->bam_cache)); +	ret = mtd_read(part->mbd.mtd, +                       part->EUNInfo[eun].Offset + le32_to_cpu(part->header.BAMOffset), +                       part->BlocksPerUnit * sizeof(uint32_t), +                       &retlen, +                       (u_char *)(part->bam_cache));  	if (ret) {  	    printk(KERN_WARNING"ftl: Error reading BAM in find_free\n"); @@ -771,7 +773,7 @@ static uint32_t find_free(partition_t *part)  	printk(KERN_NOTICE "ftl_cs: bad free list!\n");  	return 0;      } -    DEBUG(2, "ftl_cs: found free block at %d in %d\n", blk, eun); +    pr_debug("ftl_cs: found free block at %d in %d\n", blk, eun);      return blk;  } /* find_free */ @@ -791,7 +793,7 @@ static int ftl_read(partition_t *part, caddr_t buffer,      int ret;      size_t offset, retlen; -    DEBUG(2, "ftl_cs: ftl_read(0x%p, 0x%lx, %ld)\n", +    pr_debug("ftl_cs: ftl_read(0x%p, 0x%lx, %ld)\n",  	  part, sector, nblocks);      if (!(part->state & FTL_FORMATTED)) {  	printk(KERN_NOTICE "ftl_cs: bad partition\n"); @@ -810,8 +812,8 @@ static int ftl_read(partition_t *part, caddr_t buffer,  	else {  	    offset = (part->EUNInfo[log_addr / bsize].Offset  			  + (log_addr % bsize)); -	    ret = part->mbd.mtd->read(part->mbd.mtd, offset, SECTOR_SIZE, -			   &retlen, (u_char *) buffer); +	    ret = mtd_read(part->mbd.mtd, offset, SECTOR_SIZE, &retlen, +                           (u_char *)buffer);  	    if (ret) {  		printk(KERN_WARNING "Error reading MTD device in ftl_read()\n"); @@ -840,7 +842,7 @@ static int set_bam_entry(partition_t *part, uint32_t log_addr,      int ret;      size_t retlen, offset; -    DEBUG(2, "ftl_cs: set_bam_entry(0x%p, 0x%x, 0x%x)\n", +    pr_debug("ftl_cs: set_bam_entry(0x%p, 0x%x, 0x%x)\n",  	  part, log_addr, virt_addr);      bsize = 1 << part->header.EraseUnitSize;      eun = log_addr / bsize; @@ -849,8 +851,8 @@ static int set_bam_entry(partition_t *part, uint32_t log_addr,  		  le32_to_cpu(part->header.BAMOffset));  #ifdef PSYCHO_DEBUG -    ret = part->mbd.mtd->read(part->mbd.mtd, offset, sizeof(uint32_t), -                        &retlen, (u_char *)&old_addr); +    ret = mtd_read(part->mbd.mtd, offset, sizeof(uint32_t), &retlen, +                   (u_char *)&old_addr);      if (ret) {  	printk(KERN_WARNING"ftl: Error reading old_addr in set_bam_entry: %d\n",ret);  	return ret; @@ -886,8 +888,8 @@ static int set_bam_entry(partition_t *part, uint32_t log_addr,  #endif  	part->bam_cache[blk] = le_virt_addr;      } -    ret = part->mbd.mtd->write(part->mbd.mtd, offset, sizeof(uint32_t), -                            &retlen, (u_char *)&le_virt_addr); +    ret = mtd_write(part->mbd.mtd, offset, sizeof(uint32_t), &retlen, +                    (u_char *)&le_virt_addr);      if (ret) {  	printk(KERN_NOTICE "ftl_cs: set_bam_entry() failed!\n"); @@ -905,7 +907,7 @@ static int ftl_write(partition_t *part, caddr_t buffer,      int ret;      size_t retlen, offset; -    DEBUG(2, "ftl_cs: ftl_write(0x%p, %ld, %ld)\n", +    pr_debug("ftl_cs: ftl_write(0x%p, %ld, %ld)\n",  	  part, sector, nblocks);      if (!(part->state & FTL_FORMATTED)) {  	printk(KERN_NOTICE "ftl_cs: bad partition\n"); @@ -946,8 +948,7 @@ static int ftl_write(partition_t *part, caddr_t buffer,  	part->EUNInfo[part->bam_index].Deleted++;  	offset = (part->EUNInfo[part->bam_index].Offset +  		      blk * SECTOR_SIZE); -	ret = part->mbd.mtd->write(part->mbd.mtd, offset, SECTOR_SIZE, &retlen, -                                     buffer); +	ret = mtd_write(part->mbd.mtd, offset, SECTOR_SIZE, &retlen, buffer);  	if (ret) {  	    printk(KERN_NOTICE "ftl_cs: block write failed!\n"); @@ -1011,7 +1012,7 @@ static int ftl_discardsect(struct mtd_blktrans_dev *dev,  	partition_t *part = (void *)dev;  	uint32_t bsize = 1 << part->header.EraseUnitSize; -	DEBUG(1, "FTL erase sector %ld for %d sectors\n", +	pr_debug("FTL erase sector %ld for %d sectors\n",  	      sector, nr_sects);  	while (nr_sects) {  | 
