chromiumos/third_party/chrontel.git
13 months agochrontel: add a thread to report hdmi audio availability to cras. 09/62809/2 factory-4455.B factory-pit-4471.B firmware-pit-4482.B master release-R30-4537.B stabilize-4443.B stabilize-4512.B
Chih-Chung Chang [Mon, 22 Jul 2013 09:58:49 +0000 (17:58 +0800)]
chrontel: add a thread to report hdmi audio availability to cras.

There was a race that if chrontel reports the hdmi audio state before
cras is ready to accept it, the state is lost. Now we will retry after
five seconds.

BUG=chromium:257099
TEST=plug hdmi cable, boot zgb, verify audio goes to hdmi monitor.

Change-Id: Ice407a57a5da0d05c73d10e10618f08fccfe1c20
Reviewed-on: https://gerrit.chromium.org/gerrit/62809
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Chih-Chung Chang <chihchung@chromium.org>
Tested-by: Chih-Chung Chang <chihchung@chromium.org>
17 months agochrontel: update to use the new set_node_attr API. 15/44915/2 factory-4128.B factory-4290.B factory-pit-4280.B factory-pit-4390.B factory-spring-3842.B factory-spring-4131.B factory-spring-4262.B firmware-falco_peppy-4389.B firmware-leon-4389.26.B firmware-spring-3824.4.B firmware-spring-3824.55.B firmware-spring-3824.84.B firmware-spring-3824.B firmware-spring-3833.B firmware-wolf-4389.24.B release-R27-3912.B release-R28-4100.B stabilize-3881.0.B stabilize-3912.79.B stabilize-4008.0.B stabilize-4035.0.B stabilize-4068.0.B stabilize-4100.38.B stabilize-4255.B stabilize-4287.B stabilize-spring-4100.53.B toolchainA toolchainB
Chih-Chung Chang [Fri, 8 Mar 2013 06:45:22 +0000 (14:45 +0800)]
chrontel: update to use the new set_node_attr API.

CQ-DEPEND=CL:44835
BUG=none
TEST=emerge-x86-zgb chrontel
Change-Id: Id466350f63fec56f763f0e386f6ef113c8549b84
Reviewed-on: https://gerrit.chromium.org/gerrit/44915
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Chih-Chung Chang <chihchung@chromium.org>
Tested-by: Chih-Chung Chang <chihchung@chromium.org>
18 months agoReplace the set_plug API with the new set_node_attr API. 72/44172/2
Chih-Chung Chang [Wed, 27 Feb 2013 16:50:05 +0000 (00:50 +0800)]
Replace the set_plug API with the new set_node_attr API.

BUG=chromium-os:39286
TEST=emerge-x86-zgb chrontel

Change-Id: Ia1ee3fd10296925ad5b086f76b9e9ceedcd90ee1
Reviewed-on: https://gerrit.chromium.org/gerrit/44172
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
19 months agoNotify cras when HDMI audio availibility changes, so it can route audio correctly. 32/27032/7 release-R26-3701.B stabilize-3658.0.0 stabilize-3701.30.0 stabilize-3701.30.0b stabilize-3701.46.B stabilize-3701.81.B stabilize-bluetooth-smart toolchain-3701.42.B
Chih-Chung Chang [Tue, 10 Jul 2012 12:16:58 +0000 (20:16 +0800)]
Notify cras when HDMI audio availibility changes, so it can route audio correctly.

BUG=chromium-os:32347
BUG=chromium-os:35238
TEST=run on ZGB, play audio through HDMI, connect and disconnect 3.5mm headset.

Change-Id: Ic4c2d4c35c4a8bc5886e84a319d99d1309353ccb
Reviewed-on: https://gerrit.chromium.org/gerrit/27032
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Chih-Chung Chang <chihchung@chromium.org>
Tested-by: Chih-Chung Chang <chihchung@chromium.org>
22 months agoedid_utils was moved to cras, use the version from there. factory-3536.B release-R25-3428.B stabilize-3428.110.0 stabilize-3428.149 stabilize-3428.149.B stabilize-3428.193 stabilize2 toolchain-3428.65.B
Dylan Reid [Mon, 22 Oct 2012 22:00:36 +0000 (15:00 -0700)]
edid_utils was moved to cras, use the version from there.

BUG=chromium-os:35285
TEST=Play youtube on ZGB, plug and unplug HDMI with both audio capable
and DVI sink devices.

