linux-mmc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lee Jones <lee.jones@linaro.org>
To: Roger <rogerable@realtek.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>,
	Alex Dubov <oakad@yahoo.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	"driverdev-devel@linuxdriverproject.org"
	<driverdev-devel@linuxdriverproject.org>,
	"linux-mmc@vger.kernel.org" <linux-mmc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Wei_wang <wei_wang@realsil.com.cn>, Chris Ball <cjb@laptop.org>,
	Dan Carpenter <dan.carpenter@oracle.com>,
	Maxim Levitsky <maximlevitsky@gmail.com>
Subject: Re: [PATCH 1/3] mfd: Add realtek USB card reader driver
Date: Thu, 16 Jan 2014 09:35:06 +0000	[thread overview]
Message-ID: <20140116093506.GI11820@lee--X1> (raw)
In-Reply-To: <52D79E31.6000300@realtek.com>

> >>+static int rtsx_usb_bulk_transfer_sglist(struct rtsx_ucr *ucr,
> >>+             unsigned int pipe, struct scatterlist *sg, int num_sg,
> >>+             unsigned int length, unsigned int *act_len, int timeout)
> >>+{
> >>+     int ret;
> >>+
> >>+     dev_dbg(&ucr->pusb_intf->dev, "%s: xfer %u bytes, %d entries\n",
> >>+                     __func__, length, num_sg);
> >>+     ret = usb_sg_init(&ucr->current_sg, ucr->pusb_dev, pipe, 0,
> >>+                     sg, num_sg, length, GFP_NOIO);
> >>+     if (ret)
> >>+             return ret;
> >>+
> >>+     ucr->sg_timer.expires = jiffies + msecs_to_jiffies(timeout);
> >>+     add_timer(&ucr->sg_timer);
> >>+     usb_sg_wait(&ucr->current_sg);
> >>+     del_timer(&ucr->sg_timer);
> >>+
> >>+     if (act_len)
> >>+             *act_len = ucr->current_sg.bytes;
> >>+
> >>+     return ucr->current_sg.status;
> >>+}
> >
> >Code looks fine, but shouldn't this live in a USB driver?
> >
> We have studied drivers in usb/storage, the place that most likely
> to put the driver. All of them are for STANDARD usb mass storage
> class(something like USB_CLASS_MASS_STORAGE). But this is not the
> same case. This driver is for our vendor-class device with
> completely different protocol. It is really an USB interfaced flash
> card command converter(or channel) device rather than a real
> storage. It also has two derived modules(rtsx_usb_sdmmc,
> rtsx_usb_memstick) for other two subsystems.
> 
> We also have another driver: rtsx_pcr.c resident in mfd/ for similar
> devices but of PCIe interface. It is nature for us to choose the
> same place for this variant.

Very well, as long as it truly does not fit in drivers/usb. It would
be good to have one of the USB folk give the nod though.

> >>+     }
> >>+
> >>+     /* set USB interface data */
> >>+     usb_set_intfdata(intf, ucr);
> >>+
> >>+     ucr->vendor_id = id->idVendor;
> >>+     ucr->product_id = id->idProduct;
> >>+     ucr->cmd_buf = ucr->rsp_buf = ucr->iobuf;
> >>+
> >>+     mutex_init(&ucr->dev_mutex);
> >>+
> >>+     ucr->pusb_intf = intf;
> >>+
> >>+     /* initialize */
> >>+     ret = rtsx_usb_init_chip(ucr);
> >>+     if (ret)
> >>+             goto out_init_fail;
> >>+
> >>+     for (i = 0; i < ARRAY_SIZE(rtsx_usb_cells); i++) {
> >>+             rtsx_usb_cells[i].platform_data = &ucr;
> >
> >You've already put this in your drvdata (or ntfdata, as it's called
> >here). Why do you also need it in platform_data?
> 
> Derived modules rtsx_usb_sdmmc and rtsx_usb_memstick will retrieve
> this from platform_data. They will not be aware of usb interface
> struct.

They don't need to. If the MMC or Memstick subsystems do not have
their own helpers you can just use something like:

  struct rtsx_ucr *ucr = dev_get_drvdata(pdev->dev.parent);

Naturally this is untested code and might not work off the bat, but it
does give you some idea of what you can do without iterating through
and populating each sub-device's platform data.

> >>+#define DRV_NAME_RTSX_USB            "rtsx_usb"
> >>+#define DRV_NAME_RTSX_USB_SDMMC              "rtsx_usb_sdmmc"
> >>+#define DRV_NAME_RTSX_USB_MS         "rtsx_usb_ms"
> >
> >Can you just put the names in the correct places please?
> >
> Do you mean just remove these definitions and fill the string
> directly at the using place?

I do.

I find these types of defines unhelpful and somewhat obfuscating.

-- 
Lee Jones
Linaro STMicroelectronics Landing Team Lead
Linaro.org │ Open source software for ARM SoCs
Follow Linaro: Facebook | Twitter | Blog
_______________________________________________
devel mailing list
devel@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel

  reply	other threads:[~2014-01-16  9:35 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-14  7:47 [PATCH v2 0/3] Add modules for realtek USB card reader rogerable
2014-01-14  7:47 ` [PATCH 1/3] mfd: Add realtek USB card reader driver rogerable
2014-01-14 13:04   ` Lee Jones
2014-01-14 13:46     ` Dan Carpenter
2014-01-14 13:55       ` Dan Carpenter
2014-01-14 14:15       ` Lee Jones
2014-01-16  8:54     ` Roger
2014-01-16  9:35       ` Lee Jones [this message]
2014-01-20  8:55         ` Roger
2014-01-20 21:18           ` Greg Kroah-Hartman
2014-01-14 15:20   ` Greg Kroah-Hartman
2014-01-14  7:47 ` [PATCH 2/3] mmc: Add realtek USB sdmmc host driver rogerable
2014-01-14  7:47 ` [PATCH 3/3] memstick: Add realtek USB memstick " rogerable
2014-01-14  8:19   ` Dan Carpenter
  -- strict thread matches above, loose matches on Subject: below --
2013-12-23  9:52 [PATCH 0/3] Add modules for realtek USB card reader rogerable
2013-12-23  9:52 ` [PATCH 1/3] mfd: Add realtek USB card reader driver rogerable
2014-01-02  9:47   ` Dan Carpenter
2014-01-08  7:56     ` Roger Tseng
2014-01-08 13:03       ` Dan Carpenter
2014-01-10 12:42   ` Oliver Neukum

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=20140116093506.GI11820@lee--X1 \
    --to=lee.jones@linaro.org \
    --cc=cjb@laptop.org \
    --cc=dan.carpenter@oracle.com \
    --cc=driverdev-devel@linuxdriverproject.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=maximlevitsky@gmail.com \
    --cc=oakad@yahoo.com \
    --cc=rogerable@realtek.com \
    --cc=sameo@linux.intel.com \
    --cc=wei_wang@realsil.com.cn \
    /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).