Am 09.03.2017 um 04:44 schrieb Alex Deucher: > Newer asics have a two levels of irq ids now: > client id - the IP > src id - the interrupt src within the IP > > Signed-off-by: Alex Deucher <alexander.deucher at amd.com> > Signed-off-by: Ken Wang <Qingqing.Wang at amd.com> > Reviewed-by: Ken Wang <Qingqing.Wang at amd.com> > Signed-off-by: Alex Deucher <alexander.deucher at amd.com> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c | 24 +++++-- > drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h | 6 ++ > drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c | 111 +++++++++++++++++++++---------- > drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h | 10 ++- > drivers/gpu/drm/amd/amdgpu/ci_dpm.c | 6 +- > drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 9 ++- > drivers/gpu/drm/amd/amdgpu/cz_ih.c | 1 + > drivers/gpu/drm/amd/amdgpu/dce_v10_0.c | 6 +- > drivers/gpu/drm/amd/amdgpu/dce_v11_0.c | 6 +- > drivers/gpu/drm/amd/amdgpu/dce_v6_0.c | 6 +- > drivers/gpu/drm/amd/amdgpu/dce_v8_0.c | 6 +- > drivers/gpu/drm/amd/amdgpu/dce_virtual.c | 2 +- > drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c | 6 +- > drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 8 ++- > drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c | 10 +-- > drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c | 4 +- > drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c | 4 +- > drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c | 4 +- > drivers/gpu/drm/amd/amdgpu/iceland_ih.c | 1 + > drivers/gpu/drm/amd/amdgpu/kv_dpm.c | 6 +- > drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c | 4 +- > drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 9 ++- > drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c | 9 ++- > drivers/gpu/drm/amd/amdgpu/si_dma.c | 4 +- > drivers/gpu/drm/amd/amdgpu/si_dpm.c | 4 +- > drivers/gpu/drm/amd/amdgpu/tonga_ih.c | 1 + > drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c | 2 +- > drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c | 2 +- > drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c | 2 +- > drivers/gpu/drm/amd/amdgpu/vce_v2_0.c | 2 +- > drivers/gpu/drm/amd/amdgpu/vce_v3_0.c | 2 +- > drivers/gpu/drm/amd/include/cgs_linux.h | 19 +++--- > 32 files changed, 191 insertions(+), 105 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c > index d9e5aa4..f0e3624 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c > @@ -571,7 +571,9 @@ static const struct amdgpu_irq_src_funcs cgs_irq_funcs = { > .process = cgs_process_irq, > }; > > -static int amdgpu_cgs_add_irq_source(struct cgs_device *cgs_device, unsigned src_id, > +static int amdgpu_cgs_add_irq_source(void *cgs_device, > + unsigned client_id, > + unsigned src_id, > unsigned num_types, > cgs_irq_source_set_func_t set, > cgs_irq_handler_func_t handler, > @@ -597,7 +599,7 @@ static int amdgpu_cgs_add_irq_source(struct cgs_device *cgs_device, unsigned src > irq_params->handler = handler; > irq_params->private_data = private_data; > source->data = (void *)irq_params; > - ret = amdgpu_irq_add_id(adev, src_id, source); > + ret = amdgpu_irq_add_id(adev, client_id, src_id, source); > if (ret) { > kfree(irq_params); > kfree(source); > @@ -606,16 +608,26 @@ static int amdgpu_cgs_add_irq_source(struct cgs_device *cgs_device, unsigned src > return ret; > } > > -static int amdgpu_cgs_irq_get(struct cgs_device *cgs_device, unsigned src_id, unsigned type) > +static int amdgpu_cgs_irq_get(void *cgs_device, unsigned client_id, > + unsigned src_id, unsigned type) > { > CGS_FUNC_ADEV; > - return amdgpu_irq_get(adev, adev->irq.sources[src_id], type); > + > + if (!adev->irq.client[client_id].sources) > + return -EINVAL; > + > + return amdgpu_irq_get(adev, adev->irq.client[client_id].sources[src_id], type); > } > > -static int amdgpu_cgs_irq_put(struct cgs_device *cgs_device, unsigned src_id, unsigned type) > +static int amdgpu_cgs_irq_put(void *cgs_device, unsigned client_id, > + unsigned src_id, unsigned type) > { > CGS_FUNC_ADEV; > - return amdgpu_irq_put(adev, adev->irq.sources[src_id], type); > + > + if (!adev->irq.client[client_id].sources) > + return -EINVAL; > + > + return amdgpu_irq_put(adev, adev->irq.client[client_id].sources[src_id], type); > } > > static int amdgpu_cgs_set_clockgating_state(struct cgs_device *cgs_device, > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h > index ba38ae6..6c5fb83 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ih.h > @@ -26,6 +26,10 @@ > > struct amdgpu_device; > > +#define AMDGPU_IH_CLIENT_ID_ANY 0 We should probably rename that to something like AMDGPU_IH_CLIENT_ID_LEGACY or similar. > + > +#define AMDGPU_IH_CLIENTID_MAX 0x1f We should probably straighten up the name here, either CLIENT_ID or CLIENTID but not mixing it. Apart from that looks good to me on first glance. Christian. > + > /* > * R6xx+ IH ring > */ > @@ -47,10 +51,12 @@ struct amdgpu_ih_ring { > }; > > struct amdgpu_iv_entry { > + unsigned client_id; > unsigned src_id; > unsigned src_data; > unsigned ring_id; > unsigned vm_id; > + unsigned vm_id_src; > unsigned pas_id; > const uint32_t *iv_entry; > }; > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > index e63ece0..7e7acd4 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.c > @@ -89,23 +89,28 @@ static void amdgpu_irq_reset_work_func(struct work_struct *work) > static void amdgpu_irq_disable_all(struct amdgpu_device *adev) > { > unsigned long irqflags; > - unsigned i, j; > + unsigned i, j, k; > int r; > > spin_lock_irqsave(&adev->irq.lock, irqflags); > - for (i = 0; i < AMDGPU_MAX_IRQ_SRC_ID; ++i) { > - struct amdgpu_irq_src *src = adev->irq.sources[i]; > - > - if (!src || !src->funcs->set || !src->num_types) > + for (i = 0; i < AMDGPU_IH_CLIENTID_MAX; ++i) { > + if (!adev->irq.client[i].sources) > continue; > > - for (j = 0; j < src->num_types; ++j) { > - atomic_set(&src->enabled_types[j], 0); > - r = src->funcs->set(adev, src, j, > - AMDGPU_IRQ_STATE_DISABLE); > - if (r) > - DRM_ERROR("error disabling interrupt (%d)\n", > - r); > + for (j = 0; j < AMDGPU_MAX_IRQ_SRC_ID; ++j) { > + struct amdgpu_irq_src *src = adev->irq.client[i].sources[j]; > + > + if (!src || !src->funcs->set || !src->num_types) > + continue; > + > + for (k = 0; k < src->num_types; ++k) { > + atomic_set(&src->enabled_types[k], 0); > + r = src->funcs->set(adev, src, k, > + AMDGPU_IRQ_STATE_DISABLE); > + if (r) > + DRM_ERROR("error disabling interrupt (%d)\n", > + r); > + } > } > } > spin_unlock_irqrestore(&adev->irq.lock, irqflags); > @@ -254,7 +259,7 @@ int amdgpu_irq_init(struct amdgpu_device *adev) > */ > void amdgpu_irq_fini(struct amdgpu_device *adev) > { > - unsigned i; > + unsigned i, j; > > drm_vblank_cleanup(adev->ddev); > if (adev->irq.installed) { > @@ -266,19 +271,25 @@ void amdgpu_irq_fini(struct amdgpu_device *adev) > cancel_work_sync(&adev->reset_work); > } > > - for (i = 0; i < AMDGPU_MAX_IRQ_SRC_ID; ++i) { > - struct amdgpu_irq_src *src = adev->irq.sources[i]; > - > - if (!src) > + for (i = 0; i < AMDGPU_IH_CLIENTID_MAX; ++i) { > + if (!adev->irq.client[i].sources) > continue; > > - kfree(src->enabled_types); > - src->enabled_types = NULL; > - if (src->data) { > - kfree(src->data); > - kfree(src); > - adev->irq.sources[i] = NULL; > + for (j = 0; j < AMDGPU_MAX_IRQ_SRC_ID; ++j) { > + struct amdgpu_irq_src *src = adev->irq.client[i].sources[j]; > + > + if (!src) > + continue; > + > + kfree(src->enabled_types); > + src->enabled_types = NULL; > + if (src->data) { > + kfree(src->data); > + kfree(src); > + adev->irq.client[i].sources[j] = NULL; > + } > } > + kfree(adev->irq.client[i].sources); > } > } > > @@ -290,18 +301,30 @@ void amdgpu_irq_fini(struct amdgpu_device *adev) > * @source: irq source > * > */ > -int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned src_id, > +int amdgpu_irq_add_id(struct amdgpu_device *adev, > + unsigned client_id, unsigned src_id, > struct amdgpu_irq_src *source) > { > - if (src_id >= AMDGPU_MAX_IRQ_SRC_ID) > + if (client_id >= AMDGPU_IH_CLIENTID_MAX) > return -EINVAL; > > - if (adev->irq.sources[src_id] != NULL) > + if (src_id >= AMDGPU_MAX_IRQ_SRC_ID) > return -EINVAL; > > if (!source->funcs) > return -EINVAL; > > + if (!adev->irq.client[client_id].sources) { > + adev->irq.client[client_id].sources = kcalloc(AMDGPU_MAX_IRQ_SRC_ID, > + sizeof(struct amdgpu_irq_src), > + GFP_KERNEL); > + if (!adev->irq.client[client_id].sources) > + return -ENOMEM; > + } > + > + if (adev->irq.client[client_id].sources[src_id] != NULL) > + return -EINVAL; > + > if (source->num_types && !source->enabled_types) { > atomic_t *types; > > @@ -313,8 +336,7 @@ int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned src_id, > source->enabled_types = types; > } > > - adev->irq.sources[src_id] = source; > - > + adev->irq.client[client_id].sources[src_id] = source; > return 0; > } > > @@ -329,10 +351,16 @@ int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned src_id, > void amdgpu_irq_dispatch(struct amdgpu_device *adev, > struct amdgpu_iv_entry *entry) > { > + unsigned client_id = entry->client_id; > unsigned src_id = entry->src_id; > struct amdgpu_irq_src *src; > int r; > > + if (client_id >= AMDGPU_IH_CLIENTID_MAX) { > + DRM_DEBUG("Invalid client_id in IV: %d\n", client_id); > + return; > + } > + > if (src_id >= AMDGPU_MAX_IRQ_SRC_ID) { > DRM_DEBUG("Invalid src_id in IV: %d\n", src_id); > return; > @@ -341,7 +369,13 @@ void amdgpu_irq_dispatch(struct amdgpu_device *adev, > if (adev->irq.virq[src_id]) { > generic_handle_irq(irq_find_mapping(adev->irq.domain, src_id)); > } else { > - src = adev->irq.sources[src_id]; > + if (!adev->irq.client[client_id].sources) { > + DRM_DEBUG("Unregistered interrupt client_id: %d src_id: %d\n", > + client_id, src_id); > + return; > + } > + > + src = adev->irq.client[client_id].sources[src_id]; > if (!src) { > DRM_DEBUG("Unhandled interrupt src_id: %d\n", src_id); > return; > @@ -385,13 +419,20 @@ int amdgpu_irq_update(struct amdgpu_device *adev, > > void amdgpu_irq_gpu_reset_resume_helper(struct amdgpu_device *adev) > { > - int i, j; > - for (i = 0; i < AMDGPU_MAX_IRQ_SRC_ID; i++) { > - struct amdgpu_irq_src *src = adev->irq.sources[i]; > - if (!src) > + int i, j, k; > + > + for (i = 0; i < AMDGPU_IH_CLIENTID_MAX; ++i) { > + if (!adev->irq.client[i].sources) > continue; > - for (j = 0; j < src->num_types; j++) > - amdgpu_irq_update(adev, src, j); > + > + for (j = 0; j < AMDGPU_MAX_IRQ_SRC_ID; ++j) { > + struct amdgpu_irq_src *src = adev->irq.client[i].sources[j]; > + > + if (!src) > + continue; > + for (k = 0; k < src->num_types; k++) > + amdgpu_irq_update(adev, src, k); > + } > } > } > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h > index 1642f41..0610cc4 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_irq.h > @@ -28,6 +28,7 @@ > #include "amdgpu_ih.h" > > #define AMDGPU_MAX_IRQ_SRC_ID 0x100 > +#define AMDGPU_MAX_IRQ_CLIENT_ID 0x100 > > struct amdgpu_device; > struct amdgpu_iv_entry; > @@ -44,6 +45,10 @@ struct amdgpu_irq_src { > void *data; > }; > > +struct amdgpu_irq_client { > + struct amdgpu_irq_src **sources; > +}; > + > /* provided by interrupt generating IP blocks */ > struct amdgpu_irq_src_funcs { > int (*set)(struct amdgpu_device *adev, struct amdgpu_irq_src *source, > @@ -58,7 +63,7 @@ struct amdgpu_irq { > bool installed; > spinlock_t lock; > /* interrupt sources */ > - struct amdgpu_irq_src *sources[AMDGPU_MAX_IRQ_SRC_ID]; > + struct amdgpu_irq_client client[AMDGPU_IH_CLIENTID_MAX]; > > /* status, etc. */ > bool msi_enabled; /* msi enabled */ > @@ -80,7 +85,8 @@ irqreturn_t amdgpu_irq_handler(int irq, void *arg); > > int amdgpu_irq_init(struct amdgpu_device *adev); > void amdgpu_irq_fini(struct amdgpu_device *adev); > -int amdgpu_irq_add_id(struct amdgpu_device *adev, unsigned src_id, > +int amdgpu_irq_add_id(struct amdgpu_device *adev, > + unsigned client_id, unsigned src_id, > struct amdgpu_irq_src *source); > void amdgpu_irq_dispatch(struct amdgpu_device *adev, > struct amdgpu_iv_entry *entry); > diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > index c8cb964..f0e7229 100644 > --- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > +++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c > @@ -6284,11 +6284,13 @@ static int ci_dpm_sw_init(void *handle) > int ret; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - ret = amdgpu_irq_add_id(adev, 230, &adev->pm.dpm.thermal.irq); > + ret = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 230, > + &adev->pm.dpm.thermal.irq); > if (ret) > return ret; > > - ret = amdgpu_irq_add_id(adev, 231, &adev->pm.dpm.thermal.irq); > + ret = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 231, > + &adev->pm.dpm.thermal.irq); > if (ret) > return ret; > > diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c > index b35ec4a..88e92eb 100644 > --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c > +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c > @@ -923,17 +923,20 @@ static int cik_sdma_sw_init(void *handle) > } > > /* SDMA trap event */ > - r = amdgpu_irq_add_id(adev, 224, &adev->sdma.trap_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 224, > + &adev->sdma.trap_irq); > if (r) > return r; > > /* SDMA Privileged inst */ > - r = amdgpu_irq_add_id(adev, 241, &adev->sdma.illegal_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 241, > + &adev->sdma.illegal_inst_irq); > if (r) > return r; > > /* SDMA Privileged inst */ > - r = amdgpu_irq_add_id(adev, 247, &adev->sdma.illegal_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 247, > + &adev->sdma.illegal_inst_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/cz_ih.c b/drivers/gpu/drm/amd/amdgpu/cz_ih.c > index fe7cbb2..124bacc 100644 > --- a/drivers/gpu/drm/amd/amdgpu/cz_ih.c > +++ b/drivers/gpu/drm/amd/amdgpu/cz_ih.c > @@ -227,6 +227,7 @@ static void cz_ih_decode_iv(struct amdgpu_device *adev, > dw[2] = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]); > dw[3] = le32_to_cpu(adev->irq.ih.ring[ring_index + 3]); > > + entry->client_id = AMDGPU_IH_CLIENT_ID_ANY; > entry->src_id = dw[0] & 0xff; > entry->src_data = dw[1] & 0xfffffff; > entry->ring_id = dw[2] & 0xff; > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > index d4452d8..7996296 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v10_0.c > @@ -2947,19 +2947,19 @@ static int dce_v10_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > for (i = 0; i < adev->mode_info.num_crtc; i++) { > - r = amdgpu_irq_add_id(adev, i + 1, &adev->crtc_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i + 1, &adev->crtc_irq); > if (r) > return r; > } > > for (i = 8; i < 20; i += 2) { > - r = amdgpu_irq_add_id(adev, i, &adev->pageflip_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i, &adev->pageflip_irq); > if (r) > return r; > } > > /* HPD hotplug */ > - r = amdgpu_irq_add_id(adev, 42, &adev->hpd_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 42, &adev->hpd_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > index 5b24e89..615049a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c > @@ -3007,19 +3007,19 @@ static int dce_v11_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > for (i = 0; i < adev->mode_info.num_crtc; i++) { > - r = amdgpu_irq_add_id(adev, i + 1, &adev->crtc_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i + 1, &adev->crtc_irq); > if (r) > return r; > } > > for (i = 8; i < 20; i += 2) { > - r = amdgpu_irq_add_id(adev, i, &adev->pageflip_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i, &adev->pageflip_irq); > if (r) > return r; > } > > /* HPD hotplug */ > - r = amdgpu_irq_add_id(adev, 42, &adev->hpd_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 42, &adev->hpd_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > index 809aa94..496be98 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v6_0.c > @@ -2295,19 +2295,19 @@ static int dce_v6_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > for (i = 0; i < adev->mode_info.num_crtc; i++) { > - r = amdgpu_irq_add_id(adev, i + 1, &adev->crtc_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i + 1, &adev->crtc_irq); > if (r) > return r; > } > > for (i = 8; i < 20; i += 2) { > - r = amdgpu_irq_add_id(adev, i, &adev->pageflip_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i, &adev->pageflip_irq); > if (r) > return r; > } > > /* HPD hotplug */ > - r = amdgpu_irq_add_id(adev, 42, &adev->hpd_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 42, &adev->hpd_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > index d2590d7..cd4362e 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_v8_0.c > @@ -2794,19 +2794,19 @@ static int dce_v8_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > for (i = 0; i < adev->mode_info.num_crtc; i++) { > - r = amdgpu_irq_add_id(adev, i + 1, &adev->crtc_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i + 1, &adev->crtc_irq); > if (r) > return r; > } > > for (i = 8; i < 20; i += 2) { > - r = amdgpu_irq_add_id(adev, i, &adev->pageflip_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, i, &adev->pageflip_irq); > if (r) > return r; > } > > /* HPD hotplug */ > - r = amdgpu_irq_add_id(adev, 42, &adev->hpd_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 42, &adev->hpd_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > index 1538fd1..a2681a8 100644 > --- a/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > +++ b/drivers/gpu/drm/amd/amdgpu/dce_virtual.c > @@ -464,7 +464,7 @@ static int dce_virtual_sw_init(void *handle) > int r, i; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - r = amdgpu_irq_add_id(adev, 229, &adev->crtc_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 229, &adev->crtc_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c > index cb3d2816..913690a 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v6_0.c > @@ -3242,15 +3242,15 @@ static int gfx_v6_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > int i, r; > > - r = amdgpu_irq_add_id(adev, 181, &adev->gfx.eop_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 181, &adev->gfx.eop_irq); > if (r) > return r; > > - r = amdgpu_irq_add_id(adev, 184, &adev->gfx.priv_reg_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 184, &adev->gfx.priv_reg_irq); > if (r) > return r; > > - r = amdgpu_irq_add_id(adev, 185, &adev->gfx.priv_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 185, &adev->gfx.priv_inst_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c > index e6a25ee..62876b0 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c > @@ -4669,17 +4669,19 @@ static int gfx_v7_0_sw_init(void *handle) > int i, r; > > /* EOP Event */ > - r = amdgpu_irq_add_id(adev, 181, &adev->gfx.eop_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 181, &adev->gfx.eop_irq); > if (r) > return r; > > /* Privileged reg */ > - r = amdgpu_irq_add_id(adev, 184, &adev->gfx.priv_reg_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 184, > + &adev->gfx.priv_reg_irq); > if (r) > return r; > > /* Privileged inst */ > - r = amdgpu_irq_add_id(adev, 185, &adev->gfx.priv_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 185, > + &adev->gfx.priv_inst_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > index 304f28c..1af8650 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v8_0.c > @@ -2073,22 +2073,24 @@ static int gfx_v8_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > /* KIQ event */ > - r = amdgpu_irq_add_id(adev, 178, &adev->gfx.kiq.irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 178, &adev->gfx.kiq.irq); > if (r) > return r; > > /* EOP Event */ > - r = amdgpu_irq_add_id(adev, 181, &adev->gfx.eop_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 181, &adev->gfx.eop_irq); > if (r) > return r; > > /* Privileged reg */ > - r = amdgpu_irq_add_id(adev, 184, &adev->gfx.priv_reg_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 184, > + &adev->gfx.priv_reg_irq); > if (r) > return r; > > /* Privileged inst */ > - r = amdgpu_irq_add_id(adev, 185, &adev->gfx.priv_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 185, > + &adev->gfx.priv_inst_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c > index 3328428..f27f565 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v6_0.c > @@ -823,11 +823,11 @@ static int gmc_v6_0_sw_init(void *handle) > int dma_bits; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - r = amdgpu_irq_add_id(adev, 146, &adev->mc.vm_fault); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 146, &adev->mc.vm_fault); > if (r) > return r; > > - r = amdgpu_irq_add_id(adev, 147, &adev->mc.vm_fault); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 147, &adev->mc.vm_fault); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > index dc2b4c7..83fe671 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c > @@ -968,11 +968,11 @@ static int gmc_v7_0_sw_init(void *handle) > adev->mc.vram_type = gmc_v7_0_convert_vram_type(tmp); > } > > - r = amdgpu_irq_add_id(adev, 146, &adev->mc.vm_fault); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 146, &adev->mc.vm_fault); > if (r) > return r; > > - r = amdgpu_irq_add_id(adev, 147, &adev->mc.vm_fault); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 147, &adev->mc.vm_fault); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > index 81b1a49..92f4832 100644 > --- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c > @@ -980,11 +980,11 @@ static int gmc_v8_0_sw_init(void *handle) > adev->mc.vram_type = gmc_v8_0_convert_vram_type(tmp); > } > > - r = amdgpu_irq_add_id(adev, 146, &adev->mc.vm_fault); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 146, &adev->mc.vm_fault); > if (r) > return r; > > - r = amdgpu_irq_add_id(adev, 147, &adev->mc.vm_fault); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 147, &adev->mc.vm_fault); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/iceland_ih.c b/drivers/gpu/drm/amd/amdgpu/iceland_ih.c > index ac21bb7..8f7ea87 100644 > --- a/drivers/gpu/drm/amd/amdgpu/iceland_ih.c > +++ b/drivers/gpu/drm/amd/amdgpu/iceland_ih.c > @@ -227,6 +227,7 @@ static void iceland_ih_decode_iv(struct amdgpu_device *adev, > dw[2] = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]); > dw[3] = le32_to_cpu(adev->irq.ih.ring[ring_index + 3]); > > + entry->client_id = AMDGPU_IH_CLIENT_ID_ANY; > entry->src_id = dw[0] & 0xff; > entry->src_data = dw[1] & 0xfffffff; > entry->ring_id = dw[2] & 0xff; > diff --git a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > index 13f3237..67de81d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > +++ b/drivers/gpu/drm/amd/amdgpu/kv_dpm.c > @@ -2981,11 +2981,13 @@ static int kv_dpm_sw_init(void *handle) > int ret; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - ret = amdgpu_irq_add_id(adev, 230, &adev->pm.dpm.thermal.irq); > + ret = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 230, > + &adev->pm.dpm.thermal.irq); > if (ret) > return ret; > > - ret = amdgpu_irq_add_id(adev, 231, &adev->pm.dpm.thermal.irq); > + ret = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 231, > + &adev->pm.dpm.thermal.irq); > if (ret) > return ret; > > diff --git a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c > index 3164d61..6d06a93 100644 > --- a/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c > +++ b/drivers/gpu/drm/amd/amdgpu/mxgpu_vi.c > @@ -566,11 +566,11 @@ int xgpu_vi_mailbox_add_irq_id(struct amdgpu_device *adev) > { > int r; > > - r = amdgpu_irq_add_id(adev, 135, &adev->virt.rcv_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 135, &adev->virt.rcv_irq); > if (r) > return r; > > - r = amdgpu_irq_add_id(adev, 138, &adev->virt.ack_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 138, &adev->virt.ack_irq); > if (r) { > amdgpu_irq_put(adev, &adev->virt.rcv_irq, 0); > return r; > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c > index f5ee5f3..861b18b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c > @@ -921,17 +921,20 @@ static int sdma_v2_4_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > /* SDMA trap event */ > - r = amdgpu_irq_add_id(adev, 224, &adev->sdma.trap_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 224, > + &adev->sdma.trap_irq); > if (r) > return r; > > /* SDMA Privileged inst */ > - r = amdgpu_irq_add_id(adev, 241, &adev->sdma.illegal_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 241, > + &adev->sdma.illegal_inst_irq); > if (r) > return r; > > /* SDMA Privileged inst */ > - r = amdgpu_irq_add_id(adev, 247, &adev->sdma.illegal_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 247, > + &adev->sdma.illegal_inst_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c > index e715385..149a18b 100644 > --- a/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v3_0.c > @@ -1137,17 +1137,20 @@ static int sdma_v3_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > /* SDMA trap event */ > - r = amdgpu_irq_add_id(adev, 224, &adev->sdma.trap_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 224, > + &adev->sdma.trap_irq); > if (r) > return r; > > /* SDMA Privileged inst */ > - r = amdgpu_irq_add_id(adev, 241, &adev->sdma.illegal_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 241, > + &adev->sdma.illegal_inst_irq); > if (r) > return r; > > /* SDMA Privileged inst */ > - r = amdgpu_irq_add_id(adev, 247, &adev->sdma.illegal_inst_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 247, > + &adev->sdma.illegal_inst_irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c > index 256a77b..381ae97 100644 > --- a/drivers/gpu/drm/amd/amdgpu/si_dma.c > +++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c > @@ -517,12 +517,12 @@ static int si_dma_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > /* DMA0 trap event */ > - r = amdgpu_irq_add_id(adev, 224, &adev->sdma.trap_irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 224, &adev->sdma.trap_irq); > if (r) > return r; > > /* DMA1 trap event */ > - r = amdgpu_irq_add_id(adev, 244, &adev->sdma.trap_irq_1); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 244, &adev->sdma.trap_irq_1); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/si_dpm.c b/drivers/gpu/drm/amd/amdgpu/si_dpm.c > index ded6b9b..bc4d947 100644 > --- a/drivers/gpu/drm/amd/amdgpu/si_dpm.c > +++ b/drivers/gpu/drm/amd/amdgpu/si_dpm.c > @@ -7690,11 +7690,11 @@ static int si_dpm_sw_init(void *handle) > int ret; > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > - ret = amdgpu_irq_add_id(adev, 230, &adev->pm.dpm.thermal.irq); > + ret = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 230, &adev->pm.dpm.thermal.irq); > if (ret) > return ret; > > - ret = amdgpu_irq_add_id(adev, 231, &adev->pm.dpm.thermal.irq); > + ret = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 231, &adev->pm.dpm.thermal.irq); > if (ret) > return ret; > > diff --git a/drivers/gpu/drm/amd/amdgpu/tonga_ih.c b/drivers/gpu/drm/amd/amdgpu/tonga_ih.c > index 52b71ee..08bf400 100644 > --- a/drivers/gpu/drm/amd/amdgpu/tonga_ih.c > +++ b/drivers/gpu/drm/amd/amdgpu/tonga_ih.c > @@ -238,6 +238,7 @@ static void tonga_ih_decode_iv(struct amdgpu_device *adev, > dw[2] = le32_to_cpu(adev->irq.ih.ring[ring_index + 2]); > dw[3] = le32_to_cpu(adev->irq.ih.ring[ring_index + 3]); > > + entry->client_id = AMDGPU_IH_CLIENT_ID_ANY; > entry->src_id = dw[0] & 0xff; > entry->src_data = dw[1] & 0xfffffff; > entry->ring_id = dw[2] & 0xff; > diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > index 580c658..b9faaf1 100644 > --- a/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v4_2.c > @@ -107,7 +107,7 @@ static int uvd_v4_2_sw_init(void *handle) > int r; > > /* UVD TRAP */ > - r = amdgpu_irq_add_id(adev, 124, &adev->uvd.irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 124, &adev->uvd.irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c > index 7a4fca0..9237225 100644 > --- a/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v5_0.c > @@ -103,7 +103,7 @@ static int uvd_v5_0_sw_init(void *handle) > int r; > > /* UVD TRAP */ > - r = amdgpu_irq_add_id(adev, 124, &adev->uvd.irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 124, &adev->uvd.irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c > index 2c5482e..29cc982 100644 > --- a/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/uvd_v6_0.c > @@ -106,7 +106,7 @@ static int uvd_v6_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > /* UVD TRAP */ > - r = amdgpu_irq_add_id(adev, 124, &adev->uvd.irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 124, &adev->uvd.irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c > index 9a4aa5e..c06ca90 100644 > --- a/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/vce_v2_0.c > @@ -430,7 +430,7 @@ static int vce_v2_0_sw_init(void *handle) > struct amdgpu_device *adev = (struct amdgpu_device *)handle; > > /* VCE */ > - r = amdgpu_irq_add_id(adev, 167, &adev->vce.irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 167, &adev->vce.irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c > index 7877a51..0605ed9 100644 > --- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c > +++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c > @@ -383,7 +383,7 @@ static int vce_v3_0_sw_init(void *handle) > int r, i; > > /* VCE */ > - r = amdgpu_irq_add_id(adev, 167, &adev->vce.irq); > + r = amdgpu_irq_add_id(adev, AMDGPU_IH_CLIENT_ID_ANY, 167, &adev->vce.irq); > if (r) > return r; > > diff --git a/drivers/gpu/drm/amd/include/cgs_linux.h b/drivers/gpu/drm/amd/include/cgs_linux.h > index ca4f600..bc7446c 100644 > --- a/drivers/gpu/drm/amd/include/cgs_linux.h > +++ b/drivers/gpu/drm/amd/include/cgs_linux.h > @@ -66,7 +66,8 @@ typedef int (*cgs_irq_handler_func_t)(void *private_data, > * > * Return: 0 on success, -errno otherwise > */ > -typedef int (*cgs_add_irq_source_t)(struct cgs_device *cgs_device, unsigned src_id, > +typedef int (*cgs_add_irq_source_t)(void *cgs_device, unsigned client_id, > + unsigned src_id, > unsigned num_types, > cgs_irq_source_set_func_t set, > cgs_irq_handler_func_t handler, > @@ -83,7 +84,7 @@ typedef int (*cgs_add_irq_source_t)(struct cgs_device *cgs_device, unsigned src_ > * > * Return: 0 on success, -errno otherwise > */ > -typedef int (*cgs_irq_get_t)(struct cgs_device *cgs_device, unsigned src_id, unsigned type); > +typedef int (*cgs_irq_get_t)(void *cgs_device, unsigned client_id, unsigned src_id, unsigned type); > > /** > * cgs_irq_put() - Indicate IRQ source is no longer needed > @@ -98,7 +99,7 @@ typedef int (*cgs_irq_get_t)(struct cgs_device *cgs_device, unsigned src_id, uns > * > * Return: 0 on success, -errno otherwise > */ > -typedef int (*cgs_irq_put_t)(struct cgs_device *cgs_device, unsigned src_id, unsigned type); > +typedef int (*cgs_irq_put_t)(void *cgs_device, unsigned client_id, unsigned src_id, unsigned type); > > struct cgs_os_ops { > /* IRQ handling */ > @@ -107,12 +108,12 @@ struct cgs_os_ops { > cgs_irq_put_t irq_put; > }; > > -#define cgs_add_irq_source(dev,src_id,num_types,set,handler,private_data) \ > - CGS_OS_CALL(add_irq_source,dev,src_id,num_types,set,handler, \ > +#define cgs_add_irq_source(dev,client_id,src_id,num_types,set,handler,private_data) \ > + CGS_OS_CALL(add_irq_source,dev,client_id,src_id,num_types,set,handler, \ > private_data) > -#define cgs_irq_get(dev,src_id,type) \ > - CGS_OS_CALL(irq_get,dev,src_id,type) > -#define cgs_irq_put(dev,src_id,type) \ > - CGS_OS_CALL(irq_put,dev,src_id,type) > +#define cgs_irq_get(dev,client_id,src_id,type) \ > + CGS_OS_CALL(irq_get,dev,client_id,src_id,type) > +#define cgs_irq_put(dev,client_id,src_id,type) \ > + CGS_OS_CALL(irq_put,dev,client_id,src_id,type) > > #endif /* _CGS_LINUX_H */