All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roger <rogerable@realtek.com>
To: Oliver Neukum <oneukum@suse.de>
Cc: Ulf Hansson <ulf.hansson@linaro.org>,
	Maxim Levitsky <maximlevitsky@gmail.com>,
	Alex Dubov <oakad@yahoo.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	driverdev-devel@linuxdriverproject.org,
	linux-mmc@vger.kernel.org, Chris Ball <chris@printf.net>,
	linux-kernel@vger.kernel.org, wei_wang@realsil.com.cn,
	Andrew Morton <akpm@linux-foundation.org>,
	Lee Jones <lee.jones@linaro.org>,
	Dan Carpenter <dan.carpenter@oracle.com>,
	Samuel Ortiz <sameo@linux.intel.com>
Subject: Re: [PATCH v5 1/3] mfd: Add realtek USB card reader driver
Date: Fri, 28 Mar 2014 11:33:04 +0800	[thread overview]
Message-ID: <5334ED70.6050309@realtek.com> (raw)
In-Reply-To: <201403280231.s2S2VP8X017745@rtits1.realtek.com>

On 03/26/2014 10:36 PM, Oliver Neukum wrote:
> On Tue, 2014-03-25 at 18:44 +0800, rogerable@realtek.com wrote:
>> From: Roger Tseng <rogerable@realtek.com>
>

