1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2010-2019 Intel Corporation
5 #include "opae_intel_max10.h"
7 static struct intel_max10_device *g_max10;
9 int max10_reg_read(unsigned int reg, unsigned int *val)
14 return spi_transaction_read(g_max10->spi_tran_dev,
15 reg, 4, (unsigned char *)val);
18 int max10_reg_write(unsigned int reg, unsigned int val)
20 unsigned int tmp = val;
25 return spi_transaction_write(g_max10->spi_tran_dev,
26 reg, 4, (unsigned char *)&tmp);
29 struct intel_max10_device *
30 intel_max10_device_probe(struct altera_spi_device *spi,
33 struct intel_max10_device *dev;
37 dev = opae_malloc(sizeof(*dev));
41 dev->spi_master = spi;
43 dev->spi_tran_dev = spi_transaction_init(spi, chipselect);
44 if (!dev->spi_tran_dev) {
45 dev_err(dev, "%s spi tran init fail\n", __func__);
49 /* set the max10 device firstly */
52 /* read FPGA loading information */
53 ret = max10_reg_read(FPGA_PAGE_INFO_OFF, &val);
55 dev_err(dev, "fail to get FPGA loading info\n");
58 dev_info(dev, "FPGA loaded from %s Image\n", val ? "User" : "Factory");
63 spi_transaction_remove(dev->spi_tran_dev);
71 int intel_max10_device_remove(struct intel_max10_device *dev)
76 if (dev->spi_tran_dev)
77 spi_transaction_remove(dev->spi_tran_dev);