All of lore.kernel.org
 help / color / mirror / Atom feed
From: "andriy.shevchenko@linux.intel.com" <andriy.shevchenko@linux.intel.com>
To: Aditya Garg <gargaditya08@live.com>
Cc: "maarten.lankhorst@linux.intel.com"
	<maarten.lankhorst@linux.intel.com>,
	"mripard@kernel.org" <mripard@kernel.org>,
	"tzimmermann@suse.de" <tzimmermann@suse.de>,
	"airlied@gmail.com" <airlied@gmail.com>,
	"simona@ffwll.ch" <simona@ffwll.ch>,
	Kerem Karabay <kekrby@gmail.com>,
	Atharva Tiwari <evepolonium@gmail.com>,
	Aun-Ali Zaidi <admin@kodeit.net>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Subject: Re: [PATCH v4 2/2] drm/tiny: add driver for Apple Touch Bars in x86 Macs
Date: Mon, 24 Feb 2025 16:57:38 +0200	[thread overview]
Message-ID: <Z7yI4roBKA-PI4EC@smile.fi.intel.com> (raw)
In-Reply-To: <5BC3A795-99C2-4F00-ADD0-7ECD0285CDD0@live.com>

On Mon, Feb 24, 2025 at 02:32:37PM +0000, Aditya Garg wrote:
> > On 24 Feb 2025, at 7:30 PM, andriy.shevchenko@linux.intel.com wrote:
> > On Mon, Feb 24, 2025 at 01:40:20PM +0000, Aditya Garg wrote:

...

> >> +#define __APPLETBDRM_MSG_STR4(str4) ((__le32 __force)((str4[0] << 24) | (str4[1] << 16) | (str4[2] << 8) | str4[3]))
> > 
> > As commented previously this is quite strange what's going on with endianess in
> > this driver. Especially the above weirdness when get_unaligned_be32() is being
> > open coded and force-cast to __le32.
> 
> I would assume it was also mimicked from the Windows driver, though I haven't
> really tried exploring this there.
> 
> I’d rather be happy if you give me code change suggestions and let me review
> and test them

For the starter I would do the following for all related constants and
drop that weird and ugly macros at the top (it also has an issue with
the str4 length as it is 5 bytes long, not 4, btw):

  #define APPLETBDRM_MSG_CLEAR_DISPLAY	cpu_to_le32(0x434c5244)	/* CLRD */
  ...

(assuming we stick with __leXX for now). This will be much less confusing.

...

