11184aebb761cbeac9124c37189a80a1a58f04b6bhkuang/* 2ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Intel MIC Platform Software Stack (MPSS) 3ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 4ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * Copyright(c) 2013 Intel Corporation. 5ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 6ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * This program is free software; you can redistribute it and/or modify 7ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * it under the terms of the GNU General Public License, version 2, as 8ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * published by the Free Software Foundation. 9ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 10ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * This program is distributed in the hope that it will be useful, but 11ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * WITHOUT ANY WARRANTY; without even the implied warranty of 12ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * General Public License for more details. 14ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * 15ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * The full GNU General Public License is included in this distribution in 162ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * the file called "COPYING". 172ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * 182ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * Intel MIC driver. 19da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * 20da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 21da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#ifndef __MIC_COMMON_H_ 221184aebb761cbeac9124c37189a80a1a58f04b6bhkuang#define __MIC_COMMON_H_ 231184aebb761cbeac9124c37189a80a1a58f04b6bhkuang 242ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#include <linux/virtio_ring.h> 25f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang 26f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang#define __mic_align(a, x) (((a) + (x) - 1) & ~((x) - 1)) 27da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 28da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/** 29da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * struct mic_device_desc: Virtio device information shared between the 30f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * virtio driver and userspace backend 31f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * 32da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @type: Device type: console/network/disk etc. Type 0/-1 terminates. 33f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @num_vq: Number of virtqueues. 34f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @feature_len: Number of bytes of feature bits. Multiply by 2: one for 35f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang host features and one for guest acknowledgements. 36f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @config_len: Number of bytes of the config array after virtqueues. 371184aebb761cbeac9124c37189a80a1a58f04b6bhkuang * @status: A status byte, written by the Guest. 382ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @config: Start of the following variable length config. 395ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang */ 404fb68e5dd4e93c7599dc905d861de11ac39c5585hkuangstruct mic_device_desc { 414fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang __s8 type; 421184aebb761cbeac9124c37189a80a1a58f04b6bhkuang __u8 num_vq; 431184aebb761cbeac9124c37189a80a1a58f04b6bhkuang __u8 feature_len; 441184aebb761cbeac9124c37189a80a1a58f04b6bhkuang __u8 config_len; 452ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian __u8 status; 461184aebb761cbeac9124c37189a80a1a58f04b6bhkuang __le64 config[0]; 472ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} __attribute__ ((aligned(8))); 48da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 49da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/** 502ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * struct mic_device_ctrl: Per virtio device information in the device page 51da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * used internally by the host and card side drivers. 52da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * 53ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * @vdev: Used for storing MIC vdev information by the guest. 54ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * @config_change: Set to 1 by host when a config change is requested. 55ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * @vdev_reset: Set to 1 by guest to indicate virtio device has been reset. 56f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @guest_ack: Set to 1 by guest to ack a command. 57f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @host_ack: Set to 1 by host to ack a command. 58f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @used_address_updated: Set to 1 by guest when the used address should be 591184aebb761cbeac9124c37189a80a1a58f04b6bhkuang * updated. 602ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @c2h_vdev_db: The doorbell number to be used by guest. Set by host. 615ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang * @h2c_vdev_db: The doorbell number to be used by host. Set by guest. 624fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang */ 634fb68e5dd4e93c7599dc905d861de11ac39c5585hkuangstruct mic_device_ctrl { 642ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian __le64 vdev; 651184aebb761cbeac9124c37189a80a1a58f04b6bhkuang __u8 config_change; 662ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian __u8 vdev_reset; 67da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u8 guest_ack; 682ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian __u8 host_ack; 69da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u8 used_address_updated; 70ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang __s8 c2h_vdev_db; 71ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang __s8 h2c_vdev_db; 72ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang} __attribute__ ((aligned(8))); 73da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 74da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/** 75da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * struct mic_bootparam: Virtio device independent information in device page 76da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * 77da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @magic: A magic value used by the card to ensure it can see the host 78da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @h2c_config_db: Host to Card Virtio config doorbell set by card 79da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @node_id: Unique id of the node 80da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @h2c_scif_db - Host to card SCIF doorbell set by card 81da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @c2h_scif_db - Card to host SCIF doorbell set by host 82da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @scif_host_dma_addr - SCIF host queue pair DMA address 83f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @scif_card_dma_addr - SCIF card queue pair DMA address 84da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 85da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianstruct mic_bootparam { 86da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __le32 magic; 87da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __s8 h2c_config_db; 88da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u8 node_id; 89da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u8 h2c_scif_db; 90da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u8 c2h_scif_db; 91da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u64 scif_host_dma_addr; 92da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u64 scif_card_dma_addr; 93da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian} __attribute__ ((aligned(8))); 94da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 95ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang/** 96ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * struct mic_device_page: High level representation of the device page 97f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * 98f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @bootparam: The bootparam structure is used for sharing information and 99f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * status updates between MIC host and card drivers. 100f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * @desc: Array of MIC virtio device descriptors. 1011184aebb761cbeac9124c37189a80a1a58f04b6bhkuang */ 1022ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct mic_device_page { 1035ae7ac49f08a179e4f054d99fcfc9dce78d26e58hkuang struct mic_bootparam bootparam; 1044fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang struct mic_device_desc desc[0]; 1054fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang}; 1061184aebb761cbeac9124c37189a80a1a58f04b6bhkuang/** 1071184aebb761cbeac9124c37189a80a1a58f04b6bhkuang * struct mic_vqconfig: This is how we expect the device configuration field 108da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * for a virtqueue to be laid out in config space. 109da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * 1101184aebb761cbeac9124c37189a80a1a58f04b6bhkuang * @address: Guest/MIC physical address of the virtio ring 111ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * (avail and desc rings) 112ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * @used_address: Guest/MIC physical address of the used ring 113ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * @num: The number of entries in the virtio_ring 114f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang */ 115da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianstruct mic_vqconfig { 116da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __le64 address; 117da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __le64 used_address; 118da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __le16 num; 119da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian} __attribute__ ((aligned(8))); 120da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 121da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/* 122da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * The alignment to use between consumer and producer parts of vring. 123da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * This is pagesize for historical reasons. 124da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 125da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#define MIC_VIRTIO_RING_ALIGN 4096 126da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 127da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#define MIC_MAX_VRINGS 4 128da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#define MIC_VRING_ENTRIES 128 129da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 130da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/* 131da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * Max vring entries (power of 2) to ensure desc and avail rings 132da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * fit in a single page 133da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 134da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#define MIC_MAX_VRING_ENTRIES 128 135da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 136da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/** 137da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * Max size of the desc block in bytes: includes: 138da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * - struct mic_device_desc 139ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * - struct mic_vqconfig (num_vq of these) 140f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * - host and guest features 141f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang * - virtio device config space 142da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 143f3bed9137f66ef693bd406e43b17e9a1114f1e14hkuang#define MIC_MAX_DESC_BLK_SIZE 256 144ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang 1451184aebb761cbeac9124c37189a80a1a58f04b6bhkuang/** 1461184aebb761cbeac9124c37189a80a1a58f04b6bhkuang * struct _mic_vring_info - Host vring info exposed to userspace backend 147ba164dffc5a6795bce97fae02b51ccf3330e15e4hkuang * for the avail index and magic for the card. 1482ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * 1492ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @avail_idx: host avail idx 150da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian * @magic: A magic debug cookie. 151da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian */ 152da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianstruct _mic_vring_info { 153da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __u16 avail_idx; 154da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian __le32 magic; 155da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian}; 156da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 1572ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/** 1582ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * struct mic_vring - Vring information. 1592ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * 1602ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @vr: The virtio ring. 1612ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @info: Host vring information exposed to the userspace backend for the 1622ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * avail index and magic for the card. 1632ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @va: The va for the buffer allocated for vr and info. 1642ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * @len: The length of the buffer required for allocating vr and info. 1652ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian */ 1662ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstruct mic_vring { 1672ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian struct vring vr; 1682ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian struct _mic_vring_info *info; 1692ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian void *va; 170da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian int len; 171da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian}; 1722ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1732ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#define mic_aligned_desc_size(d) __mic_align(mic_desc_size(d), 8) 1742ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1752ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#ifndef INTEL_MIC_CARD 1762ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstatic inline unsigned mic_desc_size(const struct mic_device_desc *desc) 1772ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian{ 178da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian return sizeof(*desc) + desc->num_vq * sizeof(struct mic_vqconfig) 179da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian + desc->feature_len * 2 + desc->config_len; 1802ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 1812ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 1822ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstatic inline struct mic_vqconfig * 1832ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianmic_vq_config(const struct mic_device_desc *desc) 184da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian{ 185da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian return (struct mic_vqconfig *)(desc + 1); 1862ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 1874fb68e5dd4e93c7599dc905d861de11ac39c5585hkuang 1882ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstatic inline __u8 *mic_vq_features(const struct mic_device_desc *desc) 1892ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian{ 1902ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian return (__u8 *)(mic_vq_config(desc) + desc->num_vq); 1912ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian} 1922ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 193da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanianstatic inline __u8 *mic_vq_configspace(const struct mic_device_desc *desc) 194da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian{ 1952ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian return mic_vq_features(desc) + desc->feature_len * 2; 196da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian} 1972ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianstatic inline unsigned mic_total_desc_size(struct mic_device_desc *desc) 1982ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian{ 199da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian return mic_aligned_desc_size(desc) + sizeof(struct mic_device_ctrl); 200da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian} 2012ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian#endif 2022ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 2032ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/* Device page size */ 204da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#define MIC_DP_SIZE 4096 2052ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian 206da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian#define MIC_MAGIC 0xc0ffee00 207da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 2082ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian/** 2092ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * enum mic_states - MIC states. 2102ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian */ 2112ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianenum mic_states { 2122ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_READY = 0, 2132ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_BOOTING, 2142ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_ONLINE, 2152ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_SHUTTING_DOWN, 2162ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_RESETTING, 2172ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_RESET_FAILED, 218da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian MIC_LAST 2192ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian}; 220da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian 221da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian/** 2222ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * enum mic_status - MIC status reported by card after 2232ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian * a host or card initiated shutdown or a card crash. 2242ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian */ 2252ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanianenum mic_status { 2262ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_NOP = 0, 227da49e34c1fb5e99681f4ad99c21d9cfd83eddb96Vignesh Venkatasubramanian MIC_CRASHED, 2282ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_HALTED, 2292ec72e65689c948e92b826ae1e867bf369e72f13Vignesh Venkatasubramanian MIC_POWER_OFF, 230 MIC_RESTART, 231 MIC_STATUS_LAST 232}; 233 234#endif 235