Re: [igt-dev] [PATCH i-g-t v4 04/10] lib/igt_chamelium: split chamelium_new_edid

Arkadiusz Hiler
2019-07-18T10:25:05Z

On Tue, Jun 25, 2019 at 04:14:25PM +0300, Simon Ser wrote:
> Split the part that uploads an EDID to the Chamelium board into a new
> chamelium_upload_edid function. The function will be called in
> chamelium_set_edid instead of chamelium_new_edid when automatic Chamelium port
> mapping is implemented.
>
> Signed-off-by: Simon Ser <simon.ser@intel.com>
> ---
> lib/igt_chamelium.c | 35 ++++++++++++++++++++++-------------
> 1 file changed, 22 insertions(+), 13 deletions(-)
>
> diff --git a/lib/igt_chamelium.c b/lib/igt_chamelium.c
> index 9ea483eee717..8e6db445330e 100644
> --- a/lib/igt_chamelium.c
> +++ b/lib/igt_chamelium.c
> @@ -523,6 +523,26 @@ void chamelium_schedule_hpd_toggle(struct chamelium *chamelium,
> "(iii)", port->id, delay_ms, rising_edge));
> }
>
> +static int chamelium_upload_edid(struct chamelium *chamelium,
> + const struct edid *edid)
> +{
> + xmlrpc_value *res;
> + int edid_id;
> +
> + res = chamelium_rpc(chamelium, NULL, "CreateEdid", "(6)",
> + edid, edid_get_size(edid));
> + xmlrpc_read_int(&chamelium->env, res, &edid_id);
> + xmlrpc_DECREF(res);
> +
> + return edid_id;
> +}
> +
> +static void chamelium_destroy_edid(struct chamelium *chamelium, int edid_id)
> +{
> + xmlrpc_DECREF(chamelium_rpc(chamelium, NULL, "DestroyEdid", "(i)",
> + edid_id));
> +}
> +
> /**
> * chamelium_new_edid:
> * @chamelium: The Chamelium instance to use
> @@ -541,33 +561,22 @@ void chamelium_schedule_hpd_toggle(struct chamelium *chamelium,
> struct chamelium_edid *chamelium_new_edid(struct chamelium *chamelium,
> const unsigned char *raw_edid)
> {
> - xmlrpc_value *res;
> struct chamelium_edid *chamelium_edid;
> int edid_id;
> const struct edid *edid = (struct edid *) raw_edid;
> size_t edid_size = edid_get_size(edid);
>
> - res = chamelium_rpc(chamelium, NULL, "CreateEdid", "(6)",
> - raw_edid, edid_size);
> -
> - xmlrpc_read_int(&chamelium->env, res, &edid_id);
> - xmlrpc_DECREF(res);
> + edid_id = chamelium_upload_edid(chamelium, edid);
>
> chamelium_edid = calloc(1, sizeof(struct chamelium_edid));
> chamelium_edid->id = edid_id;
> chamelium_edid->raw = malloc(edid_size);
> - memcpy(chamelium_edid->raw, raw_edid, edid_size);
> + memcpy(chamelium_edid->raw, edid, edid_get_size(edid));

We still have edid_size defined which we use just for malloc. Any
particular reason switching here to edid_get_size(edid)?

Other than that
Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com>

> igt_list_add(&chamelium_edid->link, &chamelium->edids);
>
> return chamelium_edid;
> }
>
> -static void chamelium_destroy_edid(struct chamelium *chamelium, int edid_id)
> -{
> - xmlrpc_DECREF(chamelium_rpc(chamelium, NULL, "DestroyEdid", "(i)",
> - edid_id));
> -}
> -
> /**
> * chamelium_edid_get_raw: get the raw EDID
> * @edid: the Chamelium EDID
> --
> 2.22.0
>