diff options
Diffstat (limited to 'drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c')
-rw-r--r-- | drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c index 8782ebe0b39a..30d6f1a404ba 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_2835_arm.c @@ -29,6 +29,8 @@ #define BELL0 0x00 #define BELL2 0x08 +#define ARM_DS_ACTIVE BIT(2) + struct vchiq_2835_state { int inited; struct vchiq_arm_state arm_state; @@ -132,8 +134,9 @@ int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state *state) *(char **)&g_fragments_base[i * g_fragments_size] = NULL; sema_init(&g_free_fragments_sema, MAX_FRAGMENTS); - if (vchiq_init_state(state, vchiq_slot_zero) != VCHIQ_SUCCESS) - return -EINVAL; + err = vchiq_init_state(state, vchiq_slot_zero); + if (err) + return err; g_regs = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(g_regs)) @@ -169,25 +172,21 @@ int vchiq_platform_init(struct platform_device *pdev, struct vchiq_state *state) return 0; } -enum vchiq_status +int vchiq_platform_init_state(struct vchiq_state *state) { - enum vchiq_status status = VCHIQ_SUCCESS; struct vchiq_2835_state *platform_state; state->platform_state = kzalloc(sizeof(*platform_state), GFP_KERNEL); if (!state->platform_state) - return VCHIQ_ERROR; + return -ENOMEM; platform_state = (struct vchiq_2835_state *)state->platform_state; platform_state->inited = 1; - status = vchiq_arm_init_state(state, &platform_state->arm_state); + vchiq_arm_init_state(state, &platform_state->arm_state); - if (status != VCHIQ_SUCCESS) - platform_state->inited = 0; - - return status; + return 0; } struct vchiq_arm_state* @@ -215,7 +214,7 @@ remote_event_signal(struct remote_event *event) writel(0, g_regs + BELL2); /* trigger vc interrupt */ } -enum vchiq_status +int vchiq_prepare_bulk_data(struct vchiq_bulk *bulk, void *offset, void __user *uoffset, int size, int dir) { @@ -227,7 +226,7 @@ vchiq_prepare_bulk_data(struct vchiq_bulk *bulk, void *offset, : PAGELIST_WRITE); if (!pagelistinfo) - return VCHIQ_ERROR; + return -ENOMEM; bulk->data = pagelistinfo->dma_addr; @@ -237,7 +236,7 @@ vchiq_prepare_bulk_data(struct vchiq_bulk *bulk, void *offset, */ bulk->remote_data = pagelistinfo; - return VCHIQ_SUCCESS; + return 0; } void @@ -272,7 +271,7 @@ vchiq_doorbell_irq(int irq, void *dev_id) /* Read (and clear) the doorbell */ status = readl(g_regs + BELL0); - if (status & 0x4) { /* Was the doorbell rung? */ + if (status & ARM_DS_ACTIVE) { /* Was the doorbell rung? */ remote_event_pollall(state); ret = IRQ_HANDLED; } |