linux/drivers/edac/x38_edac.c

/*
 * Intel X38 Memory Controller kernel module
 * Copyright (C) 2008 Cluster Computing, Inc.
 *
 * This file may be distributed under the terms of the
 * GNU General Public License.
 *
 * This file is based on i3200_edac.c
 *
 */

#include <linux/module.h>
#include <linux/init.h>
#include <linux/pci.h>
#include <linux/pci_ids.h>
#include <linux/edac.h>

#include <linux/io-64-nonatomic-lo-hi.h>
#include "edac_module.h"

#define EDAC_MOD_STR

#define PCI_DEVICE_ID_INTEL_X38_HB

#define X38_RANKS
#define X38_RANKS_PER_CHANNEL
#define X38_CHANNELS

/* Intel X38 register addresses - device 0 function 0 - DRAM Controller */

#define X38_MCHBAR_LOW
#define X38_MCHBAR_HIGH
#define X38_MCHBAR_MASK
#define X38_MMR_WINDOW_SIZE

#define X38_TOM
#define X38_TOM_MASK
#define X38_TOM_SHIFT

#define X38_ERRSTS
#define X38_ERRSTS_UE
#define X38_ERRSTS_CE
#define X38_ERRSTS_BITS


/* Intel  MMIO register space - device 0 function 0 - MMR space */

#define X38_C0DRB
#define X38_C1DRB
#define X38_DRB_MASK
#define X38_DRB_SHIFT

#define X38_C0ECCERRLOG
#define X38_C1ECCERRLOG
#define X38_ECCERRLOG_CE
#define X38_ECCERRLOG_UE
#define X38_ECCERRLOG_RANK_BITS
#define X38_ECCERRLOG_SYNDROME_BITS

#define X38_CAPID0

static int x38_channel_num;

static int how_many_channel(struct pci_dev *pdev)
{}

static unsigned long eccerrlog_syndrome(u64 log)
{}

static int eccerrlog_row(int channel, u64 log)
{}

enum x38_chips {};

struct x38_dev_info {};

struct x38_error_info {};

static const struct x38_dev_info x38_devs[] =;

static struct pci_dev *mci_pdev;
static int x38_registered =;


static void x38_clear_error_info(struct mem_ctl_info *mci)
{}

static void x38_get_and_clear_error_info(struct mem_ctl_info *mci,
				 struct x38_error_info *info)
{}

static void x38_process_error_info(struct mem_ctl_info *mci,
				struct x38_error_info *info)
{}

static void x38_check(struct mem_ctl_info *mci)
{}

static void __iomem *x38_map_mchbar(struct pci_dev *pdev)
{}


static void x38_get_drbs(void __iomem *window,
			u16 drbs[X38_CHANNELS][X38_RANKS_PER_CHANNEL])
{}

static bool x38_is_stacked(struct pci_dev *pdev,
			u16 drbs[X38_CHANNELS][X38_RANKS_PER_CHANNEL])
{}

static unsigned long drb_to_nr_pages(
			u16 drbs[X38_CHANNELS][X38_RANKS_PER_CHANNEL],
			bool stacked, int channel, int rank)
{}

static int x38_probe1(struct pci_dev *pdev, int dev_idx)
{}

static int x38_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
{}

static void x38_remove_one(struct pci_dev *pdev)
{}

static const struct pci_device_id x38_pci_tbl[] =;

MODULE_DEVICE_TABLE(pci, x38_pci_tbl);

static struct pci_driver x38_driver =;

static int __init x38_init(void)
{}

static void __exit x38_exit(void)
{}

module_init();
module_exit(x38_exit);

MODULE_LICENSE();
MODULE_AUTHOR();
MODULE_DESCRIPTION();

module_param(edac_op_state, int, 0444);
MODULE_PARM_DESC();