Change-Id: I4f700a97effe022df00e66aa8917b45b58c39e9e
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/36289
Reviewed-by: Chih-Chung Chang <chihchung@chromium.org>
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
2 years agochrontel: Temporary, Fix flicker on external display. factory-2460.B factory-2475.B factory-2569.B factory-2717.B factory-2723.14.B factory-2846.B factory-2848.B factory-2914.B factory-2985.B factory-2993.B factory-3004.B firmware-butterfly-2788.B firmware-link-2695.2.B firmware-link-2695.B firmware-parrot-2685.B firmware-snow-2695.90.B firmware-snow-2695.B firmware-stout-2817.B release-R21-2465.B release-R22-2723.B release-R23-2913.B stabilize stabilize-daisy stabilize-link stabilize-link-2913.278
Todd Broch [Mon, 11 Jun 2012 17:29:30 +0000 (10:29 -0700)]
chrontel: Temporary, Fix flicker on external display.

Its no longer true that the CRTC is active when backlight is set to
zero.  Patch, takes this into account by treating this condition
similarly to the !'DPMS on' case.

This patch may need to be revisited when Nitrous goes live as well.

BUG=chromium-os:31650
TEST=manual,
1. crtc is off at launch of server
backlight-tool --set_brightness 0
/usr/bin/ch7036_monitor -v -d /dev/i2c-chrontel -g/sys/class/gpio/gpio207/value &
sleep 10 ; backlight-tool --set_brightness 100

Result,
external display is undriven until brightness is increased.  Once
brightness is increased, external display show proper image

2. crtc is off after launch of server
/usr/bin/ch7036_monitor -v -d /dev/i2c-chrontel -g/sys/class/gpio/gpio207/value
backlight-tool --set_brightness 0

Result,
external display is driven initially.  When brightness goes to zero
there is a brief flicker, then external display is undriven

I also just connected & disconnected several monitors while and cycled
their backlights.

Change-Id: I68389ee4ef4e44e747168ef0bd803ad429e1311e
Reviewed-on: https://gerrit.chromium.org/gerrit/25027
Tested-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Commit-Ready: Todd Broch <tbroch@chromium.org>

2 years agoAdd 1920x1200 known mode and edid to test it factory-2368.B factory-2394.B
Mark Hayter [Fri, 25 May 2012 17:08:01 +0000 (10:08 -0700)]
Add 1920x1200 known mode and edid to test it

The known_modes timings did not include 1920x1200. Mostly this does
not matter because the monitor provides its own DTD with detailed
timing. But in the case where this is a fallback because we can't
do the higer res monitor timing it may be listed in the standard
modes section of the EDID. Add the CVT modeline for 1920x1200 to
the known_modes so this entry can be used. Add EDID with this
property to test EDIDs.

BUG=chromium-os:31265
TEST=Try on Dell U3011 and faked using -v -E6 -T1 flags

Change-Id: I9ad36f8c93b766e39b3178b346e4f5d84459d3f1
Reviewed-on: https://gerrit.chromium.org/gerrit/23655
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
Commit-Ready: Mark Hayter <mdhayter@chromium.org>

2 years agoaudio-utils: add TODO factory-2305.B factory-2338.B firmware-link-2348.B
Dylan Reid [Tue, 15 May 2012 02:41:53 +0000 (19:41 -0700)]
audio-utils: add TODO

Reminder to fix this when enabling USB audio.

BUG=none
TEST=none

Change-Id: I1fd7f6afad1c06d7f8ceecf1ff2d0d3e536f0fc4
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/22670
Reviewed-by: Todd Broch <tbroch@chromium.org>
2 years agoaudio_utils: Use card zero.
Dylan Reid [Wed, 9 May 2012 01:55:39 +0000 (18:55 -0700)]
audio_utils: Use card zero.

"default" now points to the audio server.  Set the card to "hw:0" so
the internal sound card is addressed.  This will only work until USB
audio devices are enabled and then this functionality will have to be
moved, GAVD knows which device is "internal", that is the device that
must be set.

BUG=chromium-os:30734
TEST=Manual, plug and unplug HDMI monitor from ZGB.

Change-Id: I9e51c34f41e2d99f52995f3b47a95b45e43aad2e
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/22193
Reviewed-by: Todd Broch <tbroch@chromium.org>
2 years agoWhen HDMI is plugged in mute speakers not master.
Dylan Reid [Wed, 11 Apr 2012 02:07:39 +0000 (19:07 -0700)]
When HDMI is plugged in mute speakers not master.

On kernel 3.2, master also mute SPDIF, causing the HDMI to be silent.
Mute Speakers instead.

BUG=chromium-os:28564
TEST=Manual, gmerge chrontel to ZGB and hotplug a TV several times
making sure audio routes to the TV, and that volume and mute controls
continue to function.

