* [Qemu-devel] Fwd: Max7310: confused about the method of reading output port register
@ 2013-09-01 2:05 Yang Ning
0 siblings, 0 replies; only message in thread
From: Yang Ning @ 2013-09-01 2:05 UTC (permalink / raw)
To: balrog; +Cc: qemu-devel
Dear Zaborowski:
Firstly,I'm writing to express my thanks to you for the source
code of Max7310 which have helped me so much.
But I'm still confused about the method of reading output port register.
code:
> case 0x01: /* Output port */
> return s->level & ~s->direction;
> break;
I found some instruction of output port register in the datasheet.
>" Reads from the output port register reflect the value that is in the flip-flop
>controlling the output selection, not the actual I/O value, which may differ if
>the out-put is overloaded."
So,in my opinion,in the defination of MAX7310State,whether the property
of outputport_reg should be added?
And does the method of reading/writing output port should be modified as
follows.
[reading]
case 0x01: /* Output port */
return s->outputport_reg;
break;
[writing]
case 0x01: /* Output port */
> for (diff = (data ^ s->level) & ~s->direction; diff;
> diff &= ~(1 << line)) {
> line = ffs(diff) - 1;
> if (s->handler[line])
> qemu_set_irq(s->handler[line], (data >> line) & 1);
> }
> s->level = (s->level & s->direction) | (data & ~s->direction);
s->outputport_reg = data;
break;
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2013-09-01 2:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-01 2:05 [Qemu-devel] Fwd: Max7310: confused about the method of reading output port register Yang Ning
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).