xref: /rk3399_rockchip-uboot/drivers/scsi/scsi-uclass.c (revision 8d3a25685e4aac7070365a2b3c53c2c81b27930f)
10fcd48feSSimon Glass /*
20fcd48feSSimon Glass  * Copyright (c) 2015 Google, Inc
30fcd48feSSimon Glass  * Written by Simon Glass <sjg@chromium.org>
40fcd48feSSimon Glass  * Copyright (c) 2016 Xilinx, Inc
50fcd48feSSimon Glass  * Written by Michal Simek
60fcd48feSSimon Glass  *
70fcd48feSSimon Glass  * Based on ahci-uclass.c
80fcd48feSSimon Glass  *
90fcd48feSSimon Glass  * SPDX-License-Identifier:	GPL-2.0+
100fcd48feSSimon Glass  */
110fcd48feSSimon Glass 
120fcd48feSSimon Glass #include <common.h>
130fcd48feSSimon Glass #include <dm.h>
140fcd48feSSimon Glass #include <scsi.h>
150fcd48feSSimon Glass 
scsi_exec(struct udevice * dev,struct scsi_cmd * pccb)16*f6ab5a92SSimon Glass int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
17*f6ab5a92SSimon Glass {
18*f6ab5a92SSimon Glass 	struct scsi_ops *ops = scsi_get_ops(dev);
19*f6ab5a92SSimon Glass 
20*f6ab5a92SSimon Glass 	if (!ops->exec)
21*f6ab5a92SSimon Glass 		return -ENOSYS;
22*f6ab5a92SSimon Glass 
23*f6ab5a92SSimon Glass 	return ops->exec(dev, pccb);
24*f6ab5a92SSimon Glass }
25*f6ab5a92SSimon Glass 
scsi_bus_reset(struct udevice * dev)26*f6ab5a92SSimon Glass int scsi_bus_reset(struct udevice *dev)
27*f6ab5a92SSimon Glass {
28*f6ab5a92SSimon Glass 	struct scsi_ops *ops = scsi_get_ops(dev);
29*f6ab5a92SSimon Glass 
30*f6ab5a92SSimon Glass 	if (!ops->bus_reset)
31*f6ab5a92SSimon Glass 		return -ENOSYS;
32*f6ab5a92SSimon Glass 
33*f6ab5a92SSimon Glass 	return ops->bus_reset(dev);
34*f6ab5a92SSimon Glass }
35*f6ab5a92SSimon Glass 
360fcd48feSSimon Glass UCLASS_DRIVER(scsi) = {
370fcd48feSSimon Glass 	.id		= UCLASS_SCSI,
380fcd48feSSimon Glass 	.name		= "scsi",
391dc64f6cSSimon Glass 	.per_device_platdata_auto_alloc_size = sizeof(struct scsi_platdata),
400fcd48feSSimon Glass };
41