View Single Post
Old 08-21-2012, 10:34 AM   #1
altruizine
Senior Altruist
altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.altruizine ought to be getting tired of karma fortunes by now.
 
Posts: 82
Karma: 600554
Join Date: Jun 2012
Device: Onyx Boox C67ML, Onyx Boox Note Pro
Exclamation PRS-T2 New e-ink update algorithm missing from Linux source; Sony circumvents GPL

I was interested in how Sony implemented their improved eInk-screen update on the PRS-T2 display driver, to see whether it could possibly be backported to the PRS-T1. So I looked into the Linux source code they released.

To my surprise, I found that they have just added a few hooks that call into a proprietary extension kernel module (if present). The hook functions are simply named func1…func8, presumably to obfuscate their purpose. Here's the structure the extension needs to register with the video driver to have its hooks called:
Code:
struct mxc_epdc_fb_extension {
        struct module*  owner;
        struct mxc_epdc_fb_data *fb_data;

        int (*func1)(struct mxc_epdc_fb_data*, struct update_data_list*);
        int (*func2)(struct mxc_epdc_fb_data*, struct update_data_list*);
        int (*func3)(struct mxc_epdc_fb_data*, struct update_data_list*);
        int (*func4)(struct mxc_epdc_fb_data*);
        int (*func5)(struct mxc_epdc_fb_data*);
        int (*func6)(struct mxc_epdc_fb_data*);
        int (*func7)(struct mxc_epdc_fb_data*);
        int (*func8)(struct mxc_epdc_fb_data*);
};
This smells to me like a willful GPL circumvention that borders on a GPL violation. I know that Linus Torvalds tolerates proprietary kernel modules that use the exported module interface to implement Linux-independent functionality, but modifying other people's GPL code to call into proprietary modules is quite expressly forbidden:

I personally consider anything a "derived work" that needs special hooks in the kernel to function with Linux (i.e., it is not acceptable to make a small piece of GPL-code as a hook for the larger piece), as that obviously implies that the bigger module needs "help" from the main kernel.

I may look into possible further steps to encourage Sony to release the missing source code. Any suggestions?
altruizine is offline   Reply With Quote