<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.linux.drivers.driver-project.devel">
    <title>gmane.linux.drivers.driver-project.devel</title>
    <link>http://blog.gmane.org/gmane.linux.drivers.driver-project.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38184"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38183"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38182"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38181"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38180"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38179"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38178"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38177"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38176"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38175"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38174"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38173"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38172"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38171"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38170"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38169"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38168"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38167"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38165"/>
        <rdf:li rdf:resource="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38164"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38184">
    <title>Re: [PATCHv10 1/4] debugfs: add get/set for atomic types</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38184</link>
    <description>&lt;pre&gt;
lib/fault_inject.c has something that looks pretty similar:

static struct dentry *debugfs_create_atomic_t(const char *name, umode_t
 mode, struct dentry *parent, atomic_t *value)

should add even more of an argument to merge this patch _now_, and
separately from the rest of zswap.
&lt;/pre&gt;</description>
    <dc:creator>Dave Hansen</dc:creator>
    <dc:date>2013-05-17T22:26:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38183">
    <title>[PATCH] staging/xgifb: Remove dead assignments/increments</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38183</link>
    <description>&lt;pre&gt;The code now contains several dead assignments which are shadowed by
another assignment a few lines later.

-&amp;gt; This patch removes them (and possibly associated code).

Signed-off-by: Peter Huewe &amp;lt;peterhuewe&amp;lt; at &amp;gt;gmx.de&amp;gt;
---

The patch did not remove occurences where a register from the device is read.
If the device does not have implicit actions associated with reading from its
registers these instances could also be removed.

 drivers/staging/xgifb/vb_init.c    |  1 -
 drivers/staging/xgifb/vb_setmode.c | 20 +-------------------
 2 files changed, 1 insertion(+), 20 deletions(-)

diff --git a/drivers/staging/xgifb/vb_init.c b/drivers/staging/xgifb/vb_init.c
index 090c424..5c72104 100644
--- a/drivers/staging/xgifb/vb_init.c
+++ b/drivers/staging/xgifb/vb_init.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1296,7 +1296,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; unsigned char XGIInitNew(struct pci_dev *pdev)
 xgifb_reg_set(pVBInfo-&amp;gt;Part1Port, 0x00, 0x00);
 /* chk if BCLK&amp;gt;=100MHz */
 temp1 = xgifb_reg_get(pVBInfo-&amp;gt;P3d4, 0x7B);
-temp = (unsigned char) ((temp1 &amp;gt;&amp;gt; 4) &amp;amp; 0x0F);
 
 xgifb_reg_set(pVBInfo-&amp;gt;Part1Port,
       0x02, XGI330_CRT2Data_1_2);
