From nobody Fri Apr 10 02:37:12 2026 Received: from mail-lj1-f172.google.com (mail-lj1-f172.google.com [209.85.208.172]) (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 8205C3D75C3 for ; Wed, 4 Mar 2026 18:50:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772650230; cv=none; b=rrTSicqkNbcVl5hHy+1jJBnPEvUK2umPO3RtOEwkLvPX4A7+1gHmg2O5uYIxf0g0TF/SAsLgRQ2LjJg8KG8C2LY/9vEFXEZVPdGGp2KMSnem8+8nWCKkcZuGJGOxZFKvJ+Sopr1ndCjBljPyi354+yCCYcFvoghIHFXak3aHuzE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772650230; c=relaxed/simple; bh=b5sg8UdiED+J1eixEpdPFv3QH4TXbgcQlHN5Nil/vQA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cNlNiQFBFDUrv6ai39Oary3Vj+CfAx3psnkbddcTb4FkKvI36VjS9wnqmJ+6RaT/qQ/L5PAtNc6qfG+g4Nv7t6chvpO4zPVqGWqMF8g0bZPe5WBvbFFLMs4q33x4FK2wkGZ52XHL7e4w9raNBlHBrG8NXTn9kEoVTM4xcc82rXQ= 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=Ixl5CFZI; arc=none smtp.client-ip=209.85.208.172 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="Ixl5CFZI" Received: by mail-lj1-f172.google.com with SMTP id 38308e7fff4ca-389fac627c9so112383671fa.0 for ; Wed, 04 Mar 2026 10:50:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772650227; x=1773255027; 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; bh=WZ0k0KuXTsc1BE5vPZGWauEJN+TnRKw9hy7+Z/cTVX4=; b=Ixl5CFZINf40KMTDkATzJIN3dJDqVbdrNF1t/hXhA/K9hnYZPrd8Q6xXERe3aqiKiE 9KGdEWMl87HPA1kI/RcyAfJiPdSffcD1n/avuw1C2wOdg0o/MKUXATvfTLMBtdXmVqKK SQ1Tsi6vR+2xjOJi/jFsQqMhuBVaJXl7HzVolXit0+5lWiqzPCTdIvC0fjqiz9meN5E/ Dg6xXN0n2hz7GifJ6ecAj3sG6cVHTKWsZfD7WrFN4GIhoPFI0aqnaWZMDdtbIdCD37+w 56hBflnu0CSfo8uXxGgMKAxqNVwz4R1322Dgk7fHt1UtiaVa10SpJLuXQMUB5+5Sc4sS CAvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772650227; x=1773255027; 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; bh=WZ0k0KuXTsc1BE5vPZGWauEJN+TnRKw9hy7+Z/cTVX4=; b=KF5Y/w+RAiU15WtuF17J/kE78v+9pVevGZw93fCaXRPEOHV1n9fgQQGpMRNXa7Kzuv +YmlUoiPhvSo1lI3blvCIqD5wDfajH2ENg0iydi6HA1KB3b9fGqVFKTSWLtLjbrICGgw BSWiyQD8+5ShataxY3cMl3zaPRLIDO3koyDaVOzKCZdq9Rr0JvgOnmeDm4T276ynSie6 WiHVaI3GcadS4R80bBaiho1xJjAt8F3kmRzfvXAZHbMPSar6a6Y2MdRfYc6xQp6rlXBT VpPvHYB6Jqg0qZ1SBGoUm0vothFU7YaUneKl5xwnFZtyPRwultCI2IIRNEcAKVF5IhCb R1Fw== X-Forwarded-Encrypted: i=1; AJvYcCU+6lfJhmT/iprYZRUltB/KAsycPhrOC7ug3J5+6PDIMasoBxISsBPlXnymk9xTpMJqb9R6Igxger8yaZs=@vger.kernel.org X-Gm-Message-State: AOJu0YyhJ9vSX59N+YUYu/wHaZChZy0m8irwGHZ0t2uMycvj5Zd7IHaP YK6Ik9Cg/krntPQfvdufak7vW7Nv4pp1SJs25cUm426/yJ7FPWthZFnp X-Gm-Gg: ATEYQzwHhJ7E6zZcSS7fX/s/JBOEqhZRAscnAspG9BLN+saKxD+UWGIkz/sat3EDa7O wzyUF7x862hnMh9X9e1IxKlrQRwCYncns7+8mg8kQ0mxCRzxUfg4w/kswHOek2eBpGTcQOLTDQy nLjlwtIOnSWYSOyDUQL3Hiva5MNghzQRj+Ar7s5oKgi1LY54HfOvfHoEnZz1P3yidHAgFSccBTz 0O0k6nFNc3FKXeyEzn9i2QJ8vufHNHuzmRfXC4Tj4EPAuWmYa7pBpkCDaJBYmUl4IHUPqqctuXr nAG+7lA3KDudopLOJEPfry3Tnaqej9Qx26+PWh6Oh6FMHfDm58TmIkedkNE3P3jHOoHklGLRn08 aySQ2fPfB8EF+/PqghqM28V9SpkxbC1ivmfA9xbcm6ZG/TNjGMPW499j3Uf0uk5h4AsSktxaLmX OfxMfwL/pg7Fec X-Received: by 2002:a2e:bc05:0:b0:38a:519:f788 with SMTP id 38308e7fff4ca-38a2c58db91mr23750691fa.2.1772650226373; Wed, 04 Mar 2026 10:50:26 -0800 (PST) Received: from xeon ([188.163.112.72]) by smtp.gmail.com with ESMTPSA id 38308e7fff4ca-389f30179e9sm36636101fa.33.2026.03.04.10.50.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Mar 2026 10:50:25 -0800 (PST) From: Svyatoslav Ryhel To: Laurent Pinchart , Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Sakari Ailus , Svyatoslav Ryhel Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v3 2/2] media: i2c: mt9m114: add support for Aptina MI1040 Date: Wed, 4 Mar 2026 20:50:01 +0200 Message-ID: <20260304185001.82988-3-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260304185001.82988-1-clamor95@gmail.com> References: <20260304185001.82988-1-clamor95@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: quoted-printable Content-Type: text/plain; charset="utf-8" Slightly different version of MT9M114 camera module is used in a several devices like ASUS Nexus 7 (2012) or ASUS Transformer Prime TF201 and is called Aptina MI1040. The only difference found so far is lacking ability to poll STATE register during power on sequence, which causes driver to fail with time out error. Add state_standby_polling flag to diverge models and address quirk found in MI1040. Signed-off-by: Svyatoslav Ryhel --- drivers/media/i2c/mt9m114.c | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/drivers/media/i2c/mt9m114.c b/drivers/media/i2c/mt9m114.c index 16b0ace15813..e8f74bd11cd7 100644 --- a/drivers/media/i2c/mt9m114.c +++ b/drivers/media/i2c/mt9m114.c @@ -368,6 +368,10 @@ * Data Structures */ =20 +struct mt9m114_model_info { + bool state_standby_polling; +}; + enum mt9m114_format_flag { MT9M114_FMT_FLAG_PARALLEL =3D BIT(0), MT9M114_FMT_FLAG_CSI2 =3D BIT(1), @@ -417,6 +421,8 @@ struct mt9m114 { =20 struct v4l2_ctrl *tpg[4]; } ifp; + + const struct mt9m114_model_info *info; }; =20 /* -----------------------------------------------------------------------= ------ @@ -2284,9 +2290,11 @@ static int mt9m114_power_on(struct mt9m114 *sensor) * reaches the standby mode (either initiated manually above in * parallel mode, or automatically after reset in MIPI mode). */ - ret =3D mt9m114_poll_state(sensor, MT9M114_SYS_STATE_STANDBY); - if (ret < 0) - goto error_clock; + if (sensor->info->state_standby_polling) { + ret =3D mt9m114_poll_state(sensor, MT9M114_SYS_STATE_STANDBY); + if (ret < 0) + goto error_clock; + } =20 return 0; =20 @@ -2532,6 +2540,10 @@ static int mt9m114_probe(struct i2c_client *client) if (ret < 0) return ret; =20 + sensor->info =3D device_get_match_data(dev); + if (!sensor->info) + return -ENODEV; + /* Acquire clocks, GPIOs and regulators. */ sensor->clk =3D devm_v4l2_sensor_clk_get(dev, NULL); if (IS_ERR(sensor->clk)) { @@ -2646,9 +2658,18 @@ static void mt9m114_remove(struct i2c_client *client) pm_runtime_set_suspended(dev); } =20 +static const struct mt9m114_model_info mt9m114_models_default =3D { + .state_standby_polling =3D true, +}; + +static const struct mt9m114_model_info mt9m114_models_aptina =3D { + .state_standby_polling =3D false, +}; + static const struct of_device_id mt9m114_of_ids[] =3D { - { .compatible =3D "onnn,mt9m114" }, - { /* sentinel */ }, + { .compatible =3D "onnn,mt9m114", .data =3D &mt9m114_models_default }, + { .compatible =3D "aptina,mi1040", .data =3D &mt9m114_models_aptina }, + { /* sentinel */ } }; MODULE_DEVICE_TABLE(of, mt9m114_of_ids); =20 --=20 2.51.0