From patchwork Mon Aug 14 04:29:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135122 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2528403vqi; Sun, 13 Aug 2023 22:12:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEX9dpl1isoRcT3ZMOMRVYWlBaj3hiIxfhez9N2xVIF08SNqzv9MPrKyz9rhR3OmKCwDavL X-Received: by 2002:a05:6a20:748d:b0:13e:3a7a:2d70 with SMTP id p13-20020a056a20748d00b0013e3a7a2d70mr13069060pzd.0.1691989939871; Sun, 13 Aug 2023 22:12:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691989939; cv=none; d=google.com; s=arc-20160816; b=LthP93wc1cQXPLqbpkz/eXpVLFxVc5+hqPmeFLF5q49WldEn8keukk55JzAUyIOGXb b2O6aq/Zkmz4RIY4Zd0VLUHY1iA4c9nylS4xTNH1rMTvI4ABzWLW5PgultOcPsONb89c EH5iAXauY76If/AemWiH20heVtpBxDJnNqOQsxJeycwvxR85/tr7E8M8MUvW69MDbXCh 2l2uu/O2eb/rYtHKTNU2aCDXJ0mzQ4zkyvXsiINCWqg0Msi7vmWBjxMtaih5IRySysWp VEyouzk8mPxmwXG0ArwuDSbyxChKMTdmxUGibNCxk2KmZaQic3vbJ7okUYx3UZE+io5s uqjg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=HYvNk0F6tYkddjPM1gjr6zJLDh3fOJZ+v63cRgPJjfA=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=K5bXn6TCLGxO0u9Q6FtLfpdbbuP4OJDFjjGfJ75eyZVHTjQnwm/M02TQ6BiwK0IZbP oo0mTWrrdK4dBFUlqKGLo5/hQBAh9b9fZT53Me3JS19Z+5rJeoL9H51i7kqpAnTosH3Q J7YJc13w8u7l1oHFts9djhoGnhef32Kv30cDXJTHrIua9hT6Va0XAfja2SVPrVWNtnX8 ihPQDAzxkYPIQlVUjXqZjdehP1DYxVPbqfyi8IBU0p0lMZ/OJH3XugxDv2kKGT3OGmHn uExdwgjNTJMV2tA7GYtPIxoDRo16wbQClyYOT8F6A13AR+Rs4aFXKfcZ1tE//1fEgF4z aXFw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=H7zzWBlW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id y189-20020a6364c6000000b005644c5717c1si7835257pgb.252.2023.08.13.22.11.56; Sun, 13 Aug 2023 22:12:19 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=H7zzWBlW; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233081AbjHNEfG (ORCPT + 99 others); Mon, 14 Aug 2023 00:35:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38170 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233082AbjHNEeg (ORCPT ); Mon, 14 Aug 2023 00:34:36 -0400 Received: from mail-pl1-x633.google.com (mail-pl1-x633.google.com [IPv6:2607:f8b0:4864:20::633]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EC7A7E6F for ; Sun, 13 Aug 2023 21:34:34 -0700 (PDT) Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-1bdb801c667so21754295ad.1 for ; Sun, 13 Aug 2023 21:34:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987674; x=1692592474; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=HYvNk0F6tYkddjPM1gjr6zJLDh3fOJZ+v63cRgPJjfA=; b=H7zzWBlWpbodL7W+6k8K70XBLbZ/RNtZxtCDAwQhN7RZrum1aHa1NFieQVQkx+VpYk +Jh6j44slWPePa7rpDNelCk+yrvPWugPSBBVUJjNvy7QJdc49CdUcPqp5+iuQwlVE8bT W6MhOBUBugTeZ7OGaaUeVZkLK7jvEkHPB3TT0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987674; x=1692592474; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=HYvNk0F6tYkddjPM1gjr6zJLDh3fOJZ+v63cRgPJjfA=; b=JxMW0muSz8w8DxY7DKyNBfTxtWViPnsU43pPaMkdRf2DZM8d9ihvjCipeZgYp7dXki fbat7P1bdz98rK4BsgrJNd/OMzipkdts4FHOD4Pw4kRZF8o1ulASD+qg+7CR0azKkFLW 3AgJY7hJihruWLNdux4dz9TosNEjKnMsF4eU/XedOwuFUG3CyqEE4SLwBWsO77pL7CZY tMPUsCnTp7819f5aGCiPhkHpy4boH67Knu79ofnqAs2SPQKf752Mtu1piXftD20bMmPn BmTBd/PJ3isfaXA2jyg5riBWVzfJsIDcJ6xF/IHpEsGEKflvSwcEF283vAa9pBBGSlAc 5OJg== X-Gm-Message-State: AOJu0Ywy1p+kjVwsMZ0ntYEMc9iUn/2grVAo24g8ts99Gzdh9VlcdzRn QoB0NMOeYYmsyY+vq6FwGB/Hsg== X-Received: by 2002:a17:903:2d0:b0:1b8:a697:3719 with SMTP id s16-20020a17090302d000b001b8a6973719mr10622994plk.25.1691987674497; Sun, 13 Aug 2023 21:34:34 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.34.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:34:34 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 1/9] media: cros-ec-cec: Use cros_ec_cmd to send host commands Date: Mon, 14 Aug 2023 14:29:10 +1000 Message-ID: <20230814043140.1108917-2-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774180043394729303 X-GMAIL-MSGID: 1774180043394729303 Use the cros_ec_cmd helper function to reduce the amount of boilerplate when sending host commands. Signed-off-by: Reka Norman --- .../media/cec/platform/cros-ec/cros-ec-cec.c | 44 +++++++------------ 1 file changed, 16 insertions(+), 28 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index c17faf002877..8dd95fb38546 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -95,18 +95,14 @@ static int cros_ec_cec_set_log_addr(struct cec_adapter *adap, u8 logical_addr) { struct cros_ec_cec *cros_ec_cec = adap->priv; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; - struct { - struct cros_ec_command msg; - struct ec_params_cec_set data; - } __packed msg = {}; + struct ec_params_cec_set params = { + .cmd = CEC_CMD_LOGICAL_ADDRESS, + .val = logical_addr, + }; int ret; - msg.msg.command = EC_CMD_CEC_SET; - msg.msg.outsize = sizeof(msg.data); - msg.data.cmd = CEC_CMD_LOGICAL_ADDRESS; - msg.data.val = logical_addr; - - ret = cros_ec_cmd_xfer_status(cros_ec, &msg.msg); + ret = cros_ec_cmd(cros_ec, 0, EC_CMD_CEC_SET, ¶ms, sizeof(params), + NULL, 0); if (ret < 0) { dev_err(cros_ec->dev, "error setting CEC logical address on EC: %d\n", ret); @@ -121,17 +117,13 @@ static int cros_ec_cec_transmit(struct cec_adapter *adap, u8 attempts, { struct cros_ec_cec *cros_ec_cec = adap->priv; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; - struct { - struct cros_ec_command msg; - struct ec_params_cec_write data; - } __packed msg = {}; + struct ec_params_cec_write params; int ret; - msg.msg.command = EC_CMD_CEC_WRITE_MSG; - msg.msg.outsize = cec_msg->len; - memcpy(msg.data.msg, cec_msg->msg, cec_msg->len); + memcpy(params.msg, cec_msg->msg, cec_msg->len); - ret = cros_ec_cmd_xfer_status(cros_ec, &msg.msg); + ret = cros_ec_cmd(cros_ec, 0, EC_CMD_CEC_WRITE_MSG, ¶ms, + cec_msg->len, NULL, 0); if (ret < 0) { dev_err(cros_ec->dev, "error writing CEC msg on EC: %d\n", ret); @@ -145,18 +137,14 @@ static int cros_ec_cec_adap_enable(struct cec_adapter *adap, bool enable) { struct cros_ec_cec *cros_ec_cec = adap->priv; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; - struct { - struct cros_ec_command msg; - struct ec_params_cec_set data; - } __packed msg = {}; + struct ec_params_cec_set params = { + .cmd = CEC_CMD_ENABLE, + .val = enable, + }; int ret; - msg.msg.command = EC_CMD_CEC_SET; - msg.msg.outsize = sizeof(msg.data); - msg.data.cmd = CEC_CMD_ENABLE; - msg.data.val = enable; - - ret = cros_ec_cmd_xfer_status(cros_ec, &msg.msg); + ret = cros_ec_cmd(cros_ec, 0, EC_CMD_CEC_SET, ¶ms, sizeof(params), + NULL, 0); if (ret < 0) { dev_err(cros_ec->dev, "error %sabling CEC on EC: %d\n", From patchwork Mon Aug 14 04:29:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135124 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2529317vqi; Sun, 13 Aug 2023 22:15:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEstHXl5oLgT/oANAhgGq6hbhRX+TLjXRPB6uSSCxDaWz+kDdv2dPtXkDEVRdrX8HvKC/SN X-Received: by 2002:a05:6358:9312:b0:135:ae78:56c9 with SMTP id x18-20020a056358931200b00135ae7856c9mr5301989rwa.6.1691990124829; Sun, 13 Aug 2023 22:15:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691990124; cv=none; d=google.com; s=arc-20160816; b=fqFuJxqn9dLUelm3CWADh/k8zuqDLBvwLXoJt2ucYPF67/q0/MeDTsOmNeoHtoJWKn S+Q+vCZlH7vXM30u57VXh4qCgaQS+BUUuuUoPLPE+NP3yRtWsYmH+Ba8YKx/sBLTgVUv RlISGvj7F5ljyFgk424wOirgVw1keYof2oUm//k/AcG1s0iZ5MmyJjEScN5FzgzewVhs 63FeZrgHpIRxopHaqOQtYe1ZANucM5qq5+MR032fqnR5gYqf4uMtLyd+hIrbA/yQFNJO EHipVcpR/+cFStGNa+Sex4dLV/IfuxLOU9xDB6Gq5fjRbVqVMDU4tVXZymbgHBTL1/26 DV4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Oecyog8PuozL6O2E1VryVxhyj5E7Pm9UrjY6AD7CHgI=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=wRMF7l7iBh6wtBei4tnQJRXNLqA3oQCGr7ylp51qGe3945yHtF9Vvqyu+ku21vqJ0Y ljMYcLxitcMZb8SqPDjc6Nf7pUEc3Eh8bp0Horbv5F+NRkE6knwD8GgrGHUf9TZKrmnL jUzNZ1k9LwT2hDhVS3+wyZX9YvAPr70XHNPxND4UsFNjBZXkUsYpq56MyttFVDsQ2u4y c6Ugrw/BCBzOkSvJwh3lRWMHzpR8gz8CMjlOJS6NVRI4/3efdu8TP7ABbjU7ZdCeE8EF LzcW5F5wpGlL8rQnRvWZjveuoH3j4Ks1tHsvKeaiJqST5KbgRslD0SfN5FDnXOpTidW5 0a7A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=eisGKLb4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f2-20020a635542000000b0055b0dcca8bbsi7576230pgm.21.2023.08.13.22.15.12; Sun, 13 Aug 2023 22:15:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=eisGKLb4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233093AbjHNEfj (ORCPT + 99 others); Mon, 14 Aug 2023 00:35:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52202 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233094AbjHNEfP (ORCPT ); Mon, 14 Aug 2023 00:35:15 -0400 Received: from mail-pg1-x52b.google.com (mail-pg1-x52b.google.com [IPv6:2607:f8b0:4864:20::52b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 24112E6F for ; Sun, 13 Aug 2023 21:35:14 -0700 (PDT) Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-564b326185bso2149341a12.2 for ; Sun, 13 Aug 2023 21:35:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987713; x=1692592513; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Oecyog8PuozL6O2E1VryVxhyj5E7Pm9UrjY6AD7CHgI=; b=eisGKLb4oJTRWBSHq0Z6OFyc4t/yn/pXv2SLtHXG+ge/BAhRx4HvMKzUr12LXywHWS wOs5BAUYZC0WzL0pCo5egtIcZ5b2VRfPNKQXeXOcTsE/g81CfhHVT8A7tXsdHVcdR8x1 phk31LivqNP9ghBhUlEuJ3WtDHHxV+6NIWlyw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987713; x=1692592513; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Oecyog8PuozL6O2E1VryVxhyj5E7Pm9UrjY6AD7CHgI=; b=RSAk3x413cIxNmOgs7XtwpkMKnLFEqgEDnl9RtRZdBgE1mGEgHbzjUDtoIaCQTs81f Qcf1JT2whbWAr0MM8N+tetbKmRUp9Fj7kzGIBt22L+i6soSm5u70WVgHxFhx6QUO9R96 rUf/kfHxGEbCfokc/+zMkGmkPwQYTVQ374Ghjysj3Shsn8dBYWEbZZCE7hJvo4v3i6DJ 0PzgFSG3RflssRmNoShfVZUrOo9KIYk+u1P6do28m/MyXH7KCFGqGyTMyDMYdO2IpP/g Pe2TsHSFVC3czzCTXPTpDNLk1FRFJJicIOH6JtIAMMNw1IWsqZJ5k0SVpRwOrtCRT4V1 MEPg== X-Gm-Message-State: AOJu0Yy/u9iFBHLXPUPOwM8RjJKTh+kPy5ijKyBKg8BOyjxgBD9ynVbP jcPdm0ioSTC1Hqyd6NOaFUnVBw== X-Received: by 2002:a17:902:ab0d:b0:1b8:5b70:2988 with SMTP id ik13-20020a170902ab0d00b001b85b702988mr6283028plb.30.1691987713546; Sun, 13 Aug 2023 21:35:13 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.35.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:35:13 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 2/9] media: cros-ec-cec: Manage an array of ports Date: Mon, 14 Aug 2023 14:29:11 +1000 Message-ID: <20230814043140.1108917-3-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774180237079746296 X-GMAIL-MSGID: 1774180237079746296 To support multiple CEC ports, change cros_ec_cec to contain an array of ports, each with their own CEC adapter, etc. For now, only create a single port and use that port everywhere, so there is no functional change. Support for multiple ports will be added in the following patches. Signed-off-by: Reka Norman --- .../media/cec/platform/cros-ec/cros-ec-cec.c | 147 +++++++++++++----- .../linux/platform_data/cros_ec_commands.h | 2 + 2 files changed, 110 insertions(+), 39 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index 8dd95fb38546..d76a25ae0cf1 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -21,21 +21,40 @@ #define DRV_NAME "cros-ec-cec" +/* Only one port is supported for now */ +#define CEC_NUM_PORTS 1 +#define CEC_PORT 0 + /** - * struct cros_ec_cec - Driver data for EC CEC + * struct cros_ec_cec_port - Driver data for a single EC CEC port * - * @cros_ec: Pointer to EC device - * @notifier: Notifier info for responding to EC events + * @port_num: port number * @adap: CEC adapter * @notify: CEC notifier pointer * @rx_msg: storage for a received message + * @cros_ec_cec: pointer to the parent struct */ -struct cros_ec_cec { - struct cros_ec_device *cros_ec; - struct notifier_block notifier; +struct cros_ec_cec_port { + int port_num; struct cec_adapter *adap; struct cec_notifier *notify; struct cec_msg rx_msg; + struct cros_ec_cec *cros_ec_cec; +}; + +/** + * struct cros_ec_cec - Driver data for EC CEC + * + * @cros_ec: Pointer to EC device + * @notifier: Notifier info for responding to EC events + * @num_ports: Number of CEC ports + * @ports: Array of ports + */ +struct cros_ec_cec { + struct cros_ec_device *cros_ec; + struct notifier_block notifier; + int num_ports; + struct cros_ec_cec_port *ports[EC_CEC_MAX_PORTS]; }; static void handle_cec_message(struct cros_ec_cec *cros_ec_cec) @@ -43,27 +62,28 @@ static void handle_cec_message(struct cros_ec_cec *cros_ec_cec) struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; uint8_t *cec_message = cros_ec->event_data.data.cec_message; unsigned int len = cros_ec->event_size; + struct cros_ec_cec_port *port = cros_ec_cec->ports[CEC_PORT]; if (len > CEC_MAX_MSG_SIZE) len = CEC_MAX_MSG_SIZE; - cros_ec_cec->rx_msg.len = len; - memcpy(cros_ec_cec->rx_msg.msg, cec_message, len); + port->rx_msg.len = len; + memcpy(port->rx_msg.msg, cec_message, len); - cec_received_msg(cros_ec_cec->adap, &cros_ec_cec->rx_msg); + cec_received_msg(port->adap, &port->rx_msg); } static void handle_cec_event(struct cros_ec_cec *cros_ec_cec) { struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; uint32_t events = cros_ec->event_data.data.cec_events; + struct cros_ec_cec_port *port = cros_ec_cec->ports[CEC_PORT]; if (events & EC_MKBP_CEC_SEND_OK) - cec_transmit_attempt_done(cros_ec_cec->adap, - CEC_TX_STATUS_OK); + cec_transmit_attempt_done(port->adap, CEC_TX_STATUS_OK); /* FW takes care of all retries, tell core to avoid more retries */ if (events & EC_MKBP_CEC_SEND_FAILED) - cec_transmit_attempt_done(cros_ec_cec->adap, + cec_transmit_attempt_done(port->adap, CEC_TX_STATUS_MAX_RETRIES | CEC_TX_STATUS_NACK); } @@ -93,7 +113,8 @@ static int cros_ec_cec_event(struct notifier_block *nb, static int cros_ec_cec_set_log_addr(struct cec_adapter *adap, u8 logical_addr) { - struct cros_ec_cec *cros_ec_cec = adap->priv; + struct cros_ec_cec_port *port = adap->priv; + struct cros_ec_cec *cros_ec_cec = port->cros_ec_cec; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; struct ec_params_cec_set params = { .cmd = CEC_CMD_LOGICAL_ADDRESS, @@ -115,7 +136,8 @@ static int cros_ec_cec_set_log_addr(struct cec_adapter *adap, u8 logical_addr) static int cros_ec_cec_transmit(struct cec_adapter *adap, u8 attempts, u32 signal_free_time, struct cec_msg *cec_msg) { - struct cros_ec_cec *cros_ec_cec = adap->priv; + struct cros_ec_cec_port *port = adap->priv; + struct cros_ec_cec *cros_ec_cec = port->cros_ec_cec; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; struct ec_params_cec_write params; int ret; @@ -135,7 +157,8 @@ static int cros_ec_cec_transmit(struct cec_adapter *adap, u8 attempts, static int cros_ec_cec_adap_enable(struct cec_adapter *adap, bool enable) { - struct cros_ec_cec *cros_ec_cec = adap->priv; + struct cros_ec_cec_port *port = adap->priv; + struct cros_ec_cec *cros_ec_cec = port->cros_ec_cec; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; struct ec_params_cec_set params = { .cmd = CEC_CMD_ENABLE, @@ -260,11 +283,55 @@ static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, #endif +static int cros_ec_cec_init_port(struct device *dev, + struct cros_ec_cec *cros_ec_cec, + int port_num, struct device *hdmi_dev, + const char *conn) +{ + struct cros_ec_cec_port *port; + int ret; + + port = devm_kzalloc(dev, sizeof(*port), GFP_KERNEL); + if (!port) + return -ENOMEM; + + port->cros_ec_cec = cros_ec_cec; + port->port_num = port_num; + + port->adap = cec_allocate_adapter(&cros_ec_cec_ops, port, DRV_NAME, + CEC_CAP_DEFAULTS | + CEC_CAP_CONNECTOR_INFO, 1); + if (IS_ERR(port->adap)) + return PTR_ERR(port->adap); + + port->notify = cec_notifier_cec_adap_register(hdmi_dev, conn, + port->adap); + if (!port->notify) { + ret = -ENOMEM; + goto out_probe_adapter; + } + + ret = cec_register_adapter(port->adap, dev); + if (ret < 0) + goto out_probe_notify; + + cros_ec_cec->ports[port_num] = port; + + return 0; + +out_probe_notify: + cec_notifier_cec_adap_unregister(port->notify, port->adap); +out_probe_adapter: + cec_delete_adapter(port->adap); + return ret; +} + static int cros_ec_cec_probe(struct platform_device *pdev) { struct cros_ec_dev *ec_dev = dev_get_drvdata(pdev->dev.parent); struct cros_ec_device *cros_ec = ec_dev->ec_dev; struct cros_ec_cec *cros_ec_cec; + struct cros_ec_cec_port *port; struct device *hdmi_dev; const char *conn = NULL; int ret; @@ -283,18 +350,13 @@ static int cros_ec_cec_probe(struct platform_device *pdev) device_init_wakeup(&pdev->dev, 1); - cros_ec_cec->adap = cec_allocate_adapter(&cros_ec_cec_ops, cros_ec_cec, - DRV_NAME, - CEC_CAP_DEFAULTS | - CEC_CAP_CONNECTOR_INFO, 1); - if (IS_ERR(cros_ec_cec->adap)) - return PTR_ERR(cros_ec_cec->adap); + cros_ec_cec->num_ports = CEC_NUM_PORTS; - cros_ec_cec->notify = cec_notifier_cec_adap_register(hdmi_dev, conn, - cros_ec_cec->adap); - if (!cros_ec_cec->notify) { - ret = -ENOMEM; - goto out_probe_adapter; + for (int i = 0; i < cros_ec_cec->num_ports; i++) { + ret = cros_ec_cec_init_port(&pdev->dev, cros_ec_cec, i, + hdmi_dev, conn); + if (ret) + goto unregister_ports; } /* Get CEC events from the EC. */ @@ -303,20 +365,24 @@ static int cros_ec_cec_probe(struct platform_device *pdev) &cros_ec_cec->notifier); if (ret) { dev_err(&pdev->dev, "failed to register notifier\n"); - goto out_probe_notify; + goto unregister_ports; } - ret = cec_register_adapter(cros_ec_cec->adap, &pdev->dev); - if (ret < 0) - goto out_probe_notify; - return 0; -out_probe_notify: - cec_notifier_cec_adap_unregister(cros_ec_cec->notify, - cros_ec_cec->adap); -out_probe_adapter: - cec_delete_adapter(cros_ec_cec->adap); +unregister_ports: + /* + * Unregister any adapters which have been registered. We don't add the + * port to the array until the adapter has been registered successfully, + * so any non-NULL ports must have been registered. + */ + for (int i = 0; i < cros_ec_cec->num_ports; i++) { + port = cros_ec_cec->ports[i]; + if (!port) + break; + cec_notifier_cec_adap_unregister(port->notify, port->adap); + cec_unregister_adapter(port->adap); + } return ret; } @@ -324,6 +390,7 @@ static void cros_ec_cec_remove(struct platform_device *pdev) { struct cros_ec_cec *cros_ec_cec = platform_get_drvdata(pdev); struct device *dev = &pdev->dev; + struct cros_ec_cec_port *port; int ret; /* @@ -337,9 +404,11 @@ static void cros_ec_cec_remove(struct platform_device *pdev) if (ret) dev_err(dev, "failed to unregister notifier\n"); - cec_notifier_cec_adap_unregister(cros_ec_cec->notify, - cros_ec_cec->adap); - cec_unregister_adapter(cros_ec_cec->adap); + for (int i = 0; i < cros_ec_cec->num_ports; i++) { + port = cros_ec_cec->ports[i]; + cec_notifier_cec_adap_unregister(port->notify, port->adap); + cec_unregister_adapter(port->adap); + } } static struct platform_driver cros_ec_cec_driver = { diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index ab721cf13a98..cb2ddd10a613 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -4436,6 +4436,8 @@ struct ec_response_i2c_passthru_protect { * These commands are for sending and receiving message via HDMI CEC */ +#define EC_CEC_MAX_PORTS 16 + #define MAX_CEC_MSG_LEN 16 /* CEC message from the AP to be written on the CEC bus */ From patchwork Mon Aug 14 04:29:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135123 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2528677vqi; Sun, 13 Aug 2023 22:13:20 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHGZLxtxYlURM6T4jXeanLIv/6ITlk06cczNWm/kV/sL+0+xsfb1aVYyP9WArNwrQ/WUwKE X-Received: by 2002:a17:902:d352:b0:1b0:f8:9b2d with SMTP id l18-20020a170902d35200b001b000f89b2dmr9229587plk.29.1691990000266; Sun, 13 Aug 2023 22:13:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691990000; cv=none; d=google.com; s=arc-20160816; b=NIeu1cLCa+VTrRWjzBvjFJn1MNDvEhwmrjUrl5Ttut9dBH7wFk/Ff11Am7FjNMVlww TCglVoBUsz2yymwbwTiszGYRK7Bs9dByELG0miTJLaY5pnW28n7PYp4K1fBm1wX9v0ON D/QHJv5CPKZJlwearmDAVSNdkarudBB4YmHqrtghvyTMbLFYfQnX0qcquswl+bh+TM95 dmmuSZJecv/dLgel7CrPA4MVt/oLTKtBBCsQQ2tu3oksKs8oih+HhsAatYA918ebaIpu fPBRgQIArrJPwK3jj+VLZYWCyTEY0rNAcJtQy2Z8nHv7H4yh1hlE+C0uY6+wvNpV1tMH 70gw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=itIjiisrKDd0dEJkr9u7QlSUsM4Bsnb9Jzz0yBh6Gm4=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=tlmQZkPfdG2iC5VgVEs0jgPZ0yqAKejIbEJ8xuh9l0zWVYFTXBHn0pp1y6NcknCOE8 TQYSI+jCz7n3ekB2hFC/OY9riZDN5guTCKKUmbpcGA6UZ1/KnjxaC1qlccJEJ5DZQ95m JUQxMBNP7DlCdgD6mDAHoFq1EeVB5UyvQyE4wGsYMhT+icyYLwWLaCs5rOkmVwLC50s0 tGEe4M8H30Ccd7WRfoMgI0wrIW/R8D8bMcQAfbh51hcp/N6zWS78fpi50gC1+PgPkEHe RQmUSpVvhZa/Ywc7l4HxKCqI9YcK27lkrqGRa+M6cEMGU+bLHqZSITXIDVgTnN0+PBlo N6Tw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Xck3Z5On; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id m3-20020a170902db0300b001b9f091a08dsi7838908plx.635.2023.08.13.22.13.06; Sun, 13 Aug 2023 22:13:20 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=Xck3Z5On; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233104AbjHNEgM (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33900 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233151AbjHNEfz (ORCPT ); Mon, 14 Aug 2023 00:35:55 -0400 Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4222EE7E for ; Sun, 13 Aug 2023 21:35:52 -0700 (PDT) Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-1bda9207132so29859035ad.0 for ; Sun, 13 Aug 2023 21:35:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987752; x=1692592552; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=itIjiisrKDd0dEJkr9u7QlSUsM4Bsnb9Jzz0yBh6Gm4=; b=Xck3Z5OnJrMbtyD9wFRDW/GmpGf9wAmSvtvm5NQ2xVthLhnRYzQuocKe4GukWXcu0b MMoucWrJSb2GhXbqcMLVLtlIBkbvLwycQ16Li2XkSn8YTMF/ecRkjn9rMN/fl4Rj6YqQ xi4GlIxY+9jFma3qoicyW/h7wEzrASoM/IFxc= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987752; x=1692592552; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=itIjiisrKDd0dEJkr9u7QlSUsM4Bsnb9Jzz0yBh6Gm4=; b=K1CsG94T616TlputHHsCtBM9JgguTLXk4X+Afmj6Y0H4FlFTtWyTJGxcbwzcIO+6MO /F1ugJ/rq6LDYdSbRvhQmZyScTLNvt7TUqMpzGZsIhgNhFt0N0eteGvo27E3DyXZQqJ/ LauTQuT1cU7V5UYN3vSa3YD/FsnonbzdL5j3j6hSsWln9v9dFWTNsEWPdlvxD8M1B5qa AgD9xc8cclG99g9lX6Mp2KGx5bTSgxI+ozcwP62mWdWfSikCZ3/NW1v+8CiDQppGUCue rF39gbPG1xwpFl9Jg3yGup6CssKhCH7V5DtTvG/ITb2WZTqRUl8TbWGbHo5yucYCd3Io H0OA== X-Gm-Message-State: AOJu0YzxX5zAV31idTtO+dMo0rRj9UGEZvvN2pplvPDmAyWyye2YRqQX sqBXZXF9aAVYoO2D2b75fhBJzw== X-Received: by 2002:a17:902:da85:b0:1bc:5b36:a2e8 with SMTP id j5-20020a170902da8500b001bc5b36a2e8mr11568693plx.34.1691987751762; Sun, 13 Aug 2023 21:35:51 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.35.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:35:51 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 3/9] media: cros-ec-cec: Support multiple ports in set/get host commands Date: Mon, 14 Aug 2023 14:29:12 +1000 Message-ID: <20230814043140.1108917-4-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774180106713857983 X-GMAIL-MSGID: 1774180106713857983 Reuse the top four bits of the cmd field to specify the port number. The reason for doing this as opposed to adding a separate uint8_t field is it avoids the need to add new versions of these commands. The change is backwards compatible since these bits were previously always zero, so the default behaviour is to always operate on port 0. Signed-off-by: Reka Norman --- drivers/media/cec/platform/cros-ec/cros-ec-cec.c | 2 ++ include/linux/platform_data/cros_ec_commands.h | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index d76a25ae0cf1..e969031e1e0e 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -118,6 +118,7 @@ static int cros_ec_cec_set_log_addr(struct cec_adapter *adap, u8 logical_addr) struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; struct ec_params_cec_set params = { .cmd = CEC_CMD_LOGICAL_ADDRESS, + .port = port->port_num, .val = logical_addr, }; int ret; @@ -162,6 +163,7 @@ static int cros_ec_cec_adap_enable(struct cec_adapter *adap, bool enable) struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; struct ec_params_cec_set params = { .cmd = CEC_CMD_ENABLE, + .port = port->port_num, .val = enable, }; int ret; diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index cb2ddd10a613..e8bb05db360f 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -4457,13 +4457,15 @@ struct ec_params_cec_write { /** * struct ec_params_cec_set - CEC parameters set * @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS + * @port: CEC port to set the parameter on * @val: in case cmd is CEC_CMD_ENABLE, this field can be 0 to disable CEC * or 1 to enable CEC functionality, in case cmd is * CEC_CMD_LOGICAL_ADDRESS, this field encodes the requested logical * address between 0 and 15 or 0xff to unregister */ struct ec_params_cec_set { - uint8_t cmd; /* enum cec_command */ + uint8_t cmd : 4; /* enum cec_command */ + uint8_t port : 4; uint8_t val; } __ec_align1; @@ -4473,9 +4475,11 @@ struct ec_params_cec_set { /** * struct ec_params_cec_get - CEC parameters get * @cmd: parameter type, can be CEC_CMD_ENABLE or CEC_CMD_LOGICAL_ADDRESS + * @port: CEC port to get the parameter on */ struct ec_params_cec_get { - uint8_t cmd; /* enum cec_command */ + uint8_t cmd : 4; /* enum cec_command */ + uint8_t port : 4; } __ec_align1; /** From patchwork Mon Aug 14 04:29:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135140 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2547500vqi; Sun, 13 Aug 2023 23:09:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEAQROchsVhL2SPBXxd1eYut03b7o3rtXeAz3vcn0nPnvkeepg/ygzIEccByk4efIB+jB/C X-Received: by 2002:a17:902:ee44:b0:1b0:6038:2982 with SMTP id 4-20020a170902ee4400b001b060382982mr9089556plo.41.1691993395816; Sun, 13 Aug 2023 23:09:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691993395; cv=none; d=google.com; s=arc-20160816; b=BAdlGajwUVEO2dgUM+aJ54+DPsx+GmrUYQtanDyz3sjEuiXLo5FZsr//cKx0vcaUxe 4TDfw8hfGVvqQNagvOQGPga1bZCKF4NAx8dYvBw1Xbi2CrOHy7A8a1nmlHOn6y3F584z Uwpa2UrLipBL4MA7JeEDZHb8IzZk+E+nLDRBTN/5knM27U/hnTAnbIeZmNsygkLh5OHq qz09s15Tgr/PeEud5C770Cb6XM3JTBAquAvAZah+sBYD8J/YDJeGKEIAQmN0tLcG86zo JsNCVvZabFlxA/J/TBStbTOdGJfxXXyO0xclZK12GYfZeEcBy94PJYXkwAK4r7/9j5Q9 UFeQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=RY/s3NWQ7cJzGN8eFznQZ8SqTKIy2WegmbdnvBwyBH8=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=vJWOb6RKwJwf6ebGwaWJTwv4jSXaiP6LT25IhCRNxY6GgFXSSdaXy/iFCLwJoAS1id TKnXw9hmNEmCB8yVHX9UD8jRCzs0f4PNq3T+cSLUqInkC4FzKGm9A+4toJ6i+f8mh+j3 zkstJ6n2L7Vxr5hiSs6THFobTjuU+KfhAEyIHrZ3rEyyjfKQtqGRwDy0+Gv7yx2BtzYU 9gbGjzypTxUYZzAASQz17uWwpRrfVBQa2dmWa0pBo7MEMs4rVzRoRiFELUc2aotxxkLk y7sX+T/4Suukda0p1KyQao6w+RqE8KuO6jL0jKDSzIjsN/vq8VtR+vuwILqhOHYciO2K EDgw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=SXacTqbH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id p8-20020a170902e74800b001bc463ead7asi7977615plf.247.2023.08.13.23.09.42; Sun, 13 Aug 2023 23:09:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=SXacTqbH; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233122AbjHNEgS (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233173AbjHNEgA (ORCPT ); Mon, 14 Aug 2023 00:36:00 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9AA6FE6F for ; Sun, 13 Aug 2023 21:35:57 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1bc3d94d40fso34616585ad.3 for ; Sun, 13 Aug 2023 21:35:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987757; x=1692592557; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=RY/s3NWQ7cJzGN8eFznQZ8SqTKIy2WegmbdnvBwyBH8=; b=SXacTqbHuT+AjmyNe6Va4MrxTMBJyGMXsvJvygFMoxKz0dWO616KLB3kCWyZUEmEvc mwq8cGWywviFmXuyN+F/lPz6lCQHsoSpi8bJgAdGW2K0u128UNciaC0aVWCfuKxnD6eE g19zdVHzJ1XKWhdqgvoFW1rvRAaofMBW92gtU= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987757; x=1692592557; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=RY/s3NWQ7cJzGN8eFznQZ8SqTKIy2WegmbdnvBwyBH8=; b=fwTj7BXq0zXTWCNVjrX2WMA63JvusXvayeeKXfRn/fQ9mEJi6ijK9hLPYKzk3i14+k 0qxt/ElPvYYEx3CKnQT6/8afyjTOarGB6ypWkgfx9SadNoSg0LtAaxhhPxa3W0AtsyE1 jKoYNwCCxU2EGkoEvT3ivrMwdrizw5Q+LCbeHP5fMwF0rY3d+u4UmlulDgFOzk62icOj tr8XuIchoL9mMBQ48VJxxEI1hgMjoRNETNc/UBunRZBj1HX/W19rWRUVsfUeyhP1jOLk RyRyTsvuOrRXu20G3VmakwxkilAGpy5NmfM9m7DE3r2qoP8ILXSvQnSITy8FRoHxBA3x fpQA== X-Gm-Message-State: AOJu0YwXTfsLMGwT5bdqJtzSgSsy8PMcPcsYVWHTT7wp+1Dq43bO0NxO lXkAkwJtqHYj5O2U6dE6Jzt6Fw== X-Received: by 2002:a17:903:228b:b0:1bd:ea15:e3a9 with SMTP id b11-20020a170903228b00b001bdea15e3a9mr989447plh.48.1691987757148; Sun, 13 Aug 2023 21:35:57 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.35.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:35:56 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 4/9] media: cros-ec-cec: Support multiple ports in write command Date: Mon, 14 Aug 2023 14:29:13 +1000 Message-ID: <20230814043140.1108917-5-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774183667318378100 X-GMAIL-MSGID: 1774183667318378100 Add a v1 of the CEC write command which contains a port parameter. Check which versions of the write command the EC supports and use the highest supported version. If it only supports v0, check that there is only one port. With v0, the EC will assume all write commands are for port 0. Signed-off-by: Reka Norman --- .../media/cec/platform/cros-ec/cros-ec-cec.c | 54 +++++++++++++++++-- .../linux/platform_data/cros_ec_commands.h | 12 +++++ 2 files changed, 63 insertions(+), 3 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index e969031e1e0e..d674a432dfdd 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -47,12 +47,14 @@ struct cros_ec_cec_port { * * @cros_ec: Pointer to EC device * @notifier: Notifier info for responding to EC events + * @write_cmd_version: Highest supported version of EC_CMD_CEC_WRITE_MSG. * @num_ports: Number of CEC ports * @ports: Array of ports */ struct cros_ec_cec { struct cros_ec_device *cros_ec; struct notifier_block notifier; + int write_cmd_version; int num_ports; struct cros_ec_cec_port *ports[EC_CEC_MAX_PORTS]; }; @@ -141,12 +143,22 @@ static int cros_ec_cec_transmit(struct cec_adapter *adap, u8 attempts, struct cros_ec_cec *cros_ec_cec = port->cros_ec_cec; struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; struct ec_params_cec_write params; + struct ec_params_cec_write_v1 params_v1; int ret; - memcpy(params.msg, cec_msg->msg, cec_msg->len); + if (cros_ec_cec->write_cmd_version == 0) { + memcpy(params.msg, cec_msg->msg, cec_msg->len); + ret = cros_ec_cmd(cros_ec, 0, EC_CMD_CEC_WRITE_MSG, ¶ms, + cec_msg->len, NULL, 0); + } else { + params_v1.port = port->port_num; + params_v1.msg_len = cec_msg->len; + memcpy(params_v1.msg, cec_msg->msg, cec_msg->len); + ret = cros_ec_cmd(cros_ec, cros_ec_cec->write_cmd_version, + EC_CMD_CEC_WRITE_MSG, ¶ms_v1, + sizeof(params_v1), NULL, 0); + } - ret = cros_ec_cmd(cros_ec, 0, EC_CMD_CEC_WRITE_MSG, ¶ms, - cec_msg->len, NULL, 0); if (ret < 0) { dev_err(cros_ec->dev, "error writing CEC msg on EC: %d\n", ret); @@ -285,6 +297,38 @@ static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, #endif +static int cros_ec_cec_get_write_cmd_version(struct cros_ec_cec *cros_ec_cec) +{ + struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; + struct ec_params_get_cmd_versions_v1 params = { + .cmd = EC_CMD_CEC_WRITE_MSG, + }; + struct ec_response_get_cmd_versions response; + int ret; + + ret = cros_ec_cmd(cros_ec, 1, EC_CMD_GET_CMD_VERSIONS, ¶ms, + sizeof(params), &response, sizeof(response)); + if (ret < 0) { + dev_err(cros_ec->dev, + "error getting CEC write command version: %d\n", ret); + return ret; + } + + if (response.version_mask & EC_VER_MASK(1)) { + cros_ec_cec->write_cmd_version = 1; + } else { + if (cros_ec_cec->num_ports != 1) { + dev_err(cros_ec->dev, + "v0 write command only supports 1 port, %d reported\n", + cros_ec_cec->num_ports); + return -EINVAL; + } + cros_ec_cec->write_cmd_version = 0; + } + + return 0; +} + static int cros_ec_cec_init_port(struct device *dev, struct cros_ec_cec *cros_ec_cec, int port_num, struct device *hdmi_dev, @@ -354,6 +398,10 @@ static int cros_ec_cec_probe(struct platform_device *pdev) cros_ec_cec->num_ports = CEC_NUM_PORTS; + ret = cros_ec_cec_get_write_cmd_version(cros_ec_cec); + if (ret) + return ret; + for (int i = 0; i < cros_ec_cec->num_ports; i++) { ret = cros_ec_cec_init_port(&pdev->dev, cros_ec_cec, i, hdmi_dev, conn); diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index e8bb05db360f..9a0c6e28f370 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -4451,6 +4451,18 @@ struct ec_params_cec_write { uint8_t msg[MAX_CEC_MSG_LEN]; } __ec_align1; +/** + * struct ec_params_cec_write_v1 - Message to write to the CEC bus + * @port: CEC port to write the message on + * @msg_len: length of msg in bytes + * @msg: message content to write to the CEC bus + */ +struct ec_params_cec_write_v1 { + uint8_t port; + uint8_t msg_len; + uint8_t msg[MAX_CEC_MSG_LEN]; +} __ec_align1; + /* Set various CEC parameters */ #define EC_CMD_CEC_SET 0x00BA From patchwork Mon Aug 14 04:29:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135145 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2551334vqi; Sun, 13 Aug 2023 23:20:55 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEZgbKbN6lnJxtrY9irYh8uWFW7KG2qipYfCuPUXeEsZTvH3JGkpx+KqH1+AuqQXSEP+xHG X-Received: by 2002:aa7:d390:0:b0:522:15c4:b5ba with SMTP id x16-20020aa7d390000000b0052215c4b5bamr6706090edq.3.1691994054767; Sun, 13 Aug 2023 23:20:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691994054; cv=none; d=google.com; s=arc-20160816; b=U/8kREp8UoHhe9tMtfC9I0G58lnOwLHjVavEmp5Wnb4tRMzYIOZRh0P4QLArN2B7lI 1SLLxWQmmuRZz/upQrZ3JmhjSGKVXsOIdpkV8jDfl1l9jALjvouG5ZgzKgIhe8y8UhP6 m36TpWKNBKVpUpePy0/rwpMm8Eie4udAPmsAZ1kbc+sDylXR08qUKlCmfu3/ub4N36xc ExSixxiGxgVkAWubsZXX7QNIWo/GlEWkubDnH7PdXK4KUSWnU7E6FViKVvdIGc/mh5hl GVvGd03m0AiS6GUM4lKnHlWQ7xHDjYPb7qpg5CByx+ruyPQhr7391Y2JWdClkrINooQK aeuw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=J3Yp2zAtjbeDJ1QhLpOKL+IzkWDr56KaxN6gm4H+hUQ=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=FZM+hMSxYmN0kKniLz829ETFgC3hJcNDoNMcI7ytHtLHraF+wB4oOcD6k9P9LRaAFy Bj2rOmCaYRQAbURDSXBxQWvwQdVMpgEc9v276c8ClyW0koRVlSHmA73ggwKLKkiWe6v8 0IJkUg79ejfl2lFFduKV9hMjeF97acLSMoTGMcw1J5lhSUNg0su3dK1De2puDUf2ka+c UctH8sgRg17r03ch61pKiRhZg86ZStk5Y1qCFPz6fnRM6DogcgCi9u2W5H4VrqTA0Mqb ejtb07d8j+kcEiBsbBn5TOOOatt5ydRaODHaeIs4zPPj9Y4hZVNfr/uNN/oBmWXTD0xS xrXA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=j4hCLshm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id e25-20020a056402089900b0052559b992b4si2160780edy.568.2023.08.13.23.20.31; Sun, 13 Aug 2023 23:20:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=j4hCLshm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233141AbjHNEgU (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:36706 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233193AbjHNEgG (ORCPT ); Mon, 14 Aug 2023 00:36:06 -0400 Received: from mail-pf1-x430.google.com (mail-pf1-x430.google.com [IPv6:2607:f8b0:4864:20::430]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E5D33E6F for ; Sun, 13 Aug 2023 21:36:05 -0700 (PDT) Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-68730bafa6bso3292913b3a.1 for ; Sun, 13 Aug 2023 21:36:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987765; x=1692592565; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=J3Yp2zAtjbeDJ1QhLpOKL+IzkWDr56KaxN6gm4H+hUQ=; b=j4hCLshmCxUrUqzEgfl3+kiO58h9WICLyh88yqSwF9BVsk6NFCvfvCcAPJt4v/RMM3 5UGM32X4uDDDVO59AUIpA2SnIEUpWBXd8owYRt9P1kVsBceOJ9hND7X1LgSm9vSBk4or czT5GnFzQ9mZWZDGjrRhk4eDeg8wiKHqAJecQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987765; x=1692592565; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J3Yp2zAtjbeDJ1QhLpOKL+IzkWDr56KaxN6gm4H+hUQ=; b=algn2KYkHaU26L+MVmOQ4hPUCYcMSMR3aIcAzal0EC445rmVANpUo4rgrrvxgSWbXv iZ4Q5fMg9rW1ZBfsSWeXCbjsr2p/FG24sHgDokOaM8h8uZQi+mzHx1ReWvw6o57bTbdK AAoRAWZlIJVoAIr/fTPXueRx+7/dvb/h892AEkMZKjYO9QWQCKNRfdqKBVG+0TwGdCQE 01o0kElvbm6H8lsl0nA7z8FhzcPqqBRzRtuHFIU7Xug3PtkIJHLo+b31dVCkGi/hCh/I 0I7CwYGUcvPSNJ7GA1KXobA+QfClu8zNvNsZNZ0u8ZhQzl5tnWXf0Gm6ByYHWMV0XaOO LIxQ== X-Gm-Message-State: AOJu0YwcyueYV3yWFRmQAD1+MZZYM2fRjQLc6q4kEw/MNHy1uVGdOMJj frrJdE9uq73QcupV9BiN0FjmOQ== X-Received: by 2002:a17:90a:5a85:b0:268:808:8e82 with SMTP id n5-20020a17090a5a8500b0026808088e82mr10740711pji.1.1691987765440; Sun, 13 Aug 2023 21:36:05 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.36.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:36:05 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 5/9] media: cros-ec-cec: Support multiple ports in MKBP cec_events Date: Mon, 14 Aug 2023 14:29:14 +1000 Message-ID: <20230814043140.1108917-6-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774184357968719146 X-GMAIL-MSGID: 1774184357968719146 Use the top four bits of the cec_events MKBP event to store the port number. Signed-off-by: Reka Norman --- drivers/media/cec/platform/cros-ec/cros-ec-cec.c | 13 +++++++++++-- include/linux/platform_data/cros_ec_commands.h | 10 ++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index d674a432dfdd..eb4b778f83e9 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -77,8 +77,17 @@ static void handle_cec_message(struct cros_ec_cec *cros_ec_cec) static void handle_cec_event(struct cros_ec_cec *cros_ec_cec) { struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; - uint32_t events = cros_ec->event_data.data.cec_events; - struct cros_ec_cec_port *port = cros_ec_cec->ports[CEC_PORT]; + uint32_t cec_events = cros_ec->event_data.data.cec_events; + int port_num = EC_MKBP_EVENT_CEC_GET_PORT(cec_events); + uint32_t events = EC_MKBP_EVENT_CEC_GET_EVENTS(cec_events); + struct cros_ec_cec_port *port; + + if (port_num < 0 || port_num >= cros_ec_cec->num_ports) { + dev_err(cros_ec->dev, + "received CEC event for invalid port %d\n", port_num); + return; + } + port = cros_ec_cec->ports[port_num]; if (events & EC_MKBP_CEC_SEND_OK) cec_transmit_attempt_done(port->adap, CEC_TX_STATUS_OK); diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index 9a0c6e28f370..b7e8573a8a49 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -4440,6 +4440,16 @@ struct ec_response_i2c_passthru_protect { #define MAX_CEC_MSG_LEN 16 +/* + * Helper macros for packing/unpacking cec_events. + * bits[27:0] : bitmask of events from enum mkbp_cec_event + * bits[31:28]: port number + */ +#define EC_MKBP_EVENT_CEC_PACK(events, port) \ + (((events) & GENMASK(27, 0)) | (((port) & 0xf) << 28)) +#define EC_MKBP_EVENT_CEC_GET_EVENTS(event) ((event) & GENMASK(27, 0)) +#define EC_MKBP_EVENT_CEC_GET_PORT(event) (((event) >> 28) & 0xf) + /* CEC message from the AP to be written on the CEC bus */ #define EC_CMD_CEC_WRITE_MSG 0x00B8 From patchwork Mon Aug 14 04:29:15 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135141 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2547770vqi; Sun, 13 Aug 2023 23:10:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHLKmXRipl4vZkwgnMrN8wedY61whL1i+vTrAZH7XxIK0Drch8nqTaTbKzDKIm/3hbySX1l X-Received: by 2002:a05:6830:1bc3:b0:6bc:8b5f:b616 with SMTP id v3-20020a0568301bc300b006bc8b5fb616mr7006764ota.38.1691993440628; Sun, 13 Aug 2023 23:10:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691993440; cv=none; d=google.com; s=arc-20160816; b=S8Wpu5kVWgmhJalZydH8/2AzlO3M1onXo6v3/rWhzTSg7pa2aHWBZRnaQuZCAPNmw1 0d8sq8if4UuSo2yqBhcOd8D+iaiWlYQKe/tRl7vV8asj5JX8LiOaOerab0igNBJgPVSI FrQA7YUPgbCJ2A2fXSnKgv/MYkSQWvkFoStqIYfjIQ0gwp3ONmW/kqs8JufF6MRfnRRG oFX+yri6wW0QLxrEtS8ViBcoIe00mZHPvE9NyaR6btjyk19OEEYvRXfT4eOFYGpIDCmE KruFS8oBlIY8AIIj77IQPis989BRHO8xY+GHHiX1XBt2gHXSIV7XGM9PpdOcTM405dbi yfKA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iJNUFmjlGvWKEodbK80fwu4glcCXjowGdTQ1cnbRLBo=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=H8CumuR7JM1v7ywXC+KOzvhIcCxE3fx6SO24EEUJXuzx5AkhPr9h5n3WzFYc2Qzf6A N1zVUqsohJ5SrAbMeRIAghQI+S530u3Lp+IT/vUlGs0BufqU2l6pQYGmLx6fguD+0JEl s39UJ9bunPHl6TfZciCNHvxBAeu1z9pupeqNjrzeqptfdYziHbVoEjvAS1bTEMkh9rMa +RgxuJ8/Xdo/cQ2RozyDWEhzRRk7vcg54kizlcDuQPYRKWUgxhPftZ4Rt/7+ibATA1ZF EbefAnLNe7eduCDf0ddKGF5aiYTMA3mesI5jO1KAWHR6LKntvUYH6rcCrI94pGhHJu/Z Uifw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=IOu4sqiY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id my15-20020a17090b4c8f00b002685065230asi10450814pjb.37.2023.08.13.23.10.27; Sun, 13 Aug 2023 23:10:40 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=IOu4sqiY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233147AbjHNEgo (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33950 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233109AbjHNEgM (ORCPT ); Mon, 14 Aug 2023 00:36:12 -0400 Received: from mail-pf1-x42d.google.com (mail-pf1-x42d.google.com [IPv6:2607:f8b0:4864:20::42d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 496FE124 for ; Sun, 13 Aug 2023 21:36:11 -0700 (PDT) Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-686daaa5f1fso2595984b3a.3 for ; Sun, 13 Aug 2023 21:36:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987771; x=1692592571; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=iJNUFmjlGvWKEodbK80fwu4glcCXjowGdTQ1cnbRLBo=; b=IOu4sqiYVxsQt0pCO1qUsP2cQyki77rsQ0eCAUHiUwir+ft8aTFxHJFtqFVZvGZNuP eUEdAEgNK+uRqzgKLnY81Rz+4o8re6ps8DFwu3zjexSkcsWPwov+hX0A3lTnd8KCcj+u lxyrPYFfcxu0d3Fahx83Bfm5x+ifJRCTlgMtE= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987771; x=1692592571; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=iJNUFmjlGvWKEodbK80fwu4glcCXjowGdTQ1cnbRLBo=; b=HaJJASFj4HE6+svS04u8xTkCl7DLaYoiGhON02Yloi1uk2HTV2Syw2XDOw9dYfl01F B9TuLEdTxEWFGjAh5SpTOl+Cl+EGGpk73nyhoRMTVQewlb5bw0xOHSjkgPYcY+jo0Nwp pdJrWjyrI6eXn8Cd8j6UeT9TNYE2vZYYh1xHenr7i1Ttu3twmdlRayxXAJ5pPTj9QzHa XuBXJDALPfYHIUlDKJ7l2SftWZc0A7tcjUf5S9KGvqhB3tCGQ/5v9xAPef3ZThfWAR8a CImyim4omeLdGevbqILUWR25OE7NGdIT9ZmcxDyAT+Oxc1vNMKHW1w4P8oB6d0GIkeEk A5zA== X-Gm-Message-State: AOJu0YzFqnR1NHFI/KM8wNySkF0mMTdCH+NoudBXCdJthp9iEnQQ7msC iH4t20eCcaT7cm9M4WRxSmggkA== X-Received: by 2002:a05:6a21:798a:b0:13b:a016:465b with SMTP id bh10-20020a056a21798a00b0013ba016465bmr8334038pzc.19.1691987770805; Sun, 13 Aug 2023 21:36:10 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.36.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:36:10 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 6/9] media: cros-ec-cec: Support receiving messages from multiple ports Date: Mon, 14 Aug 2023 14:29:15 +1000 Message-ID: <20230814043140.1108917-7-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774183714052969671 X-GMAIL-MSGID: 1774183714052969671 Currently, received messages are sent from the EC in the cec_message MKBP event. Since the size of ec_response_get_next_data_v1 is 16 bytes, which is also the maximum size of a CEC message, there is no space to add a port parameter. Increasing the size of ec_response_get_next_data_v1 is an option, but this would increase EC-kernel traffic for all MKBP event types. Instead, use an event to notify that data is ready, and add a new read command to read the data. For backwards compatibility with old EC firmware, continue to handle cec_message events as well. Signed-off-by: Reka Norman --- .../media/cec/platform/cros-ec/cros-ec-cec.c | 59 +++++++++++++++++-- .../linux/platform_data/cros_ec_commands.h | 23 ++++++++ 2 files changed, 76 insertions(+), 6 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index eb4b778f83e9..c68ed5d4bda0 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -59,19 +59,63 @@ struct cros_ec_cec { struct cros_ec_cec_port *ports[EC_CEC_MAX_PORTS]; }; +static void cros_ec_cec_received_message(struct cros_ec_cec_port *port, + uint8_t *msg, uint8_t len) +{ + if (len > CEC_MAX_MSG_SIZE) + len = CEC_MAX_MSG_SIZE; + + port->rx_msg.len = len; + memcpy(port->rx_msg.msg, msg, len); + + cec_received_msg(port->adap, &port->rx_msg); +} + static void handle_cec_message(struct cros_ec_cec *cros_ec_cec) { struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; uint8_t *cec_message = cros_ec->event_data.data.cec_message; unsigned int len = cros_ec->event_size; - struct cros_ec_cec_port *port = cros_ec_cec->ports[CEC_PORT]; + struct cros_ec_cec_port *port; + /* + * There are two ways of receiving CEC messages: + * 1. Old EC firmware which only supports one port sends the data in a + * cec_message MKBP event. + * 2. New EC firmware which supports multiple ports uses + * EC_MKBP_CEC_HAVE_DATA to notify that data is ready and + * EC_CMD_CEC_READ_MSG to read it. + * Check that the EC only has one CEC port, and then we can assume the + * message is from port 0. + */ + if (cros_ec_cec->num_ports != 1) { + dev_err(cros_ec->dev, + "received cec_message on device with %d ports\n", + cros_ec_cec->num_ports); + return; + } + port = cros_ec_cec->ports[0]; - if (len > CEC_MAX_MSG_SIZE) - len = CEC_MAX_MSG_SIZE; - port->rx_msg.len = len; - memcpy(port->rx_msg.msg, cec_message, len); + cros_ec_cec_received_message(port, cec_message, len); +} - cec_received_msg(port->adap, &port->rx_msg); +static void cros_ec_cec_read_message(struct cros_ec_cec_port *port) +{ + struct cros_ec_device *cros_ec = port->cros_ec_cec->cros_ec; + struct ec_params_cec_read params = { + .port = port->port_num, + }; + struct ec_response_cec_read response; + int ret; + + ret = cros_ec_cmd(cros_ec, 0, EC_CMD_CEC_READ_MSG, ¶ms, + sizeof(params), &response, sizeof(response)); + if (ret < 0) { + dev_err(cros_ec->dev, + "error reading CEC message on EC: %d\n", ret); + return; + } + + cros_ec_cec_received_message(port, response.msg, response.msg_len); } static void handle_cec_event(struct cros_ec_cec *cros_ec_cec) @@ -97,6 +141,9 @@ static void handle_cec_event(struct cros_ec_cec *cros_ec_cec) cec_transmit_attempt_done(port->adap, CEC_TX_STATUS_MAX_RETRIES | CEC_TX_STATUS_NACK); + + if (events & EC_MKBP_CEC_HAVE_DATA) + cros_ec_cec_read_message(port); } static int cros_ec_cec_event(struct notifier_block *nb, diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index b7e8573a8a49..ad61c7ff0b28 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -4473,6 +4473,27 @@ struct ec_params_cec_write_v1 { uint8_t msg[MAX_CEC_MSG_LEN]; } __ec_align1; +/* CEC message read from a CEC bus reported back to the AP */ +#define EC_CMD_CEC_READ_MSG 0x00B9 + +/** + * struct ec_params_cec_read - Read a message from the CEC bus + * @port: CEC port to read a message on + */ +struct ec_params_cec_read { + uint8_t port; +} __ec_align1; + +/** + * struct ec_response_cec_read - Message read from the CEC bus + * @msg_len: length of msg in bytes + * @msg: message content read from the CEC bus + */ +struct ec_response_cec_read { + uint8_t msg_len; + uint8_t msg[MAX_CEC_MSG_LEN]; +} __ec_align1; + /* Set various CEC parameters */ #define EC_CMD_CEC_SET 0x00BA @@ -4529,6 +4550,8 @@ enum mkbp_cec_event { EC_MKBP_CEC_SEND_OK = BIT(0), /* Outgoing message was not acknowledged */ EC_MKBP_CEC_SEND_FAILED = BIT(1), + /* Incoming message can be read out by AP */ + EC_MKBP_CEC_HAVE_DATA = BIT(2), }; /*****************************************************************************/ From patchwork Mon Aug 14 04:29:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135125 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2529436vqi; Sun, 13 Aug 2023 22:15:50 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGv4xzydPy5VR/T1tQajNW/H5/KfwRDBowcCVZLY1haNRxgakGqpNlUpJPmV3VUJ16aeO1e X-Received: by 2002:a05:6a00:1954:b0:687:e02b:e3c with SMTP id s20-20020a056a00195400b00687e02b0e3cmr11546710pfk.17.1691990150105; Sun, 13 Aug 2023 22:15:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691990150; cv=none; d=google.com; s=arc-20160816; b=V9u5VtIioupF7lbZ5kOvpvhIGU9OV/hyeWqHg2+0Yg9yA2gIQZ2DXIXsSW82hfgi5m o0jXl+3w6UULLMAscQCJtPIV41ic+cTNfofr0fzxmsUH63GpZ6mtjRmhyuDPgi4pu0E6 0QrzOg5go6ajiapEe57NN/1cdqB7SsM3aGMHMjnXgRTZ2Ha2jEyzrk5GHwSmx66Xyv1w Pd1X96Tn0iMFFg8lt8JAAi3G6oFANs+fvBztFGPxpfGUyc1H7wk0YtV9zfiOriz6iUNz JTcjQVUNQ9zyIqEyTnEKzLmHDCkctTUrVsiO297iDuaJYqDmk54qwpCYZVAeyl+AlRTv l+Lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=Rb7jjFlFBeiFtDhi82C+yA5IC7ctDIMYcDjyXscM6+U=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=p3LbbMqvPM0BD6TTaxfDJ2Fl9whu62AOL0cgbMZeq1+Ul52P5EYzpVUssneCCkvLQR p/rwTqDO0ifYQ41YqTu5NDvefLVvzK42VRPKFmPzCQErCEHH2HEzaqvZHlCY9j9KI7zT icXkZR5iK4v7+1pGSKdhonv4bRjw+IdqILUUQCmyyKiWR19kJgsC0KFvkY/1lZYxuUoF ZulwIdrxU16YIUnjL9ZBxRH5i7yxESD5VReb6B7E4IlRRXFuC6dP2rpj4ep56sd2BE6O FmHfGYskU+qc3TbkdZTdNQbTrkG3UydL2LGx6JEkMy10XpGyk92VT6Bi/TUHuVGDYtrl nc3g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=RZvtVRAD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r20-20020a6560d4000000b0056569f5da0asi6122127pgv.163.2023.08.13.22.15.37; Sun, 13 Aug 2023 22:15:50 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=RZvtVRAD; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233167AbjHNEgs (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46612 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233144AbjHNEgV (ORCPT ); Mon, 14 Aug 2023 00:36:21 -0400 Received: from mail-pl1-x630.google.com (mail-pl1-x630.google.com [IPv6:2607:f8b0:4864:20::630]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 956AEE75 for ; Sun, 13 Aug 2023 21:36:19 -0700 (PDT) Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-1bdbbede5d4so21247215ad.2 for ; Sun, 13 Aug 2023 21:36:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987779; x=1692592579; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Rb7jjFlFBeiFtDhi82C+yA5IC7ctDIMYcDjyXscM6+U=; b=RZvtVRADYrGV2dY0sTy4VXojVTw8w7cJxh8W0jxGK864I7waMUc/qcRBfQVmnP6+1E QlTJpNsL5N8G0A4N0oyPJ9D0AqiBj7mj2L59UCaJd2aLjugGuHY/9ZpbkG4gucVW3SF8 oUz1AjNv0P5EgKHXmOomAtZD69ucp01EcQ+tk= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987779; x=1692592579; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Rb7jjFlFBeiFtDhi82C+yA5IC7ctDIMYcDjyXscM6+U=; b=Kv0Qx5V16773o3aCaXCHVvUev7EhraAUyfvKBQcP0tmRUvV2LFNJN0wpWU+5Dl3pTo 9L43kSrPPCi3Fzl4/7zOLCDEidFG0L+eyi569JVF3qFX+1INaZaD+eZKaI2vQS3m0g6R fhcu3NWqQF1sO/wIa7MCWIAFeu3zujp9AjgNSlo6LwIBSJ9t+pzbT0wgDYVwzXwb/fcl TFgMH5NWNibMMtzPTmpoBArEPAaJn87R4Q8zuQHM0qyfNPNtTMAa6EAL14fC13Sv1FaV 3FDCitTBx4cSMYaNIb2GbmQJ3d3K3b3b6T6LUGSrVe7BbxK4W/5m3/ETcu9HBQtOmk1K +vPg== X-Gm-Message-State: AOJu0Yx5yyu5FXRGJWIDRQaObF6GO/YijdLYokVq5ePwtqkuhOcvdKc+ +1pIYdUqZhvhzKyaDu3A+AiGxg== X-Received: by 2002:a17:902:ea04:b0:1bc:978f:5d26 with SMTP id s4-20020a170902ea0400b001bc978f5d26mr10766021plg.7.1691987779058; Sun, 13 Aug 2023 21:36:19 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.36.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:36:18 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 7/9] media: cros-ec-cec: Allow specifying multiple HDMI connectors Date: Mon, 14 Aug 2023 14:29:16 +1000 Message-ID: <20230814043140.1108917-8-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774180263637120454 X-GMAIL-MSGID: 1774180263637120454 Update the cec_dmi_match_table to allow specifying multiple HDMI connectors for each device. Signed-off-by: Reka Norman --- .../media/cec/platform/cros-ec/cros-ec-cec.c | 47 +++++++++++-------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index c68ed5d4bda0..f2f397d9a6d8 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -284,38 +284,41 @@ static SIMPLE_DEV_PM_OPS(cros_ec_cec_pm_ops, #if IS_ENABLED(CONFIG_PCI) && IS_ENABLED(CONFIG_DMI) /* - * The Firmware only handles a single CEC interface tied to a single HDMI - * connector we specify along with the DRM device name handling the HDMI output + * Specify the DRM device name handling the HDMI output and the HDMI connector + * corresponding to each CEC port. The order of connectors must match the order + * in the EC (first connector is EC port 0, ...), and the number of connectors + * must match the number of ports in the EC (which can be queried using the + * EC_CMD_CEC_PORT_COUNT host command). */ struct cec_dmi_match { const char *sys_vendor; const char *product_name; const char *devname; - const char *conn; + const char *conns[EC_CEC_MAX_PORTS]; }; static const struct cec_dmi_match cec_dmi_match_table[] = { /* Google Fizz */ - { "Google", "Fizz", "0000:00:02.0", "Port B" }, + { "Google", "Fizz", "0000:00:02.0", { "Port B" } }, /* Google Brask */ - { "Google", "Brask", "0000:00:02.0", "Port B" }, + { "Google", "Brask", "0000:00:02.0", { "Port B" } }, /* Google Moli */ - { "Google", "Moli", "0000:00:02.0", "Port B" }, + { "Google", "Moli", "0000:00:02.0", { "Port B" } }, /* Google Kinox */ - { "Google", "Kinox", "0000:00:02.0", "Port B" }, + { "Google", "Kinox", "0000:00:02.0", { "Port B" } }, /* Google Kuldax */ - { "Google", "Kuldax", "0000:00:02.0", "Port B" }, + { "Google", "Kuldax", "0000:00:02.0", { "Port B" } }, /* Google Aurash */ - { "Google", "Aurash", "0000:00:02.0", "Port B" }, + { "Google", "Aurash", "0000:00:02.0", { "Port B" } }, /* Google Gladios */ - { "Google", "Gladios", "0000:00:02.0", "Port B" }, + { "Google", "Gladios", "0000:00:02.0", { "Port B" } }, /* Google Lisbon */ - { "Google", "Lisbon", "0000:00:02.0", "Port B" }, + { "Google", "Lisbon", "0000:00:02.0", { "Port B" } }, }; static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, - const char **conn) + const char * const **conns) { int i; @@ -332,7 +335,7 @@ static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, if (!d) return ERR_PTR(-EPROBE_DEFER); put_device(d); - *conn = m->conn; + *conns = m->conns; return d; } } @@ -346,7 +349,7 @@ static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, #else static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, - const char **conn) + const char * const **conns) { return ERR_PTR(-ENODEV); } @@ -388,7 +391,7 @@ static int cros_ec_cec_get_write_cmd_version(struct cros_ec_cec *cros_ec_cec) static int cros_ec_cec_init_port(struct device *dev, struct cros_ec_cec *cros_ec_cec, int port_num, struct device *hdmi_dev, - const char *conn) + const char * const *conns) { struct cros_ec_cec_port *port; int ret; @@ -406,7 +409,13 @@ static int cros_ec_cec_init_port(struct device *dev, if (IS_ERR(port->adap)) return PTR_ERR(port->adap); - port->notify = cec_notifier_cec_adap_register(hdmi_dev, conn, + if (!conns[port_num]) { + dev_err(dev, "no conn for port %d\n", port_num); + ret = -ENODEV; + goto out_probe_adapter; + } + + port->notify = cec_notifier_cec_adap_register(hdmi_dev, conns[port_num], port->adap); if (!port->notify) { ret = -ENOMEM; @@ -435,10 +444,10 @@ static int cros_ec_cec_probe(struct platform_device *pdev) struct cros_ec_cec *cros_ec_cec; struct cros_ec_cec_port *port; struct device *hdmi_dev; - const char *conn = NULL; + const char * const *conns = NULL; int ret; - hdmi_dev = cros_ec_cec_find_hdmi_dev(&pdev->dev, &conn); + hdmi_dev = cros_ec_cec_find_hdmi_dev(&pdev->dev, &conns); if (IS_ERR(hdmi_dev)) return PTR_ERR(hdmi_dev); @@ -460,7 +469,7 @@ static int cros_ec_cec_probe(struct platform_device *pdev) for (int i = 0; i < cros_ec_cec->num_ports; i++) { ret = cros_ec_cec_init_port(&pdev->dev, cros_ec_cec, i, - hdmi_dev, conn); + hdmi_dev, conns); if (ret) goto unregister_ports; } From patchwork Mon Aug 14 04:29:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135157 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2559916vqi; Sun, 13 Aug 2023 23:46:10 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGqqvNH9W+4OLqTpkG1PZSX+qT1QBfK+H4cKDBrO/pk72w2+H353s7N7m1//Zvj0GYsDeFH X-Received: by 2002:a54:4411:0:b0:3a4:f8e:d798 with SMTP id k17-20020a544411000000b003a40f8ed798mr8088418oiw.36.1691995570597; Sun, 13 Aug 2023 23:46:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691995570; cv=none; d=google.com; s=arc-20160816; b=SgwiiwiSVwc6UQ+p9FwbQscwuFeXiUEd+Jm2fDe/u6R9o5eYD1cAGE40FEZpUvcjVQ /8Z7jfbEaNIRrZXMYksOJQ7BZ968+zLy2lKD9x3kpHdTmIVILtYPR1XDSo5pgAKezDae 7KwhibmZxk0JN0IB/fst4sAWCdiKdmgqtp4mOWJbgxR9MhlRQJSc57HSj2aumRPoBnV4 8jMJFsXEC6gkou0TdWt2A36C1qx/JybaY2hnW7Nao9T1pcjsndw9QsdmiBSLx6+SBjkm nElYgyTes9swqfuSnZNnK3SmIBm7aoU6fJSsKIkGoeOECLRMp8CZwS1RV5mNHN79q0C/ bqdA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=qn05RavKUDwCo7Nk//6BvwshJgQPYJchPE2n3kFnelU=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=d54UbPOL1PxS1WCuimXIQYGxQgjuTE9myaoobYiX7ZGFXGzPESZpdYIylx77HIXxYD VzitMa7t+ef3E8eJGxoEUgqSVbg2Pg6WM/e+DJaEvOhpeznqLE29Ql351x9j9L5OeYL5 6TGxVE+fPZWINSmvjiiGCg/12M9TsWPNbyEUiSglteC7OW1mULLcRzspQjEAZD8mviUw KBF9jruNIefW9LWrGh0UCq5pQne+8/7ZC/ApavRlyP+Rzo8Dl3TUWu1RurbeoDAlwbzm S7rVT2ygVLD4Q3kuMEw62W0VxETyI83ZyUzAxn5ryNKqxKW7qcsA/N7Qer7ehXmzWhCG oZOg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=C+TalMts; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id i6-20020a639d06000000b005656a84cfbcsi6410627pgd.152.2023.08.13.23.45.57; Sun, 13 Aug 2023 23:46:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=C+TalMts; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233182AbjHNEgw (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46672 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233156AbjHNEg1 (ORCPT ); Mon, 14 Aug 2023 00:36:27 -0400 Received: from mail-pf1-x429.google.com (mail-pf1-x429.google.com [IPv6:2607:f8b0:4864:20::429]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CB7F2E6F for ; Sun, 13 Aug 2023 21:36:24 -0700 (PDT) Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-686b9920362so2495886b3a.1 for ; Sun, 13 Aug 2023 21:36:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987784; x=1692592584; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qn05RavKUDwCo7Nk//6BvwshJgQPYJchPE2n3kFnelU=; b=C+TalMts8a2m6aL+ebXUXjcz744b6n1+AI3kTmdTfz43y+y8CBXkzjV9Q+3HBCTd5C NlVKUAF+jMShWAX+WBEFtEqxIh4/zYRFR4vpCjYxme6YPbst5Og+DuBnka/Ts01mImYB v5gXUrj3PDgNrzf007Wyfv+uUtdHAF9vIds6w= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987784; x=1692592584; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=qn05RavKUDwCo7Nk//6BvwshJgQPYJchPE2n3kFnelU=; b=amsPsmeTPyLLX3++rqDLPzTFzifVNoOWoxJQ8xaQl736lNR3mo0PT3JYuhBFzO2w5f LY4RjSP0WT8fSfTADW1RfL+i/KxCgPxwOBy8gh8XW9giIQ9VvwCJ2fG1xR9C4im2cuc6 WVFlmZs3VAw+BNISVy2KbstrfmszoTUI3jqI80egcZkxiGgAwmjVe0eDm4jVF/LvqacV ejgLnqm6Q+eRCmsa3sAc5O/5+1nb5sjCjGsdEo8uD5WfDV0sGlSW02ODFQIf8ElTWAfL o9TzA3Bk9Nr/1ZlfbynHCLSLc0D/9A3+5843uhMBMINX6wiTiDU5TnaPekIWx4uk8BWd 7YoA== X-Gm-Message-State: AOJu0YxWmMjdstuIhQuiYe0l13pRvH/w2/tIUa4q278gisXP+jDNF/Gn KpV0VcyGiG1pi7AgRJl/R8fpGA== X-Received: by 2002:a05:6a20:9191:b0:13e:da98:966a with SMTP id v17-20020a056a20919100b0013eda98966amr8970273pzd.5.1691987784310; Sun, 13 Aug 2023 21:36:24 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.36.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:36:24 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 8/9] media: cros-ec-cec: Get number of CEC ports from EC Date: Mon, 14 Aug 2023 14:29:17 +1000 Message-ID: <20230814043140.1108917-9-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774185947018785128 X-GMAIL-MSGID: 1774185947018785128 Add a new CEC port count host command and use it to query the number of CEC ports from the EC. If the host command is not supported then it must be old EC firmware which only supports one port, so fall back to assuming one port. This patch completes support for multiple ports in cros-ec-cec. Signed-off-by: Reka Norman --- .../media/cec/platform/cros-ec/cros-ec-cec.c | 40 ++++++++++++++++--- .../linux/platform_data/cros_ec_commands.h | 11 +++++ 2 files changed, 46 insertions(+), 5 deletions(-) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index f2f397d9a6d8..cfc0a204d591 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -21,10 +21,6 @@ #define DRV_NAME "cros-ec-cec" -/* Only one port is supported for now */ -#define CEC_NUM_PORTS 1 -#define CEC_PORT 0 - /** * struct cros_ec_cec_port - Driver data for a single EC CEC port * @@ -356,6 +352,38 @@ static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev, #endif +static int cros_ec_cec_get_num_ports(struct cros_ec_cec *cros_ec_cec) +{ + struct ec_response_cec_port_count response; + int ret; + + ret = cros_ec_cmd(cros_ec_cec->cros_ec, 0, EC_CMD_CEC_PORT_COUNT, NULL, + 0, &response, sizeof(response)); + if (ret < 0) { + /* + * Old EC firmware only supports one port and does not support + * the port count command, so fall back to assuming one port. + */ + cros_ec_cec->num_ports = 1; + return 0; + } + + if (response.port_count == 0) { + dev_err(cros_ec_cec->cros_ec->dev, + "EC reports 0 CEC ports\n"); + return -ENODEV; + } + + if (response.port_count > EC_CEC_MAX_PORTS) { + dev_err(cros_ec_cec->cros_ec->dev, + "EC reports too many ports: %d\n", response.port_count); + return -EINVAL; + } + + cros_ec_cec->num_ports = response.port_count; + return 0; +} + static int cros_ec_cec_get_write_cmd_version(struct cros_ec_cec *cros_ec_cec) { struct cros_ec_device *cros_ec = cros_ec_cec->cros_ec; @@ -461,7 +489,9 @@ static int cros_ec_cec_probe(struct platform_device *pdev) device_init_wakeup(&pdev->dev, 1); - cros_ec_cec->num_ports = CEC_NUM_PORTS; + ret = cros_ec_cec_get_num_ports(cros_ec_cec); + if (ret) + return ret; ret = cros_ec_cec_get_write_cmd_version(cros_ec_cec); if (ret) diff --git a/include/linux/platform_data/cros_ec_commands.h b/include/linux/platform_data/cros_ec_commands.h index ad61c7ff0b28..7dae17b62a4d 100644 --- a/include/linux/platform_data/cros_ec_commands.h +++ b/include/linux/platform_data/cros_ec_commands.h @@ -4536,6 +4536,17 @@ struct ec_response_cec_get { uint8_t val; } __ec_align1; +/* Get the number of CEC ports */ +#define EC_CMD_CEC_PORT_COUNT 0x00C1 + +/** + * struct ec_response_cec_port_count - CEC port count response + * @port_count: number of CEC ports + */ +struct ec_response_cec_port_count { + uint8_t port_count; +} __ec_align1; + /* CEC parameters command */ enum cec_command { /* CEC reading, writing and events enable */ From patchwork Mon Aug 14 04:29:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Reka Norman X-Patchwork-Id: 135171 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b824:0:b0:3f2:4152:657d with SMTP id z4csp2576343vqi; Mon, 14 Aug 2023 00:29:25 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH/urE/+5jTbednRyzALf54AQPOn++SyKTjiduv8gnDujfsMgKa54pHiLk9nDMnwh3SGGzL X-Received: by 2002:a05:6a00:1703:b0:668:83b7:fd02 with SMTP id h3-20020a056a00170300b0066883b7fd02mr10305528pfc.31.1691998164728; Mon, 14 Aug 2023 00:29:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1691998164; cv=none; d=google.com; s=arc-20160816; b=PdCTLDDzQsiiin+MsVuQ5Ni4p31Dz6GoEJWyDSkPKrNWY0D5J6NK7i90qJ22lJ/B2S Q28SxH0i7bYijZRRU0s7IqssmEHGFzzWMcYe14jeDMrM3s5mYHF68Y4eXNsdVtB5dMJ5 eFEAdpG3AFj4V2dlFH2epH7WYbFYca0CcgbBwATQkM5r62Uxoulkj3QWrPyeQpmUielA VTiCM2gfTwx0X4WgRhDQ6vwU+Z7hlobprmQzzQ7qYh5nc0RoE3yn+6HxnBBwnd2hqGGR Y5Xbep3F1YmWHdHH3Wi2pPBEzPPzfhLwuiWFPYkFwoH/oX0RHvI5kpRN0RyR/d+v5iGt VHkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=sw/GQaD3rU/TBdDdqv1FKm319ZdMh7XMHhK4oOmrPsU=; fh=Z54ABTjWKY0UM+xzbKZvDcqrpuAhT1VnH73TfCDbJK4=; b=v3JUwpIkSqPqCcGK4QChyuuQzgdwuu9/AbvSD/SMjnim+qK20h5Qg9gLQfEBwULxJC 5ptaWwH8WF1zyGRQOGLeU6/PNo39W+wk04H2298UvvzJuRZcGh2T8iIT4vpNXE89Nd3M VjqYxcN/Zo1MtyVlqTytCAL1yKV14W9Mkl0l7xmvwkB1yDQ0xb1zbFen45tpOgQg0IQV oxq5Gb0l4C+Qfk/kyKzTubu1GJGhRR7iK25i67byDP3hAAdzLjxroPkvzBioGPrjqEJi c1sEt5yfTIZ5dkXlUhPKsJ1J1nf/Gctl7qYu2VYvMqhLMfE0U2x5TaK9THoLT7B9x/FU Wz3Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=KatNqGsG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id x26-20020a056a00189a00b0067de347ee12si7808306pfh.164.2023.08.14.00.29.11; Mon, 14 Aug 2023 00:29:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b=KatNqGsG; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233214AbjHNEgz (ORCPT + 99 others); Mon, 14 Aug 2023 00:36:55 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52982 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233183AbjHNEgc (ORCPT ); Mon, 14 Aug 2023 00:36:32 -0400 Received: from mail-pf1-x42b.google.com (mail-pf1-x42b.google.com [IPv6:2607:f8b0:4864:20::42b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 308BDE71 for ; Sun, 13 Aug 2023 21:36:31 -0700 (PDT) Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-686b9920362so2495932b3a.1 for ; Sun, 13 Aug 2023 21:36:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1691987790; x=1692592590; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=sw/GQaD3rU/TBdDdqv1FKm319ZdMh7XMHhK4oOmrPsU=; b=KatNqGsGMaYxzyICLAb1aNPS96VJXjgi4wqOangQ1EE3F01ND5r4MCspJg8i4p78so u+ujbs8pFRq4DfPYFH5HQ2ZBjvthy6kKTTak+DBCypQ5F6GgbI5F1IiZ5JfNyVXtLGxu bUt0mJTRZT9bO5Cq8yEcm9x010l0xHCmkMMt0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1691987790; x=1692592590; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sw/GQaD3rU/TBdDdqv1FKm319ZdMh7XMHhK4oOmrPsU=; b=bP+Oz8jtL5aXpqrFi+Lr0orSlVkhx2Nw9fOLlPU+u5vrAV6v3I+HXEtez0LOwL9W4L ZMbF76T0YIiFov92aqRQnZGJT2YrcLKNg19AAR5x53L/URqzGX2jSWIaDGpgnUdUwFZZ LF/f0o+wL71u4VIvR4bgd1tyTIFetpDrjUIehNWQKVm1Vm1WI7NqmDRBH06AEO17sccG mGJUqdco5Ju/O+4/M605luDVTjDV9h9+DDIf8jFZrdyUBAcQBvB0X1TbIp9xtFfwm9uc 6qfmZLaHHqZx+6c/351SafBlyuZoB5TPbdih/z+x6U2DOjss3+SG0Z9TPWVm3RI8PCz1 da0w== X-Gm-Message-State: AOJu0YzK78NY38XS021k3+8bV9xJ79Crw5TkW2PzQpROnvVUfKhU4IpS /8943KuEc1JjFEXTd1G9V68z0A== X-Received: by 2002:a05:6300:8003:b0:13e:e450:f4c6 with SMTP id an3-20020a056300800300b0013ee450f4c6mr7113497pzc.27.1691987790656; Sun, 13 Aug 2023 21:36:30 -0700 (PDT) Received: from rekanorman3.syd.corp.google.com ([2401:fa00:9:14:4ae6:d1a4:27c2:80ff]) by smtp.gmail.com with ESMTPSA id ju17-20020a170903429100b001bdb0483e65sm6761865plb.265.2023.08.13.21.36.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Aug 2023 21:36:30 -0700 (PDT) From: Reka Norman To: Hans Verkuil Cc: Neil Armstrong , Daisuke Nojiri , Stefan Adolfsson , Reka Norman , Benson Leung , Guenter Roeck , Mauro Carvalho Chehab , chrome-platform@lists.linux.dev, linux-kernel@vger.kernel.org, linux-media@vger.kernel.org Subject: [PATCH 9/9] media: cros-ec-cec: Add Dibbi to the match table Date: Mon, 14 Aug 2023 14:29:18 +1000 Message-ID: <20230814043140.1108917-10-rekanorman@chromium.org> X-Mailer: git-send-email 2.41.0.640.ga95def55d0-goog In-Reply-To: <20230814043140.1108917-1-rekanorman@chromium.org> References: <20230814043140.1108917-1-rekanorman@chromium.org> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1774188667448953184 X-GMAIL-MSGID: 1774188667448953184 Dibbi has two HDMI ports which support CEC: Port D is EC port 0 Port B is EC port 1 Signed-off-by: Reka Norman --- drivers/media/cec/platform/cros-ec/cros-ec-cec.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c index cfc0a204d591..29f9a464857b 100644 --- a/drivers/media/cec/platform/cros-ec/cros-ec-cec.c +++ b/drivers/media/cec/platform/cros-ec/cros-ec-cec.c @@ -311,6 +311,8 @@ static const struct cec_dmi_match cec_dmi_match_table[] = { { "Google", "Gladios", "0000:00:02.0", { "Port B" } }, /* Google Lisbon */ { "Google", "Lisbon", "0000:00:02.0", { "Port B" } }, + /* Google Dibbi */ + { "Google", "Dibbi", "0000:00:02.0", { "Port D", "Port B" } }, }; static struct device *cros_ec_cec_find_hdmi_dev(struct device *dev,