diff --git a/drivers/staging/xgifb/vb_setmode.c b/drivers/staging/xgifb/vb_setmode.c
index 5fb699d..bee4b38 100644
--- a/drivers/staging/xgifb/vb_setmode.c
+++ b/drivers/staging/xgifb/vb_setmode.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -759,7 +759,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_SetCRT1DE(struct xgi_hw_device_info *HwDeviceExtension,
 
 xgifb_reg_and_or(pVBInfo-&amp;gt;P3d4, 0x07, ~0x42, tempax);
 data = xgifb_reg_get(pVBInfo-&amp;gt;P3d4, 0x07);
-data &amp;amp;= 0xFF;
 tempax = 0;
 
 if (tempbx &amp;amp; 0x04)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1589,10 +1588,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_SetLVDSRegs(unsigned short ModeNo, unsigned short ModeIdIndex,
 xgifb_reg_and_or(pVBInfo-&amp;gt;Part1Port, 0x1a, 0x07,
 tempax);
 
-tempcx = pVBInfo-&amp;gt;VGAVT;
 tempbx = pVBInfo-&amp;gt;VDE;
 tempax = pVBInfo-&amp;gt;VGAVDE;
-tempcx -= tempax;
 
 temp = tempax; /* 0430 ylshieh */
 temp1 = (temp &amp;lt;&amp;lt; 18) / tempbx;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -2657,10 +2654,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_GetCRT2Data(unsigned short ModeNo, unsigned short ModeIdIndex,
 tempbx = 775;
 else if (pVBInfo-&amp;gt;VGAVDE == 600)
 tempbx = 775;
-else
-tempbx = 768;
-} else
-tempbx = 768;
+}
 } else if (pVBInfo-&amp;gt;LCDResInfo == Panel_1024x768x75) {
 tempax = 1024;
 tempbx = 768;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3015,9 +3009,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_SetGroup1(unsigned short ModeNo, unsigned short ModeIdIndex,
 temp |= ((tempcx &amp;amp; 0xFF00) &amp;gt;&amp;gt; 8);
 xgifb_reg_set(pVBInfo-&amp;gt;Part1Port, 0x12, temp);
 
-tempax = pVBInfo-&amp;gt;VGAVDE;
-tempbx = pVBInfo-&amp;gt;VGAVDE;
-tempcx = pVBInfo-&amp;gt;VGAVT;
 /* BTVGA2VRS 0x10,0x11 */
 tempbx = (pVBInfo-&amp;gt;VGAVT + pVBInfo-&amp;gt;VGAVDE) &amp;gt;&amp;gt; 1;
 /* BTVGA2VRE 0x11 */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3226,7 +3217,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_SetLockRegs(unsigned short ModeNo, unsigned short ModeIdIndex,
 }
 }
 tempbx--;
-temp = tempbx &amp;amp; 0x00FF;
 tempbx--;
 temp = tempbx &amp;amp; 0x00FF;
 /* 0x10 vertical Blank Start */
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -3445,9 +3435,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_SetGroup2(unsigned short ModeNo, unsigned short ModeIdIndex,
 temp &amp;amp;= 0x80;
 xgifb_reg_and_or(pVBInfo-&amp;gt;Part2Port, 0x0A, 0xFF, temp);
 
-if (pVBInfo-&amp;gt;VBInfo &amp;amp; SetCRT2ToHiVision)
-tempax = 950;
-
 if (pVBInfo-&amp;gt;TVInfo &amp;amp; TVSetPAL)
 tempax = 520;
 else
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4211,11 +4198,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void XGI_SetGroup4(unsigned short ModeNo, unsigned short ModeIdIndex,
 
 tempebx = pVBInfo-&amp;gt;VDE;
 
-if (tempcx &amp;amp; SetCRT2ToHiVision) {
-if (!(temp &amp;amp; 0xE000))
-tempbx = tempbx &amp;gt;&amp;gt; 1;
-}
-
 tempcx = pVBInfo-&amp;gt;RVBHRS;
 temp = tempcx &amp;amp; 0x00FF;
 xgifb_reg_set(pVBInfo-&amp;gt;Part4Port, 0x18, temp);
&lt;/pre&gt;</description>
    <dc:creator>Peter Huewe</dc:creator>
    <dc:date>2013-05-17T22:19:54</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38182">
    <title>Re: [PATCH 1/1] Staging: bcm: Fix of various code style issues.</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38182</link>
    <description>&lt;pre&gt;
You are doing 3 different things, so this should be at least 3 different
patches, right?

Please split them up and resend them, thanks.

greg k-h
&lt;/pre&gt;</description>
    <dc:creator>Greg Kroah-Hartman</dc:creator>
    <dc:date>2013-05-17T22:08:19</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38181">
    <title>Re: [PATCH] Staging: wlan-ng: Replace printk with pr_ to fix checkpatch warnings.</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38181</link>
    <description>&lt;pre&gt;
As this is a network driver, can't these be net_dev, or dev_warn() calls
instead?

thanks,

greg k-h
&lt;/pre&gt;</description>
    <dc:creator>Greg KH</dc:creator>
    <dc:date>2013-05-17T22:03:55</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38180">
    <title>Re: [PATCH 2/2] Staging: android: sync: use seq_puts()/seq_putc() to follow coding style</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38180</link>
    <description>&lt;pre&gt;
Sorry, someone beat you to this same patch a few days ago, so I can't
apply it.

greg k-h
&lt;/pre&gt;</description>
    <dc:creator>Greg KH</dc:creator>
    <dc:date>2013-05-17T21:59:03</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38179">
    <title>Re: [PATCH 2/2] Staging: android: sync: use seq_puts()/seq_putc() to follow coding style</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38179</link>
    <description>&lt;pre&gt;
Where patch 1/2 in this series?

confused,

greg k-h
&lt;/pre&gt;</description>
    <dc:creator>Greg KH</dc:creator>
    <dc:date>2013-05-17T21:57:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38178">
    <title>[PATCH 2/2] staging/btmtk_usb: Mark local functions as static</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38178</link>
    <description>&lt;pre&gt;sparse complains about some local functions not being static:
drivers/staging/btmtk_usb/btmtk_usb.c:50:6:
warning: symbol 'hex_dump' was not declared. Should it be static?
drivers/staging/btmtk_usb/btmtk_usb.c:227:5:
warning: symbol 'checksume16' was not declared. Should it be static?

-&amp;gt; add the static keyword

Signed-off-by: Peter Huewe &amp;lt;peterhuewe&amp;lt; at &amp;gt;gmx.de&amp;gt;
---
 drivers/staging/btmtk_usb/btmtk_usb.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/btmtk_usb/btmtk_usb.c b/drivers/staging/btmtk_usb/btmtk_usb.c
index 772c49e..a7539df 100644
--- a/drivers/staging/btmtk_usb/btmtk_usb.c
+++ b/drivers/staging/btmtk_usb/btmtk_usb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -47,7 +47,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static struct usb_driver btmtk_usb_driver;
 static int btmtk_usb_load_rom_patch(struct btmtk_usb_data *);
 static int btmtk_usb_load_fw(struct btmtk_usb_data *);
 
-void hex_dump(char *str, u8 *src_buf, u32 src_buf_len)
+static void hex_dump(char *str, u8 *src_buf, u32 src_buf_len)
 {
 unsigned char *pt;
 int x;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -224,7 +224,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void btmtk_usb_cap_init(struct btmtk_usb_data *data)
 }
 }
 
-u16 checksume16(u8 *pData, int len)
+static u16 checksume16(u8 *pData, int len)
 {
 int sum = 0;
 
&lt;/pre&gt;</description>
    <dc:creator>Peter Huewe</dc:creator>
    <dc:date>2013-05-17T21:51:58</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38177">
    <title>[PATCH 1/2] staging/btmtk_usb: use module_usb_driver to register driver</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38177</link>
    <description>&lt;pre&gt;Removing some boilerplate by using module_usb_driver instead of calling
register and unregister in the otherwise empty init/exit functions

Signed-off-by: Peter Huewe &amp;lt;peterhuewe&amp;lt; at &amp;gt;gmx.de&amp;gt;
---
 drivers/staging/btmtk_usb/btmtk_usb.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/drivers/staging/btmtk_usb/btmtk_usb.c b/drivers/staging/btmtk_usb/btmtk_usb.c
index 6b01f61..772c49e 100644
--- a/drivers/staging/btmtk_usb/btmtk_usb.c
+++ b/drivers/staging/btmtk_usb/btmtk_usb.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1771,20 +1771,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static struct usb_driver btmtk_usb_driver = {
 .disable_hub_initiated_lpm = 1,
 };
 
-static int __init btmtk_usb_init(void)
-{
-BT_INFO("btmtk usb driver ver %s", VERSION);
-
-return usb_register(&amp;amp;btmtk_usb_driver);
-}
-
-static void __exit btmtk_usb_exit(void)
-{
-usb_deregister(&amp;amp;btmtk_usb_driver);
-}
-
-module_init(btmtk_usb_init);
-module_exit(btmtk_usb_exit);
+module_usb_driver(btmtk_usb_driver);
 
 MODULE_DESCRIPTION("Mediatek Bluetooth USB driver ver " VERSION);
 MODULE_VERSION(VERSION);
&lt;/pre&gt;</description>
    <dc:creator>Peter Huewe</dc:creator>
    <dc:date>2013-05-17T21:51:57</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38176">
    <title>[PATCH 5/6] staging: comedi: me_daq: use comedi_load_firmware()</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38176</link>
    <description>&lt;pre&gt;Use comedi_load_firmware() instead of duplicating the code in a
private function.

Signed-off-by: H Hartley Sweeten &amp;lt;hsweeten&amp;lt; at &amp;gt;visionengravers.com&amp;gt;
Cc: Ian Abbott &amp;lt;abbotti&amp;lt; at &amp;gt;mev.co.uk&amp;gt;
Cc: Greg Kroah-Hartman &amp;lt;gregkh&amp;lt; at &amp;gt;linuxfoundation.org&amp;gt;
---
 drivers/staging/comedi/drivers/me_daq.c | 21 +++------------------
 1 file changed, 3 insertions(+), 18 deletions(-)

diff --git a/drivers/staging/comedi/drivers/me_daq.c b/drivers/staging/comedi/drivers/me_daq.c
index a5551e6..313f702 100644
--- a/drivers/staging/comedi/drivers/me_daq.c
+++ b/drivers/staging/comedi/drivers/me_daq.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,7 +33,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/pci.h&amp;gt;
 #include &amp;lt;linux/interrupt.h&amp;gt;
 #include &amp;lt;linux/sched.h&amp;gt;
-#include &amp;lt;linux/firmware.h&amp;gt;
 
 #include "../comedidev.h"
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -456,22 +455,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int me2600_xilinx_download(struct comedi_device *dev,
 return 0;
 }
 
-static int me2600_upload_firmware(struct comedi_device *dev)
-{
-struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-const struct firmware *fw;
-int ret;
-
-ret = request_firmware(&amp;amp;fw, ME2600_FIRMWARE, &amp;amp;pcidev-&amp;gt;dev);
-if (ret)
-return ret;
-
-ret = me2600_xilinx_download(dev, fw-&amp;gt;data, fw-&amp;gt;size);
-release_firmware(fw);
-
-return ret;
-}
-
 static int me_reset(struct comedi_device *dev)
 {
 struct me_private_data *dev_private = dev-&amp;gt;private;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -525,7 +508,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int me_auto_attach(struct comedi_device *dev,
 
 /* Download firmware and reset card */
 if (board-&amp;gt;needs_firmware) {
-ret = me2600_upload_firmware(dev);
+ret = comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
+   ME2600_FIRMWARE,
+   me2600_xilinx_download);
 if (ret &amp;lt; 0)
 return ret;
 }
&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:17:40</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38175">
    <title>[PATCH 6/6] staging: comedi: ni_pcidio: use comedi_load_firmware()</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38175</link>
    <description>&lt;pre&gt;Use comedi_load_firmware() instead of duplicating the code in a
private function.

This driver loads multiple firmware images to the device. Modify
comedi_load_firmware() to take a 'context' that is passed to the
firmware upload callback function.

Signed-off-by: H Hartley Sweeten &amp;lt;hsweeten&amp;lt; at &amp;gt;visionengravers.com&amp;gt;
Cc: Ian Abbott &amp;lt;abbotti&amp;lt; at &amp;gt;mev.co.uk&amp;gt;
Cc: Greg Kroah-Hartman &amp;lt;gregkh&amp;lt; at &amp;gt;linuxfoundation.org&amp;gt;
---
 drivers/staging/comedi/comedidev.h            |  4 +++-
 drivers/staging/comedi/drivers.c              |  7 +++++--
 drivers/staging/comedi/drivers/daqboard2000.c |  5 +++--
 drivers/staging/comedi/drivers/jr3_pci.c      |  9 +++++----
 drivers/staging/comedi/drivers/me_daq.c       |  5 +++--
 drivers/staging/comedi/drivers/ni_pcidio.c    | 25 +++++++++++--------------
 6 files changed, 30 insertions(+), 25 deletions(-)

diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
index 7adc426..a31915f 100644
--- a/drivers/staging/comedi/comedidev.h
+++ b/drivers/staging/comedi/comedidev.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -349,7 +349,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; void comedi_spriv_free(struct comedi_device *, int subdev_num);
 int comedi_load_firmware(struct comedi_device *, struct device *,
  const char *name,
  int (*cb)(struct comedi_device *,
-   const u8 *data, size_t size));
+   const u8 *data, size_t size,
+   unsigned long context),
+ unsigned long context);
 
 int __comedi_request_region(struct comedi_device *,
     unsigned long start, unsigned long len);
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
index 12f1974..f3e57fd 100644
--- a/drivers/staging/comedi/drivers.c
+++ b/drivers/staging/comedi/drivers.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -353,12 +353,15 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void comedi_report_boards(struct comedi_driver *driv)
  * &amp;lt; at &amp;gt;hw_device: device struct for the comedi_device
  * &amp;lt; at &amp;gt;name: the name of the firmware image
  * &amp;lt; at &amp;gt;cb: callback to the upload the firmware image
+ * &amp;lt; at &amp;gt;context: private context from the driver
  */
 int comedi_load_firmware(struct comedi_device *dev,
  struct device *device,
  const char *name,
  int (*cb)(struct comedi_device *dev,
-   const u8 *data, size_t size))
+   const u8 *data, size_t size,
+   unsigned long context),
+ unsigned long context)
 {
 const struct firmware *fw;
 int ret;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -368,7 +371,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int comedi_load_firmware(struct comedi_device *dev,
 
 ret = request_firmware(&amp;amp;fw, name, device);
 if (ret == 0) {
-ret = cb(dev, fw-&amp;gt;data, fw-&amp;gt;size);
+ret = cb(dev, fw-&amp;gt;data, fw-&amp;gt;size, context);
 release_firmware(fw);
 }
 
diff --git a/drivers/staging/comedi/drivers/daqboard2000.c b/drivers/staging/comedi/drivers/daqboard2000.c
index ed3b3e6..f5aa386 100644
--- a/drivers/staging/comedi/drivers/daqboard2000.c
+++ b/drivers/staging/comedi/drivers/daqboard2000.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -518,7 +518,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int daqboard2000_writeCPLD(struct comedi_device *dev, int data)
 }
 
 static int initialize_daqboard2000(struct comedi_device *dev,
-   const u8 *cpld_array, size_t len)
+   const u8 *cpld_array, size_t len,
+   unsigned long context)
 {
 struct daqboard2000_private *devpriv = dev-&amp;gt;private;
 int result = -EIO;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -704,7 +705,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int daqboard2000_auto_attach(struct comedi_device *dev,
 
 result = comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
       DAQBOARD2000_FIRMWARE,
-      initialize_daqboard2000);
+      initialize_daqboard2000, 0);
 if (result &amp;lt; 0)
 return result;
 
