/*
*/
#include "efb.h"
#include "efb_edid.h"
static int efb_initial_steps(efb_private_t *, int);
static int efb_verify_checksum(uint8_t *);
static void efb_set_scl(void *, int, int);
static void efb_set_sda(void *, int, int);
static int efb_get_scl(void *, int);
static int efb_get_sda(void *, int);
static void efb_ddc_clk(void *, int, int);
10000
};
int
{
int status;
int count;
/* Write address to monitor */
break;
}
}
if (status != EFB_I2C_OK) {
return (status);
}
/* read data from monitor */
if (status != EFB_I2C_OK) {
return (status);
}
if (status != EFB_I2C_OK) {
return (status);
}
return (status);
}
static int
{
int status;
int i;
/*
* Why nine stops? Presumably because if we've interrupted a
* data transfer, this will be guaranteed to clear it.
*/
for (i = 0; i < 9; ++i) {
}
/* Ok, now try to start a transfer to the monitor */
if (status != EFB_I2C_OK) {
return (status);
}
if (status != EFB_I2C_OK) {
return (status);
}
return (status);
}
static int
{
int status;
int i;
for (i = 0; i < *len - 1; ++i) {
if (status != EFB_I2C_OK) {
return (status);
}
++data;
}
/* Final byte terminates transfer, even if monitor had more */
if (status != EFB_I2C_OK) {
return (status);
}
return (efb_verify_checksum(initial));
}
static int
{
int i;
for (i = 0; i < 128; ++i) {
}
return (checksum & 0xff);
}
/*
* Implement basic functions to toggle SDA and SCL lines when querying EDID
*
* DDC registers (RRG-215R6-01-01oem.pdf Section 2.21 on Page 156)
*/
static void
{
switch (stream) {
case 0:
break;
case 1:
break;
case GPIO_DDC1:
case GPIO_DDC2:
case GPIO_DDC3:
break;
default:
return;
}
if (value == 0) {
} else {
}
}
static void
{
switch (stream) {
case 0:
break;
case 1:
break;
case GPIO_DDC1:
case GPIO_DDC2:
case GPIO_DDC3:
break;
default:
return;
}
if (value == 0) {
} else {
}
}
static int
{
int rval;
switch (stream) {
case 0:
break;
case 1:
break;
case GPIO_DDC1:
case GPIO_DDC2:
case GPIO_DDC3:
break;
default:
return (0);
}
return (rval);
}
static int
{
int rval;
switch (stream) {
case 0:
break;
case 1:
break;
case GPIO_DDC1:
case GPIO_DDC2:
case GPIO_DDC3:
break;
default:
return (0);
}
return (rval);
}
static void
{
drv_usecwait(n * CLOCK_INTERVAL);
}