<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Helvetica Neue";
        panose-1:0 0 0 0 0 0 0 0 0 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Looks like the seek=%d in the sprintf is not working. 0x11 0x0A are being returned by the monitor from DPCD’s 0x0000 and 0x0001 repeatedly. The first is DPCD revision (1.1) and the second is maximum Link Rate (0x0a) which is 2.7 Gbps. You
 might want to do a printf of call to make sure seek is being set correctly. <o:p>
</o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Which brings up another issue: eDP Backlight Brightness LSB is at hex 0x723 or 1827 decimal. You might also want to confirm your panel supports DPCD backlight adjustment by reading DPCD 0x701 and confirm bit 0 is set.  <o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Clint<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><a name="_____replyseparator"></a><b>From:</b> Intel-gfx <intel-gfx-bounces@lists.freedesktop.org>
<b>On Behalf Of </b>John Sledge<br>
<b>Sent:</b> Friday, May 25, 2018 1:11 AM<br>
<b>To:</b> dri-devel@lists.freedesktop.org; Jani Nikula <jani.nikula@linux.intel.com><br>
<b>Cc:</b> intel-gfx@lists.freedesktop.org<br>
<b>Subject:</b> Re: [Intel-gfx] DRM Inquiry<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">Hi Jani,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">I seek 0-800 and here's what I get, all 11 0A in hex. Not sure if this is the brightness value of the display. I also did a test, when I disconnect the DP to the display
 and execute the dd commands, it would say error reading 'dev/drm_dp_aux1': Connection timed out. So I think my display setup is okay and the 11 0A values are really coming out from the display.<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif;color:black"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif;color:black">Output in hex:<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif;color:black">11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A
 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A 11 0A ....<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif"><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">int main(int argc, char **argv)<o:p></o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">{<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">int ret = 0;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">int offset = 0;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">char call[100];<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">for(offset=0;offset<800;offset++)<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">{<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">sprintf(call,"dd if=/dev/drm_dp_aux1 bs=1 count=2 seek=%d >> out.txt",offset);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">ret = system(call);<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">}<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">    return 0;<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">}<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">Regards,<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif">John<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif"><o:p> </o:p></span></p>
</div>
</div>
<div>
<p class="MsoNormal"><span style="font-size:7.5pt;font-family:"Helvetica Neue",sans-serif"><o:p> </o:p></span></p>
</div>
<div id="yahoo_quoted_8022113972">
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue",sans-serif;color:#26282A">On Friday, May 25, 2018, 2:56:04 PM GMT+8, Jani Nikula <<a href="mailto:jani.nikula@linux.intel.com">jani.nikula@linux.intel.com</a>> wrote:
<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue",sans-serif;color:#26282A"><o:p> </o:p></span></p>
</div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue",sans-serif;color:#26282A"><o:p> </o:p></span></p>
</div>
<div>
<div>
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue",sans-serif;color:#26282A">On Fri, 25 May 2018, John Sledge <<a href="mailto:john_sledget@yahoo.com">john_sledget@yahoo.com</a>> wrote:<br>
>  Hi Jani,<br>
> I can now see /dev/drm_dp_aux*.<br>
> I'm not familiar with dd command.Correct me if I'm wrong.<br>
> Possible commands i tried and nothing happen:dd if=/dev/drm_dp_aux1 seek=723 ibs=2dd of=/dev/drm_dp_aux1 seek=723 ibs=2<br>
> dd if=/dev/drm_dp_aux2 seek=723 ibs=2dd of=/dev/drm_dp_aux2 seek=723 ibs=2<br>
> I assumed I could read the brightness msb and lsb using the define in drm_dp_helper.h.<br>
> #define DP_EDP_BACKLIGHT_BRIGHTNESS_MSB     0x722#define DP_EDP_BACKLIGHT_BRIGHTNESS_LSB     0x723<br>
<br>
You're mixing hex and decimal numbers, you should probably use bs=1<br>
count=2, dd outputs binary so you probably need to pipe it to hexdump to<br>
see anything, etc. Perhaps start experiments with reading at seek=0.<br>
<br>
> From here, I was thinking if I could try to open \dev\drm_dp_aux* then read the brightness offset 0x723, though not sure how to proceed with it.I was able to successfully open \dev\drm_dp_aux1 and \dev\drm_dp_aux2 but I thinking I'm wrong when I proceed to
 ioctl because they all failed.<br>
<br>
It's a character device, open, seek, read/write. Don't try any ioctls on<br>
it.<br>
<br>
Good luck.<br>
<br>
<br>
BR,<o:p></o:p></span></p>
<div id="yqtfd45039">
<p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Helvetica Neue",sans-serif;color:#26282A"><br>
Jani.<br>
<br>
<br>
><br>
> #define BRIGHTNESS 0x723<br>
> int main(int argc, char ** argv){  int fd;  int retcode;  char out[128];    if((fd = open("/dev/drm_dp_aux1",O_RDWR)) >=0)  {    printf("open success");  }  else  {    printf("open failed");<br>
>   }<br>
>    if((retcode = ioctl(fd,BRIGHTNESS,&out)) < 0)  {    printf("ioctl failed");  }  else  {    printf("ioctl success");<br>
>   }<br>
>   // trying aux2  if((fd = open("/dev/drm_dp_aux2",O_RDWR)) >=0)  {    printf("open success");  }  else  {    printf("open failed");<br>
>   }<br>
>   if((retcode = ioctl(fd,BRIGHTNESS,&out)) < 0)  {    printf("ioctl failed");  }  else  {    printf("ioctl success");<br>
>   }<br>
>   return 0;}<br>
> Thanks,John<br>
><br>
>    On Thursday, May 24, 2018, 8:38:02 PM GMT+8, Jani Nikula <<a href="mailto:jani.nikula@linux.intel.com">jani.nikula@linux.intel.com</a>> wrote: 
<br>
>  <br>
>  On Thu, 24 May 2018, John Sledge <<a href="mailto:john_sledget@yahoo.com">john_sledget@yahoo.com</a>> wrote:<br>
>> I was able to update my kernel to 4.6 which has the DRM_DP_AUX_CHARDEV<br>
>> in the Kconfig file linux-4.6\drivers\gpu\drm. Though I also<br>
>> add DRM_DP_AUX_CHARDEV=y in  kernel config. When invoke uname -r, I<br>
>> could see that the kernel is now 4.6.<br>
><br>
> If you're updating kernels, why not update to a recent kernel that's<br>
> actually supported...?<br>
><br>
>> How can I verify the DRM_DP_AUX_CHARDEV takes effect or got configure<br>
>> it correctly?<br>
><br>
> Boot the kernel, run 'ls /dev/drm_dp_aux*'. If you see stuff, you got it<br>
> right.<br>
><br>
>> It still unclear to me how to follow what you mean by using DRM DP AUX<br>
>> interface and getting /dev/drm_dp_auxN node(s) that allows me to read<br>
>> and write arbitrary DPCD offsets. <br>
><br>
> The device is a char device you can open, seek to an offset (which would<br>
> be the DPCD offset), and read. For testing, you can achieve the same<br>
> using dd.<br>
><br>
> BR,<br>
> Jani.<br>
<br>
-- <br>
Jani Nikula, Intel Open Source Graphics Center<br>
_______________________________________________<br>
dri-devel mailing list<br>
<a href="mailto:dri-devel@lists.freedesktop.org">dri-devel@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/dri-devel" target="_blank">https://lists.freedesktop.org/mailman/listinfo/dri-devel</a><o:p></o:p></span></p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>