Thread (15 messages) 15 messages, 4 authors, 2016-03-02

RE: [RFC PATCH] drivers: ata: Read Rx water mark value from device-tree

From: Anurag Kumar Vulisha <hidden>
Date: 2016-02-23 15:30:05
Also in: linux-devicetree, lkml

Hi Arnd,
-----Original Message-----
From: Arnd Bergmann [mailto:arnd-r2nGTMty4D4@public.gmane.org]
Sent: Tuesday, February 23, 2016 3:51 PM
To: Anurag Kumar Vulisha
Cc: robh+dt-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org; pawel.moll-5wv7dgnIgG8@public.gmane.org; mark.rutland-5wv7dgnIgG8@public.gmane.org;
ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg@public.gmane.org; galak-sgV2jX0FEOL9JmXXK+q4OQ@public.gmane.org; tj-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org;
devicetree-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; linux-
ide-u79uwXL29TY76Z2rM5mHXA@public.gmane.org; Anirudha Sarangi; Srikanth Vemula; Punnaiah Choudary
Kalluri
Subject: Re: [RFC PATCH] drivers: ata: Read Rx water mark value from device-
tree

On Tuesday 23 February 2016 05:58:32 Anurag Kumar Vulisha wrote:
quoted
quoted
I don't know what is appropriate because I have no idea what
Rxwatermark is good for. Can you try describing why we can't just
set it to the correct value for everyone automatically?
This RX watermark level sets the minimum number of free locations
within the RX FIFO .When the rx fifo level crosses the programmed
watermark level ,sata controller  will transmit HOLDS to the device asking it
to wait. This happens when dma reads the rx fifo data slower than the device
is sending the data. Note that it can take some time for the HOLDs to get to
the other end and in the time there must be enough room in the FIFO to
absorb all data that could arrive from the device.
quoted
Currently we are using 0x40 for this value, which works fine with all
hardware designs  we are currently having. But hoping that this value
may vary for future silicon versions, I wanted to make this as a configurable
value. So for this reason I thought of moving it either to device-tree or
making it as a module_param() property.
quoted
Ok, so if this depends on the silicon version, your initial approach would be
better than the module_param.

I would probably make this dependent on the compatible string instead, and
have a table in the device driver that uses a specific value for each variant of
the device, but either way should be fine.

Having a separate property is most appropriate if for each hardware revision
there is exactly one ideal value, while a table in the driver makes more sense
if this takes a bit of tuning and the driver might choose to optimize it
differently based on other constraints, such as its own interrupt handler
implementation.
Since we are  currently having one value in common for all the hardware and also changing
the rx water mark does not require any changes other than vendor specific PTC register update ,
I think it would be better  to  use device tree property for that rx watermark value. Doing
this makes the updating of rx watermark value easy, if any changes required.

In future, if any silicon version rx water mark value doesn't work with the current versions,
then  I will do as you said by maintaining the table in device driver. But at present  I feel
that single rx watermark property in device tree would be enough, since it works with all the
hardware versions we have.

Thanks,
Anurag Kumar V
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help