Change-Id: I51c2a37c254c51f8b46bc23f76c317d7949f9133
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Reviewed-on: https://gerrit.chromium.org/gerrit/19946
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
2 years agoChrontel screen clearing fix for use with Aura factory-1987.B
Mark Hayter [Thu, 23 Feb 2012 02:54:56 +0000 (18:54 -0800)]
Chrontel screen clearing fix for use with Aura

Aura does not support the bogus_screen_resize flag, but this flag is still
set while there are aura or non-aura builds. Likely we will not add this
hack to Aura (and the blank window hack will work) so prevent the
bogus_screen_resize from being used if aura is used.

A separate fix to the ebuild is needed to define AURA based on the USE
flag. That can safely be pushed after this CL.

BUG=chrome-os-partner:7347
TEST=gmerge, connect 5:4 aspect monitor and check unused area is black

Change-Id: Ida39d7a57c3d82419efa7c3cf33e4e7ec51bb4bb
Reviewed-on: https://gerrit.chromium.org/gerrit/16449
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
Commit-Ready: Mark Hayter <mdhayter@chromium.org>

2 years ago[chrontel] Explicitly enable and disable SPDIF control in audio codec factory-1412.B firmware-kiev-2.112.B firmware-uboot_v2-1299.B release-R17-1412.B release-R18-1660.B
Todd Broch [Wed, 9 Nov 2011 22:30:02 +0000 (14:30 -0800)]
[chrontel] Explicitly enable and disable SPDIF control in audio codec

Previously the default setting of the 'IEC958 Playback Switch' in the
Realtek ALC271x audio codec was defaulted to on.  With the addition of
asound.state files in adhd this is now defaulted to off.

CL explicitly enables and disables 'IEC958 Playback Switch' at
appropriate times.

BUG=chrome-os-partner:5892
TEST=manual,
connect ZGB via HDMI to TV and hear audio.

Change-Id: I1816bd2dc11cde6eb8975600553e02db987678d6
Reviewed-on: https://gerrit.chromium.org/gerrit/11426
Tested-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Dylan Reid <dgreid@google.com>
3 years agochrontel: control audio to allow built-in speakers when external display does 0.15.877.B factory-1020.B factory-1235.B factory-1284.B factory-980.B firmware-881-u-boot-v1 firmware-u-boot-v1 release-1011.B test-982.B
Todd Broch [Wed, 27 Jul 2011 02:51:10 +0000 (19:51 -0700)]
chrontel: control audio to allow built-in speakers when external display does
not support audio.

Chrontel daemon can determine whether external display provides audio
capabilities via its EDID.  Previously the audio codec driver managed the audio
sink without this knowledge making it impossible to use the built-in speakers if
the display didn't support audio.

This change and related CL's allows the chrontel daemon to manage audio sink
when external display is attached such that built-in speakers can be utilized.
Headphones/line out still have highest priority.

Related CL's:
-------------
http://gerrit.chromium.org/gerrit/4786
http://gerrit.chromium.org/gerrit/4789

BUG=chrome-os-partner:3719
TEST=manual,

- installing
  USE="use_alsa_control" emerge-<dut>
  gmerge -n chrontel

- testing (make sure audio sent correctly during)
  - start/stop daemon
  - insert/remove headphones
  - change /etc/init/chrontel.conf's ch7036_monitor invocation to include switch
    -M9 which forces DVI ( no external audio support )

Change-Id: I563785b83dc3b519cd8c5ffd653c80cd116bd43a
Reviewed-on: http://gerrit.chromium.org/gerrit/4788
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Tested-by: Mark Hayter <mdhayter@chromium.org>
3 years agoOptimize chrontel driver for wm bogus_screen_resize use flag 0.14.811.B 780.B
Mark Hayter [Tue, 28 Jun 2011 17:58:10 +0000 (10:58 -0700)]
Optimize chrontel driver for wm bogus_screen_resize use flag

The bogus_screen_resize use flag is passed to the chromeos window
manager to cause it to clear unused areas of the screen when the
chrontel driver passes a (fake) resize event on the root window.
If running with this use flag, which the ebuild turns in to
-DBOGUS_SCREEN_RESIZE, then the driver does not need to put up
the black window for clearing the screen. This removes the messy
wipe effect that happens today.

The window manager fix also makes the login/lock screen work better.

BUG=chrome-os-partner:4380
TEST=gmerge to device, plug in 5:4 monitor check screen clears

Change-Id: I402cbafcc095edf4aa6078e4d8a01f532d711ced
Reviewed-on: http://gerrit.chromium.org/gerrit/3315
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
3 years agoConvert ch7036_monitor.c code to use EDID defines
Mark Hayter [Sat, 18 Jun 2011 22:17:43 +0000 (15:17 -0700)]
Convert ch7036_monitor.c code to use EDID defines

Recent code review of change recommended using defines for the EDID offsets
rather than just the numeric offsets. This does that conversion
for the ch7036_monitor code.

