From nobody Wed May 14 00:36:41 2025 Delivered-To: importer@patchew.org Received-SPF: none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) client-ip=80.81.252.135; envelope-from=seabios-bounces@seabios.org; helo=mail.coreboot.org; Authentication-Results: mx.zoho.com; spf=none (zoho.com: 80.81.252.135 is neither permitted nor denied by domain of seabios.org) smtp.mailfrom=seabios-bounces@seabios.org; Return-Path: Received: from mail.coreboot.org (mail.coreboot.org [80.81.252.135]) by mx.zohomail.com with SMTPS id 1488365199273368.86935002190285; Wed, 1 Mar 2017 02:46:39 -0800 (PST) Received: from [127.0.0.1] (helo=ra.coresystems.de) by mail.coreboot.org with esmtp (Exim 4.86_2) (envelope-from ) id 1cj1m3-0004Ut-9j; Wed, 01 Mar 2017 11:46:23 +0100 Received: from mail-ve1eur01on0130.outbound.protection.outlook.com ([104.47.1.130] helo=EUR01-VE1-obe.outbound.protection.outlook.com) by mail.coreboot.org with esmtps (TLSv1.2:ECDHE-RSA-AES256-SHA384:256) (Exim 4.86_2) (envelope-from ) id 1cj1lt-0004Mo-CW for seabios@seabios.org; Wed, 01 Mar 2017 11:46:20 +0100 Received: from rkaganb.sw.ru (195.214.232.6) by DB6PR0802MB2469.eurprd08.prod.outlook.com (10.172.251.17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.947.12; Wed, 1 Mar 2017 10:45:49 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=virtuozzo.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=dpWyIVFmCgL1UzOnTiZTO5zjfIjForrWHZPkS0Vv4TU=; b=E+oRG+geIJURfTd0B6CmqKBhBJXIlGXW3M34vlmR8dSK2N4S/R0aWAaMUa6aWrQNpdnQVp+iNFPPQCYr1Ka+M4Rwh/pl0kA0A/GS8FOjdNCZzNY7kawqiDkQodnxbjNdEpW8mGTGU+RIoErAOOpYHYI/ZEprqoVnpcn0Kdc3vqY= Authentication-Results: seabios.org; dkim=none (message not signed) header.d=none;seabios.org; dmarc=none action=none header.from=virtuozzo.com; From: Roman Kagan To: Date: Wed, 1 Mar 2017 13:45:38 +0300 Message-ID: <20170301104542.7373-6-rkagan@virtuozzo.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170301104542.7373-1-rkagan@virtuozzo.com> References: <20170301104542.7373-1-rkagan@virtuozzo.com> MIME-Version: 1.0 X-Originating-IP: [195.214.232.6] X-ClientProxiedBy: HE1PR03CA0038.eurprd03.prod.outlook.com (10.163.170.176) To DB6PR0802MB2469.eurprd08.prod.outlook.com (10.172.251.17) X-MS-Office365-Filtering-Correlation-Id: 7e7396ca-4112-48bc-3462-08d460901fe0 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:DB6PR0802MB2469; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 3:uDyYq4rQgAZv1Tdty40hHc+aM8qQrOcQ+J96yA6oitkI+UkQngpS+eq28vOg6u1KdkNIulcZ9YEN72uc707NFJ7eZv5BdmP6o0D14dHLPKQ1eYaUua546nshJamTdd/iamhQerQ3thciyvu5I6qrPCeA/DSj5GGTCPm00I/3UwG7lQaekXWlvQFTbrZGfhvgEHjvprNIksO6fglMF/4nFSSr0Q1iodCVYwuzobd3x5hDFFt+GNoDH64juWl//WgOGj37t67bIOBgpaQWRTY/1g==; 25:WDDNLcOKJQzYh6IszHu7R+pORGE+OjFeDK0sMPMrR78WfSL6Pgj+hHGjUD29t6yaBw1MloBLrq+teo41Rbo5Qhij4A/6F1yIUZvnw8a20WIFtissLmANHLXhkj4jwjQ5qkQNINkVi9YQys2U139ljPEWzC9+mpxyy5cnJe9sIzMD02ak5aP7Rq0Mge3yvZd8Yh3zH45Elc4uq4pNlVhZMQOXsYeMfF5QtXC88ggYME3w3PAAyEaW9RPNyfjRXGmkNq4tI5USZ98eRQCwSmrHjzoXPiJOWYnD81iIkp4eA6fUKmQZjB+z3DEgF9edsfBRP03PjrICBBH03JQqikYzIBXU/nFAaH2MVvyBWgkkHapb/Nv+FTy3W4OXB1Kd5tTC0dVUUhPn0KqCYlfKUWNALGqf/2gL5eQDmjr9nnL6FBxefzJBkWSzIASPk97n8yMYm7KbDHiN0nndWwJ8OMPcjw== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 31:NK3D63FVxp2Hp+816mW4+miMAHc5kXjHvVTj3+PKGwrxYps5IPEVgd6JHwqd7jMPmF4dAEIorH/y2F3sNyHg8pX4qP/dFAyWnMjIqsGuA3JZ2F+gOfcWXVRnr6DsO/btEGrPFEdr0a25RCFKKuTqHmVX0GddxhnpatgBch0x0092Xsqu7sNPQXpvr5vc3223D+j2wnVcvWP7qa4L0eEJ5H1qMwbh+nvqGakE1xlnGJ10yCx33bYJoVUujUQdV4gIUfAMyayf8owWDWuyzVKPkzDR71wYeDGoASnsrw8dQ0E=; 20:s7MQKMhXUKZCo6XLVn+TdeEqpZBl6AmO+0etpxLDxGAlaxnpOtrEzjpukWiqiwPW4EV+kuJH+xV1oDDSg3/SY+kXQPJ2gryF6jc5MOx4k27Qnaw4iyFj1RN0nMXq3cXR5HQlezVzxkNomRISF6UlK6HrFgdeCFC/3PxhIl6fGK7QNZ0Yd6x2hOUD9lZsrK+ivhH94IWLZtkKqKw5UFru+IGsyPwCrWRMfr2hRfcO8xDNTesJBxRVDnvyi5IMR81XgWDEMVDp34gCW42hbKbzUw8sOI2sivn5onyaADaC46ti248JblSh+5ZTnqWvhm/EjX8GOUf+6B+AXvBRIRFYXWdvMtk7ZYAy8piJPnxM0DVJlNi54pwCHQX5e2UNxK7oXqX9mMGp/NpiEpbmxhAgnp5w8cHzvSKv+tXMKXBd5Ic= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(3002001)(10201501046)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123558025)(20161123560025)(6072148); SRVR:DB6PR0802MB2469; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0802MB2469; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 4:VRPI1Jf524qThw5XUQg6md3p5MUsRgLa7WqHIW7dpjpagDfDqzic1liV3b9bzrAfN7OXDDQINGGLIcvAO2DDVKvjF1LZYzUy6YGIWWdirbmw8KE1WDyBD0oQEwXyVgMlAPGUUXSny3QjP3b9IFYPfL15nA8YYIAtVHThvk+kFREW/uC5RBD+6KSvJjK8bxFXWBgMyBUry+AcMhOUNWgkKqNnFpOVzC4rpP+u0+yp/g9+p5Aob8gviHUDp+YPtWLh5B2nO8tgvtgHkognY5PzAmRHsw50EMSgJvhTEy24vjinmrzfzSjcsuKNVHs2A17h3A4+dHRepD4vvdFVn/W+PFMafR8AYXlEWkMP0sIok784fHAZ0xaKYPvfmSDHPHN3ias4/MLtJ+mjn3V7VtbHdP79wXQn90mLW382x4npCXmcQPwdoDUYkhpywqkAGB8Vd9TBS71mViT1YgyjhExE6aL9FSJiedYa8GCu3+6b+wBzk7qbC4QVjjoi5fbuTnhouStQwF8RkXB8EzDSbrg7uS8zz1qxxlaEETpn6Z6uWdeAfYhabZ/jOxKRsyi2AFdTXjSNrGDvsx6zhWkXHh4QvWK+l7bvaFbPI3lmf+UmT/A= X-Forefront-PRVS: 0233768B38 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10019020)(4630300001)(6009001)(7916002)(39450400003)(36756003)(5660300001)(6486002)(5003940100001)(50986999)(76176999)(6512007)(2906002)(25786008)(2950100002)(450100001)(1076002)(6666003)(33646002)(6916009)(50466002)(6506006)(2351001)(42186005)(38730400002)(53936002)(305945005)(66066001)(92566002)(81166006)(8676002)(86362001)(53416004)(7736002)(110136004)(189998001)(47776003)(6116002)(3846002)(50226002); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0802MB2469; H:rkaganb.sw.ru; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0802MB2469; 23:yQAoa6d0LGgDmdcMKgtsqPi9Pgl5bkm7V03u8BT?= =?us-ascii?Q?ssIsRpzpMJ9Xx0jr3PdcAfIZc5DmceK2t6p4AqI/SWrQSrFJTabIo0PFnTDj?= =?us-ascii?Q?T+rVnKpd6H9lrsgwiPXgw8ZWGYONb89miVxmTCNxogD4LbU/eH+mFnn2eODT?= =?us-ascii?Q?x+oL+LBpbVt6JE6a5fLS5UbiWmmiaox8CyQdQqCdG15ZoUsjjxJKtLsZtSQ5?= =?us-ascii?Q?Y9lndmjf9kW+sB8DtAVx3ac1NnB2Rn/1Qc6LZLNBo5wKFeNXbItvOZmqWTHu?= =?us-ascii?Q?ap9hrfLhtnQFSX97TQvHFGIPjOAi2THql8pTTJSfTCNZ7ZVRWNcIbuYEDz+N?= =?us-ascii?Q?iT8muJe0xxWaUPNa8JM1NaU15qjKz/JZT8bUImUWtrkX6mBoRopi4K7ip1eo?= =?us-ascii?Q?FYY5agtYBrT3D2p2081vMoI9bna3XsfAocBvyHeY9asT2PX1haAGJiOaQJ8G?= =?us-ascii?Q?F7r1xmpgHQaQfHL/HrJh+jgQdz8/lh2aIMhS/tzVOltCX0CAwwott4C3ww04?= =?us-ascii?Q?kdfTm8sWW+uGCYHPAsIaUUvUFMoVT2PZE5nyx+sRMG07Sjbz5w/w8MH6aThO?= =?us-ascii?Q?YD590iT7xM6tPaGgThPEET2lqKewPIm1W3o4KLRwSEmqmXIpr76w5jNgM6kW?= =?us-ascii?Q?5TwyosCJqDDtz4U2RWjYmkjWuKrCIdViDvFY84wC30SqvtpRRedZQHzzWIeA?= =?us-ascii?Q?o15hQR0ta7OL3I+vPI+SxrkUDZIcNK1Vypwpz/NI3huGYNzP/jNNBvXdBR8j?= =?us-ascii?Q?536BSh8qaE0j/96wYOe2k3VJgCCtfgBKn2cgq9kbWPVLhW59OKi/BCd+Gjig?= =?us-ascii?Q?UkoBzdBMwPkbP0p2VjotHCMajlJOcw4SDiew8s7vbuUFwTJtwfxmDPG7Rpul?= =?us-ascii?Q?yg7+5x0950M3nF1telDkp6B5WOWjUa+G67rZEosbz0YFSV30Jmbne34hpUqK?= =?us-ascii?Q?RoIlSyey/+382ckyVBnBZyo2nbuJ0C8FL1zc9GVhWyw=3D=3D?= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 6:TA8AEgHr8Q9v+8AwwzXaSUFu5irpqVM6wIc7hs4uxEsFDplvs2ouj+OuimZnM9dT0N9PQ+yqrUVFaQf9I7tnvYcwRtmVJiJplmHD9BvqP1KXAYWxCckWCwvyx7RNqSpXyF/hjr8a1pMBSoAlQmJagv+habl2iN2GIWajJrS0Y54QOYBe8D2Rd/qkuz0cUNdcnEBunK2e/qpcgK9EYErJ1BJ6T9gbA4NFXWC4Zbi8k32/o9uMaZ6SbmVNgZUZGgfaxc1TdSPASxU1rj1Xkv5lx27NwVJP7wyJ61rOTLRuJdE0qzF777/dqxg8pKdxpBCD0kPaXxf2XFoNHVtxedVJt1rpYKR6w8EpoODh3eoUPq3o4Ca3xiyZ6hfF23vaV85m0XlR79Ol5HKTbM7S0O3acA==; 5:9oUayvRLlggN2hPj0KhqbAkp3mnyaejb80bzNkbqV5DTQgqR6HA8/ituBFeVWZzRqFGRS8Tzn5DImCpZUji81UfGvghzgRE7gMIhDc97g24QlHCHIY5R8eYCPesKNKRd4sxgiwfIkR+a1hbkUidn0w==; 24:c21vhSkXBL2RjvWML4JbQfI3N07v5x5/t1vtxmTf4HXp0qRw5+lnhv/ZP2NFUrZRTWW5DEllG3F2DjWXRuCX0dd8aoyWCrIfauVnDJ95+ok= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0802MB2469; 7:s6Kq7Iok8uQTGLq4vRelVC3ifY/jkLYx4HdKMiRW33ed0LjEMfYQ2QWpMbjnCP3urR/IUgu6CTmmbyliV0JAfvoPyS+NBx36MZASJWnYEPs14552Uoqdrliz3GvC6lbw0ahe+FtuCN4xmMt8uwnckB4qgzoQAU71RZGF2/8XLAUP0EYTJM5AMYUJAAMWSlemLZqg61nrjF7QMx6iU+3Q4DRGcxGWjKkl/AWpwZWgrflHvXWo62pK034L7U8IQEoEo96VneHSnBZXvvCt5L2ksXN+4Inp2B6n/MxNejwly0o3mcitOwNUYX2o+uUSClNKodM/7HnDBBtQUs+JggygyQ==; 20:xJUkFSUPhNEf9ooS7Bir9xMuMJ2c9cxyk/jt8OKbWbOCp+wESRzmN8Hup8OAxN2LnclQDSQKfrjjSLr/ti4oGzcNY28YSG4R5o8I+OxpgQpRsGaeCVBbUiehN2Oi2f+3u0gczG5oQEzR0wIglb6vMdabbpf/FKMESAr5u2gzUp4= X-OriginatorOrg: virtuozzo.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2017 10:45:49.0064 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0802MB2469 X-Spam-Score: -3.1 (---) Subject: [SeaBIOS] [PATCH 5/9] usb-uas: enumerate luns with REPORT LUNS X-BeenThere: seabios@seabios.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: SeaBIOS mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: quoted-printable Errors-To: seabios-bounces@seabios.org Sender: "SeaBIOS" X-Duff: Orig. Duff, Duff Lite, Duff Dry, Duff Dark, Raspberry Duff, Lady Duff, Red Duff, Tartar Control Duff X-ZohoMail: RSF_4 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Signed-off-by: Roman Kagan --- src/hw/usb-uas.c | 45 +++++++++++++++++++++++++++++---------------- 1 file changed, 29 insertions(+), 16 deletions(-) diff --git a/src/hw/usb-uas.c b/src/hw/usb-uas.c index 10e3845..f00221a 100644 --- a/src/hw/usb-uas.c +++ b/src/hw/usb-uas.c @@ -86,8 +86,9 @@ typedef struct { =20 struct uasdrive_s { struct drive_s drive; + struct usbdevice_s *usbdev; struct usb_pipe *command, *status, *data_in, *data_out; - int lun; + u32 lun; }; =20 int @@ -168,30 +169,41 @@ fail: return DISK_RET_EBADTRACK; } =20 -static int -uas_lun_setup(struct usbdevice_s *usbdev, - struct usb_pipe *command, struct usb_pipe *status, - struct usb_pipe *data_in, struct usb_pipe *data_out, - int lun) +static void +uas_init_lun(struct uasdrive_s *drive, struct usbdevice_s *usbdev, + struct usb_pipe *command, struct usb_pipe *status, + struct usb_pipe *data_in, struct usb_pipe *data_out, + u32 lun) { - // Allocate drive structure. - struct uasdrive_s *drive =3D malloc_fseg(sizeof(*drive)); - if (!drive) { - warn_noalloc(); - return -1; - } memset(drive, 0, sizeof(*drive)); if (usb_32bit_pipe(data_in)) drive->drive.type =3D DTYPE_UAS_32; else drive->drive.type =3D DTYPE_UAS; + drive->usbdev =3D usbdev; drive->command =3D command; drive->status =3D status; drive->data_in =3D data_in; drive->data_out =3D data_out; drive->lun =3D lun; +} + +static int +uas_add_lun(u32 lun, struct drive_s *tmpl_drv) +{ + struct uasdrive_s *tmpl_lun =3D + container_of(tmpl_drv, struct uasdrive_s, drive); + struct uasdrive_s *drive =3D malloc_fseg(sizeof(*drive)); + if (!drive) { + warn_noalloc(); + return -1; + } + uas_init_lun(drive, tmpl_lun->usbdev, + tmpl_lun->command, tmpl_lun->status, + tmpl_lun->data_in, tmpl_lun->data_out, + lun); =20 - int prio =3D bootprio_find_usb(usbdev, lun); + int prio =3D bootprio_find_usb(drive->usbdev, drive->lun); int ret =3D scsi_drive_setup(&drive->drive, "USB UAS", prio); if (ret) { free(drive); @@ -258,9 +270,10 @@ usb_uas_setup(struct usbdevice_s *usbdev) if (!command || !status || !data_in || !data_out) goto fail; =20 - /* TODO: send REPORT LUNS. For now, only LUN 0 is recognized. */ - int ret =3D uas_lun_setup(usbdev, command, status, data_in, data_out, = 0); - if (ret < 0) { + struct uasdrive_s lun0; + uas_init_lun(&lun0, usbdev, command, status, data_in, data_out, 0); + int ret =3D scsi_rep_luns_scan(&lun0.drive, uas_add_lun); + if (ret <=3D 0) { dprintf(1, "Unable to configure UAS drive.\n"); goto fail; } --=20 2.9.3 _______________________________________________ SeaBIOS mailing list SeaBIOS@seabios.org https://www.coreboot.org/mailman/listinfo/seabios