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