From patchwork Tue Jan 16 10:31:30 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Naresh Solanki X-Patchwork-Id: 188484 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:42cf:b0:101:a8e8:374 with SMTP id q15csp164566dye; Tue, 16 Jan 2024 02:31:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IEEdNajkylBSu7C8Lc3F06R9o+bb5uNT/+zkNWcd+zqRPyk0c2tWm0jaLcKOP9TlwGpIC12 X-Received: by 2002:a05:620a:562d:b0:783:2b15:c5cb with SMTP id vv13-20020a05620a562d00b007832b15c5cbmr7536616qkn.54.1705401113026; Tue, 16 Jan 2024 02:31:53 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1705401113; cv=none; d=google.com; s=arc-20160816; b=HOMM3n7XUamKKA3wEnzVG/eDq60Om1u99EoclO+7uzLo9k1I7eFs7EI38BZhKax8H/ a8XRS9ahad245J4Z4d306ULp3kPRULoLyE6tQGR9W8rct/ye7SAxJkrAO/Y0+gT8f24m 0dbL7J5HOoLf0dOMgaJ6rEDqgEeqjNORAuY1EX51KR+gmVZ9NKTFhNdATmem70/kIBsr DBmZQ3OAHwpv1oN6ZJbDJGo2zKdS+qU+HyiCO/0Sn8FbJFad/Hsyv0D3eaIoogse/Vwx QB8520S94CGGK5Ldfym+J+BGy1E0C6HvMZcWhRUno7Iuzufo4krEEeB8xH5L7lu4YDlt Ccug== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=spFeeAJ0e5sqWIihRqJqah4ospE3c/uOOUwyO1xZYZI=; fh=XKr2HKicqLPg7QxPfVubnGQhEy23tXK1UhNMgL63WW4=; b=cAxkZQ1Ohk1LE/aSpZD9uTcBZuEeEzlXH6odQhw5nMiDPBQ/qsPrpGjCWSZVdHNv10 JdX2Tr4MehP84BYeBuiT8hE7OoTn4Sn8eMXINmC7A5GCbqyupzENwpLvz8SEmSaqp1B9 9ygt2Tz1McktCMaRwy6kgDWb03rmxWCCaQO+j/Wl1ZULOqXkZfxW3iMw1yQwiRQzGBTV Epv3CbAOHCXv4nOiGrvxdQhCpI5nS1YGBlgmXZ1LAvyMouOmP2CvBKKKYB2AtzDTOVme 8tVkQgywixxYqGTt8jGLysXQLgZlC5YdKpgL+9lknvYjB6Qb27iDWSc/3hZhi8g22SiJ 782Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@9elements.com header.s=google header.b=dzAq6shk; spf=pass (google.com: domain of linux-kernel+bounces-27252-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27252-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id b14-20020a05620a088e00b007830acd06eesi9417299qka.574.2024.01.16.02.31.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 02:31:53 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-27252-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@9elements.com header.s=google header.b=dzAq6shk; spf=pass (google.com: domain of linux-kernel+bounces-27252-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-27252-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=9elements.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id CD7151C22E75 for ; Tue, 16 Jan 2024 10:31:52 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 24CE817C63; Tue, 16 Jan 2024 10:31:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=9elements.com header.i=@9elements.com header.b="dzAq6shk" Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 49B1717594 for ; Tue, 16 Jan 2024 10:31:38 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=9elements.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=9elements.com Received: by mail-wr1-f45.google.com with SMTP id ffacd0b85a97d-337b71a0240so334443f8f.0 for ; Tue, 16 Jan 2024 02:31:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=9elements.com; s=google; t=1705401096; x=1706005896; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=3IIJ9L+Hm/MEkaJDfX4lbcUfmEYPL2ke1pt+l5k7Zhc=; b=dzAq6shkTghxQnr+enP51oZCrRkLqiVlHOT7SHgojuVtbe1UYaMQ96ZFd7N45O4CEH /nSI4LzHiHQ7VzfZtFmWsHm+97Kx/xYeobZnWWg/naxz6P5nEEKeusTTP7QmaighE8Hn Ri2GjF8TqRd09mrssfOuJYwbFY4DRoa7mCNOQtXgEc6WZ1OQZ0R+x2C5n2Obl0qUmy1b EnKEf/Rj/3yUIxxRp/ST24huuMUfKvppG/pdrA5damH+ViG/OnOm/5kiNjGal2iSvA2M JgzP4PBrpRBnhRNCqHe4zr3dHb49B+s/z1Arr8nPvCFDDvvMS4MGub7zVTVUceXCFsym k3og== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705401096; x=1706005896; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=3IIJ9L+Hm/MEkaJDfX4lbcUfmEYPL2ke1pt+l5k7Zhc=; b=g20C5I8XkzglGabGsF06cYQOJbge7+76bZllFnuLH4RaO5dx5XWTM0PshiMRO8B26N /uzC3AjeXy+5GqmJAKOAHiL7/N087+P6j9pD59T3ssk9ZlMF3qa3pNa6jwTSGaVGVIgP DYgShEdrh9nINzHQRBSYijiZLtMAUOHQ1w9EATOBfWbybPnhiMn4BO8o6DZQcuNxNEBn IpfPxmTJbUi4EDkQ2BLgF6Kxne4pYlYGHDOeAeAarKrWroOU+RVNIwdzVvK6/ya3kdOM hoL6ArCD0XQStPxh0Gk+3cPi6AUVia/nwkr7k5ov4ZjIioxrixGxf3Hdww4J9ItArAPG 9o/A== X-Gm-Message-State: AOJu0Yz+uJnXl4DEOUH497hkO+RWxYmHtTTGxImYc0M0xYZhjT8hD2w/ ZftmIThbJ4VZeOZhRmvmur3BK0Ov97ZfhA== X-Received: by 2002:adf:e647:0:b0:336:7f03:4af with SMTP id b7-20020adfe647000000b003367f0304afmr4203110wrn.123.1705401096420; Tue, 16 Jan 2024 02:31:36 -0800 (PST) Received: from stroh80.sec.9e.network (ip-078-094-000-051.um19.pools.vodafone-ip.de. [78.94.0.51]) by smtp.gmail.com with ESMTPSA id e16-20020a5d65d0000000b003365951cef9sm14161527wrw.55.2024.01.16.02.31.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 16 Jan 2024 02:31:35 -0800 (PST) From: Naresh Solanki To: broonie@kernel.org, Liam Girdwood Cc: mazziesaccount@gmail.com, Naresh Solanki , linux-kernel@vger.kernel.org Subject: [PATCH v2] regulator: event: Add netlink command for event mask Date: Tue, 16 Jan 2024 16:01:30 +0530 Message-ID: <20240116103131.413205-1-naresh.solanki@9elements.com> X-Mailer: git-send-email 2.41.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1788242677119743478 X-GMAIL-MSGID: 1788242677119743478 Add netlink command to enable perticular event(s) broadcasting instead of all regulator events. Signed-off-by: Naresh Solanki .. Changes in v2: - Update attribute to REG_GENL_ATTR_SET_EVENT_MASK --- drivers/regulator/event.c | 28 ++++++++++++++++++++++++++++ include/uapi/regulator/regulator.h | 1 + 2 files changed, 29 insertions(+) base-commit: 94cc3087aac4103c33c6da84c092301afd783200 diff --git a/drivers/regulator/event.c b/drivers/regulator/event.c index ea3bd49544e8..181d16f54a21 100644 --- a/drivers/regulator/event.c +++ b/drivers/regulator/event.c @@ -14,17 +14,41 @@ static atomic_t reg_event_seqnum = ATOMIC_INIT(0); +static u64 event_mask; + static const struct genl_multicast_group reg_event_mcgrps[] = { { .name = REG_GENL_MCAST_GROUP_NAME, }, }; +static int reg_genl_cmd_doit(struct sk_buff *skb, struct genl_info *info) +{ + if (info->attrs[REG_GENL_ATTR_SET_EVENT_MASK]) { + event_mask = nla_get_u64(info->attrs[REG_GENL_ATTR_SET_EVENT_MASK]); + pr_info("event_mask -> %llx", event_mask); + return 0; + } + pr_warn("Unknown attribute."); + return -EOPNOTSUPP; +} + +static const struct genl_small_ops reg_genl_ops[] = { + { + .cmd = REG_GENL_CMD_EVENT, + .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, + .doit = reg_genl_cmd_doit, + } +}; + static struct genl_family reg_event_genl_family __ro_after_init = { .module = THIS_MODULE, .name = REG_GENL_FAMILY_NAME, .version = REG_GENL_VERSION, .maxattr = REG_GENL_ATTR_MAX, + .small_ops = reg_genl_ops, + .n_small_ops = ARRAY_SIZE(reg_genl_ops), .mcgrps = reg_event_mcgrps, .n_mcgrps = ARRAY_SIZE(reg_event_mcgrps), + .resv_start_op = __REG_GENL_CMD_MAX, }; int reg_generate_netlink_event(const char *reg_name, u64 event) @@ -35,6 +59,9 @@ int reg_generate_netlink_event(const char *reg_name, u64 event) void *msg_header; int size; + if (!(event_mask & event)) + return 0; + /* allocate memory */ size = nla_total_size(sizeof(struct reg_genl_event)) + nla_total_size(0); @@ -73,6 +100,7 @@ int reg_generate_netlink_event(const char *reg_name, u64 event) static int __init reg_event_genetlink_init(void) { + event_mask = 0; return genl_register_family(®_event_genl_family); } diff --git a/include/uapi/regulator/regulator.h b/include/uapi/regulator/regulator.h index 71bf71a22e7f..2a0af512b61c 100644 --- a/include/uapi/regulator/regulator.h +++ b/include/uapi/regulator/regulator.h @@ -69,6 +69,7 @@ struct reg_genl_event { enum { REG_GENL_ATTR_UNSPEC, REG_GENL_ATTR_EVENT, /* reg event info needed by user space */ + REG_GENL_ATTR_SET_EVENT_MASK, /* reg event mask */ __REG_GENL_ATTR_MAX, };