You can subscribe to this list here.
2004 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2005 |
Jan
(1) |
Feb
(4) |
Mar
(4) |
Apr
|
May
|
Jun
(4) |
Jul
(3) |
Aug
(5) |
Sep
(18) |
Oct
(1) |
Nov
(5) |
Dec
(2) |
2006 |
Jan
|
Feb
(7) |
Mar
(11) |
Apr
(2) |
May
(4) |
Jun
(12) |
Jul
(7) |
Aug
(6) |
Sep
(5) |
Oct
(5) |
Nov
|
Dec
(1) |
2007 |
Jan
|
Feb
|
Mar
(1) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
(1) |
Oct
(2) |
Nov
(1) |
Dec
|
2008 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
|
Oct
|
Nov
|
Dec
|
2009 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(1) |
Dec
(5) |
2010 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
|
May
(2) |
Jun
(1) |
Jul
(2) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
|
2011 |
Jan
|
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2012 |
Jan
(5) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(7) |
Oct
|
Nov
|
Dec
(2) |
2013 |
Jan
(3) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Vitaly V. B. <vi...@bu...> - 2013-01-16 16:54:48
|
15.01.2013 13:28, Lars Tobias Skjong-Børsting пишет: > Hello Vitaly, > > On 12/8/12 12:30 PM, Vitaly V. Bursov wrote: > >> AMD ADL is a part of the proprietary AMD Catalyst driver that is capable to >> provide access to displays' DDC interface. And it looks like there is no >> other way to implement DDC/CI on a Catalyst (direct PCI access for >> newer adapters is broken, no /dev/i2c either). > > The patches don't apply on the latest code in git. Could you rebase your > work on the latest develop branch in git and send again? > > You'll find the code here: gi...@gi...:ddccontrol/ddccontrol.git > > Thanks! > That's odd, I made patches against SFs git tree and this one looks the same, probably mail client ate the patch. Both patched are attached this time. |
From: Lars T. Skjong-B. <li...@sn...> - 2013-01-15 11:28:55
|
Hello Vitaly, On 12/8/12 12:30 PM, Vitaly V. Bursov wrote: > AMD ADL is a part of the proprietary AMD Catalyst driver that is capable to > provide access to displays' DDC interface. And it looks like there is no > other way to implement DDC/CI on a Catalyst (direct PCI access for > newer adapters is broken, no /dev/i2c either). The patches don't apply on the latest code in git. Could you rebase your work on the latest develop branch in git and send again? You'll find the code here: gi...@gi...:ddccontrol/ddccontrol.git Thanks! -- Best regards, Lars Tobias Skjong-Børsting |
From: Lars T. Skjong-B. <li...@sn...> - 2013-01-08 12:22:25
|
Hi Vitaly, Thanks for your patches! I'll review and apply the patches soon and release a new version. -- Regards, Lars Tobias On 12/8/12 12:30 PM, Vitaly V. Bursov wrote: > Hello! > > AMD ADL is a part of the proprietary AMD Catalyst driver that is capable to > provide access to displays' DDC interface. And it looks like there is no > other way to implement DDC/CI on a Catalyst (direct PCI access for > newer adapters is broken, no /dev/i2c either). > > Patch provides adapter and display enumeration (probing) and access to the > corresponding i2c bus functionality (EDID, DDC/CI). > > Device naming scheme is like this: "adl:<adapter>:<display>". > > Please note that for unknown reason ADL thinks that there's multiple > active adapters and yet they're the same. > > > diff --git a/src/lib/amd_adl.c b/src/lib/amd_adl.c > new file mode 100644 > index 0000000..40ca909 > --- /dev/null > +++ b/src/lib/amd_adl.c > @@ -0,0 +1,306 @@ > +/* > + ddc/ci interface functions header > + Copyright(c) 2012 Vitaly V. Bursov (vi...@bu...) > + > + This program is free software; you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation; either version 2 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program; if not, write to the Free Software > + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > +*/ > + > +#include "config.h" > + > +#ifdef HAVE_AMDADL > +#include <errno.h> > +#include <stdlib.h> > +#include <stdio.h> > +#include <fcntl.h> > +#include <string.h> > +#include <unistd.h> > +#include <sys/types.h> > +#include <sys/stat.h> > +#include <stdint.h> > +#include <dlfcn.h> > + > +#define MAX_DISPLAYS (64) > + > +#ifndef LINUX > +#define LINUX /* not Windows */ > +#endif > +#include <ADL/adl_sdk.h> > + > +#include "amd_adl.h" > +#include "ddcci.h" > + > +#if 1 > +# define D(x) > +#else > +# define D(x) x > +#endif > + > +struct adl_state { > + int initialized; > + > + void *lib; > + > + int (*ADL_Main_Control_Create)(ADL_MAIN_MALLOC_CALLBACK, int ); > + int (*ADL_Main_Control_Destroy)(); > + > + int (*ADL_Adapter_NumberOfAdapters_Get)(int *lpNumAdapters); > + int (*ADL_Adapter_AdapterInfo_Get)(LPAdapterInfo lpInfo, int iInputSize); > + int (*ADL_Display_NumberOfDisplays_Get)(int iAdapterIndex, int *lpNumDisplays); > + int (*ADL_Display_DisplayInfo_Get)(int iAdapterIndex, int *lpNumDisplays, ADLDisplayInfo **lppInfo, int iForceDetect); > + int (*ADL_Display_DDCBlockAccess_Get)(int iAdapterIndex, int iDisplayIndex, int iOption, int iCommandIndex, int iSendMsgLen, char *lpucSendMsgBuf, int *lpulRecvMsgLen, char *lpucRecvMsgBuf); > + > + struct _displays { > + int adapter_index; > + int display_index; > + } displays[MAX_DISPLAYS]; > + int displays_count; > +}; > + > +static struct adl_state *adl; > + > +static void* __stdcall adl_malloc (int size) > +{ > + void* buffer = malloc (size); > + if (buffer) > + memset(buffer, 0, size); > + return buffer; > +} > + > +static void __stdcall adl_free ( void **buffer ) > +{ > + if (*buffer != NULL) { > + free (*buffer); > + *buffer = NULL; > + } > +} > + > +int amd_adl_get_displays_count() > +{ > + if (!adl->initialized) > + return -1; > + > + return adl->displays_count; > +} > + > +int amd_adl_get_display(int idx, int *adapter, int *display) > +{ > + if (!adl->initialized) > + return -1; > + > + if (idx < 0 || idx >= adl->displays_count) > + return -1; > + > + if (adapter) > + *adapter = adl->displays[idx].adapter_index; > + if (display) > + *display = adl->displays[idx].display_index; > + > + return 0; > +} > + > +int amd_adl_check_display(int adapter, int display) > +{ > + int i; > + > + if (!adl->initialized) > + return -1; > + > + for (i=0;i<adl->displays_count;i++){ > + if (adl->displays[i].adapter_index == adapter && > + adl->displays[i].display_index == display) > + return 0; > + } > + return -1; > +} > + > +int amd_adl_i2c_read(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len) > +{ > + int res; > + char wbuf = addr << 1 | 1; > + > + res = adl->ADL_Display_DDCBlockAccess_Get(adapter, display, 0, 0, 1, &wbuf, (int*)&len, (char*)buf); > + > + D(fprintf(stderr, " >>>>>>>> adl i2c r on %d:%d a %x l %d err %d\n", adapter, display, addr, len, res)); > + > + if (res != ADL_OK){ > + return -1; > + } > + > + return len; > +} > + > +int amd_adl_i2c_write(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len) > +{ > + int res, rlen; > + char *wbuf = alloca(len+1); > + > + wbuf[0] = addr << 1; > + memcpy(&wbuf[1], buf, len); > + > + rlen = 0; > + res = adl->ADL_Display_DDCBlockAccess_Get(adapter, display, 0, 0, len+1, wbuf, &rlen, NULL); > + > + D(fprintf(stderr, " >>>>>>>> adl i2c w on %d:%d a %x l %d err %d\n", adapter, display, addr, len, res)); > + > + if (res != ADL_OK){ > + return -1; > + } > + > + return len; > +} > + > + > +int amd_adl_init() > +{ > + int i; > + int res; > + int adapters_count; > + AdapterInfo *adapter_info; > + > + adl = adl_malloc(sizeof(struct adl_state)); > + > + if (!adl){ > + fprintf(stderr, "ADL error: malloc failed\n"); > + return 0; > + } > + > + adl->lib = dlopen("libatiadlxx.so", RTLD_LAZY|RTLD_GLOBAL); > + if (!adl->lib){ > + if (get_verbosity()) > + perror("ADL error: dlopen() failed\n"); > + return 0; > + } > +#define LOADFUNC(_n_) \ > + do { \ > + adl->_n_ = dlsym(adl->lib, #_n_); \ > + if (!adl->_n_) { \ > + fprintf(stderr, "ADL error: loading symbol %s\n", #_n_); \ > + return 0; \ > + } \ > + } while (0) > + > + LOADFUNC(ADL_Main_Control_Create); > + LOADFUNC(ADL_Main_Control_Destroy); > + > + LOADFUNC(ADL_Adapter_NumberOfAdapters_Get); > + LOADFUNC(ADL_Adapter_AdapterInfo_Get); > + LOADFUNC(ADL_Display_NumberOfDisplays_Get); > + LOADFUNC(ADL_Display_DisplayInfo_Get); > + LOADFUNC(ADL_Display_DDCBlockAccess_Get); > + > +#undef LOADFUNC > + > + res = adl->ADL_Main_Control_Create(adl_malloc, 1); // retrieve adapter information only for adapters that are physically present and enabled > + > + if (res != ADL_OK){ > + if (get_verbosity()) > + fprintf(stderr, "Failed to initialize ADL: %d\n", res); > + return 0; > + } > + > + res = adl->ADL_Adapter_NumberOfAdapters_Get(&adapters_count); > + if (res != ADL_OK){ > + if (get_verbosity()) > + fprintf(stderr, "Failed to get number of ADL adapters: %d\n", res); > + return 0; > + } > + > + if (adapters_count < 1){ > + if (get_verbosity()) > + fprintf(stderr, "No ADL adapters found.\n"); > + return 0; > + } > + > + adapter_info = adl_malloc(sizeof(AdapterInfo) * adapters_count); > + if (!adapter_info){ > + fprintf(stderr, "ADL error: malloc failed\n"); > + return 0; > + } > + > + res = adl->ADL_Adapter_AdapterInfo_Get(adapter_info, sizeof(AdapterInfo) * adapters_count); > + if (res != ADL_OK){ > + fprintf(stderr, "Failed to get ADL adapters info: %d\n", res); > + return 0; > + } > + > + for (i=0;i<adapters_count;i++){ > + int aidx = adapter_info[i].iAdapterIndex; > + int numdisplays; > + int j; > + ADLDisplayInfo *display_info; > + > + if (adl->ADL_Display_DisplayInfo_Get(aidx, &numdisplays, &display_info, 0) != ADL_OK) > + continue; > + > + D(printf("\t ================================\n")); > + D(printf("\t %d: %s - %s %d %x:%x.%x %s\n", adapter_info[i].iAdapterIndex, adapter_info[i].strAdapterName, adapter_info[i].strDisplayName, > + adapter_info[i].iPresent, > + adapter_info[i].iBusNumber, > + adapter_info[i].iDeviceNumber, > + adapter_info[i].iFunctionNumber, > + adapter_info[i].strUDID)); > + > + for (j=0;j<numdisplays;j++){ > + int didx; > + > + if ((display_info[j].iDisplayInfoValue & ADL_DISPLAY_DISPLAYINFO_DISPLAYCONNECTED) && > + (display_info[j].iDisplayInfoValue & ADL_DISPLAY_DISPLAYINFO_DISPLAYMAPPED)){ > + > + didx = display_info[j].displayID.iDisplayLogicalIndex; > + > + D(printf("\t\t found display %s at %d:%d\n", > + display_info[j].strDisplayName, aidx, didx)); > + > + adl->displays[adl->displays_count].adapter_index = aidx; > + adl->displays[adl->displays_count].display_index = didx; > + adl->displays_count++; > + if (adl->displays_count >= MAX_DISPLAYS){ > + break; > + } > + } > + } > + > + adl_free((void**)&display_info); > + > + if (adl->displays_count >= MAX_DISPLAYS){ > + break; > + } > + } > + > + adl_free((void**)&adapter_info); > + > + D(fprintf(stderr, "adl initialized, %d displays\n", adl->displays_count)); > + > + adl->initialized = 1; > + return 1; > +} > + > +void amd_adl_free() > +{ > + if (!adl) > + return; > + > + adl->ADL_Main_Control_Destroy(); > + > + if (adl->lib){ > + dlclose(adl->lib); > + adl->lib = NULL; > + } > + > + adl_free((void**)&adl); > +} > + > +#endif /* HAVE_AMDADL */ > + > diff --git a/src/lib/amd_adl.h b/src/lib/amd_adl.h > new file mode 100644 > index 0000000..d6c7bc1 > --- /dev/null > +++ b/src/lib/amd_adl.h > @@ -0,0 +1,33 @@ > +/* > + ddc/ci interface functions header > + Copyright(c) 2012 Vitaly V. Bursov (vi...@bu...) > + > + This program is free software; you can redistribute it and/or modify > + it under the terms of the GNU General Public License as published by > + the Free Software Foundation; either version 2 of the License, or > + (at your option) any later version. > + > + This program is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + GNU General Public License for more details. > + > + You should have received a copy of the GNU General Public License > + along with this program; if not, write to the Free Software > + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > +*/ > + > +#ifndef AMD_ADL_H > +#define AMD_ADL_H > + > +int amd_adl_init(); > +void amd_adl_free(); > + > +int amd_adl_get_displays_count(); > +int amd_adl_get_display(int idx, int *adapter, int *display); > +int amd_adl_check_display(int adapter, int display); > + > +int amd_adl_i2c_read(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len); > +int amd_adl_i2c_write(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len); > + > +#endif /* AMD_ADL_H */ > diff --git a/src/lib/ddcci.c b/src/lib/ddcci.c > index 4492df5..186d597 100644 > --- a/src/lib/ddcci.c > +++ b/src/lib/ddcci.c > @@ -38,6 +38,7 @@ > #include <sys/stat.h> > > #include "ddcci.h" > +#include "amd_adl.h" > > #include "conf.h" > > @@ -239,12 +240,22 @@ int ddcci_init(char* usedatadir) > printf(_("Failed to initialize ddccontrol database...\n")); > return 0; > } > +#ifdef HAVE_AMDADL > + if (!amd_adl_init()){ > + if (verbosity) { > + printf(_("Failed to initialize ADL...\n")); > + } > + } > +#endif > return ddcpci_init(); > } > > void ddcci_release() { > ddcpci_release(); > ddcci_release_db(); > +#ifdef HAVE_AMDADL > + amd_adl_free(); > +#endif > } > > /* write len bytes (stored in buf) to i2c address addr */ > @@ -318,6 +329,12 @@ static int i2c_write(struct monitor* mon, unsigned int addr, unsigned char *buf, > return adata.status; > } > #endif > +#ifdef HAVE_AMDADL > + case type_adl: > + { > + return amd_adl_i2c_write(mon->adl_adapter, mon->adl_display, addr, buf, len); > + } > +#endif > default: > return -1; > } > @@ -396,6 +413,12 @@ static int i2c_read(struct monitor* mon, unsigned int addr, unsigned char *buf, > return ret - ANSWER_SIZE; > } > #endif > +#ifdef HAVE_AMDADL > + case type_adl: > + { > + return amd_adl_i2c_read(mon->adl_adapter, mon->adl_display, addr, buf, len); > + } > +#endif > default: > return -1; > } > @@ -929,6 +952,23 @@ static int ddcci_open_with_addr(struct monitor* mon, const char* filename, int a > mon->type = pci; > } > #endif > +#ifdef HAVE_AMDADL > + else if (strncmp(filename, "adl:", 4) == 0) { > + mon->adl_adapter = -1; > + mon->adl_display = -1; > + if (sscanf(filename, "adl:%d:%d", &mon->adl_adapter, &mon->adl_display) != 2){ > + fprintf(stderr, _("Invalid filename (%s).\n"), filename); > + return -3; > + } > + > + if (amd_adl_check_display(mon->adl_adapter, mon->adl_display)){ > + fprintf(stderr, _("ADL display not found (%s).\n"), filename); > + return -3; > + } > + > + mon->type = type_adl; > + } > +#endif > else { > fprintf(stderr, _("Invalid filename (%s).\n"), filename); > return -3; > @@ -1167,6 +1207,28 @@ struct monitorlist* ddcci_probe() { > > closedir(dirp); > > +#ifdef HAVE_AMDADL > + /* ADL probe */ > + int adl_disp; > + > + for (adl_disp=0; adl_disp<amd_adl_get_displays_count(); adl_disp++){ > + int adapter, display; > + if (amd_adl_get_display(adl_disp, &adapter, &display)) > + break; > + > + filename = malloc(64); > + snprintf(filename, 64, "adl:%d:%d", adapter, display); > + if (verbosity) { > + printf(_("Found ADL display (%s)\n"), filename); > + } > + ddcci_probe_device(filename, ¤t, &last); > + if (!verbosity) { > + printf("."); > + fflush(stdout); > + } > + } > +#endif > + > if (!verbosity) > printf("\n"); > > diff --git a/src/lib/ddcci.h b/src/lib/ddcci.h > index c058051..cac907b 100644 > --- a/src/lib/ddcci.h > +++ b/src/lib/ddcci.h > @@ -63,6 +63,9 @@ struct caps { > struct monitor { > int fd; > unsigned int addr; > +#ifdef HAVE_AMDADL > + int adl_adapter, adl_display; > +#endif > char pnpid[8]; > unsigned char digital; /* 0 - digital, 1 - analog */ > struct timeval last; > @@ -76,6 +79,9 @@ struct monitor { > #ifdef HAVE_DDCPCI > ,pci > #endif > +#ifdef HAVE_AMDADL > + ,type_adl > +#endif > } type; > int probing; /* are we probing? */ > > > ------------------------------------------------------------------------------ > LogMeIn Rescue: Anywhere, Anytime Remote support for IT. Free Trial > Remotely access PCs and mobile devices and provide instant support > Improve your efficiency, and focus on delivering more value-add services > Discover what IT Professionals Know. Rescue delivers > http://p.sf.net/sfu/logmein_12329d2d > _______________________________________________ > ddccontrol-devel mailing list > ddc...@li... > https://lists.sourceforge.net/lists/listinfo/ddccontrol-devel > |
From: Vitaly V. B. <vi...@bu...> - 2012-12-08 12:00:15
|
Hello! AMD ADL is a part of the proprietary AMD Catalyst driver that is capable to provide access to displays' DDC interface. And it looks like there is no other way to implement DDC/CI on a Catalyst (direct PCI access for newer adapters is broken, no /dev/i2c either). Patch provides adapter and display enumeration (probing) and access to the corresponding i2c bus functionality (EDID, DDC/CI). Device naming scheme is like this: "adl:<adapter>:<display>". Please note that for unknown reason ADL thinks that there's multiple active adapters and yet they're the same. diff --git a/src/lib/amd_adl.c b/src/lib/amd_adl.c new file mode 100644 index 0000000..40ca909 --- /dev/null +++ b/src/lib/amd_adl.c @@ -0,0 +1,306 @@ +/* + ddc/ci interface functions header + Copyright(c) 2012 Vitaly V. Bursov (vi...@bu...) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include "config.h" + +#ifdef HAVE_AMDADL +#include <errno.h> +#include <stdlib.h> +#include <stdio.h> +#include <fcntl.h> +#include <string.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <stdint.h> +#include <dlfcn.h> + +#define MAX_DISPLAYS (64) + +#ifndef LINUX +#define LINUX /* not Windows */ +#endif +#include <ADL/adl_sdk.h> + +#include "amd_adl.h" +#include "ddcci.h" + +#if 1 +# define D(x) +#else +# define D(x) x +#endif + +struct adl_state { + int initialized; + + void *lib; + + int (*ADL_Main_Control_Create)(ADL_MAIN_MALLOC_CALLBACK, int ); + int (*ADL_Main_Control_Destroy)(); + + int (*ADL_Adapter_NumberOfAdapters_Get)(int *lpNumAdapters); + int (*ADL_Adapter_AdapterInfo_Get)(LPAdapterInfo lpInfo, int iInputSize); + int (*ADL_Display_NumberOfDisplays_Get)(int iAdapterIndex, int *lpNumDisplays); + int (*ADL_Display_DisplayInfo_Get)(int iAdapterIndex, int *lpNumDisplays, ADLDisplayInfo **lppInfo, int iForceDetect); + int (*ADL_Display_DDCBlockAccess_Get)(int iAdapterIndex, int iDisplayIndex, int iOption, int iCommandIndex, int iSendMsgLen, char *lpucSendMsgBuf, int *lpulRecvMsgLen, char *lpucRecvMsgBuf); + + struct _displays { + int adapter_index; + int display_index; + } displays[MAX_DISPLAYS]; + int displays_count; +}; + +static struct adl_state *adl; + +static void* __stdcall adl_malloc (int size) +{ + void* buffer = malloc (size); + if (buffer) + memset(buffer, 0, size); + return buffer; +} + +static void __stdcall adl_free ( void **buffer ) +{ + if (*buffer != NULL) { + free (*buffer); + *buffer = NULL; + } +} + +int amd_adl_get_displays_count() +{ + if (!adl->initialized) + return -1; + + return adl->displays_count; +} + +int amd_adl_get_display(int idx, int *adapter, int *display) +{ + if (!adl->initialized) + return -1; + + if (idx < 0 || idx >= adl->displays_count) + return -1; + + if (adapter) + *adapter = adl->displays[idx].adapter_index; + if (display) + *display = adl->displays[idx].display_index; + + return 0; +} + +int amd_adl_check_display(int adapter, int display) +{ + int i; + + if (!adl->initialized) + return -1; + + for (i=0;i<adl->displays_count;i++){ + if (adl->displays[i].adapter_index == adapter && + adl->displays[i].display_index == display) + return 0; + } + return -1; +} + +int amd_adl_i2c_read(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len) +{ + int res; + char wbuf = addr << 1 | 1; + + res = adl->ADL_Display_DDCBlockAccess_Get(adapter, display, 0, 0, 1, &wbuf, (int*)&len, (char*)buf); + + D(fprintf(stderr, " >>>>>>>> adl i2c r on %d:%d a %x l %d err %d\n", adapter, display, addr, len, res)); + + if (res != ADL_OK){ + return -1; + } + + return len; +} + +int amd_adl_i2c_write(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len) +{ + int res, rlen; + char *wbuf = alloca(len+1); + + wbuf[0] = addr << 1; + memcpy(&wbuf[1], buf, len); + + rlen = 0; + res = adl->ADL_Display_DDCBlockAccess_Get(adapter, display, 0, 0, len+1, wbuf, &rlen, NULL); + + D(fprintf(stderr, " >>>>>>>> adl i2c w on %d:%d a %x l %d err %d\n", adapter, display, addr, len, res)); + + if (res != ADL_OK){ + return -1; + } + + return len; +} + + +int amd_adl_init() +{ + int i; + int res; + int adapters_count; + AdapterInfo *adapter_info; + + adl = adl_malloc(sizeof(struct adl_state)); + + if (!adl){ + fprintf(stderr, "ADL error: malloc failed\n"); + return 0; + } + + adl->lib = dlopen("libatiadlxx.so", RTLD_LAZY|RTLD_GLOBAL); + if (!adl->lib){ + if (get_verbosity()) + perror("ADL error: dlopen() failed\n"); + return 0; + } +#define LOADFUNC(_n_) \ + do { \ + adl->_n_ = dlsym(adl->lib, #_n_); \ + if (!adl->_n_) { \ + fprintf(stderr, "ADL error: loading symbol %s\n", #_n_); \ + return 0; \ + } \ + } while (0) + + LOADFUNC(ADL_Main_Control_Create); + LOADFUNC(ADL_Main_Control_Destroy); + + LOADFUNC(ADL_Adapter_NumberOfAdapters_Get); + LOADFUNC(ADL_Adapter_AdapterInfo_Get); + LOADFUNC(ADL_Display_NumberOfDisplays_Get); + LOADFUNC(ADL_Display_DisplayInfo_Get); + LOADFUNC(ADL_Display_DDCBlockAccess_Get); + +#undef LOADFUNC + + res = adl->ADL_Main_Control_Create(adl_malloc, 1); // retrieve adapter information only for adapters that are physically present and enabled + + if (res != ADL_OK){ + if (get_verbosity()) + fprintf(stderr, "Failed to initialize ADL: %d\n", res); + return 0; + } + + res = adl->ADL_Adapter_NumberOfAdapters_Get(&adapters_count); + if (res != ADL_OK){ + if (get_verbosity()) + fprintf(stderr, "Failed to get number of ADL adapters: %d\n", res); + return 0; + } + + if (adapters_count < 1){ + if (get_verbosity()) + fprintf(stderr, "No ADL adapters found.\n"); + return 0; + } + + adapter_info = adl_malloc(sizeof(AdapterInfo) * adapters_count); + if (!adapter_info){ + fprintf(stderr, "ADL error: malloc failed\n"); + return 0; + } + + res = adl->ADL_Adapter_AdapterInfo_Get(adapter_info, sizeof(AdapterInfo) * adapters_count); + if (res != ADL_OK){ + fprintf(stderr, "Failed to get ADL adapters info: %d\n", res); + return 0; + } + + for (i=0;i<adapters_count;i++){ + int aidx = adapter_info[i].iAdapterIndex; + int numdisplays; + int j; + ADLDisplayInfo *display_info; + + if (adl->ADL_Display_DisplayInfo_Get(aidx, &numdisplays, &display_info, 0) != ADL_OK) + continue; + + D(printf("\t ================================\n")); + D(printf("\t %d: %s - %s %d %x:%x.%x %s\n", adapter_info[i].iAdapterIndex, adapter_info[i].strAdapterName, adapter_info[i].strDisplayName, + adapter_info[i].iPresent, + adapter_info[i].iBusNumber, + adapter_info[i].iDeviceNumber, + adapter_info[i].iFunctionNumber, + adapter_info[i].strUDID)); + + for (j=0;j<numdisplays;j++){ + int didx; + + if ((display_info[j].iDisplayInfoValue & ADL_DISPLAY_DISPLAYINFO_DISPLAYCONNECTED) && + (display_info[j].iDisplayInfoValue & ADL_DISPLAY_DISPLAYINFO_DISPLAYMAPPED)){ + + didx = display_info[j].displayID.iDisplayLogicalIndex; + + D(printf("\t\t found display %s at %d:%d\n", + display_info[j].strDisplayName, aidx, didx)); + + adl->displays[adl->displays_count].adapter_index = aidx; + adl->displays[adl->displays_count].display_index = didx; + adl->displays_count++; + if (adl->displays_count >= MAX_DISPLAYS){ + break; + } + } + } + + adl_free((void**)&display_info); + + if (adl->displays_count >= MAX_DISPLAYS){ + break; + } + } + + adl_free((void**)&adapter_info); + + D(fprintf(stderr, "adl initialized, %d displays\n", adl->displays_count)); + + adl->initialized = 1; + return 1; +} + +void amd_adl_free() +{ + if (!adl) + return; + + adl->ADL_Main_Control_Destroy(); + + if (adl->lib){ + dlclose(adl->lib); + adl->lib = NULL; + } + + adl_free((void**)&adl); +} + +#endif /* HAVE_AMDADL */ + diff --git a/src/lib/amd_adl.h b/src/lib/amd_adl.h new file mode 100644 index 0000000..d6c7bc1 --- /dev/null +++ b/src/lib/amd_adl.h @@ -0,0 +1,33 @@ +/* + ddc/ci interface functions header + Copyright(c) 2012 Vitaly V. Bursov (vi...@bu...) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef AMD_ADL_H +#define AMD_ADL_H + +int amd_adl_init(); +void amd_adl_free(); + +int amd_adl_get_displays_count(); +int amd_adl_get_display(int idx, int *adapter, int *display); +int amd_adl_check_display(int adapter, int display); + +int amd_adl_i2c_read(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len); +int amd_adl_i2c_write(int adapter, int display, unsigned int addr, unsigned char *buf, unsigned int len); + +#endif /* AMD_ADL_H */ diff --git a/src/lib/ddcci.c b/src/lib/ddcci.c index 4492df5..186d597 100644 --- a/src/lib/ddcci.c +++ b/src/lib/ddcci.c @@ -38,6 +38,7 @@ #include <sys/stat.h> #include "ddcci.h" +#include "amd_adl.h" #include "conf.h" @@ -239,12 +240,22 @@ int ddcci_init(char* usedatadir) printf(_("Failed to initialize ddccontrol database...\n")); return 0; } +#ifdef HAVE_AMDADL + if (!amd_adl_init()){ + if (verbosity) { + printf(_("Failed to initialize ADL...\n")); + } + } +#endif return ddcpci_init(); } void ddcci_release() { ddcpci_release(); ddcci_release_db(); +#ifdef HAVE_AMDADL + amd_adl_free(); +#endif } /* write len bytes (stored in buf) to i2c address addr */ @@ -318,6 +329,12 @@ static int i2c_write(struct monitor* mon, unsigned int addr, unsigned char *buf, return adata.status; } #endif +#ifdef HAVE_AMDADL + case type_adl: + { + return amd_adl_i2c_write(mon->adl_adapter, mon->adl_display, addr, buf, len); + } +#endif default: return -1; } @@ -396,6 +413,12 @@ static int i2c_read(struct monitor* mon, unsigned int addr, unsigned char *buf, return ret - ANSWER_SIZE; } #endif +#ifdef HAVE_AMDADL + case type_adl: + { + return amd_adl_i2c_read(mon->adl_adapter, mon->adl_display, addr, buf, len); + } +#endif default: return -1; } @@ -929,6 +952,23 @@ static int ddcci_open_with_addr(struct monitor* mon, const char* filename, int a mon->type = pci; } #endif +#ifdef HAVE_AMDADL + else if (strncmp(filename, "adl:", 4) == 0) { + mon->adl_adapter = -1; + mon->adl_display = -1; + if (sscanf(filename, "adl:%d:%d", &mon->adl_adapter, &mon->adl_display) != 2){ + fprintf(stderr, _("Invalid filename (%s).\n"), filename); + return -3; + } + + if (amd_adl_check_display(mon->adl_adapter, mon->adl_display)){ + fprintf(stderr, _("ADL display not found (%s).\n"), filename); + return -3; + } + + mon->type = type_adl; + } +#endif else { fprintf(stderr, _("Invalid filename (%s).\n"), filename); return -3; @@ -1167,6 +1207,28 @@ struct monitorlist* ddcci_probe() { closedir(dirp); +#ifdef HAVE_AMDADL + /* ADL probe */ + int adl_disp; + + for (adl_disp=0; adl_disp<amd_adl_get_displays_count(); adl_disp++){ + int adapter, display; + if (amd_adl_get_display(adl_disp, &adapter, &display)) + break; + + filename = malloc(64); + snprintf(filename, 64, "adl:%d:%d", adapter, display); + if (verbosity) { + printf(_("Found ADL display (%s)\n"), filename); + } + ddcci_probe_device(filename, ¤t, &last); + if (!verbosity) { + printf("."); + fflush(stdout); + } + } +#endif + if (!verbosity) printf("\n"); diff --git a/src/lib/ddcci.h b/src/lib/ddcci.h index c058051..cac907b 100644 --- a/src/lib/ddcci.h +++ b/src/lib/ddcci.h @@ -63,6 +63,9 @@ struct caps { struct monitor { int fd; unsigned int addr; +#ifdef HAVE_AMDADL + int adl_adapter, adl_display; +#endif char pnpid[8]; unsigned char digital; /* 0 - digital, 1 - analog */ struct timeval last; @@ -76,6 +79,9 @@ struct monitor { #ifdef HAVE_DDCPCI ,pci #endif +#ifdef HAVE_AMDADL + ,type_adl +#endif } type; int probing; /* are we probing? */ |
From: Vitaly V. B. <vi...@bu...> - 2012-12-08 11:56:24
|
diff --git a/configure.ac b/configure.ac index 8ee47f3..79e831e 100644 --- a/configure.ac +++ b/configure.ac @@ -112,6 +112,39 @@ fi AC_SUBST([DDCPCI]) +# AMD ADL support check +support_amdadl= +AC_ARG_ENABLE(amdadl, + [ --enable-amdadl enable AMD Display Library support (autodetect) ], + [if test x$enableval = xno; then + support_amdadl=no + else + support_amdadl=yes + fi]) + +AMDADL= +if test x$support_amdadl = xyes; then + AC_CHECK_HEADERS([ADL/adl_sdk.h], [], [AC_MSG_ERROR([ADL headers not found, but ADL support requested.], [1])], + [#ifndef __stdcall + #define __stdcall + #endif + ]) + AMDADL=amdadl +elif test x$support_amdadl = x; then + AC_CHECK_HEADERS([ADL/adl_sdk.h], [ + AMDADL=amdadl + ], [], [#ifndef __stdcall + #define __stdcall + #endif + ]) +fi + +if test x$AMDADL = xamdadl; then + AC_DEFINE_UNQUOTED(HAVE_AMDADL, 1, [Define if ddccontrol is built with ADL support.]) +fi + +AC_SUBST([AMDADL]) + # Gnome check support_gnome=yes AC_ARG_ENABLE(gnome, diff --git a/src/config.h.in b/src/config.h.in index 971ec71..e0f31c6 100644 --- a/src/config.h.in +++ b/src/config.h.in @@ -4,6 +4,12 @@ language is requested. */ #undef ENABLE_NLS +/* Define to 1 if you have the <ADL/adl_sdk.h> header file. */ +#undef HAVE_ADL_ADL_SDK_H + +/* Define if ddccontrol is built with ADL support. */ +#undef HAVE_AMDADL + /* Define if linux/i2c-dev.h is buggy on your system, so defaults constants and structures must be used */ #undef HAVE_BUGGY_I2C_DEV @@ -41,7 +47,7 @@ /* Define if ddccontrol is built with /dev/i2c-* support. */ #undef HAVE_I2C_DEV -/* Define if you have the iconv() function. */ +/* Define if you have the iconv() function and it works. */ #undef HAVE_ICONV /* Define to 1 if you have the <inttypes.h> header file. */ @@ -50,6 +56,9 @@ /* Define to 1 if you have the `pci' library (-lpci). */ #undef HAVE_LIBPCI +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + /* Define to 1 if you have the <linux/types.h> header file. */ #undef HAVE_LINUX_TYPES_H @@ -89,6 +98,10 @@ /* Define to 1 if you have the <unistd.h> header file. */ #undef HAVE_UNISTD_H +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + /* Name of package */ #undef PACKAGE @@ -104,6 +117,9 @@ /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME +/* Define to the home page for this package. */ +#undef PACKAGE_URL + /* Define to the version of this package. */ #undef PACKAGE_VERSION diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am index ce18dcf..775629e 100644 --- a/src/lib/Makefile.am +++ b/src/lib/Makefile.am @@ -11,6 +11,7 @@ $(pkgconfig_DATA): $(srcdir)/ddccontrol.pc.in $(top_builddir)/config.status lib_LTLIBRARIES = libddccontrol.la libddccontrol_la_SOURCES = ddcci.c ddcci.h monitor_db.c monitor_db.h \ - ddcpci-ipc.h i2c-dev.h conf.c conf.h + ddcpci-ipc.h i2c-dev.h conf.c conf.h amd_adl.c amd_adl.h + libddccontrol_la_LIBADD = $(LIBXML2_LDFLAGS) AM_CFLAGS = $(LIBXML2_CFLAGS) |
From: Jaroslav S. <jsk...@re...> - 2012-09-05 13:34:47
|
----- Original Message ----- > Hi Jaroslav, > > On 9/5/12 10:06 AM, Lars Tobias Skjong-Børsting wrote: > > > On 9/4/12 11:31 AM, Jaroslav Skarvada wrote: > >> Could you update the license files? > > > > Thanks for spotting that. I'll update the license files. > > I've updated the license files and pushed to master, but the address > was > already corrected in master, and the update was mostly whitespace and > reflowing of text. > Hi, thanks for info, the problem seems to be in released version, we didn't check master, sorry :) Jaroslav |
From: Lars T. Skjong-B. <li...@sn...> - 2012-09-05 12:47:23
|
Hi Jaroslav, On 9/5/12 10:06 AM, Lars Tobias Skjong-Børsting wrote: > On 9/4/12 11:31 AM, Jaroslav Skarvada wrote: >> Could you update the license files? > > Thanks for spotting that. I'll update the license files. I've updated the license files and pushed to master, but the address was already corrected in master, and the update was mostly whitespace and reflowing of text. -- Regards, Lars Tobias |
From: Lars T. Skjong-B. <li...@sn...> - 2012-09-05 08:06:36
|
Hi, On 9/4/12 11:31 AM, Jaroslav Skarvada wrote: > we spotted minor problem with included license files during > the Fedora review process: > https://bugzilla.redhat.com/show_bug.cgi?id=852892 > > ddccontrol.x86_64: E: incorrect-fsf-address /usr/share/doc/ddccontrol-0.4.2/COPYING > > There is wrong snail-mail address in the license text. > > Included COPYING file contains: > 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > Up-to-date license from http://www.gnu.org/licenses/gpl-2.0.txt contains: > 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > > Same problem with ddccontrol-db. Could you update the license files? Thanks for spotting that. I'll update the license files. -- Regards, Lars Tobias |
From: Jaroslav S. <jsk...@re...> - 2012-09-04 09:31:54
|
Hi, we spotted minor problem with included license files during the Fedora review process: https://bugzilla.redhat.com/show_bug.cgi?id=852892 ddccontrol.x86_64: E: incorrect-fsf-address /usr/share/doc/ddccontrol-0.4.2/COPYING There is wrong snail-mail address in the license text. Included COPYING file contains: 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Up-to-date license from http://www.gnu.org/licenses/gpl-2.0.txt contains: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Same problem with ddccontrol-db. Could you update the license files? thanks & regards Jaroslav |
From: Jaroslav S. <jsk...@re...> - 2012-09-04 07:13:49
|
Hi, thanks for your reply > For ddccontrol-db, COPYING also contains GPLv2, but we do not put any > copyright header in the files contributed by ourselves or users, so > I'm > not clear if we meant GPLv2+ or just GPLv2 (or even public domain, > actually). > Actually it could be GPL+ as the GPLv2 license text states: If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. Also confirmed by our Fedora licensing wiki / guidelines: https://fedoraproject.org/wiki/Licensing/FAQ#How_do_I_figure_out_what_version_of_the_GPL.2FLGPL_my_package_is_under.3F > I'd say the conservative option is GPLv2. But I assume no one would > be > offended if you put GPLv2+. > Therefore we will use GPLv2+ to be consistent with ddccontrol package thanks & regards Jaroslav |
From: Nicolas B. <ni...@bo...> - 2012-09-03 22:41:30
|
Hi, Well, at the time we started the project the version 3 wasn't out, so I have no idea what we "indented" to do. For ddccontrol, it's very clear. COPYING contains GPLv2, but all sources files clearly use the header stating GPLv2+. For ddccontrol-db, COPYING also contains GPLv2, but we do not put any copyright header in the files contributed by ourselves or users, so I'm not clear if we meant GPLv2+ or just GPLv2 (or even public domain, actually). I'd say the conservative option is GPLv2. But I assume no one would be offended if you put GPLv2+. Hope this helps. Best, Nicolas On 04/09/12 00:10, Jaroslav Skarvada wrote: > Hi, > > FYI we are currently trying to get ddccontrol into Fedora, > there are review requests (feel free to comment there :) > https://bugzilla.redhat.com/show_bug.cgi?id=852893 > https://bugzilla.redhat.com/show_bug.cgi?id=852892 > > My question is, what is the license for ddccontrol-db? > According to https://bugzilla.redhat.com/show_bug.cgi?id=852892#c2 > the current state seems to be GPL+, but according to > ddccontrol package itself I suspect the ddccontrol-db license > is intended to be GPLv2+. Could you clarify? > > thanks & regards > > Jaroslav > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > ddccontrol-devel mailing list > ddc...@li... > https://lists.sourceforge.net/lists/listinfo/ddccontrol-devel > |
From: Jaroslav S. <jsk...@re...> - 2012-09-03 16:10:34
|
Hi, FYI we are currently trying to get ddccontrol into Fedora, there are review requests (feel free to comment there :) https://bugzilla.redhat.com/show_bug.cgi?id=852893 https://bugzilla.redhat.com/show_bug.cgi?id=852892 My question is, what is the license for ddccontrol-db? According to https://bugzilla.redhat.com/show_bug.cgi?id=852892#c2 the current state seems to be GPL+, but according to ddccontrol package itself I suspect the ddccontrol-db license is intended to be GPLv2+. Could you clarify? thanks & regards Jaroslav |
From: Lars T. Skjong-B. <li...@sn...> - 2012-01-25 07:41:56
|
On 01/25/2012 10:16 AM, Mike Frysinger wrote: > The gddccontrol code uses the common header to get at the timeout > define, but that fails when ddcpci is disabled. This replaces the > header with a copy of the define, but this kind of sucks. Not sure > how best to address this. > > Signed-off-by: Mike Frysinger<va...@ge...> > --- > src/gddccontrol/main.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/src/gddccontrol/main.c b/src/gddccontrol/main.c > index b76e98d..766125e 100644 > --- a/src/gddccontrol/main.c > +++ b/src/gddccontrol/main.c > @@ -24,7 +24,7 @@ > #include<stdio.h> > #include<unistd.h> > > -#include "ddcpci-ipc.h" > +#define IDLE_TIMEOUT 60 > > #include "notebook.h" Thanks! Applied. -- Regards, Lars Tobias |
From: Lars T. Skjong-B. <li...@sn...> - 2012-01-25 07:41:56
|
On 1/25/12 3:21 AM, Nicolas Boichat wrote: > The configure script already sets up $(htmldir) for us (which the user > can override), so just use that rather than hardcoding our own path. > > Signed-off-by: Mike Frysinger<va...@ge...> > --- > doc/Makefile.am | 1 - > 1 files changed, 0 insertions(+), 1 deletions(-) > > diff --git a/doc/Makefile.am b/doc/Makefile.am > index 09b8eb5..1e8aa14 100644 > --- a/doc/Makefile.am > +++ b/doc/Makefile.am > @@ -2,7 +2,6 @@ XSLTPROC=@XSLTPROC@ > XSLTPROC_FLAGS=@XSLTPROC_FLAGS@ > XHTML_STYLESHEET=style.xsl > > -htmldir = $(prefix)/share/doc/@PACKAGE@/html > dist_html_DATA = html/* > EXTRA_DIST = main.xml gpl.xml install.xml about.xml report.xml supportedgc.xml supportedmonitors.xml thanks.xml techdocs.xml usage.xml style.xsl style-fo.xsl Thanks! Applied. -- Regards, Lars Tobias |
From: Mike F. <va...@ge...> - 2012-01-25 02:51:16
|
On Tuesday 24 January 2012 21:23:29 Nicolas Boichat wrote: > FYI. (William took over the maintenance of ddccontrol) ah, thanks. i'll update the Gentoo metadata so you don't get hassled anymore. -mike |
From: Nicolas B. <ni...@bo...> - 2012-01-25 02:23:39
|
FYI. (William took over the maintenance of ddccontrol) On 01/25/2012 10:16 AM, Mike Frysinger wrote: > The gddccontrol code uses the common header to get at the timeout > define, but that fails when ddcpci is disabled. This replaces the > header with a copy of the define, but this kind of sucks. Not sure > how best to address this. > > Signed-off-by: Mike Frysinger <va...@ge...> > --- > src/gddccontrol/main.c | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/src/gddccontrol/main.c b/src/gddccontrol/main.c > index b76e98d..766125e 100644 > --- a/src/gddccontrol/main.c > +++ b/src/gddccontrol/main.c > @@ -24,7 +24,7 @@ > #include <stdio.h> > #include <unistd.h> > > -#include "ddcpci-ipc.h" > +#define IDLE_TIMEOUT 60 > > #include "notebook.h" > |
From: Nicolas B. <ni...@bo...> - 2012-01-25 02:22:01
|
FYI. -------- Original Message -------- Subject: [PATCH] doc: respect --htmldir Date: Tue, 24 Jan 2012 21:13:52 -0500 From: Mike Frysinger <va...@ge...> To: ni...@bo... The configure script already sets up $(htmldir) for us (which the user can override), so just use that rather than hardcoding our own path. Signed-off-by: Mike Frysinger <va...@ge...> --- doc/Makefile.am | 1 - 1 files changed, 0 insertions(+), 1 deletions(-) diff --git a/doc/Makefile.am b/doc/Makefile.am index 09b8eb5..1e8aa14 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -2,7 +2,6 @@ XSLTPROC=@XSLTPROC@ XSLTPROC_FLAGS=@XSLTPROC_FLAGS@ XHTML_STYLESHEET=style.xsl -htmldir = $(prefix)/share/doc/@PACKAGE@/html dist_html_DATA = html/* EXTRA_DIST = main.xml gpl.xml install.xml about.xml report.xml supportedgc.xml supportedmonitors.xml thanks.xml techdocs.xml usage.xml style.xsl style-fo.xsl -- 1.7.8.3 |
From: Marko M. <mar...@gm...> - 2011-02-25 19:36:03
|
After years of figuring out the solution to run ddccontrol and its applet as non-root user on my Ubuntu PC, here is the procedure. Actually its really simple. I dont't know is posting links allowed here but here is the solution on my blog cause I don't want to type it again. http://www.techytalk.info/2011/02/debian-ubuntu-gddccontrol-non-root/ Hope I saved someone lots of pain. Bye. |
From: Lars T. Skjong-B. <li...@sn...> - 2010-10-10 17:03:18
|
Hi Stanislav, Thanks for your patches! :) Stanislav Brabec wrote: > Here are several patches from my experiments with ddccontrol: > https://build.opensuse.org/package/files?package=ddccontrol&project=openSUSE%3AFactory%3AContrib > > ddccontrol-selectable.patch: Makes texts in GUI selectable. User can cut and paste proposed commands from the GUI. > > ddccontrol-pc.patch: Adds a convenient pkg-config ddccontrol.pc file that simplifies linking of third party applications. > > ddccontrol-libexecdir.patch: Move some files to libexecdir. Fixes GNU coding standard conformance and path breakage on bi-arch platforms. > > ddccontrol-icon.patch: Fixes icon support (migrate from discontinued display-capplet icon, add icon to applet list, add icon to window title, fix installation failure if Bluecurve icon theme is not installed, update icon cache) > > gddccontrol.png, gddccontrol-bluecurve.png: Icons were incorrectly imported to the version system as text and they are corrupted. Please change its attribute to binary (if applicable) and replace them by a correct binary instance from older tarballs. I would prefer a different icon (monitor+connector), but I am not an artist. > > ddccontrol-desktop.patch: Fix desktop file to conform the desktop file standard (texts and categories) > > ddccontrol-distcheck.patch: Fix failure of "make distcheck". You may want to fix some parts differently, but "make distcheck" should work. > > ddccontrol.cs.po: Czech translation of ddccontrol (incomplete, work in progress). I have reviewed, applied, tested and commited these. -- Regards, Lars Tobias |
From: Mourad De C. <mo...@aq...> - 2010-10-07 04:23:34
|
Hi, in attach the LCA21C0.xml file I created for the LaCie 321, in addition to the ddccontrol output log. I used "osd2" for control 0xfb (OSD Lock Out) even though it's not a Samsung, because I already used "osd" for 0xe3. Kind regards, Mourad De Clerck |
From: Nicolas B. <ni...@bo...> - 2010-08-20 13:33:46
|
Forwarded to the dev list. -------- Original Message -------- Subject: LG L1952HQ (GSM4B08) Date: Fri, 20 Aug 2010 14:35:54 +0400 From: Alexander Biryukov <red...@gm...> To: ni...@bo... Hello Nicolas I would very much like what would be in support of the monitors went LG L1952HQ (GSM4B08) Am submitting the first steps in this;) Management (allowed / current / maximum) 0x16: + / 50/100 [Balance Red] 0x18: + / 50/100 [Balance Green] 0x1a: + / 50/100 [Balance Blue] 0x87: + / 5 / 10 [Clarity] 0xd6: + / 1 / 4 [1 monitor ON, 2 OFF Monitor] 0xfd: + / 0 / 1 [Power 0-OFF 1-ON] -- Biryukov Alexsandr Phone: 985-66-67 ICQ: 467093457 Skype: reddog_gad |
From: William O. <gun...@gm...> - 2010-07-07 17:39:58
|
Hello Stanislav, Thank you for all the great work you've done! There are currently 2 "active" developers on the project, but none of us really have time to look at the code. We get quite a lot of monitor support requests, but that's about it. So it's good for the project when more experienced Linux users have a look at all the bits and pieces that don't work perfectly. As they say, every little detail counts. If you are interested in becoming a developer/maintainer for ddccontrol, we'll gladly accept your help. Lately, we were trying to come up with a solution to (more or less) automatically handle monitor support requests. As I said before, we haven't really had time to think about it, but if you think of something, feel free to let us know. Anyways, adding full support for a monitor is quite a lot of work, and still needs documentation and expertise. Thank you again for your work, and keep it up if you can. Cheers, William 2010/7/7 Stanislav Brabec <sb...@su...>: > Hallo. > > Here are several patches from my experiments with ddccontrol: > https://build.opensuse.org/package/files?package=ddccontrol&project=openSUSE%3AFactory%3AContrib > > ddccontrol-selectable.patch: Makes texts in GUI selectable. User can cut and paste proposed commands from the GUI. > > ddccontrol-pc.patch: Adds a convenient pkg-config ddccontrol.pc file that simplifies linking of third party applications. > > ddccontrol-libexecdir.patch: Move some files to libexecdir. Fixes GNU coding standard conformance and path breakage on bi-arch platforms. > > ddccontrol-icon.patch: Fixes icon support (migrate from discontinued display-capplet icon, add icon to applet list, add icon to window title, fix installation failure if Bluecurve icon theme is not installed, update icon cache) > > gddccontrol.png, gddccontrol-bluecurve.png: Icons were incorrectly imported to the version system as text and they are corrupted. Please change its attribute to binary (if applicable) and replace them by a correct binary instance from older tarballs. I would prefer a different icon (monitor+connector), but I am not an artist. > > ddccontrol-desktop.patch: Fix desktop file to conform the desktop file standard (texts and categories) > > ddccontrol-distcheck.patch: Fix failure of "make distcheck". You may want to fix some parts differently, but "make distcheck" should work. > > ddccontrol.cs.po: Czech translation of ddccontrol (incomplete, work in progress). > > -- > Best Regards / S pozdravem, > > Stanislav Brabec > software developer > --------------------------------------------------------------------- > SUSE LINUX, s. r. o. e-mail: sb...@su... > Lihovarská 1060/12 tel: +420 284 028 966, +49 911 740538747 > 190 00 Praha 9 fax: +420 284 028 951 > Czech Republic http://www.suse.cz/ |
From: Stanislav B. <sb...@su...> - 2010-07-07 14:18:14
|
Hallo. Here are several patches from my experiments with ddccontrol: https://build.opensuse.org/package/files?package=ddccontrol&project=openSUSE%3AFactory%3AContrib ddccontrol-selectable.patch: Makes texts in GUI selectable. User can cut and paste proposed commands from the GUI. ddccontrol-pc.patch: Adds a convenient pkg-config ddccontrol.pc file that simplifies linking of third party applications. ddccontrol-libexecdir.patch: Move some files to libexecdir. Fixes GNU coding standard conformance and path breakage on bi-arch platforms. ddccontrol-icon.patch: Fixes icon support (migrate from discontinued display-capplet icon, add icon to applet list, add icon to window title, fix installation failure if Bluecurve icon theme is not installed, update icon cache) gddccontrol.png, gddccontrol-bluecurve.png: Icons were incorrectly imported to the version system as text and they are corrupted. Please change its attribute to binary (if applicable) and replace them by a correct binary instance from older tarballs. I would prefer a different icon (monitor+connector), but I am not an artist. ddccontrol-desktop.patch: Fix desktop file to conform the desktop file standard (texts and categories) ddccontrol-distcheck.patch: Fix failure of "make distcheck". You may want to fix some parts differently, but "make distcheck" should work. ddccontrol.cs.po: Czech translation of ddccontrol (incomplete, work in progress). -- Best Regards / S pozdravem, Stanislav Brabec software developer --------------------------------------------------------------------- SUSE LINUX, s. r. o. e-mail: sb...@su... Lihovarská 1060/12 tel: +420 284 028 966, +49 911 740538747 190 00 Praha 9 fax: +420 284 028 951 Czech Republic http://www.suse.cz/ |
From: Lars T. Skjong-B. <li...@sn...> - 2010-06-21 10:56:03
|
Hi Anil, On 05/29/2010 11:40 AM, Anil Joshi wrote: > DDC control is not supporting for 945GME Express Integrated Graphics > Controller > I added follwing line in file intel810.c (funtion: struct card* > i810_open(struct pci_dev *dev)) > case 0x27AE: // Mobile 945GME Express Graphics Controller Thanks! Patch applied in #32 (http://redmine.ddccontrol.org/issues/32). -- Regards, Lars Tobias |
From: Anil J. <ani...@ya...> - 2010-05-29 09:40:38
|
DDC control is not supporting for 945GME Express Integrated Graphics ControllerI added follwing line in file intel810.c (funtion: struct card* i810_open(struct pci_dev *dev))case 0x27AE: // Mobile 945GME Express Graphics Controller The output of ddccontrol -p is There is no Detected Monitorstill it is not reading PCI Even For LANG= LC_ALL= ddccontrol -p -c -d alsoThere is no Detected Monitor My Pc has follwing PCI devices00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03)00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03)00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03)00:1c.0 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 1 (rev 02)00:1c.1 PCI bridge: Intel Corporation 82801G (ICH7 Family) PCI Express Port 2 (rev 02)00:1d.0 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #1 (rev 02)00:1d.1 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #2 (rev 02)00:1d.2 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #3 (rev 02)00:1d.3 USB Controller: Intel Corporation 82801G (ICH7 Family) USB UHCI Controller #4 (rev 02)00:1d.7 USB Controller: Intel Corporation 82801G (ICH7 Family) USB2 EHCI Controller (rev 02)00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2)00:1e.2 Multimedia audio controller: Intel Corporation 82801G (ICH7 Family) AC'97 Audio Controller (rev 02)00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02)00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02)00:1f.3 SMBus: Intel Corporation 82801G (ICH7 Family) SMBus Controller (rev 02)01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02)02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 02) |