> >> +struct appletbdrm_msg_information {
> >> + struct appletbdrm_msg_response_header header;
> >> + u8 unk_14[12];
> >> + __le32 width;
> >> + __le32 height;
> >> + u8 bits_per_pixel;
> >> + __le32 bytes_per_row;
> >> + __le32 orientation;
> >> + __le32 bitmap_info;
> >> + __le32 pixel_format;
> >> + __le32 width_inches; /* floating point */
> >> + __le32 height_inches; /* floating point */
> >> +} __packed;
> > 
> > Haven't looked deeply into the protocol, but still makes me think that
> > the above (since it's the only __packed data type required) might be simply
> > depicted wrongly w.r.t. endianess / data types in use. It might be that
> > the data types have something combined and / or different types.
> > 
> > Do I understand correctly that the protocol was basically reverse-engineered?
> 
> Yes. Although it was reverse engineered by the person who wrote the Windows
> driver. The author has just made a Linux port.
> So, as far as how is was reverse engineered, it not really possible for me to
> explain. I don't even have any contact with the person who wrote the Windows
> driver. The only point here would be to myself RE the hardware again, which
> tbh isn't very motivating, considering that we have a working driver.

Right. I agree that is better to have something working than something
good looking, but wrong.

Can you add a summary to the commit message that since the driver was
reverse-engineered the actual data types of the protocol might be different
(including, but not limited to, endianess)?

...

> >> + /*
> >> +  * The coordinate system used by the device is different from the
> >> +  * coordinate system of the framebuffer in that the x and y axes are
> >> +  * swapped, and that the y axis is inverted; so what the device reports
> >> +  * as the height is actually the width of the framebuffer and vice
> >> +  * versa
> > 
> > Missing period.
> 
> Alright. For some reason (a mistake on my part), some dev_err_probe were also
> still left in this version.

But those are seems to me in the correct locations, no? How do we even know
the DRM device before its creation? So, dev_err_probe() calls in ->probe()
seem logical to me. Somebody from DRM should clarify this.

> >> +  */

...

> I’ll send a v5.

Please, wait a bit. it's too fast to send one version quicker than 24h...

-- 
With Best Regards,
Andy Shevchenko



  reply	other threads:[~2025-02-24 14:57 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-24 13:37 [PATCH v4 0/2] Touch Bar DRM driver for x86 Macs Aditya Garg
2025-02-24 13:38 ` [PATCH v4 1/2] drm/format-helper: Add conversion from XRGB8888 to BGR888 Aditya Garg
2025-02-24 14:29   ` andriy.shevchenko
2025-02-24 14:54     ` Aditya Garg
2025-02-24 15:00       ` andriy.shevchenko
2025-02-24 15:03         ` Aditya Garg
2025-02-24 15:03         ` andriy.shevchenko
2025-02-25  7:37     ` Thomas Zimmermann
2025-02-25 10:24       ` andriy.shevchenko
2025-02-24 13:40 ` [PATCH v4 2/2] drm/tiny: add driver for Apple Touch Bars in x86 Macs Aditya Garg
2025-02-24 14:00   ` andriy.shevchenko
2025-02-24 14:32     ` Aditya Garg
2025-02-24 14:57       ` andriy.shevchenko [this message]
2025-02-24 15:03         ` Aditya Garg
2025-02-24 15:11           ` andriy.shevchenko
2025-02-24 15:20             ` Aditya Garg
2025-02-24 15:32               ` Aditya Garg
2025-02-24 15:38                 ` andriy.shevchenko
2025-02-24 15:40                   ` Aditya Garg
2025-02-24 15:52                     ` andriy.shevchenko
2025-02-24 15:56                       ` Aditya Garg
2025-02-24 16:14                         ` Aditya Garg
2025-02-24 16:14                         ` andriy.shevchenko
2025-02-24 16:38                           ` Aditya Garg
2025-02-24 15:36               ` andriy.shevchenko
2025-02-24 15:39                 ` Aditya Garg
2025-02-24 15:49                   ` andriy.shevchenko
2025-02-24 15:52                     ` Aditya Garg
2025-02-24 16:12                       ` andriy.shevchenko
2025-02-24 16:58   ` Aditya Garg
2025-02-25  7:56     ` Thomas Zimmermann
2025-02-25  8:02       ` Aditya Garg
2025-02-25  8:46         ` Thomas Zimmermann
2025-02-25  9:04       ` Aditya Garg
2025-02-25  9:07         ` Aditya Garg
2025-02-25  9:35           ` Thomas Zimmermann
2025-02-25  9:37             ` Aditya Garg
2025-02-25 10:01               ` Aditya Garg
2025-02-25  7:52   ` Thomas Zimmermann
2025-02-25  8:00     ` Aditya Garg
2025-02-25  8:48       ` Thomas Zimmermann
2025-02-25 10:28         ` andriy.shevchenko
2025-02-27 16:54   ` kernel test robot
2025-02-27 17:28     ` Aditya Garg
2025-02-28 12:25       ` andriy.shevchenko
2025-02-27 23:22   ` kernel test robot
2025-02-27 23:59   ` kernel test robot

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=Z7yI4roBKA-PI4EC@smile.fi.intel.com \
    --to=andriy.shevchenko@linux.intel.com \
    --cc=admin@kodeit.net \
    --cc=airlied@gmail.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=evepolonium@gmail.com \
    --cc=gargaditya08@live.com \
    --cc=kekrby@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=mripard@kernel.org \
    --cc=simona@ffwll.ch \
    --cc=tzimmermann@suse.de \
    /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.