diff options
author | Dafna Hirschfeld <dafna.hirschfeld@collabora.com> | 2021-03-09 07:38:29 +0100 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2021-03-11 02:13:28 +0200 |
commit | e32d33b11d6a20d6b8f5ddd102c9083b42f15d55 (patch) | |
tree | 4f9bed806537fffc1cbc1c14478e4a97ee0e6253 /src/libcamera/pipeline/rkisp1/rkisp1.cpp | |
parent | f4fe8cf58820c171d6d355001ff4bdf17484275a (diff) |
ipa: rkisp1: Fail on init if hw revision is not RKISP1_V10
In kernel 5.11 the rkisp1 uapi had changed to support different hardware
revisions. Currently only revision 10 is supported by the rkisp1 IPA and
therefore 'init' should fail if the revision is not 10.
This changes depends on the kernel driver reporting the hardware
revision, and thus requires the rkisp1 driver from v5.11 or newer.
Signed-off-by: Dafna Hirschfeld <dafna.hirschfeld@collabora.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/pipeline/rkisp1/rkisp1.cpp')
-rw-r--r-- | src/libcamera/pipeline/rkisp1/rkisp1.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/libcamera/pipeline/rkisp1/rkisp1.cpp b/src/libcamera/pipeline/rkisp1/rkisp1.cpp index 34814f62..4376d720 100644 --- a/src/libcamera/pipeline/rkisp1/rkisp1.cpp +++ b/src/libcamera/pipeline/rkisp1/rkisp1.cpp @@ -85,7 +85,7 @@ public: { } - int loadIPA(); + int loadIPA(unsigned int hwRevision); Stream mainPathStream_; Stream selfPathStream_; @@ -300,7 +300,7 @@ RkISP1FrameInfo *RkISP1Frames::find(Request *request) return nullptr; } -int RkISP1CameraData::loadIPA() +int RkISP1CameraData::loadIPA(unsigned int hwRevision) { ipa_ = IPAManager::createIPA<ipa::rkisp1::IPAProxyRkISP1>(pipe_, 1, 1); if (!ipa_) @@ -309,7 +309,11 @@ int RkISP1CameraData::loadIPA() ipa_->queueFrameAction.connect(this, &RkISP1CameraData::queueFrameAction); - ipa_->init(IPASettings{}); + int ret = ipa_->init(hwRevision); + if (ret < 0) { + LOG(RkISP1, Error) << "IPA initialization failure"; + return ret; + } return 0; } @@ -952,7 +956,7 @@ int PipelineHandlerRkISP1::createCamera(MediaEntity *sensor) isp_->frameStart.connect(data->delayedCtrls_.get(), &DelayedControls::applyControls); - ret = data->loadIPA(); + ret = data->loadIPA(media_->hwRevision()); if (ret) return ret; @@ -984,6 +988,12 @@ bool PipelineHandlerRkISP1::match(DeviceEnumerator *enumerator) if (!media_) return false; + if (!media_->hwRevision()) { + LOG(RkISP1, Error) + << "The rkisp1 driver is too old, v5.11 or newer is required"; + return false; + } + /* Create the V4L2 subdevices we will need. */ isp_ = V4L2Subdevice::fromEntityName(media_, "rkisp1_isp"); if (isp_->open() < 0) |