aboutsummaryrefslogtreecommitdiffstats
path: root/lib
ModeNameSize
-rw-r--r--Makefile.am2121logstatsplain
-rw-r--r--Makefile.in36608logstatsplain
-rw-r--r--grammar.c54422logstatsplain
-rw-r--r--grammar.h3144logstatsplain
-rw-r--r--grammar.y8709logstatsplain
-rw-r--r--libconfig++.pc.in312logstatsplain
-rw-r--r--libconfig++.vcproj4687logstatsplain
-rw-r--r--libconfig.c40254logstatsplain
-rw-r--r--libconfig.h12342logstatsplain
-rw-r--r--libconfig.h++13509logstatsplain
-rw-r--r--libconfig.hh1076logstatsplain
-rw-r--r--libconfig.pc.in306logstatsplain
-rw-r--r--libconfig.vcproj4325logstatsplain
-rw-r--r--libconfigcpp.c++29530logstatsplain
-rw-r--r--libconfigcpp.cc1079logstatsplain
-rw-r--r--parsectx.h1639logstatsplain
-rw-r--r--scanctx.c4675logstatsplain
-rw-r--r--scanctx.h2093logstatsplain
-rw-r--r--scanner.c68124logstatsplain
-rw-r--r--scanner.h8256logstatsplain
-rw-r--r--scanner.l6281logstatsplain
-rw-r--r--strbuf.c1874logstatsplain
-rw-r--r--strbuf.h1294logstatsplain
-rw-r--r--wincompat.h2374logstatsplain
><stdlib.h> #include <stdio.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <termios.h> #include <fcntl.h> #include <time.h> #include <signal.h> #include <sys/types.h> #include <sys/stat.h> #include <sys/ioctl.h> #include "lcd4linux_i2c.h" #include "debug.h" #include "qprintf.h" #include "cfg.h" #include "udelay.h" #include "drv_generic_i2c.h" static char *Driver = ""; static char *Section = ""; static int i2c_device; static void my_i2c_smbus_write_byte_data(const int device, const unsigned char val) { struct i2c_smbus_ioctl_data args; union i2c_smbus_data data; args.read_write = I2C_SMBUS_WRITE; args.command = val; args.size = I2C_SMBUS_BYTE_DATA; data.byte = val; args.data = &data; if (ioctl(device, I2C_SMBUS, &args) < 0) { info("I2C: device %d IOCTL failed !\n", device); } } /* unused, ifdef'ed away to avoid compiler warning */ #if 0 static void my_i2c_smbus_read_byte_data(const int device, const unsigned char data) { struct i2c_smbus_ioctl_data args; args.read_write = I2C_SMBUS_READ; args.command = data; args.size = I2C_SMBUS_BYTE; args.data = 0; ioctl(device, I2C_SMBUS, &args); } #endif int drv_generic_i2c_open(const char *section, const char *driver) { int dev; char *bus, *device; udelay_init(); Section = (char *) section; Driver = (char *) driver; bus = cfg_get(Section, "Port", NULL); device = cfg_get(Section, "Device", NULL); dev = atoi(device); info("%s: initializing I2C bus %s", Driver, bus); if ((i2c_device = open(bus, O_WRONLY)) < 0) { error("%s: I2C bus %s open failed !\n", Driver, bus); goto exit_error; } info("%s: selecting slave device 0x%x", Driver, dev); if (ioctl(i2c_device, I2C_SLAVE, dev) < 0) { error("%s: error selecting slave device 0x%x\n", Driver, dev); goto exit_error; } info("%s: initializing I2C slave device 0x%x", Driver, dev); if (i2c_smbus_write_quick(i2c_device, I2C_SMBUS_WRITE) < 0) { error("%s: error initializing device 0x%x\n", Driver, dev); close(i2c_device); } return 0; exit_error: free(bus); free(device); close(i2c_device); return -1; } int drv_generic_i2c_close(void) { close(i2c_device); return 0; } unsigned char drv_generic_i2c_wire(const char *name, const char *deflt) { unsigned char w; char wire[256]; char *s; qprintf(wire, sizeof(wire), "Wire.%s", name); s = cfg_get(Section, wire, deflt); if (strlen(s) == 3 && strncasecmp(s, "DB", 2) == 0 && s[2] >= '0' && s[2] <= '7') { w = s[2] - '0'; } else if (strcasecmp(s, "GND") == 0) { w = 0; } else { error("%s: unknown signal <%s> for wire <%s>", Driver, s, name); error("%s: should be DB0..7 or GND", Driver); return 0xff; } free(s); if (w == 0) { info("%s: wiring: [DISPLAY:%s]<==>[i2c:GND]", Driver, name); } else { info("%s: wiring: [DISPLAY:%s]<==>[i2c:DB%d]", Driver, name, w); } w = 1 << w; return w; } void drv_generic_i2c_data(const unsigned char data) { my_i2c_smbus_write_byte_data(i2c_device, data); } void drv_generic_i2c_command(const unsigned char command, const unsigned char *data, const unsigned char length) { i2c_smbus_write_block_data(i2c_device, command, length, (unsigned char *) data); }