NOTE this CL must be applied after the edid_utils.[ch] CL for this
request. http://gerrit.chromium.org/gerrit/2859

The code was tested by comparing the objdump -d outputs for the original
ch7036_monitor and the new ch7036_monitor code. These show no changes
so the same values must be being provided by the defines as were in
the original code. (First run of test discovered a real difference
so I think it is a reasonable test)

BUG=None
TEST=compare objdump -d disassembly to ensure no changes

Change-Id: I87fdcc88f38d702578e19c2b1f20e87e1382a1e4
Reviewed-on: http://gerrit.chromium.org/gerrit/2861
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Tested-by: Mark Hayter <mdhayter@chromium.org>
3 years agoConvert EDID code to use defines and scrub against CEA-861-D
Mark Hayter [Fri, 27 May 2011 15:55:34 +0000 (08:55 -0700)]
Convert EDID code to use defines and scrub against CEA-861-D

Recent code review of change recommended using defines for the EDID offsets
reather than just the numeric offsets. This does that conversion using
the CEA-861-D standard as the guideline. In addition the standard document
shows a few places where the fields have different meanings from the
previous understanding, and these have been fixed.

This CL only changes the edid_utils code. Fixes in the ch7036_monitor will
be added as a future CL.

Testing uses the ch7036_debug -n E to dump the test EDIDs. Comparing the output
before and after the change reflects the fixed default-GTF flag location
and the improved formatting for the default underscan reporting and the
use of byte 3 of the short audio descriptor for codes 9 to 15.

BUG=None
TEST=Compare test EDID decoding as described

Change-Id: Ifabc8541ebc88367793e4d4cef784b1511a4eec6
Reviewed-on: http://gerrit.chromium.org/gerrit/2859
Reviewed-by: Todd Broch <tbroch@chromium.org>
Tested-by: Mark Hayter <mdhayter@chromium.org>
3 years agoRewrite code to suspend firmware to avoid flicker on testpatterns
Mark Hayter [Fri, 3 Jun 2011 18:23:56 +0000 (11:23 -0700)]
Rewrite code to suspend firmware to avoid flicker on testpatterns

Some monitors are showing flicker or loss of sync on some test patterns.
This has not been completely root-caused but a workaround is to suspend
the Chrontel firmware. This requires reworking the code.

Some sections of the main loop have been pulled into subroutines.

Because the firmware is suspended, the liveness polling of the CH7036 is
changed to use the value of the reset register. This seems to successfully
detect the chip being turned off in suspend.

When a suspend/resume is detected and there was a monitor connected before
suspend and there is still a monitor connected after resume then the
CH7036 is reloaded and the monitor enabled assuming it is the same monitor.
Only then does the firmware get reloaded and the EDID read (which takes a
while). In the best case the monitor is the same and was turned on quickly.
In the bad case the EDID is different so the monitor is turned off and the
resolution reconfigured based on the new EDID.

One the monitor is disconnected the firmware is re-enabled. This seems
to work correctly.

Testing first includes making sure the code still works on the test monitors.
Testing resume can be done by closing/opening lid.
Testing for flicker can be done by running ch7036_monitor by hand without
the -g /sys/class/gpio/gpio207/value flag. This causes HPD detection to be
done by the firmware, hence the firmware cannot be suspended. This will show
the flicker on tft.vanity.dk with the black/white grad test. Then rerun
with the -g /sys/class/gpio/gpio207/value to use gpio detection and allow
the firmware to be suspended.

BUG=chrome-os-partner:3985
TEST=gmerge to device, test with range of monitors, and tv with flicker

Change-Id: Ib11de83ed71c525472774268e606a853ced8798b
Reviewed-on: http://gerrit.chromium.org/gerrit/2221
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
3 years agochrontel: move to boot-services
Scott James Remnant [Mon, 6 Jun 2011 21:42:22 +0000 (14:42 -0700)]
chrontel: move to boot-services

udevd is now started so early that there isn't a writable filesystem;
since this job depends on both, it's a "boot service"

BUG=chromium-os:16079
TEST=booted

Change-Id: I95b995b43d46f6f613aa166edd8bb8f458ccd2d3
Reviewed-on: http://gerrit.chromium.org/gerrit/2334
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
Tested-by: Mark Hayter <mdhayter@chromium.org>
Tested-by: Scott James Remnant <keybuk@chromium.org>
3 years agoAdd framework for experiments and testing
Mark Hayter [Fri, 3 Jun 2011 18:23:56 +0000 (11:23 -0700)]
Add framework for experiments and testing