diff --git a/drivers/staging/comedi/drivers/jr3_pci.c b/drivers/staging/comedi/drivers/jr3_pci.c
index 6c5406c..94609f4 100644
--- a/drivers/staging/comedi/drivers/jr3_pci.c
+++ b/drivers/staging/comedi/drivers/jr3_pci.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -325,8 +325,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int read_idm_word(const u8 *data, size_t size, int *pos,
 return result;
 }
 
-static int jr3_download_firmware(struct comedi_device *dev, const u8 *data,
- size_t size)
+static int jr3_download_firmware(struct comedi_device *dev,
+ const u8 *data, size_t size,
+ unsigned long context)
 {
 /*
  * IDM file format is:
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -733,7 +734,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int jr3_pci_auto_attach(struct comedi_device *dev,
 
 result = comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
       "comedi/jr3pci.idm",
-      jr3_download_firmware);
+      jr3_download_firmware, 0);
 dev_dbg(dev-&amp;gt;class_dev, "Firmare load %d\n", result);
 
 if (result &amp;lt; 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -745,7 +746,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int jr3_pci_auto_attach(struct comedi_device *dev,
  *
  *     comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
  *                          "comedi/jr3_offsets_table",
- *                          jr3_download_firmware);
+ *                          jr3_download_firmware, 1);
  */
 
 /*
diff --git a/drivers/staging/comedi/drivers/me_daq.c b/drivers/staging/comedi/drivers/me_daq.c
index 313f702..7533ece 100644
--- a/drivers/staging/comedi/drivers/me_daq.c
+++ b/drivers/staging/comedi/drivers/me_daq.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -386,7 +386,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int me_ao_insn_read(struct comedi_device *dev,
 }
 
 static int me2600_xilinx_download(struct comedi_device *dev,
-  const u8 *data, size_t size)
+  const u8 *data, size_t size,
+  unsigned long context)
 {
 struct me_private_data *dev_private = dev-&amp;gt;private;
 unsigned int value;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -510,7 +511,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int me_auto_attach(struct comedi_device *dev,
 if (board-&amp;gt;needs_firmware) {
 ret = comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
    ME2600_FIRMWARE,
-   me2600_xilinx_download);
+   me2600_xilinx_download, 0);
 if (ret &amp;lt; 0)
 return ret;
 }
diff --git a/drivers/staging/comedi/drivers/ni_pcidio.c b/drivers/staging/comedi/drivers/ni_pcidio.c
index 934b700..5b2f72e 100644
--- a/drivers/staging/comedi/drivers/ni_pcidio.c
+++ b/drivers/staging/comedi/drivers/ni_pcidio.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -53,7 +53,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; comedi_nonfree_firmware tarball available from http://www.comedi.org
 #include &amp;lt;linux/delay.h&amp;gt;
 #include &amp;lt;linux/interrupt.h&amp;gt;
 #include &amp;lt;linux/sched.h&amp;gt;
-#include &amp;lt;linux/firmware.h&amp;gt;
 
 #include "../comedidev.h"
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -966,11 +965,13 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int ni_pcidio_change(struct comedi_device *dev,
 return 0;
 }
 
-static int pci_6534_load_fpga(struct comedi_device *dev, int fpga_index,
-      const u8 *data, size_t data_len)
+static int pci_6534_load_fpga(struct comedi_device *dev,
+      const u8 *data, size_t data_len,
+      unsigned long context)
 {
 struct nidio96_private *devpriv = dev-&amp;gt;private;
 static const int timeout = 1000;
+int fpga_index = context;
 int i;
 size_t j;
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1028,7 +1029,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int pci_6534_load_fpga(struct comedi_device *dev, int fpga_index,
 
 static int pci_6534_reset_fpga(struct comedi_device *dev, int fpga_index)
 {
-return pci_6534_load_fpga(dev, fpga_index, NULL, 0);
+return pci_6534_load_fpga(dev, NULL, 0, fpga_index);
 }
 
 static int pci_6534_reset_fpgas(struct comedi_device *dev)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1062,13 +1063,12 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void pci_6534_init_main_fpga(struct comedi_device *dev)
 static int pci_6534_upload_firmware(struct comedi_device *dev)
 {
 struct nidio96_private *devpriv = dev-&amp;gt;private;
-int ret;
-const struct firmware *fw;
 static const char *const fw_file[3] = {
 FW_PCI_6534_SCARAB_DI,/* loaded into scarab A for DI */
 FW_PCI_6534_SCARAB_DO,/* loaded into scarab B for DO */
 FW_PCI_6534_MAIN,/* loaded into main FPGA */
 };
