IEEE 1275-1994 Standard for Boot (Initialization Configuration) Firmware: Core Requirements and Practices E.3.2.2 Bus-specific methods for bus nodes
A package implementing the scsi-2 device type shall implement the following bus-specific method: set-address ( unit# target# -- ) Sets the SCSI target number (0x0..0xf) and unit number (0..7) to which subsequent commands apply. This function is for devices with #address-cells == 2 Signed-off-by: Eric Snowberg <[email protected]> --- grub-core/kern/ieee1275/ieee1275.c | 38 ++++++++++++++++++++++++++++++++++++ include/grub/ieee1275/ieee1275.h | 4 +++ 2 files changed, 42 insertions(+), 0 deletions(-) diff --git a/grub-core/kern/ieee1275/ieee1275.c b/grub-core/kern/ieee1275/ieee1275.c index 7aef624..7de87ac 100644 --- a/grub-core/kern/ieee1275/ieee1275.c +++ b/grub-core/kern/ieee1275/ieee1275.c @@ -695,3 +695,41 @@ grub_ieee1275_milliseconds (grub_uint32_t *msecs) *msecs = args.msecs; return 0; } + +int +grub_ieee1275_set_address (grub_ieee1275_ihandle_t ihandle, + grub_uint32_t target, grub_uint32_t lun) +{ + struct set_address + { + struct grub_ieee1275_common_hdr common; + grub_ieee1275_cell_t method; + grub_ieee1275_cell_t ihandle; + grub_ieee1275_cell_t tgt; + grub_ieee1275_cell_t lun; + grub_ieee1275_cell_t catch_result; + } + args; + + INIT_IEEE1275_COMMON (&args.common, "call-method", 4, 1); + + /* IEEE 1275-1994 Standard for Boot (Initialization Configuration) + Firmware: Core Requirements and Practices + E.3.2.2 Bus-specific methods for bus nodes + + A package implementing the scsi-2 device type shall implement the + following bus-specific method: + + set-address ( unit# target# -- ) + Sets the SCSI target number (0x0..0xf) and unit number (0..7) to which + subsequent commands apply. */ + args.method = (grub_ieee1275_cell_t) "set-address"; + args.ihandle = ihandle; + args.tgt = target; + args.lun = lun; + + if (IEEE1275_CALL_ENTRY_FN (&args) == -1) + return -1; + + return args.catch_result; +} diff --git a/include/grub/ieee1275/ieee1275.h b/include/grub/ieee1275/ieee1275.h index 5404ed6..1ba9f27 100644 --- a/include/grub/ieee1275/ieee1275.h +++ b/include/grub/ieee1275/ieee1275.h @@ -211,6 +211,10 @@ int EXPORT_FUNC(grub_ieee1275_set_color) (grub_ieee1275_ihandle_t ihandle, int index, int r, int g, int b); int EXPORT_FUNC(grub_ieee1275_milliseconds) (grub_uint32_t *msecs); +int EXPORT_FUNC(grub_ieee1275_set_address) (grub_ieee1275_ihandle_t ihandle, + grub_uint32_t target, + grub_uint32_t lun); + int EXPORT_FUNC(grub_ieee1275_decode_unit4) (grub_ieee1275_ihandle_t ihandle, void *addr, grub_size_t size, grub_uint32_t *phy_lo, -- 1.7.1 _______________________________________________ Grub-devel mailing list [email protected] https://lists.gnu.org/mailman/listinfo/grub-devel
