Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp3000968imu; Mon, 19 Nov 2018 09:11:44 -0800 (PST) X-Google-Smtp-Source: AJdET5dc+51GihzBUMaeKF733jUXCftBa65fxViwll10zbKzUNekrcfbwn6bsLaMjs/zaRDIV+el X-Received: by 2002:a63:9306:: with SMTP id b6mr20045899pge.36.1542647504138; Mon, 19 Nov 2018 09:11:44 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542647504; cv=none; d=google.com; s=arc-20160816; b=XoehNIsA3kAF+P2E50xpL+g6HQxP11zanUGRjDvlWKnsAFRyy5MwxXDMhd0kxPI/z7 T8mdMAS9JVeo3Em4rJA0z19pGjGEYoV/7h96docNcLBEQRD0l+wD39ESxjE46EYPkKlx ohdQUNkhI3wdoBBmCLQQGpI8tTwYCdtx0GpGs0aoJefpGkmhDu20VG4mtxx2ylAMqZIV xltWRGQ/HcLiDx7Sk6gkgpaJEpt4SCaRvHHT7PiXeoBWTC833Y1jgLjhF3oDbvlSt2mu SG+yxHsZniq6StWGHKkqkUZubxQ4tbgOYzyBjfAuNFIiUbGqNjBnL9JUktlyVQos8XiS t34A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=kIWI4Fyivd0dbHQpnrE6X31dAXT1YgCobhw0uPoS07k=; b=Mdqul+vCK3J4ONLBf5sLE41he7ADgXuGXxkE54qZprg2yGhOk5S+IheGWF82XyDH+E XNLWDKUAxoMbkelNqgkKjunlFSBHVwOtBn7Fn0hAOu0n8f56Zkv3T+rqySDCVLce6h+d bahiEXLNSGApMXnZN46I1H3uEa+NZzBM/UiukrrELaU8NbKoMtJRag6NebFWNqXS79TO t08ZskqorcfShnScIXzVM5jCP9gNO42v/4wKT+cqIG5DY9Y+7YcQiG1lmm49v2E699eV hZVIDt4MOHzyps+TyVlFpHMxxepGNjtUmf1HYccTDPzykGYY7tv+hmDOVy//xBUAoj4p Ybuw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AMYmem+j; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j184si12256628pfg.160.2018.11.19.09.11.27; Mon, 19 Nov 2018 09:11:44 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=AMYmem+j; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2406903AbeKTD36 (ORCPT + 99 others); Mon, 19 Nov 2018 22:29:58 -0500 Received: from mail.kernel.org ([198.145.29.99]:44794 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406885AbeKTD36 (ORCPT ); Mon, 19 Nov 2018 22:29:58 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 5E0B0214E0; Mon, 19 Nov 2018 17:05:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1542647139; bh=YwyLfElg2XRbPcpXgga1efmn6IM1MU1uN/1Qsq9Q4Ps=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AMYmem+jcfWHr+CulrT5e7jsf/FYv988j2nJnr0ksvOCZ7rMNhT6EXRTvBH4aBL3+ M1aX0Z3WgXGi91sffkgEJ94OHRy2TWXMzhXX52lvPD8/PBh0Eu4wKsnhZ5kTymoccr 1MqEcJQOUjpC53wWEMhAVY0c07ibI2Z+kn6O76hE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Krzysztof Kozlowski , Stephen Boyd Subject: [PATCH 3.18 64/90] clk: s2mps11: Fix matching when built as module and DT node contains compatible Date: Mon, 19 Nov 2018 17:29:46 +0100 Message-Id: <20181119162630.849099345@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181119162620.585061184@linuxfoundation.org> References: <20181119162620.585061184@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Krzysztof Kozlowski commit 8985167ecf57f97061599a155bb9652c84ea4913 upstream. When driver is built as module and DT node contains clocks compatible (e.g. "samsung,s2mps11-clk"), the module will not be autoloaded because module aliases won't match. The modalias from uevent: of:NclocksTCsamsung,s2mps11-clk The modalias from driver: platform:s2mps11-clk The devices are instantiated by parent's MFD. However both Device Tree bindings and parent define the compatible for clocks devices. In case of module matching this DT compatible will be used. The issue will not happen if this is a built-in (no need for module matching) or when clocks DT node does not contain compatible (not correct from bindings perspective but working for driver). Note when backporting to stable kernels: adjust the list of device ID entries. Cc: Fixes: 53c31b3437a6 ("mfd: sec-core: Add of_compatible strings for clock MFD cells") Signed-off-by: Krzysztof Kozlowski Acked-by: Stephen Boyd Signed-off-by: Stephen Boyd Signed-off-by: Greg Kroah-Hartman --- drivers/clk/clk-s2mps11.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) --- a/drivers/clk/clk-s2mps11.c +++ b/drivers/clk/clk-s2mps11.c @@ -285,6 +285,36 @@ static const struct platform_device_id s }; MODULE_DEVICE_TABLE(platform, s2mps11_clk_id); +#ifdef CONFIG_OF +/* + * Device is instantiated through parent MFD device and device matching is done + * through platform_device_id. + * + * However if device's DT node contains proper clock compatible and driver is + * built as a module, then the *module* matching will be done trough DT aliases. + * This requires of_device_id table. In the same time this will not change the + * actual *device* matching so do not add .of_match_table. + */ +static const struct of_device_id s2mps11_dt_match[] = { + { + .compatible = "samsung,s2mps11-clk", + .data = (void *)S2MPS11X, + }, { + .compatible = "samsung,s2mps13-clk", + .data = (void *)S2MPS13X, + }, { + .compatible = "samsung,s2mps14-clk", + .data = (void *)S2MPS14X, + }, { + .compatible = "samsung,s5m8767-clk", + .data = (void *)S5M8767X, + }, { + /* Sentinel */ + }, +}; +MODULE_DEVICE_TABLE(of, s2mps11_dt_match); +#endif + static struct platform_driver s2mps11_clk_driver = { .driver = { .name = "s2mps11-clk",