/* * This file is part of the coreboot project. * * Copyright (C) 2011 Sven Schnelle * * 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; version 2 of * the License. * * 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. */ #include #include #include #include #include #include #include #include "chip.h" #include static void ics954309_init(struct device *dev) { struct drivers_ics_954309_config *config; u8 initdata[12]; if (!dev->enabled || dev->path.type != DEVICE_PATH_I2C) return; config = dev->chip_info; initdata[0] = config->reg0; initdata[1] = config->reg1; initdata[2] = config->reg2; initdata[3] = config->reg3; initdata[4] = config->reg4; initdata[5] = config->reg5; initdata[6] = config->reg6; initdata[7] = config->reg7; initdata[8] = config->reg8; initdata[9] = config->reg9; initdata[10] = config->reg10; initdata[11] = config->reg11; smbus_block_write(dev, 0, 12, initdata); } static struct device_operations ics954309_operations = { .read_resources = DEVICE_NOOP, .set_resources = DEVICE_NOOP, .enable_resources = DEVICE_NOOP, .init = ics954309_init, }; static void enable_dev(struct device *dev) { dev->ops = &ics954309_operations; } struct chip_operations drivers_ics_954309_ops = { CHIP_NAME("ICS 954309 Clock generator") .enable_dev = enable_dev, };