/*-
* BSD LICENSE
- *
- * Copyright(c) 2010-2013 Intel Corporation. All rights reserved.
+ *
+ * Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
* All rights reserved.
- *
+ *
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
- *
+ *
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* * Neither the name of Intel Corporation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
- *
+ *
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#include "virtio_pci.h"
#include "virtio_logs.h"
+static uint8_t vtpci_get_status(struct virtio_hw *);
+
void
vtpci_read_dev_config(struct virtio_hw *hw, uint64_t offset,
void *dst, int length)
}
}
-uint64_t
-vtpci_negotiate_features(struct virtio_hw *hw, uint64_t guest_features)
+uint32_t
+vtpci_negotiate_features(struct virtio_hw *hw, uint32_t host_features)
{
uint32_t features;
/*
* Limit negotiated features to what the driver, virtqueue, and
* host all support.
*/
- features = (hw->host_features) & guest_features;
+ features = host_features & hw->guest_features;
VIRTIO_WRITE_REG_4(hw, VIRTIO_PCI_GUEST_FEATURES, features);
- return (features);
+ return features;
}
vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_DRIVER_OK);
}
-uint8_t
+static uint8_t
vtpci_get_status(struct virtio_hw *hw)
{
- return (VIRTIO_READ_REG_1(hw, VIRTIO_PCI_STATUS));
+ return VIRTIO_READ_REG_1(hw, VIRTIO_PCI_STATUS);
}
void
VIRTIO_WRITE_REG_1(hw, VIRTIO_PCI_STATUS, status);
}
+
+uint8_t
+vtpci_isr(struct virtio_hw *hw)
+{
+
+ return VIRTIO_READ_REG_1(hw, VIRTIO_PCI_ISR);
+}
+
+
+/* Enable one vector (0) for Link State Intrerrupt */
+uint16_t
+vtpci_irq_config(struct virtio_hw *hw, uint16_t vec)
+{
+ VIRTIO_WRITE_REG_2(hw, VIRTIO_MSI_CONFIG_VECTOR, vec);
+ return VIRTIO_READ_REG_2(hw, VIRTIO_MSI_CONFIG_VECTOR);
+}