}
EXPORT_SYMBOL_GPL(fpga_mgr_firmware_load);
-int fpga_mgr_signature_load(struct fpga_manager *mgr,
- const char *image_name)
-{
- struct device *dev = &mgr->dev;
- const struct firmware *fw;
- int ret;
-
- dev_info(dev, "Loading %s to %s\n", image_name, mgr->name);
-
- ret = request_firmware(&fw, image_name, dev);
- if (ret) {
- dev_err(dev, "Error requesting firmware %s\n", image_name);
- return ret;
- }
-
- memcpy(mgr->signature, fw->data, fw->size);
-
- release_firmware(fw);
-
- return ret;
-}
-
-int fpga_mgr_pubkey_load(struct fpga_manager *mgr,
- const char *image_name)
-{
- struct device *dev = &mgr->dev;
- const struct firmware *fw;
- int ret;
-
- dev_info(dev, "Loading %s to %s\n", image_name, mgr->name);
-
- ret = request_firmware(&fw, image_name, dev);
- if (ret) {
- dev_err(dev, "Error requesting firmware %s\n", image_name);
- return ret;
- }
-
- memcpy(mgr->pubkey, fw->data, fw->size);
-
- release_firmware(fw);
-
- return ret;
-}
-
static const char * const state_str[] = {
[FPGA_MGR_STATE_UNKNOWN] = "unknown",
[FPGA_MGR_STATE_POWER_OFF] = "power off",
return count;
}
-static ssize_t signature_store(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t count)
-{
- struct fpga_manager *mgr = to_fpga_manager(dev);
- unsigned int len;
- char image_name[NAME_MAX];
- int ret;
-
- /* lose terminating \n */
- strcpy(image_name, buf);
- len = strlen(image_name);
- if (image_name[len - 1] == '\n')
- image_name[len - 1] = 0;
-
- ret = fpga_mgr_signature_load(mgr, image_name);
- if (ret)
- return ret;
-
- return count;
-}
-
-static ssize_t pubkey_store(struct device *dev,
- struct device_attribute *attr,
- const char *buf, size_t count)
-{
- struct fpga_manager *mgr = to_fpga_manager(dev);
- unsigned int len;
- char image_name[NAME_MAX];
- int ret;
-
- /* lose terminating \n */
- strcpy(image_name, buf);
- len = strlen(image_name);
- if (image_name[len - 1] == '\n')
- image_name[len - 1] = 0;
-
- ret = fpga_mgr_pubkey_load(mgr, image_name);
- if (ret)
- return ret;
-
- return count;
-}
-
static ssize_t key_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
static DEVICE_ATTR_RO(name);
static DEVICE_ATTR_RO(state);
static DEVICE_ATTR_WO(firmware);
-static DEVICE_ATTR_WO(signature);
-static DEVICE_ATTR_WO(pubkey);
static DEVICE_ATTR_RW(flags);
static DEVICE_ATTR_RW(key);
static DEVICE_ATTR_RW(iv);
&dev_attr_name.attr,
&dev_attr_state.attr,
&dev_attr_firmware.attr,
- &dev_attr_signature.attr,
- &dev_attr_pubkey.attr,
&dev_attr_flags.attr,
&dev_attr_key.attr,
&dev_attr_iv.attr,
/* Constant Definitions */
#define IXR_FPGA_DONE_MASK 0X00000008U
-#define IXR_FPGA_AUTHENTICATIN 0x00000004U
#define IXR_FPGA_ENCRYPTION_EN 0x00000008U
struct zynqmp_fpga_priv {
{
struct zynqmp_fpga_priv *priv;
char *kbuf;
- size_t dma_size = size;
+ size_t dma_size;
dma_addr_t dma_addr;
u32 transfer_length;
int ret;
priv = mgr->priv;
- if (mgr->flags & IXR_FPGA_AUTHENTICATIN)
- dma_size = dma_size + SIGNATURE_LEN + PUBLIC_KEY_LEN;
if (mgr->flags & IXR_FPGA_ENCRYPTION_EN)
- dma_size = dma_size + ENCRYPTED_KEY_LEN + ENCRYPTED_IV_LEN;
+ dma_size = size + ENCRYPTED_KEY_LEN + ENCRYPTED_IV_LEN;
+ else
+ dma_size = size;
kbuf = dma_alloc_coherent(priv->dev, dma_size, &dma_addr, GFP_KERNEL);
if (!kbuf)
memcpy(kbuf, buf, size);
- if (mgr->flags & IXR_FPGA_AUTHENTICATIN) {
- memcpy(kbuf + size, mgr->signature, SIGNATURE_LEN);
- memcpy(kbuf + size + SIGNATURE_LEN, mgr->pubkey,
- PUBLIC_KEY_LEN);
- }
if (mgr->flags & IXR_FPGA_ENCRYPTION_EN) {
memcpy(kbuf + size, mgr->key, ENCRYPTED_KEY_LEN);
memcpy(kbuf + size + ENCRYPTED_KEY_LEN, mgr->iv,