Embedded Intel Atom® Processors
Technological Conversations about Intel Atom® Hardware, Software, Firmware, Graphics

IEGD API for Windows Embedded

FMett
Beginner
5,648 Views

First-time poster and relatively new user here. Thanks for your patience and help. Sorry if this isn't the right place to be asking this question.

Is there an API for Windows XP embedded SP3 that has the same functionality as is provided in IEGDGUI.exe? I'd like to be able to programmatically set displays to clone mode and set the resolution and bit depth.

Thanks.

0 Kudos
1 Solution
FMcNu1
Valued Contributor I
3,785 Views

Hi fm:

Good news, it appears that your community account has been upgraded to private status which provides you with access to Intel Confidential material.

You can find the IEGD API documentation that you requested in the e-Help desk by http://embedded.communities.intel.com/message/2381 http://embedded.communities.intel.com/message/2381" target="_self" rel="nofollow">clicking here.

Hope this helps.

Good Luck!

View solution in original post

0 Kudos
31 Replies
FMcNu1
Valued Contributor I
2,887 Views

Hi fm123456789:

Welcome to the Intel® Embedded Design Center community. You've come to the right place with your question on IEGD. Let's see if someone out there in the community will be able to help you out.

If the "fm" in your username are your initials, then you must be a good guy. Same initials as mine.

Thanks

0 Kudos
Kirk_B_Intel
Employee
2,887 Views

There is some good news and some bad news. There is an API for controlling IEGD- we have special Windows "escape" functions that give you control over setting a wide range of the driver capability including setting clone (or twin, etc.).

The bad news is that currently the document for the API is classified "Intel Confidential" so you need to have an NDA with us, plus it is helpful to have an Intel "Premier Support" account to access it. Do you have either of those?

There is discussions of possibly including sample code and docusmentation is a future relase, but it is just talk at this point.

0 Kudos
FMett
Beginner
2,887 Views

Thanks for the info. Can you tell me how I would go about setting up the NDA and obtaining the API? I've applied for an "e-Help desk" account but haven't heard back yet.

Thanks.

0 Kudos
FMcNu1
Valued Contributor I
2,887 Views

The first step will be getting the NDA in place, unless your company perhaps already has one. This is done via the Intel sales channel. Do you know your Intel representative? Your source for your Intel parts can facilitate that connection if you don't already have that relationship. In most cases that would be a distributor or local rep firm in your area. If you still don't know who to contact, try the "Need more help?" box at the bottom left of your screen. To be honest I've never personally tried that so I don't know how long it takes to get a response. Again, your source for the Intel parts is probably your best bet.

The NDA is a prerequisite for access to the e-Help desk.

Hope this helps.

0 Kudos
FMcNu1
Valued Contributor I
3,786 Views

Hi fm:

Good news, it appears that your community account has been upgraded to private status which provides you with access to Intel Confidential material.

You can find the IEGD API documentation that you requested in the e-Help desk by http://embedded.communities.intel.com/message/2381 http://embedded.communities.intel.com/message/2381" target="_self" rel="nofollow">clicking here.

Hope this helps.

Good Luck!

0 Kudos
FMett
Beginner
2,887 Views

That's exactly what I was looking for. Thanks!

Any idea why this is regarded as secret by Intel?

Regards,

FM

0 Kudos
Stewart_C_Intel
Employee
2,887 Views

Unfortunately the reasoning behind why some docs are "secret" or Intel Confidential, is in itself a secret.:manvery-happy: Its not quite as obtuse as getting an APP approved, for example for the iPhone, it's usually just for pre-launch or pre-release silicon. As the IEGD s/w has been out for a while now, it's probably just a historical artifact. By that I mean the original author has moved on to another project, and its never been de-classified. I know the Program Manager for IEGD so I'll ask him the reasoning.

Follow me at @intel_stewart on twitter..

0 Kudos
DDeMe1
Beginner
2,887 Views

Well is seems crazy? I'm starting work on an embedded system based on an Atom board but I can't get enough information to control the backlight on the LVDS LCD? How can I develop a system without this level of information? Don't I need the esc mechanism to do this?

Microsoft documents IOCTL_VIDEO_QUERY_SUPPORTED_BRIGHTNESS but this doesn't seem to return any data, so the generic interface to use instead of IEGD esc doesn't seem to work and the controls are secret?

Do I understand this correctly - seems amazing, if true?

0 Kudos
Kirk_B_Intel
Employee
2,887 Views

As for the IEGD User Interface, the source for the IEGD UI is usually included in the release (from 10.2 on) under the SDK directory for the Windows driver install in the plugins\window in the ZIP file you will find there. This should show you how to use the various escape functions in the driver.

