From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8DB0AC433FE for ; Sun, 17 Oct 2021 16:22:34 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 76A4261151 for ; Sun, 17 Oct 2021 16:22:34 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S242315AbhJQQYn (ORCPT ); Sun, 17 Oct 2021 12:24:43 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35604 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S238236AbhJQQYl (ORCPT ); Sun, 17 Oct 2021 12:24:41 -0400 Received: from mail-pj1-x1031.google.com (mail-pj1-x1031.google.com [IPv6:2607:f8b0:4864:20::1031]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B86D0C06161C; Sun, 17 Oct 2021 09:22:31 -0700 (PDT) Received: by mail-pj1-x1031.google.com with SMTP id e5-20020a17090a804500b001a116ad95caso5306558pjw.2; Sun, 17 Oct 2021 09:22:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CCRIijo2PoToFaAc7zQPed85KYSfqIFEBvsodoq8LHk=; b=k3T++MKGgxWrWsGO4lMsHWh7oHoeUjVFHlFvkZSM7t4PdX+T1kQ5wKGZxJuaduMa4l SsP4FJyH4YXPDL1CdpVyCm/j5d+KLwoI+KwozrHXSwNAJnWObMwZRVJX8EO6fiDzmmDE mz2ETABVsAUARamqXNmxaHMJkoSKKk/uogeJfh62X7Ldf3LIkx0jpJcs78Df3YJVrr5z 1k2GwIZTNQzLK5lwY4Pauuz0CyVBeiQ09OW7x6kKMvDGWMnG+AFacnKUZgVeghPLPBYF sU/sd+dFKdccwRcdPwHrQ+p7KzB1E7J0fx/XVAphVni6xXswcMyHggNul9Huza5hCtFO JgKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CCRIijo2PoToFaAc7zQPed85KYSfqIFEBvsodoq8LHk=; b=z88hx2doVFbAIyB4QObIEEZw0siK5Y5TwFUXnegpBfA5P44ZSSSUYFm6puOyF5ZcP6 Gc6wQ6giHQEVKXeN0wBtk+POBde9Vi2dyIQISacBpmHvQZKaWbzXvbmwpHdrx8uatYhx 00ufvtQogcrAgkelJ2KVlx/xscyML1OquVjx1YwQT+xiYuLJaBcjc8kjJ1RSu9uYkR8q 2DJDpreNdevuskE61JsmgIJaOmet1S6cLykyvUaFwiXlznD71uRvgWaFPkZGAsMZs3sg RBwuVIeoxAyTX9Z/thaZohjFAxtJrN3tPqvB+++u1BxuRjXeBc0hsMKiHCMUfXaFX2JQ 02sw== X-Gm-Message-State: AOAM530xxTu/ZLTNW5qgv8M4UMmDVtQ8NJqlZpaTtI1y8u+7rw+rIg4z J/48A45+EJwZrskjkTziaFw= X-Google-Smtp-Source: ABdhPJz/AvWxDLcRzfrwl8E2zFEn8+bBE+zHTB4btQnYdKJUFs4l6SxFAlyvHiWQ/jtmkTBZvHUrsg== X-Received: by 2002:a17:90a:af86:: with SMTP id w6mr28405602pjq.8.1634487751185; Sun, 17 Oct 2021 09:22:31 -0700 (PDT) Received: from sbwpb-arch.flets-east.jp ([2400:4052:6980:3800:dba7:2b1f:3f26:a5ec]) by smtp.gmail.com with ESMTPSA id mu11sm5155444pjb.20.2021.10.17.09.22.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Oct 2021 09:22:30 -0700 (PDT) From: Tsuchiya Yuto Cc: Hans de Goede , Patrik Gfeller , Tsuchiya Yuto , Mauro Carvalho Chehab , Sakari Ailus , Greg Kroah-Hartman , Aniket Bhattacharyea , Hans Verkuil , Yang Yingliang , Aline Santana Cordeiro , Dinghao Liu , Alan , linux-media@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 15/17] media: atomsip: pci: add Microsoft Surface 3 ACPI vars Date: Mon, 18 Oct 2021 01:19:55 +0900 Message-Id: <20211017161958.44351-16-kitakar@gmail.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211017161958.44351-1-kitakar@gmail.com> References: <20211017161958.44351-1-kitakar@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit To: unlisted-recipients:; (no To-header on input) Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Microsoft Surface 3 does not describe CsiPort/CsiLanes in DSDT [1] or EFI, or at least not desctibed in the forms the current atomisp driver expects. This results in the default values (port: 0 lanes: 1) to be used, which does not work. So, define them ourselves in the driver. The user-facing camera is AR0330 (2-lane) and the world-facing camera is OV8835 (4-lane). According to the portconfigs definition in atomisp_csi_lane_config() [atomisp_v4l2.c]: } portconfigs[] = { /* Tangier/Merrifield available lane configurations */ { 0x00, { 4, 1, 0 } }, /* 00000 */ { 0x01, { 3, 1, 0 } }, /* 00001 */ { 0x02, { 2, 1, 0 } }, /* 00010 */ { 0x03, { 1, 1, 0 } }, /* 00011 */ { 0x04, { 2, 1, 2 } }, /* 00100 */ { 0x08, { 3, 1, 1 } }, /* 01000 */ { 0x09, { 2, 1, 1 } }, /* 01001 */ { 0x0a, { 1, 1, 1 } }, /* 01010 */ /* Anniedale/Moorefield only configurations */ { 0x10, { 4, 2, 0 } }, /* 10000 */ { 0x11, { 3, 2, 0 } }, /* 10001 */ { 0x12, { 2, 2, 0 } }, /* 10010 */ { 0x13, { 1, 2, 0 } }, /* 10011 */ { 0x14, { 2, 2, 2 } }, /* 10100 */ { 0x18, { 3, 2, 1 } }, /* 11000 */ { 0x19, { 2, 2, 1 } }, /* 11001 */ { 0x1a, { 1, 2, 1 } }, /* 11010 */ }; 4-lane camera is always connected to the PRIMARY (port1) port [2]. In this case, 2-lane camera can be connected to the only SECONDARY (port0) port. So, add these data accordingly as the gmin_cfg_var ACPI variables for Surface 3. [1] https://github.com/linux-surface/acpidumps/blob/7da48a392b4085c2021952290def1fc28505a643/surface_3/dsdt.dsl#L5879-L6278 [2] Yes, the PRIMARY port is port1 according to atomisp_camera_port [atomisp.h]: enum atomisp_camera_port { ATOMISP_CAMERA_PORT_SECONDARY, ATOMISP_CAMERA_PORT_PRIMARY, ATOMISP_CAMERA_PORT_TERTIARY, ATOMISP_CAMERA_NR_PORTS }; Signed-off-by: Tsuchiya Yuto --- .../media/atomisp/pci/atomisp_gmin_platform.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c index d8c9e31314b2..948eb6f809f5 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c +++ b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c @@ -321,6 +321,18 @@ static struct gmin_cfg_var i8880_vars[] = { {}, }; +/* + * Surface 3 does not describe CsiPort/CsiLanes in both DSDT and EFI. + */ +static struct gmin_cfg_var surface3_vars[] = { + {"APTA0330:00_CsiPort", "0"}, + {"APTA0330:00_CsiLanes", "2"}, + + {"OVTI8835:00_CsiPort", "1"}, + {"OVTI8835:00_CsiLanes", "4"}, + {}, +}; + static const struct dmi_system_id gmin_vars[] = { { .ident = "BYT-T FFD8", @@ -358,6 +370,13 @@ static const struct dmi_system_id gmin_vars[] = { }, .driver_data = i8880_vars, }, + { + .ident = "Surface 3", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Surface 3"), + }, + .driver_data = surface3_vars, + }, {} }; -- 2.33.1 From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f54.google.com (mail-pj1-f54.google.com [209.85.216.54]) (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 BD0962C81 for ; Sun, 17 Oct 2021 16:22:31 +0000 (UTC) Received: by mail-pj1-f54.google.com with SMTP id ls14-20020a17090b350e00b001a00e2251c8so10839498pjb.4 for ; Sun, 17 Oct 2021 09:22:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=CCRIijo2PoToFaAc7zQPed85KYSfqIFEBvsodoq8LHk=; b=k3T++MKGgxWrWsGO4lMsHWh7oHoeUjVFHlFvkZSM7t4PdX+T1kQ5wKGZxJuaduMa4l SsP4FJyH4YXPDL1CdpVyCm/j5d+KLwoI+KwozrHXSwNAJnWObMwZRVJX8EO6fiDzmmDE mz2ETABVsAUARamqXNmxaHMJkoSKKk/uogeJfh62X7Ldf3LIkx0jpJcs78Df3YJVrr5z 1k2GwIZTNQzLK5lwY4Pauuz0CyVBeiQ09OW7x6kKMvDGWMnG+AFacnKUZgVeghPLPBYF sU/sd+dFKdccwRcdPwHrQ+p7KzB1E7J0fx/XVAphVni6xXswcMyHggNul9Huza5hCtFO JgKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=CCRIijo2PoToFaAc7zQPed85KYSfqIFEBvsodoq8LHk=; b=TErjTNcDTBhq2D4o3PzIhRCqWe4pb8reFdiZ0tqTv6L3my0l+hWgdvyqCBHu4WVNqW fIvqdBRpLmHPCi5IPDE+PBIg+3JGM8gHmQaqfXBEu384+2kAlIMkca7GEA9tSReH/ds8 fW5ecJc9DrfkYgZMPnqw1TtFCZhyK9kXuyzbF63rI7PWDA7HHx1SVfD77QK8cigBmdkZ EJr2haz0RXQB4QhZ3VpD+Rlft8g3FVYaTx+5bBuBCRmRK/WL5NZjv58Mw5q7vzJ9yZTa 85YDZO/XjjLHeYDJvMiYu+rrkCKdCs9Bt9ItirekYL2lf8Em2HaE/2/yss9RM3si+bou BOWQ== X-Gm-Message-State: AOAM530Tii3/e3xbimlB6xtREFRMr7DZS4lsoNtZ7aG1xeJ46GTivHoo MwqAFwY6nZ8A+ayrk69tqo0= X-Google-Smtp-Source: ABdhPJz/AvWxDLcRzfrwl8E2zFEn8+bBE+zHTB4btQnYdKJUFs4l6SxFAlyvHiWQ/jtmkTBZvHUrsg== X-Received: by 2002:a17:90a:af86:: with SMTP id w6mr28405602pjq.8.1634487751185; Sun, 17 Oct 2021 09:22:31 -0700 (PDT) Received: from sbwpb-arch.flets-east.jp ([2400:4052:6980:3800:dba7:2b1f:3f26:a5ec]) by smtp.gmail.com with ESMTPSA id mu11sm5155444pjb.20.2021.10.17.09.22.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 17 Oct 2021 09:22:30 -0700 (PDT) From: Tsuchiya Yuto To: Cc: Hans de Goede , Patrik Gfeller , Tsuchiya Yuto , Mauro Carvalho Chehab , Sakari Ailus , Greg Kroah-Hartman , Aniket Bhattacharyea , Hans Verkuil , Yang Yingliang , Aline Santana Cordeiro , Dinghao Liu , Alan , linux-media@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Subject: [PATCH 15/17] media: atomsip: pci: add Microsoft Surface 3 ACPI vars Date: Mon, 18 Oct 2021 01:19:55 +0900 Message-Id: <20211017161958.44351-16-kitakar@gmail.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20211017161958.44351-1-kitakar@gmail.com> References: <20211017161958.44351-1-kitakar@gmail.com> Precedence: bulk X-Mailing-List: linux-staging@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Microsoft Surface 3 does not describe CsiPort/CsiLanes in DSDT [1] or EFI, or at least not desctibed in the forms the current atomisp driver expects. This results in the default values (port: 0 lanes: 1) to be used, which does not work. So, define them ourselves in the driver. The user-facing camera is AR0330 (2-lane) and the world-facing camera is OV8835 (4-lane). According to the portconfigs definition in atomisp_csi_lane_config() [atomisp_v4l2.c]: } portconfigs[] = { /* Tangier/Merrifield available lane configurations */ { 0x00, { 4, 1, 0 } }, /* 00000 */ { 0x01, { 3, 1, 0 } }, /* 00001 */ { 0x02, { 2, 1, 0 } }, /* 00010 */ { 0x03, { 1, 1, 0 } }, /* 00011 */ { 0x04, { 2, 1, 2 } }, /* 00100 */ { 0x08, { 3, 1, 1 } }, /* 01000 */ { 0x09, { 2, 1, 1 } }, /* 01001 */ { 0x0a, { 1, 1, 1 } }, /* 01010 */ /* Anniedale/Moorefield only configurations */ { 0x10, { 4, 2, 0 } }, /* 10000 */ { 0x11, { 3, 2, 0 } }, /* 10001 */ { 0x12, { 2, 2, 0 } }, /* 10010 */ { 0x13, { 1, 2, 0 } }, /* 10011 */ { 0x14, { 2, 2, 2 } }, /* 10100 */ { 0x18, { 3, 2, 1 } }, /* 11000 */ { 0x19, { 2, 2, 1 } }, /* 11001 */ { 0x1a, { 1, 2, 1 } }, /* 11010 */ }; 4-lane camera is always connected to the PRIMARY (port1) port [2]. In this case, 2-lane camera can be connected to the only SECONDARY (port0) port. So, add these data accordingly as the gmin_cfg_var ACPI variables for Surface 3. [1] https://github.com/linux-surface/acpidumps/blob/7da48a392b4085c2021952290def1fc28505a643/surface_3/dsdt.dsl#L5879-L6278 [2] Yes, the PRIMARY port is port1 according to atomisp_camera_port [atomisp.h]: enum atomisp_camera_port { ATOMISP_CAMERA_PORT_SECONDARY, ATOMISP_CAMERA_PORT_PRIMARY, ATOMISP_CAMERA_PORT_TERTIARY, ATOMISP_CAMERA_NR_PORTS }; Signed-off-by: Tsuchiya Yuto --- .../media/atomisp/pci/atomisp_gmin_platform.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c index d8c9e31314b2..948eb6f809f5 100644 --- a/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c +++ b/drivers/staging/media/atomisp/pci/atomisp_gmin_platform.c @@ -321,6 +321,18 @@ static struct gmin_cfg_var i8880_vars[] = { {}, }; +/* + * Surface 3 does not describe CsiPort/CsiLanes in both DSDT and EFI. + */ +static struct gmin_cfg_var surface3_vars[] = { + {"APTA0330:00_CsiPort", "0"}, + {"APTA0330:00_CsiLanes", "2"}, + + {"OVTI8835:00_CsiPort", "1"}, + {"OVTI8835:00_CsiLanes", "4"}, + {}, +}; + static const struct dmi_system_id gmin_vars[] = { { .ident = "BYT-T FFD8", @@ -358,6 +370,13 @@ static const struct dmi_system_id gmin_vars[] = { }, .driver_data = i8880_vars, }, + { + .ident = "Surface 3", + .matches = { + DMI_MATCH(DMI_BOARD_NAME, "Surface 3"), + }, + .driver_data = surface3_vars, + }, {} }; -- 2.33.1