X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=include%2Fscsi.h;h=61da958bf684faea91d3cfd042348304bef03f0f;hb=6024467bcc0e38fb5f1d2d80b73e770c94e4530c;hp=20f6932602bcf9f7cf96fe7d5f9df4a83fdf1f71;hpb=8eab1a58dd53cbf89dca54f91cf3fbb51d714644;p=oweals%2Fu-boot.git diff --git a/include/scsi.h b/include/scsi.h index 20f6932602..61da958bf6 100644 --- a/include/scsi.h +++ b/include/scsi.h @@ -1,12 +1,13 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ /* * (C) Copyright 2001 * Denis Peter, MPL AG Switzerland - * - * SPDX-License-Identifier: GPL-2.0+ */ #ifndef _SCSI_H #define _SCSI_H +#include + struct scsi_cmd { unsigned char cmd[16]; /* command */ /* for request sense */ @@ -27,6 +28,7 @@ struct scsi_cmd { unsigned long trans_bytes; /* tranfered bytes */ unsigned int priv; + enum dma_data_direction dma_dir; }; /*----------------------------------------------------------- @@ -164,11 +166,13 @@ struct scsi_cmd { * @base: Controller base address * @max_lun: Maximum number of logical units * @max_id: Maximum number of target ids + * @max_bytes_per_req: Maximum number of bytes per read/write request */ struct scsi_platdata { unsigned long base; unsigned long max_lun; unsigned long max_id; + unsigned long max_bytes_per_req; }; /* Operations for SCSI */ @@ -191,12 +195,25 @@ struct scsi_ops { int (*bus_reset)(struct udevice *dev); }; -#ifndef CONFIG_DM_SCSI -void scsi_low_level_init(int busdevfunc); -void scsi_init(void); -#endif +#define scsi_get_ops(dev) ((struct scsi_ops *)(dev)->driver->ops) -int scsi_exec(struct udevice *dev, struct scsi_cmd *pccb); +extern struct scsi_ops scsi_ops; + +/** + * scsi_exec() - execute a command + * + * @dev: SCSI bus + * @cmd: Command to execute + * @return 0 if OK, -ve on error + */ +int scsi_exec(struct udevice *dev, struct scsi_cmd *cmd); + +/** + * scsi_bus_reset() - reset the bus + * + * @dev: SCSI bus to reset + * @return 0 if OK, -ve on error + */ int scsi_bus_reset(struct udevice *dev); /** @@ -206,6 +223,19 @@ int scsi_bus_reset(struct udevice *dev); */ int scsi_scan(bool verbose); +/** + * scsi_scan_dev() - scan a SCSI bus and create devices + * + * @dev: SCSI bus + * @verbose: true to show information about each device found + */ +int scsi_scan_dev(struct udevice *dev, bool verbose); + +#ifndef CONFIG_DM_SCSI +void scsi_low_level_init(int busdevfunc); +void scsi_init(void); +#endif + #define SCSI_IDENTIFY 0xC0 /* not used */ /* Hardware errors */