For backlight control- that is a little bit of a sticky subject. There are many ways the backlight can be wired up to the chipset. The driver, be default, will automatically turn the LVDS backligh on and off as needed using the "typical" method. If you blank the display using the Windows DPMS command, the driver will turn off the backlight, and enable it when the display unblanks. Other than that, there are no exposed APIs to control the backlight unless you write something directly to the chipset to toggle the backlight control directly.

Hope this helps

0 Kudos
DDeMe1
Beginner
2,887 Views

Well, that partially answers the question. There are two components of the backlight - on/off and brightness. The on/off does work, but brightness does not seem to, as best I can tell. The brightness is supposed to be driven by a PWM signal, and the driver is supposed to have LVDS configuration values (attribute:70 INTENSITY) that sets the PWM waveform. But I don't see any change of the output on my board which is supposed to be driving a pin on the backlight connector based on this chip signal. I can't prove its not the board, but the discussion on backlight is pretty ambiguous in the driver user's guide.

I did see the esc sequences in an include file (iegd_escape.h) but this is pretty obscure - nowhere can I find any API document. So, I'll experiment.

But the idea is to make development easier by using someone's driver, board, etc. If I have to reverse engineer it, thats wasted time. Thanks.

0 Kudos
FMcNu1
Valued Contributor I
2,887 Views

Hi DonLPI

Welcome to the Intel® Embedded Community.

You mentioned that you are using "someone else's board". Have you checked with the board vendor to see if they have other developers doing something similar? If you don't already have a relationship with the board vendor, if it is one of the member companies of the Intel® Embedded Alliance, if you could share which company perhaps I can hook you up with a contact there...

Good Luck,

Felix

0 Kudos
DDeMe1
Beginner
2,887 Views

We are working with Advantech AIMB-210. I do have a tech contact there.

A big problem is the ambiguity in IEGD documentation and to some extent configuration. I need to talk to the driver to control the backlight contrast and On/Off.

The board has 2 interfaces, both VGA and LVDS. I see no difference in the voltage on the brightness pin regardless of how I configure the IEGD LVDS brightness [Backlight Control Method = Port Driver, Attribele ID 70 = n]. So what does this tell me: config requires some additional condition I don't understand? Driver doesn't fully support this board? Board is bad? Something else?

Ive started to experiment based on the SDK and can do Win32 ExtEscape() sequences to get some driver level information - so I know I'm talking to the driver. But the IEGD escape sequences are only documented (as best I can tell) in the .h file - and that documentation is ambiguous or at least sparse.

So, if there is better documentation on this API, we'd be willing to sign a non-disclosure to get it or some sample code that really shows how to access the LVDS separately for control functions. The SDK shows some simple case examples, but does not make it clear how the ports are assigned/accessed (e.g. iegdsample.cpp does not call functioniegd_get_disp_port_mapping). I guess I'll wade through the code to try to figure it out, but I'm spending an awful long time on something that shouldn't be this hard.

Thanks for any help.

0 Kudos
FMcNu1
Valued Contributor I
2,887 Views

There is an additional IEGD API doc that you could access if you upgrade your community member status to "private". Private status also gives you access to the e-Help desk which is staffed by Intel technical staff who support select processors including Atom.

If you are interested, go here to request the upgrade: http://edc.intel.com/My-Account.aspx http://edc.intel.com/My-Account.aspx" target="_self" rel="nofollow">http://edc.intel.com/My-Account.aspx

It will normally require and NDA and the process takes a couple days.

Hope this helps

Felix

0 Kudos
DDeMe1
Beginner
2,887 Views

Thanks - I requested the upgrade at the end of last week. I hope to have someone contact me soon. It helps to know that this document exists. I appreciate your reply.

0 Kudos
DDeMe1
Beginner
2,887 Views

ll still no contact from Intel re NDA. In the mean time, I've gotten some escape driver functions working from my test XP application. One of them is to view the port attributes and I do see that attribute 70 (Intensity) is shown as I configure it in the IEGD driver.

According to the 945GSE chip manual, LBKLT_CTL is listed as an output on some pages (Pg 404), but called the PWM Clock input on Pg 45. We have assumed that this is the output signal that should be driving the backlight intensity. So, can someone please tell me if I'm correct about this signal function. Also, can anyone confirm that the driver really drives this signal as configured. When we look at it with a scope we see 0.18 volts and what looks like noise. I'm trying to figure out if a) we don't understand or b) driver doesn't handle this correctly or c) board is broken. But, without understanding a) and b) its hard to deduce c).

Thank you!

0 Kudos
Kirk_B_Intel
Employee
2,887 Views

Have you tried playing with attribute 71 and 72? In particular, attr 72 was added because apparently there are multiple ways to control the back light intensity. The default for the driver is to use a pure PWM method, however, if your board is wired differently, you might need 72 to be a 1 to get Legacy + PWM mode and that does some magical hardware thing to the chipset that makes backlight control work differently from the default.