+int ret;
 int n;
 
 ret = pci_6534_reset_fpgas(dev);
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1076,14 +1076,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int pci_6534_upload_firmware(struct comedi_device *dev)
 return ret;
 /* load main FPGA first, then the two scarabs */
 for (n = 2; n &amp;gt;= 0; n--) {
-ret = request_firmware(&amp;amp;fw, fw_file[n],
-       &amp;amp;devpriv-&amp;gt;mite-&amp;gt;pcidev-&amp;gt;dev);
-if (ret == 0) {
-ret = pci_6534_load_fpga(dev, n, fw-&amp;gt;data, fw-&amp;gt;size);
-if (ret == 0 &amp;amp;&amp;amp; n == 2)
-pci_6534_init_main_fpga(dev);
-release_firmware(fw);
-}
+ret = comedi_load_firmware(dev, &amp;amp;devpriv-&amp;gt;mite-&amp;gt;pcidev-&amp;gt;dev,
+   fw_file[n],
+   pci_6534_load_fpga, n);
+if (ret == 0 &amp;amp;&amp;amp; n == 2)
+pci_6534_init_main_fpga(dev);
 if (ret &amp;lt; 0)
 break;
 }
&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:18:01</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38174">
    <title>[PATCH 4/6] staging: comedi: daqboard2000: use comedi_load_firmware()</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38174</link>
    <description>&lt;pre&gt;Use comedi_load_firmware() instead of duplicating the code in a
private function.

Signed-off-by: H Hartley Sweeten &amp;lt;hsweeten&amp;lt; at &amp;gt;visionengravers.com&amp;gt;
Cc: Ian Abbott &amp;lt;abbotti&amp;lt; at &amp;gt;mev.co.uk&amp;gt;
Cc: Greg Kroah-Hartman &amp;lt;gregkh&amp;lt; at &amp;gt;linuxfoundation.org&amp;gt;
---
 drivers/staging/comedi/drivers/daqboard2000.c | 21 +++------------------
 1 file changed, 3 insertions(+), 18 deletions(-)

diff --git a/drivers/staging/comedi/drivers/daqboard2000.c b/drivers/staging/comedi/drivers/daqboard2000.c
index 6e6a9bb..ed3b3e6 100644
--- a/drivers/staging/comedi/drivers/daqboard2000.c
+++ b/drivers/staging/comedi/drivers/daqboard2000.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -105,7 +105,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Configuration options: not applicable, uses PCI auto config
 #include &amp;lt;linux/pci.h&amp;gt;
 #include &amp;lt;linux/delay.h&amp;gt;
 #include &amp;lt;linux/interrupt.h&amp;gt;
-#include &amp;lt;linux/firmware.h&amp;gt;
 
 #include "../comedidev.h"
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -560,22 +559,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int initialize_daqboard2000(struct comedi_device *dev,
 return result;
 }
 
-static int daqboard2000_upload_firmware(struct comedi_device *dev)
-{
-struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-const struct firmware *fw;
-int ret;
-
-ret = request_firmware(&amp;amp;fw, DAQBOARD2000_FIRMWARE, &amp;amp;pcidev-&amp;gt;dev);
-if (ret)
-return ret;
-
-ret = initialize_daqboard2000(dev, fw-&amp;gt;data, fw-&amp;gt;size);
-release_firmware(fw);
-
-return ret;
-}
-
 static void daqboard2000_adcStopDmaTransfer(struct comedi_device *dev)
 {
 }
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -719,7 +702,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int daqboard2000_auto_attach(struct comedi_device *dev,
 
 readl(devpriv-&amp;gt;plx + 0x6c);
 
-result = daqboard2000_upload_firmware(dev);
+result = comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
+      DAQBOARD2000_FIRMWARE,
+      initialize_daqboard2000);
 if (result &amp;lt; 0)
 return result;
 
&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:17:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38173">
    <title>[PATCH 3/6] staging: comedi: drivers: generalize comedi_load_firmware()</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38173</link>
    <description>&lt;pre&gt;Move comedi_load_firmware() from jr3_pci.c to drivers.c and export
it for general use by the comedi drivers.

Signed-off-by: H Hartley Sweeten &amp;lt;hsweeten&amp;lt; at &amp;gt;visionengravers.com&amp;gt;
Cc: Ian Abbott &amp;lt;abbotti&amp;lt; at &amp;gt;mev.co.uk&amp;gt;
Cc: Greg Kroah-Hartman &amp;lt;gregkh&amp;lt; at &amp;gt;linuxfoundation.org&amp;gt;
---
 drivers/staging/comedi/comedidev.h       |  5 +++++
 drivers/staging/comedi/drivers.c         | 30 +++++++++++++++++++++++++++
 drivers/staging/comedi/drivers/jr3_pci.c | 35 +++++---------------------------
 3 files changed, 40 insertions(+), 30 deletions(-)

diff --git a/drivers/staging/comedi/comedidev.h b/drivers/staging/comedi/comedidev.h
index ff7fc45..7adc426 100644
--- a/drivers/staging/comedi/comedidev.h
+++ b/drivers/staging/comedi/comedidev.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -346,6 +346,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; int comedi_alloc_subdevices(struct comedi_device *, int);
 
 void comedi_spriv_free(struct comedi_device *, int subdev_num);
 
