Hi Peter and Andy, > >>>> Shouldn't you return -ETIMEDOUT if count == 0? > >>> Yes. Good catch. Does the below fix looks ok? > >>> > >>> do { > >>> status = ccg_write(uc, CCGX_RAB_INTR_REG, &data, > sizeof(data)); > >>> if (status < 0) > >>> return status; > >>> > >>> usleep_range(10000, 11000); > >>> > >>> status = ccg_read(uc, CCGX_RAB_INTR_REG, &data, sizeof(data)); > >>> if (status < 0) > >>> return status; > >>> > >>> if (!data) > >>> return 0; > >>> } while (data && count--); > >> > >> Doesn't that condition break out of the loop immediately? > > How? I didn't get your point? We want to break out when data is zero > > (interrupt status cleared). > > The statement > > if (!data) > return 0; > > ensures that 'data' is non-zero when the loop continues, so checking that > 'data' is non-zero in the while loop test is pointless. > > >>> Ah, I see, but why you not reorganize it to put this into do-while loop? > > We actually need to check data after reading it so will reorganize > accordingly. Sorry, my bad, will revise. Thanks Ajay --nvpublic > > do { > > read > > check for data and break out if (!data) > > write > > sleep > > } while (--count); > > Here, you have fixed the "issue" (but it doesn't match v14). > > Cheers, > Peter