DRM Inquiry

Jani Nikula jani.nikula at linux.intel.com
Fri May 25 06:55:54 UTC 2018


On Fri, 25 May 2018, John Sledge <john_sledget at yahoo.com> wrote:
>  Hi Jani,
> I can now see /dev/drm_dp_aux*.
> I'm not familiar with dd command.Correct me if I'm wrong.
> 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
> dd if=/dev/drm_dp_aux2 seek=723 ibs=2dd of=/dev/drm_dp_aux2 seek=723 ibs=2
> I assumed I could read the brightness msb and lsb using the define in drm_dp_helper.h.
> #define DP_EDP_BACKLIGHT_BRIGHTNESS_MSB     0x722#define DP_EDP_BACKLIGHT_BRIGHTNESS_LSB     0x723

You're mixing hex and decimal numbers, you should probably use bs=1
count=2, dd outputs binary so you probably need to pipe it to hexdump to
see anything, etc. Perhaps start experiments with reading at seek=0.

> 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.

It's a character device, open, seek, read/write. Don't try any ioctls on
it.

Good luck.


BR,
Jani.


>
> #define BRIGHTNESS 0x723
> 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");
>   }
>    if((retcode = ioctl(fd,BRIGHTNESS,&out)) < 0)  {    printf("ioctl failed");  }  else  {    printf("ioctl success");
>   }
>   // trying aux2  if((fd = open("/dev/drm_dp_aux2",O_RDWR)) >=0)  {    printf("open success");  }  else  {    printf("open failed");
>   }
>   if((retcode = ioctl(fd,BRIGHTNESS,&out)) < 0)  {    printf("ioctl failed");  }  else  {    printf("ioctl success");
>   }
>   return 0;}
> Thanks,John
>
>     On Thursday, May 24, 2018, 8:38:02 PM GMT+8, Jani Nikula <jani.nikula at linux.intel.com> wrote:  
>  
>  On Thu, 24 May 2018, John Sledge <john_sledget at yahoo.com> wrote:
>> I was able to update my kernel to 4.6 which has the DRM_DP_AUX_CHARDEV
>> in the Kconfig file linux-4.6\drivers\gpu\drm. Though I also
>> add DRM_DP_AUX_CHARDEV=y in  kernel config. When invoke uname -r, I
>> could see that the kernel is now 4.6.
>
> If you're updating kernels, why not update to a recent kernel that's
> actually supported...?
>
>> How can I verify the DRM_DP_AUX_CHARDEV takes effect or got configure
>> it correctly?
>
> Boot the kernel, run 'ls /dev/drm_dp_aux*'. If you see stuff, you got it
> right.
>
>> It still unclear to me how to follow what you mean by using DRM DP AUX
>> interface and getting /dev/drm_dp_auxN node(s) that allows me to read
>> and write arbitrary DPCD offsets. 
>
> The device is a char device you can open, seek to an offset (which would
> be the DPCD offset), and read. For testing, you can achieve the same
> using dd.
>
> BR,
> Jani.

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the dri-devel mailing list