Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp600653pxv; Thu, 22 Jul 2021 07:54:36 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaVjachhcPdiO0S0DfpqXtxhptfsoEFo3fV4YOZ+R12e8k4MNYb8DTUhuGfqC8pb9l5Uwo X-Received: by 2002:a05:6638:1383:: with SMTP id w3mr36532jad.32.1626965676328; Thu, 22 Jul 2021 07:54:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626965676; cv=none; d=google.com; s=arc-20160816; b=r7cCxurUSjBmbwmmTwDV5LlIX1SiRVAWPehbJcfHEs2hom3/1nLOV1ph9ODLD15dvg cz77X6GpCj23mjjG+oHEDYUPYUQl1UO1/1XefTMYU1nsI6G/Ef7ZCDDKKt+Xf0HsNhcB s20qnpJMPvW6kebuvtGwZMI5sO7KULiX19Lwh4G2Ct+5fPyDJWQ8Tbc1qnuRPoqhidfJ FfPqBEItlaiyHzOkYYFgh/4x3HN5IBq1+/PetfAMeJALJdLn6RM9Bhv6oTzkW0Il/xXN q0Kaa0ZcROqmH/TkNn1AEuduHjcj/Mrvy3weueVf2RZYjqTdkEWPfn7G7imsLPqjOySd J4NQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=uTg1+VG8hYwPO55noULCUcJPDU1b+NJlcj7s+SYDnEA=; b=e/Z4DuBEJ6/fuufIPtzgZh3J3bE5B4eqCrYvSknBPEBHCNjqEsqUSOH1rp+bThRIhs wU2MS+VEOj1kxNtU8/JYhlQw4QJrRaHHEglrCVTEIBA7XOZmJTzTFF88HKvn+ajbX7se KhyzsH9O5rM3OHhvDUozbco7Lbtom84R35KGhKfOlt+vkxjRuwNRxxAMACGbWUJehcBo RaSXU0AEHwdt9Cs3vGZIAofzHnCxugNHzeJ/ettFex+M2twvXJ2V418i3b++9LswVk2H Oh3DA01abQOSUcGHHzru7QOkeMMb/2yWArA62IhL+5ZqUOaD+RjA9j+gUCr4S1fhBfov AU7w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=XUezO4uA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t8si25771850ilu.144.2021.07.22.07.54.23; Thu, 22 Jul 2021 07:54:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=XUezO4uA; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232470AbhGVOLv (ORCPT + 99 others); Thu, 22 Jul 2021 10:11:51 -0400 Received: from mail.kernel.org ([198.145.29.99]:51956 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232403AbhGVOLu (ORCPT ); Thu, 22 Jul 2021 10:11:50 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 87DC661287; Thu, 22 Jul 2021 14:52:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1626965545; bh=Z200EX+5HDJ6PjQgqSVr7z0wv8JhNwb0KyOjUzzQn8E=; h=References:In-Reply-To:From:Date:Subject:To:Cc:From; b=XUezO4uAl16RGId9rEQC8Fi0hkMsAxUIUa2TP6UMMVVw6tjA3txe4PDeyJNXMDM22 4jpDuAZle5+8Uug6u0nrpjqvTEWSe2YjkKhErgVWV7h4kFgCLdP5bkXKwScIpTRJWo y9AAON/q4DipNmkB8F10UxbAhn6dV6kXqHNOazwKLZ4xUjqQ3bVe/wwvwdzkjnwcGi NLdV8iEJaV6vKpWQxcrp5YvCTzIVsv+ziU9HGJEyxE6sHclDeTuQZ9EJmTjPpAmE+T Br7h2IY1LRYryDejXf2CaskgupfLaWHeDr60b96ytg/wet+fusBL8oJOLliwBgDn+7 yGI/X+7ASJt1Q== Received: by mail-wr1-f48.google.com with SMTP id k4so6253274wrc.8; Thu, 22 Jul 2021 07:52:25 -0700 (PDT) X-Gm-Message-State: AOAM5314/fdiunylhbMG/4QvE8p46kL/spKZ+c3InD5WeCryfkBW6OTR cHMOxRKnEK/VVWrNRSsk/FVNWeJ82ZHmICpPVaE= X-Received: by 2002:a5d:65cb:: with SMTP id e11mr330808wrw.105.1626965544187; Thu, 22 Jul 2021 07:52:24 -0700 (PDT) MIME-Version: 1.0 References: <026ad5f274d64d46590623f9f3a04b8abfbe62d7.1626947324.git.viresh.kumar@linaro.org> In-Reply-To: <026ad5f274d64d46590623f9f3a04b8abfbe62d7.1626947324.git.viresh.kumar@linaro.org> From: Arnd Bergmann Date: Thu, 22 Jul 2021 16:52:07 +0200 X-Gmail-Original-Message-ID: Message-ID: Subject: Re: [PATCH V2 5/5] virtio: Bind virtio device to device-tree node To: Viresh Kumar Cc: Jason Wang , "Michael S. Tsirkin" , Rob Herring , Jean-Philippe Brucker , Vincent Guittot , Bill Mills , =?UTF-8?B?QWxleCBCZW5uw6ll?= , "Enrico Weigelt, metux IT consult" , Jie Deng , DTML , Linux Kernel Mailing List , "open list:DRM DRIVER FOR QEMU'S CIRRUS DEVICE" Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Jul 22, 2021 at 11:56 AM Viresh Kumar wrote: > > +/* Virtio device compatibles and IDs */ > +static const struct of_device_id of_virtio_devices[] = { > + { .compatible = "virtio,22", .data = (void *)VIRTIO_ID_I2C_ADAPTER }, > + { .compatible = "virtio,29", .data = (void *)VIRTIO_ID_GPIO }, > + { } > +}; > + > +static int virtio_device_of_init(struct virtio_device *dev) > +{ > + struct device_node *np, *pnode = dev->dev.parent->of_node; > + const struct of_device_id *match; > + int ret, count; > + > + if (!pnode) > + return 0; > + > + count = of_get_available_child_count(pnode); > + if (!count) > + return 0; > + > + /* There can be only 1 child node */ > + if (WARN_ON(count > 1)) > + return -EINVAL; > + > + np = of_get_next_available_child(pnode, NULL); > + if (WARN_ON(!np)) > + return -ENODEV; > + > + match = of_match_node(of_virtio_devices, np); > + if (!match) { > + ret = -ENODEV; > + goto out; > + } I think it would be better not to have to enumerate the of_virtio_devices[] strings, but instead use of_device_is_compatible() to match against "virtio,%d". Otherwise we end up modifying this function for every virtio driver that needs a binding. Arnd