+int comedi_load_firmware(struct comedi_device *, struct device *,
+ const char *name,
+ int (*cb)(struct comedi_device *,
+   const u8 *data, size_t size));
+
 int __comedi_request_region(struct comedi_device *,
     unsigned long start, unsigned long len);
 int comedi_request_region(struct comedi_device *,
diff --git a/drivers/staging/comedi/drivers.c b/drivers/staging/comedi/drivers.c
index 216ba44..12f1974 100644
--- a/drivers/staging/comedi/drivers.c
+++ b/drivers/staging/comedi/drivers.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -33,6 +33,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/dma-mapping.h&amp;gt;
 #include &amp;lt;linux/io.h&amp;gt;
 #include &amp;lt;linux/interrupt.h&amp;gt;
+#include &amp;lt;linux/firmware.h&amp;gt;
 
 #include "comedidev.h"
 #include "comedi_internal.h"
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -347,6 +348,35 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static void comedi_report_boards(struct comedi_driver *driv)
 }
 
 /**
+ * comedi_load_firmware() - Request and load firmware for a device.
+ * &amp;lt; at &amp;gt;dev: comedi_device struct
+ * &amp;lt; at &amp;gt;hw_device: device struct for the comedi_device
+ * &amp;lt; at &amp;gt;name: the name of the firmware image
+ * &amp;lt; at &amp;gt;cb: callback to the upload the firmware image
+ */
+int comedi_load_firmware(struct comedi_device *dev,
+ struct device *device,
+ const char *name,
+ int (*cb)(struct comedi_device *dev,
+   const u8 *data, size_t size))
+{
+const struct firmware *fw;
+int ret;
+
+if (!cb)
+return -EINVAL;
+
+ret = request_firmware(&amp;amp;fw, name, device);
+if (ret == 0) {
+ret = cb(dev, fw-&amp;gt;data, fw-&amp;gt;size);
+release_firmware(fw);
+}
+
+return ret;
+}
+EXPORT_SYMBOL_GPL(comedi_load_firmware);
+
+/**
  * __comedi_request_region() - Request an I/O reqion for a legacy driver.
  * &amp;lt; at &amp;gt;dev: comedi_device struct
  * &amp;lt; at &amp;gt;start: base address of the I/O reqion
diff --git a/drivers/staging/comedi/drivers/jr3_pci.c b/drivers/staging/comedi/drivers/jr3_pci.c
index 9b61b55..6c5406c 100644
--- a/drivers/staging/comedi/drivers/jr3_pci.c
+++ b/drivers/staging/comedi/drivers/jr3_pci.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -41,7 +41,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include &amp;lt;linux/pci.h&amp;gt;
 #include &amp;lt;linux/delay.h&amp;gt;
 #include &amp;lt;linux/ctype.h&amp;gt;
-#include &amp;lt;linux/firmware.h&amp;gt;
 #include &amp;lt;linux/jiffies.h&amp;gt;
 #include &amp;lt;linux/slab.h&amp;gt;
 #include &amp;lt;linux/timer.h&amp;gt;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -92,33 +91,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct jr3_pci_subdev_private {
 int retries;
 };
 
-/* Hotplug firmware loading stuff */
-static int comedi_load_firmware(struct comedi_device *dev, const char *name,
-int (*cb)(struct comedi_device *dev,
-  const u8 *data, size_t size))
-{
-struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-const struct firmware *fw;
-char *firmware_path;
-int ret;
-
-if (!cb)
-return -EINVAL;
-
-firmware_path = kasprintf(GFP_KERNEL, "comedi/%s", name);
-if (!firmware_path)
-return -ENOMEM;
-
-ret = request_firmware(&amp;amp;fw, firmware_path, &amp;amp;pcidev-&amp;gt;dev);
-if (ret == 0) {
-ret = cb(dev, fw-&amp;gt;data, fw-&amp;gt;size);
-release_firmware(fw);
-}
-kfree(firmware_path);
-
-return ret;
-}
-
 static struct poll_delay_t poll_delay_min_max(int min, int max)
 {
 struct poll_delay_t result;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -759,7 +731,9 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int jr3_pci_auto_attach(struct comedi_device *dev,
 /*  Reset DSP card */
 writel(0, &amp;amp;devpriv-&amp;gt;iobase-&amp;gt;channel[0].reset);
 
-result = comedi_load_firmware(dev, "jr3pci.idm", jr3_download_firmware);
+result = comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
+      "comedi/jr3pci.idm",
+      jr3_download_firmware);
 dev_dbg(dev-&amp;gt;class_dev, "Firmare load %d\n", result);
 
 if (result &amp;lt; 0)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -769,7 +743,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int jr3_pci_auto_attach(struct comedi_device *dev,
  * format:
  *     model serial Fx Fy Fz Mx My Mz\n
  *
- *     comedi_load_firmware(dev, "jr3_offsets_table",
+ *     comedi_load_firmware(dev, &amp;amp;comedi_to_pci_dev(dev)-&amp;gt;dev,
+ *                          "comedi/jr3_offsets_table",
  *                          jr3_download_firmware);
  */
 
&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:17:00</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38172">
    <title>[PATCH 2/6] staging: comedi: jr3_pci: tidy up comedi_load_firmware()</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38172</link>
    <description>&lt;pre&gt;Refactor the function to remove some unnecessary indents and make
it a bit more concise.

Signed-off-by: H Hartley Sweeten &amp;lt;hsweeten&amp;lt; at &amp;gt;visionengravers.com&amp;gt;
Cc: Ian Abbott &amp;lt;abbotti&amp;lt; at &amp;gt;mev.co.uk&amp;gt;
Cc: Greg Kroah-Hartman &amp;lt;gregkh&amp;lt; at &amp;gt;linuxfoundation.org&amp;gt;
---
 drivers/staging/comedi/drivers/jr3_pci.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/drivers/staging/comedi/drivers/jr3_pci.c b/drivers/staging/comedi/drivers/jr3_pci.c
index 42e78d1..9b61b55 100644
--- a/drivers/staging/comedi/drivers/jr3_pci.c
+++ b/drivers/staging/comedi/drivers/jr3_pci.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -95,28 +95,28 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; struct jr3_pci_subdev_private {
 /* Hotplug firmware loading stuff */
 static int comedi_load_firmware(struct comedi_device *dev, const char *name,
 int (*cb)(struct comedi_device *dev,
-const u8 *data, size_t size))
+  const u8 *data, size_t size))
 {
 struct pci_dev *pcidev = comedi_to_pci_dev(dev);
-int result = 0;
 const struct firmware *fw;
 char *firmware_path;
+int ret;
+
+if (!cb)
+return -EINVAL;
 
 firmware_path = kasprintf(GFP_KERNEL, "comedi/%s", name);
-if (!firmware_path) {
-result = -ENOMEM;
-} else {
-result = request_firmware(&amp;amp;fw, firmware_path, &amp;amp;pcidev-&amp;gt;dev);
-if (result == 0) {
-if (!cb)
-result = -EINVAL;
-else
-result = cb(dev, fw-&amp;gt;data, fw-&amp;gt;size);
-release_firmware(fw);
-}
-kfree(firmware_path);
+if (!firmware_path)
+return -ENOMEM;
+
+ret = request_firmware(&amp;amp;fw, firmware_path, &amp;amp;pcidev-&amp;gt;dev);
+if (ret == 0) {
+ret = cb(dev, fw-&amp;gt;data, fw-&amp;gt;size);
+release_firmware(fw);
 }
-return result;
+kfree(firmware_path);
+
+return ret;
 }
 
 static struct poll_delay_t poll_delay_min_max(int min, int max)
&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:16:39</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38171">
    <title>[PATCH 1/6] staging: comedi: jr3_pci: use kasprintf</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38171</link>
    <description>&lt;pre&gt;kasprintf combines kmalloc and sprintf, and takes care of the size
calculation itself.

Signed-off-by: H Hartley Sweeten &amp;lt;hsweeten&amp;lt; at &amp;gt;visionengravers.com&amp;gt;
Cc: Ian Abbott &amp;lt;abbotti&amp;lt; at &amp;gt;mev.co.uk&amp;gt;
Cc: Greg Kroah-Hartman &amp;lt;gregkh&amp;lt; at &amp;gt;linuxfoundation.org&amp;gt;
---
 drivers/staging/comedi/drivers/jr3_pci.c | 6 +-----
 1 file changed, 1 insertion(+), 5 deletions(-)

diff --git a/drivers/staging/comedi/drivers/jr3_pci.c b/drivers/staging/comedi/drivers/jr3_pci.c
index c240e6d..42e78d1 100644
--- a/drivers/staging/comedi/drivers/jr3_pci.c
+++ b/drivers/staging/comedi/drivers/jr3_pci.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -101,15 +101,11 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; static int comedi_load_firmware(struct comedi_device *dev, const char *name,
 int result = 0;
 const struct firmware *fw;
 char *firmware_path;
-static const char *prefix = "comedi/";
 
-firmware_path = kmalloc(strlen(prefix) + strlen(name) + 1, GFP_KERNEL);
+firmware_path = kasprintf(GFP_KERNEL, "comedi/%s", name);
 if (!firmware_path) {
 result = -ENOMEM;
 } else {
-firmware_path[0] = '\0';
-strcat(firmware_path, prefix);
-strcat(firmware_path, name);
 result = request_firmware(&amp;amp;fw, firmware_path, &amp;amp;pcidev-&amp;gt;dev);
 if (result == 0) {
 if (!cb)
&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:16:12</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38170">
    <title>[PATCH 0/6] staging: comedi: export comedi_load_firmware()</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38170</link>
    <description>&lt;pre&gt;Cleanup and make comedi_load_firmware(), currently in the jr3_pci driver,
a generic helper function that is exported by the comedi core.

Use the exported helper in the comedi drivers instead of duplicating
the code privately.

The usbdux* drivers currently use request_firmware_nowait() to get the
firmware image asynchronously.

The usbduxfast driver has already been converted to use request_firmware()
but the patches have not shown up on linux-next yet. I will submit a patch
to use the the exported helper in this driver as soon as they do.

The usbdux and usbduxsigma drivers will also be converted to request the
firmware synchronously and use the exported helper.

H Hartley Sweeten (6):
  staging: comedi: jr3_pci: use kasprintf
  staging: comedi: jr3_pci: tidy up comedi_load_firmware()
  staging: comedi: drivers: generalize comedi_load_firmware()
  staging: comedi: daqboard2000: use comedi_load_firmware()
  staging: comedi: me_daq: use comedi_load_firmware()
  staging: comedi: ni_pcidio: use comedi_load_firmware()

 drivers/staging/comedi/comedidev.h            |  7 ++++
 drivers/staging/comedi/drivers.c              | 33 +++++++++++++++++++
 drivers/staging/comedi/drivers/daqboard2000.c | 24 +++-----------
 drivers/staging/comedi/drivers/jr3_pci.c      | 46 ++++++---------------------
 drivers/staging/comedi/drivers/me_daq.c       | 24 +++-----------
 drivers/staging/comedi/drivers/ni_pcidio.c    | 25 +++++++--------
 6 files changed, 70 insertions(+), 89 deletions(-)

&lt;/pre&gt;</description>
    <dc:creator>H Hartley Sweeten</dc:creator>
    <dc:date>2013-05-17T18:15:43</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38169">
    <title>Re: [PATCHv11 3/4] zswap: add to mm/</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38169</link>
    <description>&lt;pre&gt;
I think there is a lot of ugly in there and potential for weird performance
bugs. I ran out of beans complaining about different parts during the
review but fixing it out of tree or in staging like it's been happening to
date has clearly not worked out at all. As starting points go, it could be
a hell of a lot worse. I do agree that it needs a big fat warning until
some of the ugly is beaten out of it.  Requiring that it address all the
issues such as automatic pool sizing, NUMA issues, proper allocation prior
to merging will just end up with an unreviewable set of patches again so
lets just bite the bullet because at least there is a chance reviewers
can follow the incremental developments. Merging it to drivers will not
address anything IMO.

&lt;/pre&gt;</description>
    <dc:creator>Mel Gorman</dc:creator>
    <dc:date>2013-05-17T17:00:53</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38168">
    <title>Re: [PATCHv11 3/4] zswap: add to mm/</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38168</link>
    <description>&lt;pre&gt;
potentially reduces IO. No guarantees.


While this is likely, it's also not necessarily true if the swap device
is particularly fast. Also, swap devices can be asynchronously written,
is the same true for zswap? I doubt it as I would expect the compression
operation to slow down pages being added to swap cache.


I know I initially suggested an LRU but don't worry about this thing
being an LRU too much. A FIFO list would be just fine as the pages are
presumably idle if they ended up in zswap in the first place.


They underlying allocator should be tracking the number of physical
pages used, not this layer.


Document what these mean.


read_mostly


This will need additional love in the future. If you have an 8 node machine
then zswap pool could completely exhaust a single NUMA node with this
parameter. This is pretty much a big fat hammer that stops zswap getting
compltely out of control and taking over the system but it'll need some
sort of sensible automatic resizing based on system activity in the future.
It's not an obstacle to merging because you have to start somewhere but
the fixed-pool size thing is fugly and you should plan on putting it down
in the future.


I would be very surprised if a user wanted to tune this. What is a sensible
recommendation for it? I don't think you can give one because it depends
entirely on the workload and the current system state. A good value for
one day may be a bad choice the next day if a backup takes place or the
workload changes pattern frequently.  As there is no sensible recommendation
for this value, just don't expose it to userspace at all.

I guess you could apply the same critism to the suggestion that NCHUNKS
be tunable but that has only two settings really. The default and 2 if
the pool is continually fragmented.


I'm glossed over a lot of this. It looks fairly similar to what was reviewed
before and I'm assuming there are no major changes. Much of it is in the
category of "it'll either work or fail spectacularly early in the lifetime
of the system" and I'm assuming you tested this. Note that the comments
are out of sync with the structures. Fix that.


Does this thing really have to be an atomic? Why not move it into the tree
structure, protect it with the tree lock and then sum the individual counts
when checking if zswap_is_full? It'll be a little race but not much more
so than using atomics outside of a lock like this.


Still not massively happy that this is duplicating code from
read_swap_cache_async(). It's just begging for trouble. I do not have
suggestions on how it can be done cleanly at this time because I haven't
put the effort in.


This is going to further solidify the use of PTEs to store the swap file
and offset for swap pages that Hugh complained about at LSF/MM. It's
unfortunate but it's not like there is queue of people waiting to fix
that particular problem :(


Yikes. So it's possible to fail a zpage writeback? Can this livelock? I
expect you are protected by a combination of the 20% memory limitation
and that it is likely that *some* file pages can be reclaimed but this
is going to cause a bug report eventually. Consider using a mempool to
guarantee that some writeback progress can always be made.


SetPageReclaim? Why?. If the page is under writeback then why do you not
mark it as that? Do not free pages that are currently under writeback
obviously. It's likely that it was PageWriteback you wanted in zbud.c too.



If the allocator layer handled the sizing limitations then you could defer
the size checks until it calls alloc_page. From a layering perspective
this would be a hell of a lot cleaner. As it is, this layer has excessive
knowledge of the zbud layer which feels wrong.


You do all the compression work and then check if you can store it?
It's harmless, but it's a little silly. Do the alloc work first and push
the sizing checks down a layer to the time you call alloc_pages.


I think there is still a lot of ugly in here so see what you can fix up
quickly. It's not mandatory to me that you get all this fixed up prior
to merging because it's long gone past the point where dealing with it
out-of-tree or in staging is going to work. By the time you address all the
concerns, it will have reached the point where it's too complex to review
and back to square one. At least if it's in mm/ it can be incrementally
developed but it should certainly start with a big fat warning that it's
a WIP. I wouldn't slap "ready for production" sticker on this just yet :/

&lt;/pre&gt;</description>
    <dc:creator>Mel Gorman</dc:creator>
    <dc:date>2013-05-17T16:54:18</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38167">
    <title>Re: [PATCHv11 4/4] zswap: add documentation</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38167</link>
    <description>&lt;pre&gt;
*Potentially* reduces IO and *potentially* shows performance gains. If the
system is swap trashing, this may make things worse as you're generating
the same amount of IO but having to compress/decompress as well. If there
is less physical memory available because zswap pool is fragmented then an
application may be pushed to swap prematurely and again, the performance
is worse. Don't oversell this and the comment applies throughout the
documentation.

I also think it should be marked with a bit fat warning that it's a WIP
and an additional warning that the performance characteristics are very
heavily workload dependant.

&lt;/pre&gt;</description>
    <dc:creator>Mel Gorman</dc:creator>
    <dc:date>2013-05-17T16:04:31</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38165">
    <title>Re: [PATCHv11 2/4] zbud: add to mm/</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38165</link>
    <description>&lt;pre&gt;
I'm not familiar with the code in staging/zcache/zbud.c and this looks
like a rewrite but I'm curious, why was an almost complete rewrite
necessary? The staging code looks like it had debugfs statistics and
the like that would help figure how well the packing was working and so
on. I guess it was probably because it was integrated tightly with other
components in staging but could that not be torn out? I'm guessing you
have a good reason but it'd be nice to see that in the changelog.


Fixing the size of the chunks at compile time is a very strict
limitation! Distributions will have to make that decision for all workloads
that might conceivably use zswap. Having the allocator only deal with pairs
of pages limits the worst-case behaviour where reclaim can generate lots of
IO to free a single physical page. However, the chunk size directly affects
the fragmentation properties, both internal and external, of this thing.
Once NCHUNKS is &amp;gt; 2 it is possible to create a workload that externally
fragments this allocator such that each physical page only holds one
compressed page. If this is a problem for a user then their only option
is to rebuild the kernel which is not always possible.

Please make this configurable by a kernel boot parameter at least. At
a glance it looks like only problem would be that you have to kmalloc
unbuddied[NCHUNKS] in the pool structure but that is hardly of earth
shattering difficulty. Make the variables read_mostly to avoid cache-line
bouncing problems.

Finally, because a review would never be complete without a bitching
session about names -- I don't like the name zbud. Buddy allocators take
a large block of memory and split it iteratively (by halves for binary
buddy allocators but there are variations) until it's a best fit for the
allocation request. A key advantage of such schemes is fast searching for
free holes. That's not what this allocator does and as the page allocator
is a binary buddy allocator in Linux, calling this this a buddy allocator
is a bit misleading. Looks like the existing zbud.c also has this problem
but hey.  This thing is a first-fit segmented free list allocator with
sub-allocator properties in that it takes fixed-sized blocks as inputs and
splits them into pairs, not a buddy allocator. That characterisation does
not lend itself to a snappy name but calling it zpair or something would
be slightly less misleading than calling it a buddy allocator.

First Fit Segmented-list Allocator for in-Kernel comprEssion (FFSAKE)? :/


There is no need for pages_nr to be atomic. It's always manipulated
under the lock. I see that the atomic is exported so someone can read it
that is outside the lock but they are goign to have to deal with races
anyway. atomic does not magically protect them

Also, pages_nr does not appear to be the number of zbud pages in the pool,
it's the number of zpages. You may want to report both for debugging
purposes as if nr_zpages != 2 * nr_zbud_pages then zswap is using more
physical pages than it should be.


No need to inline. Only has one caller so the compiler will figure it
out.


This is only used for freeing so call it free_zbud_page and have it call
__free_page for clarity. Also, this is a bit long for inlining.


Your handles are unsigned long and are addresses. Consider making it an
opaque type so someone deferencing it would take a special kind of
stupid.


Why the export? It doesn't look like this thing is going to be consumed
by modules.


No it isn't, it's also first fit.

Give for_each_unbuddied_list() additional smarts to always start with
the last zbpage that was used and collapse these two block of code
together and call it first-fit.


What bounds the size of the pool? Maybe a higher layer does but should the
higher layer set the maximum size and enforce it here instead? That way the
higher layer does not need to know that the allocator is dealing with pages.


This implies that it is possible for a zpage to get freed twice. That
sounds wrong. It sounds like a page being reclaimed should be isolated
from other lists that makes it accessible similar to how normal pages are
isolated from the LRU and then freed.


Why not isolated it instead of using a page flag?


&lt;/pre&gt;</description>
    <dc:creator>Mel Gorman</dc:creator>
    <dc:date>2013-05-17T15:48:37</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38164">
    <title>[PATCH 1/1] Staging: bcm: Fix of various code style issues.</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38164</link>
    <description>&lt;pre&gt;Changed comment style to C89 in Version.h
Fixed some whitespace issues in Typedefs.h
Changed comment style to C89 in vendorspecificextn.c
All issues found with checkpatch.pl

Signed-off-by: Severin Gsponer &amp;lt;svgsponer&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 drivers/staging/bcm/Typedefs.h           |   22 ++--
 drivers/staging/bcm/Version.h            |    8 +-
 drivers/staging/bcm/vendorspecificextn.c |  197 +++++++++++++++---------------
 3 files changed, 110 insertions(+), 117 deletions(-)

diff --git a/drivers/staging/bcm/Typedefs.h b/drivers/staging/bcm/Typedefs.h
index a985abf..3dea509 100644
--- a/drivers/staging/bcm/Typedefs.h
+++ b/drivers/staging/bcm/Typedefs.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -25,16 +25,16 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef unsigned int B_UINT32;
 typedef unsigned long ULONG;
 typedef unsigned long DWORD;
 
-typedef char* PCHAR;
-typedef short* PSHORT;
-typedef int* PINT;
-typedef long* PLONG;
-typedef void* PVOID;
-
-typedef unsigned char* PUCHAR;
-typedef unsigned short* PUSHORT;
-typedef unsigned int* PUINT;
-typedef unsigned long* PULONG;
+typedef char *PCHAR;
+typedef short *PSHORT;
+typedef int *PINT;
+typedef long *PLONG;
+typedef void *PVOID;
+
+typedef unsigned char *PUCHAR;
+typedef unsigned short *PUSHORT;
+typedef unsigned int *PUINT;
+typedef unsigned long *PULONG;
 typedef unsigned long long ULONG64;
 typedef unsigned long long LARGE_INTEGER;
 typedef unsigned int UINT32;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -43,5 +43,5 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; typedef unsigned int UINT32;
 #endif
 
 
-#endif//__TYPEDEFS_H__
+#endif/* __TYPEDEFS_H__ */
 
diff --git a/drivers/staging/bcm/Version.h b/drivers/staging/bcm/Version.h
index a07b956..c5c5fab 100644
--- a/drivers/staging/bcm/Version.h
+++ b/drivers/staging/bcm/Version.h
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -17,7 +17,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Abstract:
 #define VER_FILETYPE                VFT_DRV
 #define VER_FILESUBTYPE             VFT2_DRV_NETWORK
 
-
 #define VER_FILEVERSION             5.2.45
 #define VER_FILEVERSION_STR         "5.2.45"
 
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -27,9 +26,6 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; Abstract:
 #undef VER_PRODUCTVERSION_STR
 #define VER_PRODUCTVERSION_STR      VER_FILEVERSION_STR
 
+/* #include "common.ver" */
 
-
-
-//#include "common.ver"
-
-#endif //VERSION_H
+#endif /* VERSION_H */
diff --git a/drivers/staging/bcm/vendorspecificextn.c b/drivers/staging/bcm/vendorspecificextn.c
index be1f91d..29f13d7 100644
--- a/drivers/staging/bcm/vendorspecificextn.c
+++ b/drivers/staging/bcm/vendorspecificextn.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -1,70 +1,70 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt;
 #include "headers.h"
-//-----------------------------------------------------------------------------
-// Procedure:vendorextnGetSectionInfo
-//
-// Description: Finds the type of NVM used.
-//
-// Arguments:
-//Adapter    - ptr to Adapter object instance
-//pNVMType   - ptr to NVM type.
-// Returns:
-//STATUS_SUCCESS/STATUS_FAILURE
-//
-//-----------------------------------------------------------------------------
+/*
+ * Procedure:vendorextnGetSectionInfo
+ *
+ * Description: Finds the type of NVM used.
+ *
+ * Arguments:
+ *Adapter    - ptr to Adapter object instance
+ *pNVMType   - ptr to NVM type.
+ * Returns:
+ *STATUS_SUCCESS/STATUS_FAILURE
+ *
+ */
 INT vendorextnGetSectionInfo(PVOID  pContext, struct bcm_flash2x_vendor_info *pVendorInfo)
 {
 return STATUS_FAILURE;
 }
 
-//-----------------------------------------------------------------------------
-// Procedure:   vendorextnInit
-//
-// Description: Initializing the vendor extension NVM interface
-//
-// Arguments:
-//              Adapter   - Pointer to MINI Adapter Structure.
-
-// Returns:
-//              STATUS_SUCCESS/STATUS_FAILURE
-//
-//-----------------------------------------------------------------------------
+/*
+ * Procedure:   vendorextnInit
+ *
+ * Description: Initializing the vendor extension NVM interface
+ *
+ * Arguments:
+ *              Adapter   - Pointer to MINI Adapter Structure
+ * Returns:
+ *             STATUS_SUCCESS/STATUS_FAILURE
+ *
+ *
+ */
 INT vendorextnInit(struct bcm_mini_adapter *Adapter)
 {
 return STATUS_SUCCESS;
 }
 
-//-----------------------------------------------------------------------------
-// Procedure:   vendorextnExit
-//
-// Description: Free the resource associated with vendor extension NVM interface
-//
-// Arguments:
-//              Adapter   - Pointer to MINI Adapter Structure.
-
-// Returns:
-//              STATUS_SUCCESS/STATUS_FAILURE
-//
-//-----------------------------------------------------------------------------
+/*
+ * Procedure:   vendorextnExit
+ *
+ * Description: Free the resource associated with vendor extension NVM interface
+ *
+ * Arguments:
+ *
+ * Returns:
+ *              STATUS_SUCCESS/STATUS_FAILURE
+ *
+ *
+ */
 INT vendorextnExit(struct bcm_mini_adapter *Adapter)
 {
 return STATUS_SUCCESS;
 }
 
-//------------------------------------------------------------------------
-// Procedure:vendorextnIoctl
-//
-// Description: execute the vendor extension specific ioctl
-//
-//Arguments:
-//Adapter -Beceem private Adapter Structure
-//cmd -vendor extension specific Ioctl commad
-//arg-input parameter sent by vendor
-//
-// Returns:
-//CONTINUE_COMMON_PATH in case it is not meant to be processed by vendor ioctls
-//STATUS_SUCCESS/STATUS_FAILURE as per the IOCTL return value
-//
-//--------------------------------------------------------------------------
+/*
+ * Procedure:vendorextnIoctl
+ *
+ * Description: execute the vendor extension specific ioctl
+ *
+ * Arguments:
+ *Adapter -Beceem private Adapter Structure
+ *cmd-vendor extension specific Ioctl commad
+ *arg-input parameter sent by vendor
+ *
+ * Returns:
+ *CONTINUE_COMMON_PATH in case it is not meant to be processed by vendor ioctls
+ *STATUS_SUCCESS/STATUS_FAILURE as per the IOCTL return value
+ */
+
 INT vendorextnIoctl(struct bcm_mini_adapter *Adapter, UINT cmd, ULONG arg)
 {
 return CONTINUE_COMMON_PATH;
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -72,22 +72,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; INT vendorextnIoctl(struct bcm_mini_adapter *Adapter, UINT cmd, ULONG arg)
 
 
 
-//------------------------------------------------------------------
-// Procedure:vendorextnReadSection
-//
-// Description: Reads from a section of NVM
-//
-// Arguments:
-//pContext - ptr to Adapter object instance
-//pBuffer - Read the data from Vendor Area to this buffer
-//SectionVal   - Value of type of Section
-//Offset - Read from the Offset of the Vendor Section.
-//numOfBytes - Read numOfBytes from the Vendor section to Buffer
-//
-// Returns:
-//STATUS_SUCCESS/STATUS_FAILURE
-//
-//------------------------------------------------------------------
+/*
+ * Procedure:vendorextnReadSection
+ *
+ * Description: Reads from a section of NVM
+ *
+ * Arguments:
+ *pContext - ptr to Adapter object instance
+ *pBuffer - Read the data from Vendor Area to this buffer
+ *SectionVal   - Value of type of Section
+ *Offset - Read from the Offset of the Vendor Section.
+ *numOfBytes - Read numOfBytes from the Vendor section to Buffer
+ *
+ * Returns:
+ *STATUS_SUCCESS/STATUS_FAILURE
+ */
 
 INT vendorextnReadSection(PVOID  pContext, PUCHAR pBuffer, enum bcm_flash2x_section_val SectionVal,
 UINT offset, UINT numOfBytes)
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -97,23 +96,22 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; INT vendorextnReadSection(PVOID  pContext, PUCHAR pBuffer, enum bcm_flash2x_sect
 
 
 
-//------------------------------------------------------------------
-// Procedure:vendorextnWriteSection
-//
-// Description: Write to a Section of NVM
-//
-// Arguments:
-//pContext - ptr to Adapter object instance
-//pBuffer - Write the data provided in the buffer
-//SectionVal   - Value of type of Section
-//Offset - Writes to the Offset of the Vendor Section.
-//numOfBytes - Write num Bytes after reading from pBuffer.
-//bVerify - the Buffer Written should be verified.
-//
-// Returns:
-//STATUS_SUCCESS/STATUS_FAILURE
-//
-//------------------------------------------------------------------
+/*
+ * Procedure:vendorextnWriteSection
+ *
+ * Description: Write to a Section of NVM
+ *
+ * Arguments:
+ *pContext - ptr to Adapter object instance
+ *pBuffer - Write the data provided in the buffer
+ *SectionVal   - Value of type of Section
+ *Offset - Writes to the Offset of the Vendor Section.
+ *numOfBytes - Write num Bytes after reading from pBuffer.
+ *bVerify - the Buffer Written should be verified.
+ *
+ * Returns:
+ *STATUS_SUCCESS/STATUS_FAILURE
+ */
 INT vendorextnWriteSection(PVOID  pContext, PUCHAR pBuffer, enum bcm_flash2x_section_val SectionVal,
 UINT offset, UINT numOfBytes, BOOLEAN bVerify)
 {
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -122,22 +120,21 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; INT vendorextnWriteSection(PVOID  pContext, PUCHAR pBuffer, enum bcm_flash2x_sec
 
 
 
-//------------------------------------------------------------------
-// Procedure:vendorextnWriteSectionWithoutErase
-//
-// Description: Write to a Section of NVM without erasing the sector
-//
-// Arguments:
-//pContext - ptr to Adapter object instance
-//pBuffer - Write the data provided in the buffer
-//SectionVal   - Value of type of Section
-//Offset - Writes to the Offset of the Vendor Section.
-//numOfBytes - Write num Bytes after reading from pBuffer.
-//
-// Returns:
-//STATUS_SUCCESS/STATUS_FAILURE
-//
-//------------------------------------------------------------------
+/*
+ * Procedure:vendorextnWriteSectionWithoutErase
+ *
+ * Description: Write to a Section of NVM without erasing the sector
+ *
+ * Arguments:
+ *pContext - ptr to Adapter object instance
+ *pBuffer - Write the data provided in the buffer
+ *SectionVal   - Value of type of Section
+ *Offset - Writes to the Offset of the Vendor Section.
+ *numOfBytes - Write num Bytes after reading from pBuffer.
+ *
+ * Returns:
+ *STATUS_SUCCESS/STATUS_FAILURE
+ */
 INT vendorextnWriteSectionWithoutErase(PVOID  pContext, PUCHAR pBuffer, enum bcm_flash2x_section_val SectionVal,
 UINT offset, UINT numOfBytes)
 {
&lt;/pre&gt;</description>
    <dc:creator>Severin Gsponer</dc:creator>
    <dc:date>2013-05-17T14:44:22</dc:date>
  </item>
  <item rdf:about="http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38161">
    <title>[PATCH] staging/solo6x10: select the desired font</title>
    <link>http://permalink.gmane.org/gmane.linux.drivers.driver-project.devel/38161</link>
    <description>&lt;pre&gt;From: Xiong Zhou &amp;lt;jencce.kernel&amp;lt; at &amp;gt;gmail.com&amp;gt;

Make sure FONT_8x16 can be found by find_font().

Signed-off-by: Xiong Zhou &amp;lt;jencce.kernel&amp;lt; at &amp;gt;gmail.com&amp;gt;
---
 drivers/staging/media/solo6x10/Kconfig |    1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/staging/media/solo6x10/Kconfig b/drivers/staging/media/solo6x10/Kconfig
index ec32776..0bc743b 100644
--- a/drivers/staging/media/solo6x10/Kconfig
+++ b/drivers/staging/media/solo6x10/Kconfig
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -4,6 +4,7 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; config SOLO6X10
 select VIDEOBUF2_DMA_SG
 select VIDEOBUF2_DMA_CONTIG
 select SND_PCM
+select FONT_8x16
 ---help---
   This driver supports the Softlogic based MPEG-4 and h.264 codec
   cards.
&lt;/pre&gt;</description>
    <dc:creator>Xiong Zhou</dc:creator>
    <dc:date>2013-05-17T11:24:05</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.linux.drivers.driver-project.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.linux.drivers.driver-project.devel</link>
  </textinput>
</rdf:RDF>
