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