diff options
author | Michal Simek <michal.simek@xilinx.com> | 2016-09-08 15:06:45 +0200 |
---|---|---|
committer | Michal Simek <michal.simek@xilinx.com> | 2016-12-20 09:15:27 +0100 |
commit | e8a016b53731bba820246c9509ce8ef74c944560 (patch) | |
tree | b9382ac0cd9f4dcd9cb8cfae459770d09ea4d43f /drivers/block/scsi-uclass.c | |
parent | 720ba46e71b09d379a3590a4a35c35d5938338b5 (diff) | |
download | u-boot-imx-e8a016b53731bba820246c9509ce8ef74c944560.zip u-boot-imx-e8a016b53731bba820246c9509ce8ef74c944560.tar.gz u-boot-imx-e8a016b53731bba820246c9509ce8ef74c944560.tar.bz2 |
dm: Add support for scsi/sata based devices
All sata based drivers are bind and corresponding block
device is created. Based on this find_scsi_device() is able
to get back block device based on scsi_curr_dev pointer.
intr_scsi() is commented now but it can be replaced by calling
find_scsi_device() and scsi_scan().
scsi_dev_desc[] is commented out but common/scsi.c heavily depends on
it. That's why CONFIG_SYS_SCSI_MAX_DEVICE is hardcoded to 1 and symbol
is reassigned to a block description allocated by uclass.
There is only one block description by device now but it doesn't need to
be correct when more devices are present.
scsi_bind() ensures corresponding block device creation.
uclass post_probe (scsi_post_probe()) is doing low level init.
SCSI/SATA DM based drivers requires to have 64bit base address as
the first entry in platform data structure to setup mmio_base.
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/block/scsi-uclass.c')
-rw-r--r-- | drivers/block/scsi-uclass.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/block/scsi-uclass.c b/drivers/block/scsi-uclass.c new file mode 100644 index 0000000..05da6cd --- /dev/null +++ b/drivers/block/scsi-uclass.c @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2015 Google, Inc + * Written by Simon Glass <sjg@chromium.org> + * Copyright (c) 2016 Xilinx, Inc + * Written by Michal Simek + * + * Based on ahci-uclass.c + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#include <common.h> +#include <dm.h> +#include <scsi.h> + +static int scsi_post_probe(struct udevice *dev) +{ + debug("%s: device %p\n", __func__, dev); + scsi_low_level_init(0, dev); + return 0; +} + +UCLASS_DRIVER(scsi) = { + .id = UCLASS_SCSI, + .name = "scsi", + .post_probe = scsi_post_probe, +}; |