nomali_api.cc (10915:71ace17ccb3d) nomali_api.cc (11313:89fd4a775287)
1/*
1/*
2 * Copyright (c) 2014-2015 ARM Limited
2 * Copyright (c) 2014-2016 ARM Limited
3 * All rights reserved
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *

--- 43 unchanged lines hidden (view full) ---

54 nomali_error_t regRead(uint32_t *value, nomali_addr_t addr);
55 nomali_error_t regWrite(nomali_addr_t addr, uint32_t value);
56 nomali_error_t regReadRaw(uint32_t *value, nomali_addr_t addr);
57 nomali_error_t regWriteRaw(nomali_addr_t addr, uint32_t value);
58 nomali_error_t intState(int *state, nomali_int_t intno) const;
59
60 public:
61 void callbackInt(nomali_int_t intno, int set);
3 * All rights reserved
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *

--- 43 unchanged lines hidden (view full) ---

54 nomali_error_t regRead(uint32_t *value, nomali_addr_t addr);
55 nomali_error_t regWrite(nomali_addr_t addr, uint32_t value);
56 nomali_error_t regReadRaw(uint32_t *value, nomali_addr_t addr);
57 nomali_error_t regWriteRaw(nomali_addr_t addr, uint32_t value);
58 nomali_error_t intState(int *state, nomali_int_t intno) const;
59
60 public:
61 void callbackInt(nomali_int_t intno, int set);
62 void callbackReset();
62
63 private:
64 nomali_callback_t callbacks[NOMALI_CALLBACK_NUM_CALLBACKS];
65
66 NoMali::GPU *_gpu;
67};
68
69template<class BaseGpu>
70class NoMaliApiGpu
71 : public BaseGpu
72{
73 public:
74 template<typename... Args>
75 NoMaliApiGpu(NoMaliApi &_api, Args &&... args)
76 : BaseGpu(std::forward<Args>(args)...),
77 api(_api)
78 {
63
64 private:
65 nomali_callback_t callbacks[NOMALI_CALLBACK_NUM_CALLBACKS];
66
67 NoMali::GPU *_gpu;
68};
69
70template<class BaseGpu>
71class NoMaliApiGpu
72 : public BaseGpu
73{
74 public:
75 template<typename... Args>
76 NoMaliApiGpu(NoMaliApi &_api, Args &&... args)
77 : BaseGpu(std::forward<Args>(args)...),
78 api(_api)
79 {
80 reset();
81 }
82
83 void reset() override {
79 BaseGpu::reset();
84 BaseGpu::reset();
85 api.callbackReset();
80 }
81
82 public:
83 void intJob(int set) override { api.callbackInt(NOMALI_INT_JOB, set); }
84 void intMMU(int set) override { api.callbackInt(NOMALI_INT_MMU, set); }
85 void intGPU(int set) override { api.callbackInt(NOMALI_INT_GPU, set); }
86
87 private:

--- 112 unchanged lines hidden (view full) ---

200NoMaliApi::callbackInt(nomali_int_t intno, int set)
201{
202 const nomali_callback_t &c(callbacks[NOMALI_CALLBACK_INT]);
203
204 if (c.func.interrupt)
205 c.func.interrupt(static_cast<nomali_handle_t>(this), c.usr, intno, set);
206}
207
86 }
87
88 public:
89 void intJob(int set) override { api.callbackInt(NOMALI_INT_JOB, set); }
90 void intMMU(int set) override { api.callbackInt(NOMALI_INT_MMU, set); }
91 void intGPU(int set) override { api.callbackInt(NOMALI_INT_GPU, set); }
92
93 private:

--- 112 unchanged lines hidden (view full) ---

206NoMaliApi::callbackInt(nomali_int_t intno, int set)
207{
208 const nomali_callback_t &c(callbacks[NOMALI_CALLBACK_INT]);
209
210 if (c.func.interrupt)
211 c.func.interrupt(static_cast<nomali_handle_t>(this), c.usr, intno, set);
212}
213
214void
215NoMaliApi::callbackReset()
216{
217 const nomali_callback_t &c(callbacks[NOMALI_CALLBACK_RESET]);
208
218
219 if (c.func.reset)
220 c.func.reset(static_cast<nomali_handle_t>(this), c.usr);
221}
209
222
223
224
210static NoMaliApi *
211get_gpu(nomali_handle_t h)
212{
213 return h ? static_cast<NoMaliApi *>(h) : nullptr;
214}
215
216
217extern "C" EXPORT nomali_api_version_t

--- 138 unchanged lines hidden ---
225static NoMaliApi *
226get_gpu(nomali_handle_t h)
227{
228 return h ? static_cast<NoMaliApi *>(h) : nullptr;
229}
230
231
232extern "C" EXPORT nomali_api_version_t

--- 138 unchanged lines hidden ---