mirror of
https://github.com/torvalds/linux.git
synced 2024-11-01 01:31:44 +00:00
c558e39e14
The driver consists of core, PCI, and platform parts. It would be better to split them into separate files. The platform driver is now called pwm-lpss-platform. Thus, previously set CONFIG_PWM_LPSS=m is not enough to build it. But we are on the safe side since it seems no one from outside Intel is using it for now. While here, move to use macros module_pci_driver() and module_platform_driver(). Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com> Acked-by: Alan Cox <alan@linux.intel.com> [thierry.reding: change select to depends on PWM_LPSS, cleanup] Signed-off-by: Thierry Reding <thierry.reding@gmail.com>
66 lines
1.7 KiB
C
66 lines
1.7 KiB
C
/*
|
|
* Intel Low Power Subsystem PWM controller PCI driver
|
|
*
|
|
* Copyright (C) 2014, Intel Corporation
|
|
*
|
|
* Derived from the original pwm-lpss.c
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 as
|
|
* published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <linux/kernel.h>
|
|
#include <linux/module.h>
|
|
#include <linux/pci.h>
|
|
|
|
#include "pwm-lpss.h"
|
|
|
|
static int pwm_lpss_probe_pci(struct pci_dev *pdev,
|
|
const struct pci_device_id *id)
|
|
{
|
|
const struct pwm_lpss_boardinfo *info;
|
|
struct pwm_lpss_chip *lpwm;
|
|
int err;
|
|
|
|
err = pci_enable_device(pdev);
|
|
if (err < 0)
|
|
return err;
|
|
|
|
info = (struct pwm_lpss_boardinfo *)id->driver_data;
|
|
lpwm = pwm_lpss_probe(&pdev->dev, &pdev->resource[0], info);
|
|
if (IS_ERR(lpwm))
|
|
return PTR_ERR(lpwm);
|
|
|
|
pci_set_drvdata(pdev, lpwm);
|
|
return 0;
|
|
}
|
|
|
|
static void pwm_lpss_remove_pci(struct pci_dev *pdev)
|
|
{
|
|
struct pwm_lpss_chip *lpwm = pci_get_drvdata(pdev);
|
|
|
|
pwm_lpss_remove(lpwm);
|
|
pci_disable_device(pdev);
|
|
}
|
|
|
|
static const struct pci_device_id pwm_lpss_pci_ids[] = {
|
|
{ PCI_VDEVICE(INTEL, 0x0f08), (unsigned long)&pwm_lpss_byt_info},
|
|
{ PCI_VDEVICE(INTEL, 0x0f09), (unsigned long)&pwm_lpss_byt_info},
|
|
{ PCI_VDEVICE(INTEL, 0x2288), (unsigned long)&pwm_lpss_bsw_info},
|
|
{ PCI_VDEVICE(INTEL, 0x2289), (unsigned long)&pwm_lpss_bsw_info},
|
|
{ },
|
|
};
|
|
MODULE_DEVICE_TABLE(pci, pwm_lpss_pci_ids);
|
|
|
|
static struct pci_driver pwm_lpss_driver_pci = {
|
|
.name = "pwm-lpss",
|
|
.id_table = pwm_lpss_pci_ids,
|
|
.probe = pwm_lpss_probe_pci,
|
|
.remove = pwm_lpss_remove_pci,
|
|
};
|
|
module_pci_driver(pwm_lpss_driver_pci);
|
|
|
|
MODULE_DESCRIPTION("PWM PCI driver for Intel LPSS");
|
|
MODULE_LICENSE("GPL v2");
|