summaryrefslogtreecommitdiffstats
path: root/drivers/media/tuners/xc5000.c (follow)
Commit message (Collapse)AuthorAgeFilesLines
* [media] xc5000: Don't spin waiting for analog lockDevin Heitmueller2017-06-061-24/+2
| | | | | | | | | | | | | | | | | | | | | The xc5000 driver should not be spinning waiting for an analog lock. The ioctl() should be returning immediately and the application is responsible for polling for lock status. This behavior isn't very visible in cases where you tune to a valid channel, since lock is usually achieved much faster than 400ms. However it is highly visible where doing things like changing video standards, which sends tuning request for a frequency that is almost never going to have an actual channel on it. Also fixup the return values to treat zero as success and an actual error code on error (to be consistent with other functions). Note this change has no practical effect at this time as none of the callers inspect the return value. Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
* [media] media drivers: annotate fall-throughMauro Carvalho Chehab2017-05-191-0/+1
| | | | | | | | | | | | | | | | | | | Avoid warnings like those: drivers/media/pci/ddbridge/ddbridge-core.c: In function 'dvb_input_detach': drivers/media/pci/ddbridge/ddbridge-core.c:787:6: warning: this statement may fall through [-Wimplicit-fallthrough=] if (input->fe) { ^ drivers/media/pci/ddbridge/ddbridge-core.c:792:2: note: here case 4: ^~~~ ... On several cases, it is just that gcc 7.1 is not capable of understanding the comment, but on other places, we need an annotation. Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
* [media] xc5000: fix spelling mistake: "calibration"Colin Ian King2017-04-191-2/+1
| | | | | | | | | Trivial fix to spelling mistake on calibration, make Self lowercase and re-join multiple lined printk since checkpatch allows this coding style. Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
* lib/vsprintf.c: remove %Z supportAlexey Dobriyan2017-02-281-1/+1
| | | | | | | | | | | | | | | | | | Now that %z is standartised in C99 there is no reason to support %Z. Unlike %L it doesn't even make format strings smaller. Use BUILD_BUG_ON in a couple ATM drivers. In case anyone didn't notice lib/vsprintf.o is about half of SLUB which is in my opinion is quite an achievement. Hopefully this patch inspires someone else to trim vsprintf.c more. Link: http://lkml.kernel.org/r/20170103230126.GA30170@avx2 Signed-off-by: Alexey Dobriyan <adobriyan@gmail.com> Cc: Andy Shevchenko <andy.shevchenko@gmail.com> Cc: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* [media] media: Drop FSF's postal address from the source code filesSakari Ailus2017-01-271-4/+0
| | | | | | | | | | | | | | | | | | | | | Drop the FSF's postal address from the source code files that typically contain mostly the license text. Of the 628 removed instances, 578 are outdated. The patch has been created with the following command without manual edits: git grep -l "675 Mass Ave\|59 Temple Place\|51 Franklin St" -- \ drivers/media/ include/media|while read i; do i=$i perl -e ' open(F,"< $ENV{i}"); $a=join("", <F>); $a =~ s/[ \t]*\*\n.*You should.*\n.*along with.*\n.*(\n.*USA.*$)?\n//m && $a =~ s/(^.*)Or, (point your browser to) /$1To obtain the license, $2\n$1/m; close(F); open(F, "> $ENV{i}"); print F $a; close(F);'; done Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
* [media] dvb_frontend: tuner_ops.release returns voidMax Kellermann2016-11-181-3/+1
| | | | | | | | | It is not clear what this return value means. All implemenations return 0, and the one caller ignores the value. Let's remove this useless return value completely. Signed-off-by: Max Kellermann <max.kellermann@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
* [media] xc5000: fix memory corruption when unplugging deviceDevin Heitmueller2015-04-081-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | This patch addresses a regression introduced in the following patch: commit 5264a522a597032c009f9143686ebf0fa4e244fb Author: Shuah Khan <shuahkh@osg.samsung.com> [media] media: tuner xc5000 - release firmwware from xc5000_release() The "priv" struct is actually reference counted, so the xc5000_release() function gets called multiple times for hybrid devices. Because release_firmware() was always being called, it would work fine as expected on the first call but then the second call would corrupt aribtrary memory. Set the pointer to NULL after releasing so that we don't call release_firmware() twice. This problem was detected in the HVR-950q where plugging/unplugging the device multiple times would intermittently show panics in completely unrelated areas of the kernel. Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Cc: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] tuners: remove uneeded checks before release_firmware()Markus Elfring2014-12-041-2/+1
| | | | | | | | | | The release_firmware() function tests whether its argument is NULL and then returns immediately. Thus the test around the call is not needed. This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] xc5000: add IF output level controlRichard Vollkommer2014-11-031-1/+13
| | | | | | | | | | | | | | | Adds control of the IF output level to the xc5000 tuner configuration structure. Increases the IF level to the demodulator to fix failure to lock and picture breakup issues (with the au8522 demodulator, in the case of the Hauppauge HVR950Q). This patch works with all XC5000 firmware versions. Signed-off-by: Richard Vollkommer <linux@hauppauge.com> Signed-off-by: Michael Ira Krufky <mkrufky@linuxtv.org> Reviewed-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] xc5000: use after free in release()Dan Carpenter2014-10-241-1/+1
| | | | | | | | | | | | I moved the call to hybrid_tuner_release_state(priv) after "priv->firmware" dereference. Fixes: 5264a522a597 ('[media] media: tuner xc5000 - release firmwware from xc5000_release()') Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Reviewed-by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] media: tuner xc5000 - try to avoid firmware load in resume pathShuah Khan2014-09-231-1/+15
| | | | | | | | | | | | | xc5000 doesn't load firmware at attach time instead loads it when it needs to set and change configuration from its init, frequency, digital and analog mode set interffaces. As a result, when system is suspended before firmware is loaded, firmware load can be avoided during resume. Loading formware in this scenario results in slowpath warnings during resume as it won't be in the suspend firmware cache. Signed-off-by: Shuah Khan <shuah.kh@samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] media: tuner xc5000 - release firmwware from xc5000_release()Shuah Khan2014-09-231-14/+20
| | | | | | | | | | | xc5000 releases firmware right after loading it. Change it to save the firmware and release it from xc5000_release(). This helps avoid fecthing firmware when forced firmware load requests come in to change analog tv frequence and when firmware needs to be reloaded after suspend and resume. Signed-off-by: Shuah Khan <shuahkh@osg.samsung.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
* [media] xc5000: be sure that the firmware is there before set paramsMauro Carvalho Chehab2014-08-211-5/+5
| | | | | | | | | | Now that xc5000_set_params() is also called during resume, move the code that checks for the firmware to happen there. This way, the firmware will be loaded either for analog or digital TV when .resume callback is called. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: better name the functionsMauro Carvalho Chehab2014-08-211-5/+5
| | | | | | | | | | | xc5000_set_params() is a bad name for a function that handles only digital TV. Rename it to xc5000_set_digital_params(), and proper name the generic function that works for both digital and analog. No functional changes. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: add a resume functionMauro Carvalho Chehab2014-08-211-0/+1
| | | | | | | If a device suspends/hibertates with a station tuned, restore the tuner station at resume. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: Split config and set code for analog/radioMauro Carvalho Chehab2014-08-211-25/+56
| | | | | | | | | | | As we need a function that reapply the last tuned radio, in order to do resume, split the code that validates and updates the internal priv struct from the ones that actually set radio and TV. A latter patch will add support for resume. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] au0828: move the code that sets DTV on a separate functionMauro Carvalho Chehab2014-08-211-34/+45
| | | | | | | | | | As we'll be adding a code to resume tuner operation, we need to move the code that actually sets DTV on a separate function, to be called by the resume code. No functional changes, just code got moved. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: fix xc5000 suspendMauro Carvalho Chehab2014-08-211-0/+19
| | | | | | | | | | After xc5000 stops working, it waits for 5 seconds, waiting for a new usage. Only after that it goes to low power mode. If a suspend event happens before that, a work queue will remain active, with causes suspend to crash. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: always write at dmesg when it fails to upload firmwareMauro Carvalho Chehab2014-07-301-13/+27
| | | | | | | | On a normal condition, no errors should happen at xc5000 firmware upload is done. So, print at the dmesg if something bad happens. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: optimize firmware retry logicMauro Carvalho Chehab2014-07-301-35/+38
| | | | | | | | | | | | Currently, firmware retry logic keeps reading from FS every time during the retry logic. This is not needed. Instead, only release the firmware read after success. While here, make the non-debug messages less verbose, as it only matters to the user if the firmware was successfully loaded, or if some error happened. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: Don't try forever to load the firmwareMauro Carvalho Chehab2014-07-301-19/+21
| | | | | | | | | | With the current code, if something bad happens during the firmware init process, the device will keep trying forever, and removing it would cause an OOPS. Instead, try only a limited amount of time. If not, fails. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: Fix get_frequency()Mauro Carvalho Chehab2014-07-231-10/+12
| | | | | | | | | The programmed frequency on xc5000 is not the middle frequency, but the initial frequency on the bandwidth range. However, the DVB API works with the middle frequency. Cc: stable@vger.kernel.org Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: remove unnecessary break after gotoFabian Frederick2014-07-231-1/+0
| | | | | Signed-off-by: Fabian Frederick <fabf@skynet.be> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: delay tuner sleep to 5 secondsMauro Carvalho Chehab2014-05-251-9/+34
| | | | | | | | | | Some drivers, like au0828 are very sensitive to tuner sleep and may break if the sleep happens too fast. Also, by keeping the tuner alive for a while could speedup tuning process during channel scan. So, change the logic to delay the actual sleep to 5 seconds after its command. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: Don't use whitespace before tabsMauro Carvalho Chehab2014-05-251-5/+5
| | | | | | | | | | | | | | | | | | | WARNING: please, no space before tabs +#define XC_PRODUCT_ID_FW_LOADED ^I0x1388$ WARNING: please, no space before tabs +#define DK_SECAM_A2LDK3 ^I13$ WARNING: please, no space before tabs +#define DK_SECAM_A2MONO ^I14$ WARNING: please, no space before tabs +#define FM_RADIO_INPUT2 ^I21$ WARNING: please, no space before tabs +#define FM_RADIO_INPUT1 ^I22$ Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: fix CamelCaseMauro Carvalho Chehab2014-05-251-69/+69
| | | | | | | | There are several CamelCase non-codingstyle compliances here. Fix them. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: Don't wrap msleep()Mauro Carvalho Chehab2014-05-251-10/+5
| | | | | | | | There's absolutely no reason to wrap msleep() call here. Just rename all occurences of xc_wait() with msleep() and remove the wrapper function. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: get rid of positive error codesMauro Carvalho Chehab2014-05-251-56/+48
| | | | | | | Errors should also be negative and should follow the Kernel standards. Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
* [media] xc5000: fix incorrect debug printnkDmitri Belimov2013-03-211-7/+13
| | | | | | | | | | | | | | | | I found very small bug in xc5000 source. When set option debug=1 and listen a radio we see in dmesg xc5000: xc_SetTVStandard() Standard = M/N-NTSC/PAL-BTSC at all times. However, it should be, instead "FM Radio-INPUT1_MONO". That happens because xc5000_set_radio_freq() gets the correct value for VideoMode and AudioMode for radio and calls xc_SetTVStandard() where name of standard comes from the incorrect place priv->video_standard. This incorrect debug message makes debugging a little difficult. Signed-off-by: Dmitry Belimov <d.belimov@gmail.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
* [media] tuners/xc5000: fix MODE_AIR in xc5000_set_params()Dan Carpenter2013-02-061-0/+1
| | | | | | | | There is a missing break so we use XC_RF_MODE_CABLE instead of XC_RF_MODE_AIR. Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
* [media] common: move media/common/tuners to media/tunersMauro Carvalho Chehab2012-08-141-0/+1366
Move the tuners one level up, as the "common" directory will be used by drivers that are shared between more than one driver. Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>