@ -6,6 +6,7 @@
*/
# include <common.h>
# include <dm.h>
# include <inttypes.h>
# include <pci.h>
# include <scsi.h>
@ -149,9 +150,17 @@ void scsi_setup_inquiry(ccb *pccb)
pccb - > msgout [ 0 ] = SCSI_IDENTIFY ; /* NOT USED */
}
# ifdef CONFIG_BLK
static ulong scsi_read ( struct udevice * dev , lbaint_t blknr , lbaint_t blkcnt ,
void * buffer )
# else
static ulong scsi_read ( struct blk_desc * block_dev , lbaint_t blknr ,
lbaint_t blkcnt , void * buffer )
# endif
{
# ifdef CONFIG_BLK
struct blk_desc * block_dev = dev_get_uclass_platdata ( dev ) ;
# endif
int device = block_dev - > devnum ;
lbaint_t start , blks ;
uintptr_t buf_addr ;
@ -216,9 +225,17 @@ static ulong scsi_read(struct blk_desc *block_dev, lbaint_t blknr,
/* Almost the maximum amount of the scsi_ext command.. */
# define SCSI_MAX_WRITE_BLK 0xFFFF
# ifdef CONFIG_BLK
static ulong scsi_write ( struct udevice * dev , lbaint_t blknr , lbaint_t blkcnt ,
const void * buffer )
# else
static ulong scsi_write ( struct blk_desc * block_dev , lbaint_t blknr ,
lbaint_t blkcnt , const void * buffer )
# endif
{
# ifdef CONFIG_BLK
struct blk_desc * block_dev = dev_get_uclass_platdata ( dev ) ;
# endif
int device = block_dev - > devnum ;
lbaint_t start , blks ;
uintptr_t buf_addr ;
@ -469,8 +486,10 @@ void scsi_scan(int mode)
scsi_dev_desc [ i ] . if_type = IF_TYPE_SCSI ;
scsi_dev_desc [ i ] . devnum = i ;
scsi_dev_desc [ i ] . part_type = PART_TYPE_UNKNOWN ;
# ifndef CONFIG_BLK
scsi_dev_desc [ i ] . block_read = scsi_read ;
scsi_dev_desc [ i ] . block_write = scsi_write ;
# endif
}
scsi_max_devs = 0 ;
for ( i = 0 ; i < CONFIG_SYS_SCSI_MAX_SCSI_ID ; i + + ) {
@ -552,9 +571,22 @@ removable:
# endif
}
# ifdef CONFIG_BLK
static const struct blk_ops scsi_blk_ops = {
. read = scsi_read ,
. write = scsi_write ,
} ;
U_BOOT_DRIVER ( scsi_blk ) = {
. name = " scsi_blk " ,
. id = UCLASS_BLK ,
. ops = & scsi_blk_ops ,
} ;
# else
U_BOOT_LEGACY_BLK ( scsi ) = {
. if_typename = " sata " ,
. if_type = IF_TYPE_SCSI ,
. max_devs = CONFIG_SYS_SCSI_MAX_DEVICE ,
. desc = scsi_dev_desc ,
} ;
# endif