From nobody Tue Jun 23 16:15:38 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 338F9C433EF for ; Wed, 2 Mar 2022 05:15:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235461AbiCBFPp (ORCPT ); Wed, 2 Mar 2022 00:15:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43984 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239672AbiCBFPf (ORCPT ); Wed, 2 Mar 2022 00:15:35 -0500 Received: from esa.hc3962-90.iphmx.com (esa.hc3962-90.iphmx.com [216.71.140.77]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9B8F9B16C7; Tue, 1 Mar 2022 21:14:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quicinc.com; i=@quicinc.com; q=dns/txt; s=qccesdkim1; t=1646198083; x=1646802883; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=yVKpXR3Hmsfh9FABN7IfKMDJXqjqPrUHtl12AsuWFkg=; b=2RDQ/w9sqKlNFTYXdLNDQQJrgBSF90lKam4XT/UV2IOhp5sjRz7Jkxml u8SSukXFXX7Oe93r+UFAuUebdpBmp5Fr8Tbju+VIUgK04E8VG8CiYzJlj gfF94Sz+BEjEltcJPPKpiYZaXyWRiUYav+8ID8IsZr5F8/+utfnAHJcTB M=; Received: from mail-dm6nam08lp2040.outbound.protection.outlook.com (HELO NAM04-DM6-obe.outbound.protection.outlook.com) ([104.47.73.40]) by ob1.hc3962-90.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 02 Mar 2022 05:14:34 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lSjGaQSPdbrPLuY+cR/0Pr+em07ucEv9Y5T5031jq38sqy0j0f9gBasZgQXegk+dF9aa4bVJoAWrwIi8UwJ+mQbB4vDhqaAvanzwjAnMdOCPgHY3kYJSZ9apGuW5neccrJGe5vcQJZ2O1B82zLFToCZxv8XeABp/T9eAL+XUSEAEbb/Zq6k60ITd3TmIE/xGKk7UhKMJShWF+9GEZjl0hvwpZ55eFPXzp2uevRAZjZAccARrNAUF+8IwNeLHt+I1GIuVFKVXaJaVxiTFGUMEKUerwxbf/T9N+3W2evilQmgCG1dUUjERdBEKHWYPxxybFsDDy2UDDsgWpsmb3yA+Zg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=yVKpXR3Hmsfh9FABN7IfKMDJXqjqPrUHtl12AsuWFkg=; b=EJXGnDpE/xGpF+O7Lt7zRCEK3lgwqZ4AKMmZbNVpDYWGgRb0b3rUETrXQIj9SNAupgu+HostuDhHYczvcqNgIW99LQThn+a6KwPl/r1ms5oYbaeOGaacWW4I0bSOsESz1+Qp7pq4VoXmOLfFeBeyCkHcTHupLxcMLqKrKg6Hg955bY1Ui4Pvyb+F8acRhAy+66eoaz0KbZkLfZsEYPv+0mGVavg8E+q/lg0JJDqhIW1LjoY4nbsuetp8efe1c8WaHcaDcDetw+OOL5RMwdpcWz2pB0w3256q460TrwtnUttQ5wAPYyV6kYyEZ5FkW9xuSDO5Gim2NCupFDm7q/uuGw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=quicinc.com; dmarc=pass action=none header.from=quicinc.com; dkim=pass header.d=quicinc.com; arc=none Received: from DM8PR02MB8198.namprd02.prod.outlook.com (2603:10b6:8:4::7) by SN6PR02MB4829.namprd02.prod.outlook.com (2603:10b6:805:98::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5017.22; Wed, 2 Mar 2022 05:14:31 +0000 Received: from DM8PR02MB8198.namprd02.prod.outlook.com ([fe80::a02f:fdb9:de98:d75c]) by DM8PR02MB8198.namprd02.prod.outlook.com ([fe80::a02f:fdb9:de98:d75c%5]) with mapi id 15.20.5017.027; Wed, 2 Mar 2022 05:14:31 +0000 From: "Linyu Yuan (QUIC)" To: "mka@chromium.org" , "Linyu Yuan (QUIC)" CC: "gregkh@linuxfoundation.org" , "Tao Wang (Consultant) (QUIC)" , "balbi@kernel.org" , "devicetree@vger.kernel.org" , "dianders@chromium.org" , "frowand.list@gmail.com" , "hadess@hadess.net" , "krzk@kernel.org" , "linux-kernel@vger.kernel.org" , "linux-usb@vger.kernel.org" , "mathias.nyman@intel.com" , "michal.simek@xilinx.com" , "peter.chen@kernel.org" , "ravisadineni@chromium.org" , "robh+dt@kernel.org" , "rogerq@kernel.org" , "stern@rowland.harvard.edu" , "swboyd@chromium.org" Subject: =?utf-8?B?UkU6IOWbnuWkjTog5Zue5aSNOiBSZTogW1BBVENIIHYyMCAzLzVdIHVzYjog?= =?utf-8?B?bWlzYzogQWRkIG9uYm9hcmRfdXNiX2h1YiBkcml2ZXI=?= Thread-Topic: =?utf-8?B?5Zue5aSNOiDlm57lpI06IFJlOiBbUEFUQ0ggdjIwIDMvNV0gdXNiOiBtaXNj?= =?utf-8?B?OiBBZGQgb25ib2FyZF91c2JfaHViIGRyaXZlcg==?= Thread-Index: Adgm6oYwULNX5ZnjSBCBUX6aFc31LAAADyHwAFiwVAAAH4sXgAAAiy2AAOBepDAAMTAMgAAAYDMQAC3hmwAACcEx4A== Date: Wed, 2 Mar 2022 05:14:30 +0000 Message-ID: References: In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=quicinc.com; x-ms-exchange-messagesentrepresentingtype: 1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 331a41f4-d23a-4732-f62a-08d9fc0b884e x-ms-traffictypediagnostic: SN6PR02MB4829:EE_ x-ld-processed: 98e9ba89-e1a1-4e38-9007-8bdabc25de1d,ExtAddr x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: u58BDC6Mi6iz1Ta8OkabIJF0dbVaRCPXZXiwrOhn9RqocYOlFslfSwubax+mGlT9ueQ+4zGWYYX+hNHvZYWagu0XAupdwLB6wHUOxEoTxBFqeGt4hq1+VayGZi/Ef80mMgkADlxq9TlnuURkO2oe2FcmwyBwjNVylbz266fcG+Lw7FlojERpmsX/TH7uwtQjqa+IJJjsRxKRh7qeXRioafwlq73sfj2bk8qopU1l6X0vsCh5Yi8X8zcyCC856knH4F3mdyLSVR6gl3q/jCn6ugCKq3deXAo9wQpYOyuqYWxO5qmmxC7Dlwq3D9USVL5ZdKvRWEttIet0fR4+FJhZgqLmrCRKd0bdNiJ/eRkBwMsniGI539QNE3/+JMmEKthsMSaf59z3LQzMIpBZu2vZ/1GDzxLYvIl8aBZcnfMyaTiqezUvfYl152GP+lO2HY7qLPhGrDBAzcj5zKlaPAAx81mhA5GDBHgmJh8IXI1rfpaNuZo2VdeX3qvZX8ok0toJZnZ6skJnDe8RKOieSihN10FeRBgohY/p+TRek+qUGbIh4XVPwHQzNjZiRa6np7GDU3vIPhizHOdw+ijCbHg/0TB5fiQNMvB6BhcNg4MQeWw/OVjSOh2pNA5CJGkTRJW9cfoo4RPbYthQ7MJwZSlINavNC/V/QDAPPZH+mIFeSuZhJvi+3/L0S97+mT6NRN2uuZqhEdeH9chx50TfYGYdtg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM8PR02MB8198.namprd02.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(4636009)(366004)(83380400001)(64756008)(66476007)(66556008)(66946007)(66446008)(55016003)(8936002)(38100700002)(224303003)(2906002)(316002)(110136005)(54906003)(26005)(186003)(4326008)(71200400001)(86362001)(76116006)(52536014)(38070700005)(5660300002)(122000001)(9686003)(53546011)(6506007)(508600001)(7696005)(33656002)(7416002);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?emJaRXJDN1R2VlhHaGlsZmI3TWNVQmVTMmh4TUdVUjNReFlqbTZleWR2aUpM?= =?utf-8?B?cGVTOUJSQmFQcXhrSjNVUWY4bjQ4M1dNSnBONnd3WnF3ZTVxc2pEZDhBZVZi?= =?utf-8?B?UThhSzNJclNBb3p4SHNQTFV4MHMxMzRNR2s5c1BHZ3VSaVBsVDNjZmZ3dVh3?= =?utf-8?B?bXhob1dxZzNsYWVGMWdUcENVQU5RTWQ4eEE5QTIyRm9WK3dHbUtLV09hS0Fh?= =?utf-8?B?cWFPVjNnWFY5TjdtVFp2K0pYTWNNWjg0clRHQ2sxMXdkVlhZY2lRNGZ3WXhv?= =?utf-8?B?UnlBbWFvTXY0RGZhcDRaN25QbWQrZjFPU2RTOE1pbEJWam9VMjVUR3JyM0NQ?= =?utf-8?B?TnEwQzNZZDUxekwyMzc5UkJ1Z0pDUlg1MjR4c0FhM3JTVDZFVWYzbUgwc3l5?= =?utf-8?B?WWRDZE1zbkJZdi8vaUV3V2VjdzNzOEJZbkIrV3AwM0ZweFY5bWFhaVlmTWIz?= =?utf-8?B?ZWYzKzhYL0pRSnZoV3c1K3VvTTVPaEtPQXAwTmNTRmJpOHVDYy9RKzhVZG9h?= =?utf-8?B?WTczZStYOTVGNHNxSmduaDRLMUVybUp2Z2NqODBUbUNuVERRVEtRNHJWd1Rt?= =?utf-8?B?MFJzRnJuQm1XcVl3OEY1UlFKTVJQbFVYTEp0SGFqNlovencrOGJzbXZtdzQz?= =?utf-8?B?T0FnN1ZpT0UyUzdUZzV3QUhpR1BvTVNOZ0ovZXpjWGlKL0tabXU0eWtDZGlJ?= =?utf-8?B?djI3M0JZL01WSnp2dnowdlc3VWtrampDMEFGUmVqRi83ZmJrREg3Qmk3QlNW?= =?utf-8?B?M0gxdjM3eEdpeDBUemc1bXlLdDZnbUp2OEx5Z0Jybm5QRDNJKzc1NjZlTjVa?= =?utf-8?B?ZTFkN0psRG5oSW5yVjUyeWRtNU93SUsrMlJOZXhiNC9WRStKaE1jcGRHTXdr?= =?utf-8?B?L3hiVVRYem1yT010LzkvNnF1RGgwZ2lyalFIWjZmTnVLbXJqUXdPV0ppeTBE?= =?utf-8?B?Q1crSFc3aDV0Qk80Q3lKSmE3a3lWZmhtR1gwOVlTTVJFRmFXVHpqUk4yaXpI?= =?utf-8?B?SzdKblgzNUY4TXBQQlBJMUMzK0dSSDlqNURhVXgwYzFDQXNwT1p0QmFLYitX?= =?utf-8?B?dWVUQVA3WmJDaGk0UmZnTTgyNXk1MlNpb05hVUFiUzFqYnFDNndjejkvTXpB?= =?utf-8?B?b1c1MG9Bdjh4SXhKY0txM2lHcFFxSlZrZW5xNmRYeXF4eGxWUjVQdExmb1lB?= =?utf-8?B?d2t2UUNHT29tcWFiRFIyWnhPbXJSTUZzL25oNGhhbTZkQ1pXQTA5b1BtSjM1?= =?utf-8?B?enN4bytvR3l5NzN1MkcxZDdUQkMyK3lNNWJBYXh3WUFydWdSOUNYcUtQc3Rq?= =?utf-8?B?enFVL3ZWNG5vcmRaN3FrZ0k4d1Frd2VjZlJkMGp1Mm9KZ1VoTlhoZThoVDkw?= =?utf-8?B?SjhNUlFmZzJqekFIMzRHQ2p4cndpTzZLem84T25IbnJPUTV0eDh2TjZJaVRj?= =?utf-8?B?b3VmMnJWZld2ekdhTXhWK0ZoZDJTQjNxNmpmcEFqWEMwKzgyaW02TGhyN2tR?= =?utf-8?B?bmh3SzhWNVJYdnNzTmtoVGhreFA5Q3IvMCtGc1Nmd21OaVdsOFZYcXJMakdp?= =?utf-8?B?VVJyTzY5OFRPaGFSRHd6Qk9ZaDJ6cWY4akNBQ2puQVJKUVBkcHZKRXBCWm9P?= =?utf-8?B?aTVkaWhXYmZkUysxT2ZOdThNZzFONVlhWmJuRkgwY2FjWDZYL1RUK2tEMmVK?= =?utf-8?B?amdCdGQ1UFIwc0dqYmsvTGhEcUN1SEI5NEpXZmdSNnpIclA5RmFlbi85d0Iv?= =?utf-8?B?S213R01HU0NjQ0xMaW1EZng1VEU4Q3g4bFdObzZNYUJxejdLTXZYN0ZRWVR0?= =?utf-8?B?di9hS3dwSitZbVpjOTh6Yk8rNDFpNUROUkh1TDFKdHRUb2xBZThYekpyeENj?= =?utf-8?B?YlVGdnEzQ0M0MlJrZzRtTm8zbnN6bHpJN1NhL0l6ekRCTTJNV1QySzNmNWNy?= =?utf-8?B?UWFHcGszdUYwK2d2ZFcyUFVFSmZpekJ5d0VrLzI4cjU4VzFkTUtLRHFSOGhr?= =?utf-8?B?SW1vdVc1WEtwKzRZOE5wc1BoQlZqSG9hQ2RjTktGOXJDNDY3T2IvMFRJcndt?= =?utf-8?B?RDJIbmlYZmZjcGtEYzA2K3VPc1BnY2ZFZnhFUWZ0ZklDM1BURTVJb083eFlk?= =?utf-8?B?UHB6YWVtVUxTUDBEK2VWZVByc2hhM2pVVzl0ZEdXaFlJSFNwK29HR3lVY3pV?= =?utf-8?B?cmpTZ0QrbzEyVDN5ajA0TkhjZjFRbG5LQ1RuVVRPRHpjbjJRWGp3a0t4djk4?= =?utf-8?B?aThBR0t6cmVXWklBbzFtR2RqSHNRPT0=?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: quicinc.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM8PR02MB8198.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 331a41f4-d23a-4732-f62a-08d9fc0b884e X-MS-Exchange-CrossTenant-originalarrivaltime: 02 Mar 2022 05:14:31.0258 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 98e9ba89-e1a1-4e38-9007-8bdabc25de1d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Leb2w7o1m3CoNxXNtJGgDjWYPopE+iYDDPgVTxBE3aW5gvfGjq15Hx+mJDoBnIuNjl53h13cAnVXPq0O+IwM/Hej9zSN6GbYgXB14KXEo2E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR02MB4829 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > From: mka@chromium.org > Sent: Wednesday, March 2, 2022 12:33 AM > To: Linyu Yuan (QUIC) > Cc: gregkh@linuxfoundation.org; Tao Wang (Consultant) (QUIC) > ; balbi@kernel.org; devicetree@vger.kernel.org; > dianders@chromium.org; frowand.list@gmail.com; hadess@hadess.net; > krzk@kernel.org; linux-kernel@vger.kernel.org; linux-usb@vger.kernel.org; > mathias.nyman@intel.com; michal.simek@xilinx.com; > peter.chen@kernel.org; ravisadineni@chromium.org; robh+dt@kernel.org; > rogerq@kernel.org; stern@rowland.harvard.edu; swboyd@chromium.org > Subject: Re: =E5=9B=9E=E5=A4=8D: =E5=9B=9E=E5=A4=8D: Re: [PATCH v20 3/5] = usb: misc: Add > onboard_usb_hub driver >=20 > > In my opinion, if it need update VID/PID table in this driver to suppor= t a > new HUB, > > we can parse VID/PID from device tree and create dynamic VID/PID entry > to id_table of onboard_hub_usbdev_driver. > > > > Hope you can understand what I said. >=20 > Not really. >=20 > I doubt that what you are suggesting would work. The easiest thing > to convince people would probably be to send a patch (based on this > one) with a working implementation of your idea. I show my idea, but not test, diff --git a/drivers/usb/misc/onboard_usb_hub.c b/drivers/usb/misc/onboard_= usb_hub.c index e280409..1811317 100644 --- a/drivers/usb/misc/onboard_usb_hub.c +++ b/drivers/usb/misc/onboard_usb_hub.c @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -173,6 +174,58 @@ static void onboard_hub_remove_usbdev(struct onboard_h= ub *hub, const struct usb_ mutex_unlock(&hub->lock); } =20 +#define MAX_HUB_NUM 4 +#define MAX_TABLE_SIZE (MAX_HUB_NUM * 2) +static struct usb_device_id onboard_hub_id_table[MAX_TABLE_SIZE + 1]; +MODULE_DEVICE_TABLE(usb, onboard_hub_id_table); + +static void onboard_hub_add_idtable(__u16 vid, __u16 pid) +{ + int i; + + for (i =3D 0; i < MAX_TABLE_SIZE; i++) { + if (!onboard_hub_id_table[i].idVendor) + break; + + if (onboard_hub_id_table[i].idVendor =3D=3D vid && + onboard_hub_id_table[i].idProduct =3D=3D pid) + return; + } + if (i =3D=3D MAX_TABLE_SIZE) + return; + + onboard_hub_id_table[i].idVendor =3D vid; + onboard_hub_id_table[i].idProduct =3D pid; + onboard_hub_id_table[i].match_flags =3D USB_DEVICE_ID_MATCH_DEVICE; +} + +static int onboard_hub_parse_idtable(struct device_node *np) +{ + int size =3D of_property_count_elems_of_size(np, "vidpid", sizeof(int)); + int ret, i; + u16 *ids; + + if (!size || size % 2) + return -EINVAL; + + ids =3D kzalloc(sizeof(u16) * size, GFP_KERNEL); + if (!ids) + return -ENOMEM; + + ret =3D of_property_read_u16_array(np, "vidpid", ids, size); + if (ret) { + kfree(ids); + return -EINVAL; + } + + for (i =3D 0; i < size; i+=3D2) + onboard_hub_add_idtable(ids[i], ids[i+1]); + + kfree(ids); + + return 0; +} + static ssize_t always_powered_in_suspend_show(struct device *dev, struct d= evice_attribute *attr, char *buf) { @@ -210,6 +263,10 @@ static int onboard_hub_probe(struct platform_device *p= dev) struct onboard_hub *hub; int err; =20 + err =3D onboard_hub_parse_idtable(dev->of_node); + if (err) + return err; + hub =3D devm_kzalloc(dev, sizeof(*hub), GFP_KERNEL); if (!hub) return -ENOMEM; @@ -378,15 +435,6 @@ static void onboard_hub_usbdev_disconnect(struct usb_d= evice *udev) onboard_hub_remove_usbdev(hub, udev); } =20 -static const struct usb_device_id onboard_hub_id_table[] =3D { - { USB_DEVICE(VENDOR_ID_REALTEK, 0x0411) }, /* RTS5411 USB 3.1 */ - { USB_DEVICE(VENDOR_ID_REALTEK, 0x5411) }, /* RTS5411 USB 2.1 */ - { USB_DEVICE(VENDOR_ID_REALTEK, 0x0414) }, /* RTS5414 USB 3.2 */ - { USB_DEVICE(VENDOR_ID_REALTEK, 0x5414) }, /* RTS5414 USB 2.1 */ - {} -}; -MODULE_DEVICE_TABLE(usb, onboard_hub_id_table); - static struct usb_device_driver onboard_hub_usbdev_driver =3D { .name =3D "onboard-usb-hub", .probe =3D onboard_hub_usbdev_probe,