1 /* 2 * Copyright (c) 2015 Google, Inc 3 * Written by Simon Glass <sjg@chromium.org> 4 * Copyright (c) 2016 Xilinx, Inc 5 * Written by Michal Simek 6 * 7 * Based on ahci-uclass.c 8 * 9 * SPDX-License-Identifier: GPL-2.0+ 10 */ 11 12 #include <common.h> 13 #include <dm.h> 14 #include <scsi.h> 15 16 int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb) 17 { 18 struct scsi_ops *ops = scsi_get_ops(dev); 19 20 if (!ops->exec) 21 return -ENOSYS; 22 23 return ops->exec(dev, pccb); 24 } 25 26 int scsi_bus_reset(struct udevice *dev) 27 { 28 struct scsi_ops *ops = scsi_get_ops(dev); 29 30 if (!ops->bus_reset) 31 return -ENOSYS; 32 33 return ops->bus_reset(dev); 34 } 35 36 UCLASS_DRIVER(scsi) = { 37 .id = UCLASS_SCSI, 38 .name = "scsi", 39 .per_device_platdata_auto_alloc_size = sizeof(struct scsi_platdata), 40 }; 41