Then inverter frequency might need to be tweaked depnding on where the PWM signal is coming from to make any sort of difference.

The API doc will help, but you may have already figured out most of the private interface in the ESC functions.

(BTW: The escapes header is intentionally vague because that is primarily our internal communications method which is subject to change without notice- thus what woarks on one driver may be dramtaically different on another.)

0 Kudos
DDeMe1
Beginner
2,887 Views

Thanks for your help. I tried all of these parameters without success - we're looking at the PWM signal on the scope, while tempoarily wiring the LCD's inverter to 100\% brightness via a fixed level. We don't see anything that looks like a PWM pulse. We're talking with Advantech, but I might be dead before its resolved. I may move to another Atom based board vendor - but it would also use IEGD.

My big concerns from the IEGD perspective is can I get enough info to design and implement the system, not just backlight. This includes early display of a logo during the boot-up sequence and any other tricks I might need play to implement our application. Hopefully, having a more priveledged account will get me more info and I can figure things out myself - thats my goal.

0 Kudos
Kirk_B_Intel
Employee
2,887 Views

Not all board vendors follow our recommendations for handling backlight control. I believe some ignore the PWM capability and just provide an on or off capability- maybe that is the case here. I wish I could tell you what to look for in the hardware but I am I driver guy and THAT part of the hardware is part of the black magic. :smileywink:

The User's Guide contains a wealth of information about the driver. It includes information on our EFI Video Driver (VBIOS for an EFI environement) that supports a Splash Screen capability that sounds exactly like what you want for a logo. If you can get an EFI based BIOS for your platform, that would solve at least that need.

The API doc that gets you more exposure into the inner workings of the driver, but as is the case with most graphics solutions, there is a lot of "secret sauce" (IP) in there that the legal folks want to keep secret (as in Intel Top Secret for our stuff).

0 Kudos
DDeMe1
Beginner
2,887 Views

According to the board vendor, they have some issues with LVDS PWM with the BIOS when single channel LVDS is used. But, I would think that the driver would set the PWM output correctly even if the BIOS doesn't. Using a test BIOS, they've showed me a PWM square wave from a scope, so the board does support PWM.

The driver doesn't use the BIOS, correct - This is only for boot time displays?

The board support people suggest that LBB register (LBES field) needs to be set to drive this. I don't know if this is set by attribute 70 (INTENSITY)? Its not clear to me that LBB really controls brightness or if it just generates an interrupt to cause driver or BIOS software to do something.

The IEGD attributes description is a little confusing - should attribute 0 be used in any way? It seems like attribute 70 should be sufficient - in conjunction with 71 and 72, or does legacy mode require some more attribute settings?

If a breif description of if or how LBB relates to the driver is possible, I'd appreciate it. Otherwise I'll wait til the NDA lets me see more detailed documentation.

Thanks.

0 Kudos
Kirk_B_Intel
Employee
2,815 Views

>According to the board vendor, they have some issues with LVDS PWM with the BIOS when single channel LVDS is used. But, I would think that the driver would set the PWM output correctly even if the BIOS doesn't.

Well, we assume the BIOS knows what it is doing so we try to leave control of those sorts of things up to the firware that is supposed to be written specifically for the board.

>Using a test BIOS, they've showed me a PWM square wave from a scope, so the board does support PWM.

Good.

>The driver doesn't use the BIOS, correct - This is only for boot time displays?

The driver does not call the BIOS but for many settings assumes the BIOS set up the hardware correctly.

>The board support people suggest that LBB register (LBES field) needs to be set to drive this. I don't know if this is set by attribute 70 (INTENSITY)? Its not clear to me that LBB really controls brightness or if it just generates an interrupt to cause driver or BIOS software to do something.

I've not had deallings with the LBB register, do you have access to a chip person through your field rep?

>The IEGD attributes description is a little confusing - should attribute 0 be used in any way? It seems like attribute 70 should be sufficient - in conjunction with 71 and 72, or does legacy mode require some more attribute settings?

Attribute 0 is the video brightness control which is different from the backlight brightness (although the visual effect is similar). Think of Brightness and Contrast as color correction values for the color drive and backlight as a control of the amount of light that shines through the LCD. You can crank brightness all the way up but if the backlight is turned down you will not see the over driven video.

>If a breif description of if or how LBB relates to the driver is possible, I'd appreciate it. Otherwise I'll wait til the NDA lets me see more detailed documentation.

Thanks.

There is absolutly 0 references to an LBB register in our driver source. I would need more detials from your contact to figure out what they are talking about. My guess is that your board vendor's BIOS sets it and we just leave it set however the BIOS thought is supposed to be left set.

Hope this helps.

0 Kudos
Reply