cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

mei.c (1391B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * Copyright (C) 2013  Intel Corporation. All rights reserved.
      4 *
      5 * HCI based Driver for NXP pn544 NFC Chip
      6 */
      7
      8#include <linux/module.h>
      9#include <linux/mod_devicetable.h>
     10#include <linux/nfc.h>
     11#include <net/nfc/hci.h>
     12#include <net/nfc/llc.h>
     13
     14#include "../mei_phy.h"
     15#include "pn544.h"
     16
     17#define PN544_DRIVER_NAME "pn544"
     18
     19static int pn544_mei_probe(struct mei_cl_device *cldev,
     20			       const struct mei_cl_device_id *id)
     21{
     22	struct nfc_mei_phy *phy;
     23	int r;
     24
     25	phy = nfc_mei_phy_alloc(cldev);
     26	if (!phy)
     27		return -ENOMEM;
     28
     29	r = pn544_hci_probe(phy, &mei_phy_ops, LLC_NOP_NAME,
     30			    MEI_NFC_HEADER_SIZE, 0, MEI_NFC_MAX_HCI_PAYLOAD,
     31			    NULL, &phy->hdev);
     32	if (r < 0) {
     33		nfc_mei_phy_free(phy);
     34
     35		return r;
     36	}
     37
     38	return 0;
     39}
     40
     41static void pn544_mei_remove(struct mei_cl_device *cldev)
     42{
     43	struct nfc_mei_phy *phy = mei_cldev_get_drvdata(cldev);
     44
     45	pn544_hci_remove(phy->hdev);
     46
     47	nfc_mei_phy_free(phy);
     48}
     49
     50static struct mei_cl_device_id pn544_mei_tbl[] = {
     51	{ PN544_DRIVER_NAME, MEI_NFC_UUID, MEI_CL_VERSION_ANY},
     52
     53	/* required last entry */
     54	{ }
     55};
     56MODULE_DEVICE_TABLE(mei, pn544_mei_tbl);
     57
     58static struct mei_cl_driver pn544_driver = {
     59	.id_table = pn544_mei_tbl,
     60	.name = PN544_DRIVER_NAME,
     61
     62	.probe = pn544_mei_probe,
     63	.remove = pn544_mei_remove,
     64};
     65
     66module_mei_cl_driver(pn544_driver);
     67
     68MODULE_LICENSE("GPL");
     69MODULE_DESCRIPTION(DRIVER_DESC);