#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/device.h>
#include <linux/pm.h>
#include <linux/platform_device.h>
#include <linux/libata.h>
#include <linux/ahci_platform.h>
#include "ahci.h"
#define AHCI_DM816_DRV_NAME …
#define AHCI_DM816_PHY_ENPLL(x) …
#define AHCI_DM816_PHY_MPY(x) …
#define AHCI_DM816_PHY_LOS(x) …
#define AHCI_DM816_PHY_RXCDR(x) …
#define AHCI_DM816_PHY_RXEQ(x) …
#define AHCI_DM816_PHY_TXSWING(x) …
#define AHCI_DM816_P0PHYCR_REG …
#define AHCI_DM816_P1PHYCR_REG …
#define AHCI_DM816_PLL_OUT …
static const unsigned long pll_mpy_table[] = …;
static int ahci_dm816_get_mpy_bits(unsigned long refclk_rate)
{ … }
static int ahci_dm816_phy_init(struct ahci_host_priv *hpriv, struct device *dev)
{ … }
static int ahci_dm816_softreset(struct ata_link *link,
unsigned int *class, unsigned long deadline)
{ … }
static struct ata_port_operations ahci_dm816_port_ops = …;
static const struct ata_port_info ahci_dm816_port_info = …;
static const struct scsi_host_template ahci_dm816_platform_sht = …;
static int ahci_dm816_probe(struct platform_device *pdev)
{ … }
static SIMPLE_DEV_PM_OPS(ahci_dm816_pm_ops,
ahci_platform_suspend,
ahci_platform_resume);
static const struct of_device_id ahci_dm816_of_match[] = …;
MODULE_DEVICE_TABLE(of, ahci_dm816_of_match);
static struct platform_driver ahci_dm816_driver = …;
module_platform_driver(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;