Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp59216pxj; Wed, 16 Jun 2021 20:15:24 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwtQl3rxMv9jq10P0wYmbBTK6h1Yi3tA1UCAIe87h6Ex8Rw+YT69ABOWoA10E302oHa8cL9 X-Received: by 2002:a6b:490d:: with SMTP id u13mr2007680iob.176.1623899723864; Wed, 16 Jun 2021 20:15:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623899723; cv=none; d=google.com; s=arc-20160816; b=uAD/2dbqbS8SDHicUvyhnfsAMLCLpTxHQC4okHvIyfhL1fImzbNGari/BiidF6eOFl rlNYciOrgtpxkc4lJwc3fk879C0/kkxsKSwzqEknG4C0N0zaSIyYzgk/q4hbSYeWU5jN 0cJVgeIJ4cEyKkhPyy021pecRe0mpuOBkTn6K99VTF5qY0ax0FnjRzmMDY418GUHPVaa 62S7WrjImv0vg/H2HnjSljuoSgDCUTJ4I2cN0ZdaeJFWeiruMl/Uqwb7lSqi8PsNVNtt jIb7OUOMNmOuhuVqDU1V6fNzp3FHC9+JkM969k7czgvKRJBUxgINXt8GohHkndh7YpSP OHQg== 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=cNxugS1gOpbkd57DjDo4gtxr8lmWpbvql6CFdMUNkIs=; b=qKBwgv8sIBa7yg6fQC4CDwHiUsIx6MOqR47HhroGZgguvTkC8C9qqnzj7W9AwxIcdc OA4dOtbq+bmcSeDifQ2HQm2rQOB/3P8l1FpVhS8AAEONJeZyQneNRwYwYwp+LLhQbDxv tkw4G7e8AmSLKLq5x19+8JLgYQAl94Oa8EocI246KcnSFQhvamAmuo8iH+yPqjOWIeh2 nKWQXw0Vp84clbcEOTNzhyVZwdHMGmqeHipejY+eaahUv1sTJh2pDfsjOm5fSOhpYUyL zF/OtBgnoBiFmvGcpVRLnxYErzV+WMzbO7yjW9W7s8s8Z7aGXygLz/3qOXLCHmzRKino 5ixg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=c3lEjjMQ; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j18si4451000jak.97.2021.06.16.20.15.12; Wed, 16 Jun 2021 20:15:23 -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=@gmail.com header.s=20161025 header.b=c3lEjjMQ; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232390AbhFPTTD (ORCPT + 99 others); Wed, 16 Jun 2021 15:19:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232191AbhFPTTD (ORCPT ); Wed, 16 Jun 2021 15:19:03 -0400 Received: from mail-vs1-xe29.google.com (mail-vs1-xe29.google.com [IPv6:2607:f8b0:4864:20::e29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D2326C061574; Wed, 16 Jun 2021 12:16:56 -0700 (PDT) Received: by mail-vs1-xe29.google.com with SMTP id y207so1627508vsy.12; Wed, 16 Jun 2021 12:16:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=cNxugS1gOpbkd57DjDo4gtxr8lmWpbvql6CFdMUNkIs=; b=c3lEjjMQH+lwfQp6GfLhII7DPTHWW8sHTk6VHLQQVtIe6RY0k/MEeLcu3dhb6IrL5t bq4aEjgEAQgnWJ/VajM+/h+yeDxXcdss5lU5mEzmgEwG8m3Ru4vFcPeUdbGr1dmGPUgm rnpgTWxuj/eNQ/zgwGRk+MLkJe6K3d243OLte6b0AEQrOC+258aBBwzJBdGfV6bBC1Xx 2TEtBRMzpB6tfrTdOuLSSfxawJu3lD6dCyf/6OZVeTRpaPhY/+Yx0IXyl8zbD6tWk9ib M5FWxaYm7EAG6Bc6H/hI1SCRUgu8vRAnsZFkB7+wtnXUKfwFn+U+PhEbvQn1Q9Z3I1Oj ewug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=cNxugS1gOpbkd57DjDo4gtxr8lmWpbvql6CFdMUNkIs=; b=lE9XpJ48BTxxfW8EvlroOGd8JmAWUsJsVei+ICHezCsjocbKZ7G2BhbJqS1gpBgfAc UxxcIAaTH799TizvAxw4cg91jYSbB4LSnq220CXP4UoAnYhsQOD5qbH8cmDeDUPV1wNa 0zbXJDvQw09qIIu25CowPIfPi/vY+iwNZ2j8gQvYh6+JOwP/vsBgcdzq0tJgQIiubvEl Bz/kiY2/E/wZs/PRO4/l+noqCQqW+uOThaFx8h0bivFyr9SGmCb5GSafPZayssRWhRKQ OzwhZ8M4kngC2M88i/5mpPIk3Us/JHPTMPxZeFFXJaPeKYfpx8fd5OdiI6ApF4i4ZGZC nWHA== X-Gm-Message-State: AOAM531dSA46M+ObhiDR4u2cW0Jpj5zccbnMevFUvN0GbrgXu5zm4k6o aAkHoNHBawmv7PlwdUlj2N81/7oYo69cNLp8hFNBYmJfqCw= X-Received: by 2002:a67:f48c:: with SMTP id o12mr877406vsn.13.1623871015850; Wed, 16 Jun 2021 12:16:55 -0700 (PDT) MIME-Version: 1.0 References: <20210527084531.18989-1-christian.gmeiner@gmail.com> In-Reply-To: <20210527084531.18989-1-christian.gmeiner@gmail.com> From: Christian Gmeiner Date: Wed, 16 Jun 2021 21:16:44 +0200 Message-ID: Subject: Re: [PATCH] spidev: add platform driver support To: LKML Cc: Mark Brown , linux-spi@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org ping Am Do., 27. Mai 2021 um 10:45 Uhr schrieb Christian Gmeiner : > > This makes it possible to use spidev in combination with the > MFD subsystem. The MFD subsystem add platform_driver devices. > > Signed-off-by: Christian Gmeiner > --- > drivers/spi/spidev.c | 45 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 45 insertions(+) > > diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c > index f56e0e975a46..fb7b483ff70d 100644 > --- a/drivers/spi/spidev.c > +++ b/drivers/spi/spidev.c > @@ -25,6 +25,8 @@ > #include > #include > > +#include > + > #include > > > @@ -827,6 +829,40 @@ static struct spi_driver spidev_spi_driver = { > */ > }; > > +static int spidev_platform_probe(struct platform_device *pdev) > +{ > + struct device *parent = pdev->dev.parent; > + struct spi_device *spi; > + > + if (strcmp(parent->bus->name, "spi")) > + return -ENODEV; > + > + spi = to_spi_device(parent); > + > + /* This only works if no drvdata is stored */ > + if (spi_get_drvdata(spi)) { > + dev_err(&pdev->dev, "drvdata is not NULL\n"); > + return -EOPNOTSUPP; > + } > + > + return spidev_probe(spi); > +} > + > +static int spidev_platform_remove(struct platform_device *pdev) > +{ > + struct spi_device *spi = to_spi_device(pdev->dev.parent); > + > + return spidev_remove(spi); > +} > + > +static struct platform_driver spidev_platfoem_driver = { > + .probe = spidev_platform_probe, > + .remove = spidev_platform_remove, > + .driver = { > + .name = "spidev", > + }, > +}; > + > /*-------------------------------------------------------------------------*/ > > static int __init spidev_init(void) > @@ -853,12 +889,21 @@ static int __init spidev_init(void) > class_destroy(spidev_class); > unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name); > } > + > + status = platform_driver_register(&spidev_platfoem_driver); > + if (status < 0) { > + spi_unregister_driver(&spidev_spi_driver); > + class_destroy(spidev_class); > + unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name); > + } > + > return status; > } > module_init(spidev_init); > > static void __exit spidev_exit(void) > { > + platform_driver_unregister(&spidev_platfoem_driver); > spi_unregister_driver(&spidev_spi_driver); > class_destroy(spidev_class); > unregister_chrdev(SPIDEV_MAJOR, spidev_spi_driver.driver.name); > -- > 2.31.1 > -- greets -- Christian Gmeiner, MSc https://christian-gmeiner.info/privacypolicy