From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f180.google.com (mail-pl1-f180.google.com [209.85.214.180]) (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 3D29F386425 for ; Sun, 9 Aug 2026 04:26:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786249613; cv=none; b=FJBXn/qJFm4ZrbEHOTq38izypeLQrQ5pm+B5/Za93fkjEZqxcX8N0u6OgKjXKA59BuEwz2V9nBMXgVPtaYAgZ4rUO9nKXjR0oU9uVV3JVfbSpBdBCD2XxbtBMhHbCvtnb1IDRZVhxjxNxGaPQTvpie00vyQHOOCYcklszfV7J0w= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786249613; c=relaxed/simple; bh=ouw44kHGedVeO0E+hLA3fb+FxAY3evm4VsKzPJMMlpk=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=eekgHTEwjG3hWLPXHLoyquD0/Sm65qWqAE5XwSBWTmte+FMeKtVsWpzKR0hr9XAgP5Hw45CBiYrLShSQAAYubtpUvZPTZNapcb5Pyo08/s1wKTdMZlQH8XzxTsLVVGTPZyaPnzMWvu1iRoPaYL2880lmSkKq37dpmOSgKk4ELc4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=ZEV1LNeI; arc=none smtp.client-ip=209.85.214.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="ZEV1LNeI" Received: by mail-pl1-f180.google.com with SMTP id d9443c01a7336-2cf27856f9cso9098165ad.2 for ; Sat, 08 Aug 2026 21:26:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786249611; x=1786854411; darn=vger.kernel.org; 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:content-type; bh=SGeSbVJTIYqzecVclabk6CPYlIjPO3PArrjverwRDGI=; b=ZEV1LNeIQSQpAJeWQFEPIe7fZFsu3HLT9fQa/W37rjWm+TydYLH4/8gGDHnp3ptDZh Xxt2JBORx9GxIZo9t4L5iG5kw7sMM1yCmtvpCiR1Uxa99LCIdk30IJJyGtxQZjRGrQlr VqClo+JrSTy9fFe3/1dPcMxwuHh4XZJF4F2o92Sf5E/e00I6L8cFgCMVrmjbjvTgMp9d RYkrJkn6elyT2NZk8eMdA+sPClgrzfHM8gmnP/ux/ayh5oloa3uXSo6bWcLbYebU4lT1 5hB7ERY5w8zR5FyjtjXfA5TpVMJlIU3D0sD/waleTzd18Q+hxZ8rZi57DhTLReTgr1VN uN1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786249611; x=1786854411; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=SGeSbVJTIYqzecVclabk6CPYlIjPO3PArrjverwRDGI=; b=Irfa7nbIahvjmTA2b79K+u/pVy4XvDcDPY4uIQ2YunjlG+qmgTPDf3z+PthNlM5WGR O5PJwgGJmnPHcXNLKOON6Dkxii6OfVXpcd501mPrqLlGoXCy3RaUBGjsnSTvrLZimeO8 YQM+FWj0O7bGH9VC/JxYXa3NSm3hN7ApYoaAkcouxs1B7LKyGDRF7dJJ06jP866Tn5l6 DyGQhtmqMapRriqCQriJHXUOF+bgh3YeQbN/cfsE+JGp5UqBxMa78k5KzJJIBKFLoxVB K3L4EBOIN6aOQUDRPZoR/H3WC+npDzd3N/nm8ABnuSkVewI3Ap1+atuOWS4g/alkz6kM WA1g== X-Forwarded-Encrypted: i=1; AHgh+RpwAhh6MB345vE79cKIBprHKMwkiLDK6ELoS0iM6whWqHOjQYPNfZf2Ph2CouGb9CoguetYcKLNMh9Igy4=@vger.kernel.org X-Gm-Message-State: AOJu0YwTrvBRGbUGQek+d+x78x/uTH60flOzIb6S6UIlUZ38O0dRNHuz i16OE/2vq2IaD8yLnZ9rH4auEvyehdt82hVuscAWSzULQ8XuqHHteW5Z X-Gm-Gg: AR+sD121Y2frqiICJ9q6Nn2f3wwDgTIKy/aTiDRQpBtBFVsU68Y+H/2ydbzhQClSwfW Y9lkskLlYEJzrIk4BF2hLPKtg22WPP+iJc5wLSZz3i0Rc4rcnR07KtAe5RPA9/ZMk6mlQNWeq8c mvR1rCxbRDzARrhh3ykfXfLvYqbgcsoyAFl/CRAAcP1kH/RYFAWRbAf7JQXfWx1icgw4Kl/6pw8 jHc7wGjXL1CrwwU5iFBRF/Q+3Lj1cPFvmVFVa0pbXLsLqt0k0NqYdg5QWMbAplkU/H7L7xXVNzd LcnK8HbZJpKQu5zkmUGWjOEw8yPr7lgFvaKTk1+Bqzc61HzOVYdu+MvNjkI4L1gXtuXUR/h0kBx XQP0x7erZD086IbuaHmYeGnBEi+t2f6l1u2SMPLsL03Ru8cgRGdRTBPyopLAdgZ5mohxMGYLiiv YcqWN5UG12KKlmvx8DMV13zEd2FXo3qMyMuhClEE+DgzkQ6C47uI/W5TWLpR7L8Zh/WVv0M9T9g YRiWXT9i4qb3hQT3Wmka2z1dbcwnJel6b0QSmQeYe8Pm6zQ943RaPZXPuob6HY= X-Received: by 2002:a17:90a:da83:b0:38e:2c8f:a01a with SMTP id 98e67ed59e1d1-3903c5d2f8bmr34453647a91.11.1786249611305; Sat, 08 Aug 2026 21:26:51 -0700 (PDT) Received: from prof-g-y-land-Latitude-7320-Detachable (121-45-161-118.tpgi.com.au. [121.45.161.118]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1410199cf49sm21659516c88.3.2026.08.08.21.26.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 08 Aug 2026 21:26:50 -0700 (PDT) From: Sahan Nissanka To: platform-driver-x86@vger.kernel.org, linux-media@vger.kernel.org Cc: dan.scally@ideasonboard.com, sakari.ailus@linux.intel.com, hansg@kernel.org, ilpo.jarvinen@linux.intel.com, mchehab@kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH 1/3] platform/x86: int3472: Add TPS68470 board data for Dell 7320 Detachable Date: Sun, 9 Aug 2026 14:25:17 +1000 Message-ID: <20260809042540.15849-2-adee.sahan@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260809042540.15849-1-adee.sahan@gmail.com> References: <20260809042540.15849-1-adee.sahan@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit The Dell Latitude 7320 Detachable has two MIPI cameras behind an Intel IPU6, both powered by a TPS68470 PMIC. Without board data the PMIC driver fails: int3472-tps68470 i2c-INT3472:07: error -ENODEV: No board-data found for this model and because the sensors declare an ACPI _DEP on the control logic they are never enumerated at all - no i2c client is created for either of them, so nothing can bind them. Add board data for the front sensor, which ACPI describes as OVTI5678. The GPIO and rail assignments are the same as on the Dell 7212 and the Dell 5290 2-in-1: reset on tps68470-gpio 3, powerdown on 4, and VSIO/AUX1/AUX2 feeding avdd/dvdd/dovdd. This was confirmed on the hardware - with these settings the sensor powers up and acknowledges on i2c, and with the conventional ANA/CORE/VSIO mapping it does not. The CLDB buffer read from this machine also carries C0W4=3, agreeing with reset on GPIO 3. The rails that have no consumers are wired as on the Dell 7212, so reuse those regulator_init_data rather than duplicating them. Note the control logic here enumerates as INT3472:07, not :05 as on the other Dell models in this file. The board data lookup matches on DMI and device name, so this has to be exact. The rear OVTI8856 sensor shares this PMIC but its GPIO assignment is not yet known, so it is left out for now. Signed-off-by: Sahan Nissanka --- .../x86/intel/int3472/tps68470_board_data.c | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/drivers/platform/x86/intel/int3472/tps68470_board_data.c b/drivers/platform/x86/intel/int3472/tps68470_board_data.c index 71357a0..f32a884 100644 --- a/drivers/platform/x86/intel/int3472/tps68470_board_data.c +++ b/drivers/platform/x86/intel/int3472/tps68470_board_data.c @@ -232,6 +232,69 @@ static const struct tps68470_regulator_platform_data dell_7212_tps68470_pdata = }, }; +/* Settings for Dell Latitude 7320 Detachable */ + +static struct regulator_consumer_supply ovti5678_vsio_consumer_supplies[] = { + REGULATOR_SUPPLY("avdd", "i2c-OVTI5678:00"), +}; + +static struct regulator_consumer_supply ovti5678_aux1_consumer_supplies[] = { + REGULATOR_SUPPLY("dvdd", "i2c-OVTI5678:00"), +}; + +static struct regulator_consumer_supply ovti5678_aux2_consumer_supplies[] = { + REGULATOR_SUPPLY("dovdd", "i2c-OVTI5678:00"), +}; + +static const struct regulator_init_data dell_7320_tps68470_vsio_reg_init_data = { + .constraints = { + .min_uV = 1800600, + .max_uV = 1800600, + .apply_uV = 1, + .valid_ops_mask = REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = ARRAY_SIZE(ovti5678_vsio_consumer_supplies), + .consumer_supplies = ovti5678_vsio_consumer_supplies, +}; + +static const struct regulator_init_data dell_7320_tps68470_aux1_reg_init_data = { + .constraints = { + .min_uV = 1213200, + .max_uV = 1213200, + .apply_uV = 1, + .valid_ops_mask = REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = ARRAY_SIZE(ovti5678_aux1_consumer_supplies), + .consumer_supplies = ovti5678_aux1_consumer_supplies, +}; + +static const struct regulator_init_data dell_7320_tps68470_aux2_reg_init_data = { + .constraints = { + .min_uV = 1800600, + .max_uV = 1800600, + .apply_uV = 1, + .valid_ops_mask = REGULATOR_CHANGE_STATUS, + }, + .num_consumer_supplies = ARRAY_SIZE(ovti5678_aux2_consumer_supplies), + .consumer_supplies = ovti5678_aux2_consumer_supplies, +}; + +/* + * The rails without consumers are wired the same way as on the Dell 7212, so + * reuse those init_data rather than duplicating them. + */ +static const struct tps68470_regulator_platform_data dell_7320_tps68470_pdata = { + .reg_init_data = { + [TPS68470_CORE] = &dell_7212_tps68470_core_reg_init_data, + [TPS68470_ANA] = &dell_7212_tps68470_ana_reg_init_data, + [TPS68470_VCM] = &dell_7212_tps68470_vcm_reg_init_data, + [TPS68470_VIO] = &dell_7212_tps68470_vio_reg_init_data, + [TPS68470_VSIO] = &dell_7320_tps68470_vsio_reg_init_data, + [TPS68470_AUX1] = &dell_7320_tps68470_aux1_reg_init_data, + [TPS68470_AUX2] = &dell_7320_tps68470_aux2_reg_init_data, + }, +}; + static struct gpiod_lookup_table surface_go_int347a_gpios = { .dev_id = "i2c-INT347A:00", .table = { @@ -258,6 +321,15 @@ static struct gpiod_lookup_table dell_7212_int3479_gpios = { } }; +static struct gpiod_lookup_table dell_7320_ovti5678_gpios = { + .dev_id = "i2c-OVTI5678:00", + .table = { + GPIO_LOOKUP("tps68470-gpio", 3, "reset", GPIO_ACTIVE_LOW), + GPIO_LOOKUP("tps68470-gpio", 4, "powerdown", GPIO_ACTIVE_LOW), + { } + } +}; + static const struct int3472_tps68470_board_data surface_go_tps68470_board_data = { .dev_name = "i2c-INT3472:05", .tps68470_regulator_pdata = &surface_go_tps68470_pdata, @@ -287,6 +359,19 @@ static const struct int3472_tps68470_board_data dell_7212_tps68470_board_data = }, }; +/* + * The control logic on the Latitude 7320 Detachable enumerates as INT3472:07, + * not :05 as on the other Dell models here. + */ +static const struct int3472_tps68470_board_data dell_7320_tps68470_board_data = { + .dev_name = "i2c-INT3472:07", + .tps68470_regulator_pdata = &dell_7320_tps68470_pdata, + .n_gpiod_lookups = 1, + .tps68470_gpio_lookup_tables = { + &dell_7320_ovti5678_gpios, + }, +}; + static const struct dmi_system_id int3472_tps68470_board_data_table[] = { { .matches = { @@ -316,6 +401,13 @@ static const struct dmi_system_id int3472_tps68470_board_data_table[] = { }, .driver_data = (void *)&dell_7212_tps68470_board_data, }, + { + .matches = { + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Dell Inc."), + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Latitude 7320 Detachable"), + }, + .driver_data = (void *)&dell_7320_tps68470_board_data, + }, { } }; -- 2.53.0