@ -161,43 +161,41 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr,
# ifdef CONFIG_BLK
# ifdef CONFIG_BLK
struct blk_desc * block_dev = dev_get_uclass_platdata ( dev ) ;
struct blk_desc * block_dev = dev_get_uclass_platdata ( dev ) ;
# endif
# endif
int device = block_dev - > devnum ;
lbaint_t start , blks ;
lbaint_t start , blks ;
uintptr_t buf_addr ;
uintptr_t buf_addr ;
unsigned short smallblks = 0 ;
unsigned short smallblks = 0 ;
ccb * pccb = ( ccb * ) & tempccb ;
ccb * pccb = ( ccb * ) & tempccb ;
device & = 0xff ;
/* Setup device */
/* Setup device */
pccb - > target = scsi_dev_desc [ device ] . target ;
pccb - > target = block_dev - > target ;
pccb - > lun = scsi_dev_desc [ device ] . lun ;
pccb - > lun = block_dev - > lun ;
buf_addr = ( unsigned long ) buffer ;
buf_addr = ( unsigned long ) buffer ;
start = blknr ;
start = blknr ;
blks = blkcnt ;
blks = blkcnt ;
debug ( " \n scsi_read: dev %d startblk " LBAF
debug ( " \n scsi_read: dev %d startblk " LBAF
" , blccnt " LBAF " buffer %lx \n " ,
" , blccnt " LBAF " buffer %lx \n " ,
device , start , blks , ( unsigned long ) buffer ) ;
block_dev - > devnum , start , blks , ( unsigned long ) buffer ) ;
do {
do {
pccb - > pdata = ( unsigned char * ) buf_addr ;
pccb - > pdata = ( unsigned char * ) buf_addr ;
# ifdef CONFIG_SYS_64BIT_LBA
# ifdef CONFIG_SYS_64BIT_LBA
if ( start > SCSI_LBA48_READ ) {
if ( start > SCSI_LBA48_READ ) {
unsigned long blocks ;
unsigned long blocks ;
blocks = min_t ( lbaint_t , blks , SCSI_MAX_READ_BLK ) ;
blocks = min_t ( lbaint_t , blks , SCSI_MAX_READ_BLK ) ;
pccb - > datalen = scsi_dev_desc [ device ] . blksz * blocks ;
pccb - > datalen = block_dev - > blksz * blocks ;
scsi_setup_read16 ( pccb , start , blocks ) ;
scsi_setup_read16 ( pccb , start , blocks ) ;
start + = blocks ;
start + = blocks ;
blks - = blocks ;
blks - = blocks ;
} else
} else
# endif
# endif
if ( blks > SCSI_MAX_READ_BLK ) {
if ( blks > SCSI_MAX_READ_BLK ) {
pccb - > datalen = scsi_dev_desc [ device ] . blksz *
pccb - > datalen = block_dev - > blksz *
SCSI_MAX_READ_BLK ;
SCSI_MAX_READ_BLK ;
smallblks = SCSI_MAX_READ_BLK ;
smallblks = SCSI_MAX_READ_BLK ;
scsi_setup_read_ext ( pccb , start , smallblks ) ;
scsi_setup_read_ext ( pccb , start , smallblks ) ;
start + = SCSI_MAX_READ_BLK ;
start + = SCSI_MAX_READ_BLK ;
blks - = SCSI_MAX_READ_BLK ;
blks - = SCSI_MAX_READ_BLK ;
} else {
} else {
pccb - > datalen = scsi_dev_desc [ device ] . blksz * blks ;
pccb - > datalen = block_dev - > blksz * blks ;
smallblks = ( unsigned short ) blks ;
smallblks = ( unsigned short ) blks ;
scsi_setup_read_ext ( pccb , start , smallblks ) ;
scsi_setup_read_ext ( pccb , start , smallblks ) ;
start + = blks ;
start + = blks ;
@ -236,33 +234,30 @@ static ulong scsi_write(struct blk_desc *block_dev, lbaint_t blknr,
# ifdef CONFIG_BLK
# ifdef CONFIG_BLK
struct blk_desc * block_dev = dev_get_uclass_platdata ( dev ) ;
struct blk_desc * block_dev = dev_get_uclass_platdata ( dev ) ;
# endif
# endif
int device = block_dev - > devnum ;
lbaint_t start , blks ;
lbaint_t start , blks ;
uintptr_t buf_addr ;
uintptr_t buf_addr ;
unsigned short smallblks ;
unsigned short smallblks ;
ccb * pccb = ( ccb * ) & tempccb ;
ccb * pccb = ( ccb * ) & tempccb ;
device & = 0xff ;
/* Setup device */
/* Setup device */
pccb - > target = scsi_dev_desc [ device ] . target ;
pccb - > target = block_dev - > target ;
pccb - > lun = scsi_dev_desc [ device ] . lun ;
pccb - > lun = block_dev - > lun ;
buf_addr = ( unsigned long ) buffer ;
buf_addr = ( unsigned long ) buffer ;
start = blknr ;
start = blknr ;
blks = blkcnt ;
blks = blkcnt ;
debug ( " \n %s: dev %d startblk " LBAF " , blccnt " LBAF " buffer %lx \n " ,
debug ( " \n %s: dev %d startblk " LBAF " , blccnt " LBAF " buffer %lx \n " ,
__func__ , device , start , blks , ( unsigned long ) buffer ) ;
__func__ , block_dev - > devnum , start , blks , ( unsigned long ) buffer ) ;
do {
do {
pccb - > pdata = ( unsigned char * ) buf_addr ;
pccb - > pdata = ( unsigned char * ) buf_addr ;
if ( blks > SCSI_MAX_WRITE_BLK ) {
if ( blks > SCSI_MAX_WRITE_BLK ) {
pccb - > datalen = ( scsi_dev_desc [ device ] . blksz *
pccb - > datalen = ( block_dev - > blksz *
SCSI_MAX_WRITE_BLK ) ;
SCSI_MAX_WRITE_BLK ) ;
smallblks = SCSI_MAX_WRITE_BLK ;
smallblks = SCSI_MAX_WRITE_BLK ;
scsi_setup_write_ext ( pccb , start , smallblks ) ;
scsi_setup_write_ext ( pccb , start , smallblks ) ;
start + = SCSI_MAX_WRITE_BLK ;
start + = SCSI_MAX_WRITE_BLK ;
blks - = SCSI_MAX_WRITE_BLK ;
blks - = SCSI_MAX_WRITE_BLK ;
} else {
} else {
pccb - > datalen = scsi_dev_desc [ device ] . blksz * blks ;
pccb - > datalen = block_dev - > blksz * blks ;
smallblks = ( unsigned short ) blks ;
smallblks = ( unsigned short ) blks ;
scsi_setup_write_ext ( pccb , start , smallblks ) ;
scsi_setup_write_ext ( pccb , start , smallblks ) ;
start + = blks ;
start + = blks ;