static int regmap_sunxi_rsb_reg_read(void *context, unsigned int reg, unsigned int *val) { struct sunxi_rsb_ctx *ctx = context; struct sunxi_rsb_device *rdev = ctx->rdev; if (reg > 0xff) return -EINVAL; return sunxi_rsb_read(rdev->rsb, rdev->rtaddr, reg, val, ctx->size); }
//disable RTC interrupt static void disable_rtc_int(void) { u16 reg_val = 0; if ( 0 != sunxi_rsb_config(AC100_ADDR,RSB_SADDR_AC100)) { printf("RSB: config fail for ac100\n"); return ; } if(sunxi_rsb_read(AC100_ADDR,0x0,(u8*)®_val,2)) { printf("=====cannot read rtc 0xd0 =====\n"); goto __END; } printf("ac100 reg 0x00 = 0x%x\n",reg_val); if(sunxi_rsb_read(AC100_ADDR,0xd0,(u8*)®_val,2)) { printf("=====cannot read rtc 0xd0 =====\n"); goto __END; } //printf("before====rtc 0xd0 = 0x%x\n",reg_val); if(sunxi_rsb_read(AC100_ADDR,0xd1,(u8*)®_val,2)) { printf("=====cannot read rtc 0xd0 =====\n"); goto __END; } //printf("before====rtc 0xd1 = 0x%x\n",reg_val); //set d0 d1 reg_val = 0; if(sunxi_rsb_write(AC100_ADDR,0xd0,(u8*)®_val,2)) { printf("==== can't disable rtc 0xd0 int ====\n"); goto __END; } reg_val = 1; if(sunxi_rsb_write(AC100_ADDR,0xd1,(u8*)®_val,2)) { printf("==== cant disable rtc 0xd1 int =====\n"); goto __END; } //read d0 d1 if(sunxi_rsb_read(AC100_ADDR,0xd0,(u8*)®_val,2)) { printf("=====cannot read rtc 0xd0 =====\n"); goto __END; } printf("ac100 reg 0xd0 = 0x%x\n",reg_val); if(sunxi_rsb_read(AC100_ADDR,0xd1,(u8*)®_val,2)) { printf("=====cannot read rtc 0xd0 =====\n"); goto __END; } printf("ac100 reg 0xd1 = 0x%x\n",reg_val); __END: return ; }