From: David Gibson <david@gibson.dropbear.id.au>
To: "Hervé Poussineau" <hpoussin@reactos.org>
Cc: qemu-ppc@nongnu.org, Alyssa Milburn <fuzzie@fuzzie.org>,
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>,
qemu-devel@nongnu.org, Alexander Graf <agraf@suse.de>
Subject: Re: [Qemu-devel] [PATCH 05/13] cuda: port SET_DEVICE_LIST command to new framework
Date: Mon, 25 Jan 2016 10:23:53 +1100 [thread overview]
Message-ID: <20160124232353.GR27454@voom.redhat.com> (raw)
In-Reply-To: <1453581610-23179-6-git-send-email-hpoussin@reactos.org>
[-- Attachment #1: Type: text/plain, Size: 5507 bytes --]
On Sat, Jan 23, 2016 at 09:40:02PM +0100, Hervé Poussineau wrote:
> Take device list mask into account when polling ADB devices.
Again, this appears to implement the command, not just move it.
> Signed-off-by: Hervé Poussineau <hpoussin@reactos.org>
> ---
> hw/input/adb.c | 18 ++++++++++--------
> hw/misc/macio/cuda.c | 17 +++++++++++++++--
> hw/ppc/mac.h | 1 +
> include/hw/input/adb.h | 2 +-
> roms/SLOF | 2 +-
> roms/openbios | 2 +-
> 6 files changed, 29 insertions(+), 13 deletions(-)
>
> diff --git a/hw/input/adb.c b/hw/input/adb.c
> index 09eead9..d05fdfd 100644
> --- a/hw/input/adb.c
> +++ b/hw/input/adb.c
> @@ -88,7 +88,7 @@ int adb_request(ADBBusState *s, uint8_t *obuf, const uint8_t *buf, int len)
> }
>
> /* XXX: move that to cuda ? */
> -int adb_poll(ADBBusState *s, uint8_t *obuf)
> +int adb_poll(ADBBusState *s, uint8_t *obuf, uint16_t poll_mask)
> {
> ADBDevice *d;
> int olen, i;
> @@ -99,13 +99,15 @@ int adb_poll(ADBBusState *s, uint8_t *obuf)
> if (s->poll_index >= s->nb_devices)
> s->poll_index = 0;
> d = s->devices[s->poll_index];
> - buf[0] = ADB_READREG | (d->devaddr << 4);
> - olen = adb_request(s, obuf + 1, buf, 1);
> - /* if there is data, we poll again the same device */
> - if (olen > 0) {
> - obuf[0] = buf[0];
> - olen++;
> - break;
> + if ((1 << d->devaddr) & poll_mask) {
> + buf[0] = ADB_READREG | (d->devaddr << 4);
> + olen = adb_request(s, obuf + 1, buf, 1);
> + /* if there is data, we poll again the same device */
> + if (olen > 0) {
> + obuf[0] = buf[0];
> + olen++;
> + break;
> + }
> }
> s->poll_index++;
> }
> diff --git a/hw/misc/macio/cuda.c b/hw/misc/macio/cuda.c
> index 9ec642f..9af8e1d 100644
> --- a/hw/misc/macio/cuda.c
> +++ b/hw/misc/macio/cuda.c
> @@ -522,7 +522,7 @@ static void cuda_adb_poll(void *opaque)
> uint8_t obuf[ADB_MAX_OUT_LEN + 2];
> int olen;
>
> - olen = adb_poll(&s->adb_bus, obuf + 2);
> + olen = adb_poll(&s->adb_bus, obuf + 2, s->poll_mask);
> if (olen > 0) {
> obuf[0] = ADB_PACKET;
> obuf[1] = 0x40; /* polled data */
> @@ -589,9 +589,22 @@ static bool cuda_cmd_set_autorate(CUDAState *s,
> return true;
> }
>
> +static bool cuda_cmd_set_device_list(CUDAState *s,
> + const uint8_t *in_data, int in_len,
> + uint8_t *out_data, int *out_len)
> +{
> + if (in_len != 2) {
> + return false;
> + }
> +
> + s->poll_mask = (((uint16_t)in_data[0]) << 8) | in_data[1];
> + return true;
> +}
> +
> static const CudaCommand handlers[] = {
> { CUDA_AUTOPOLL, "AUTOPOLL", cuda_cmd_autopoll },
> { CUDA_SET_AUTO_RATE, "SET_AUTO_RATE", cuda_cmd_set_autorate },
> + { CUDA_SET_DEVICE_LIST, "SET_DEVICE_LIST", cuda_cmd_set_device_list },
> };
>
> static void cuda_receive_packet(CUDAState *s,
> @@ -640,7 +653,6 @@ static void cuda_receive_packet(CUDAState *s,
> cuda_send_packet_to_host(s, obuf, 7);
> return;
> case CUDA_FILE_SERVER_FLAG:
> - case CUDA_SET_DEVICE_LIST:
> case CUDA_SET_POWER_MESSAGES:
> cuda_send_packet_to_host(s, obuf, 3);
> return;
> @@ -847,6 +859,7 @@ static void cuda_realizefn(DeviceState *dev, Error **errp)
>
> s->adb_poll_timer = timer_new_ns(QEMU_CLOCK_VIRTUAL, cuda_adb_poll, s);
> s->auto_rate_ms = 20;
> + s->poll_mask = 0xffff;
> }
>
> static void cuda_initfn(Object *obj)
> diff --git a/hw/ppc/mac.h b/hw/ppc/mac.h
> index 90fcb69..506f7a8 100644
> --- a/hw/ppc/mac.h
> +++ b/hw/ppc/mac.h
> @@ -111,6 +111,7 @@ typedef struct CUDAState {
> int data_out_index;
>
> qemu_irq irq;
> + uint16_t poll_mask;
> uint8_t auto_rate_ms;
> uint8_t autopoll;
> uint8_t data_in[128];
> diff --git a/include/hw/input/adb.h b/include/hw/input/adb.h
> index bdfccd4..db51d03 100644
> --- a/include/hw/input/adb.h
> +++ b/include/hw/input/adb.h
> @@ -79,7 +79,7 @@ struct ADBBusState {
>
> int adb_request(ADBBusState *s, uint8_t *buf_out,
> const uint8_t *buf, int len);
> -int adb_poll(ADBBusState *s, uint8_t *buf_out);
> +int adb_poll(ADBBusState *s, uint8_t *buf_out, uint16_t poll_mask);
>
> #define TYPE_ADB_KEYBOARD "adb-keyboard"
> #define TYPE_ADB_MOUSE "adb-mouse"
> diff --git a/roms/SLOF b/roms/SLOF
> index b4c9380..811277a 160000
> --- a/roms/SLOF
> +++ b/roms/SLOF
> @@ -1 +1 @@
> -Subproject commit b4c93802a5b2c72f096649c497ec9ff5708e4456
> +Subproject commit 811277ac91f674a9273e2b529791e9b75350f3e8
> diff --git a/roms/openbios b/roms/openbios
> index 3caee17..18f02b1 160000
> --- a/roms/openbios
> +++ b/roms/openbios
> @@ -1 +1 @@
> -Subproject commit 3caee1794ac3f742315823d8447d21f33ce019e9
> +Subproject commit 18f02b14de795c1aab4fe23c1810bfd0944da6aa
These SLOF and openbios changes look unrelated. If they're not, they
definitely need to be mentioned in the commit message.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2016-01-24 23:46 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-23 20:39 [Qemu-devel] [PATCH 00/13] cuda: misc fixes and cleanups Hervé Poussineau
2016-01-23 20:39 ` [Qemu-devel] [PATCH 01/13] cuda: add a framework to handle commands Hervé Poussineau
2016-01-24 23:10 ` David Gibson
2016-01-23 20:39 ` [Qemu-devel] [PATCH 02/13] cuda: reject unknown commands Hervé Poussineau
2016-01-24 23:12 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 03/13] cuda: port AUTOPOLL command to new framework Hervé Poussineau
2016-01-24 23:13 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 04/13] cuda: port SET_AUTO_RATE " Hervé Poussineau
2016-01-24 18:33 ` Hervé Poussineau
2016-01-24 23:21 ` David Gibson
2016-02-07 19:27 ` Mark Cave-Ayland
2016-01-23 20:40 ` [Qemu-devel] [PATCH 05/13] cuda: port SET_DEVICE_LIST " Hervé Poussineau
2016-01-24 23:23 ` David Gibson [this message]
2016-02-07 19:35 ` Mark Cave-Ayland
2016-01-23 20:40 ` [Qemu-devel] [PATCH 06/13] cuda: port POWERDOWN " Hervé Poussineau
2016-01-24 23:24 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 07/13] cuda: port RESET_SYSTEM " Hervé Poussineau
2016-01-24 23:24 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 08/13] cuda: port FILE_SERVER_FLAG " Hervé Poussineau
2016-01-24 23:25 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 09/13] cuda: port SET_POWER_MESSAGES " Hervé Poussineau
2016-01-24 23:26 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 10/13] cuda: port GET_TIME " Hervé Poussineau
2016-01-24 23:27 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 11/13] cuda: port SET_TIME " Hervé Poussineau
2016-01-24 23:27 ` David Gibson
2016-01-23 20:40 ` [Qemu-devel] [PATCH 12/13] cuda: remove GET_6805_ADDR command Hervé Poussineau
2016-01-25 8:35 ` Alyssa Milburn
2016-01-25 8:48 ` Mark Cave-Ayland
2016-01-25 9:51 ` Alyssa Milburn
2016-01-23 20:40 ` [Qemu-devel] [PATCH 13/13] cuda: remove CUDA_GET_SET_IIC/CUDA_COMBINED_FORMAT_IIC commands Hervé Poussineau
2016-01-25 10:00 ` Alyssa Milburn
2016-01-24 23:29 ` [Qemu-devel] [PATCH 00/13] cuda: misc fixes and cleanups David Gibson
2016-01-25 9:58 ` Alyssa Milburn
2016-01-25 13:08 ` Mark Cave-Ayland
2016-01-25 22:08 ` Hervé Poussineau
2016-01-26 11:32 ` [Qemu-devel] [Qemu-ppc] " BALATON Zoltan
2016-01-27 22:35 ` Hervé Poussineau
2016-01-28 1:45 ` BALATON Zoltan
2016-01-28 13:43 ` Hervé Poussineau
2016-02-04 20:15 ` [Qemu-devel] " Alyssa Milburn
2016-02-06 13:32 ` Mark Cave-Ayland
2016-02-06 14:30 ` Hervé Poussineau
2016-02-07 19:50 ` Mark Cave-Ayland
2016-02-07 20:38 ` Hervé Poussineau
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160124232353.GR27454@voom.redhat.com \
--to=david@gibson.dropbear.id.au \
--cc=agraf@suse.de \
--cc=fuzzie@fuzzie.org \
--cc=hpoussin@reactos.org \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.