From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mark Hounschell Subject: Re: [Intel-gfx] drm_kms_helper problems Date: Sun, 21 Oct 2012 14:18:43 -0400 Message-ID: <50843C83.8040801@cfl.rr.com> References: <508409FC.6080805@cfl.rr.com> <20121021165802.578d6d6b@neptune.home> Reply-To: dmarkh@cfl.rr.com Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: QUOTED-PRINTABLE Return-path: In-Reply-To: <20121021165802.578d6d6b@neptune.home> Sender: linux-kernel-owner@vger.kernel.org To: =?UTF-8?B?QnJ1bm8gUHLDqW1vbnQ=?= Cc: linux-kernel@vger.kernel.org, "markh@compro.net >> Mark Hounschell" , Intel Graphics Development List-Id: intel-gfx@lists.freedesktop.org Hi Bruno, On 10/21/2012 10:58 AM, Bruno Pr=C3=A9mont wrote: > Hi mark, > > On Sun, 21 October 2012 Mark Hounschell wrote: >> I have a TV that appears to not provide proper EDID info to the HDMI= or DVI >> ports of my Intel DH77DF motherboard. I received some pointers from = this >> list that pointed me in the direction of creating my own EDID file a= nd I >> now have a binary blob that matches what the service manual says is = the >> proper EDID info. >> >> But I am unable to get the drm_kms_helper module to load and use thi= s file. >> My relevant kernel config options are. >> >> CONFIG_DRM_KMS_HELPER=3Dm >> CONFIG_DRM_LOAD_EDID_FIRMWARE=3Dy >> >> my relevant kernel command line contains: >> >> video=3Dcard0-HDMI-A-1:e >> drm_kms_helper.edid_firmware=3Dcard0-HDMI-A-1:edid/lg42lb9df_hdmi1.e= did > > The variant without card0- should be the right one. > OK. Changed it. What if I had more than one video card? >> The edid file: >> # ls -al /lib/firmware/edid/lg42lb9df_hdmi1.edid >> -rw-r--r-- 1 root root 256 Oct 16 05:46 /lib/firmware/edid/lg42lb9df= _hdmi1.edid >> >> connector info from /sys/class/drm/ >> >> card0 card0-DP-1 card0-DP-2 card0-DP-3 card0-HDMI-A-1 card0-HDM= I-A-2 >> card0-HDMI-A-3 card0-VGA-1 controlD64 version >> Which should I use? HDMI-A-1, HDMI-A-2, or HDMI-A-3? Why re there 3?? >> And I don't really understand why I have 3 entries for the one hdmi = port? >> Nor do I really understand _exactly_ how to define the connector in = my >> kernel command line or which of the 3 connectors from /sys I should = be >> using. I've tried different variants. Ie. card0-HDMI-A-1and HDMI-A-1= =2E >> >> The results in the kernel log file remain: >> >> [ 1.879654] drm_kms_helper: Unknown parameter `edid' > > As your drm_kms_helper is built modular, did you try not putting that > parameter on kernel cmdline but rather put it in modprobe's configura= tion > for that module? (may doing the whole loading manually). > I've created a /etc/modprobe.d/20-drm_kms_helper.conf with: options drm_kms_helper edid_firmware=3DHDMI-A-1:edid/lg42lb9df_hdmi1.ed= id and now I'm getting something different. It looks like it's trying. In = fact=20 I actually get a screen on the TV now. It's not 1920x1080 but 1024x768 = at=20 60hz. [ 1.883124] load_module: Calling parse_args for module =3D drm_kms_h= elper=20 args =3D edid_firmware=3DHDMI-A-1:edid/lg42lb9df_hdmi1.edid [ 1.883126] [ 1.883126] parse_args: (1) Entered for drm_kms_helper [ 1.883127] [ 1.883127] parse_args: (2) Entered for drm_kms_helper [ 1.883127] parse_args: doing =3D drm_kms_helper [ 1.883128] parse_args: args =3D=20 edid_firmware=3DHDMI-A-1:edid/lg42lb9df_hdmi1.edid =46\xffffffc9\xfffffff8h\xffffff89\xffffff86\xffffffc0\xffffff80\xfffff= fff\xffffffff\xffffffd4R\xffffffc9\xfffffff8TF\xffffffc9\xfffffff88\xff= ffff89\xffffff86\xffffffc0\xffffffa4\xffffffff\xffffffffdF\xffffffc9\xf= ffffff8 [ 1.883129] parse_args: num =3D 2 [ 1.883130] parse_args: min_level =3D -32768 [ 1.883131] parse_args: max_level =3D 32767 [ 1.883132] =46\xffffffc9\xfffffff8h\xffffff89\xffffff86\xffffffc0\xffffff80\xfffff= fff\xffffffff\xffffffd4R\xffffffc9\xfffffff8TF\xffffffc9\xfffffff88\xff= ffff89\xffffff86\xffffffc0\xffffffa4\xffffffff\xffffffffdF\xffffffc9\xf= ffffff8,=20 num=3D2, min_level=3D-32768, max_level=3D32767 [ 1.886855] =2E =2E =2E [ 2.132749] [drm] forcing HDMI-A-1 connector ON [ 2.132752] [drm] forcing HDMI-A-2 connector ON [ 2.132753] [drm] forcing HDMI-A-3 connector ON [ 2.189769] [drm:edid_load] *ERROR* Requesting EDID firmware=20 "edid/lg42lb9df_hdmi1.edid" failed (err=3D-2) I get a couple of the above messages. [ 2.388623] [drm:drm_edid_block_valid] *ERROR* EDID checksum is inva= lid,=20 remainder is 130 [ 2.388631] Raw EDID: [ 2.388635] 00 ff ff ff ff ff ff 00 ff ff ff ff ff ff ff ff > # modprobe drm_kms_helper edid_firmware=3DHDMI-A-1:edid/lg42lb9df_hdm= i1.edid > I can't seem to rm the modules already loaded to try this. > I have no idea why it fails for you, here on the systems I have it wo= rks > fine (on one where everything is built into the kernel I did set the = cmdline > arguments via CONFIG_CMDLINE=3D"..." (having CONFIG_CMDLINE_BOOL=3Dy)= =2E > >> I assume I am doing something wrong but I have put some debug printk= s in >> kernel/params.c that shows me every call made to it and it's params.= It is >> entered many times and I see a sequence to in the log file. As an ex= ample, >> the last one to call with params before drm_kms_helper is "late" and= here >> are my debug prints for it: > > Did you check that your bootloader get things right, e.g. if results = are the > same no matter in which order you put the kernel parameters (and if t= here are > some non-ASCII values in there). > As you have quite some length of parameters there could be some buffe= r size > issue. > (take this as just wild guessing) > The bootloader file is clean. Want me to send a complete dmesg again? Mark