Re: [PATCH] drm: Use vsnprintf extension %ph

From: Daniel Vetter
Date: Wed May 31 2017 - 04:32:47 EST


On Tue, May 30, 2017 at 04:35:37PM -0700, Joe Perches wrote:
> Using the extension saves a bit of code.
>
> Miscellanea:
>
> o Neaten and simplify dump_dp_payload_table
> o Removed trailing blank space from output

Not a huge fan of smashing random trivia into the same patch, but merged
anyway. %ph is rather neat, TIL.

Thanks, Daniel

>
> $ size drivers/gpu/drm/drm_dp_mst_topology.o.* drivers/gpu/drm/tinydrm/*.o*
> text data bss dec hex filename
> 25848 0 16 25864 6508 drivers/gpu/drm/drm_dp_mst_topology.o.new
> 26091 0 16 26107 65fb drivers/gpu/drm/drm_dp_mst_topology.o.old
> 3362 2 0 3364 d24 drivers/gpu/drm/tinydrm/mipi-dbi.o.new
> 3376 2 0 3378 d32 drivers/gpu/drm/tinydrm/mipi-dbi.o.old
>
> Signed-off-by: Joe Perches <joe@xxxxxxxxxxx>
> ---
> drivers/gpu/drm/drm_dp_mst_topology.c | 51 +++++++++++------------------------
> drivers/gpu/drm/tinydrm/mipi-dbi.c | 7 ++---
> 2 files changed, 18 insertions(+), 40 deletions(-)
>
> diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c b/drivers/gpu/drm/drm_dp_mst_topology.c
> index 222eb1a8549b..bfd237c15e76 100644
> --- a/drivers/gpu/drm/drm_dp_mst_topology.c
> +++ b/drivers/gpu/drm/drm_dp_mst_topology.c
> @@ -2836,16 +2836,15 @@ static void drm_dp_mst_dump_mstb(struct seq_file *m,
> static bool dump_dp_payload_table(struct drm_dp_mst_topology_mgr *mgr,
> char *buf)
> {
> - int ret;
> int i;
> - for (i = 0; i < 4; i++) {
> - ret = drm_dp_dpcd_read(mgr->aux, DP_PAYLOAD_TABLE_UPDATE_STATUS + (i * 16), &buf[i * 16], 16);
> - if (ret != 16)
> - break;
> +
> + for (i = 0; i < 64; i += 16) {
> + if (drm_dp_dpcd_read(mgr->aux,
> + DP_PAYLOAD_TABLE_UPDATE_STATUS + i,
> + &buf[i], 16) != 16)
> + return false;
> }
> - if (i == 4)
> - return true;
> - return false;
> + return true;
> }
>
> static void fetch_monitor_name(struct drm_dp_mst_topology_mgr *mgr,
> @@ -2909,42 +2908,24 @@ void drm_dp_mst_dump_topology(struct seq_file *m,
> mutex_lock(&mgr->lock);
> if (mgr->mst_primary) {
> u8 buf[64];
> - bool bret;
> int ret;
> +
> ret = drm_dp_dpcd_read(mgr->aux, DP_DPCD_REV, buf, DP_RECEIVER_CAP_SIZE);
> - seq_printf(m, "dpcd: ");
> - for (i = 0; i < DP_RECEIVER_CAP_SIZE; i++)
> - seq_printf(m, "%02x ", buf[i]);
> - seq_printf(m, "\n");
> + seq_printf(m, "dpcd: %*ph\n", DP_RECEIVER_CAP_SIZE, buf);
> ret = drm_dp_dpcd_read(mgr->aux, DP_FAUX_CAP, buf, 2);
> - seq_printf(m, "faux/mst: ");
> - for (i = 0; i < 2; i++)
> - seq_printf(m, "%02x ", buf[i]);
> - seq_printf(m, "\n");
> + seq_printf(m, "faux/mst: %*ph\n", 2, buf);
> ret = drm_dp_dpcd_read(mgr->aux, DP_MSTM_CTRL, buf, 1);
> - seq_printf(m, "mst ctrl: ");
> - for (i = 0; i < 1; i++)
> - seq_printf(m, "%02x ", buf[i]);
> - seq_printf(m, "\n");
> + seq_printf(m, "mst ctrl: %*ph\n", 1, buf);
>
> /* dump the standard OUI branch header */
> ret = drm_dp_dpcd_read(mgr->aux, DP_BRANCH_OUI, buf, DP_BRANCH_OUI_HEADER_SIZE);
> - seq_printf(m, "branch oui: ");
> - for (i = 0; i < 0x3; i++)
> - seq_printf(m, "%02x", buf[i]);
> - seq_printf(m, " devid: ");
> + seq_printf(m, "branch oui: %*phN devid: ", 3, buf);
> for (i = 0x3; i < 0x8 && buf[i]; i++)
> seq_printf(m, "%c", buf[i]);
> -
> - seq_printf(m, " revision: hw: %x.%x sw: %x.%x", buf[0x9] >> 4, buf[0x9] & 0xf, buf[0xa], buf[0xb]);
> - seq_printf(m, "\n");
> - bret = dump_dp_payload_table(mgr, buf);
> - if (bret == true) {
> - seq_printf(m, "payload table: ");
> - for (i = 0; i < 63; i++)
> - seq_printf(m, "%02x ", buf[i]);
> - seq_printf(m, "\n");
> - }
> + seq_printf(m, " revision: hw: %x.%x sw: %x.%x\n",
> + buf[0x9] >> 4, buf[0x9] & 0xf, buf[0xa], buf[0xb]);
> + if (dump_dp_payload_table(mgr, buf))
> + seq_printf(m, "payload table: %*ph\n", 63, buf);
>
> }
>
> diff --git a/drivers/gpu/drm/tinydrm/mipi-dbi.c b/drivers/gpu/drm/tinydrm/mipi-dbi.c
> index f4eb412f3604..c83eeb7a34b0 100644
> --- a/drivers/gpu/drm/tinydrm/mipi-dbi.c
> +++ b/drivers/gpu/drm/tinydrm/mipi-dbi.c
> @@ -914,7 +914,7 @@ static int mipi_dbi_debugfs_command_show(struct seq_file *m, void *unused)
> {
> struct mipi_dbi *mipi = m->private;
> u8 cmd, val[4];
> - size_t len, i;
> + size_t len;
> int ret;
>
> for (cmd = 0; cmd < 255; cmd++) {
> @@ -943,10 +943,7 @@ static int mipi_dbi_debugfs_command_show(struct seq_file *m, void *unused)
> seq_puts(m, "XX\n");
> continue;
> }
> -
> - for (i = 0; i < len; i++)
> - seq_printf(m, "%02x", val[i]);
> - seq_puts(m, "\n");
> + seq_printf(m, "%*phN\n", (int)len, val);
> }
>
> return 0;
> --
> 2.10.0.rc2.1.g053435c
>
> _______________________________________________
> dri-devel mailing list
> dri-devel@xxxxxxxxxxxxxxxxxxxxx
> https://lists.freedesktop.org/mailman/listinfo/dri-devel

--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch