예제 #1
0
파일: rtd2132.c 프로젝트: AdriDlu/coreboot
static void rtd2132_init(struct device *dev)
{
	if (dev->enabled && dev->path.type == DEVICE_PATH_I2C &&
	    ops_smbus_bus(get_pbus_smbus(dev))) {
		rtd2132_setup(dev);
	}
}
예제 #2
0
static int lsmbus_recv_byte(device_t dev)
{
	unsigned device;
	struct resource *res;

	device = dev->path.i2c.device;
	res = find_resource(get_pbus_smbus(dev)->dev, 0x58);

	return do_smbus_recv_byte(res->base, device);
}
예제 #3
0
static int lsmbus_block_write(device_t dev, uint8_t cmd, u8 bytes, const u8 *buffer)
{
	unsigned device;
	struct resource *res;

	device = dev->path.i2c.device;
	res = find_resource(get_pbus_smbus(dev)->dev, 0x58);

	return do_smbus_block_write(res->base, device, cmd, bytes, buffer);
}
예제 #4
0
static int lsmbus_write_byte(device_t dev, uint8_t address, uint8_t val)
{
	unsigned device;
	struct resource *res;

	device = dev->path.i2c.device;
	res = find_resource(get_pbus_smbus(dev)->dev, 0x58);

	return do_smbus_write_byte(res->base, device, address, val);
}
예제 #5
0
static int lsmbus_read_byte(struct device *dev, u8 address)
{
	u16 device;
	struct resource *res;
	struct bus *pbus;
	device = dev->path.i2c.device;
	pbus = get_pbus_smbus(dev);
	res = find_resource(pbus->dev, PCI_BASE_ADDRESS_4);
	return smbus_read8(res->base, device, address);
}
예제 #6
0
파일: smbus.c 프로젝트: Oxyoptia/coreboot
static int lsmbus_write_byte(device_t dev, uint8_t address, uint8_t data)
{
	uint16_t device;
	struct resource *res;
	struct bus *pbus;

	device = dev->path.i2c.device;
	pbus = get_pbus_smbus(dev);
	res = find_resource(pbus->dev, PCI_BASE_ADDRESS_4);
	return do_smbus_write_byte(res->base, device, address, data);
}
예제 #7
0
static int lsmbus_block_read(device_t dev, u8 cmd, u8 bytes, u8 *buf)
{
	u16 device;
	struct resource *res;
	struct bus *pbus;

	device = dev->path.i2c.device;
	pbus = get_pbus_smbus(dev);
	res = find_resource(pbus->dev, 0x20);
	return do_smbus_block_read(res->base, device, cmd, bytes, buf);
}
예제 #8
0
static int lsmbus_write_byte(device_t dev, u8 address, u8 data)
{
	u16 device;
	struct resource *res;
	struct bus *pbus;

	device = dev->path.i2c.device;
	pbus = get_pbus_smbus(dev);
	res = find_resource(pbus->dev, 0x20);
	return do_smbus_write_byte(res->base, device, address, data);
}
예제 #9
0
파일: adm1027.c 프로젝트: XVilka/coreboot
static void adm1027_init(device_t dev)
{
	if (dev->enabled && dev->path.type == DEVICE_PATH_I2C) {
		if (ops_smbus_bus(get_pbus_smbus(dev))) {
			if (dev->bus->dev->path.type == DEVICE_PATH_I2C)
				smbus_set_link(dev);	// it is under mux
			adm1027_enable_monitoring(dev);
		}

	}
}
예제 #10
0
파일: sm.c 프로젝트: canistation/coreboot
static u32 get_sm_mmio(struct device *dev)
{
	struct resource *res;
	struct bus *pbus;

	pbus = get_pbus_smbus(dev);
	res = find_resource(pbus->dev, 0x90);
	if (res->base == SMB_BASE_ADDR)
		return SMBUS_MMIO_BASE;

	return ASF_MMIO_BASE;
}
예제 #11
0
static int lsmbus_write_byte(device_t dev, uint8_t address, uint8_t val)
{
    unsigned device;
    struct resource *res;
    struct bus *pbus;

    device = dev->path.i2c.device;
    pbus = get_pbus_smbus(dev);

    res = find_resource(pbus->dev, 0x20 + (pbus->link_num * 4));

    return do_smbus_write_byte(res->base, device, address, val);
}
예제 #12
0
static int lsmbus_recv_byte(device_t dev)
{
    unsigned device;
    struct resource *res;
    struct bus *pbus;

    device = dev->path.i2c.device;
    pbus = get_pbus_smbus(dev);

    res = find_resource(pbus->dev, 0x20 + (pbus->link_num * 4));

    return do_smbus_recv_byte(res->base, device);
}
예제 #13
0
static int lsmbus_send_byte(device_t dev, uint8_t val)
{
        unsigned device;
        struct resource *res;
        struct bus *pbus;

        device = dev->path.i2c.device;
        pbus = get_pbus_smbus(dev);

        res = find_resource(pbus->dev, 0x90);

        return do_smbus_send_byte(res->base, device, val);
}
예제 #14
0
파일: sm.c 프로젝트: XVilka/coreboot
static int lsmbus_read_byte(device_t dev, u8 address)
{
	u32 device;
	struct resource *res;
	struct bus *pbus;

	device = dev->path.i2c.device;
	pbus = get_pbus_smbus(dev);

	res = find_resource(pbus->dev, 0x90);

	return do_smbus_read_byte(res->base, device, address);
}
예제 #15
0
파일: lm63.c 프로젝트: canistation/coreboot
static void lm63_init(struct device *dev)
{
	int result;
	if (dev->enabled && dev->path.type == DEVICE_PATH_I2C) {
		if (ops_smbus_bus(get_pbus_smbus(dev))) {
			if (dev->bus->dev->path.type == DEVICE_PATH_I2C)
				smbus_set_link(dev);	// it is under mux
			result = smbus_read_byte(dev, 0x03);
//                      result &= ~0x04;
			result |= 0x04;
			smbus_write_byte(dev, 0x03, result & 0xff);	// config lm63
		}
	}
}
예제 #16
0
파일: superio.c 프로젝트: bolyboly/coreboot
static int lsmbus_write_byte(device_t dev, u8 address, u8 val)
{
	unsigned int device;
	struct resource *res;

	device = dev->path.i2c.device;
	res = find_resource(get_pbus_smbus(dev)->dev, PNP_IDX_IO0);

	pnp_write_index(res->base+HWM_INDEX, 0, device); /* Why 0? */

	/* We only write it one byte one time. */
	pnp_write_index(res->base+SB_INDEX, address, val);

	return 0;
}
예제 #17
0
파일: sm.c 프로젝트: AdriDlu/coreboot
static int lsmbus_write_byte(device_t dev, u8 address, u8 val)
{
	u32 device;
	struct resource *res;
	struct bus *pbus;

	device = dev->path.i2c.device;
	pbus = get_pbus_smbus(dev);

	if (!amd_sb700_aux_smbus)
		res = find_resource(pbus->dev, PRIMARY_SMBUS_RESOURCE_NUMBER);
	else
		res = find_resource(pbus->dev, AUXILIARY_SMBUS_RESOURCE_NUMBER);

	return do_smbus_write_byte(res->base, device, address, val);
}
예제 #18
0
파일: superio.c 프로젝트: bolyboly/coreboot
static int lsmbus_read_byte(device_t dev, u8 address)
{
	unsigned int device;
	struct resource *res;
	int result;

	device = dev->path.i2c.device;

	res = find_resource(get_pbus_smbus(dev)->dev, PNP_IDX_IO0);

	pnp_write_index(res->base + HWM_INDEX, 0, device); /* Why 0? */

	/* We only read it one byte one time. */
	result = pnp_read_index(res->base + SB_INDEX, address);

	return result;
}