This change is to enable easier experimentation and testing by adding
a flag that allows setup of a bitvector of test flags to use. One has
been defined for forcing monitor detection because that seems to get
done a lot when debugging problematic monitors. Two additional defines
have been made for experiments (used while developing potential fixes
for chrome-os-partner:3985).

Note this does not fix chrome-os-partner:3985 but is developed as part
of addressing that issue.

BUG=chrome-os-partner:3985
TEST=gmerge and verify that -T1 pypasses detection and enables output

Change-Id: If4b7f6f85698db5d31034b66047fc8aeae846b18
Reviewed-on: http://gerrit.chromium.org/gerrit/2089
Reviewed-by: Todd Broch <tbroch@chromium.org>
Tested-by: Mark Hayter <mdhayter@chromium.org>
3 years agoRestore HDMI info to chrome://system
Mark Hayter [Wed, 8 Jun 2011 03:39:48 +0000 (20:39 -0700)]
Restore HDMI info to chrome://system

Rename .lst file to .sysinfo.lst so it is included in the chrome://system
and feedback

NOTE must be done at same time as ebuild is updated with file name change

BUG=chromium-os:16275
TEST=gmerge to machine and visit chrome://system

Change-Id: I80400f2252fb12fa9cb8182e5d9c90cbccc94542
Reviewed-on: http://gerrit.chromium.org/gerrit/2278
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
3 years agoWhitespace fixes
Mark Hayter [Mon, 23 May 2011 21:21:48 +0000 (14:21 -0700)]
Whitespace fixes

There have long been unfixed whitespace problems. This CL removes tabs
and whitespace at end of line from all code except the code that came
from Chrontel (keep that the same because of future releases).

BUG=none
TEST=git diff -b shows no changes except deleted blank lines

Change-Id: I1397642a56c4e575201aa64e9659af533a914501
Reviewed-on: http://gerrit.chromium.org/gerrit/1392
Reviewed-by: Todd Broch <tbroch@chromium.org>
Tested-by: Mark Hayter <mdhayter@chromium.org>
3 years agoFix EDID parse error and improve test cases 0.13.558.B
Mark Hayter [Thu, 19 May 2011 16:34:43 +0000 (09:34 -0700)]
Fix EDID parse error and improve test cases

This is a cherry pick to ToT of an R12 fix reviewed by tbroch in
gerrit issue 1178

The EDID parser was not using the number of native DTDs field in
the HDMI/CEA extension correctly, potentially causing use of random
values off the end of the array. This is fixed both in the show code
in edid_utils and the code in ch7036_monitor that finds the best DTD.

This fixes the bug reported by testers (exception caused by the code
walking off the end of the array) and improves one of the dogfood
feedback cases (where the code was not looking at enough DTDs).

In addition, to test the fix more test EDIDs have been added and
ch7036_monitor improved to allow them to be forced rather than what
was read from the monitor. (TODO allow them to be read from a file).

Test EDID 3 is the case that test used to cause the crash. This was
tested before and after the other code fix to check the fix worked in
that case. Test EDID 5 is from the feedback where the 1280x720p was
not being discovered by the original code.

ch7036_debug E can be used to dump all the test EDIDs.

ch7036_monitor -E<number> can be used to force test EDID <number>.

BUG=chrome-os-partner:3972
TEST=gmerge to device run debug and monitor -E tests

Change-Id: I570cb696f39440cfed4c9b071e148385a8b2235f
Reviewed-on: http://gerrit.chromium.org/gerrit/1305
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Mark Hayter <mdhayter@chromium.org>
3 years agoRemove unused variable to allow to build with gcc-4.6 0.13.509.B
Mark Hayter [Wed, 11 May 2011 05:01:36 +0000 (22:01 -0700)]
Remove unused variable to allow to build with gcc-4.6

The seenOff variable is no longer used by active code, but is defined
and in a different place initialized. The gcc-4.6 compile fails because
of -Werror=unused-but-set-variable

This removes the definition and initialization.

Note: the bug has details on installing gcc-4.6 but it also needs
to be unmasked in /etc/portage/package.mask/cross-i686-pc-linux-gnu
to test.

BUG=chromium-os:15038
TEST=Build fails before, works after, gmerge to device and code runs

Change-Id: I3036fde3e92c84e7ab28b91962d57607f6ae6330
Reviewed-on: http://gerrit.chromium.org/gerrit/661
Tested-by: Mark Hayter <mdhayter@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
3 years agoFind I2C bus that could have CH7036 instead of guessing
Mark Hayter [Sat, 7 May 2011 22:02:42 +0000 (15:02 -0700)]
Find I2C bus that could have CH7036 instead of guessing

The kernel upgrade made it clear that the use of the default I2C
bus when starting the CH7036 code is fragile. This change adds code
to search for the main I2C (actually SMBus) controller on the tigerpoint.

