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 Glassint 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 Glassint 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