Lines Matching refs:spu

116 static struct spu_pdata *spu_pdata(struct spu *spu)  in spu_pdata()  argument
118 return spu->pdata; in spu_pdata()
150 static int __init construct_spu(struct spu *spu) in construct_spu() argument
159 &spu_pdata(spu)->priv2_addr, &problem_phys, in construct_spu()
161 &spu_pdata(spu)->shadow_addr, in construct_spu()
162 &spu_pdata(spu)->spe_id); in construct_spu()
163 spu->problem_phys = problem_phys; in construct_spu()
164 spu->local_store_phys = local_store_phys; in construct_spu()
175 static void spu_unmap(struct spu *spu) in spu_unmap() argument
177 iounmap(spu->priv2); in spu_unmap()
178 iounmap(spu->problem); in spu_unmap()
179 iounmap((__force u8 __iomem *)spu->local_store); in spu_unmap()
180 iounmap(spu_pdata(spu)->shadow); in spu_unmap()
190 static int __init setup_areas(struct spu *spu) in setup_areas() argument
195 spu_pdata(spu)->shadow = ioremap_prot(spu_pdata(spu)->shadow_addr, in setup_areas()
197 if (!spu_pdata(spu)->shadow) { in setup_areas()
202 spu->local_store = (__force void *)ioremap_wc(spu->local_store_phys, LS_SIZE); in setup_areas()
204 if (!spu->local_store) { in setup_areas()
210 spu->problem = ioremap(spu->problem_phys, in setup_areas()
213 if (!spu->problem) { in setup_areas()
218 spu->priv2 = ioremap(spu_pdata(spu)->priv2_addr, in setup_areas()
221 if (!spu->priv2) { in setup_areas()
226 dump_areas(spu_pdata(spu)->spe_id, spu_pdata(spu)->priv2_addr, in setup_areas()
227 spu->problem_phys, spu->local_store_phys, in setup_areas()
228 spu_pdata(spu)->shadow_addr); in setup_areas()
229 dump_areas(spu_pdata(spu)->spe_id, (unsigned long)spu->priv2, in setup_areas()
230 (unsigned long)spu->problem, (unsigned long)spu->local_store, in setup_areas()
231 (unsigned long)spu_pdata(spu)->shadow); in setup_areas()
236 spu_unmap(spu); in setup_areas()
241 static int __init setup_interrupts(struct spu *spu) in setup_interrupts() argument
245 result = ps3_spe_irq_setup(PS3_BINDING_CPU_ANY, spu_pdata(spu)->spe_id, in setup_interrupts()
246 0, &spu->irqs[0]); in setup_interrupts()
251 result = ps3_spe_irq_setup(PS3_BINDING_CPU_ANY, spu_pdata(spu)->spe_id, in setup_interrupts()
252 1, &spu->irqs[1]); in setup_interrupts()
257 result = ps3_spe_irq_setup(PS3_BINDING_CPU_ANY, spu_pdata(spu)->spe_id, in setup_interrupts()
258 2, &spu->irqs[2]); in setup_interrupts()
266 ps3_spe_irq_destroy(spu->irqs[1]); in setup_interrupts()
268 ps3_spe_irq_destroy(spu->irqs[0]); in setup_interrupts()
270 spu->irqs[0] = spu->irqs[1] = spu->irqs[2] = 0; in setup_interrupts()
274 static int __init enable_spu(struct spu *spu) in enable_spu() argument
278 result = lv1_enable_logical_spe(spu_pdata(spu)->spe_id, in enable_spu()
279 spu_pdata(spu)->resource_id); in enable_spu()
287 result = setup_areas(spu); in enable_spu()
292 result = setup_interrupts(spu); in enable_spu()
300 spu_unmap(spu); in enable_spu()
302 lv1_disable_logical_spe(spu_pdata(spu)->spe_id, 0); in enable_spu()
307 static int ps3_destroy_spu(struct spu *spu) in ps3_destroy_spu() argument
311 pr_debug("%s:%d spu_%d\n", __func__, __LINE__, spu->number); in ps3_destroy_spu()
313 result = lv1_disable_logical_spe(spu_pdata(spu)->spe_id, 0); in ps3_destroy_spu()
316 ps3_spe_irq_destroy(spu->irqs[2]); in ps3_destroy_spu()
317 ps3_spe_irq_destroy(spu->irqs[1]); in ps3_destroy_spu()
318 ps3_spe_irq_destroy(spu->irqs[0]); in ps3_destroy_spu()
320 spu->irqs[0] = spu->irqs[1] = spu->irqs[2] = 0; in ps3_destroy_spu()
322 spu_unmap(spu); in ps3_destroy_spu()
324 result = lv1_destruct_logical_spe(spu_pdata(spu)->spe_id); in ps3_destroy_spu()
327 kfree(spu->pdata); in ps3_destroy_spu()
328 spu->pdata = NULL; in ps3_destroy_spu()
333 static int __init ps3_create_spu(struct spu *spu, void *data) in ps3_create_spu() argument
337 pr_debug("%s:%d spu_%d\n", __func__, __LINE__, spu->number); in ps3_create_spu()
339 spu->pdata = kzalloc(sizeof(struct spu_pdata), in ps3_create_spu()
342 if (!spu->pdata) { in ps3_create_spu()
347 spu_pdata(spu)->resource_id = (unsigned long)data; in ps3_create_spu()
351 spu_pdata(spu)->cache.sr1 = 0x33; in ps3_create_spu()
353 result = construct_spu(spu); in ps3_create_spu()
360 result = enable_spu(spu); in ps3_create_spu()
368 while (in_be64(&spu_pdata(spu)->shadow->spe_execution_status) in ps3_create_spu()
376 ps3_destroy_spu(spu); in ps3_create_spu()
462 static void int_mask_and(struct spu *spu, int class, u64 mask) in int_mask_and() argument
467 old_mask = spu_int_mask_get(spu, class); in int_mask_and()
468 spu_int_mask_set(spu, class, old_mask & mask); in int_mask_and()
471 static void int_mask_or(struct spu *spu, int class, u64 mask) in int_mask_or() argument
475 old_mask = spu_int_mask_get(spu, class); in int_mask_or()
476 spu_int_mask_set(spu, class, old_mask | mask); in int_mask_or()
479 static void int_mask_set(struct spu *spu, int class, u64 mask) in int_mask_set() argument
481 spu_pdata(spu)->cache.masks[class] = mask; in int_mask_set()
482 lv1_set_spe_interrupt_mask(spu_pdata(spu)->spe_id, class, in int_mask_set()
483 spu_pdata(spu)->cache.masks[class]); in int_mask_set()
486 static u64 int_mask_get(struct spu *spu, int class) in int_mask_get() argument
488 return spu_pdata(spu)->cache.masks[class]; in int_mask_get()
491 static void int_stat_clear(struct spu *spu, int class, u64 stat) in int_stat_clear() argument
495 lv1_clear_spe_interrupt_status(spu_pdata(spu)->spe_id, class, in int_stat_clear()
499 static u64 int_stat_get(struct spu *spu, int class) in int_stat_get() argument
503 lv1_get_spe_interrupt_status(spu_pdata(spu)->spe_id, class, &stat); in int_stat_get()
507 static void cpu_affinity_set(struct spu *spu, int cpu) in cpu_affinity_set() argument
512 static u64 mfc_dar_get(struct spu *spu) in mfc_dar_get() argument
514 return in_be64(&spu_pdata(spu)->shadow->mfc_dar_RW); in mfc_dar_get()
517 static void mfc_dsisr_set(struct spu *spu, u64 dsisr) in mfc_dsisr_set() argument
522 static u64 mfc_dsisr_get(struct spu *spu) in mfc_dsisr_get() argument
524 return in_be64(&spu_pdata(spu)->shadow->mfc_dsisr_RW); in mfc_dsisr_get()
527 static void mfc_sdr_setup(struct spu *spu) in mfc_sdr_setup() argument
532 static void mfc_sr1_set(struct spu *spu, u64 sr1) in mfc_sr1_set() argument
539 BUG_ON((sr1 & allowed) != (spu_pdata(spu)->cache.sr1 & allowed)); in mfc_sr1_set()
541 spu_pdata(spu)->cache.sr1 = sr1; in mfc_sr1_set()
543 spu_pdata(spu)->spe_id, in mfc_sr1_set()
545 spu_pdata(spu)->cache.sr1); in mfc_sr1_set()
548 static u64 mfc_sr1_get(struct spu *spu) in mfc_sr1_get() argument
550 return spu_pdata(spu)->cache.sr1; in mfc_sr1_get()
553 static void mfc_tclass_id_set(struct spu *spu, u64 tclass_id) in mfc_tclass_id_set() argument
555 spu_pdata(spu)->cache.tclass_id = tclass_id; in mfc_tclass_id_set()
557 spu_pdata(spu)->spe_id, in mfc_tclass_id_set()
559 spu_pdata(spu)->cache.tclass_id); in mfc_tclass_id_set()
562 static u64 mfc_tclass_id_get(struct spu *spu) in mfc_tclass_id_get() argument
564 return spu_pdata(spu)->cache.tclass_id; in mfc_tclass_id_get()
567 static void tlb_invalidate(struct spu *spu) in tlb_invalidate() argument
572 static void resource_allocation_groupID_set(struct spu *spu, u64 id) in resource_allocation_groupID_set() argument
577 static u64 resource_allocation_groupID_get(struct spu *spu) in resource_allocation_groupID_get() argument
582 static void resource_allocation_enable_set(struct spu *spu, u64 enable) in resource_allocation_enable_set() argument
587 static u64 resource_allocation_enable_get(struct spu *spu) in resource_allocation_enable_get() argument