linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Miguel Ojeda <miguel.ojeda.sandonis-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: "Rick L. Vinyard,
	Jr." <rvinyard-qcTL/1vZYtiVc3sceRu5cw@public.gmane.org>
Cc: Jaya Kumar
	<jayakumar.lkml-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org>,
	Jiri Kosina <jkosina-AlSwsSmVLrQ@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	krzysztof.h1-5tc4TXWwyLM@public.gmane.org,
	Andrew Morton
	<akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	Oliver Neukum <oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org>,
	linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH] Logitech G13 driver (fixed cc list --- ignore others)
Date: Fri, 15 Jan 2010 00:34:02 +0100	[thread overview]
Message-ID: <ca2dc2821001141534r94976dcs5c6b01fb2ef86afd@mail.gmail.com> (raw)
In-Reply-To: <8f404284c29a6e7736de49ede9a44a2c.squirrel-2xSMGd46i5akveL4JqN78fZ8FUJU4vz8@public.gmane.org>

On Fri, Jan 15, 2010 at 12:03 AM, Rick L. Vinyard, Jr.
<rvinyard-qcTL/1vZYtiVc3sceRu5cw@public.gmane.org> wrote:
> Miguel Ojeda wrote:
>> On Thu, Jan 14, 2010 at 10:48 PM, Rick L. Vinyard, Jr.
>> <rvinyard-qcTL/1vZYtiVc3sceRu5cw@public.gmane.org> wrote:
>>> Miguel Ojeda wrote:
>>>> On Tue, Jan 5, 2010 at 1:14 AM, Jaya Kumar <jayakumar.lkml@gmail.com>
>>>> wrote:
>>>>> On Tue, Jan 5, 2010 at 6:48 AM, Pavel Machek <pavel-+ZI9xUNit7I@public.gmane.org> wrote:
>>>>>>
>>>>>> Ok, but I guess you should cc auxdisplay people in future.
>>>>>
>>>>> Hi Pavel,
>>>>>
>>>>> I just looked at the drivers/auxdisplay directory and got a bit
>>>>> confused. The reason I got confused is because auxdisplay is actually
>>>>> an fbdev driver but it is outside of the drivers/video directory. It
>>>>> looks like there has only been 1 commit and that was for the Samsung
>>>>> KS0108 controller. It also sort of uses platform support but the way
>>>>> it is abstracted is odd to my thinking. The controller is ks0108, so
>>>>> in my mind that would be the code that would be platform independent,
>>>>> and then that would use a board specific IO driver to push data (eg:
>>>>> parport or gpio or usb). I think in the long term it would probably
>>>>> make sense to write a cleaner approach with a drivers/video/ks0108.c
>>>>> which is cleanly platform independent (and back within fbdev proper)
>>>>> and then a board specific driver in the appropriate location that
>>>>> handles the IO.
>>>>
>>>> I wrote long ago the driver(s) and people that reviewed it thought it
>>>> was better to keep it outside. I think that if someone else is going
>>>> to need ks0108, then I agree: we should write a independent driver.
>>>>
>>>> It should not be hard, it is an easy controller to play with and the
>>>> code is already there. I would try to do it; however, I am not sure if
>>>> I would be the most appropriate person to code such generic driver, as
>>>> I know almost nothing about all drivers/video/* stuff and the ways of
>>>> making it truly generic for future video/ users. Still, I will help
>>>> gladly.
>>>>
>>>
>>> When I started to look at writing the G13 framebuffer the first code I
>>> looked at was the cfag12864b, and started off trying to adapt it.
>>>
>>
>> I hope it was useful, at least at first. : )
>>
>>> However, as I was digging through the video/* directory looking for
>>> something (I forget now what) I came across the hecubafb and patterned
>>> the
>>> G13 after it instead.
>>>
>>> In moving between the two, the biggest difference was that I was able to
>>> strip out alot of the workqueue code you had since all that was provided
>>> by defio. Otherwise, the general structure was almost identical.
>>>
>>> In particular, what would change is the lower half of cfag12864b.c and
>>> you
>>> would be able to eliminate almost everything from the /* Update work */
>>> and below comment with the exception of cfag12864b_update().
>>>
>>> cfag12864b_update() would become almost analogous to the g13_fb_update()
>>> I
>>> have in the G13 driver which is triggered by the deferred_io member of
>>> the
>>> fb_deferred_io structure.
>>>
>>> You would have something like:
>>>
>>> /* Callback from deferred IO workqueue */
>>> static void cfag12864b_deferred_io(struct fb_info *info, struct
>>> list_head
>>> *pagelist)
>>> {
>>>        cfag12864b_update(info->par);
>>> }
>>>
>>> static struct fb_deferred_io cfag12864b_defio = {
>>>        .delay = HZ / CFAG12864B_UPDATE_RATE_DEFAULT,
>>>        .deferred_io = cfag12864b_deferred_io,
>>> };
>>>
>>
>> Thank you for the analysis of cfag12864b. See below.
>>
>>>
>>> The other major change is that you could eliminate the periodic memcmp()
>>> to see if the buffer has change since the deferred_io is only going to
>>> trigger on a page write fault.
>>
>> Yeah, I admit the memcmp() is pretty ugly knowing about deferred_io,
>> which I did not. It is strange that anyone pointed it out long before,
>> is it new? Are there any known drawbacks?
>>
>
> Not sure how old it is... I don't know of any drawbacks.
>
>>>
>>> But, that isn't a major change in the code... only in performance.
>>>
>>
>> So less code and greater performance. That sounds like a winning deal!
>>
>> About ks0108, have you got any thoughts on how to write a generic
>> driver? Do you need something special about ks0108? I only needed raw
>> output operations so I just implemented that. Also, cfag12864b uses
>> two ks0108 controllers and I suppose other LCD's use many more, so
>> there are many points that may need a "research".
>>
>
> Actually, I don't need the ks0108 code. Way back when Alan Cox suggested
> taking a framebuffer approach for the G13, Pavel suggested looking at the
> auxdisplay code.
>
> But, the LCD in the G13 is really a USB device that ships the image out as
> an interrupt message with the framebuffer image as the payload. So, in
> essence, the callback in the G13 is really a usbhid_submit_message() after
> some other work to massage the bits from an xbm format to a format
> specific to the Logitech game panel.
>

