I use iMX8MMINI in combination with pico-pi evaluation board. I'm trying to connect adv7282-m converter (with mainline driver https://github.com/TechNexion/linux-tn-imx/blob/tn-imx_5.10.72_2.2.0-next/drivers/media/i2c/adv7180.c) to the Camera2 mipi interface. I got it initalized on the i2c and mipi busses, clocks and data seem to start flowing judging by the oscillograph readings. On attempt to record data with gstreamer, however, no frames are recorded into file. Module doesn't seem to throw errors, but gstreamer throws warning of impossibility to subscribe v4l2src events
I modified driver to output some extra logs in attempt to trace the error, but didn't get much luck out of it
To anyone with the same problem, I found this thread very useful in obtaining the image. The main problem is that the actual data stream in the driver begins before the `MIPI CSI` bridge expects any data to arrive, so no interrupts will occur. To solve this, move enabling of CSI-TX from `adv7180_set_power()` function to `adv7180_s_stream()` and it should start working at least partially.
The other problem still remains is `base address change error` in the DMA buffer, but commenting out DMA buffer refresh on this interrupt solves the deal for me, at least for now. Using the other instructions present in the thread I managed to obtaied the continuous picture from the ADV7282A-M.
Be warned though, that `V4L2` system may not use the `adv7180_querystd()`, which may lead to using the `NTSC` standard that may not coincide with your camera standard. To try fixing this, look at the `adv7180_probe()` function assignment of
To anyone with the same problem, I found this thread very useful in obtaining the image. The main problem is that the actual data stream in the driver begins before the `MIPI CSI` bridge expects any data to arrive, so no interrupts will occur. To solve this, move enabling of CSI-TX from `adv7180_set_power()` function to `adv7180_s_stream()` and it should start working at least partially.
The other problem still remains is `base address change error` in the DMA buffer, but commenting out DMA buffer refresh on this interrupt solves the deal for me, at least for now. Using the other instructions present in the thread I managed to obtaied the continuous picture from the ADV7282A-M.
Be warned though, that `V4L2` system may not use the `adv7180_querystd()`, which may lead to using the `NTSC` standard that may not coincide with your camera standard. To try fixing this, look at the `adv7180_probe()` function assignment of
I researched and tried lots of different shinanigans from that time. I managed to acquire several frames from the decoder with gstreamer using very strange approach. I noticed that when I try to capture video with gstreamer, mxc interrupt never happens from the debug. Accidentally I caught interrupts by trying to capture video from FFMpeg, stopping the recording without writing to the file and starting the gstreamer capture afterwards. With this sequence Gstreamer prompted me with a timer that froze on 0.01 and a file with single frame and growing size with time left to me
I noticed that second dma buffer is never being read 'base address switching Change Err' error occurs and dma is being wiped all the time, so I disabled this functionality and this way managed to extend the "recording" time to 0.3 seconds, also I noticed that the second buffer now was being filled and read, however, the recording always stopped at around 0.2-0.3 seconds and nothing got captured afterwards, despite the fact that data flow could be observed with the oscilloscope as well as with dma debug
04198400 00000002 00080007 00000002 ion 00161325 Attached Devices: Total 0 devices attached
Total 6 objects, 7659520 bytes
When the timer is displayed in gstreamer the number of dma_buff objects shown with the debug is doubled compared with situations when there's no timer
After receiving at least some results I decided to attempt to at least replicate the result with my target 5.4.70 Linux Kernel version. However, it seems that changes in the v4l2 driver in newer version introduced this bug and absolutely no image is being acquired in older version with the adv7282a-m mainline driver on my side
From what I understand, the problem is on the intersection of mxc csi bridge and adv7282a-m and Mainline driver doesn't have enough instruction "details" to inform the csi bridge via v4l2 API. Is that correct? If yes, what should be done to enable proper communication with the csi bridge without completely rewriting the driver? Thanks for any help
0
Kudos
Reply
'
var data = div.getElementsByClassName("video-js");
var script = document.createElement('script');
script.src = "https://players.brightcove.net/" + data_account + "/" + data_palyer + "_default/index.min.js";
for(var i=0;i< data.length;i++){
videodata.push(data[i]);
}
}
}
for(var i=0;i< videodata.length;i++){
document.getElementsByClassName('lia-vid-container')[i].innerHTML = videodata[i].outerHTML;
document.body.appendChild(script);
}
}
catch(e){
}
/* Re compile html */
$compile(rootElement.querySelectorAll('div.lia-message-body-content')[0])($scope);
}
if (code_l.toLowerCase() != newBody.getAttribute("slang").toLowerCase()) {
/* Adding Translation flag */
var tr_obj = $filter('filter')($scope.sourceLangList, function (obj_l) {
return obj_l.code.toLowerCase() === newBody.getAttribute("slang").toLowerCase()
});
if (tr_obj.length > 0) {
tr_text = "This content was translated from lilicon-trans-text using AI-assisted tools.".replace(/lilicon-trans-text/g, tr_obj[0].title);
tr_text +='View original';
try {
if ($scope.wootMessages[$rootScope.profLang] != undefined) {
tr_text = $scope.wootMessages[$rootScope.profLang].replace(/lilicon-trans-text/g, tr_obj[0].title);
tr_text +='View original';
}
} catch (e) {
}
} else {
//tr_text = "This message was translated for your convenience!";
tr_text = "lilicon-trans.your.convenience";
}
try {
if (!document.getElementById("tr-msz-" + value)) {
var tr_para = document.createElement("P");
tr_para.setAttribute("id", "tr-msz-" + value);
tr_para.setAttribute("class", "tr-msz");
tr_para.style.textAlign = 'justify';
var tr_fTag = document.createElement("IMG");
tr_fTag.setAttribute("class", "tFlag");
tr_fTag.setAttribute("alt", "Translate icon");
// tr_fTag.setAttribute("title", "Disclaimer for Translate icon");
tr_fTag.setAttribute("src", "/html/assets/translate-icon.svg");
tr_para.appendChild(tr_fTag);
var container = document.createElement('span');
container.innerHTML = tr_text;
//var tr_textNode = document.createTextNode(container);
tr_para.appendChild(container);
/* Woot message only for multi source */
if(rootElement.querySelector(".lia-message-body-content").previousElementSibling != null && rootElement.querySelector(".lia-message-body-content").previousElementSibling.getAttributeNames().includes("data-generation-timestamp")){
rootElement.querySelector(".lia-message-body-content").previousElementSibling.remove()
}
if(rootElement.querySelector(".lia-quilt-forum-message")){
rootElement.querySelector(".lia-quilt-forum-message .lia-message-body").insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector(".lia-message-view-blog-topic-message")) {
rootElement.querySelector(".lia-message-view-blog-topic-message .lia-message-body").insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector(".lia-quilt-blog-reply-message")){
rootElement.querySelector(".lia-quilt-blog-reply-message .lia-message-body").insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector(".lia-quilt-tkb-message")){
rootElement.querySelectorAll(".lia-quilt-tkb-message .lia-message-body")[0].insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector(".lia-quilt-tkb-reply-message")){
rootElement.querySelectorAll(".lia-quilt-tkb-reply-message .lia-message-body")[0].insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector(".lia-quilt-idea-message")){
rootElement.querySelector(".lia-quilt-idea-message .lia-message-body").insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector(".lia-quilt-idea-reply-message")){
rootElement.querySelector(".lia-quilt-idea-reply-message .lia-message-body").insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
} else if(rootElement.querySelector('.lia-quilt-occasion-message')){
rootElement.querySelector('.lia-quilt-occasion-message .lia-message-body').insertBefore(tr_para,rootElement.querySelector(".lia-message-body-content"));
}
else {
if (rootElement.querySelectorAll('div.lia-quilt-row-footer').length > 0) {
rootElement.querySelectorAll('div.lia-quilt-row-footer')[0].appendChild(tr_para);
} else {
rootElement.querySelectorAll('div.lia-quilt-column-message-footer')[0].appendChild(tr_para);
}
}
}
} catch (e) {
}
}
} else {
/* Do not display button for same language */
// syncList.remove(value);
var index = $scope.syncList.indexOf(value);
if (index > -1) {
$scope.syncList.splice(index, 1);
}
}
}
}
}
}
/*if(mszList_l.length <= 0){
setTimeout(()=>{
var mszListl = [];
angular.forEach(document.querySelectorAll("[class*='lia-js-data-messageUid']"), function(element) {
var mszId = element.getAttribute("data-lia-message-uid");
if (mszId != null) {
mszListl.push(mszId);
}
});
var mszListid = mszListl;
console.log("mszListl:",mszListl);
},2000)
}else{
var mszListid = mszList_l;
}*/
console.log("mszList_l:",mszList_l.length);
angular.forEach(mszList_l, function (value) {
if (document.querySelectorAll('div.lia-js-data-messageUid-' + value).length > 0) {
var rootElements = document.querySelectorAll('div.lia-js-data-messageUid-' + value);
}else if(document.querySelectorAll('.lia-occasion-message-view .lia-component-occasion-message-view').length >0){
var rootElements = document.querySelectorAll('.lia-occasion-message-view .lia-component-occasion-message-view')[0].querySelectorAll('.lia-occasion-description')[0];
}else {
var rootElements = document.querySelectorAll('div.message-uid-' + value);
}
angular.forEach(rootElements, function (rootElement) {
if (value == '1630527' && "ForumTopicPage" == "TkbArticlePage") {
rootElement = document.querySelector('.lia-thread-topic');
}
/* V1.1 Remove from UI */
if (document.getElementById("tr-msz-" + value)) {
document.getElementById("tr-msz-" + value).remove();
}
if (document.getElementById("tr-sync-" + value)) {
document.getElementById("tr-sync-" + value).remove();
}
/* XPath expression for subject and Body */
var lingoRBExp = "//lingo-body[@id = "+"'lingo-body-"+value+"'"+"]";
lingoRSExp = "//lingo-sub[@id = "+"'lingo-sub-"+value+"'"+"]";
/* Get translated subject of the message */
lingoRSXML = doc.evaluate(lingoRSExp, doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for(var i=0;i 0){
angular.forEach(document.querySelectorAll(".PageTitle"), function(subEle) {
subEle.textContent = sub_L;
});
}
}
}
// Label translation
try{
var labelEle = document.querySelector("#labelsForMessage");
if(!labelEle){
labelEle = document.querySelector(".LabelsList");
}
if(labelEle) {
var listContains = labelEle.querySelector('.label');
if (listContains) {
/* Commenting this code as bussiness want to point search with source language label */
// var tagHLink = labelEle.querySelectorAll(".label")[0].querySelector(".label-link").href.split("label-name")[0];
var lingoLabelExp = "//lingo-label/text()";
trLabels = [];
trLabelsHtml = "";
/* Get translated labels of the message */
lingoLXML = doc.evaluate(lingoLabelExp, doc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var labelsLength = document.querySelector(".LabelsList").querySelectorAll(".label").length;
var labelSnapshotLength = lingoLXML.snapshotLength;
if (labelsLength == labelSnapshotLength){
for (var k = 0; k < lingoLXML.snapshotLength; k++) {
//trLabels.push(lingoLXML.snapshotItem(i).textContent);
if (k != 0) {
//trLabelsHtml = trLabelsHtml + '