Lines Matching refs:sp

43 static void sp_add_device(struct sp_device *sp)  in sp_add_device()  argument
49 list_add_tail(&sp->entry, &sp_units); in sp_add_device()
54 static void sp_del_device(struct sp_device *sp) in sp_del_device() argument
60 list_del(&sp->entry); in sp_del_device()
67 struct sp_device *sp = data; in sp_irq_handler() local
69 if (sp->ccp_irq_handler) in sp_irq_handler()
70 sp->ccp_irq_handler(irq, sp->ccp_irq_data); in sp_irq_handler()
72 if (sp->psp_irq_handler) in sp_irq_handler()
73 sp->psp_irq_handler(irq, sp->psp_irq_data); in sp_irq_handler()
78 int sp_request_ccp_irq(struct sp_device *sp, irq_handler_t handler, in sp_request_ccp_irq() argument
83 if ((sp->psp_irq == sp->ccp_irq) && sp->dev_vdata->psp_vdata) { in sp_request_ccp_irq()
85 sp->ccp_irq_data = data; in sp_request_ccp_irq()
86 sp->ccp_irq_handler = handler; in sp_request_ccp_irq()
88 if (!sp->irq_registered) { in sp_request_ccp_irq()
89 ret = request_irq(sp->ccp_irq, sp_irq_handler, 0, in sp_request_ccp_irq()
90 sp->name, sp); in sp_request_ccp_irq()
94 sp->irq_registered = true; in sp_request_ccp_irq()
98 ret = request_irq(sp->ccp_irq, handler, 0, name, data); in sp_request_ccp_irq()
106 int sp_request_psp_irq(struct sp_device *sp, irq_handler_t handler, in sp_request_psp_irq() argument
111 if ((sp->psp_irq == sp->ccp_irq) && sp->dev_vdata->ccp_vdata) { in sp_request_psp_irq()
113 sp->psp_irq_data = data; in sp_request_psp_irq()
114 sp->psp_irq_handler = handler; in sp_request_psp_irq()
116 if (!sp->irq_registered) { in sp_request_psp_irq()
117 ret = request_irq(sp->psp_irq, sp_irq_handler, 0, in sp_request_psp_irq()
118 sp->name, sp); in sp_request_psp_irq()
122 sp->irq_registered = true; in sp_request_psp_irq()
126 ret = request_irq(sp->psp_irq, handler, 0, name, data); in sp_request_psp_irq()
134 void sp_free_ccp_irq(struct sp_device *sp, void *data) in sp_free_ccp_irq() argument
136 if ((sp->psp_irq == sp->ccp_irq) && sp->dev_vdata->psp_vdata) { in sp_free_ccp_irq()
138 if (!sp->psp_irq_handler) { in sp_free_ccp_irq()
140 free_irq(sp->ccp_irq, sp); in sp_free_ccp_irq()
142 sp->irq_registered = false; in sp_free_ccp_irq()
145 sp->ccp_irq_handler = NULL; in sp_free_ccp_irq()
146 sp->ccp_irq_data = NULL; in sp_free_ccp_irq()
149 free_irq(sp->ccp_irq, data); in sp_free_ccp_irq()
153 void sp_free_psp_irq(struct sp_device *sp, void *data) in sp_free_psp_irq() argument
155 if ((sp->psp_irq == sp->ccp_irq) && sp->dev_vdata->ccp_vdata) { in sp_free_psp_irq()
157 if (!sp->ccp_irq_handler) { in sp_free_psp_irq()
159 free_irq(sp->psp_irq, sp); in sp_free_psp_irq()
161 sp->irq_registered = false; in sp_free_psp_irq()
164 sp->psp_irq_handler = NULL; in sp_free_psp_irq()
165 sp->psp_irq_data = NULL; in sp_free_psp_irq()
168 free_irq(sp->psp_irq, data); in sp_free_psp_irq()
179 struct sp_device *sp; in sp_alloc_struct() local
181 sp = devm_kzalloc(dev, sizeof(*sp), GFP_KERNEL); in sp_alloc_struct()
182 if (!sp) in sp_alloc_struct()
185 sp->dev = dev; in sp_alloc_struct()
186 sp->ord = atomic_inc_return(&sp_ordinal); in sp_alloc_struct()
187 snprintf(sp->name, SP_MAX_NAME_LEN, "sp-%u", sp->ord); in sp_alloc_struct()
189 return sp; in sp_alloc_struct()
192 int sp_init(struct sp_device *sp) in sp_init() argument
194 sp_add_device(sp); in sp_init()
196 if (sp->dev_vdata->ccp_vdata) in sp_init()
197 ccp_dev_init(sp); in sp_init()
199 if (sp->dev_vdata->psp_vdata) in sp_init()
200 psp_dev_init(sp); in sp_init()
204 void sp_destroy(struct sp_device *sp) in sp_destroy() argument
206 if (sp->dev_vdata->ccp_vdata) in sp_destroy()
207 ccp_dev_destroy(sp); in sp_destroy()
209 if (sp->dev_vdata->psp_vdata) in sp_destroy()
210 psp_dev_destroy(sp); in sp_destroy()
212 sp_del_device(sp); in sp_destroy()
215 int sp_suspend(struct sp_device *sp) in sp_suspend() argument
217 if (sp->dev_vdata->ccp_vdata) { in sp_suspend()
218 ccp_dev_suspend(sp); in sp_suspend()
224 int sp_resume(struct sp_device *sp) in sp_resume() argument
226 if (sp->dev_vdata->ccp_vdata) { in sp_resume()
227 ccp_dev_resume(sp); in sp_resume()