Oh, excuse me, I started reading from your first message in this
thread after a search for "ks0108" on my inbox and I thought Jaya was
referring to your code.

Miguel Ojeda

> ---
>
> Rick
>
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

  parent reply	other threads:[~2010-01-14 23:34 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-14 21:22 [PATCH] Logitech G13 driver (fixed cc list --- ignore others) Rick L. Vinyard Jr.
2009-12-14 21:26 ` Rick L. Vinyard, Jr.
2009-12-14 22:02 ` Felipe Balbi
2009-12-14 22:48   ` Rick L. Vinyard, Jr.
2009-12-16 10:34 ` Pavel Machek
2009-12-16 14:08   ` Jiri Kosina
2010-01-04 22:23     ` Rick L. Vinyard, Jr.
     [not found]       ` <7f9100aac5f9b06ec78efff25c7a5a71.squirrel-2xSMGd46i5akveL4JqN78fZ8FUJU4vz8@public.gmane.org>
2010-01-04 22:48         ` Pavel Machek
2010-01-05  0:14           ` Jaya Kumar
     [not found]             ` <45a44e481001041614i35ceef84q5f12a068e2f0b97b-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-01-14 21:08               ` Miguel Ojeda
2010-01-14 21:48                 ` Rick L. Vinyard, Jr.
     [not found]                   ` <044387d146c2f91cb7f593736fcce28f.squirrel-2xSMGd46i5akveL4JqN78fZ8FUJU4vz8@public.gmane.org>
2010-01-14 22:34                     ` Miguel Ojeda
2010-01-14 23:03                       ` Rick L. Vinyard, Jr.
     [not found]                         ` <8f404284c29a6e7736de49ede9a44a2c.squirrel-2xSMGd46i5akveL4JqN78fZ8FUJU4vz8@public.gmane.org>
2010-01-14 23:34                           ` Miguel Ojeda [this message]
2010-01-05  9:52       ` Jiri Kosina
2010-01-04 23:57 ` Jaya Kumar
2010-01-07 15:59   ` Rick L. Vinyard, Jr.
2010-01-08 14:21     ` Giacomo A. Catenazzi
     [not found]       ` <4B473F64.2010203-8fiUuRrzOP0dnm+yROfE0A@public.gmane.org>
2010-01-08 16:45         ` Rick L. Vinyard, Jr.

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=ca2dc2821001141534r94976dcs5c6b01fb2ef86afd@mail.gmail.com \
    --to=miguel.ojeda.sandonis-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=jayakumar.lkml-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=jkosina-AlSwsSmVLrQ@public.gmane.org \
    --cc=krzysztof.h1-5tc4TXWwyLM@public.gmane.org \
    --cc=linux-input-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=oliver-GvhC2dPhHPQdnm+yROfE0A@public.gmane.org \
    --cc=pavel-+ZI9xUNit7I@public.gmane.org \
    --cc=rvinyard-qcTL/1vZYtiVc3sceRu5cw@public.gmane.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).