This code should detect /dev/i2c-2 on the old kernel and (assuming same
assignment order) /dev/i2c-14 on the new kernel.

BUG=chromium-os:15052
TEST=build and run on ToT image. Gmerge to old image to check there too

Change-Id: I0abecfb90052d7024e02da71deeab54ea1292ef4
Reviewed-on: http://gerrit.chromium.org/gerrit/503
Tested-by: Mark Hayter <mdhayter@chromium.org>
Tested-by: Todd Broch <tbroch@chromium.org>
Reviewed-by: Todd Broch <tbroch@chromium.org>
3 years agoImprove pictures for 1280 wide monitors, particularly 1280x720
Mark Hayter [Fri, 29 Apr 2011 17:22:29 +0000 (10:22 -0700)]
Improve pictures for 1280 wide monitors, particularly 1280x720

The small amount of scaling from 1366 to 1280 and 768 to 720 make
for some ugly artifacts when targeting 1280x720. Things can be
improved by just using 1280x720 locally.

The patch does a width fix for 1366 to 1280 and a height fix if
the monitor is smaller. So a reasonable thing happens on 1280x800
16:10 as well as 1280x720 16:9.

Note that 1280x1024 5:4 ratio still uses the existing code for this ratio
because the scale in y looks terrible if you do otherwise.

BUG=chrome-os-partner:617
TEST=Check with 1280x720 and 1280x800 screens, check with -M2, check 1280x1024

Change-Id: Ia51e1762d604312ba2a5de770420d85aa9df3cbe

Review URL: http://codereview.chromium.org/6904103

3 years agoAllow 30 inch monitors to work by rejecting resolutions that are too wide
Mark Hayter [Fri, 29 Apr 2011 17:20:33 +0000 (10:20 -0700)]
Allow 30 inch monitors to work by rejecting resolutions that are too wide

The larger monitors (like the 30 inch ones) have preferred resolutions
larger than can be output over single DVI or than the scaler can produce.

Change the code to reject EDID entries that are too wide.

BUG=chromium-os:14569
TEST=Connect 30 inch monitor observe 2560x1600 is rejected and 1280x800 used

Change-Id: Iabc6aca1fdd8a0707eb99518867bf882803bd75d

Review URL: http://codereview.chromium.org/6883192

3 years agoUpdate to Chrontel 1.41 firmware
Mark Hayter [Fri, 29 Apr 2011 17:16:59 +0000 (10:16 -0700)]
Update to Chrontel 1.41 firmware

This updates to the Chrontel 1.41 firmware that reads and discards
the entire EDID when a monitor is detected. This causes the test
to pass because the entire EDID is read within the required time window.
It has no use for real code, the driver has to read the parts it
needs again later.

The SDTIME1 register lsb in fact controls both audio and video output.
Something in the earlier firmware was hiding the fact that this could
was being set based on audio only. So the control of this bit based on
audio_enable goes away, and monitor_on goes back to a single argument.

BUG=chrome-os-partner:2850
TEST=Check log reports MCU version 1.41, test with range of monitors

Change-Id: Ibade61c4108723c37810b8038ac536b83a964898

Review URL: http://codereview.chromium.org/6903069

3 years agoAdd more fixed modes for testing 0.13.434.B
Mark Hayter [Thu, 21 Apr 2011 23:44:17 +0000 (16:44 -0700)]
Add more fixed modes for testing

Request received from test lab for more fixed modes. Add table entries
provided by Chrontel.

BUG=chrome-os-partner:3177
TEST=Test -M9 -M10 -M11 -M14 check monitor reported resolution

Change-Id: I6393aaa9fc5af1ad13396744a3e085d2207a696e

Review URL: http://codereview.chromium.org/6900003

3 years agoReduce notebook LCD flicker from HDMI insertion
Mark Hayter [Thu, 21 Apr 2011 20:21:22 +0000 (13:21 -0700)]
Reduce notebook LCD flicker from HDMI insertion

First flicker reduction is to remove the monitor on/off that was being
done after gpio HPD detect. All that is needed is to enable DDC (given
that we are not using the detect via chrontel).

Second flicker removal is to remove the resets from the sequence of
register writes from the GenTable code. Added ch_remove_last_reg to
do this.

Fixes audio and DVI selection and stop ch_monitor_on from overwriting
by adding flag to indicate audio state.

Fix whitespace issues prompted by presubmit checks

BUG=chrome-os-partner:3011
TEST=connect range of test monitors, see less local LCD flicker

Change-Id: I924327dba238fa39b51a23b79a999e3038ad00e5

Review URL: http://codereview.chromium.org/6877114

