blob: a7c1eaf0cf50d1ab85b9a7b8c3ef5cc1b61429b2 [file] [log] [blame]
Tom Rini83d290c2018-05-06 17:58:06 -04001// SPDX-License-Identifier: GPL-2.0+
Michal Simeke8a016b2016-09-08 15:06:45 +02002/*
3 * Copyright (c) 2015 Google, Inc
4 * Written by Simon Glass <sjg@chromium.org>
5 * Copyright (c) 2016 Xilinx, Inc
6 * Written by Michal Simek
7 *
8 * Based on ahci-uclass.c
Michal Simeke8a016b2016-09-08 15:06:45 +02009 */
10
Patrick Delaunayb953ec22021-04-27 11:02:19 +020011#define LOG_CATEGORY UCLASS_SCSI
12
Michal Simeke8a016b2016-09-08 15:06:45 +020013#include <common.h>
14#include <dm.h>
15#include <scsi.h>
16
Simon Glassf6ab5a92017-06-14 21:28:43 -060017int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb)
18{
19 struct scsi_ops *ops = scsi_get_ops(dev);
20
21 if (!ops->exec)
22 return -ENOSYS;
23
24 return ops->exec(dev, pccb);
25}
26
27int scsi_bus_reset(struct udevice *dev)
28{
29 struct scsi_ops *ops = scsi_get_ops(dev);
30
31 if (!ops->bus_reset)
32 return -ENOSYS;
33
34 return ops->bus_reset(dev);
35}
36
Michal Simeke8a016b2016-09-08 15:06:45 +020037UCLASS_DRIVER(scsi) = {
38 .id = UCLASS_SCSI,
39 .name = "scsi",
Simon Glass8a8d24b2020-12-03 16:55:23 -070040 .per_device_plat_auto = sizeof(struct scsi_plat),
Michal Simeke8a016b2016-09-08 15:06:45 +020041};