raw/ifpga/base: fix logically dead code
[dpdk.git] / drivers / raw / ifpga_rawdev / base / opae_intel_max10.c
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(c) 2010-2019 Intel Corporation
3  */
4
5 #include "opae_intel_max10.h"
6
7 static struct intel_max10_device *g_max10;
8
9 int max10_reg_read(unsigned int reg, unsigned int *val)
10 {
11         if (!g_max10)
12                 return -ENODEV;
13
14         return spi_transaction_read(g_max10->spi_tran_dev,
15                         reg, 4, (unsigned char *)val);
16 }
17
18 int max10_reg_write(unsigned int reg, unsigned int val)
19 {
20         unsigned int tmp = val;
21
22         if (!g_max10)
23                 return -ENODEV;
24
25         return spi_transaction_write(g_max10->spi_tran_dev,
26                         reg, 4, (unsigned char *)&tmp);
27 }
28
29 struct intel_max10_device *
30 intel_max10_device_probe(struct altera_spi_device *spi,
31                 int chipselect)
32 {
33         struct intel_max10_device *dev;
34         int ret;
35         unsigned int val;
36
37         dev = opae_malloc(sizeof(*dev));
38         if (!dev)
39                 return NULL;
40
41         dev->spi_master = spi;
42
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__);
46                 goto free_dev;
47         }
48
49         /* set the max10 device firstly */
50         g_max10 = dev;
51
52         /* read FPGA loading information */
53         ret = max10_reg_read(FPGA_PAGE_INFO_OFF, &val);
54         if (ret) {
55                 dev_err(dev, "fail to get FPGA loading info\n");
56                 goto spi_tran_fail;
57         }
58         dev_info(dev, "FPGA loaded from %s Image\n", val ? "User" : "Factory");
59
60         /* set PKVL Polling manually in BBS */
61         ret = max10_reg_write(PKVL_POLLING_CTRL, 0x3);
62         if (ret != 0) {
63                 dev_err(dev, "%s set PKVL polling fail\n", __func__);
64                 goto spi_tran_fail;
65         }
66
67         return dev;
68
69 spi_tran_fail:
70         spi_transaction_remove(dev->spi_tran_dev);
71 free_dev:
72         g_max10 = NULL;
73         opae_free(dev);
74
75         return NULL;
76 }
77
78 int intel_max10_device_remove(struct intel_max10_device *dev)
79 {
80         if (!dev)
81                 return 0;
82
83         if (dev->spi_tran_dev)
84                 spi_transaction_remove(dev->spi_tran_dev);
85
86         g_max10 = NULL;
87         opae_free(dev);
88
89         return 0;
90 }