[PATCH] drivers/staging/wlan-ng/p80211conv.c: fixed a potential memory leak
Fixed a potential memory leak inside skb_ether_to_p80211() When the wep_encrypt() fails the code return 2 directly Which causes the p80211_wep->data dangling Add a kfree statement to reclaim that memory allocated Signed-off-by: Lynn Lei --- drivers/staging/wlan-ng/p80211conv.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/staging/wlan-ng/p80211conv.c b/drivers/staging/wlan-ng/p80211conv.c index fc8ad33ade9f..c1b6d426bcad 100644 --- a/drivers/staging/wlan-ng/p80211conv.c +++ b/drivers/staging/wlan-ng/p80211conv.c @@ -213,6 +213,7 @@ int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, netdev_warn(wlandev->netdev, "Host en-WEP failed, dropping frame (%d).\n", foo); + kfree(p80211_wep->data); return 2; } fc |= cpu_to_le16(WLAN_SET_FC_ISWEP(1)); -- 2.13.3 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v3] staging: sm750fb: fixed a assignment typo
fixed a typo issue in get_mxclk_freq() function. the original code using PLL_CTRL_M_SHIFT for shifting to set N flag. which is not right, it should be PLL_CTRL_N_SHIFT. both PLL_CTRL_M_SHIFT and PLL_CTRL_N_SHIFT defined in drivers/staging/sm750fb/ddk750_reg.h Signed-off-by: Lynn Lei --- v3: improved commit comments changes from v2 included drivers/staging/sm750fb/ddk750_chip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/sm750fb/ddk750_chip.c b/drivers/staging/sm750fb/ddk750_chip.c index 5e4bfb601cea..c51761221131 100644 --- a/drivers/staging/sm750fb/ddk750_chip.c +++ b/drivers/staging/sm750fb/ddk750_chip.c @@ -40,7 +40,7 @@ static unsigned int get_mxclk_freq(void) pll_reg = peek32(MXCLK_PLL_CTRL); M = (pll_reg & PLL_CTRL_M_MASK) >> PLL_CTRL_M_SHIFT; - N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_M_SHIFT; + N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_N_SHIFT; OD = (pll_reg & PLL_CTRL_OD_MASK) >> PLL_CTRL_OD_SHIFT; POD = (pll_reg & PLL_CTRL_POD_MASK) >> PLL_CTRL_POD_SHIFT; -- 2.13.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: sm750fb: skip unnecessary comparisons
introduced early checks to skip unnecessary comparisons when flags set. Signed-off-by: Lynn Lei --- drivers/staging/sm750fb/sm750.c | 11 --- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/staging/sm750fb/sm750.c b/drivers/staging/sm750fb/sm750.c index 386d4adcd91d..9e57a2d32465 100644 --- a/drivers/staging/sm750fb/sm750.c +++ b/drivers/staging/sm750fb/sm750.c @@ -1171,11 +1171,16 @@ static int __init lynxfb_setup(char *options) */ while ((opt = strsep(&options, ":")) != NULL) { /* options that mean for any lynx chips are configured here */ - if (!strncmp(opt, "noaccel", strlen("noaccel"))) { + + /* +* NOTE: the length of options is hard-coded +* if any of those options changed please update its length +*/ + if (!g_noaccel && !strncmp(opt, "noaccel", 7)) { g_noaccel = 1; - } else if (!strncmp(opt, "nomtrr", strlen("nomtrr"))) { + } else if (!g_nomtrr && !strncmp(opt, "nomtrr", 6)) { g_nomtrr = 1; - } else if (!strncmp(opt, "dual", strlen("dual"))) { + } else if (!g_dualview && !strncmp(opt, "dual", 4)) { g_dualview = 1; } else { strcat(tmp, opt); -- 2.13.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH v2] staging: sm750fb: refactor method and fix potential type inconsistence
include PANEL_DISPLAY_CTRL_FPVDDEN control mask Signed-off-by: Lynn Lei --- drivers/staging/sm750fb/ddk750_display.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/sm750fb/ddk750_display.c b/drivers/staging/sm750fb/ddk750_display.c index 0f666dc2729a..c68367e6cdeb 100644 --- a/drivers/staging/sm750fb/ddk750_display.c +++ b/drivers/staging/sm750fb/ddk750_display.c @@ -89,7 +89,7 @@ static void swPanelPowerSequence(int disp, int delay) u32 reg; u32 opt[] = { PANEL_DISPLAY_CTRL_FPEN, PANEL_DISPLAY_CTRL_DATA, - PANEL_DISPLAY_CTRL_VBIASEN, PANEL_DISPLAY_CTRL_FPEN, + PANEL_DISPLAY_CTRL_VBIASEN, PANEL_DISPLAY_CTRL_FPVDDEN, }; u32 size, i; -- 2.13.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: sm750fb: refactor method and fix potential type inconsistence
make reg variable typed `u32' not `unsigned int' this can fix potential type inconsistence in some platforms refactor swPanelPowerSequence() make the code less redundant a early check for disp to skip unnecessary delay Signed-off-by: Lynn Lei --- drivers/staging/sm750fb/ddk750_display.c | 36 ++-- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/drivers/staging/sm750fb/ddk750_display.c b/drivers/staging/sm750fb/ddk750_display.c index 9b116ed6ecc7..0f666dc2729a 100644 --- a/drivers/staging/sm750fb/ddk750_display.c +++ b/drivers/staging/sm750fb/ddk750_display.c @@ -86,28 +86,24 @@ static void primary_wait_vertical_sync(int delay) static void swPanelPowerSequence(int disp, int delay) { - unsigned int reg; + u32 reg; + u32 opt[] = { + PANEL_DISPLAY_CTRL_FPEN, PANEL_DISPLAY_CTRL_DATA, + PANEL_DISPLAY_CTRL_VBIASEN, PANEL_DISPLAY_CTRL_FPEN, + }; + u32 size, i; + + if (disp == 0) + return; + + size = sizeof(opt) / sizeof(u32); /* disp should be 1 to open sequence */ - reg = peek32(PANEL_DISPLAY_CTRL); - reg |= (disp ? PANEL_DISPLAY_CTRL_FPEN : 0); - poke32(PANEL_DISPLAY_CTRL, reg); - primary_wait_vertical_sync(delay); - - reg = peek32(PANEL_DISPLAY_CTRL); - reg |= (disp ? PANEL_DISPLAY_CTRL_DATA : 0); - poke32(PANEL_DISPLAY_CTRL, reg); - primary_wait_vertical_sync(delay); - - reg = peek32(PANEL_DISPLAY_CTRL); - reg |= (disp ? PANEL_DISPLAY_CTRL_VBIASEN : 0); - poke32(PANEL_DISPLAY_CTRL, reg); - primary_wait_vertical_sync(delay); - - reg = peek32(PANEL_DISPLAY_CTRL); - reg |= (disp ? PANEL_DISPLAY_CTRL_FPEN : 0); - poke32(PANEL_DISPLAY_CTRL, reg); - primary_wait_vertical_sync(delay); + for (i = 0; i < size; i++) { + reg = peek32(PANEL_DISPLAY_CTRL) | opt[i]; + poke32(PANEL_DISPLAY_CTRL, reg); + primary_wait_vertical_sync(delay); + } } void ddk750_setLogicalDispOut(disp_output_t output) -- 2.13.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: sm750fb: refactor the clock frequency calculation method
speed up calculation by merging two divisions into one. Signed-off-by: Lynn Lei --- drivers/staging/sm750fb/ddk750_chip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/sm750fb/ddk750_chip.c b/drivers/staging/sm750fb/ddk750_chip.c index c51761221131..5970c3792f27 100644 --- a/drivers/staging/sm750fb/ddk750_chip.c +++ b/drivers/staging/sm750fb/ddk750_chip.c @@ -44,7 +44,7 @@ static unsigned int get_mxclk_freq(void) OD = (pll_reg & PLL_CTRL_OD_MASK) >> PLL_CTRL_OD_SHIFT; POD = (pll_reg & PLL_CTRL_POD_MASK) >> PLL_CTRL_POD_SHIFT; - return DEFAULT_INPUT_CLOCK * M / N / (1 << OD) / (1 << POD); + return DEFAULT_INPUT_CLOCK * M / N / (1 << (OD + POD)); } /* -- 2.13.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: sm750fb: fixed a assignment typo
Fixed a typo issue in get_mxclk_freq(). Signed-off-by: Lynn Lei --- drivers/staging/sm750fb/ddk750_chip.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/staging/sm750fb/ddk750_chip.c b/drivers/staging/sm750fb/ddk750_chip.c index 5e4bfb601cea..c51761221131 100644 --- a/drivers/staging/sm750fb/ddk750_chip.c +++ b/drivers/staging/sm750fb/ddk750_chip.c @@ -40,7 +40,7 @@ static unsigned int get_mxclk_freq(void) pll_reg = peek32(MXCLK_PLL_CTRL); M = (pll_reg & PLL_CTRL_M_MASK) >> PLL_CTRL_M_SHIFT; - N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_M_SHIFT; + N = (pll_reg & PLL_CTRL_N_MASK) >> PLL_CTRL_N_SHIFT; OD = (pll_reg & PLL_CTRL_OD_MASK) >> PLL_CTRL_OD_SHIFT; POD = (pll_reg & PLL_CTRL_POD_MASK) >> PLL_CTRL_POD_SHIFT; -- 2.13.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
[PATCH] staging: sm750fb: Combine set GPIO 30 & 31 into one statement
Combine two separate set GPIO(30 & 31) operations into one statement. Signed-off-by: Lynn Lei --- drivers/staging/sm750fb/ddk750_hwi2c.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/drivers/staging/sm750fb/ddk750_hwi2c.c b/drivers/staging/sm750fb/ddk750_hwi2c.c index 68716ef7cb06..ddb7a6dc265a 100644 --- a/drivers/staging/sm750fb/ddk750_hwi2c.c +++ b/drivers/staging/sm750fb/ddk750_hwi2c.c @@ -49,8 +49,7 @@ void sm750_hw_i2c_close(void) /* Set GPIO 30 & 31 back as GPIO pins */ value = peek32(GPIO_MUX); - value &= ~GPIO_MUX_30; - value &= ~GPIO_MUX_31; + value &= ~(GPIO_MUX_30 | GPIO_MUX_31); poke32(GPIO_MUX, value); } -- 2.12.2 ___ devel mailing list de...@linuxdriverproject.org http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel