Johan Hovold <[email protected]> 於 2019年9月20日 週五 下午3:56寫道:
> Yes, that's better, but you're mixing register addresses, bit values and
> masks above. Perhaps things would be more clear if you but a _REG suffix
> on the register defines and order things as follows:
>
> #define PL2303_HXN_<name1>_REG 0xX1
> #define PL2303_HXN_<name1>_<field>_MASK 0xY1
> #define PL2303_HXN_<name1>_<field>_<value> 0xZ1
>
> #define PL2303_HXN_<name2>_REG 0xX2
> #define PL2303_HXN_<name2>_<field>_MASK 0xY2
> #define PL2303_HXN_<name2>_<field>_<value> 0xZ2
>
> The idea is simply to keep related defines together and not mix
> register address, masks and value defines.
>
> Keep registers sorted by address, and bit masks and values by bit order
> (e.g. MSB first).
Thank you for your reply
Charles Ans:
The new define is follows
#define PL2303_READ_TYPE_HX_STATUS 0x8080
#define PL2303_HXN_FLOWCTRL_REG 0x0A
#define PL2303_HXN_FLOWCTRL_MASK 0x1C
#define PL2303_HXN_FLOWCTRL_NONE 0x1C
#define PL2303_HXN_FLOWCTRL_RTS_CTS 0x18
#define PL2303_HXN_FLOWCTRL_XON_XOFF 0x0C
#define PL2303_HXN_RESET_REG 0x07
#define PL2303_HXN_RESET_UPSTREAM_PIPE 0x02
#define PL2303_HXN_RESET_DOWNSTREAM_PIPE 0x01
> Yes, but that doesn't imply that you need to read back the old value.
>
> I'm assuming it would either always read back as 0, or you would read
> back the previous value written, which means you could end up resetting
> something you did not intend.
>
> Either way, you should not read back the current value when resetting
> the data pipes.
>
Thank you for your reply
Charles Ans:
The new code is follows
pl2303_vendor_write(serial,
PL2303_HXN_RESET_REG,
PL2303_HXN_RESET_UPSTREAM_PIPE |
PL2303_HXN_RESET_DOWNSTREAM_PIPE);
Please confirm the above new define & code..
If there is no problem.. I will write a new Patch file.
Charles.