Move panel driver out of staging?
Dan Carpenter
dan.carpenter at oracle.com
Mon Dec 28 15:27:36 UTC 2015
On Mon, Dec 28, 2015 at 12:32:39PM +0100, Ksenija Stanojević wrote:
> Hi Willy,
>
> I'm helping Greg do a bit of cleanup in the staging tree, I noticed that
> panel driver is maybe ready to be moved to drivers/misc. Are there any
> TODO tasks left to do? I already sent checkpatch clean-up patches.
>
I feel like lcd_write_data() should take a u8 instead of an int. Or
possibly a char, I suppose.
Could we tighten the checking in input_name2mask() a bit?
drivers/staging/panel/panel.c
2044 static int input_name2mask(const char *name, pmask_t *mask, pmask_t *value,
2045 char *imask, char *omask)
2046 {
2047 static char sigtab[10] = "EeSsPpAaBb";
2048 char im, om;
Om is 8 bits (signed or not depending on the arch).
2049 pmask_t m, v;
2050
2051 om = 0ULL;
2052 im = 0ULL;
2053 m = 0ULL;
2054 v = 0ULL;
2055 while (*name) {
2056 int in, out, bit, neg;
2057
2058 for (in = 0; (in < sizeof(sigtab)) && (sigtab[in] != *name);
2059 in++)
2060 ;
2061
2062 if (in >= sizeof(sigtab))
2063 return 0; /* input name not found */
2064 neg = (in & 1); /* odd (lower) names are negated */
2065 in >>= 1;
2066 im |= BIT(in);
2067
2068 name++;
2069 if (isdigit(*name)) {
2070 out = *name - '0';
2071 om |= BIT(out);
^^^^^^^^^^^^^^
out is 0-9 so it's too much for "om". I don't know if this causes a
problem, but let's remove the question by adding a check for illegal
values.
if (*name >= '0' && *name <= '7') {
2072 } else if (*name == '-') {
2073 out = 8;
2074 } else {
2075 return 0; /* unknown bit name */
2076 }
2077
2078 bit = (out * 5) + in;
2079
2080 m |= 1ULL << bit;
2081 if (!neg)
2082 v |= 1ULL << bit;
2083 name++;
2084 }
2085 *mask = m;
2086 *value = v;
2087 if (imask)
2088 *imask |= im;
2089 if (imask)
2090 *imask |= im;
2091 if (omask)
2092 *omask |= om;
It's too much for omask also.
2093 return 1;
2094 }
regards,
dan carpenter
More information about the devel
mailing list