>> +static int rtsx_usb_probe(struct usb_interface *intf,
>> +			 const struct usb_device_id *id)
>> +{
>> +	struct usb_device *usb_dev = interface_to_usbdev(intf);
>> +	struct rtsx_ucr *ucr;
>> +	int ret;
>> +
>> +	dev_dbg(&intf->dev,
>> +		": Realtek USB Card Reader found at bus %03d address %03d\n",
>> +		 usb_dev->bus->busnum, usb_dev->devnum);
>> +
>> +	ucr = devm_kzalloc(&intf->dev, sizeof(*ucr), GFP_KERNEL);
>> +	if (!ucr)
>> +		return -ENOMEM;
>> +
>> +	ucr->pusb_dev = usb_dev;
>> +
>> +	ucr->iobuf = usb_alloc_coherent(ucr->pusb_dev, IOBUF_SIZE,
>> +			GFP_KERNEL, &ucr->iobuf_dma);
>> +	if (!ucr->iobuf)
>> +		return -ENOMEM;
>> +
>> +	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;
>> +
>> +	ret = mfd_add_devices(&intf->dev, usb_dev->devnum, rtsx_usb_cells,
>> +			ARRAY_SIZE(rtsx_usb_cells), NULL, 0, NULL);
>
> Race condition. What prevents the mfd layer from using this device
> before you've finished the next steps of the initialisation?
>
OK, I'll put the timer init before mfd_add_devices.
>> +	if (ret)
>> +		goto out_init_fail;
>> +
>> +	/* initialize USB SG transfer timer */
>> +	init_timer(&ucr->sg_timer);
>> +	setup_timer(&ucr->sg_timer, rtsx_usb_sg_timed_out, (unsigned long) ucr);
>> +#ifdef CONFIG_PM
>> +	intf->needs_remote_wakeup = 1;
>
> Why?
Our reader supports remote wake-up from card slot event(insertion, 
removal). It should be enabled to let the driver be able to detect the 
newly inserted card.

>> +	usb_enable_autosuspend(usb_dev);
>> +#endif
>> +
>> +	return 0;
>> +
>> +out_init_fail:
>> +	usb_free_coherent(ucr->pusb_dev, IOBUF_SIZE, ucr->iobuf,
>> +			ucr->iobuf_dma);
>> +	return ret;
>> +}
>> +
...
>> +static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message)
>> +{
>> +	struct rtsx_ucr *ucr =
>> +		(struct rtsx_ucr *)usb_get_intfdata(intf);
>> +
>> +	dev_dbg(&intf->dev, "%s called with pm message 0x%04u\n",
>> +			__func__, message.event);
>> +
>> +	mutex_lock(&ucr->dev_mutex);
>> +	rtsx_usb_turn_off_led(ucr);
>
> When is this turned on again?
>

The LED is not in a permanent cut-off state after here. It is called to 
guarantee the LED is off during suspend to save more power. It could be 
lit up in the card host drivers(e.g. rtsx_usb_sdmmc.c) anytime whenever 
necessary.

This has been asked may times. I'm considering putting some comment in 
next revision.

Best regards,
Roger Tseng

WARNING: multiple messages have this Message-ID (diff)
From: Roger <rogerable@realtek.com>
To: Oliver Neukum <oneukum@suse.de>
Cc: Samuel Ortiz <sameo@linux.intel.com>,
	Lee Jones <lee.jones@linaro.org>, Chris Ball <chris@printf.net>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Maxim Levitsky <maximlevitsky@gmail.com>,
	Alex Dubov <oakad@yahoo.com>,
	Dan Carpenter <dan.carpenter@oracle.com>,
	Ulf Hansson <ulf.hansson@linaro.org>,
	Andrew Morton <akpm@linux-foundation.org>,
	<linux-kernel@vger.kernel.org>, <linux-mmc@vger.kernel.org>,
	<driverdev-devel@linuxdriverproject.org>,
	<wei_wang@realsil.com.cn>, <micky_ching@realsil.com.cn>
Subject: Re: [PATCH v5 1/3] mfd: Add realtek USB card reader driver
Date: Fri, 28 Mar 2014 11:33:04 +0800	[thread overview]
Message-ID: <5334ED70.6050309@realtek.com> (raw)
In-Reply-To: <201403280231.s2S2VP8X017745@rtits1.realtek.com>

On 03/26/2014 10:36 PM, Oliver Neukum wrote:
> On Tue, 2014-03-25 at 18:44 +0800, rogerable@realtek.com wrote:
>> From: Roger Tseng <rogerable@realtek.com>
>

>> +static int rtsx_usb_probe(struct usb_interface *intf,
>> +			 const struct usb_device_id *id)
>> +{
>> +	struct usb_device *usb_dev = interface_to_usbdev(intf);
>> +	struct rtsx_ucr *ucr;
>> +	int ret;
>> +
>> +	dev_dbg(&intf->dev,
>> +		": Realtek USB Card Reader found at bus %03d address %03d\n",
>> +		 usb_dev->bus->busnum, usb_dev->devnum);
>> +
>> +	ucr = devm_kzalloc(&intf->dev, sizeof(*ucr), GFP_KERNEL);
>> +	if (!ucr)
>> +		return -ENOMEM;
>> +
>> +	ucr->pusb_dev = usb_dev;
>> +
>> +	ucr->iobuf = usb_alloc_coherent(ucr->pusb_dev, IOBUF_SIZE,
>> +			GFP_KERNEL, &ucr->iobuf_dma);
>> +	if (!ucr->iobuf)
>> +		return -ENOMEM;
>> +
>> +	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;
>> +
>> +	ret = mfd_add_devices(&intf->dev, usb_dev->devnum, rtsx_usb_cells,
>> +			ARRAY_SIZE(rtsx_usb_cells), NULL, 0, NULL);
>
> Race condition. What prevents the mfd layer from using this device
> before you've finished the next steps of the initialisation?
>
OK, I'll put the timer init before mfd_add_devices.
>> +	if (ret)
>> +		goto out_init_fail;
>> +
>> +	/* initialize USB SG transfer timer */
>> +	init_timer(&ucr->sg_timer);
>> +	setup_timer(&ucr->sg_timer, rtsx_usb_sg_timed_out, (unsigned long) ucr);
>> +#ifdef CONFIG_PM
>> +	intf->needs_remote_wakeup = 1;
>
> Why?
Our reader supports remote wake-up from card slot event(insertion, 
removal). It should be enabled to let the driver be able to detect the 
newly inserted card.

>> +	usb_enable_autosuspend(usb_dev);
>> +#endif
>> +
>> +	return 0;
>> +
>> +out_init_fail:
>> +	usb_free_coherent(ucr->pusb_dev, IOBUF_SIZE, ucr->iobuf,
>> +			ucr->iobuf_dma);
>> +	return ret;
>> +}
>> +
...
>> +static int rtsx_usb_suspend(struct usb_interface *intf, pm_message_t message)
>> +{
>> +	struct rtsx_ucr *ucr =
>> +		(struct rtsx_ucr *)usb_get_intfdata(intf);
>> +
>> +	dev_dbg(&intf->dev, "%s called with pm message 0x%04u\n",
>> +			__func__, message.event);
>> +
>> +	mutex_lock(&ucr->dev_mutex);
>> +	rtsx_usb_turn_off_led(ucr);
>
> When is this turned on again?
>

The LED is not in a permanent cut-off state after here. It is called to 
guarantee the LED is off during suspend to save more power. It could be 
lit up in the card host drivers(e.g. rtsx_usb_sdmmc.c) anytime whenever 
necessary.

This has been asked may times. I'm considering putting some comment in 
next revision.

Best regards,
Roger Tseng

  parent reply	other threads:[~2014-03-28  3:33 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-25 10:44 [PATCH v5 0/3] Add modules for realtek USB card reader rogerable
2014-03-25 10:44 ` rogerable
2014-03-25 10:44 ` [PATCH v5 1/3] mfd: Add realtek USB card reader driver rogerable
2014-03-25 10:44   ` rogerable
2014-03-26 14:36   ` Oliver Neukum
     [not found]   ` <201403280231.s2S2VP8X017745@rtits1.realtek.com>
2014-03-28  3:33     ` Roger [this message]
2014-03-28  3:33       ` Roger
2014-03-28  7:59       ` Lee Jones
2014-03-28  8:31       ` Oliver Neukum
2014-03-28  8:31         ` Oliver Neukum
2014-03-28  8:57         ` Roger
2014-03-28  8:57           ` Roger
2014-03-25 10:44 ` [PATCH v5 2/3] mmc: Add realtek USB sdmmc host driver rogerable
2014-03-25 10:44   ` rogerable
2014-03-25 10:44 ` [PATCH v5 3/3] memstick: Add realtek USB memstick " rogerable
2014-03-25 10:44   ` rogerable
2014-04-01  3:20   ` Roger
2014-04-01  3:20     ` Roger
2014-04-01 22:06     ` Andrew Morton
2014-04-01 22:06       ` Andrew Morton
2014-04-02 15:16       ` Lee Jones
2014-04-02 15:16         ` Lee Jones
2014-04-08  8:06         ` Roger
2014-04-08  8:06           ` Roger
2014-04-08 11:37           ` Lee Jones
2014-04-08 11:37             ` Lee Jones
2014-04-08 13:10             ` Roger
2014-04-08 13:10               ` Roger
2014-04-08 13:25               ` Dan Carpenter
2014-04-08 13:25                 ` Dan Carpenter

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=5334ED70.6050309@realtek.com \
    --to=rogerable@realtek.com \
    --cc=akpm@linux-foundation.org \
    --cc=chris@printf.net \
    --cc=dan.carpenter@oracle.com \
    --cc=driverdev-devel@linuxdriverproject.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=lee.jones@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mmc@vger.kernel.org \
    --cc=maximlevitsky@gmail.com \
    --cc=oakad@yahoo.com \
    --cc=oneukum@suse.de \
    --cc=sameo@linux.intel.com \
    --cc=ulf.hansson@linaro.org \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.