static int little_lock(sqlite3_file *file, int lock) { int res; little_file *self = (little_file*)file; trace("LOCK UP %s...\n", locktypeName(lock)); fflush(stdout); switch (lock) { case SQLITE_LOCK_SHARED: res = get_shared(self->name); if (res < 0) trace ("Optimistic locking! forge ahead\n"); else self->shared_lock_number = res; // don't worry if we don't get the lock, we have versioning res = get_version(self->name, &(self->version), &(self->nextfreeblock)); if (errno == ENOENT) res = 0; break; case SQLITE_LOCK_RESERVED: res = get_reserved(self->name); break; case SQLITE_LOCK_EXCLUSIVE: res = get_exclusive(self->name, self->shared_lock_number); self->shared_lock_number = -1; ++(self->version); break; default: return SQLITE_ERROR; } if (res == -EAGAIN) return SQLITE_BUSY; if (res < 0) return SQLITE_ERROR; trace("LOCK UP %s OK\n", locktypeName(lock)); return SQLITE_OK; }
static int get_data(void *data) { struct intel_gpio *gpio = data; struct drm_psb_private *dev_priv = gpio->dev_priv; u32 reserved = get_reserved(gpio); GMBUS_REG_WRITE(gpio->reg, reserved | GPIO_DATA_DIR_MASK); GMBUS_REG_WRITE(gpio->reg, reserved); return (GMBUS_REG_READ(gpio->reg) & GPIO_DATA_VAL_IN) != 0; }
static int get_clock(void *data) { struct intel_gpio *gpio = data; struct drm_i915_private *dev_priv = gpio->dev_priv; u32 reserved = get_reserved(gpio); I915_WRITE_NOTRACE(gpio->reg, reserved | GPIO_CLOCK_DIR_MASK); I915_WRITE_NOTRACE(gpio->reg, reserved); return (I915_READ_NOTRACE(gpio->reg) & GPIO_CLOCK_VAL_IN) != 0; }
static int get_data(void *data) { struct intel_gmbus *bus = data; struct drm_i915_private *dev_priv = bus->dev_priv; u32 reserved = get_reserved(bus); I915_WRITE_NOTRACE(bus->gpio_reg, reserved | GPIO_DATA_DIR_MASK); I915_WRITE_NOTRACE(bus->gpio_reg, reserved); return (I915_READ_NOTRACE(bus->gpio_reg) & GPIO_DATA_VAL_IN) != 0; }
static int get_data(device_t adapter) { struct intel_iic_softc *sc = device_get_softc(adapter); struct intel_gmbus *bus = sc->bus; struct drm_i915_private *dev_priv = bus->dev_priv; u32 reserved = get_reserved(bus); I915_WRITE_NOTRACE(bus->gpio_reg, reserved | GPIO_DATA_DIR_MASK); I915_WRITE_NOTRACE(bus->gpio_reg, reserved); return (I915_READ_NOTRACE(bus->gpio_reg) & GPIO_DATA_VAL_IN) != 0; }
static void set_data(void *data, int state_high) { struct intel_gpio *gpio = data; struct drm_psb_private *dev_priv = gpio->dev_priv; u32 reserved = get_reserved(gpio); u32 data_bits; if (state_high) data_bits = GPIO_DATA_DIR_IN | GPIO_DATA_DIR_MASK; else data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK | GPIO_DATA_VAL_MASK; GMBUS_REG_WRITE(gpio->reg, reserved | data_bits); GMBUS_REG_READ(gpio->reg); }
static void set_clock(void *data, int state_high) { struct intel_gpio *gpio = data; struct drm_psb_private *dev_priv = gpio->dev_priv; u32 reserved = get_reserved(gpio); u32 clock_bits; if (state_high) clock_bits = GPIO_CLOCK_DIR_IN | GPIO_CLOCK_DIR_MASK; else clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK | GPIO_CLOCK_VAL_MASK; GMBUS_REG_WRITE(gpio->reg, reserved | clock_bits); GMBUS_REG_READ(gpio->reg); /* Posting */ }
static void set_clock(void *data, int state_high) { struct intel_gpio *gpio = data; struct drm_i915_private *dev_priv = gpio->dev_priv; u32 reserved = get_reserved(gpio); u32 clock_bits; if (state_high) clock_bits = GPIO_CLOCK_DIR_IN | GPIO_CLOCK_DIR_MASK; else clock_bits = GPIO_CLOCK_DIR_OUT | GPIO_CLOCK_DIR_MASK | GPIO_CLOCK_VAL_MASK; I915_WRITE_NOTRACE(gpio->reg, reserved | clock_bits); POSTING_READ(gpio->reg); }
static void set_data(void *data, int state_high) { struct intel_gmbus *bus = data; struct drm_i915_private *dev_priv = bus->dev_priv; u32 reserved = get_reserved(bus); u32 data_bits; if (state_high) data_bits = GPIO_DATA_DIR_IN | GPIO_DATA_DIR_MASK; else data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK | GPIO_DATA_VAL_MASK; I915_WRITE_NOTRACE(bus->gpio_reg, reserved | data_bits); POSTING_READ(bus->gpio_reg); }
static void set_data(device_t adapter, int state_high) { struct intel_iic_softc *sc = device_get_softc(adapter); struct intel_gmbus *bus = sc->bus; struct drm_i915_private *dev_priv = bus->dev_priv; u32 reserved = get_reserved(bus); u32 data_bits; if (state_high) data_bits = GPIO_DATA_DIR_IN | GPIO_DATA_DIR_MASK; else data_bits = GPIO_DATA_DIR_OUT | GPIO_DATA_DIR_MASK | GPIO_DATA_VAL_MASK; I915_WRITE_NOTRACE(bus->gpio_reg, reserved | data_bits); POSTING_READ(bus->gpio_reg); }