3 years agoFix x width mapping when 720x480 mode is forced using -M1 0.12.392.B
Mark Hayter [Mon, 4 Apr 2011 19:31:00 +0000 (12:31 -0700)]
Fix x width mapping when 720x480 mode is forced using -M1

When the ch7036_monitor code is run with the -M1 flag to force
720x480@60 the aspect ratio cannot be computed (because it is non-standard)
this causes the width remapping to index -1 in the array and get bogus
width data.

This is fixed by not remapping when the aspect is negative.

BUG=chrome-os-partner:2850
TEST=sudo ch7036_monitor -v -M1 check picture remains when monitor attached

Change-Id: Ic0c55bba544b5a890bdeba37a36f85cb28f9c533

Review URL: http://codereview.chromium.org/6693053

3 years agoFix to ensure gpio sysfs driver is running for CH7036 code 0.12.362.B
Mark Hayter [Thu, 24 Mar 2011 19:17:54 +0000 (12:17 -0700)]
Fix to ensure gpio sysfs driver is running for CH7036 code

The chrontel pre-start script makes sure the monitor detect gpio is
exported by the kernel. But it was relying on the kindness of other
code to ensure the gpio driver was actually running. Thus it would
sometimes fail in the boot sequence (but not when run from a shell).

This CL adds a modprobe to ensure the gpio driver is started before
it is used.

The test uses the hdmi_edid entry in chrome://system which will say
No HDMI support if the chrontel fails to start.

BUG=chrome-os-partner:552
TEST=reboot a bunch of times and check HDMI status in chrome://system

Change-Id: I45cc7ae40fcddcbef4beecde4be3bdd2eda9bc04

Review URL: http://codereview.chromium.org/6696065

3 years agoImprove HDMI detection to use GPIO instead of through CH7036
Mark Hayter [Wed, 23 Mar 2011 21:29:11 +0000 (14:29 -0700)]
Improve HDMI detection to use GPIO instead of through CH7036

This change uses a GPIO pin to detect the HDMI HPD signal rather than
using the CH7036. The firmware is still downloaded and runs but the
sequence of kicking the datapath (which was needed for reliable detection)
is avoided. This should prevent the monitor flicker at startup.

Downside is that there is potenrially an additional flicker at display
attatch time (will experiment and submit future CL if this can be avoided)
and detection of loss of CH7036 firmware may be delayed causing longer
startup when a display is attached.

Change adds to the pre-start script to ensure the GPIO is exported and
adds tests to ch7036_debug.

BUG=chrome-os-partner:552
TEST=Boot or resume machine and observe there is no longer flicker

Change-Id: I643de0a07414ec5aaabbff54b19644f1a4d56b14

Review URL: http://codereview.chromium.org/6676069

3 years agoAdded ext library to chrontel -l list so that it is explicitly passed to the linker. 0.11.241.B 0.11.257.B 0.11.257.B90 11.1.241.B
Raymes Khoury [Fri, 17 Sep 2010 17:07:06 +0000 (10:07 -0700)]
Added ext library to chrontel -l list so that it is explicitly passed to the linker.
Without this, the package won't link with the gold linker. This is not a gold bug.

Change-Id: Iaca7ecc74155e2ab0ac439c88437f502a38de448

BUG=
TEST=

Review URL: http://codereview.chromium.org/3443005

4 years agoAdd inherit-review-settings-ok
Mandeep Singh Baines [Fri, 27 Aug 2010 20:38:05 +0000 (13:38 -0700)]
Add inherit-review-settings-ok

BUG=none
TEST=none

Review URL: http://codereview.chromium.org/3238006

4 years agoUpdate Chrontel fw and code for rev D chips (as well as rev A)
Mark Hayter [Thu, 26 Aug 2010 18:43:03 +0000 (11:43 -0700)]
Update Chrontel fw and code for rev D chips (as well as rev A)

New drop of GenTableCH7036 from Chrontel. They requested GetDefault
and associated copy of array be moved to ch7036_access. Changes to
this code and the other code is to allow for two revisions of CH7036
and the changed firmware that is needed to support both.

ch7036_access: Support new fw data area, move register default values,
               add debug.

ch7036_monitor: Add mode table for DVI version of 1920x1080
                Add command flags to print and force mode from table
                (Helps with debug of new GenTable issues)
                Add command flags for fixing X to full width (debug)
                Add support for different revs of CH7036 and new GenTable

fw7036.bin: Update to revision 1.4 (rev 1.2 was problematic)

BUG=chrome-os-partner:678
TEST=gmerge on device, test with a range of monitors/tvs

Test note: when testing watch image for a resonable time, an
intermediate version of fw/GenTable showed instability after time
with the picture initially stable but jumping to a new stable but
rotated position after 8-16 seconds for certain output resolutions.

