mfd: Add Tunnel Creek support to lpc_sch

Intel Poulsbo SCH and Tunnel Creek provide almost the
same LPC interface. Use the same driver for both devices while
storing PCI ID to distinguish between platforms to apply plarform
related quirks.

Signed-off-by: Denis Turischev <denis@compulab.co.il>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
This commit is contained in:
Denis Turischev 2011-03-13 17:28:59 +02:00 коммит произвёл Samuel Ortiz
Родитель c4fdd1163a
Коммит e967f77d98
1 изменённых файлов: 6 добавлений и 1 удалений

Просмотреть файл

@ -61,6 +61,7 @@ static struct mfd_cell lpc_sch_cells[] = {
static struct pci_device_id lpc_sch_ids[] = { static struct pci_device_id lpc_sch_ids[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SCH_LPC) }, { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_SCH_LPC) },
{ PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_ITC_LPC) },
{ 0, } { 0, }
}; };
MODULE_DEVICE_TABLE(pci, lpc_sch_ids); MODULE_DEVICE_TABLE(pci, lpc_sch_ids);
@ -70,6 +71,7 @@ static int __devinit lpc_sch_probe(struct pci_dev *dev,
{ {
unsigned int base_addr_cfg; unsigned int base_addr_cfg;
unsigned short base_addr; unsigned short base_addr;
int i;
pci_read_config_dword(dev, SMBASE, &base_addr_cfg); pci_read_config_dword(dev, SMBASE, &base_addr_cfg);
if (!(base_addr_cfg & (1 << 31))) { if (!(base_addr_cfg & (1 << 31))) {
@ -99,7 +101,10 @@ static int __devinit lpc_sch_probe(struct pci_dev *dev,
gpio_sch_resource.start = base_addr; gpio_sch_resource.start = base_addr;
gpio_sch_resource.end = base_addr + GPIO_IO_SIZE - 1; gpio_sch_resource.end = base_addr + GPIO_IO_SIZE - 1;
return mfd_add_devices(&dev->dev, -1, for (i=0; i < ARRAY_SIZE(lpc_sch_cells); i++)
lpc_sch_cells[i].id = id->device;
return mfd_add_devices(&dev->dev, 0,
lpc_sch_cells, ARRAY_SIZE(lpc_sch_cells), NULL, 0); lpc_sch_cells, ARRAY_SIZE(lpc_sch_cells), NULL, 0);
} }