[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] Fw: Max7310: confused about the method of reading outpu
From: |
andrzej zaborowski |
Subject: |
Re: [Qemu-devel] Fw: Max7310: confused about the method of reading output port register |
Date: |
Mon, 2 Sep 2013 00:38:48 +0200 |
Hi Yang,
On 26 August 2013 03:47, Yang Ning <address@hidden> wrote:
>
> Dear All:
>
> Firstly,I'm writing to express my thanks to Zaborowski 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;
Yes, if by "overload" they mean change direction to "input", then yes,
I think you are correct.
Personally I'd call it s->output. I'm wondering if we may need to
update the output levels when the Configuration (0x03) is written and
on reset. This would be best done by adding a short function
max7310_update() that does the "for (diff = ...)" loop and calls
qemu_set_irq.
Best regards
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [Qemu-devel] Fw: Max7310: confused about the method of reading output port register,
andrzej zaborowski <=