Change-Id: Iea6dc3cabd82cc1e3d761864ebe82c1f59d7e577

Review URL: http://codereview.chromium.org/3199014

4 years agoAdapt better to hdmi TVs and log reasoning and EDID for about:system
Mark Hayter [Tue, 3 Aug 2010 15:53:05 +0000 (08:53 -0700)]
Adapt better to hdmi TVs and log reasoning and EDID for about:system

Create file for about:system and install lst file to include it

Change EDID printing to take FILE* rather than using printf to allow
EDID to be written to file (for about:system) this helps debug and will
be returned to us with bug reports

Fix size code for quirks seen on HDMI TVs. If there is an hdmi extension
(added edid_has_hdmi_info() to edid_utils) and the screen is 16:9 then
assume it needs scaling for overscan. In this case as well as the scale
paramete to the Chrontel timing generation need to change the info-frame
to indicate this is being done (added ch_change_reg() to ch7036_access to
allow this). Some HDMI TVs seem to have better info in their extension block
so take a look there.

BUG:chrome-os-partner:563
TEST: Plug device into a bunch of monitors/TVs, check picture and about:system

Review URL: http://codereview.chromium.org/3034044

4 years agoImport latest Chrontel code
Mark Hayter [Sat, 31 Jul 2010 01:03:59 +0000 (18:03 -0700)]
Import latest Chrontel code

1)  Add GenTableCH7036_outcfg() so the output can be configured as LVDS
    and HDMI seperatly or both. The resgiter table will be much shorter
    if LVDS only.

2)  AVI Infoframe Scan inofrmation default to underscan. (Note: many TV
    actaully will not underscane even AVI info frame specifies. You may
    need use MK_SCALE to make sure underscan on all TV).

3)  Add MK_PIXEL_HDMI_INT so the output can be force to be interlace
    for special purpose.

4) Tune the power control bits for different outcfg mode to save power.

Note: used tkdiff to selectively merge changes. A side effect is these
files now have proper (not dos) line termination.

BUG: chrome-os-partner:513
TEST: gmerge on to device

Review URL: http://codereview.chromium.org/3052018

4 years agoFix files to remove DOS line terminations
Mark Hayter [Thu, 29 Jul 2010 20:12:53 +0000 (13:12 -0700)]
Fix files to remove DOS line terminations

Note: this may need to be done again on new imports from Chrontel
In emacs:
type M-x  set-buffer-file-coding-system RET and choose `undecided-unix'

BUG: chrome-os-partner:555
TEST: Use git diff -w to ensure only whitespace has changed

Review URL: http://codereview.chromium.org/3061031

4 years agoAdd fixes for HDMI out when screen blanks or system goes to sleep
Mark Hayter [Thu, 29 Jul 2010 01:43:38 +0000 (18:43 -0700)]
Add fixes for HDMI out when screen blanks or system goes to sleep

This is mostly in _monitor where firmware loading has moved into the
main loop and firmware liveness is now checked by requesting version

Screen state is detected by asking X server about DPMS state. Off indicates
there is no output to LCD (different from backlight off) so Chrontel
can't mirror anything to HDMI.

Clean up some debug messages

Select from two timeouts for mcu_version (long one when fw reloaded)

Split edid header check into new function

BUG=chrome-os-partner:435,chrome-os-partner:436
TEST=gmerge onto test machine and be patient while it blanks/sleeps etc

Review URL: http://codereview.chromium.org/3005030

4 years agoAllow Chrontel to be started earlier in upstart sequence
Mark Hayter [Wed, 21 Jul 2010 04:24:57 +0000 (21:24 -0700)]
Allow Chrontel to be started earlier in upstart sequence

This addresses partner tracker 434 and allows the hdmi to work on the
login screen (there is some delay while the chrontel and monitor
sort things out). Also speeded up firmware loading.

EDID scanning has been improved to extract the HDMI and audio info

Review URL: http://codereview.chromium.org/3005002

4 years agoFirst build with Chrontel and ChromeOS code for HDMI out using CH7036
Mark Hayter [Wed, 30 Jun 2010 23:11:28 +0000 (16:11 -0700)]
First build with Chrontel and ChromeOS code for HDMI out using CH7036

NOTE: ebuild and DEPS will be commited shortly

Fixed Chrontel code to build with our (strict) compiler
Added GetDefault utitlity routine to Chrontel code

First version of ChromeOS files for user space driver

Default .gitignore

Add README to indicate source for files

Review URL: http://codereview.chromium.org/2884012

4 years agoinitialize with code from Chrontel
Mark Hayter [Tue, 29 Jun 2010 01:07:36 +0000 (18:07 -0700)]
initialize with code from Chrontel