From nobody Thu Apr 2 20:09:44 2026 Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) (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 9BA593587A8 for ; Thu, 12 Feb 2026 12:23:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770899014; cv=none; b=PijMYjFCBKOca8UjW+P5CXpKB/q5UqF/1p3yxFkGosWoITskZ8NjY2M02taSl59w9P0Hh7bhc3rAtw2GtvM96NLbzEaZIFR/z9glSPggbCW37ehGSDtSZxYAoDlOTaRqXE1X6FHMkYBDlaTC0UCv5pCjxdBn15dBhq3l6czgTwI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770899014; c=relaxed/simple; bh=pW74V5cFkrxHAUpolR7r8O1D0nnf5KOsjp09vfB2x7g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=L9ztI+UHyyu6OKRg9y3PtdAMedgUAbjFwHHVVoEqSfSyY3QzXLyrQVxDN5cDRPFNNiwZhQvDn+tw04cR6eqETzTGDsHo4tdkT7mnOU4MJ5C1qPjMbJzx5BurC2ldD7Nh2dNDbCt4kL2rm9btp0GRHuQadlwR9+IhmhWdYr3WA7w= 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=aFohFSa7; arc=none smtp.client-ip=209.85.218.42 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="aFohFSa7" Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-b8f86167d39so154562566b.0 for ; Thu, 12 Feb 2026 04:23:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1770899011; x=1771503811; 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=mcC35f9Jziu32RgFmxZhKjABLtU2XS673ijWTDginX0=; b=aFohFSa7ThyqqB9TT+qEDboTtcQn9e2qAE0f4TvJTpn6/MI1D5ug6QXW3cLxoASn+j 4OooAeDe4C7sfyAXyt0rmJqa8g33iSciOriIn07V5qIwD2IWOSsETklj19ocQDnMS49T lDAGYXnr8mLXEaIkTAdKkdd4iihbldeYrOWfVp7iBaUkUGqZayhwcgK9bGakz0B0OU8S 5vfMkIVZF8E2t1bwBlWw5yXpF76kPLqWSR7zWZCMWjTOtZUMjXVn9MimKMtxPtVeOtk4 5u2Icydj7j1eDDIsTjAm6Xfe4NyrtM1cmHbPjuLkgbiDFzowBMfoB2oPVnOtQFPiWo/X YJVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770899011; x=1771503811; 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=mcC35f9Jziu32RgFmxZhKjABLtU2XS673ijWTDginX0=; b=KU17bIRWYJ0tSLBepCbqhAnUMPcTuhil4kBsZeeSyIpXzyAVtFUmLKa7nLwpVBgzNJ eA0rU3WbpdfkhUA/qa+65NkXnmzo19WJ3VN80A2PrsfnYDjg4PWoA77+NyjdFKEt4ZE6 5+520rcj7rydS2y2BTVnxK+ixDcn84KkFEsSDMo9ZvDUIcwuntNsEsLsaJpTeiJRBfD1 h2aWdfkjdW5zzAyCF3b304XMyJxUqtR+IjQ2PSP/+AR1Nb3NaOA8zpEomppRo4dsL0kj i5LV4xvRF5NjlHA38Y/m/ORACSYXRdBwc8Xs9woO6L6aTHqogLBeBRV/4edAdfp0skxS TDPQ== X-Forwarded-Encrypted: i=1; AJvYcCUPtEF5sOARMhIBDA/RW+21iBgjP57PCxEbeieeaCapKrmGzK+HFbm6oj805g9Q3ornTvSFEbwMf68lrYQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyoIca4S+Cd+nmrHvPmRIIPzs3r6Ao8kMwZWchXHJH0kT8x81ir J7Tvwa5PanBhH4J61U+IxFE2skXNQ0Xu77XiNkmPTLoKSfoxZZ+/Gts2 X-Gm-Gg: AZuq6aLA0VfO81GjKceUiQAtkm9XdL61esyPOro6jIvYWREa8U14lJgf5KJ4ik7VW4L ptJvNCQNRiccNFMJVO/UsxSybLrDlrY3fLIvt12sumevF8H7b9iA+w/cB2uoVzJfX5zlCkmBbbI F9AKgFGPUoX2F9zmwu/0CC6O4R7CFiGAsW8zn+eeGafG7IL1nvoIY7jroEc4o+GvGtcovhb/F+Y wLVu7SY8CNVEbFnmpnF5M/STBMAzrCEXBLTPy6RLgqo8o1GtK0xss3aP1k/shDmfeQrHim9QOOk 59r9kUA1qrWwHbIZh+PorKYcXnl50xd9x8JH+asHkjZ74IiGAtPdAkwjSy55lxhHhc67JYI6V9K 1FdJKIiZrqmo4dHoIIRrFKZdSnqp8huFEuMISAeizoUBQPEJ14GR5Oz5YRwNibUufJjv6CXnt47 MZVyMK1xgZc1G8ONEqS38yLec= X-Received: by 2002:a17:907:1c81:b0:b8f:7a08:9e43 with SMTP id a640c23a62f3a-b8f92cbf524mr107164766b.59.1770899010619; Thu, 12 Feb 2026 04:23:30 -0800 (PST) Received: from xeon ([188.163.112.48]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b8f6ec1c753sm155603466b.45.2026.02.12.04.23.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 12 Feb 2026 04:23:30 -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 v2 2/2] media: i2c: mt9m114: add support for Aptina MI1040 Date: Thu, 12 Feb 2026 14:23:02 +0200 Message-ID: <20260212122302.29211-3-clamor95@gmail.com> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260212122302.29211-1-clamor95@gmail.com> References: <20260212122302.29211-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_polling flag to diverge models and address quirk found in MI1040. Signed-off-by: Svyatoslav Ryhel --- drivers/media/i2c/mt9m114.c | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/drivers/media/i2c/mt9m114.c b/drivers/media/i2c/mt9m114.c index d5b142fe68a9..a4b021702a1f 100644 --- a/drivers/media/i2c/mt9m114.c +++ b/drivers/media/i2c/mt9m114.c @@ -373,6 +373,10 @@ enum { * Data Structures */ =20 +struct mt9m114_model_info { + bool state_polling; +}; + enum mt9m114_format_flag { MT9M114_FMT_FLAG_PARALLEL =3D BIT(0), MT9M114_FMT_FLAG_CSI2 =3D BIT(1), @@ -422,6 +426,8 @@ struct mt9m114 { =20 struct v4l2_ctrl *tpg[4]; } ifp; + + const struct mt9m114_model_info *info; }; =20 /* -----------------------------------------------------------------------= ------ @@ -2279,9 +2285,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_polling) { + ret =3D mt9m114_poll_state(sensor, MT9M114_SYS_STATE_STANDBY); + if (ret < 0) + goto error_clock; + } =20 return 0; =20 @@ -2527,6 +2535,8 @@ static int mt9m114_probe(struct i2c_client *client) if (ret < 0) return ret; =20 + sensor->info =3D device_get_match_data(dev); + /* Acquire clocks, GPIOs and regulators. */ sensor->clk =3D devm_v4l2_sensor_clk_get(dev, NULL); if (IS_ERR(sensor->clk)) { @@ -2641,9 +2651,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_polling =3D true, +}; + +static const struct mt9m114_model_info mt9m114_models_aptina =3D { + .state_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