From: Santiago Nunez-Corrales <snunez@ridgerun.com>
To: "Narnakaje, Snehaprabha" <nsnehaprabha@ti.com>
Cc: Kevin Hilman <khilman@deeprootsystems.com>,
"davinci-linux-open-source@linux.davincidsp.com"
<davinci-linux-open-source@linux.davincidsp.com>,
"todd.fischer@ridgerun.com" <todd.fischer@ridgerun.com>,
"linux-media@vger.kernel.org" <linux-media@vger.kernel.org>
Subject: Re: [PATCH 2/6 v5] Support for TVP7002 in dm365 board
Date: Tue, 27 Oct 2009 09:53:55 -0600 [thread overview]
Message-ID: <4AE71793.3090502@ridgerun.com> (raw)
In-Reply-To: <7A436F7769CA33409C6B44B358BFFF0C012ACE7054@dlee02.ent.ti.com>
Sneha,
So, if I got it right, have_tvp7002 is unnecessary since that
initialization is done via the CPLD interface. Therefore, all I need to
do is actually remove the logic for the device from board-dm365-evm.h.
Am I right? If so, should I also remove the logic for tvp5146?
Regards,
Narnakaje, Snehaprabha wrote:
> Santiago, Kevin,
>
>
>> -----Original Message-----
>> From: Kevin Hilman [mailto:khilman@deeprootsystems.com]
>> Sent: Monday, October 26, 2009 5:35 PM
>> To: santiago.nunez@ridgerun.com
>> Cc: Narnakaje, Snehaprabha; davinci-linux-open-
>> source@linux.davincidsp.com; todd.fischer@ridgerun.com; linux-
>> media@vger.kernel.org
>> Subject: Re: [PATCH 2/6 v5] Support for TVP7002 in dm365 board
>>
>> Santiago Nunez-Corrales <snunez@ridgerun.com> writes:
>>
>>
>>> Kevin Hilman wrote:
>>>
>>>> <santiago.nunez@ridgerun.com> writes:
>>>>
>>>>
>>>>
>>>>> From: Santiago Nunez-Corrales <santiago.nunez@ridgerun.com>
>>>>>
>>>>> This patch provides support for TVP7002 in architecture definitions
>>>>> within DM365.
>>>>>
>>>>> Signed-off-by: Santiago Nunez-Corrales <santiago.nunez@ridgerun.com>
>>>>> ---
>>>>> arch/arm/mach-davinci/board-dm365-evm.c | 170
>>>>>
>> ++++++++++++++++++++++++++++++-
>>
>>>>> 1 files changed, 166 insertions(+), 4 deletions(-)
>>>>>
>>>>> diff --git a/arch/arm/mach-davinci/board-dm365-evm.c b/arch/arm/mach-
>>>>>
>> davinci/board-dm365-evm.c
>>
>>>>> index a1d5e7d..6c544d3 100644
>>>>> --- a/arch/arm/mach-davinci/board-dm365-evm.c
>>>>> +++ b/arch/arm/mach-davinci/board-dm365-evm.c
>>>>> @@ -38,6 +38,11 @@
>>>>> #include <mach/common.h>
>>>>> #include <mach/mmc.h>
>>>>> #include <mach/nand.h>
>>>>> +#include <mach/gpio.h>
>>>>> +#include <linux/videodev2.h>
>>>>> +#include <media/tvp514x.h>
>>>>> +#include <media/tvp7002.h>
>>>>> +#include <media/davinci/videohd.h>
>>>>> static inline int have_imager(void)
>>>>> @@ -48,8 +53,11 @@ static inline int have_imager(void)
>>>>> static inline int have_tvp7002(void)
>>>>> {
>>>>> - /* REVISIT when it's supported, trigger via Kconfig */
>>>>> +#ifdef CONFIG_VIDEO_TVP7002
>>>>> + return 1;
>>>>> +#else
>>>>> return 0;
>>>>> +#endif
>>>>>
>>>>>
>>>> I've said this before, but I'll say it again. I don't like the
>>>> #ifdef-on-Kconfig-option here.
>>>>
>>>> Can you add a probe hook to the platform_data so that when the tvp7002
>>>> is found it can call pdata->probe() which could then set a flag
>>>> for use by have_tvp7002().
>>>>
>>>> This will have he same effect without the ifdef since if the driver
>>>> is not compiled in, its probe can never be triggered.
>>>>
>>>> Kevin
>>>>
>>>>
>>>>
>>> Kevin,
>>>
>>> I've been working on this particular implementation. This
>>> board-dm365-evm.c is specific to the board, therefore I don't still
>>> get the point of not having those values wired to the board file, but
>>> I know it'd be nice to have the CPLD configuration triggered upon
>>> TVP7002 detection. I see two options:
>>>
>> Having them in the board file is appropriate, what I object to is the
>> selection by Kconfig. Run-time detection is always preferred when
>> possible.
>>
>
> We have this CPLD init API - evm_init_cpld() called from the dm365_evm_init() function. The CPLD init API was trying to initialize the CPLD, based on the default configuration. I believe David Brownell had this placeholder for have_imager() and have_tvp7002() APIs since, we have different CPLD settings for the imager, tvp7002 and tvp5146 for the video input source.
>
>
>>> 1. Do the callback function inside pdata and initialize it at driver
>>> load time (tvp7002_probe). Set tvp5146 as default and override when
>>> driver loads (and restore when unloads).
>>>
>> This is the preferred option to me.
>>
>
> We can decide on the default video input source to be TVP5146. However we do not need a new callback function. We already have the VPFE .setup_input callback API dm365evm_setup_video_input() for the same purpose. The VPFE .setup_input API is called when each of the decoders (sub-devices) registered with VPFE capture driver. It is also called when the application decides on an input source and switches between the input sources.
>
> So, TVP5146 remains as the default video input source, only until VPFE probe is called, which registers the all decoders (sub-devices) defined in the VPFE platform data. This also means that the last decoder in the VPFE platform data remains active after boot-up. One can change the order in the VPFE platform data if a particular input source needs to remain active after boot-up. Note that application can always switch the input-source at run time.
>
> I quickly tried removing the have_imager() construct in the evm_init_cpld() and here is the output -
>
> Starting kernel ...
>
> Uncompressing Linux...............................................................................................
> ........................................ done, booting the kernel.
> Linux version 2.6.32-rc2-davinci1-dirty
> ...
> CPU: Testing write buffer coherency: ok
> DaVinci: 8 gpio irqs
> NET: Registered protocol family 16
> EVM: tvp5146 SD video input
> bio: create slab <bio-0> at 0
> SCSI subsystem initialized
> ...
> vpfe_init
> vpfe-capture: vpss clock vpss_master enabled
> vpfe-capture vpfe-capture: v4l2 device registered
> vpfe-capture vpfe-capture: video device registered
> EVM: switch to tvp5146 SD video input
> tvp514x 1-005d: tvp514x 1-005d decoder driver registered !!
> vpfe-capture vpfe-capture: v4l2 sub device tvp5146 registered
> EVM: switch to tvp7002 HD video input
> tvp7002 1-005c: tvp7002 1-005c decoder driver registered !!
> vpfe-capture vpfe-capture: v4l2 sub device tvp7002 registered
> ths7353 1-002e: chip found @ 0x5c (DaVinci I2C adapter)
> vpfe-capture vpfe-capture: v4l2 sub device ths7353 registered
> ...
>
> As you can see, the default video input source is TVP5146 and it has been video input source has been switched to TVP7002.
>
> Thanks
> Sneha
>
>
>>> 2. Add an entry to sysfs such that it can be user-configurable whether
>>> to activate one of the other regardless of whether tvp5156 or tvp7002
>>> are actually there (the only result would be fail to access the
>>> device).
>>>
>> Why do you need sysfs options for switching? Wouldn't building as
>> modules and loading/unloading the needed modules serve the same
>> purpose?
>>
>> Remeber that the 'probe' isn't going to be called until the
>> platform_driver
>> is registered, and that will (usually) happen at module load time.
>>
>>
>>> Sneha, do you have any suggestions on this one?
>>>
>> Kevin
>>
>>
>
>
--
Santiago Nunez-Corrales, Eng.
RidgeRun Engineering, LLC
Guayabos, Curridabat
San Jose, Costa Rica
+(506) 2271 1487
+(506) 8313 0536
http://www.ridgerun.com
next prev parent reply other threads:[~2009-10-27 15:53 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-15 14:43 [PATCH 2/6 v5] Support for TVP7002 in dm365 board santiago.nunez
2009-10-15 18:47 ` Kevin Hilman
2009-10-20 12:29 ` Nori, Sekhar
2009-10-20 16:37 ` Santiago Nunez-Corrales
2009-10-23 17:33 ` Santiago Nunez-Corrales
2009-10-26 21:35 ` Kevin Hilman
2009-10-27 15:42 ` Narnakaje, Snehaprabha
2009-10-27 15:53 ` Santiago Nunez-Corrales [this message]
2009-10-27 16:09 ` Narnakaje, Snehaprabha
2009-10-27 17:27 ` Santiago Nunez-Corrales
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=4AE71793.3090502@ridgerun.com \
--to=snunez@ridgerun.com \
--cc=davinci-linux-open-source@linux.davincidsp.com \
--cc=khilman@deeprootsystems.com \
--cc=linux-media@vger.kernel.org \
--cc=nsnehaprabha@ti.com \
--cc=santiago.nunez@ridgerun.com \
--cc=todd.fischer@ridgerun.com \
/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.