forked from Minki/linux
media fixes for v4.15-rc3
-----BEGIN PGP SIGNATURE----- iQIcBAABAgAGBQJaKrOpAAoJEAhfPr2O5OEVK5sP/iHWDJtRw/WWBYOqF9cGFl0o ssh1iXJAsOmLjaARMOkxQBPLwTvVMreux2fHow/mukrXB8BIR7OmflBaQRLM3lbW xm9G4yarXf7xgkxngisemQrJiweNyaNDX9P0BqJLV55Xhp+rO2Q6rutspho3xzoo Pmz7bgnt0FjBKz+0LWnKnzozdNinj2uhTdBOTgm9rUuUUGiAVTAQSNUq2e5Gzw3m DhO4UPOJDRmnZ6Rqldq2pD2wzmRfbVonirz7IEh7j2opcAoCM2TnmM+Z9C5zjlUj XVFagiR+XG8lsh2zvHdweter4X9DqLBlMbBDVAQ+vH+xhBuz63Yqq1pSIvXA342U rs1X182FSyE+pOxipuae94csHkyzlb9tmzoiUoItU+QXi8Wlg8pLH6GFQe/72t/g HpcXMBq2lflc2KDstx+QGs/G+1EYtz64vUXZ4pvuIitrhdbd5ulLh7Y7nb7qfEym WEHpaJwxh4MZh6RzB2tq+Tvy0/sD1krNjPTXtf2CuTdFNUuvk8QenRW1q2YVA06L UOTxRpfPYUPwhGKOoKb2IJ5g1xoztoqMaafdsUJ16H7fcuVtE9xQayVCVhaBuo08 4g7SFCb7MhNLFG1Su291u9PKYlvGhCJaDPKE/6E+IM6szxt7h/kveYsdb05yWOoB di+cIWZkCRUzbO7fxz4J =xoHW -----END PGP SIGNATURE----- Merge tag 'media/v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media Pull media fixes from Mauro Carvalho Chehab: "A series of fixes for the media subsytem: - The largest amount of fixes in this series is with regards to comments that aren't kernel-doc, but start with "/**". A new check added for 4.15 makes it to produce a *huge* amount of new warnings (I'm compiling here with W=1). Most of the patches in this series fix those. No code changes - just comment changes at the source files - rc: some fixed in order to better handle RC repetition codes - v4l-async: use the v4l2_dev from the root notifier when matching sub-devices - v4l2-fwnode: Check subdev count after checking port - ov 13858 and et8ek8: compilation fix with randconfigs - usbtv: a trivial new USB ID addition - dibusb-common: don't do DMA on stack on firmware load - imx274: Fix error handling, add MAINTAINERS entry - sir_ir: detect presence of port" * tag 'media/v4.15-2' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (50 commits) media: imx274: Fix error handling, add MAINTAINERS entry media: v4l: async: use the v4l2_dev from the root notifier when matching sub-devices media: v4l2-fwnode: Check subdev count after checking port media: et8ek8: select V4L2_FWNODE media: ov13858: Select V4L2_FWNODE media: rc: partial revert of "media: rc: per-protocol repeat period" media: dvb: i2c transfers over usb cannot be done from stack media: dvb-frontends: complete kernel-doc markups media: docs: add documentation for frontend attach info media: dvb_frontends: fix kernel-doc macros media: drivers: remove "/**" from non-kernel-doc comments media: lm3560: add a missing kernel-doc parameter media: rcar_jpu: fix two kernel-doc markups media: vsp1: add a missing kernel-doc parameter media: soc_camera: fix a kernel-doc markup media: mt2063: fix some kernel-doc warnings media: radio-wl1273: fix a parameter name at kernel-doc macro media: s3c-camif: add missing description at s3c_camif_find_format() media: mtk-vpu: add description for wdt fields at struct mtk_vpu media: vdec: fix some kernel-doc warnings ...
This commit is contained in:
commit
77071bc6c4
30
Documentation/media/dvb-drivers/frontends.rst
Normal file
30
Documentation/media/dvb-drivers/frontends.rst
Normal file
@ -0,0 +1,30 @@
|
||||
****************
|
||||
Frontend drivers
|
||||
****************
|
||||
|
||||
Frontend attach headers
|
||||
***********************
|
||||
|
||||
.. Keep it on alphabetic order
|
||||
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/a8293.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/af9013.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/ascot2e.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/cxd2820r.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/drxk.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/dvb-pll.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/helene.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/horus3a.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/ix2505v.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/m88ds3103.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/mb86a20s.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/mn88472.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/rtl2830.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/rtl2832.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/rtl2832_sdr.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/stb6000.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/tda10071.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/tda826x.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/zd1301_demod.h
|
||||
.. kernel-doc:: drivers/media/dvb-frontends/zl10036.h
|
||||
|
@ -41,4 +41,5 @@ For more details see the file COPYING in the source distribution of Linux.
|
||||
technisat
|
||||
ttusb-dec
|
||||
udev
|
||||
frontends
|
||||
contributors
|
||||
|
@ -12643,6 +12643,14 @@ S: Maintained
|
||||
F: drivers/ssb/
|
||||
F: include/linux/ssb/
|
||||
|
||||
SONY IMX274 SENSOR DRIVER
|
||||
M: Leon Luo <leonl@leopardimaging.com>
|
||||
L: linux-media@vger.kernel.org
|
||||
T: git git://linuxtv.org/media_tree.git
|
||||
S: Maintained
|
||||
F: drivers/media/i2c/imx274.c
|
||||
F: Documentation/devicetree/bindings/media/i2c/imx274.txt
|
||||
|
||||
SONY MEMORYSTICK CARD SUPPORT
|
||||
M: Alex Dubov <oakad@yahoo.com>
|
||||
W: http://tifmxx.berlios.de/
|
||||
|
@ -521,13 +521,13 @@ static void list_add_locked(struct list_head *new, struct list_head *head,
|
||||
spin_unlock_irqrestore(lock, flags);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* register a client callback that called when device plugged in/unplugged
|
||||
* NOTE: if devices exist callback is called immediately for each device
|
||||
*
|
||||
* @param hotplug callback
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
int smscore_register_hotplug(hotplug_t hotplug)
|
||||
{
|
||||
@ -562,7 +562,7 @@ int smscore_register_hotplug(hotplug_t hotplug)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smscore_register_hotplug);
|
||||
|
||||
/**
|
||||
/*
|
||||
* unregister a client callback that called when device plugged in/unplugged
|
||||
*
|
||||
* @param hotplug callback
|
||||
@ -636,7 +636,7 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer,
|
||||
return cb;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* creates coredev object for a device, prepares buffers,
|
||||
* creates buffer mappings, notifies registered hotplugs about new device.
|
||||
*
|
||||
@ -644,7 +644,7 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer,
|
||||
* and handlers
|
||||
* @param coredev pointer to a value that receives created coredev object
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
int smscore_register_device(struct smsdevice_params_t *params,
|
||||
struct smscore_device_t **coredev,
|
||||
@ -764,10 +764,10 @@ static int smscore_sendrequest_and_wait(struct smscore_device_t *coredev,
|
||||
0 : -ETIME;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Starts & enables IR operations
|
||||
*
|
||||
* @return 0 on success, < 0 on error.
|
||||
* return: 0 on success, < 0 on error.
|
||||
*/
|
||||
static int smscore_init_ir(struct smscore_device_t *coredev)
|
||||
{
|
||||
@ -812,13 +812,13 @@ static int smscore_init_ir(struct smscore_device_t *coredev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* configures device features according to board configuration structure.
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
* smscore_register_device
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
static int smscore_configure_board(struct smscore_device_t *coredev)
|
||||
{
|
||||
@ -861,13 +861,13 @@ static int smscore_configure_board(struct smscore_device_t *coredev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* sets initial device mode and notifies client hotplugs that device is ready
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
* smscore_register_device
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
int smscore_start_device(struct smscore_device_t *coredev)
|
||||
{
|
||||
@ -1087,7 +1087,7 @@ static char *smscore_fw_lkup[][DEVICE_MODE_MAX] = {
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* get firmware file name from one of the two mechanisms : sms_boards or
|
||||
* smscore_fw_lkup.
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
@ -1096,7 +1096,7 @@ static char *smscore_fw_lkup[][DEVICE_MODE_MAX] = {
|
||||
* @param lookup if 1, always get the fw filename from smscore_fw_lkup
|
||||
* table. if 0, try first to get from sms_boards
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
static char *smscore_get_fw_filename(struct smscore_device_t *coredev,
|
||||
int mode)
|
||||
@ -1125,7 +1125,7 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev,
|
||||
return fw[mode];
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* loads specified firmware into a buffer and calls device loadfirmware_handler
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
@ -1133,7 +1133,7 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev,
|
||||
* @param filename null-terminated string specifies firmware file name
|
||||
* @param loadfirmware_handler device handler that loads firmware
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
static int smscore_load_firmware_from_file(struct smscore_device_t *coredev,
|
||||
int mode,
|
||||
@ -1182,14 +1182,14 @@ static int smscore_load_firmware_from_file(struct smscore_device_t *coredev,
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* notifies all clients registered with the device, notifies hotplugs,
|
||||
* frees all buffers and coredev object
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
* smscore_register_device
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
void smscore_unregister_device(struct smscore_device_t *coredev)
|
||||
{
|
||||
@ -1282,14 +1282,14 @@ static int smscore_detect_mode(struct smscore_device_t *coredev)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* send init device request and wait for response
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
* smscore_register_device
|
||||
* @param mode requested mode of operation
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
static int smscore_init_device(struct smscore_device_t *coredev, int mode)
|
||||
{
|
||||
@ -1315,7 +1315,7 @@ static int smscore_init_device(struct smscore_device_t *coredev, int mode)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* calls device handler to change mode of operation
|
||||
* NOTE: stellar/usb may disconnect when changing mode
|
||||
*
|
||||
@ -1323,7 +1323,7 @@ static int smscore_init_device(struct smscore_device_t *coredev, int mode)
|
||||
* smscore_register_device
|
||||
* @param mode requested mode of operation
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
int smscore_set_device_mode(struct smscore_device_t *coredev, int mode)
|
||||
{
|
||||
@ -1411,13 +1411,13 @@ int smscore_set_device_mode(struct smscore_device_t *coredev, int mode)
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* calls device handler to get current mode of operation
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
* smscore_register_device
|
||||
*
|
||||
* @return current mode
|
||||
* return: current mode
|
||||
*/
|
||||
int smscore_get_device_mode(struct smscore_device_t *coredev)
|
||||
{
|
||||
@ -1425,7 +1425,7 @@ int smscore_get_device_mode(struct smscore_device_t *coredev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smscore_get_device_mode);
|
||||
|
||||
/**
|
||||
/*
|
||||
* find client by response id & type within the clients list.
|
||||
* return client handle or NULL.
|
||||
*
|
||||
@ -1462,7 +1462,7 @@ found:
|
||||
return client;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* find client by response id/type, call clients onresponse handler
|
||||
* return buffer to pool on error
|
||||
*
|
||||
@ -1615,13 +1615,13 @@ void smscore_onresponse(struct smscore_device_t *coredev,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smscore_onresponse);
|
||||
|
||||
/**
|
||||
/*
|
||||
* return pointer to next free buffer descriptor from core pool
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
* smscore_register_device
|
||||
*
|
||||
* @return pointer to descriptor on success, NULL on error.
|
||||
* return: pointer to descriptor on success, NULL on error.
|
||||
*/
|
||||
|
||||
static struct smscore_buffer_t *get_entry(struct smscore_device_t *coredev)
|
||||
@ -1648,7 +1648,7 @@ struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smscore_getbuffer);
|
||||
|
||||
/**
|
||||
/*
|
||||
* return buffer descriptor to a pool
|
||||
*
|
||||
* @param coredev pointer to a coredev object returned by
|
||||
@ -1693,7 +1693,7 @@ static int smscore_validate_client(struct smscore_device_t *coredev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* creates smsclient object, check that id is taken by another client
|
||||
*
|
||||
* @param coredev pointer to a coredev object from clients hotplug
|
||||
@ -1705,7 +1705,7 @@ static int smscore_validate_client(struct smscore_device_t *coredev,
|
||||
* @param context client-specific context
|
||||
* @param client pointer to a value that receives created smsclient object
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
int smscore_register_client(struct smscore_device_t *coredev,
|
||||
struct smsclient_params_t *params,
|
||||
@ -1740,7 +1740,7 @@ int smscore_register_client(struct smscore_device_t *coredev,
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smscore_register_client);
|
||||
|
||||
/**
|
||||
/*
|
||||
* frees smsclient object and all subclients associated with it
|
||||
*
|
||||
* @param client pointer to smsclient object returned by
|
||||
@ -1771,7 +1771,7 @@ void smscore_unregister_client(struct smscore_client_t *client)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(smscore_unregister_client);
|
||||
|
||||
/**
|
||||
/*
|
||||
* verifies that source id is not taken by another client,
|
||||
* calls device handler to send requests to the device
|
||||
*
|
||||
@ -1780,7 +1780,7 @@ EXPORT_SYMBOL_GPL(smscore_unregister_client);
|
||||
* @param buffer pointer to a request buffer
|
||||
* @param size size (in bytes) of request buffer
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
int smsclient_sendrequest(struct smscore_client_t *client,
|
||||
void *buffer, size_t size)
|
||||
|
@ -206,7 +206,7 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot,
|
||||
* @hlen: Number of bytes in haystack.
|
||||
* @needle: Buffer to find.
|
||||
* @nlen: Number of bytes in needle.
|
||||
* @return Pointer into haystack needle was found at, or NULL if not found.
|
||||
* return: Pointer into haystack needle was found at, or NULL if not found.
|
||||
*/
|
||||
static char *findstr(char *haystack, int hlen, char *needle, int nlen)
|
||||
{
|
||||
@ -226,7 +226,7 @@ static char *findstr(char *haystack, int hlen, char *needle, int nlen)
|
||||
/* ************************************************************************** */
|
||||
/* EN50221 physical interface functions */
|
||||
|
||||
/**
|
||||
/*
|
||||
* dvb_ca_en50221_check_camstatus - Check CAM status.
|
||||
*/
|
||||
static int dvb_ca_en50221_check_camstatus(struct dvb_ca_private *ca, int slot)
|
||||
@ -275,9 +275,9 @@ static int dvb_ca_en50221_check_camstatus(struct dvb_ca_private *ca, int slot)
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot on interface.
|
||||
* @waitfor: Flags to wait for.
|
||||
* @timeout_ms: Timeout in milliseconds.
|
||||
* @timeout_hz: Timeout in milliseconds.
|
||||
*
|
||||
* @return 0 on success, nonzero on error.
|
||||
* return: 0 on success, nonzero on error.
|
||||
*/
|
||||
static int dvb_ca_en50221_wait_if_status(struct dvb_ca_private *ca, int slot,
|
||||
u8 waitfor, int timeout_hz)
|
||||
@ -325,7 +325,7 @@ static int dvb_ca_en50221_wait_if_status(struct dvb_ca_private *ca, int slot,
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot id.
|
||||
*
|
||||
* @return 0 on success, nonzero on failure.
|
||||
* return: 0 on success, nonzero on failure.
|
||||
*/
|
||||
static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot)
|
||||
{
|
||||
@ -397,11 +397,11 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot)
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot id.
|
||||
* @address: Address to read from. Updated.
|
||||
* @tupleType: Tuple id byte. Updated.
|
||||
* @tupleLength: Tuple length. Updated.
|
||||
* @tuple_type: Tuple id byte. Updated.
|
||||
* @tuple_length: Tuple length. Updated.
|
||||
* @tuple: Dest buffer for tuple (must be 256 bytes). Updated.
|
||||
*
|
||||
* @return 0 on success, nonzero on error.
|
||||
* return: 0 on success, nonzero on error.
|
||||
*/
|
||||
static int dvb_ca_en50221_read_tuple(struct dvb_ca_private *ca, int slot,
|
||||
int *address, int *tuple_type,
|
||||
@ -455,7 +455,7 @@ static int dvb_ca_en50221_read_tuple(struct dvb_ca_private *ca, int slot,
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot id.
|
||||
*
|
||||
* @return 0 on success, <0 on failure.
|
||||
* return: 0 on success, <0 on failure.
|
||||
*/
|
||||
static int dvb_ca_en50221_parse_attributes(struct dvb_ca_private *ca, int slot)
|
||||
{
|
||||
@ -632,10 +632,11 @@ static int dvb_ca_en50221_set_configoption(struct dvb_ca_private *ca, int slot)
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot to read from.
|
||||
* @ebuf: If non-NULL, the data will be written to this buffer. If NULL,
|
||||
* the data will be added into the buffering system as a normal fragment.
|
||||
* the data will be added into the buffering system as a normal
|
||||
* fragment.
|
||||
* @ecount: Size of ebuf. Ignored if ebuf is NULL.
|
||||
*
|
||||
* @return Number of bytes read, or < 0 on error
|
||||
* return: Number of bytes read, or < 0 on error
|
||||
*/
|
||||
static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot,
|
||||
u8 *ebuf, int ecount)
|
||||
@ -784,11 +785,11 @@ exit:
|
||||
*
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot to write to.
|
||||
* @ebuf: The data in this buffer is treated as a complete link-level packet to
|
||||
* be written.
|
||||
* @count: Size of ebuf.
|
||||
* @buf: The data in this buffer is treated as a complete link-level packet to
|
||||
* be written.
|
||||
* @bytes_write: Size of ebuf.
|
||||
*
|
||||
* @return Number of bytes written, or < 0 on error.
|
||||
* return: Number of bytes written, or < 0 on error.
|
||||
*/
|
||||
static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot,
|
||||
u8 *buf, int bytes_write)
|
||||
@ -933,7 +934,7 @@ static int dvb_ca_en50221_slot_shutdown(struct dvb_ca_private *ca, int slot)
|
||||
/**
|
||||
* dvb_ca_en50221_camchange_irq - A CAMCHANGE IRQ has occurred.
|
||||
*
|
||||
* @ca: CA instance.
|
||||
* @pubca: CA instance.
|
||||
* @slot: Slot concerned.
|
||||
* @change_type: One of the DVB_CA_CAMCHANGE_* values.
|
||||
*/
|
||||
@ -963,7 +964,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_camchange_irq);
|
||||
/**
|
||||
* dvb_ca_en50221_camready_irq - A CAMREADY IRQ has occurred.
|
||||
*
|
||||
* @ca: CA instance.
|
||||
* @pubca: CA instance.
|
||||
* @slot: Slot concerned.
|
||||
*/
|
||||
void dvb_ca_en50221_camready_irq(struct dvb_ca_en50221 *pubca, int slot)
|
||||
@ -983,7 +984,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_camready_irq);
|
||||
/**
|
||||
* dvb_ca_en50221_frda_irq - An FR or DA IRQ has occurred.
|
||||
*
|
||||
* @ca: CA instance.
|
||||
* @pubca: CA instance.
|
||||
* @slot: Slot concerned.
|
||||
*/
|
||||
void dvb_ca_en50221_frda_irq(struct dvb_ca_en50221 *pubca, int slot)
|
||||
@ -1091,7 +1092,7 @@ static void dvb_ca_en50221_thread_update_delay(struct dvb_ca_private *ca)
|
||||
*
|
||||
* @ca: CA instance.
|
||||
* @slot: Slot to process.
|
||||
* @return: 0 .. no change
|
||||
* return:: 0 .. no change
|
||||
* 1 .. CAM state changed
|
||||
*/
|
||||
|
||||
@ -1296,7 +1297,7 @@ static void dvb_ca_en50221_thread_state_machine(struct dvb_ca_private *ca,
|
||||
mutex_unlock(&sl->slot_lock);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Kernel thread which monitors CA slots for CAM changes, and performs data
|
||||
* transfers.
|
||||
*/
|
||||
@ -1336,12 +1337,11 @@ static int dvb_ca_en50221_thread(void *data)
|
||||
* Real ioctl implementation.
|
||||
* NOTE: CA_SEND_MSG/CA_GET_MSG ioctls have userspace buffers passed to them.
|
||||
*
|
||||
* @inode: Inode concerned.
|
||||
* @file: File concerned.
|
||||
* @cmd: IOCTL command.
|
||||
* @arg: Associated argument.
|
||||
* @parg: Associated argument.
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
static int dvb_ca_en50221_io_do_ioctl(struct file *file,
|
||||
unsigned int cmd, void *parg)
|
||||
@ -1420,12 +1420,11 @@ out_unlock:
|
||||
/**
|
||||
* Wrapper for ioctl implementation.
|
||||
*
|
||||
* @inode: Inode concerned.
|
||||
* @file: File concerned.
|
||||
* @cmd: IOCTL command.
|
||||
* @arg: Associated argument.
|
||||
*
|
||||
* @return 0 on success, <0 on error.
|
||||
* return: 0 on success, <0 on error.
|
||||
*/
|
||||
static long dvb_ca_en50221_io_ioctl(struct file *file,
|
||||
unsigned int cmd, unsigned long arg)
|
||||
@ -1441,7 +1440,7 @@ static long dvb_ca_en50221_io_ioctl(struct file *file,
|
||||
* @count: Size of source buffer.
|
||||
* @ppos: Position in file (ignored).
|
||||
*
|
||||
* @return Number of bytes read, or <0 on error.
|
||||
* return: Number of bytes read, or <0 on error.
|
||||
*/
|
||||
static ssize_t dvb_ca_en50221_io_write(struct file *file,
|
||||
const char __user *buf, size_t count,
|
||||
@ -1536,7 +1535,7 @@ exit:
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Condition for waking up in dvb_ca_en50221_io_read_condition
|
||||
*/
|
||||
static int dvb_ca_en50221_io_read_condition(struct dvb_ca_private *ca,
|
||||
@ -1593,7 +1592,7 @@ nextslot:
|
||||
* @count: Size of destination buffer.
|
||||
* @ppos: Position in file (ignored).
|
||||
*
|
||||
* @return Number of bytes read, or <0 on error.
|
||||
* return: Number of bytes read, or <0 on error.
|
||||
*/
|
||||
static ssize_t dvb_ca_en50221_io_read(struct file *file, char __user *buf,
|
||||
size_t count, loff_t *ppos)
|
||||
@ -1702,7 +1701,7 @@ exit:
|
||||
* @inode: Inode concerned.
|
||||
* @file: File concerned.
|
||||
*
|
||||
* @return 0 on success, <0 on failure.
|
||||
* return: 0 on success, <0 on failure.
|
||||
*/
|
||||
static int dvb_ca_en50221_io_open(struct inode *inode, struct file *file)
|
||||
{
|
||||
@ -1752,7 +1751,7 @@ static int dvb_ca_en50221_io_open(struct inode *inode, struct file *file)
|
||||
* @inode: Inode concerned.
|
||||
* @file: File concerned.
|
||||
*
|
||||
* @return 0 on success, <0 on failure.
|
||||
* return: 0 on success, <0 on failure.
|
||||
*/
|
||||
static int dvb_ca_en50221_io_release(struct inode *inode, struct file *file)
|
||||
{
|
||||
@ -1781,7 +1780,7 @@ static int dvb_ca_en50221_io_release(struct inode *inode, struct file *file)
|
||||
* @file: File concerned.
|
||||
* @wait: poll wait table.
|
||||
*
|
||||
* @return Standard poll mask.
|
||||
* return: Standard poll mask.
|
||||
*/
|
||||
static unsigned int dvb_ca_en50221_io_poll(struct file *file, poll_table *wait)
|
||||
{
|
||||
@ -1838,11 +1837,11 @@ static const struct dvb_device dvbdev_ca = {
|
||||
* Initialise a new DVB CA EN50221 interface device.
|
||||
*
|
||||
* @dvb_adapter: DVB adapter to attach the new CA device to.
|
||||
* @ca: The dvb_ca instance.
|
||||
* @pubca: The dvb_ca instance.
|
||||
* @flags: Flags describing the CA device (DVB_CA_FLAG_*).
|
||||
* @slot_count: Number of slots supported.
|
||||
*
|
||||
* @return 0 on success, nonzero on failure
|
||||
* return: 0 on success, nonzero on failure
|
||||
*/
|
||||
int dvb_ca_en50221_init(struct dvb_adapter *dvb_adapter,
|
||||
struct dvb_ca_en50221 *pubca, int flags, int slot_count)
|
||||
@ -1929,8 +1928,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_init);
|
||||
/**
|
||||
* Release a DVB CA EN50221 interface device.
|
||||
*
|
||||
* @ca_dev: The dvb_device_t instance for the CA device.
|
||||
* @ca: The associated dvb_ca instance.
|
||||
* @pubca: The associated dvb_ca instance.
|
||||
*/
|
||||
void dvb_ca_en50221_release(struct dvb_ca_en50221 *pubca)
|
||||
{
|
||||
|
@ -369,11 +369,14 @@ static void dvb_frontend_swzigzag_update_delay(struct dvb_frontend_private *fepr
|
||||
}
|
||||
|
||||
/**
|
||||
* Performs automatic twiddling of frontend parameters.
|
||||
* dvb_frontend_swzigzag_autotune - Performs automatic twiddling of frontend
|
||||
* parameters.
|
||||
*
|
||||
* @param fe The frontend concerned.
|
||||
* @param check_wrapped Checks if an iteration has completed. DO NOT SET ON THE FIRST ATTEMPT
|
||||
* @returns Number of complete iterations that have been performed.
|
||||
* @fe: The frontend concerned.
|
||||
* @check_wrapped: Checks if an iteration has completed.
|
||||
* DO NOT SET ON THE FIRST ATTEMPT.
|
||||
*
|
||||
* return: Number of complete iterations that have been performed.
|
||||
*/
|
||||
static int dvb_frontend_swzigzag_autotune(struct dvb_frontend *fe, int check_wrapped)
|
||||
{
|
||||
@ -1253,7 +1256,7 @@ dtv_property_legacy_params_sync(struct dvb_frontend *fe,
|
||||
* dtv_get_frontend - calls a callback for retrieving DTV parameters
|
||||
* @fe: struct dvb_frontend pointer
|
||||
* @c: struct dtv_frontend_properties pointer (DVBv5 cache)
|
||||
* @p_out struct dvb_frontend_parameters pointer (DVBv3 FE struct)
|
||||
* @p_out: struct dvb_frontend_parameters pointer (DVBv3 FE struct)
|
||||
*
|
||||
* This routine calls either the DVBv3 or DVBv5 get_frontend call.
|
||||
* If c is not null, it will update the DVBv5 cache struct pointed by it.
|
||||
|
@ -125,7 +125,7 @@ struct dvb_net_priv {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
* Determine the packet's protocol ID. The rule here is that we
|
||||
* assume 802.3 if the type field is short enough to be a length.
|
||||
* This is normal practice and works for any 'now in use' protocol.
|
||||
@ -155,7 +155,7 @@ static __be16 dvb_net_eth_type_trans(struct sk_buff *skb,
|
||||
|
||||
rawp = skb->data;
|
||||
|
||||
/**
|
||||
/*
|
||||
* This is a magic hack to spot IPX packets. Older Novell breaks
|
||||
* the protocol design and runs IPX over 802.3 without an 802.2 LLC
|
||||
* layer. We look for FFFF which isn't a used 802.2 SSAP/DSAP. This
|
||||
@ -164,7 +164,7 @@ static __be16 dvb_net_eth_type_trans(struct sk_buff *skb,
|
||||
if (*(unsigned short *)rawp == 0xFFFF)
|
||||
return htons(ETH_P_802_3);
|
||||
|
||||
/**
|
||||
/*
|
||||
* Real 802.2 LLC
|
||||
*/
|
||||
return htons(ETH_P_802_2);
|
||||
@ -215,7 +215,8 @@ static int ule_exthdr_padding(struct dvb_net_priv *p)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/** Handle ULE extension headers.
|
||||
/*
|
||||
* Handle ULE extension headers.
|
||||
* Function is called after a successful CRC32 verification of an ULE SNDU to complete its decoding.
|
||||
* Returns: >= 0: nr. of bytes consumed by next extension header
|
||||
* -1: Mandatory extension header that is not recognized or TEST SNDU; discard.
|
||||
@ -291,7 +292,7 @@ static int handle_ule_extensions( struct dvb_net_priv *p )
|
||||
}
|
||||
|
||||
|
||||
/** Prepare for a new ULE SNDU: reset the decoder state. */
|
||||
/* Prepare for a new ULE SNDU: reset the decoder state. */
|
||||
static inline void reset_ule( struct dvb_net_priv *p )
|
||||
{
|
||||
p->ule_skb = NULL;
|
||||
@ -304,7 +305,7 @@ static inline void reset_ule( struct dvb_net_priv *p )
|
||||
p->ule_bridged = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Decode ULE SNDUs according to draft-ietf-ipdvb-ule-03.txt from a sequence of
|
||||
* TS cells of a single PID.
|
||||
*/
|
||||
@ -1005,7 +1006,7 @@ static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len,
|
||||
{
|
||||
struct net_device *dev = filter->priv;
|
||||
|
||||
/**
|
||||
/*
|
||||
* we rely on the DVB API definition where exactly one complete
|
||||
* section is delivered in buffer1
|
||||
*/
|
||||
|
@ -38,6 +38,13 @@
|
||||
* @api_version: Firmware API version.
|
||||
* @gpio: GPIOs.
|
||||
* @get_dvb_frontend: Get DVB frontend callback.
|
||||
*
|
||||
* AF9013/5 GPIOs (mostly guessed):
|
||||
* * demod#1-gpio#0 - set demod#2 i2c-addr for dual devices
|
||||
* * demod#1-gpio#1 - xtal setting (?)
|
||||
* * demod#1-gpio#3 - tuner#1
|
||||
* * demod#2-gpio#0 - tuner#2
|
||||
* * demod#2-gpio#1 - xtal setting (?)
|
||||
*/
|
||||
struct af9013_platform_data {
|
||||
/*
|
||||
@ -89,16 +96,15 @@ struct af9013_platform_data {
|
||||
#define AF9013_TS_PARALLEL AF9013_TS_MODE_PARALLEL
|
||||
#define AF9013_TS_SERIAL AF9013_TS_MODE_SERIAL
|
||||
|
||||
/*
|
||||
* AF9013/5 GPIOs (mostly guessed)
|
||||
* demod#1-gpio#0 - set demod#2 i2c-addr for dual devices
|
||||
* demod#1-gpio#1 - xtal setting (?)
|
||||
* demod#1-gpio#3 - tuner#1
|
||||
* demod#2-gpio#0 - tuner#2
|
||||
* demod#2-gpio#1 - xtal setting (?)
|
||||
*/
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_AF9013)
|
||||
/**
|
||||
* Attach an af9013 demod
|
||||
*
|
||||
* @config: pointer to &struct af9013_config with demod configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *af9013_attach(const struct af9013_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
#else
|
||||
|
@ -41,6 +41,15 @@ struct ascot2e_config {
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_ASCOT2E)
|
||||
/**
|
||||
* Attach an ascot2e tuner
|
||||
*
|
||||
* @fe: frontend to be attached
|
||||
* @config: pointer to &struct ascot2e_config with tuner configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *ascot2e_attach(struct dvb_frontend *fe,
|
||||
const struct ascot2e_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
|
@ -49,7 +49,6 @@
|
||||
* @gpio_chip_base: GPIO.
|
||||
* @get_dvb_frontend: Get DVB frontend.
|
||||
*/
|
||||
|
||||
struct cxd2820r_platform_data {
|
||||
u8 ts_mode;
|
||||
bool ts_clk_inv;
|
||||
@ -62,6 +61,17 @@ struct cxd2820r_platform_data {
|
||||
bool attach_in_use;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct cxd2820r_config - configuration for cxd2020r demod
|
||||
*
|
||||
* @i2c_address: Demodulator I2C address. Driver determines DVB-C slave I2C
|
||||
* address automatically from master address.
|
||||
* Default: none, must set. Values: 0x6c, 0x6d.
|
||||
* @ts_mode: TS output mode. Default: none, must set. Values: FIXME?
|
||||
* @ts_clock_inv: TS clock inverted. Default: 0. Values: 0, 1.
|
||||
* @if_agc_polarity: Default: 0. Values: 0, 1
|
||||
* @spec_inv: Spectrum inversion. Default: 0. Values: 0, 1.
|
||||
*/
|
||||
struct cxd2820r_config {
|
||||
/* Demodulator I2C address.
|
||||
* Driver determines DVB-C slave I2C address automatically from master
|
||||
@ -98,6 +108,18 @@ struct cxd2820r_config {
|
||||
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_CXD2820R)
|
||||
/**
|
||||
* Attach a cxd2820r demod
|
||||
*
|
||||
* @config: pointer to &struct cxd2820r_config with demod configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
* @gpio_chip_base: if zero, disables GPIO setting. Otherwise, if
|
||||
* CONFIG_GPIOLIB is set dynamically allocate
|
||||
* gpio base; if is not set, use its value to
|
||||
* setup the GPIO pins.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *cxd2820r_attach(
|
||||
const struct cxd2820r_config *config,
|
||||
struct i2c_adapter *i2c,
|
||||
|
@ -52,7 +52,7 @@ struct i2c_device_addr {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def IS_I2C_10BIT( addr )
|
||||
* \brief Determine if I2C address 'addr' is a 10 bits address or not.
|
||||
* \param addr The I2C address.
|
||||
@ -67,7 +67,7 @@ struct i2c_device_addr {
|
||||
Exported FUNCTIONS
|
||||
------------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn drxbsp_i2c_init()
|
||||
* \brief Initialize I2C communication module.
|
||||
* \return drx_status_t Return status.
|
||||
@ -76,7 +76,7 @@ Exported FUNCTIONS
|
||||
*/
|
||||
drx_status_t drxbsp_i2c_init(void);
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn drxbsp_i2c_term()
|
||||
* \brief Terminate I2C communication module.
|
||||
* \return drx_status_t Return status.
|
||||
@ -85,7 +85,7 @@ Exported FUNCTIONS
|
||||
*/
|
||||
drx_status_t drxbsp_i2c_term(void);
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn drx_status_t drxbsp_i2c_write_read( struct i2c_device_addr *w_dev_addr,
|
||||
* u16 w_count,
|
||||
* u8 *wData,
|
||||
@ -121,7 +121,7 @@ Exported FUNCTIONS
|
||||
struct i2c_device_addr *r_dev_addr,
|
||||
u16 r_count, u8 *r_data);
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn drxbsp_i2c_error_text()
|
||||
* \brief Returns a human readable error.
|
||||
* Counter part of numerical drx_i2c_error_g.
|
||||
@ -130,7 +130,7 @@ Exported FUNCTIONS
|
||||
*/
|
||||
char *drxbsp_i2c_error_text(void);
|
||||
|
||||
/**
|
||||
/*
|
||||
* \var drx_i2c_error_g;
|
||||
* \brief I2C specific error codes, platform dependent.
|
||||
*/
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -73,7 +73,7 @@ INCLUDE FILES
|
||||
|
||||
#define DRX39XX_MAIN_FIRMWARE "dvb-fe-drxj-mc-1.0.8.fw"
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Maximum u32 value.
|
||||
*/
|
||||
#ifndef MAX_U32
|
||||
@ -100,8 +100,8 @@ INCLUDE FILES
|
||||
#ifndef OOB_DRX_DRIVE_STRENGTH
|
||||
#define OOB_DRX_DRIVE_STRENGTH 0x02
|
||||
#endif
|
||||
/**** START DJCOMBO patches to DRXJ registermap constants *********************/
|
||||
/**** registermap 200706071303 from drxj **************************************/
|
||||
/*** START DJCOMBO patches to DRXJ registermap constants *********************/
|
||||
/*** registermap 200706071303 from drxj **************************************/
|
||||
#define ATV_TOP_CR_AMP_TH_FM 0x0
|
||||
#define ATV_TOP_CR_AMP_TH_L 0xA
|
||||
#define ATV_TOP_CR_AMP_TH_LP 0xA
|
||||
@ -188,7 +188,7 @@ INCLUDE FILES
|
||||
#define IQM_RC_ADJ_SEL_B_OFF 0x0
|
||||
#define IQM_RC_ADJ_SEL_B_QAM 0x1
|
||||
#define IQM_RC_ADJ_SEL_B_VSB 0x2
|
||||
/**** END DJCOMBO patches to DRXJ registermap *********************************/
|
||||
/*** END DJCOMBO patches to DRXJ registermap *********************************/
|
||||
|
||||
#include "drx_driver_version.h"
|
||||
|
||||
@ -208,25 +208,25 @@ DEFINES
|
||||
#define DRXJ_WAKE_UP_KEY (demod->my_i2c_dev_addr->i2c_addr)
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_DEF_I2C_ADDR
|
||||
* \brief Default I2C address of a demodulator instance.
|
||||
*/
|
||||
#define DRXJ_DEF_I2C_ADDR (0x52)
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_DEF_DEMOD_DEV_ID
|
||||
* \brief Default device identifier of a demodultor instance.
|
||||
*/
|
||||
#define DRXJ_DEF_DEMOD_DEV_ID (1)
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_SCAN_TIMEOUT
|
||||
* \brief Timeout value for waiting on demod lock during channel scan (millisec).
|
||||
*/
|
||||
#define DRXJ_SCAN_TIMEOUT 1000
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def HI_I2C_DELAY
|
||||
* \brief HI timing delay for I2C timing (in nano seconds)
|
||||
*
|
||||
@ -234,7 +234,7 @@ DEFINES
|
||||
*/
|
||||
#define HI_I2C_DELAY 42
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def HI_I2C_BRIDGE_DELAY
|
||||
* \brief HI timing delay for I2C timing (in nano seconds)
|
||||
*
|
||||
@ -242,13 +242,13 @@ DEFINES
|
||||
*/
|
||||
#define HI_I2C_BRIDGE_DELAY 750
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Time Window for MER and SER Measurement in Units of Segment duration.
|
||||
*/
|
||||
#define VSB_TOP_MEASUREMENT_PERIOD 64
|
||||
#define SYMBOLS_PER_SEGMENT 832
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief bit rate and segment rate constants used for SER and BER.
|
||||
*/
|
||||
/* values taken from the QAM microcode */
|
||||
@ -260,21 +260,21 @@ DEFINES
|
||||
#define DRXJ_QAM_SL_SIG_POWER_QAM64 43008
|
||||
#define DRXJ_QAM_SL_SIG_POWER_QAM128 20992
|
||||
#define DRXJ_QAM_SL_SIG_POWER_QAM256 43520
|
||||
/**
|
||||
/*
|
||||
* \brief Min supported symbolrates.
|
||||
*/
|
||||
#ifndef DRXJ_QAM_SYMBOLRATE_MIN
|
||||
#define DRXJ_QAM_SYMBOLRATE_MIN (520000)
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Max supported symbolrates.
|
||||
*/
|
||||
#ifndef DRXJ_QAM_SYMBOLRATE_MAX
|
||||
#define DRXJ_QAM_SYMBOLRATE_MAX (7233000)
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_QAM_MAX_WAITTIME
|
||||
* \brief Maximal wait time for QAM auto constellation in ms
|
||||
*/
|
||||
@ -290,7 +290,7 @@ DEFINES
|
||||
#define DRXJ_QAM_DEMOD_LOCK_EXT_WAITTIME 200
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def SCU status and results
|
||||
* \brief SCU
|
||||
*/
|
||||
@ -299,7 +299,7 @@ DEFINES
|
||||
#define FEC_RS_MEASUREMENT_PERIOD 12894 /* 1 sec */
|
||||
#define FEC_RS_MEASUREMENT_PRESCALE 1 /* n sec */
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRX_AUD_MAX_DEVIATION
|
||||
* \brief Needed for calculation of prescale feature in AUD
|
||||
*/
|
||||
@ -307,14 +307,14 @@ DEFINES
|
||||
#define DRXJ_AUD_MAX_FM_DEVIATION 100 /* kHz */
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Needed for calculation of NICAM prescale feature in AUD
|
||||
*/
|
||||
#ifndef DRXJ_AUD_MAX_NICAM_PRESCALE
|
||||
#define DRXJ_AUD_MAX_NICAM_PRESCALE (9) /* dB */
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Needed for calculation of NICAM prescale feature in AUD
|
||||
*/
|
||||
#ifndef DRXJ_AUD_MAX_WAITTIME
|
||||
@ -371,21 +371,21 @@ DEFINES
|
||||
/*============================================================================*/
|
||||
/*=== GLOBAL VARIABLEs =======================================================*/
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Temporary register definitions.
|
||||
* (register definitions that are not yet available in register master)
|
||||
*/
|
||||
|
||||
/******************************************************************************/
|
||||
/*****************************************************************************/
|
||||
/* Audio block 0x103 is write only. To avoid shadowing in driver accessing */
|
||||
/* RAM adresses directly. This must be READ ONLY to avoid problems. */
|
||||
/* Writing to the interface adresses is more than only writing the RAM */
|
||||
/* locations */
|
||||
/******************************************************************************/
|
||||
/**
|
||||
/*****************************************************************************/
|
||||
/*
|
||||
* \brief RAM location of MODUS registers
|
||||
*/
|
||||
#define AUD_DEM_RAM_MODUS_HI__A 0x10204A3
|
||||
@ -394,13 +394,13 @@ DEFINES
|
||||
#define AUD_DEM_RAM_MODUS_LO__A 0x10204A4
|
||||
#define AUD_DEM_RAM_MODUS_LO__M 0x0FFF
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief RAM location of I2S config registers
|
||||
*/
|
||||
#define AUD_DEM_RAM_I2S_CONFIG1__A 0x10204B1
|
||||
#define AUD_DEM_RAM_I2S_CONFIG2__A 0x10204B2
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief RAM location of DCO config registers
|
||||
*/
|
||||
#define AUD_DEM_RAM_DCO_B_HI__A 0x1020461
|
||||
@ -408,20 +408,20 @@ DEFINES
|
||||
#define AUD_DEM_RAM_DCO_A_HI__A 0x1020463
|
||||
#define AUD_DEM_RAM_DCO_A_LO__A 0x1020464
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief RAM location of Threshold registers
|
||||
*/
|
||||
#define AUD_DEM_RAM_NICAM_THRSHLD__A 0x102045A
|
||||
#define AUD_DEM_RAM_A2_THRSHLD__A 0x10204BB
|
||||
#define AUD_DEM_RAM_BTSC_THRSHLD__A 0x10204A6
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief RAM location of Carrier Threshold registers
|
||||
*/
|
||||
#define AUD_DEM_RAM_CM_A_THRSHLD__A 0x10204AF
|
||||
#define AUD_DEM_RAM_CM_B_THRSHLD__A 0x10204B0
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief FM Matrix register fix
|
||||
*/
|
||||
#ifdef AUD_DEM_WR_FM_MATRIX__A
|
||||
@ -430,7 +430,7 @@ DEFINES
|
||||
#define AUD_DEM_WR_FM_MATRIX__A 0x105006F
|
||||
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \brief Defines required for audio
|
||||
*/
|
||||
#define AUD_VOLUME_ZERO_DB 115
|
||||
@ -443,14 +443,14 @@ DEFINES
|
||||
#define AUD_I2S_FREQUENCY_MIN 12000UL
|
||||
#define AUD_RDS_ARRAY_SIZE 18
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Needed for calculation of prescale feature in AUD
|
||||
*/
|
||||
#ifndef DRX_AUD_MAX_FM_DEVIATION
|
||||
#define DRX_AUD_MAX_FM_DEVIATION (100) /* kHz */
|
||||
#endif
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Needed for calculation of NICAM prescale feature in AUD
|
||||
*/
|
||||
#ifndef DRX_AUD_MAX_NICAM_PRESCALE
|
||||
@ -478,7 +478,7 @@ DEFINES
|
||||
/*=== REGISTER ACCESS MACROS =================================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* This macro is used to create byte arrays for block writes.
|
||||
* Block writes speed up I2C traffic between host and demod.
|
||||
* The macro takes care of the required byte order in a 16 bits word.
|
||||
@ -486,7 +486,7 @@ DEFINES
|
||||
*/
|
||||
#define DRXJ_16TO8(x) ((u8) (((u16)x) & 0xFF)), \
|
||||
((u8)((((u16)x)>>8)&0xFF))
|
||||
/**
|
||||
/*
|
||||
* This macro is used to convert byte array to 16 bit register value for block read.
|
||||
* Block read speed up I2C traffic between host and demod.
|
||||
* The macro takes care of the required byte order in a 16 bits word.
|
||||
@ -501,7 +501,7 @@ DEFINES
|
||||
/*=== HI COMMAND RELATED DEFINES =============================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief General maximum number of retries for ucode command interfaces
|
||||
*/
|
||||
#define DRXJ_MAX_RETRIES (100)
|
||||
@ -807,7 +807,7 @@ static struct drxj_data drxj_data_g = {
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* \var drxj_default_addr_g
|
||||
* \brief Default I2C address and device identifier.
|
||||
*/
|
||||
@ -816,7 +816,7 @@ static struct i2c_device_addr drxj_default_addr_g = {
|
||||
DRXJ_DEF_DEMOD_DEV_ID /* device id */
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* \var drxj_default_comm_attr_g
|
||||
* \brief Default common attributes of a drxj demodulator instance.
|
||||
*/
|
||||
@ -887,7 +887,7 @@ static struct drx_common_attr drxj_default_comm_attr_g = {
|
||||
0 /* mfx */
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* \var drxj_default_demod_g
|
||||
* \brief Default drxj demodulator instance.
|
||||
*/
|
||||
@ -897,7 +897,7 @@ static struct drx_demod_instance drxj_default_demod_g = {
|
||||
&drxj_data_g /* demod device specific attributes */
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Default audio data structure for DRK demodulator instance.
|
||||
*
|
||||
* This structure is DRXK specific.
|
||||
@ -997,7 +997,7 @@ struct drxj_hi_cmd {
|
||||
/*=== MICROCODE RELATED STRUCTURES ===========================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* struct drxu_code_block_hdr - Structure of the microcode block headers
|
||||
*
|
||||
* @addr: Destination address of the data in this block
|
||||
@ -1086,7 +1086,7 @@ static u32 frac28(u32 N, u32 D)
|
||||
return Q1;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn u32 log1_times100( u32 x)
|
||||
* \brief Compute: 100*log10(x)
|
||||
* \param x 32 bits
|
||||
@ -1198,7 +1198,7 @@ static u32 log1_times100(u32 x)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn u32 frac_times1e6( u16 N, u32 D)
|
||||
* \brief Compute: (N/D) * 1000000.
|
||||
* \param N nominator 16-bits.
|
||||
@ -1235,7 +1235,7 @@ static u32 frac_times1e6(u32 N, u32 D)
|
||||
/*============================================================================*/
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Values for NICAM prescaler gain. Computed from dB to integer
|
||||
* and rounded. For calc used formula: 16*10^(prescaleGain[dB]/20).
|
||||
*
|
||||
@ -1280,7 +1280,7 @@ static const u16 nicam_presc_table_val[43] = {
|
||||
#define DRXJ_DAP_AUDTRIF_TIMEOUT 80 /* millisec */
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn bool is_handled_by_aud_tr_if( u32 addr )
|
||||
* \brief Check if this address is handled by the audio token ring interface.
|
||||
* \param addr
|
||||
@ -1386,7 +1386,7 @@ int drxbsp_i2c_write_read(struct i2c_device_addr *w_dev_addr,
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_read_block (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1498,7 +1498,7 @@ static int drxdap_fasi_read_block(struct i2c_device_addr *dev_addr,
|
||||
}
|
||||
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_read_reg16 (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1531,7 +1531,7 @@ static int drxdap_fasi_read_reg16(struct i2c_device_addr *dev_addr,
|
||||
return rc;
|
||||
}
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_read_reg32 (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1566,7 +1566,7 @@ static int drxdap_fasi_read_reg32(struct i2c_device_addr *dev_addr,
|
||||
return rc;
|
||||
}
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_write_block (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1705,7 +1705,7 @@ static int drxdap_fasi_write_block(struct i2c_device_addr *dev_addr,
|
||||
return first_err;
|
||||
}
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_write_reg16 (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1734,7 +1734,7 @@ static int drxdap_fasi_write_reg16(struct i2c_device_addr *dev_addr,
|
||||
return drxdap_fasi_write_block(dev_addr, addr, sizeof(data), buf, flags);
|
||||
}
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_read_modify_write_reg16 (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1778,7 +1778,7 @@ static int drxdap_fasi_read_modify_write_reg16(struct i2c_device_addr *dev_addr,
|
||||
return rc;
|
||||
}
|
||||
|
||||
/******************************
|
||||
/*****************************
|
||||
*
|
||||
* int drxdap_fasi_write_reg32 (
|
||||
* struct i2c_device_addr *dev_addr, -- address of I2C device
|
||||
@ -1811,7 +1811,7 @@ static int drxdap_fasi_write_reg32(struct i2c_device_addr *dev_addr,
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int drxj_dap_rm_write_reg16short
|
||||
* \brief Read modify write 16 bits audio register using short format only.
|
||||
* \param dev_addr
|
||||
@ -1890,7 +1890,7 @@ static int drxj_dap_read_modify_write_reg16(struct i2c_device_addr *dev_addr,
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int drxj_dap_read_aud_reg16
|
||||
* \brief Read 16 bits audio register
|
||||
* \param dev_addr
|
||||
@ -1997,7 +1997,7 @@ static int drxj_dap_read_reg16(struct i2c_device_addr *dev_addr,
|
||||
}
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int drxj_dap_write_aud_reg16
|
||||
* \brief Write 16 bits audio register
|
||||
* \param dev_addr
|
||||
@ -2086,7 +2086,7 @@ static int drxj_dap_write_reg16(struct i2c_device_addr *dev_addr,
|
||||
#define DRXJ_HI_ATOMIC_READ SIO_HI_RA_RAM_PAR_3_ACP_RW_READ
|
||||
#define DRXJ_HI_ATOMIC_WRITE SIO_HI_RA_RAM_PAR_3_ACP_RW_WRITE
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int drxj_dap_atomic_read_write_block()
|
||||
* \brief Basic access routine for atomic read or write access
|
||||
* \param dev_addr pointer to i2c dev address
|
||||
@ -2168,7 +2168,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int drxj_dap_atomic_read_reg32()
|
||||
* \brief Atomic read of 32 bits words
|
||||
*/
|
||||
@ -2215,7 +2215,7 @@ int drxj_dap_atomic_read_reg32(struct i2c_device_addr *dev_addr,
|
||||
/*============================================================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int hi_cfg_command()
|
||||
* \brief Configure HI with settings stored in the demod structure.
|
||||
* \param demod Demodulator.
|
||||
@ -2258,7 +2258,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int hi_command()
|
||||
* \brief Configure HI with settings stored in the demod structure.
|
||||
* \param dev_addr I2C address.
|
||||
@ -2369,7 +2369,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int init_hi( const struct drx_demod_instance *demod )
|
||||
* \brief Initialise and configurate HI.
|
||||
* \param demod pointer to demod data.
|
||||
@ -2450,7 +2450,7 @@ rw_error:
|
||||
/*============================================================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int get_device_capabilities()
|
||||
* \brief Get and store device capabilities.
|
||||
* \param demod Pointer to demodulator instance.
|
||||
@ -2656,7 +2656,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int power_up_device()
|
||||
* \brief Power up device.
|
||||
* \param demod Pointer to demodulator instance.
|
||||
@ -2710,7 +2710,7 @@ static int power_up_device(struct drx_demod_instance *demod)
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* MPEG Output Configuration Functions - begin */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_cfg_mpeg_output()
|
||||
* \brief Set MPEG output configuration of the device.
|
||||
* \param devmod Pointer to demodulator instance.
|
||||
@ -3356,7 +3356,7 @@ rw_error:
|
||||
/* miscellaneous configurations - begin */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_mpegtei_handling()
|
||||
* \brief Activate MPEG TEI handling settings.
|
||||
* \param devmod Pointer to demodulator instance.
|
||||
@ -3429,7 +3429,7 @@ rw_error:
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \fn int bit_reverse_mpeg_output()
|
||||
* \brief Set MPEG output bit-endian settings.
|
||||
* \param devmod Pointer to demodulator instance.
|
||||
@ -3472,7 +3472,7 @@ rw_error:
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \fn int set_mpeg_start_width()
|
||||
* \brief Set MPEG start width.
|
||||
* \param devmod Pointer to demodulator instance.
|
||||
@ -3522,7 +3522,7 @@ rw_error:
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* UIO Configuration Functions - begin */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_uio_cfg()
|
||||
* \brief Configure modus oprandi UIO.
|
||||
* \param demod Pointer to demodulator instance.
|
||||
@ -3659,7 +3659,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_uio_write()
|
||||
* \brief Write to a UIO.
|
||||
* \param demod Pointer to demodulator instance.
|
||||
@ -3868,7 +3868,7 @@ rw_error:
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* I2C Bridge Functions - begin */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_i2c_bridge()
|
||||
* \brief Open or close the I2C switch to tuner.
|
||||
* \param demod Pointer to demodulator instance.
|
||||
@ -3903,7 +3903,7 @@ ctrl_i2c_bridge(struct drx_demod_instance *demod, bool *bridge_closed)
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Smart antenna Functions - begin */
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \fn int smart_ant_init()
|
||||
* \brief Initialize Smart Antenna.
|
||||
* \param pointer to struct drx_demod_instance.
|
||||
@ -4116,7 +4116,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int DRXJ_DAP_SCUAtomicReadWriteBlock()
|
||||
* \brief Basic access routine for SCU atomic read or write access
|
||||
* \param dev_addr pointer to i2c dev address
|
||||
@ -4188,7 +4188,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int DRXJ_DAP_AtomicReadReg16()
|
||||
* \brief Atomic read of 16 bits words
|
||||
*/
|
||||
@ -4216,7 +4216,7 @@ int drxj_dap_scu_atomic_read_reg16(struct i2c_device_addr *dev_addr,
|
||||
}
|
||||
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \fn int drxj_dap_scu_atomic_write_reg16()
|
||||
* \brief Atomic read of 16 bits words
|
||||
*/
|
||||
@ -4237,7 +4237,7 @@ int drxj_dap_scu_atomic_write_reg16(struct i2c_device_addr *dev_addr,
|
||||
}
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/**
|
||||
/*
|
||||
* \brief Measure result of ADC synchronisation
|
||||
* \param demod demod instance
|
||||
* \param count (returned) count
|
||||
@ -4297,7 +4297,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Synchronize analog and digital clock domains
|
||||
* \param demod demod instance
|
||||
* \return int.
|
||||
@ -4365,7 +4365,7 @@ rw_error:
|
||||
/*== 8VSB & QAM COMMON DATAPATH FUNCTIONS ==*/
|
||||
/*============================================================================*/
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \fn int init_agc ()
|
||||
* \brief Initialize AGC for all standards.
|
||||
* \param demod instance of demodulator.
|
||||
@ -4741,7 +4741,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_frequency ()
|
||||
* \brief Set frequency shift.
|
||||
* \param demod instance of demodulator.
|
||||
@ -4839,7 +4839,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int get_acc_pkt_err()
|
||||
* \brief Retrieve signal strength for VSB and QAM.
|
||||
* \param demod Pointer to demod instance
|
||||
@ -4891,7 +4891,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_agc_rf ()
|
||||
* \brief Configure RF AGC
|
||||
* \param demod instance of demodulator.
|
||||
@ -5105,7 +5105,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_agc_if ()
|
||||
* \brief Configure If AGC
|
||||
* \param demod instance of demodulator.
|
||||
@ -5334,7 +5334,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_iqm_af ()
|
||||
* \brief Configure IQM AF registers
|
||||
* \param demod instance of demodulator.
|
||||
@ -5380,7 +5380,7 @@ rw_error:
|
||||
/*============================================================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int power_down_vsb ()
|
||||
* \brief Powr down QAM related blocks.
|
||||
* \param demod instance of demodulator.
|
||||
@ -5478,7 +5478,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_vsb_leak_n_gain ()
|
||||
* \brief Set ATSC demod.
|
||||
* \param demod instance of demodulator.
|
||||
@ -5694,7 +5694,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_vsb()
|
||||
* \brief Set 8VSB demod.
|
||||
* \param demod instance of demodulator.
|
||||
@ -6200,7 +6200,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn static short get_vsb_post_rs_pck_err(struct i2c_device_addr *dev_addr, u16 *PckErrs)
|
||||
* \brief Get the values of packet error in 8VSB mode
|
||||
* \return Error code
|
||||
@ -6239,7 +6239,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn static short GetVSBBer(struct i2c_device_addr *dev_addr, u32 *ber)
|
||||
* \brief Get the values of ber in VSB mode
|
||||
* \return Error code
|
||||
@ -6284,7 +6284,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn static short get_vs_bpre_viterbi_ber(struct i2c_device_addr *dev_addr, u32 *ber)
|
||||
* \brief Get the values of ber in VSB mode
|
||||
* \return Error code
|
||||
@ -6306,7 +6306,7 @@ static int get_vs_bpre_viterbi_ber(struct i2c_device_addr *dev_addr,
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn static int get_vsbmer(struct i2c_device_addr *dev_addr, u16 *mer)
|
||||
* \brief Get the values of MER
|
||||
* \return Error code
|
||||
@ -6340,7 +6340,7 @@ rw_error:
|
||||
/*============================================================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int power_down_qam ()
|
||||
* \brief Powr down QAM related blocks.
|
||||
* \param demod instance of demodulator.
|
||||
@ -6444,7 +6444,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam_measurement ()
|
||||
* \brief Setup of the QAM Measuremnt intervals for signal quality
|
||||
* \param demod instance of demod.
|
||||
@ -6656,7 +6656,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam16 ()
|
||||
* \brief QAM16 specific setup
|
||||
* \param demod instance of demod.
|
||||
@ -6891,7 +6891,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam32 ()
|
||||
* \brief QAM32 specific setup
|
||||
* \param demod instance of demod.
|
||||
@ -7126,7 +7126,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam64 ()
|
||||
* \brief QAM64 specific setup
|
||||
* \param demod instance of demod.
|
||||
@ -7362,7 +7362,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam128 ()
|
||||
* \brief QAM128 specific setup
|
||||
* \param demod: instance of demod.
|
||||
@ -7597,7 +7597,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam256 ()
|
||||
* \brief QAM256 specific setup
|
||||
* \param demod: instance of demod.
|
||||
@ -7835,7 +7835,7 @@ rw_error:
|
||||
#define QAM_SET_OP_CONSTELLATION 0x2
|
||||
#define QAM_SET_OP_SPECTRUM 0X4
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam ()
|
||||
* \brief Set QAM demod.
|
||||
* \param demod: instance of demod.
|
||||
@ -8845,7 +8845,7 @@ rw_error:
|
||||
#define DEMOD_LOCKED 0x1
|
||||
#define SYNC_FLIPPED 0x2
|
||||
#define SPEC_MIRRORED 0x4
|
||||
/**
|
||||
/*
|
||||
* \fn int qam64auto ()
|
||||
* \brief auto do sync pattern switching and mirroring.
|
||||
* \param demod: instance of demod.
|
||||
@ -8993,7 +8993,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int qam256auto ()
|
||||
* \brief auto do sync pattern switching and mirroring.
|
||||
* \param demod: instance of demod.
|
||||
@ -9077,7 +9077,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_qam_channel ()
|
||||
* \brief Set QAM channel according to the requested constellation.
|
||||
* \param demod: instance of demod.
|
||||
@ -9284,7 +9284,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn static short get_qamrs_err_count(struct i2c_device_addr *dev_addr)
|
||||
* \brief Get RS error count in QAM mode (used for post RS BER calculation)
|
||||
* \return Error code
|
||||
@ -9355,7 +9355,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int get_sig_strength()
|
||||
* \brief Retrieve signal strength for VSB and QAM.
|
||||
* \param demod Pointer to demod instance
|
||||
@ -9435,7 +9435,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_get_qam_sig_quality()
|
||||
* \brief Retrieve QAM signal quality from device.
|
||||
* \param devmod Pointer to demodulator instance.
|
||||
@ -9721,7 +9721,7 @@ rw_error:
|
||||
*/
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int power_down_atv ()
|
||||
* \brief Power down ATV.
|
||||
* \param demod instance of demodulator
|
||||
@ -9822,7 +9822,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Power up AUD.
|
||||
* \param demod instance of demodulator
|
||||
* \return int.
|
||||
@ -9850,7 +9850,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int set_orx_nsu_aox()
|
||||
* \brief Configure OrxNsuAox for OOB
|
||||
* \param demod instance of demodulator.
|
||||
@ -9884,7 +9884,7 @@ rw_error:
|
||||
return rc;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_oob()
|
||||
* \brief Set OOB channel to be used.
|
||||
* \param demod instance of demodulator
|
||||
@ -9986,9 +9986,9 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
|
||||
20;
|
||||
}
|
||||
|
||||
/*********/
|
||||
/********/
|
||||
/* Stop */
|
||||
/*********/
|
||||
/********/
|
||||
rc = drxj_dap_write_reg16(dev_addr, ORX_COMM_EXEC__A, ORX_COMM_EXEC_STOP, 0);
|
||||
if (rc != 0) {
|
||||
pr_err("error %d\n", rc);
|
||||
@ -10004,9 +10004,9 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
|
||||
pr_err("error %d\n", rc);
|
||||
goto rw_error;
|
||||
}
|
||||
/*********/
|
||||
/********/
|
||||
/* Reset */
|
||||
/*********/
|
||||
/********/
|
||||
scu_cmd.command = SCU_RAM_COMMAND_STANDARD_OOB
|
||||
| SCU_RAM_COMMAND_CMD_DEMOD_RESET;
|
||||
scu_cmd.parameter_len = 0;
|
||||
@ -10017,9 +10017,9 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
|
||||
pr_err("error %d\n", rc);
|
||||
goto rw_error;
|
||||
}
|
||||
/***********/
|
||||
/**********/
|
||||
/* SET_ENV */
|
||||
/***********/
|
||||
/**********/
|
||||
/* set frequency, spectrum inversion and data rate */
|
||||
scu_cmd.command = SCU_RAM_COMMAND_STANDARD_OOB
|
||||
| SCU_RAM_COMMAND_CMD_DEMOD_SET_ENV;
|
||||
@ -10376,9 +10376,9 @@ static int ctrl_set_oob(struct drx_demod_instance *demod, struct drxoob *oob_par
|
||||
pr_err("error %d\n", rc);
|
||||
goto rw_error;
|
||||
}
|
||||
/*********/
|
||||
/********/
|
||||
/* Start */
|
||||
/*********/
|
||||
/********/
|
||||
scu_cmd.command = SCU_RAM_COMMAND_STANDARD_OOB
|
||||
| SCU_RAM_COMMAND_CMD_DEMOD_START;
|
||||
scu_cmd.parameter_len = 0;
|
||||
@ -10419,7 +10419,7 @@ rw_error:
|
||||
/*=============================================================================
|
||||
===== ctrl_set_channel() ==========================================================
|
||||
===========================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_channel()
|
||||
* \brief Select a new transmission channel.
|
||||
* \param demod instance of demod.
|
||||
@ -10652,7 +10652,7 @@ rw_error:
|
||||
===== SigQuality() ==========================================================
|
||||
===========================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_sig_quality()
|
||||
* \brief Retrieve signal quality form device.
|
||||
* \param devmod Pointer to demodulator instance.
|
||||
@ -10768,7 +10768,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_lock_status()
|
||||
* \brief Retrieve lock status .
|
||||
* \param dev_addr Pointer to demodulator device address.
|
||||
@ -10856,7 +10856,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_standard()
|
||||
* \brief Set modulation standard to be used.
|
||||
* \param standard Modulation standard.
|
||||
@ -11012,7 +11012,7 @@ static void drxj_reset_mode(struct drxj_data *ext_attr)
|
||||
ext_attr->vsb_pre_saw_cfg.use_pre_saw = true;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_power_mode()
|
||||
* \brief Set the power mode of the device to the specified power mode
|
||||
* \param demod Pointer to demodulator instance.
|
||||
@ -11171,7 +11171,7 @@ rw_error:
|
||||
/*== CTRL Set/Get Config related functions ===================================*/
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_cfg_pre_saw()
|
||||
* \brief Set Pre-saw reference.
|
||||
* \param demod demod instance
|
||||
@ -11234,7 +11234,7 @@ rw_error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn int ctrl_set_cfg_afe_gain()
|
||||
* \brief Set AFE Gain.
|
||||
* \param demod demod instance
|
||||
@ -11324,7 +11324,7 @@ static int drx_ctrl_u_code(struct drx_demod_instance *demod,
|
||||
enum drxu_code_action action);
|
||||
static int drxj_set_lna_state(struct drx_demod_instance *demod, bool state);
|
||||
|
||||
/**
|
||||
/*
|
||||
* \fn drxj_open()
|
||||
* \brief Open the demod instance, configure device, configure drxdriver
|
||||
* \return Status_t Return status.
|
||||
@ -11543,7 +11543,7 @@ rw_error:
|
||||
}
|
||||
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \fn drxj_close()
|
||||
* \brief Close the demod instance, power down the device
|
||||
* \return Status_t Return status.
|
||||
@ -11594,7 +11594,7 @@ rw_error:
|
||||
* Microcode related functions
|
||||
*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* drx_u_code_compute_crc - Compute CRC of block of microcode data.
|
||||
* @block_data: Pointer to microcode data.
|
||||
* @nr_words: Size of microcode block (number of 16 bits words).
|
||||
@ -11622,7 +11622,7 @@ static u16 drx_u_code_compute_crc(u8 *block_data, u16 nr_words)
|
||||
return (u16)(crc_word >> 16);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* drx_check_firmware - checks if the loaded firmware is valid
|
||||
*
|
||||
* @demod: demod structure
|
||||
@ -11708,7 +11708,7 @@ eof:
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* drx_ctrl_u_code - Handle microcode upload or verify.
|
||||
* @dev_addr: Address of device.
|
||||
* @mc_info: Pointer to information about microcode data.
|
||||
|
@ -69,15 +69,15 @@ TYPEDEFS
|
||||
|
||||
struct drxjscu_cmd {
|
||||
u16 command;
|
||||
/**< Command number */
|
||||
/*< Command number */
|
||||
u16 parameter_len;
|
||||
/**< Data length in byte */
|
||||
/*< Data length in byte */
|
||||
u16 result_len;
|
||||
/**< result length in byte */
|
||||
/*< result length in byte */
|
||||
u16 *parameter;
|
||||
/**< General purpous param */
|
||||
/*< General purpous param */
|
||||
u16 *result;
|
||||
/**< General purpous param */};
|
||||
/*< General purpous param */};
|
||||
|
||||
/*============================================================================*/
|
||||
/*============================================================================*/
|
||||
@ -130,7 +130,7 @@ TYPEDEFS
|
||||
|
||||
DRXJ_CFG_MAX /* dummy, never to be used */};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct enum drxj_cfg_smart_ant_io * smart antenna i/o.
|
||||
*/
|
||||
enum drxj_cfg_smart_ant_io {
|
||||
@ -138,7 +138,7 @@ enum drxj_cfg_smart_ant_io {
|
||||
DRXJ_SMT_ANT_INPUT
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_smart_ant * Set smart antenna.
|
||||
*/
|
||||
struct drxj_cfg_smart_ant {
|
||||
@ -146,7 +146,7 @@ enum drxj_cfg_smart_ant_io {
|
||||
u16 ctrl_data;
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct DRXJAGCSTATUS_t
|
||||
* AGC status information from the DRXJ-IQM-AF.
|
||||
*/
|
||||
@ -158,7 +158,7 @@ struct drxj_agc_status {
|
||||
|
||||
/* DRXJ_CFG_AGC_RF, DRXJ_CFG_AGC_IF */
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct enum drxj_agc_ctrl_mode * Available AGCs modes in the DRXJ.
|
||||
*/
|
||||
enum drxj_agc_ctrl_mode {
|
||||
@ -166,7 +166,7 @@ struct drxj_agc_status {
|
||||
DRX_AGC_CTRL_USER,
|
||||
DRX_AGC_CTRL_OFF};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_agc * Generic interface for all AGCs present on the DRXJ.
|
||||
*/
|
||||
struct drxj_cfg_agc {
|
||||
@ -182,7 +182,7 @@ struct drxj_agc_status {
|
||||
|
||||
/* DRXJ_CFG_PRE_SAW */
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_pre_saw * Interface to configure pre SAW sense.
|
||||
*/
|
||||
struct drxj_cfg_pre_saw {
|
||||
@ -192,14 +192,14 @@ struct drxj_agc_status {
|
||||
|
||||
/* DRXJ_CFG_AFE_GAIN */
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_afe_gain * Interface to configure gain of AFE (LNA + PGA).
|
||||
*/
|
||||
struct drxj_cfg_afe_gain {
|
||||
enum drx_standard standard; /* standard to which these settings apply */
|
||||
u16 gain; /* gain in 0.1 dB steps, DRXJ range 140 .. 335 */};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct drxjrs_errors
|
||||
* Available failure information in DRXJ_FEC_RS.
|
||||
*
|
||||
@ -208,25 +208,25 @@ struct drxj_agc_status {
|
||||
*/
|
||||
struct drxjrs_errors {
|
||||
u16 nr_bit_errors;
|
||||
/**< no of pre RS bit errors */
|
||||
/*< no of pre RS bit errors */
|
||||
u16 nr_symbol_errors;
|
||||
/**< no of pre RS symbol errors */
|
||||
/*< no of pre RS symbol errors */
|
||||
u16 nr_packet_errors;
|
||||
/**< no of pre RS packet errors */
|
||||
/*< no of pre RS packet errors */
|
||||
u16 nr_failures;
|
||||
/**< no of post RS failures to decode */
|
||||
/*< no of post RS failures to decode */
|
||||
u16 nr_snc_par_fail_count;
|
||||
/**< no of post RS bit erros */
|
||||
/*< no of post RS bit erros */
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_vsb_misc * symbol error rate
|
||||
*/
|
||||
struct drxj_cfg_vsb_misc {
|
||||
u32 symb_error;
|
||||
/**< symbol error rate sps */};
|
||||
/*< symbol error rate sps */};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /enum enum drxj_mpeg_output_clock_rate * Mpeg output clock rate.
|
||||
*
|
||||
*/
|
||||
@ -234,7 +234,7 @@ struct drxj_agc_status {
|
||||
DRXJ_MPEG_START_WIDTH_1CLKCYC,
|
||||
DRXJ_MPEG_START_WIDTH_8CLKCYC};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /enum enum drxj_mpeg_output_clock_rate * Mpeg output clock rate.
|
||||
*
|
||||
*/
|
||||
@ -247,20 +247,20 @@ struct drxj_agc_status {
|
||||
DRXJ_MPEGOUTPUT_CLOCK_RATE_25313K,
|
||||
DRXJ_MPEGOUTPUT_CLOCK_RATE_21696K};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct DRXJCfgMisc_t
|
||||
* Change TEI bit of MPEG output
|
||||
* reverse MPEG output bit order
|
||||
* set MPEG output clock rate
|
||||
*/
|
||||
struct drxj_cfg_mpeg_output_misc {
|
||||
bool disable_tei_handling; /**< if true pass (not change) TEI bit */
|
||||
bool bit_reverse_mpeg_outout; /**< if true, parallel: msb on MD0; serial: lsb out first */
|
||||
bool disable_tei_handling; /*< if true pass (not change) TEI bit */
|
||||
bool bit_reverse_mpeg_outout; /*< if true, parallel: msb on MD0; serial: lsb out first */
|
||||
enum drxj_mpeg_output_clock_rate mpeg_output_clock_rate;
|
||||
/**< set MPEG output clock rate that overwirtes the derived one from symbol rate */
|
||||
enum drxj_mpeg_start_width mpeg_start_width; /**< set MPEG output start width */};
|
||||
/*< set MPEG output clock rate that overwirtes the derived one from symbol rate */
|
||||
enum drxj_mpeg_start_width mpeg_start_width; /*< set MPEG output start width */};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /enum enum drxj_xtal_freq * Supported external crystal reference frequency.
|
||||
*/
|
||||
enum drxj_xtal_freq {
|
||||
@ -269,21 +269,21 @@ struct drxj_agc_status {
|
||||
DRXJ_XTAL_FREQ_20P25MHZ,
|
||||
DRXJ_XTAL_FREQ_4MHZ};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /enum enum drxj_xtal_freq * Supported external crystal reference frequency.
|
||||
*/
|
||||
enum drxji2c_speed {
|
||||
DRXJ_I2C_SPEED_400KBPS,
|
||||
DRXJ_I2C_SPEED_100KBPS};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_hw_cfg * Get hw configuration, such as crystal reference frequency, I2C speed, etc...
|
||||
*/
|
||||
struct drxj_cfg_hw_cfg {
|
||||
enum drxj_xtal_freq xtal_freq;
|
||||
/**< crystal reference frequency */
|
||||
/*< crystal reference frequency */
|
||||
enum drxji2c_speed i2c_speed;
|
||||
/**< 100 or 400 kbps */};
|
||||
/*< 100 or 400 kbps */};
|
||||
|
||||
/*
|
||||
* DRXJ_CFG_ATV_MISC
|
||||
@ -352,7 +352,7 @@ struct drxj_cfg_oob_misc {
|
||||
* DRXJ_CFG_ATV_OUTPUT
|
||||
*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* /enum DRXJAttenuation_t
|
||||
* Attenuation setting for SIF AGC.
|
||||
*
|
||||
@ -363,7 +363,7 @@ struct drxj_cfg_oob_misc {
|
||||
DRXJ_SIF_ATTENUATION_6DB,
|
||||
DRXJ_SIF_ATTENUATION_9DB};
|
||||
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_cfg_atv_output * SIF attenuation setting.
|
||||
*
|
||||
*/
|
||||
@ -398,7 +398,7 @@ struct drxj_cfg_atv_output {
|
||||
/*============================================================================*/
|
||||
|
||||
/*========================================*/
|
||||
/**
|
||||
/*
|
||||
* /struct struct drxj_data * DRXJ specific attributes.
|
||||
*
|
||||
* Global data container for DRXJ specific data.
|
||||
@ -406,93 +406,93 @@ struct drxj_cfg_atv_output {
|
||||
*/
|
||||
struct drxj_data {
|
||||
/* device capabilties (determined during drx_open()) */
|
||||
bool has_lna; /**< true if LNA (aka PGA) present */
|
||||
bool has_oob; /**< true if OOB supported */
|
||||
bool has_ntsc; /**< true if NTSC supported */
|
||||
bool has_btsc; /**< true if BTSC supported */
|
||||
bool has_smatx; /**< true if mat_tx is available */
|
||||
bool has_smarx; /**< true if mat_rx is available */
|
||||
bool has_gpio; /**< true if GPIO is available */
|
||||
bool has_irqn; /**< true if IRQN is available */
|
||||
bool has_lna; /*< true if LNA (aka PGA) present */
|
||||
bool has_oob; /*< true if OOB supported */
|
||||
bool has_ntsc; /*< true if NTSC supported */
|
||||
bool has_btsc; /*< true if BTSC supported */
|
||||
bool has_smatx; /*< true if mat_tx is available */
|
||||
bool has_smarx; /*< true if mat_rx is available */
|
||||
bool has_gpio; /*< true if GPIO is available */
|
||||
bool has_irqn; /*< true if IRQN is available */
|
||||
/* A1/A2/A... */
|
||||
u8 mfx; /**< metal fix */
|
||||
u8 mfx; /*< metal fix */
|
||||
|
||||
/* tuner settings */
|
||||
bool mirror_freq_spect_oob;/**< tuner inversion (true = tuner mirrors the signal */
|
||||
bool mirror_freq_spect_oob;/*< tuner inversion (true = tuner mirrors the signal */
|
||||
|
||||
/* standard/channel settings */
|
||||
enum drx_standard standard; /**< current standard information */
|
||||
enum drx_standard standard; /*< current standard information */
|
||||
enum drx_modulation constellation;
|
||||
/**< current constellation */
|
||||
s32 frequency; /**< center signal frequency in KHz */
|
||||
/*< current constellation */
|
||||
s32 frequency; /*< center signal frequency in KHz */
|
||||
enum drx_bandwidth curr_bandwidth;
|
||||
/**< current channel bandwidth */
|
||||
enum drx_mirror mirror; /**< current channel mirror */
|
||||
/*< current channel bandwidth */
|
||||
enum drx_mirror mirror; /*< current channel mirror */
|
||||
|
||||
/* signal quality information */
|
||||
u32 fec_bits_desired; /**< BER accounting period */
|
||||
u16 fec_vd_plen; /**< no of trellis symbols: VD SER measurement period */
|
||||
u16 qam_vd_prescale; /**< Viterbi Measurement Prescale */
|
||||
u16 qam_vd_period; /**< Viterbi Measurement period */
|
||||
u16 fec_rs_plen; /**< defines RS BER measurement period */
|
||||
u16 fec_rs_prescale; /**< ReedSolomon Measurement Prescale */
|
||||
u16 fec_rs_period; /**< ReedSolomon Measurement period */
|
||||
bool reset_pkt_err_acc; /**< Set a flag to reset accumulated packet error */
|
||||
u16 pkt_err_acc_start; /**< Set a flag to reset accumulated packet error */
|
||||
u32 fec_bits_desired; /*< BER accounting period */
|
||||
u16 fec_vd_plen; /*< no of trellis symbols: VD SER measurement period */
|
||||
u16 qam_vd_prescale; /*< Viterbi Measurement Prescale */
|
||||
u16 qam_vd_period; /*< Viterbi Measurement period */
|
||||
u16 fec_rs_plen; /*< defines RS BER measurement period */
|
||||
u16 fec_rs_prescale; /*< ReedSolomon Measurement Prescale */
|
||||
u16 fec_rs_period; /*< ReedSolomon Measurement period */
|
||||
bool reset_pkt_err_acc; /*< Set a flag to reset accumulated packet error */
|
||||
u16 pkt_err_acc_start; /*< Set a flag to reset accumulated packet error */
|
||||
|
||||
/* HI configuration */
|
||||
u16 hi_cfg_timing_div; /**< HI Configure() parameter 2 */
|
||||
u16 hi_cfg_bridge_delay; /**< HI Configure() parameter 3 */
|
||||
u16 hi_cfg_wake_up_key; /**< HI Configure() parameter 4 */
|
||||
u16 hi_cfg_ctrl; /**< HI Configure() parameter 5 */
|
||||
u16 hi_cfg_transmit; /**< HI Configure() parameter 6 */
|
||||
u16 hi_cfg_timing_div; /*< HI Configure() parameter 2 */
|
||||
u16 hi_cfg_bridge_delay; /*< HI Configure() parameter 3 */
|
||||
u16 hi_cfg_wake_up_key; /*< HI Configure() parameter 4 */
|
||||
u16 hi_cfg_ctrl; /*< HI Configure() parameter 5 */
|
||||
u16 hi_cfg_transmit; /*< HI Configure() parameter 6 */
|
||||
|
||||
/* UIO configuration */
|
||||
enum drxuio_mode uio_sma_rx_mode;/**< current mode of SmaRx pin */
|
||||
enum drxuio_mode uio_sma_tx_mode;/**< current mode of SmaTx pin */
|
||||
enum drxuio_mode uio_gpio_mode; /**< current mode of ASEL pin */
|
||||
enum drxuio_mode uio_irqn_mode; /**< current mode of IRQN pin */
|
||||
enum drxuio_mode uio_sma_rx_mode;/*< current mode of SmaRx pin */
|
||||
enum drxuio_mode uio_sma_tx_mode;/*< current mode of SmaTx pin */
|
||||
enum drxuio_mode uio_gpio_mode; /*< current mode of ASEL pin */
|
||||
enum drxuio_mode uio_irqn_mode; /*< current mode of IRQN pin */
|
||||
|
||||
/* IQM fs frequecy shift and inversion */
|
||||
u32 iqm_fs_rate_ofs; /**< frequency shifter setting after setchannel */
|
||||
bool pos_image; /**< Ture: positive image */
|
||||
u32 iqm_fs_rate_ofs; /*< frequency shifter setting after setchannel */
|
||||
bool pos_image; /*< Ture: positive image */
|
||||
/* IQM RC frequecy shift */
|
||||
u32 iqm_rc_rate_ofs; /**< frequency shifter setting after setchannel */
|
||||
u32 iqm_rc_rate_ofs; /*< frequency shifter setting after setchannel */
|
||||
|
||||
/* ATV configuration */
|
||||
u32 atv_cfg_changed_flags; /**< flag: flags cfg changes */
|
||||
s16 atv_top_equ0[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU0__A */
|
||||
s16 atv_top_equ1[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU1__A */
|
||||
s16 atv_top_equ2[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU2__A */
|
||||
s16 atv_top_equ3[DRXJ_COEF_IDX_MAX]; /**< shadow of ATV_TOP_EQU3__A */
|
||||
bool phase_correction_bypass;/**< flag: true=bypass */
|
||||
s16 atv_top_vid_peak; /**< shadow of ATV_TOP_VID_PEAK__A */
|
||||
u16 atv_top_noise_th; /**< shadow of ATV_TOP_NOISE_TH__A */
|
||||
bool enable_cvbs_output; /**< flag CVBS ouput enable */
|
||||
bool enable_sif_output; /**< flag SIF ouput enable */
|
||||
u32 atv_cfg_changed_flags; /*< flag: flags cfg changes */
|
||||
s16 atv_top_equ0[DRXJ_COEF_IDX_MAX]; /*< shadow of ATV_TOP_EQU0__A */
|
||||
s16 atv_top_equ1[DRXJ_COEF_IDX_MAX]; /*< shadow of ATV_TOP_EQU1__A */
|
||||
s16 atv_top_equ2[DRXJ_COEF_IDX_MAX]; /*< shadow of ATV_TOP_EQU2__A */
|
||||
s16 atv_top_equ3[DRXJ_COEF_IDX_MAX]; /*< shadow of ATV_TOP_EQU3__A */
|
||||
bool phase_correction_bypass;/*< flag: true=bypass */
|
||||
s16 atv_top_vid_peak; /*< shadow of ATV_TOP_VID_PEAK__A */
|
||||
u16 atv_top_noise_th; /*< shadow of ATV_TOP_NOISE_TH__A */
|
||||
bool enable_cvbs_output; /*< flag CVBS ouput enable */
|
||||
bool enable_sif_output; /*< flag SIF ouput enable */
|
||||
enum drxjsif_attenuation sif_attenuation;
|
||||
/**< current SIF att setting */
|
||||
/*< current SIF att setting */
|
||||
/* Agc configuration for QAM and VSB */
|
||||
struct drxj_cfg_agc qam_rf_agc_cfg; /**< qam RF AGC config */
|
||||
struct drxj_cfg_agc qam_if_agc_cfg; /**< qam IF AGC config */
|
||||
struct drxj_cfg_agc vsb_rf_agc_cfg; /**< vsb RF AGC config */
|
||||
struct drxj_cfg_agc vsb_if_agc_cfg; /**< vsb IF AGC config */
|
||||
struct drxj_cfg_agc qam_rf_agc_cfg; /*< qam RF AGC config */
|
||||
struct drxj_cfg_agc qam_if_agc_cfg; /*< qam IF AGC config */
|
||||
struct drxj_cfg_agc vsb_rf_agc_cfg; /*< vsb RF AGC config */
|
||||
struct drxj_cfg_agc vsb_if_agc_cfg; /*< vsb IF AGC config */
|
||||
|
||||
/* PGA gain configuration for QAM and VSB */
|
||||
u16 qam_pga_cfg; /**< qam PGA config */
|
||||
u16 vsb_pga_cfg; /**< vsb PGA config */
|
||||
u16 qam_pga_cfg; /*< qam PGA config */
|
||||
u16 vsb_pga_cfg; /*< vsb PGA config */
|
||||
|
||||
/* Pre SAW configuration for QAM and VSB */
|
||||
struct drxj_cfg_pre_saw qam_pre_saw_cfg;
|
||||
/**< qam pre SAW config */
|
||||
/*< qam pre SAW config */
|
||||
struct drxj_cfg_pre_saw vsb_pre_saw_cfg;
|
||||
/**< qam pre SAW config */
|
||||
/*< qam pre SAW config */
|
||||
|
||||
/* Version information */
|
||||
char v_text[2][12]; /**< allocated text versions */
|
||||
struct drx_version v_version[2]; /**< allocated versions structs */
|
||||
char v_text[2][12]; /*< allocated text versions */
|
||||
struct drx_version v_version[2]; /*< allocated versions structs */
|
||||
struct drx_version_list v_list_elements[2];
|
||||
/**< allocated version list */
|
||||
/*< allocated version list */
|
||||
|
||||
/* smart antenna configuration */
|
||||
bool smart_ant_inverted;
|
||||
@ -502,25 +502,25 @@ struct drxj_cfg_atv_output {
|
||||
bool oob_power_on;
|
||||
|
||||
/* MPEG static bitrate setting */
|
||||
u32 mpeg_ts_static_bitrate; /**< bitrate static MPEG output */
|
||||
bool disable_te_ihandling; /**< MPEG TS TEI handling */
|
||||
bool bit_reverse_mpeg_outout;/**< MPEG output bit order */
|
||||
u32 mpeg_ts_static_bitrate; /*< bitrate static MPEG output */
|
||||
bool disable_te_ihandling; /*< MPEG TS TEI handling */
|
||||
bool bit_reverse_mpeg_outout;/*< MPEG output bit order */
|
||||
enum drxj_mpeg_output_clock_rate mpeg_output_clock_rate;
|
||||
/**< MPEG output clock rate */
|
||||
/*< MPEG output clock rate */
|
||||
enum drxj_mpeg_start_width mpeg_start_width;
|
||||
/**< MPEG Start width */
|
||||
/*< MPEG Start width */
|
||||
|
||||
/* Pre SAW & Agc configuration for ATV */
|
||||
struct drxj_cfg_pre_saw atv_pre_saw_cfg;
|
||||
/**< atv pre SAW config */
|
||||
struct drxj_cfg_agc atv_rf_agc_cfg; /**< atv RF AGC config */
|
||||
struct drxj_cfg_agc atv_if_agc_cfg; /**< atv IF AGC config */
|
||||
u16 atv_pga_cfg; /**< atv pga config */
|
||||
/*< atv pre SAW config */
|
||||
struct drxj_cfg_agc atv_rf_agc_cfg; /*< atv RF AGC config */
|
||||
struct drxj_cfg_agc atv_if_agc_cfg; /*< atv IF AGC config */
|
||||
u16 atv_pga_cfg; /*< atv pga config */
|
||||
|
||||
u32 curr_symbol_rate;
|
||||
|
||||
/* pin-safe mode */
|
||||
bool pdr_safe_mode; /**< PDR safe mode activated */
|
||||
bool pdr_safe_mode; /*< PDR safe mode activated */
|
||||
u16 pdr_safe_restore_val_gpio;
|
||||
u16 pdr_safe_restore_val_v_sync;
|
||||
u16 pdr_safe_restore_val_sma_rx;
|
||||
@ -531,12 +531,12 @@ struct drxj_cfg_atv_output {
|
||||
enum drxj_cfg_oob_lo_power oob_lo_pow;
|
||||
|
||||
struct drx_aud_data aud_data;
|
||||
/**< audio storage */};
|
||||
/*< audio storage */};
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
Access MACROS
|
||||
-------------------------------------------------------------------------*/
|
||||
/**
|
||||
/*
|
||||
* \brief Compilable references to attributes
|
||||
* \param d pointer to demod instance
|
||||
*
|
||||
@ -554,7 +554,7 @@ Access MACROS
|
||||
DEFINES
|
||||
-------------------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_NTSC_CARRIER_FREQ_OFFSET
|
||||
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain
|
||||
*
|
||||
@ -569,7 +569,7 @@ DEFINES
|
||||
*/
|
||||
#define DRXJ_NTSC_CARRIER_FREQ_OFFSET ((s32)(1750))
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_PAL_SECAM_BG_CARRIER_FREQ_OFFSET
|
||||
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain
|
||||
*
|
||||
@ -585,7 +585,7 @@ DEFINES
|
||||
*/
|
||||
#define DRXJ_PAL_SECAM_BG_CARRIER_FREQ_OFFSET ((s32)(2375))
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_PAL_SECAM_DKIL_CARRIER_FREQ_OFFSET
|
||||
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain
|
||||
*
|
||||
@ -601,7 +601,7 @@ DEFINES
|
||||
*/
|
||||
#define DRXJ_PAL_SECAM_DKIL_CARRIER_FREQ_OFFSET ((s32)(2775))
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_PAL_SECAM_LP_CARRIER_FREQ_OFFSET
|
||||
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain
|
||||
*
|
||||
@ -616,7 +616,7 @@ DEFINES
|
||||
*/
|
||||
#define DRXJ_PAL_SECAM_LP_CARRIER_FREQ_OFFSET ((s32)(-3255))
|
||||
|
||||
/**
|
||||
/*
|
||||
* \def DRXJ_FM_CARRIER_FREQ_OFFSET
|
||||
* \brief Offset from sound carrier to centre frequency in kHz, in RF domain
|
||||
*
|
||||
|
@ -20,17 +20,18 @@
|
||||
* @antenna_dvbt: GPIO bit for changing antenna to DVB-C. A value of 1
|
||||
* means that 1=DVBC, 0 = DVBT. Zero means the opposite.
|
||||
* @mpeg_out_clk_strength: DRXK Mpeg output clock drive strength.
|
||||
* @chunk_size: maximum size for I2C messages
|
||||
* @microcode_name: Name of the firmware file with the microcode
|
||||
* @qam_demod_parameter_count: The number of parameters used for the command
|
||||
* to set the demodulator parameters. All
|
||||
* firmwares are using the 2-parameter commmand.
|
||||
* An exception is the "drxk_a3.mc" firmware,
|
||||
* An exception is the ``drxk_a3.mc`` firmware,
|
||||
* which uses the 4-parameter command.
|
||||
* A value of 0 (default) or lower indicates that
|
||||
* the correct number of parameters will be
|
||||
* automatically detected.
|
||||
*
|
||||
* On the *_gpio vars, bit 0 is UIO-1, bit 1 is UIO-2 and bit 2 is
|
||||
* On the ``*_gpio`` vars, bit 0 is UIO-1, bit 1 is UIO-2 and bit 2 is
|
||||
* UIO-3.
|
||||
*/
|
||||
struct drxk_config {
|
||||
@ -52,6 +53,14 @@ struct drxk_config {
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_DRXK)
|
||||
/**
|
||||
* Attach a drxk demod
|
||||
*
|
||||
* @config: pointer to &struct drxk_config with demod configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *drxk_attach(const struct drxk_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
#else
|
||||
|
@ -207,9 +207,9 @@ static inline u32 log10times100(u32 value)
|
||||
return (100L * intlog10(value)) >> 24;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
/***************************************************************************/
|
||||
/* I2C **********************************************************************/
|
||||
/****************************************************************************/
|
||||
/***************************************************************************/
|
||||
|
||||
static int drxk_i2c_lock(struct drxk_state *state)
|
||||
{
|
||||
@ -3444,7 +3444,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Activate DVBT specific presets
|
||||
* \param demod instance of demodulator.
|
||||
* \return DRXStatus_t.
|
||||
@ -3484,7 +3484,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Initialize channelswitch-independent settings for DVBT.
|
||||
* \param demod instance of demodulator.
|
||||
* \return DRXStatus_t.
|
||||
@ -3696,7 +3696,7 @@ error:
|
||||
}
|
||||
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \brief start dvbt demodulating for channel.
|
||||
* \param demod instance of demodulator.
|
||||
* \return DRXStatus_t.
|
||||
@ -3732,7 +3732,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Set up dvbt demodulator for channel.
|
||||
* \param demod instance of demodulator.
|
||||
* \return DRXStatus_t.
|
||||
@ -4086,7 +4086,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Retrieve lock status .
|
||||
* \param demod Pointer to demodulator instance.
|
||||
* \param lockStat Pointer to lock status structure.
|
||||
@ -4148,7 +4148,7 @@ static int power_up_qam(struct drxk_state *state)
|
||||
}
|
||||
|
||||
|
||||
/** Power Down QAM */
|
||||
/* Power Down QAM */
|
||||
static int power_down_qam(struct drxk_state *state)
|
||||
{
|
||||
u16 data = 0;
|
||||
@ -4186,7 +4186,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Setup of the QAM Measurement intervals for signal quality
|
||||
* \param demod instance of demod.
|
||||
* \param modulation current modulation.
|
||||
@ -4461,7 +4461,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief QAM32 specific setup
|
||||
* \param demod instance of demod.
|
||||
* \return DRXStatus_t.
|
||||
@ -4657,7 +4657,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief QAM64 specific setup
|
||||
* \param demod instance of demod.
|
||||
* \return DRXStatus_t.
|
||||
@ -4852,7 +4852,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief QAM128 specific setup
|
||||
* \param demod: instance of demod.
|
||||
* \return DRXStatus_t.
|
||||
@ -5049,7 +5049,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief QAM256 specific setup
|
||||
* \param demod: instance of demod.
|
||||
* \return DRXStatus_t.
|
||||
@ -5244,7 +5244,7 @@ error:
|
||||
|
||||
|
||||
/*============================================================================*/
|
||||
/**
|
||||
/*
|
||||
* \brief Reset QAM block.
|
||||
* \param demod: instance of demod.
|
||||
* \param channel: pointer to channel data.
|
||||
@ -5272,7 +5272,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Set QAM symbolrate.
|
||||
* \param demod: instance of demod.
|
||||
* \param channel: pointer to channel data.
|
||||
@ -5341,7 +5341,7 @@ error:
|
||||
|
||||
/*============================================================================*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* \brief Get QAM lock status.
|
||||
* \param demod: instance of demod.
|
||||
* \param channel: pointer to channel data.
|
||||
|
@ -30,16 +30,17 @@
|
||||
#define DVB_PLL_TDEE4 18
|
||||
#define DVB_PLL_THOMSON_DTT7520X 19
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_PLL)
|
||||
/**
|
||||
* Attach a dvb-pll to the supplied frontend structure.
|
||||
*
|
||||
* @param fe Frontend to attach to.
|
||||
* @param pll_addr i2c address of the PLL (if used).
|
||||
* @param i2c i2c adapter to use (set to NULL if not used).
|
||||
* @param pll_desc_id dvb_pll_desc to use.
|
||||
* @return Frontend pointer on success, NULL on failure
|
||||
* @fe: Frontend to attach to.
|
||||
* @pll_addr: i2c address of the PLL (if used).
|
||||
* @i2c: i2c adapter to use (set to NULL if not used).
|
||||
* @pll_desc_id: dvb_pll_desc to use.
|
||||
*
|
||||
* return: Frontend pointer on success, NULL on failure
|
||||
*/
|
||||
#if IS_REACHABLE(CONFIG_DVB_PLL)
|
||||
extern struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
|
||||
int pll_addr,
|
||||
struct i2c_adapter *i2c,
|
||||
|
@ -38,6 +38,7 @@ enum helene_xtal {
|
||||
* @set_tuner_priv: Callback function private context
|
||||
* @set_tuner_callback: Callback function that notifies the parent driver
|
||||
* which tuner is active now
|
||||
* @xtal: Cristal frequency as described by &enum helene_xtal
|
||||
*/
|
||||
struct helene_config {
|
||||
u8 i2c_address;
|
||||
@ -48,9 +49,31 @@ struct helene_config {
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_HELENE)
|
||||
/**
|
||||
* Attach a helene tuner (terrestrial and cable standards)
|
||||
*
|
||||
* @fe: frontend to be attached
|
||||
* @config: pointer to &struct helene_config with tuner configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
|
||||
const struct helene_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
|
||||
/**
|
||||
* Attach a helene tuner (satellite standards)
|
||||
*
|
||||
* @fe: frontend to be attached
|
||||
* @config: pointer to &struct helene_config with tuner configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
|
||||
const struct helene_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
#else
|
||||
static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
|
||||
const struct helene_config *config,
|
||||
@ -59,13 +82,6 @@ static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
|
||||
pr_warn("%s: driver disabled by Kconfig\n", __func__);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_HELENE)
|
||||
extern struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
|
||||
const struct helene_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
#else
|
||||
static inline struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
|
||||
const struct helene_config *config,
|
||||
struct i2c_adapter *i2c)
|
||||
|
@ -41,6 +41,15 @@ struct horus3a_config {
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_HORUS3A)
|
||||
/**
|
||||
* Attach a horus3a tuner
|
||||
*
|
||||
* @fe: frontend to be attached
|
||||
* @config: pointer to &struct helene_config with tuner configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
|
||||
const struct horus3a_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
/*
|
||||
* Driver for Sharp IX2505V (marked B0017) DVB-S silicon tuner
|
||||
*
|
||||
* Copyright (C) 2010 Malcolm Priestley
|
||||
@ -36,7 +36,7 @@ struct ix2505v_state {
|
||||
u32 frequency;
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* Data read format of the Sharp IX2505V B0017
|
||||
*
|
||||
* byte1: 1 | 1 | 0 | 0 | 0 | MA1 | MA0 | 1
|
||||
@ -99,7 +99,7 @@ static void ix2505v_release(struct dvb_frontend *fe)
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Data write format of the Sharp IX2505V B0017
|
||||
*
|
||||
* byte1: 1 | 1 | 0 | 0 | 0 | 0(MA1)| 0(MA0)| 0
|
||||
|
@ -20,31 +20,33 @@
|
||||
#include "dvb_frontend.h"
|
||||
|
||||
/**
|
||||
* Attach a ix2505v tuner to the supplied frontend structure.
|
||||
* struct ix2505v_config - ix2505 attachment configuration
|
||||
*
|
||||
* @param fe Frontend to attach to.
|
||||
* @param config ix2505v_config structure
|
||||
* @return FE pointer on success, NULL on failure.
|
||||
* @tuner_address: tuner address
|
||||
* @tuner_gain: Baseband AMP gain control 0/1=0dB(default) 2=-2bB 3=-4dB
|
||||
* @tuner_chargepump: Charge pump output +/- 0=120 1=260 2=555 3=1200(default)
|
||||
* @min_delay_ms: delay after tune
|
||||
* @tuner_write_only: disables reads
|
||||
*/
|
||||
|
||||
struct ix2505v_config {
|
||||
u8 tuner_address;
|
||||
|
||||
/*Baseband AMP gain control 0/1=0dB(default) 2=-2bB 3=-4dB */
|
||||
u8 tuner_gain;
|
||||
|
||||
/*Charge pump output +/- 0=120 1=260 2=555 3=1200(default) */
|
||||
u8 tuner_chargepump;
|
||||
|
||||
/* delay after tune */
|
||||
int min_delay_ms;
|
||||
|
||||
/* disables reads*/
|
||||
u8 tuner_write_only;
|
||||
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_IX2505V)
|
||||
/**
|
||||
* Attach a ix2505v tuner to the supplied frontend structure.
|
||||
*
|
||||
* @fe: Frontend to attach to.
|
||||
* @config: pointer to &struct ix2505v_config
|
||||
* @i2c: pointer to &struct i2c_adapter.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *ix2505v_attach(struct dvb_frontend *fe,
|
||||
const struct ix2505v_config *config, struct i2c_adapter *i2c);
|
||||
#else
|
||||
|
@ -517,7 +517,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
|
||||
state->i2c = i2c;
|
||||
state->first = 1;
|
||||
|
||||
/**
|
||||
/*
|
||||
* the L64781 won't show up before we send the reset_and_configure()
|
||||
* broadcast. If nothing responds there is no L64781 on the bus...
|
||||
*/
|
||||
|
@ -24,6 +24,34 @@
|
||||
* 0x68,
|
||||
*/
|
||||
|
||||
/**
|
||||
* enum m88ds3103_ts_mode - TS connection mode
|
||||
* @M88DS3103_TS_SERIAL: TS output pin D0, normal
|
||||
* @M88DS3103_TS_SERIAL_D7: TS output pin D7
|
||||
* @M88DS3103_TS_PARALLEL: TS Parallel mode
|
||||
* @M88DS3103_TS_CI: TS CI Mode
|
||||
*/
|
||||
enum m88ds3103_ts_mode {
|
||||
M88DS3103_TS_SERIAL,
|
||||
M88DS3103_TS_SERIAL_D7,
|
||||
M88DS3103_TS_PARALLEL,
|
||||
M88DS3103_TS_CI
|
||||
};
|
||||
|
||||
/**
|
||||
* enum m88ds3103_clock_out
|
||||
* @M88DS3103_CLOCK_OUT_DISABLED: Clock output is disabled
|
||||
* @M88DS3103_CLOCK_OUT_ENABLED: Clock output is enabled with crystal
|
||||
* clock.
|
||||
* @M88DS3103_CLOCK_OUT_ENABLED_DIV2: Clock output is enabled with half
|
||||
* crystal clock.
|
||||
*/
|
||||
enum m88ds3103_clock_out {
|
||||
M88DS3103_CLOCK_OUT_DISABLED,
|
||||
M88DS3103_CLOCK_OUT_ENABLED,
|
||||
M88DS3103_CLOCK_OUT_ENABLED_DIV2
|
||||
};
|
||||
|
||||
/**
|
||||
* struct m88ds3103_platform_data - Platform data for the m88ds3103 driver
|
||||
* @clk: Clock frequency.
|
||||
@ -44,24 +72,16 @@
|
||||
* @get_dvb_frontend: Get DVB frontend.
|
||||
* @get_i2c_adapter: Get I2C adapter.
|
||||
*/
|
||||
|
||||
struct m88ds3103_platform_data {
|
||||
u32 clk;
|
||||
u16 i2c_wr_max;
|
||||
#define M88DS3103_TS_SERIAL 0 /* TS output pin D0, normal */
|
||||
#define M88DS3103_TS_SERIAL_D7 1 /* TS output pin D7 */
|
||||
#define M88DS3103_TS_PARALLEL 2 /* TS Parallel mode */
|
||||
#define M88DS3103_TS_CI 3 /* TS CI Mode */
|
||||
u8 ts_mode:2;
|
||||
enum m88ds3103_ts_mode ts_mode;
|
||||
u32 ts_clk;
|
||||
enum m88ds3103_clock_out clk_out;
|
||||
u8 ts_clk_pol:1;
|
||||
u8 spec_inv:1;
|
||||
u8 agc;
|
||||
u8 agc_inv:1;
|
||||
#define M88DS3103_CLOCK_OUT_DISABLED 0
|
||||
#define M88DS3103_CLOCK_OUT_ENABLED 1
|
||||
#define M88DS3103_CLOCK_OUT_ENABLED_DIV2 2
|
||||
u8 clk_out:2;
|
||||
u8 envelope_mode:1;
|
||||
u8 lnb_hv_pol:1;
|
||||
u8 lnb_en_pol:1;
|
||||
@ -73,105 +93,60 @@ struct m88ds3103_platform_data {
|
||||
u8 attach_in_use:1;
|
||||
};
|
||||
|
||||
/*
|
||||
* Do not add new m88ds3103_attach() users! Use I2C bindings instead.
|
||||
/**
|
||||
* struct m88ds3103_config - m88ds3102 configuration
|
||||
*
|
||||
* @i2c_addr: I2C address. Default: none, must set. Example: 0x68, ...
|
||||
* @clock: Device's clock. Default: none, must set. Example: 27000000
|
||||
* @i2c_wr_max: Max bytes I2C provider is asked to write at once.
|
||||
* Default: none, must set. Example: 33, 65, ...
|
||||
* @ts_mode: TS output mode, as defined by &enum m88ds3103_ts_mode.
|
||||
* Default: M88DS3103_TS_SERIAL.
|
||||
* @ts_clk: TS clk in KHz. Default: 0.
|
||||
* @ts_clk_pol: TS clk polarity.Default: 0.
|
||||
* 1-active at falling edge; 0-active at rising edge.
|
||||
* @spec_inv: Spectrum inversion. Default: 0.
|
||||
* @agc_inv: AGC polarity. Default: 0.
|
||||
* @clock_out: Clock output, as defined by &enum m88ds3103_clock_out.
|
||||
* Default: M88DS3103_CLOCK_OUT_DISABLED.
|
||||
* @envelope_mode: DiSEqC envelope mode. Default: 0.
|
||||
* @agc: AGC configuration. Default: none, must set.
|
||||
* @lnb_hv_pol: LNB H/V pin polarity. Default: 0. Values:
|
||||
* 1: pin high set to VOLTAGE_13, pin low to set VOLTAGE_18;
|
||||
* 0: pin high set to VOLTAGE_18, pin low to set VOLTAGE_13.
|
||||
* @lnb_en_pol: LNB enable pin polarity. Default: 0. Values:
|
||||
* 1: pin high to enable, pin low to disable;
|
||||
* 0: pin high to disable, pin low to enable.
|
||||
*/
|
||||
struct m88ds3103_config {
|
||||
/*
|
||||
* I2C address
|
||||
* Default: none, must set
|
||||
* 0x68, ...
|
||||
*/
|
||||
u8 i2c_addr;
|
||||
|
||||
/*
|
||||
* clock
|
||||
* Default: none, must set
|
||||
* 27000000
|
||||
*/
|
||||
u32 clock;
|
||||
|
||||
/*
|
||||
* max bytes I2C provider is asked to write at once
|
||||
* Default: none, must set
|
||||
* 33, 65, ...
|
||||
*/
|
||||
u16 i2c_wr_max;
|
||||
|
||||
/*
|
||||
* TS output mode
|
||||
* Default: M88DS3103_TS_SERIAL
|
||||
*/
|
||||
#define M88DS3103_TS_SERIAL 0 /* TS output pin D0, normal */
|
||||
#define M88DS3103_TS_SERIAL_D7 1 /* TS output pin D7 */
|
||||
#define M88DS3103_TS_PARALLEL 2 /* TS Parallel mode */
|
||||
#define M88DS3103_TS_CI 3 /* TS CI Mode */
|
||||
u8 ts_mode;
|
||||
|
||||
/*
|
||||
* TS clk in KHz
|
||||
* Default: 0.
|
||||
*/
|
||||
u32 ts_clk;
|
||||
|
||||
/*
|
||||
* TS clk polarity.
|
||||
* Default: 0. 1-active at falling edge; 0-active at rising edge.
|
||||
*/
|
||||
u8 ts_clk_pol:1;
|
||||
|
||||
/*
|
||||
* spectrum inversion
|
||||
* Default: 0
|
||||
*/
|
||||
u8 spec_inv:1;
|
||||
|
||||
/*
|
||||
* AGC polarity
|
||||
* Default: 0
|
||||
*/
|
||||
u8 agc_inv:1;
|
||||
|
||||
/*
|
||||
* clock output
|
||||
* Default: M88DS3103_CLOCK_OUT_DISABLED
|
||||
*/
|
||||
#define M88DS3103_CLOCK_OUT_DISABLED 0
|
||||
#define M88DS3103_CLOCK_OUT_ENABLED 1
|
||||
#define M88DS3103_CLOCK_OUT_ENABLED_DIV2 2
|
||||
u8 clock_out;
|
||||
|
||||
/*
|
||||
* DiSEqC envelope mode
|
||||
* Default: 0
|
||||
*/
|
||||
u8 envelope_mode:1;
|
||||
|
||||
/*
|
||||
* AGC configuration
|
||||
* Default: none, must set
|
||||
*/
|
||||
u8 agc;
|
||||
|
||||
/*
|
||||
* LNB H/V pin polarity
|
||||
* Default: 0.
|
||||
* 1: pin high set to VOLTAGE_13, pin low to set VOLTAGE_18.
|
||||
* 0: pin high set to VOLTAGE_18, pin low to set VOLTAGE_13.
|
||||
*/
|
||||
u8 lnb_hv_pol:1;
|
||||
|
||||
/*
|
||||
* LNB enable pin polarity
|
||||
* Default: 0.
|
||||
* 1: pin high to enable, pin low to disable.
|
||||
* 0: pin high to disable, pin low to enable.
|
||||
*/
|
||||
u8 lnb_en_pol:1;
|
||||
};
|
||||
|
||||
#if defined(CONFIG_DVB_M88DS3103) || \
|
||||
(defined(CONFIG_DVB_M88DS3103_MODULE) && defined(MODULE))
|
||||
/**
|
||||
* Attach a m88ds3103 demod
|
||||
*
|
||||
* @config: pointer to &struct m88ds3103_config with demod configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
* @tuner_i2c: on success, returns the I2C adapter associated with
|
||||
* m88ds3103 tuner.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
* Note: Do not add new m88ds3103_attach() users! Use I2C bindings instead.
|
||||
*/
|
||||
extern struct dvb_frontend *m88ds3103_attach(
|
||||
const struct m88ds3103_config *config,
|
||||
struct i2c_adapter *i2c,
|
||||
|
@ -26,7 +26,6 @@
|
||||
* @demod_address: the demodulator's i2c address
|
||||
* @is_serial: if true, TS is serial. Otherwise, TS is parallel
|
||||
*/
|
||||
|
||||
struct mb86a20s_config {
|
||||
u32 fclk;
|
||||
u8 demod_address;
|
||||
@ -34,9 +33,17 @@ struct mb86a20s_config {
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_MB86A20S)
|
||||
/**
|
||||
* Attach a mb86a20s demod
|
||||
*
|
||||
* @config: pointer to &struct mb86a20s_config with demod configuration.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *mb86a20s_attach(const struct mb86a20s_config *config,
|
||||
struct i2c_adapter *i2c);
|
||||
extern struct i2c_adapter *mb86a20s_get_tuner_i2c_adapter(struct dvb_frontend *);
|
||||
|
||||
#else
|
||||
static inline struct dvb_frontend *mb86a20s_attach(
|
||||
const struct mb86a20s_config *config, struct i2c_adapter *i2c)
|
||||
@ -44,12 +51,6 @@ static inline struct dvb_frontend *mb86a20s_attach(
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return NULL;
|
||||
}
|
||||
static inline struct i2c_adapter *
|
||||
mb86a20s_get_tuner_i2c_adapter(struct dvb_frontend *fe)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
return NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* MB86A20S */
|
||||
|
@ -19,21 +19,21 @@
|
||||
|
||||
#include <linux/dvb/frontend.h>
|
||||
|
||||
/**
|
||||
* struct mn88472_config - Platform data for the mn88472 driver
|
||||
* @xtal: Clock frequency.
|
||||
* @ts_mode: TS mode.
|
||||
* @ts_clock: TS clock config.
|
||||
* @i2c_wr_max: Max number of bytes driver writes to I2C at once.
|
||||
* @get_dvb_frontend: Get DVB frontend.
|
||||
*/
|
||||
|
||||
/* Define old names for backward compatibility */
|
||||
#define VARIABLE_TS_CLOCK MN88472_TS_CLK_VARIABLE
|
||||
#define FIXED_TS_CLOCK MN88472_TS_CLK_FIXED
|
||||
#define SERIAL_TS_MODE MN88472_TS_MODE_SERIAL
|
||||
#define PARALLEL_TS_MODE MN88472_TS_MODE_PARALLEL
|
||||
|
||||
/**
|
||||
* struct mn88472_config - Platform data for the mn88472 driver
|
||||
* @xtal: Clock frequency.
|
||||
* @ts_mode: TS mode.
|
||||
* @ts_clock: TS clock config.
|
||||
* @i2c_wr_max: Max number of bytes driver writes to I2C at once.
|
||||
* @fe: pointer to a frontend pointer
|
||||
* @get_dvb_frontend: Get DVB frontend callback.
|
||||
*/
|
||||
struct mn88472_config {
|
||||
unsigned int xtal;
|
||||
|
||||
|
@ -32,7 +32,6 @@
|
||||
* @pid_filter: Set PID to PID filter.
|
||||
* @pid_filter_ctrl: Control PID filter.
|
||||
*/
|
||||
|
||||
struct rtl2830_platform_data {
|
||||
u32 clk;
|
||||
bool spec_inv;
|
||||
|
@ -35,7 +35,6 @@
|
||||
* @pid_filter: Set PID to PID filter.
|
||||
* @pid_filter_ctrl: Control PID filter.
|
||||
*/
|
||||
|
||||
struct rtl2832_platform_data {
|
||||
u32 clk;
|
||||
/*
|
||||
|
@ -33,15 +33,11 @@
|
||||
* struct rtl2832_sdr_platform_data - Platform data for the rtl2832_sdr driver
|
||||
* @clk: Clock frequency (4000000, 16000000, 25000000, 28800000).
|
||||
* @tuner: Used tuner model.
|
||||
* @i2c_client: rtl2832 demod driver I2C client.
|
||||
* @bulk_read: rtl2832 driver private I/O interface.
|
||||
* @bulk_write: rtl2832 driver private I/O interface.
|
||||
* @update_bits: rtl2832 driver private I/O interface.
|
||||
* @regmap: pointer to &struct regmap.
|
||||
* @dvb_frontend: rtl2832 DVB frontend.
|
||||
* @v4l2_subdev: Tuner v4l2 controls.
|
||||
* @dvb_usb_device: DVB USB interface for USB streaming.
|
||||
*/
|
||||
|
||||
struct rtl2832_sdr_platform_data {
|
||||
u32 clk;
|
||||
/*
|
||||
|
@ -57,7 +57,7 @@ static int sp887x_writereg (struct sp887x_state* state, u16 reg, u16 data)
|
||||
int ret;
|
||||
|
||||
if ((ret = i2c_transfer(state->i2c, &msg, 1)) != 1) {
|
||||
/**
|
||||
/*
|
||||
* in case of soft reset we ignore ACK errors...
|
||||
*/
|
||||
if (!(reg == 0xf1a && data == 0x000 &&
|
||||
@ -130,7 +130,7 @@ static void sp887x_setup_agc (struct sp887x_state* state)
|
||||
|
||||
#define BLOCKSIZE 30
|
||||
#define FW_SIZE 0x4000
|
||||
/**
|
||||
/*
|
||||
* load firmware and setup MPEG interface...
|
||||
*/
|
||||
static int sp887x_initial_setup (struct dvb_frontend* fe, const struct firmware *fw)
|
||||
@ -279,7 +279,7 @@ static int configure_reg0xc05(struct dtv_frontend_properties *p, u16 *reg0xc05)
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* estimates division of two 24bit numbers,
|
||||
* derived from the ves1820/stv0299 driver code
|
||||
*/
|
||||
|
@ -26,15 +26,16 @@
|
||||
#include <linux/i2c.h>
|
||||
#include "dvb_frontend.h"
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_STB6000)
|
||||
/**
|
||||
* Attach a stb6000 tuner to the supplied frontend structure.
|
||||
*
|
||||
* @param fe Frontend to attach to.
|
||||
* @param addr i2c address of the tuner.
|
||||
* @param i2c i2c adapter to use.
|
||||
* @return FE pointer on success, NULL on failure.
|
||||
* @fe: Frontend to attach to.
|
||||
* @addr: i2c address of the tuner.
|
||||
* @i2c: i2c adapter to use.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
#if IS_REACHABLE(CONFIG_DVB_STB6000)
|
||||
extern struct dvb_frontend *stb6000_attach(struct dvb_frontend *fe, int addr,
|
||||
struct i2c_adapter *i2c);
|
||||
#else
|
||||
|
@ -368,7 +368,7 @@ static int stv0299_set_voltage(struct dvb_frontend *fe,
|
||||
reg0x08 = stv0299_readreg (state, 0x08);
|
||||
reg0x0c = stv0299_readreg (state, 0x0c);
|
||||
|
||||
/**
|
||||
/*
|
||||
* H/V switching over OP0, OP1 and OP2 are LNB power enable bits
|
||||
*/
|
||||
reg0x0c &= 0x0f;
|
||||
|
@ -38,7 +38,6 @@
|
||||
* @tuner_i2c_addr: CX24118A tuner I2C address (0x14, 0x54, ...).
|
||||
* @get_dvb_frontend: Get DVB frontend.
|
||||
*/
|
||||
|
||||
struct tda10071_platform_data {
|
||||
u32 clk;
|
||||
u16 i2c_wr_max;
|
||||
|
@ -29,11 +29,12 @@
|
||||
/**
|
||||
* Attach a tda826x tuner to the supplied frontend structure.
|
||||
*
|
||||
* @param fe Frontend to attach to.
|
||||
* @param addr i2c address of the tuner.
|
||||
* @param i2c i2c adapter to use.
|
||||
* @param has_loopthrough Set to 1 if the card has a loopthrough RF connector.
|
||||
* @return FE pointer on success, NULL on failure.
|
||||
* @fe: Frontend to attach to.
|
||||
* @addr: i2c address of the tuner.
|
||||
* @i2c: i2c adapter to use.
|
||||
* @has_loopthrough: Set to 1 if the card has a loopthrough RF connector.
|
||||
*
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
#if IS_REACHABLE(CONFIG_DVB_TDA826X)
|
||||
extern struct dvb_frontend* tda826x_attach(struct dvb_frontend *fe, int addr,
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
/*
|
||||
* Driver for Infineon tua6100 pll.
|
||||
*
|
||||
* (c) 2006 Andrew de Quincey
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
/*
|
||||
* Driver for Infineon tua6100 PLL.
|
||||
*
|
||||
* (c) 2006 Andrew de Quincey
|
||||
|
@ -27,7 +27,6 @@
|
||||
* @reg_read: Register read callback.
|
||||
* @reg_write: Register write callback.
|
||||
*/
|
||||
|
||||
struct zd1301_demod_platform_data {
|
||||
void *reg_priv;
|
||||
int (*reg_read)(void *, u16, u8 *);
|
||||
@ -41,8 +40,7 @@ struct zd1301_demod_platform_data {
|
||||
*
|
||||
* Return: Pointer to DVB frontend which given platform device owns.
|
||||
*/
|
||||
|
||||
struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *);
|
||||
struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *pdev);
|
||||
|
||||
/**
|
||||
* zd1301_demod_get_i2c_adapter() - Get pointer to I2C adapter
|
||||
@ -50,11 +48,16 @@ struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *);
|
||||
*
|
||||
* Return: Pointer to I2C adapter which given platform device owns.
|
||||
*/
|
||||
|
||||
struct i2c_adapter *zd1301_demod_get_i2c_adapter(struct platform_device *);
|
||||
struct i2c_adapter *zd1301_demod_get_i2c_adapter(struct platform_device *pdev);
|
||||
|
||||
#else
|
||||
|
||||
/**
|
||||
* zd1301_demod_get_dvb_frontend() - Attach a zd1301 frontend
|
||||
* @dev: Pointer to platform device
|
||||
*
|
||||
* Return: Pointer to %struct dvb_frontend or NULL if attach fails.
|
||||
*/
|
||||
static inline struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *dev)
|
||||
{
|
||||
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
/*
|
||||
* Driver for Zarlink zl10036 DVB-S silicon tuner
|
||||
*
|
||||
* Copyright (C) 2006 Tino Reichardt
|
||||
@ -157,7 +157,7 @@ static int zl10036_sleep(struct dvb_frontend *fe)
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* register map of the ZL10036/ZL10038
|
||||
*
|
||||
* reg[default] content
|
||||
@ -219,7 +219,7 @@ static int zl10036_set_bandwidth(struct zl10036_state *state, u32 fbw)
|
||||
if (fbw <= 28820) {
|
||||
br = _BR_MAXIMUM;
|
||||
} else {
|
||||
/**
|
||||
/*
|
||||
* f(bw)=34,6MHz f(xtal)=10.111MHz
|
||||
* br = (10111/34600) * 63 * 1/K = 14;
|
||||
*/
|
||||
@ -315,7 +315,7 @@ static int zl10036_set_params(struct dvb_frontend *fe)
|
||||
|| (frequency > fe->ops.info.frequency_max))
|
||||
return -EINVAL;
|
||||
|
||||
/**
|
||||
/*
|
||||
* alpha = 1.35 for dvb-s
|
||||
* fBW = (alpha*symbolrate)/(2*0.8)
|
||||
* 1.35 / (2*0.8) = 27 / 32
|
||||
|
@ -20,20 +20,20 @@
|
||||
#include <linux/i2c.h>
|
||||
#include "dvb_frontend.h"
|
||||
|
||||
/**
|
||||
* Attach a zl10036 tuner to the supplied frontend structure.
|
||||
*
|
||||
* @param fe Frontend to attach to.
|
||||
* @param config zl10036_config structure
|
||||
* @return FE pointer on success, NULL on failure.
|
||||
*/
|
||||
|
||||
struct zl10036_config {
|
||||
u8 tuner_address;
|
||||
int rf_loop_enable;
|
||||
};
|
||||
|
||||
#if IS_REACHABLE(CONFIG_DVB_ZL10036)
|
||||
/**
|
||||
* Attach a zl10036 tuner to the supplied frontend structure.
|
||||
*
|
||||
* @fe: Frontend to attach to.
|
||||
* @config: zl10036_config structure.
|
||||
* @i2c: pointer to struct i2c_adapter.
|
||||
* return: FE pointer on success, NULL on failure.
|
||||
*/
|
||||
extern struct dvb_frontend *zl10036_attach(struct dvb_frontend *fe,
|
||||
const struct zl10036_config *config, struct i2c_adapter *i2c);
|
||||
#else
|
||||
|
@ -676,6 +676,7 @@ config VIDEO_OV13858
|
||||
tristate "OmniVision OV13858 sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
depends on MEDIA_CAMERA_SUPPORT
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
This is a Video4Linux2 sensor-level driver for the OmniVision
|
||||
OV13858 camera.
|
||||
|
@ -1,6 +1,7 @@
|
||||
config VIDEO_ET8EK8
|
||||
tristate "ET8EK8 camera sensor support"
|
||||
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
|
||||
select V4L2_FWNODE
|
||||
---help---
|
||||
This is a driver for the Toshiba ET8EK8 5 MP camera sensor.
|
||||
It is used for example in Nokia N900 (RX-51).
|
||||
|
@ -1770,8 +1770,7 @@ static int imx274_probe(struct i2c_client *client,
|
||||
return 0;
|
||||
|
||||
err_ctrls:
|
||||
v4l2_async_unregister_subdev(sd);
|
||||
v4l2_ctrl_handler_free(sd->ctrl_handler);
|
||||
v4l2_ctrl_handler_free(&imx274->ctrls.handler);
|
||||
err_me:
|
||||
media_entity_cleanup(&sd->entity);
|
||||
err_regmap:
|
||||
@ -1788,7 +1787,7 @@ static int imx274_remove(struct i2c_client *client)
|
||||
imx274_write_table(imx274, mode_table[IMX274_MODE_STOP_STREAM]);
|
||||
|
||||
v4l2_async_unregister_subdev(sd);
|
||||
v4l2_ctrl_handler_free(sd->ctrl_handler);
|
||||
v4l2_ctrl_handler_free(&imx274->ctrls.handler);
|
||||
media_entity_cleanup(&sd->entity);
|
||||
mutex_destroy(&imx274->lock);
|
||||
return 0;
|
||||
|
@ -50,6 +50,7 @@ enum led_enable {
|
||||
/**
|
||||
* struct lm3560_flash
|
||||
*
|
||||
* @dev: pointer to &struct device
|
||||
* @pdata: platform data
|
||||
* @regmap: reg. map for i2c
|
||||
* @lock: muxtex for serial access.
|
||||
|
@ -33,6 +33,10 @@
|
||||
|
||||
/**
|
||||
* m5mols_read_rational - I2C read of a rational number
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @addr_num: numerator register
|
||||
* @addr_den: denominator register
|
||||
* @val: place to store the division result
|
||||
*
|
||||
* Read numerator and denominator from registers @addr_num and @addr_den
|
||||
* respectively and return the division result in @val.
|
||||
@ -53,6 +57,7 @@ static int m5mols_read_rational(struct v4l2_subdev *sd, u32 addr_num,
|
||||
|
||||
/**
|
||||
* m5mols_capture_info - Gather captured image information
|
||||
* @info: M-5MOLS driver data structure
|
||||
*
|
||||
* For now it gathers only EXIF information and file size.
|
||||
*/
|
||||
|
@ -126,6 +126,7 @@ static struct m5mols_scenemode m5mols_default_scenemode[] = {
|
||||
|
||||
/**
|
||||
* m5mols_do_scenemode() - Change current scenemode
|
||||
* @info: M-5MOLS driver data structure
|
||||
* @mode: Desired mode of the scenemode
|
||||
*
|
||||
* WARNING: The execution order is important. Do not change the order.
|
||||
|
@ -114,7 +114,8 @@ static const struct m5mols_resolution m5mols_reg_res[] = {
|
||||
|
||||
/**
|
||||
* m5mols_swap_byte - an byte array to integer conversion function
|
||||
* @size: size in bytes of I2C packet defined in the M-5MOLS datasheet
|
||||
* @data: byte array
|
||||
* @length: size in bytes of I2C packet defined in the M-5MOLS datasheet
|
||||
*
|
||||
* Convert I2C data byte array with performing any required byte
|
||||
* reordering to assure proper values for each data type, regardless
|
||||
@ -132,8 +133,9 @@ static u32 m5mols_swap_byte(u8 *data, u8 length)
|
||||
|
||||
/**
|
||||
* m5mols_read - I2C read function
|
||||
* @reg: combination of size, category and command for the I2C packet
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @size: desired size of I2C packet
|
||||
* @reg: combination of size, category and command for the I2C packet
|
||||
* @val: read value
|
||||
*
|
||||
* Returns 0 on success, or else negative errno.
|
||||
@ -232,6 +234,7 @@ int m5mols_read_u32(struct v4l2_subdev *sd, u32 reg, u32 *val)
|
||||
|
||||
/**
|
||||
* m5mols_write - I2C command write function
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @reg: combination of size, category and command for the I2C packet
|
||||
* @val: value to write
|
||||
*
|
||||
@ -284,6 +287,7 @@ int m5mols_write(struct v4l2_subdev *sd, u32 reg, u32 val)
|
||||
|
||||
/**
|
||||
* m5mols_busy_wait - Busy waiting with I2C register polling
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @reg: the I2C_REG() address of an 8-bit status register to check
|
||||
* @value: expected status register value
|
||||
* @mask: bit mask for the read status register value
|
||||
@ -316,6 +320,8 @@ int m5mols_busy_wait(struct v4l2_subdev *sd, u32 reg, u32 value, u32 mask,
|
||||
|
||||
/**
|
||||
* m5mols_enable_interrupt - Clear interrupt pending bits and unmask interrupts
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @reg: combination of size, category and command for the I2C packet
|
||||
*
|
||||
* Before writing desired interrupt value the INT_FACTOR register should
|
||||
* be read to clear pending interrupts.
|
||||
@ -349,6 +355,8 @@ int m5mols_wait_interrupt(struct v4l2_subdev *sd, u8 irq_mask, u32 timeout)
|
||||
|
||||
/**
|
||||
* m5mols_reg_mode - Write the mode and check busy status
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @mode: the required operation mode
|
||||
*
|
||||
* It always accompanies a little delay changing the M-5MOLS mode, so it is
|
||||
* needed checking current busy status to guarantee right mode.
|
||||
@ -364,6 +372,7 @@ static int m5mols_reg_mode(struct v4l2_subdev *sd, u8 mode)
|
||||
|
||||
/**
|
||||
* m5mols_set_mode - set the M-5MOLS controller mode
|
||||
* @info: M-5MOLS driver data structure
|
||||
* @mode: the required operation mode
|
||||
*
|
||||
* The commands of M-5MOLS are grouped into specific modes. Each functionality
|
||||
@ -421,6 +430,7 @@ int m5mols_set_mode(struct m5mols_info *info, u8 mode)
|
||||
|
||||
/**
|
||||
* m5mols_get_version - retrieve full revisions information of M-5MOLS
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
*
|
||||
* The version information includes revisions of hardware and firmware,
|
||||
* AutoFocus alghorithm version and the version string.
|
||||
@ -489,6 +499,7 @@ static enum m5mols_restype __find_restype(u32 code)
|
||||
|
||||
/**
|
||||
* __find_resolution - Lookup preset and type of M-5MOLS's resolution
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @mf: pixel format to find/negotiate the resolution preset for
|
||||
* @type: M-5MOLS resolution type
|
||||
* @resolution: M-5MOLS resolution preset register value
|
||||
@ -662,6 +673,7 @@ static const struct v4l2_subdev_pad_ops m5mols_pad_ops = {
|
||||
|
||||
/**
|
||||
* m5mols_restore_controls - Apply current control values to the registers
|
||||
* @info: M-5MOLS driver data structure
|
||||
*
|
||||
* m5mols_do_scenemode() handles all parameters for which there is yet no
|
||||
* individual control. It should be replaced at some point by setting each
|
||||
@ -686,6 +698,7 @@ int m5mols_restore_controls(struct m5mols_info *info)
|
||||
|
||||
/**
|
||||
* m5mols_start_monitor - Start the monitor mode
|
||||
* @info: M-5MOLS driver data structure
|
||||
*
|
||||
* Before applying the controls setup the resolution and frame rate
|
||||
* in PARAMETER mode, and then switch over to MONITOR mode.
|
||||
@ -789,6 +802,7 @@ int __attribute__ ((weak)) m5mols_update_fw(struct v4l2_subdev *sd,
|
||||
|
||||
/**
|
||||
* m5mols_fw_start - M-5MOLS internal ARM controller initialization
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
*
|
||||
* Execute the M-5MOLS internal ARM controller initialization sequence.
|
||||
* This function should be called after the supply voltage has been
|
||||
@ -844,6 +858,8 @@ static int m5mols_auto_focus_stop(struct m5mols_info *info)
|
||||
|
||||
/**
|
||||
* m5mols_s_power - Main sensor power control function
|
||||
* @sd: sub-device, as pointed by struct v4l2_subdev
|
||||
* @on: if true, powers on the device; powers off otherwise.
|
||||
*
|
||||
* To prevent breaking the lens when the sensor is powered off the Soft-Landing
|
||||
* algorithm is called where available. The Soft-Landing algorithm availability
|
||||
|
@ -428,8 +428,8 @@ static int ov5647_sensor_set_register(struct v4l2_subdev *sd,
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @short Subdev core operations registration
|
||||
/*
|
||||
* Subdev core operations registration
|
||||
*/
|
||||
static const struct v4l2_subdev_core_ops ov5647_subdev_core_ops = {
|
||||
.s_power = ov5647_sensor_power,
|
||||
|
@ -53,6 +53,9 @@ enum {
|
||||
* @gpio_reset: GPIO connected to the sensor's reset pin
|
||||
* @lock: mutex protecting the structure's members below
|
||||
* @format: media bus format at the sensor's source pad
|
||||
* @clock: pointer to &struct clk.
|
||||
* @clock_frequency: clock frequency
|
||||
* @power_count: stores state if device is powered
|
||||
*/
|
||||
struct s5k6a3 {
|
||||
struct device *dev;
|
||||
|
@ -421,6 +421,7 @@ static int s5k6aa_set_ahb_address(struct i2c_client *client)
|
||||
|
||||
/**
|
||||
* s5k6aa_configure_pixel_clock - apply ISP main clock/PLL configuration
|
||||
* @s5k6aa: pointer to &struct s5k6aa describing the device
|
||||
*
|
||||
* Configure the internal ISP PLL for the required output frequency.
|
||||
* Locking: called with s5k6aa.lock mutex held.
|
||||
@ -669,6 +670,7 @@ static int s5k6aa_set_input_params(struct s5k6aa *s5k6aa)
|
||||
|
||||
/**
|
||||
* s5k6aa_configure_video_bus - configure the video output interface
|
||||
* @s5k6aa: pointer to &struct s5k6aa describing the device
|
||||
* @bus_type: video bus type: parallel or MIPI-CSI
|
||||
* @nlanes: number of MIPI lanes to be used (MIPI-CSI only)
|
||||
*
|
||||
@ -724,6 +726,8 @@ static int s5k6aa_new_config_sync(struct i2c_client *client, int timeout,
|
||||
|
||||
/**
|
||||
* s5k6aa_set_prev_config - write user preview register set
|
||||
* @s5k6aa: pointer to &struct s5k6aa describing the device
|
||||
* @preset: s5kaa preset to be applied
|
||||
*
|
||||
* Configure output resolution and color fromat, pixel clock
|
||||
* frequency range, device frame rate type and frame period range.
|
||||
@ -777,6 +781,7 @@ static int s5k6aa_set_prev_config(struct s5k6aa *s5k6aa,
|
||||
|
||||
/**
|
||||
* s5k6aa_initialize_isp - basic ISP MCU initialization
|
||||
* @sd: pointer to V4L2 sub-device descriptor
|
||||
*
|
||||
* Configure AHB addresses for registers read/write; configure PLLs for
|
||||
* required output pixel clock. The ISP power supply needs to be already
|
||||
|
@ -86,6 +86,7 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
|
||||
/**
|
||||
* struct tvp514x_decoder - TVP5146/47 decoder object
|
||||
* @sd: Subdevice Slave handle
|
||||
* @hdl: embedded &struct v4l2_ctrl_handler
|
||||
* @tvp514x_regs: copy of hw's regs with preset values.
|
||||
* @pdata: Board specific
|
||||
* @ver: Chip version
|
||||
@ -98,6 +99,9 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
|
||||
* @std_list: Standards list
|
||||
* @input: Input routing at chip level
|
||||
* @output: Output routing at chip level
|
||||
* @pad: subdev media pad associated with the decoder
|
||||
* @format: media bus frame format
|
||||
* @int_seq: driver's register init sequence
|
||||
*/
|
||||
struct tvp514x_decoder {
|
||||
struct v4l2_subdev sd;
|
||||
@ -211,7 +215,7 @@ static struct tvp514x_reg tvp514x_reg_list_default[] = {
|
||||
{TOK_TERM, 0, 0},
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* List of image formats supported by TVP5146/47 decoder
|
||||
* Currently we are using 8 bit mode only, but can be
|
||||
* extended to 10/20 bit mode.
|
||||
@ -226,7 +230,7 @@ static const struct v4l2_fmtdesc tvp514x_fmt_list[] = {
|
||||
},
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* Supported standards -
|
||||
*
|
||||
* Currently supports two standards only, need to add support for rest of the
|
||||
@ -931,7 +935,7 @@ static int tvp514x_get_pad_format(struct v4l2_subdev *sd,
|
||||
* tvp514x_set_pad_format() - V4L2 decoder interface handler for set pad format
|
||||
* @sd: pointer to standard V4L2 sub-device structure
|
||||
* @cfg: pad configuration
|
||||
* @format: pointer to v4l2_subdev_format structure
|
||||
* @fmt: pointer to v4l2_subdev_format structure
|
||||
*
|
||||
* Set pad format for the output pad
|
||||
*/
|
||||
@ -1199,7 +1203,7 @@ static const struct tvp514x_reg tvp514xm_init_reg_seq[] = {
|
||||
{TOK_TERM, 0, 0},
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* I2C Device Table -
|
||||
*
|
||||
* name - Name of the actual device/chip.
|
||||
|
@ -82,11 +82,11 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
||||
* @start_addr_lo: DMA ring buffer start address, lower part
|
||||
* @start_addr_hi: DMA ring buffer start address, higher part
|
||||
* @size: DMA ring buffer size register
|
||||
Bits [0-7]: DMA packet size, 188 bytes
|
||||
Bits [16-23]: packets count in block, 128 packets
|
||||
Bits [24-31]: blocks count, 8 blocks
|
||||
* * Bits [0-7]: DMA packet size, 188 bytes
|
||||
* * Bits [16-23]: packets count in block, 128 packets
|
||||
* * Bits [24-31]: blocks count, 8 blocks
|
||||
* @timeout: DMA timeout in units of 8ns
|
||||
For example, value of 375000000 equals to 3 sec
|
||||
* For example, value of 375000000 equals to 3 sec
|
||||
* @curr_addr_lo: Current ring buffer head address, lower part
|
||||
* @curr_addr_hi: Current ring buffer head address, higher part
|
||||
* @stat_pkt_received: Statistic register, not tested
|
||||
|
@ -175,7 +175,7 @@ out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Set channel Quality Profile (0-3).
|
||||
*/
|
||||
void solo_s_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch,
|
||||
|
@ -404,6 +404,7 @@ static const struct v4l2_file_operations vip_fops = {
|
||||
* vidioc_querycap - return capabilities of device
|
||||
* @file: descriptor of device
|
||||
* @cap: contains return values
|
||||
* @priv: unused
|
||||
*
|
||||
* the capabilities of the device are returned
|
||||
*
|
||||
@ -429,6 +430,7 @@ static int vidioc_querycap(struct file *file, void *priv,
|
||||
* vidioc_s_std - set video standard
|
||||
* @file: descriptor of device
|
||||
* @std: contains standard to be set
|
||||
* @priv: unused
|
||||
*
|
||||
* the video standard is set
|
||||
*
|
||||
@ -466,6 +468,7 @@ static int vidioc_s_std(struct file *file, void *priv, v4l2_std_id std)
|
||||
/**
|
||||
* vidioc_g_std - get video standard
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @std: contains return values
|
||||
*
|
||||
* the current video standard is returned
|
||||
@ -483,6 +486,7 @@ static int vidioc_g_std(struct file *file, void *priv, v4l2_std_id *std)
|
||||
/**
|
||||
* vidioc_querystd - get possible video standards
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @std: contains return values
|
||||
*
|
||||
* all possible video standards are returned
|
||||
@ -512,6 +516,7 @@ static int vidioc_enum_input(struct file *file, void *priv,
|
||||
/**
|
||||
* vidioc_s_input - set input line
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @i: new input line number
|
||||
*
|
||||
* the current active input line is set
|
||||
@ -538,6 +543,7 @@ static int vidioc_s_input(struct file *file, void *priv, unsigned int i)
|
||||
/**
|
||||
* vidioc_g_input - return input line
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @i: returned input line number
|
||||
*
|
||||
* the current active input line is returned
|
||||
@ -554,6 +560,8 @@ static int vidioc_g_input(struct file *file, void *priv, unsigned int *i)
|
||||
|
||||
/**
|
||||
* vidioc_enum_fmt_vid_cap - return video capture format
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @f: returned format information
|
||||
*
|
||||
* returns name and format of video capture
|
||||
@ -577,6 +585,7 @@ static int vidioc_enum_fmt_vid_cap(struct file *file, void *priv,
|
||||
/**
|
||||
* vidioc_try_fmt_vid_cap - set video capture format
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @f: new format
|
||||
*
|
||||
* new video format is set which includes width and
|
||||
@ -639,6 +648,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
|
||||
/**
|
||||
* vidioc_s_fmt_vid_cap - set current video format parameters
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @f: returned format information
|
||||
*
|
||||
* set new capture format
|
||||
@ -706,6 +716,7 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
|
||||
/**
|
||||
* vidioc_g_fmt_vid_cap - get current video format parameters
|
||||
* @file: descriptor of device
|
||||
* @priv: unused
|
||||
* @f: contains format information
|
||||
*
|
||||
* returns current video format parameters
|
||||
|
@ -29,14 +29,15 @@
|
||||
#include "tw68.h"
|
||||
|
||||
/**
|
||||
* @rp pointer to current risc program position
|
||||
* @sglist pointer to "scatter-gather list" of buffer pointers
|
||||
* @offset offset to target memory buffer
|
||||
* @sync_line 0 -> no sync, 1 -> odd sync, 2 -> even sync
|
||||
* @bpl number of bytes per scan line
|
||||
* @padding number of bytes of padding to add
|
||||
* @lines number of lines in field
|
||||
* @jump insert a jump at the start
|
||||
* tw68_risc_field
|
||||
* @rp: pointer to current risc program position
|
||||
* @sglist: pointer to "scatter-gather list" of buffer pointers
|
||||
* @offset: offset to target memory buffer
|
||||
* @sync_line: 0 -> no sync, 1 -> odd sync, 2 -> even sync
|
||||
* @bpl: number of bytes per scan line
|
||||
* @padding: number of bytes of padding to add
|
||||
* @lines: number of lines in field
|
||||
* @jump: insert a jump at the start
|
||||
*/
|
||||
static __le32 *tw68_risc_field(__le32 *rp, struct scatterlist *sglist,
|
||||
unsigned int offset, u32 sync_line,
|
||||
@ -120,18 +121,18 @@ static __le32 *tw68_risc_field(__le32 *rp, struct scatterlist *sglist,
|
||||
* memory for the dma controller "program" and then fills in that
|
||||
* memory with the appropriate "instructions".
|
||||
*
|
||||
* @pci_dev structure with info about the pci
|
||||
* @pci: structure with info about the pci
|
||||
* slot which our device is in.
|
||||
* @risc structure with info about the memory
|
||||
* @buf: structure with info about the memory
|
||||
* used for our controller program.
|
||||
* @sglist scatter-gather list entry
|
||||
* @top_offset offset within the risc program area for the
|
||||
* @sglist: scatter-gather list entry
|
||||
* @top_offset: offset within the risc program area for the
|
||||
* first odd frame line
|
||||
* @bottom_offset offset within the risc program area for the
|
||||
* @bottom_offset: offset within the risc program area for the
|
||||
* first even frame line
|
||||
* @bpl number of data bytes per scan line
|
||||
* @padding number of extra bytes to add at end of line
|
||||
* @lines number of scan lines
|
||||
* @bpl: number of data bytes per scan line
|
||||
* @padding: number of extra bytes to add at end of line
|
||||
* @lines: number of scan lines
|
||||
*/
|
||||
int tw68_risc_buffer(struct pci_dev *pci,
|
||||
struct tw68_buf *buf,
|
||||
|
@ -47,8 +47,9 @@ EXPORT_SYMBOL_GPL(vpif_lock);
|
||||
void __iomem *vpif_base;
|
||||
EXPORT_SYMBOL_GPL(vpif_base);
|
||||
|
||||
/**
|
||||
/*
|
||||
* vpif_ch_params: video standard configuration parameters for vpif
|
||||
*
|
||||
* The table must include all presets from supported subdevices.
|
||||
*/
|
||||
const struct vpif_channel_config_params vpif_ch_params[] = {
|
||||
|
@ -109,7 +109,7 @@ static int vpif_buffer_prepare(struct vb2_buffer *vb)
|
||||
* @vq: vb2_queue ptr
|
||||
* @nbuffers: ptr to number of buffers requested by application
|
||||
* @nplanes:: contains number of distinct video planes needed to hold a frame
|
||||
* @sizes[]: contains the size (in bytes) of each plane.
|
||||
* @sizes: contains the size (in bytes) of each plane.
|
||||
* @alloc_devs: ptr to allocation context
|
||||
*
|
||||
* This callback function is called when reqbuf() is called to adjust
|
||||
@ -167,7 +167,7 @@ static void vpif_buffer_queue(struct vb2_buffer *vb)
|
||||
|
||||
/**
|
||||
* vpif_start_streaming : Starts the DMA engine for streaming
|
||||
* @vb: ptr to vb2_buffer
|
||||
* @vq: ptr to vb2_buffer
|
||||
* @count: number of buffers
|
||||
*/
|
||||
static int vpif_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||
@ -629,7 +629,7 @@ static void vpif_calculate_offsets(struct channel_obj *ch)
|
||||
|
||||
/**
|
||||
* vpif_get_default_field() - Get default field type based on interface
|
||||
* @vpif_params - ptr to vpif params
|
||||
* @iface: ptr to vpif interface
|
||||
*/
|
||||
static inline enum v4l2_field vpif_get_default_field(
|
||||
struct vpif_interface *iface)
|
||||
@ -640,8 +640,8 @@ static inline enum v4l2_field vpif_get_default_field(
|
||||
|
||||
/**
|
||||
* vpif_config_addr() - function to configure buffer address in vpif
|
||||
* @ch - channel ptr
|
||||
* @muxmode - channel mux mode
|
||||
* @ch: channel ptr
|
||||
* @muxmode: channel mux mode
|
||||
*/
|
||||
static void vpif_config_addr(struct channel_obj *ch, int muxmode)
|
||||
{
|
||||
@ -661,9 +661,9 @@ static void vpif_config_addr(struct channel_obj *ch, int muxmode)
|
||||
|
||||
/**
|
||||
* vpif_input_to_subdev() - Maps input to sub device
|
||||
* @vpif_cfg - global config ptr
|
||||
* @chan_cfg - channel config ptr
|
||||
* @input_index - Given input index from application
|
||||
* @vpif_cfg: global config ptr
|
||||
* @chan_cfg: channel config ptr
|
||||
* @input_index: Given input index from application
|
||||
*
|
||||
* lookup the sub device information for a given input index.
|
||||
* we report all the inputs to application. inputs table also
|
||||
@ -699,9 +699,9 @@ static int vpif_input_to_subdev(
|
||||
|
||||
/**
|
||||
* vpif_set_input() - Select an input
|
||||
* @vpif_cfg - global config ptr
|
||||
* @ch - channel
|
||||
* @_index - Given input index from application
|
||||
* @vpif_cfg: global config ptr
|
||||
* @ch: channel
|
||||
* @index: Given input index from application
|
||||
*
|
||||
* Select the given input.
|
||||
*/
|
||||
@ -792,7 +792,7 @@ static int vpif_querystd(struct file *file, void *priv, v4l2_std_id *std_id)
|
||||
* vpif_g_std() - get STD handler
|
||||
* @file: file ptr
|
||||
* @priv: file handle
|
||||
* @std_id: ptr to std id
|
||||
* @std: ptr to std id
|
||||
*/
|
||||
static int vpif_g_std(struct file *file, void *priv, v4l2_std_id *std)
|
||||
{
|
||||
@ -933,7 +933,7 @@ static int vpif_s_input(struct file *file, void *priv, unsigned int index)
|
||||
* vpif_enum_fmt_vid_cap() - ENUM_FMT handler
|
||||
* @file: file ptr
|
||||
* @priv: file handle
|
||||
* @index: input index
|
||||
* @fmt: ptr to V4L2 format descriptor
|
||||
*/
|
||||
static int vpif_enum_fmt_vid_cap(struct file *file, void *priv,
|
||||
struct v4l2_fmtdesc *fmt)
|
||||
@ -1745,6 +1745,7 @@ static int vpif_remove(struct platform_device *device)
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
/**
|
||||
* vpif_suspend: vpif device suspend
|
||||
* @dev: pointer to &struct device
|
||||
*/
|
||||
static int vpif_suspend(struct device *dev)
|
||||
{
|
||||
|
@ -102,7 +102,7 @@ static int vpif_buffer_prepare(struct vb2_buffer *vb)
|
||||
* @vq: vb2_queue ptr
|
||||
* @nbuffers: ptr to number of buffers requested by application
|
||||
* @nplanes:: contains number of distinct video planes needed to hold a frame
|
||||
* @sizes[]: contains the size (in bytes) of each plane.
|
||||
* @sizes: contains the size (in bytes) of each plane.
|
||||
* @alloc_devs: ptr to allocation context
|
||||
*
|
||||
* This callback function is called when reqbuf() is called to adjust
|
||||
@ -158,7 +158,7 @@ static void vpif_buffer_queue(struct vb2_buffer *vb)
|
||||
|
||||
/**
|
||||
* vpif_start_streaming : Starts the DMA engine for streaming
|
||||
* @vb: ptr to vb2_buffer
|
||||
* @vq: ptr to vb2_buffer
|
||||
* @count: number of buffers
|
||||
*/
|
||||
static int vpif_start_streaming(struct vb2_queue *vq, unsigned int count)
|
||||
@ -766,9 +766,9 @@ static int vpif_enum_output(struct file *file, void *fh,
|
||||
|
||||
/**
|
||||
* vpif_output_to_subdev() - Maps output to sub device
|
||||
* @vpif_cfg - global config ptr
|
||||
* @chan_cfg - channel config ptr
|
||||
* @index - Given output index from application
|
||||
* @vpif_cfg: global config ptr
|
||||
* @chan_cfg: channel config ptr
|
||||
* @index: Given output index from application
|
||||
*
|
||||
* lookup the sub device information for a given output index.
|
||||
* we report all the output to application. output table also
|
||||
@ -802,9 +802,9 @@ vpif_output_to_subdev(struct vpif_display_config *vpif_cfg,
|
||||
|
||||
/**
|
||||
* vpif_set_output() - Select an output
|
||||
* @vpif_cfg - global config ptr
|
||||
* @ch - channel
|
||||
* @index - Given output index from application
|
||||
* @vpif_cfg: global config ptr
|
||||
* @ch: channel
|
||||
* @index: Given output index from application
|
||||
*
|
||||
* Select the given output.
|
||||
*/
|
||||
|
@ -146,6 +146,7 @@ static int fimc_stop_capture(struct fimc_dev *fimc, bool suspend)
|
||||
|
||||
/**
|
||||
* fimc_capture_config_update - apply the camera interface configuration
|
||||
* @ctx: FIMC capture context
|
||||
*
|
||||
* To be called from within the interrupt handler with fimc.slock
|
||||
* spinlock held. It updates the camera pixel crop, rotation and
|
||||
@ -858,6 +859,7 @@ static int fimc_pipeline_try_format(struct fimc_ctx *ctx,
|
||||
* fimc_get_sensor_frame_desc - query the sensor for media bus frame parameters
|
||||
* @sensor: pointer to the sensor subdev
|
||||
* @plane_fmt: provides plane sizes corresponding to the frame layout entries
|
||||
* @num_planes: number of planes
|
||||
* @try: true to set the frame parameters, false to query only
|
||||
*
|
||||
* This function is used by this driver only for compressed/blob data formats.
|
||||
@ -1101,6 +1103,7 @@ static int fimc_cap_g_input(struct file *file, void *priv, unsigned int *i)
|
||||
/**
|
||||
* fimc_pipeline_validate - check for formats inconsistencies
|
||||
* between source and sink pad of each link
|
||||
* @fimc: the FIMC device this context applies to
|
||||
*
|
||||
* Return 0 if all formats match or -EPIPE otherwise.
|
||||
*/
|
||||
|
@ -60,6 +60,7 @@ static void __setup_sensor_notification(struct fimc_md *fmd,
|
||||
|
||||
/**
|
||||
* fimc_pipeline_prepare - update pipeline information with subdevice pointers
|
||||
* @p: fimc pipeline
|
||||
* @me: media entity terminating the pipeline
|
||||
*
|
||||
* Caller holds the graph mutex.
|
||||
@ -151,8 +152,8 @@ static int __subdev_set_power(struct v4l2_subdev *sd, int on)
|
||||
|
||||
/**
|
||||
* fimc_pipeline_s_power - change power state of all pipeline subdevs
|
||||
* @fimc: fimc device terminating the pipeline
|
||||
* @state: true to power on, false to power off
|
||||
* @p: fimc device terminating the pipeline
|
||||
* @on: true to power on, false to power off
|
||||
*
|
||||
* Needs to be called with the graph mutex held.
|
||||
*/
|
||||
@ -219,6 +220,7 @@ static int __fimc_pipeline_enable(struct exynos_media_pipeline *ep,
|
||||
/**
|
||||
* __fimc_pipeline_open - update the pipeline information, enable power
|
||||
* of all pipeline subdevs and the sensor clock
|
||||
* @ep: fimc device terminating the pipeline
|
||||
* @me: media entity to start graph walk with
|
||||
* @prepare: true to walk the current pipeline and acquire all subdevs
|
||||
*
|
||||
@ -252,7 +254,7 @@ static int __fimc_pipeline_open(struct exynos_media_pipeline *ep,
|
||||
|
||||
/**
|
||||
* __fimc_pipeline_close - disable the sensor clock and pipeline power
|
||||
* @fimc: fimc device terminating the pipeline
|
||||
* @ep: fimc device terminating the pipeline
|
||||
*
|
||||
* Disable power of all subdevs and turn the external sensor clock off.
|
||||
*/
|
||||
@ -281,7 +283,7 @@ static int __fimc_pipeline_close(struct exynos_media_pipeline *ep)
|
||||
|
||||
/**
|
||||
* __fimc_pipeline_s_stream - call s_stream() on pipeline subdevs
|
||||
* @pipeline: video pipeline structure
|
||||
* @ep: video pipeline structure
|
||||
* @on: passed as the s_stream() callback argument
|
||||
*/
|
||||
static int __fimc_pipeline_s_stream(struct exynos_media_pipeline *ep, bool on)
|
||||
@ -902,6 +904,7 @@ static int __fimc_md_create_fimc_is_links(struct fimc_md *fmd)
|
||||
|
||||
/**
|
||||
* fimc_md_create_links - create default links between registered entities
|
||||
* @fmd: fimc media device
|
||||
*
|
||||
* Parallel interface sensor entities are connected directly to FIMC capture
|
||||
* entities. The sensors using MIPI CSIS bus are connected through immutable
|
||||
|
@ -189,7 +189,7 @@ struct csis_drvdata {
|
||||
* @irq: requested s5p-mipi-csis irq number
|
||||
* @interrupt_mask: interrupt mask of the all used interrupts
|
||||
* @flags: the state variable for power and streaming control
|
||||
* @clock_frequency: device bus clock frequency
|
||||
* @clk_frequency: device bus clock frequency
|
||||
* @hs_settle: HS-RX settle time
|
||||
* @num_lanes: number of MIPI-CSI data lanes used
|
||||
* @max_num_lanes: maximum number of MIPI-CSI data lanes supported
|
||||
|
@ -59,6 +59,7 @@ struct h264_fb {
|
||||
* @read_idx : read index
|
||||
* @write_idx : write index
|
||||
* @count : buffer count in list
|
||||
* @reserved : for 8 bytes alignment
|
||||
*/
|
||||
struct h264_ring_fb_list {
|
||||
struct h264_fb fb_list[H264_MAX_FB_NUM];
|
||||
|
@ -155,7 +155,6 @@ struct vdec_vp8_vpu_inst {
|
||||
* @reg_base : HW register base address
|
||||
* @frm_cnt : decode frame count
|
||||
* @ctx : V4L2 context
|
||||
* @dev : platform device
|
||||
* @vpu : VPU instance for decoder
|
||||
* @vsi : VPU share information
|
||||
*/
|
||||
|
@ -34,7 +34,7 @@ static const char h264_filler_marker[] = {0x0, 0x0, 0x0, 0x1, 0xc};
|
||||
#define H264_FILLER_MARKER_SIZE ARRAY_SIZE(h264_filler_marker)
|
||||
#define VENC_PIC_BITSTREAM_BYTE_CNT 0x0098
|
||||
|
||||
/**
|
||||
/*
|
||||
* enum venc_h264_vpu_work_buf - h264 encoder buffer index
|
||||
*/
|
||||
enum venc_h264_vpu_work_buf {
|
||||
@ -50,7 +50,7 @@ enum venc_h264_vpu_work_buf {
|
||||
VENC_H264_VPU_WORK_BUF_MAX,
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* enum venc_h264_bs_mode - for bs_mode argument in h264_enc_vpu_encode
|
||||
*/
|
||||
enum venc_h264_bs_mode {
|
||||
|
@ -34,7 +34,7 @@
|
||||
/* This ac_tag is vp8 frame tag. */
|
||||
#define MAX_AC_TAG_SIZE 10
|
||||
|
||||
/**
|
||||
/*
|
||||
* enum venc_vp8_vpu_work_buf - vp8 encoder buffer index
|
||||
*/
|
||||
enum venc_vp8_vpu_work_buf {
|
||||
|
@ -181,6 +181,7 @@ struct share_obj {
|
||||
* @extmem: VPU extended memory information
|
||||
* @reg: VPU TCM and configuration registers
|
||||
* @run: VPU initialization status
|
||||
* @wdt: VPU watchdog workqueue
|
||||
* @ipi_desc: VPU IPI descriptor
|
||||
* @recv_buf: VPU DTCM share buffer for receiving. The
|
||||
* receive buffer is only accessed in interrupt context.
|
||||
@ -194,7 +195,7 @@ struct share_obj {
|
||||
* suppose a client is using VPU to decode VP8.
|
||||
* If the other client wants to encode VP8,
|
||||
* it has to wait until VP8 decode completes.
|
||||
* @wdt_refcnt WDT reference count to make sure the watchdog can be
|
||||
* @wdt_refcnt: WDT reference count to make sure the watchdog can be
|
||||
* disabled if no other client is using VPU service
|
||||
* @ack_wq: The wait queue for each codec and mdp. When sleeping
|
||||
* processes wake up, they will check the condition
|
||||
|
@ -235,6 +235,7 @@ enum pxa_mbus_layout {
|
||||
* stored in memory in the following way:
|
||||
* @packing: Type of sample-packing, that has to be used
|
||||
* @order: Sample order when storing in memory
|
||||
* @layout: Planes layout in memory
|
||||
* @bits_per_sample: How many bits the bridge has to sample
|
||||
*/
|
||||
struct pxa_mbus_pixelfmt {
|
||||
@ -852,10 +853,10 @@ static void pxa_camera_dma_irq_v(void *data)
|
||||
/**
|
||||
* pxa_init_dma_channel - init dma descriptors
|
||||
* @pcdev: pxa camera device
|
||||
* @vb: videobuffer2 buffer
|
||||
* @dma: dma video buffer
|
||||
* @buf: pxa camera buffer
|
||||
* @channel: dma channel (0 => 'Y', 1 => 'U', 2 => 'V')
|
||||
* @cibr: camera Receive Buffer Register
|
||||
* @sg: dma scatter list
|
||||
* @sglen: dma scatter list length
|
||||
*
|
||||
* Prepares the pxa dma descriptors to transfer one camera channel.
|
||||
*
|
||||
@ -1010,6 +1011,8 @@ static void pxa_camera_wakeup(struct pxa_camera_dev *pcdev,
|
||||
/**
|
||||
* pxa_camera_check_link_miss - check missed DMA linking
|
||||
* @pcdev: camera device
|
||||
* @last_submitted: an opaque DMA cookie for last submitted
|
||||
* @last_issued: an opaque DMA cookie for last issued
|
||||
*
|
||||
* The DMA chaining is done with DMA running. This means a tiny temporal window
|
||||
* remains, where a buffer is queued on the chain, while the chain is already
|
||||
|
@ -1132,7 +1132,7 @@ static int fdp1_device_process(struct fdp1_ctx *ctx)
|
||||
* mem2mem callbacks
|
||||
*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* job_ready() - check whether an instance is ready to be scheduled to run
|
||||
*/
|
||||
static int fdp1_m2m_job_ready(void *priv)
|
||||
|
@ -257,7 +257,7 @@ struct jpu_fmt {
|
||||
};
|
||||
|
||||
/**
|
||||
* jpu_q_data - parameters of one queue
|
||||
* struct jpu_q_data - parameters of one queue
|
||||
* @fmtinfo: driver-specific format of this queue
|
||||
* @format: multiplanar format of this queue
|
||||
* @sequence: sequence number
|
||||
@ -269,7 +269,7 @@ struct jpu_q_data {
|
||||
};
|
||||
|
||||
/**
|
||||
* jpu_ctx - the device context data
|
||||
* struct jpu_ctx - the device context data
|
||||
* @jpu: JPEG IP device for this context
|
||||
* @encoder: compression (encode) operation or decompression (decode)
|
||||
* @compr_quality: destination image quality in compression (encode) mode
|
||||
|
@ -103,6 +103,7 @@ static const struct camif_fmt camif_formats[] = {
|
||||
|
||||
/**
|
||||
* s3c_camif_find_format() - lookup camif color format by fourcc or an index
|
||||
* @vp: video path (DMA) description (codec/preview)
|
||||
* @pixelformat: fourcc to match, ignored if null
|
||||
* @index: index to the camif_formats array, ignored if negative
|
||||
*/
|
||||
|
@ -267,7 +267,7 @@ static void sh_veu_process(struct sh_veu_dev *veu,
|
||||
sh_veu_reg_write(veu, VEU_EIER, 1); /* enable interrupt in VEU */
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* sh_veu_device_run() - prepares and starts the device
|
||||
*
|
||||
* This will be called by the framework when it decides to schedule a particular
|
||||
|
@ -306,16 +306,17 @@ update_cache:
|
||||
}
|
||||
|
||||
/**
|
||||
* @icd - soc-camera device
|
||||
* @rect - camera cropping window
|
||||
* @subrect - part of rect, sent to the user
|
||||
* @mf - in- / output camera output window
|
||||
* @width - on input: max host input width
|
||||
* on output: user width, mapped back to input
|
||||
* @height - on input: max host input height
|
||||
* on output: user height, mapped back to input
|
||||
* @host_can_scale - host can scale this pixel format
|
||||
* @shift - shift, used for scaling
|
||||
* soc_camera_client_scale
|
||||
* @icd: soc-camera device
|
||||
* @rect: camera cropping window
|
||||
* @subrect: part of rect, sent to the user
|
||||
* @mf: in- / output camera output window
|
||||
* @width: on input: max host input width;
|
||||
* on output: user width, mapped back to input
|
||||
* @height: on input: max host input height;
|
||||
* on output: user height, mapped back to input
|
||||
* @host_can_scale: host can scale this pixel format
|
||||
* @shift: shift, used for scaling
|
||||
*/
|
||||
int soc_camera_client_scale(struct soc_camera_device *icd,
|
||||
struct v4l2_rect *rect, struct v4l2_rect *subrect,
|
||||
|
@ -134,7 +134,7 @@ enum hva_h264_sei_payload_type {
|
||||
SEI_FRAME_PACKING_ARRANGEMENT = 45
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* stereo Video Info struct
|
||||
*/
|
||||
struct hva_h264_stereo_video_sei {
|
||||
@ -146,7 +146,9 @@ struct hva_h264_stereo_video_sei {
|
||||
u8 right_view_self_contained_flag;
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* struct hva_h264_td
|
||||
*
|
||||
* @frame_width: width in pixels of the buffer containing the input frame
|
||||
* @frame_height: height in pixels of the buffer containing the input frame
|
||||
* @frame_num: the parameter to be written in the slice header
|
||||
@ -352,7 +354,9 @@ struct hva_h264_td {
|
||||
u32 addr_brc_in_out_parameter;
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* struct hva_h264_slice_po
|
||||
*
|
||||
* @ slice_size: slice size
|
||||
* @ slice_start_time: start time
|
||||
* @ slice_stop_time: stop time
|
||||
@ -365,7 +369,9 @@ struct hva_h264_slice_po {
|
||||
u32 slice_num;
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* struct hva_h264_po
|
||||
*
|
||||
* @ bitstream_size: bitstream size
|
||||
* @ dct_bitstream_size: dtc bitstream size
|
||||
* @ stuffing_bits: number of stuffing bits inserted by the encoder
|
||||
@ -391,7 +397,9 @@ struct hva_h264_task {
|
||||
struct hva_h264_po po;
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* struct hva_h264_ctx
|
||||
*
|
||||
* @seq_info: sequence information buffer
|
||||
* @ref_frame: reference frame buffer
|
||||
* @rec_frame: reconstructed frame buffer
|
||||
|
@ -926,7 +926,7 @@ static struct vpe_ctx *file2ctx(struct file *file)
|
||||
* mem2mem callbacks
|
||||
*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* job_ready() - check whether an instance is ready to be scheduled to run
|
||||
*/
|
||||
static int job_ready(void *priv)
|
||||
|
@ -343,7 +343,7 @@ static void schedule_irq(struct vim2m_dev *dev, int msec_timeout)
|
||||
* mem2mem callbacks
|
||||
*/
|
||||
|
||||
/**
|
||||
/*
|
||||
* job_ready() - check whether an instance is ready to be scheduled to run
|
||||
*/
|
||||
static int job_ready(void *priv)
|
||||
|
@ -70,6 +70,7 @@ struct vsp1_dl_body {
|
||||
* @dma: DMA address for the header
|
||||
* @body0: first display list body
|
||||
* @fragments: list of extra display list bodies
|
||||
* @has_chain: if true, indicates that there's a partition chain
|
||||
* @chain: entry in the display list partition chain
|
||||
*/
|
||||
struct vsp1_dl_list {
|
||||
|
@ -158,7 +158,7 @@ enum si476x_ctrl_idx {
|
||||
};
|
||||
static struct v4l2_ctrl_config si476x_ctrls[] = {
|
||||
|
||||
/**
|
||||
/*
|
||||
* SI476X during its station seeking(or tuning) process uses several
|
||||
* parameters to detrmine if "the station" is valid:
|
||||
*
|
||||
@ -197,7 +197,7 @@ static struct v4l2_ctrl_config si476x_ctrls[] = {
|
||||
.step = 2,
|
||||
},
|
||||
|
||||
/**
|
||||
/*
|
||||
* #V4L2_CID_SI476X_HARMONICS_COUNT -- number of harmonics
|
||||
* built-in power-line noise supression filter is to reject
|
||||
* during AM-mode operation.
|
||||
@ -213,7 +213,7 @@ static struct v4l2_ctrl_config si476x_ctrls[] = {
|
||||
.step = 1,
|
||||
},
|
||||
|
||||
/**
|
||||
/*
|
||||
* #V4L2_CID_SI476X_DIVERSITY_MODE -- configuration which
|
||||
* two tuners working in diversity mode are to work in.
|
||||
*
|
||||
@ -237,7 +237,7 @@ static struct v4l2_ctrl_config si476x_ctrls[] = {
|
||||
.max = ARRAY_SIZE(phase_diversity_modes) - 1,
|
||||
},
|
||||
|
||||
/**
|
||||
/*
|
||||
* #V4L2_CID_SI476X_INTERCHIP_LINK -- inter-chip link in
|
||||
* diversity mode indicator. Allows user to determine if two
|
||||
* chips working in diversity mode have established a link
|
||||
@ -296,11 +296,15 @@ struct si476x_radio_ops {
|
||||
/**
|
||||
* struct si476x_radio - radio device
|
||||
*
|
||||
* @core: Pointer to underlying core device
|
||||
* @v4l2dev: Pointer to V4L2 device created by V4L2 subsystem
|
||||
* @videodev: Pointer to video device created by V4L2 subsystem
|
||||
* @ctrl_handler: V4L2 controls handler
|
||||
* @core: Pointer to underlying core device
|
||||
* @ops: Vtable of functions. See struct si476x_radio_ops for details
|
||||
* @kref: Reference counter
|
||||
* @core_lock: An r/w semaphore to brebvent the deletion of underlying
|
||||
* @debugfs: pointer to &strucd dentry for debugfs
|
||||
* @audmode: audio mode, as defined for the rxsubchans field
|
||||
* at videodev2.h
|
||||
*
|
||||
* core structure is the radio device is being used
|
||||
*/
|
||||
struct si476x_radio {
|
||||
|
@ -1330,7 +1330,7 @@ static int wl1273_fm_vidioc_s_input(struct file *file, void *priv,
|
||||
|
||||
/**
|
||||
* wl1273_fm_set_tx_power() - Set the transmission power value.
|
||||
* @core: A pointer to the device struct.
|
||||
* @radio: A pointer to the device struct.
|
||||
* @power: The new power value.
|
||||
*/
|
||||
static int wl1273_fm_set_tx_power(struct wl1273_device *radio, u16 power)
|
||||
|
@ -339,7 +339,7 @@ static void img_ir_decoder_preprocess(struct img_ir_decoder *decoder)
|
||||
/**
|
||||
* img_ir_decoder_convert() - Generate internal timings in decoder.
|
||||
* @decoder: Decoder to be converted to internal timings.
|
||||
* @timings: Timing register values.
|
||||
* @reg_timings: Timing register values.
|
||||
* @clock_hz: IR clock rate in Hz.
|
||||
*
|
||||
* Fills out the repeat timings and timing register values for a specific clock
|
||||
|
@ -492,7 +492,7 @@ static void free_imon_context(struct imon_context *ictx)
|
||||
dev_dbg(dev, "%s: iMON context freed\n", __func__);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Called when the Display device (e.g. /dev/lcd0)
|
||||
* is opened by the application.
|
||||
*/
|
||||
@ -542,7 +542,7 @@ exit:
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Called when the display device (e.g. /dev/lcd0)
|
||||
* is closed by the application.
|
||||
*/
|
||||
@ -575,7 +575,7 @@ static int display_close(struct inode *inode, struct file *file)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Sends a packet to the device -- this function must be called with
|
||||
* ictx->lock held, or its unlock/lock sequence while waiting for tx
|
||||
* to complete can/will lead to a deadlock.
|
||||
@ -664,7 +664,7 @@ static int send_packet(struct imon_context *ictx)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Sends an associate packet to the iMON 2.4G.
|
||||
*
|
||||
* This might not be such a good idea, since it has an id collision with
|
||||
@ -694,7 +694,7 @@ static int send_associate_24g(struct imon_context *ictx)
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Sends packets to setup and show clock on iMON display
|
||||
*
|
||||
* Arguments: year - last 2 digits of year, month - 1..12,
|
||||
@ -781,7 +781,7 @@ static int send_set_imon_clock(struct imon_context *ictx,
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* These are the sysfs functions to handle the association on the iMON 2.4G LT.
|
||||
*/
|
||||
static ssize_t show_associate_remote(struct device *d,
|
||||
@ -823,7 +823,7 @@ static ssize_t store_associate_remote(struct device *d,
|
||||
return count;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* sysfs functions to control internal imon clock
|
||||
*/
|
||||
static ssize_t show_imon_clock(struct device *d,
|
||||
@ -923,7 +923,7 @@ static const struct attribute_group imon_rf_attr_group = {
|
||||
.attrs = imon_rf_sysfs_entries
|
||||
};
|
||||
|
||||
/**
|
||||
/*
|
||||
* Writes data to the VFD. The iMON VFD is 2x16 characters
|
||||
* and requires data in 5 consecutive USB interrupt packets,
|
||||
* each packet but the last carrying 7 bytes.
|
||||
@ -1008,7 +1008,7 @@ exit:
|
||||
return (!retval) ? n_bytes : retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Writes data to the LCD. The iMON OEM LCD screen expects 8-byte
|
||||
* packets. We accept data as 16 hexadecimal digits, followed by a
|
||||
* newline (to make it easy to drive the device from a command-line
|
||||
@ -1066,7 +1066,7 @@ exit:
|
||||
return (!retval) ? n_bytes : retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Callback function for USB core API: transmit data
|
||||
*/
|
||||
static void usb_tx_callback(struct urb *urb)
|
||||
@ -1087,7 +1087,7 @@ static void usb_tx_callback(struct urb *urb)
|
||||
complete(&ictx->tx.finished);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* report touchscreen input
|
||||
*/
|
||||
static void imon_touch_display_timeout(struct timer_list *t)
|
||||
@ -1103,7 +1103,7 @@ static void imon_touch_display_timeout(struct timer_list *t)
|
||||
input_sync(ictx->touch);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* iMON IR receivers support two different signal sets -- those used by
|
||||
* the iMON remotes, and those used by the Windows MCE remotes (which is
|
||||
* really just RC-6), but only one or the other at a time, as the signals
|
||||
@ -1191,7 +1191,7 @@ static inline int tv2int(const struct timeval *a, const struct timeval *b)
|
||||
return sec;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* The directional pad behaves a bit differently, depending on whether this is
|
||||
* one of the older ffdc devices or a newer device. Newer devices appear to
|
||||
* have a higher resolution matrix for more precise mouse movement, but it
|
||||
@ -1543,7 +1543,7 @@ static void imon_pad_to_keys(struct imon_context *ictx, unsigned char *buf)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* figure out if these is a press or a release. We don't actually
|
||||
* care about repeats, as those will be auto-generated within the IR
|
||||
* subsystem for repeating scancodes.
|
||||
@ -1592,10 +1592,10 @@ static int imon_parse_press_type(struct imon_context *ictx,
|
||||
return press_type;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Process the incoming packet
|
||||
*/
|
||||
/**
|
||||
/*
|
||||
* Convert bit count to time duration (in us) and submit
|
||||
* the value to lirc_dev.
|
||||
*/
|
||||
@ -1608,7 +1608,7 @@ static void submit_data(struct imon_context *context)
|
||||
ir_raw_event_store_with_filter(context->rdev, &ev);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Process the incoming packet
|
||||
*/
|
||||
static void imon_incoming_ir_raw(struct imon_context *context,
|
||||
@ -1831,7 +1831,7 @@ not_input_data:
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Callback function for USB core API: receive data
|
||||
*/
|
||||
static void usb_rx_callback_intf0(struct urb *urb)
|
||||
@ -2485,7 +2485,7 @@ static void imon_init_display(struct imon_context *ictx,
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Callback function for USB core API: Probe
|
||||
*/
|
||||
static int imon_probe(struct usb_interface *interface,
|
||||
@ -2583,7 +2583,7 @@ fail:
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Callback function for USB core API: disconnect
|
||||
*/
|
||||
static void imon_disconnect(struct usb_interface *interface)
|
||||
|
@ -39,7 +39,7 @@ enum jvc_state {
|
||||
/**
|
||||
* ir_jvc_decode() - Decode one JVC pulse or space
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @duration: the struct ir_raw_event descriptor of the pulse/space
|
||||
* @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
*
|
||||
* This function returns -EINVAL if the pulse violates the state machine
|
||||
*/
|
||||
|
@ -25,8 +25,8 @@
|
||||
/**
|
||||
* ir_lirc_decode() - Send raw IR data to lirc_dev to be relayed to the
|
||||
* lircd userspace daemon for decoding.
|
||||
* @input_dev: the struct rc_dev descriptor of the device
|
||||
* @duration: the struct ir_raw_event descriptor of the pulse/space
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
*
|
||||
* This function returns -EINVAL if the lirc interfaces aren't wired up.
|
||||
*/
|
||||
|
@ -41,7 +41,7 @@ enum nec_state {
|
||||
/**
|
||||
* ir_nec_decode() - Decode one NEC pulse or space
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @duration: the struct ir_raw_event descriptor of the pulse/space
|
||||
* @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
*
|
||||
* This function returns -EINVAL if the pulse violates the state machine
|
||||
*/
|
||||
@ -183,7 +183,6 @@ static int ir_nec_decode(struct rc_dev *dev, struct ir_raw_event ev)
|
||||
* ir_nec_scancode_to_raw() - encode an NEC scancode ready for modulation.
|
||||
* @protocol: specific protocol to use
|
||||
* @scancode: a single NEC scancode.
|
||||
* @raw: raw data to be modulated.
|
||||
*/
|
||||
static u32 ir_nec_scancode_to_raw(enum rc_proto protocol, u32 scancode)
|
||||
{
|
||||
|
@ -48,7 +48,7 @@ enum sanyo_state {
|
||||
/**
|
||||
* ir_sanyo_decode() - Decode one SANYO pulse or space
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @duration: the struct ir_raw_event descriptor of the pulse/space
|
||||
* @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
*
|
||||
* This function returns -EINVAL if the pulse violates the state machine
|
||||
*/
|
||||
|
@ -39,7 +39,7 @@ enum sharp_state {
|
||||
/**
|
||||
* ir_sharp_decode() - Decode one Sharp pulse or space
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @duration: the struct ir_raw_event descriptor of the pulse/space
|
||||
* @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
*
|
||||
* This function returns -EINVAL if the pulse violates the state machine
|
||||
*/
|
||||
|
@ -35,7 +35,7 @@ enum xmp_state {
|
||||
/**
|
||||
* ir_xmp_decode() - Decode one XMP pulse or space
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @duration: the struct ir_raw_event descriptor of the pulse/space
|
||||
* @ev: the struct ir_raw_event descriptor of the pulse/space
|
||||
*
|
||||
* This function returns -EINVAL if the pulse violates the state machine
|
||||
*/
|
||||
|
@ -128,7 +128,7 @@ EXPORT_SYMBOL_GPL(ir_raw_event_store_edge);
|
||||
/**
|
||||
* ir_raw_event_store_with_filter() - pass next pulse/space to decoders with some processing
|
||||
* @dev: the struct rc_dev device descriptor
|
||||
* @type: the type of the event that has occurred
|
||||
* @ev: the event that has occurred
|
||||
*
|
||||
* This routine (which may be called from an interrupt context) works
|
||||
* in similar manner to ir_raw_event_store_edge.
|
||||
|
@ -39,41 +39,41 @@ static const struct {
|
||||
[RC_PROTO_UNKNOWN] = { .name = "unknown", .repeat_period = 250 },
|
||||
[RC_PROTO_OTHER] = { .name = "other", .repeat_period = 250 },
|
||||
[RC_PROTO_RC5] = { .name = "rc-5",
|
||||
.scancode_bits = 0x1f7f, .repeat_period = 164 },
|
||||
.scancode_bits = 0x1f7f, .repeat_period = 250 },
|
||||
[RC_PROTO_RC5X_20] = { .name = "rc-5x-20",
|
||||
.scancode_bits = 0x1f7f3f, .repeat_period = 164 },
|
||||
.scancode_bits = 0x1f7f3f, .repeat_period = 250 },
|
||||
[RC_PROTO_RC5_SZ] = { .name = "rc-5-sz",
|
||||
.scancode_bits = 0x2fff, .repeat_period = 164 },
|
||||
.scancode_bits = 0x2fff, .repeat_period = 250 },
|
||||
[RC_PROTO_JVC] = { .name = "jvc",
|
||||
.scancode_bits = 0xffff, .repeat_period = 250 },
|
||||
[RC_PROTO_SONY12] = { .name = "sony-12",
|
||||
.scancode_bits = 0x1f007f, .repeat_period = 100 },
|
||||
.scancode_bits = 0x1f007f, .repeat_period = 250 },
|
||||
[RC_PROTO_SONY15] = { .name = "sony-15",
|
||||
.scancode_bits = 0xff007f, .repeat_period = 100 },
|
||||
.scancode_bits = 0xff007f, .repeat_period = 250 },
|
||||
[RC_PROTO_SONY20] = { .name = "sony-20",
|
||||
.scancode_bits = 0x1fff7f, .repeat_period = 100 },
|
||||
.scancode_bits = 0x1fff7f, .repeat_period = 250 },
|
||||
[RC_PROTO_NEC] = { .name = "nec",
|
||||
.scancode_bits = 0xffff, .repeat_period = 160 },
|
||||
.scancode_bits = 0xffff, .repeat_period = 250 },
|
||||
[RC_PROTO_NECX] = { .name = "nec-x",
|
||||
.scancode_bits = 0xffffff, .repeat_period = 160 },
|
||||
.scancode_bits = 0xffffff, .repeat_period = 250 },
|
||||
[RC_PROTO_NEC32] = { .name = "nec-32",
|
||||
.scancode_bits = 0xffffffff, .repeat_period = 160 },
|
||||
.scancode_bits = 0xffffffff, .repeat_period = 250 },
|
||||
[RC_PROTO_SANYO] = { .name = "sanyo",
|
||||
.scancode_bits = 0x1fffff, .repeat_period = 250 },
|
||||
[RC_PROTO_MCIR2_KBD] = { .name = "mcir2-kbd",
|
||||
.scancode_bits = 0xffff, .repeat_period = 150 },
|
||||
.scancode_bits = 0xffff, .repeat_period = 250 },
|
||||
[RC_PROTO_MCIR2_MSE] = { .name = "mcir2-mse",
|
||||
.scancode_bits = 0x1fffff, .repeat_period = 150 },
|
||||
.scancode_bits = 0x1fffff, .repeat_period = 250 },
|
||||
[RC_PROTO_RC6_0] = { .name = "rc-6-0",
|
||||
.scancode_bits = 0xffff, .repeat_period = 164 },
|
||||
.scancode_bits = 0xffff, .repeat_period = 250 },
|
||||
[RC_PROTO_RC6_6A_20] = { .name = "rc-6-6a-20",
|
||||
.scancode_bits = 0xfffff, .repeat_period = 164 },
|
||||
.scancode_bits = 0xfffff, .repeat_period = 250 },
|
||||
[RC_PROTO_RC6_6A_24] = { .name = "rc-6-6a-24",
|
||||
.scancode_bits = 0xffffff, .repeat_period = 164 },
|
||||
.scancode_bits = 0xffffff, .repeat_period = 250 },
|
||||
[RC_PROTO_RC6_6A_32] = { .name = "rc-6-6a-32",
|
||||
.scancode_bits = 0xffffffff, .repeat_period = 164 },
|
||||
.scancode_bits = 0xffffffff, .repeat_period = 250 },
|
||||
[RC_PROTO_RC6_MCE] = { .name = "rc-6-mce",
|
||||
.scancode_bits = 0xffff7fff, .repeat_period = 164 },
|
||||
.scancode_bits = 0xffff7fff, .repeat_period = 250 },
|
||||
[RC_PROTO_SHARP] = { .name = "sharp",
|
||||
.scancode_bits = 0x1fff, .repeat_period = 250 },
|
||||
[RC_PROTO_XMP] = { .name = "xmp", .repeat_period = 250 },
|
||||
@ -170,10 +170,11 @@ static struct rc_map_list empty_map = {
|
||||
* @name: name to assign to the table
|
||||
* @rc_proto: ir type to assign to the new table
|
||||
* @size: initial size of the table
|
||||
* @return: zero on success or a negative error code
|
||||
*
|
||||
* This routine will initialize the rc_map and will allocate
|
||||
* memory to hold at least the specified number of elements.
|
||||
*
|
||||
* return: zero on success or a negative error code
|
||||
*/
|
||||
static int ir_create_table(struct rc_map *rc_map,
|
||||
const char *name, u64 rc_proto, size_t size)
|
||||
@ -216,10 +217,11 @@ static void ir_free_table(struct rc_map *rc_map)
|
||||
* ir_resize_table() - resizes a scancode table if necessary
|
||||
* @rc_map: the rc_map to resize
|
||||
* @gfp_flags: gfp flags to use when allocating memory
|
||||
* @return: zero on success or a negative error code
|
||||
*
|
||||
* This routine will shrink the rc_map if it has lots of
|
||||
* unused entries and grow it if it is full.
|
||||
*
|
||||
* return: zero on success or a negative error code
|
||||
*/
|
||||
static int ir_resize_table(struct rc_map *rc_map, gfp_t gfp_flags)
|
||||
{
|
||||
@ -265,11 +267,13 @@ static int ir_resize_table(struct rc_map *rc_map, gfp_t gfp_flags)
|
||||
* @dev: the struct rc_dev device descriptor
|
||||
* @rc_map: scancode table to be adjusted
|
||||
* @index: index of the mapping that needs to be updated
|
||||
* @keycode: the desired keycode
|
||||
* @return: previous keycode assigned to the mapping
|
||||
* @new_keycode: the desired keycode
|
||||
*
|
||||
* This routine is used to update scancode->keycode mapping at given
|
||||
* position.
|
||||
*
|
||||
* return: previous keycode assigned to the mapping
|
||||
*
|
||||
*/
|
||||
static unsigned int ir_update_mapping(struct rc_dev *dev,
|
||||
struct rc_map *rc_map,
|
||||
@ -320,12 +324,13 @@ static unsigned int ir_update_mapping(struct rc_dev *dev,
|
||||
* @scancode: the desired scancode
|
||||
* @resize: controls whether we allowed to resize the table to
|
||||
* accommodate not yet present scancodes
|
||||
* @return: index of the mapping containing scancode in question
|
||||
* or -1U in case of failure.
|
||||
*
|
||||
* This routine is used to locate given scancode in rc_map.
|
||||
* If scancode is not yet present the routine will allocate a new slot
|
||||
* for it.
|
||||
*
|
||||
* return: index of the mapping containing scancode in question
|
||||
* or -1U in case of failure.
|
||||
*/
|
||||
static unsigned int ir_establish_scancode(struct rc_dev *dev,
|
||||
struct rc_map *rc_map,
|
||||
@ -375,11 +380,12 @@ static unsigned int ir_establish_scancode(struct rc_dev *dev,
|
||||
/**
|
||||
* ir_setkeycode() - set a keycode in the scancode->keycode table
|
||||
* @idev: the struct input_dev device descriptor
|
||||
* @scancode: the desired scancode
|
||||
* @keycode: result
|
||||
* @return: -EINVAL if the keycode could not be inserted, otherwise zero.
|
||||
* @ke: Input keymap entry
|
||||
* @old_keycode: result
|
||||
*
|
||||
* This routine is used to handle evdev EVIOCSKEY ioctl.
|
||||
*
|
||||
* return: -EINVAL if the keycode could not be inserted, otherwise zero.
|
||||
*/
|
||||
static int ir_setkeycode(struct input_dev *idev,
|
||||
const struct input_keymap_entry *ke,
|
||||
@ -422,11 +428,11 @@ out:
|
||||
/**
|
||||
* ir_setkeytable() - sets several entries in the scancode->keycode table
|
||||
* @dev: the struct rc_dev device descriptor
|
||||
* @to: the struct rc_map to copy entries to
|
||||
* @from: the struct rc_map to copy entries from
|
||||
* @return: -ENOMEM if all keycodes could not be inserted, otherwise zero.
|
||||
*
|
||||
* This routine is used to handle table initialization.
|
||||
*
|
||||
* return: -ENOMEM if all keycodes could not be inserted, otherwise zero.
|
||||
*/
|
||||
static int ir_setkeytable(struct rc_dev *dev,
|
||||
const struct rc_map *from)
|
||||
@ -474,10 +480,11 @@ static int rc_map_cmp(const void *key, const void *elt)
|
||||
* ir_lookup_by_scancode() - locate mapping by scancode
|
||||
* @rc_map: the struct rc_map to search
|
||||
* @scancode: scancode to look for in the table
|
||||
* @return: index in the table, -1U if not found
|
||||
*
|
||||
* This routine performs binary search in RC keykeymap table for
|
||||
* given scancode.
|
||||
*
|
||||
* return: index in the table, -1U if not found
|
||||
*/
|
||||
static unsigned int ir_lookup_by_scancode(const struct rc_map *rc_map,
|
||||
unsigned int scancode)
|
||||
@ -495,11 +502,11 @@ static unsigned int ir_lookup_by_scancode(const struct rc_map *rc_map,
|
||||
/**
|
||||
* ir_getkeycode() - get a keycode from the scancode->keycode table
|
||||
* @idev: the struct input_dev device descriptor
|
||||
* @scancode: the desired scancode
|
||||
* @keycode: used to return the keycode, if found, or KEY_RESERVED
|
||||
* @return: always returns zero.
|
||||
* @ke: Input keymap entry
|
||||
*
|
||||
* This routine is used to handle evdev EVIOCGKEY ioctl.
|
||||
*
|
||||
* return: always returns zero.
|
||||
*/
|
||||
static int ir_getkeycode(struct input_dev *idev,
|
||||
struct input_keymap_entry *ke)
|
||||
@ -556,11 +563,12 @@ out:
|
||||
* rc_g_keycode_from_table() - gets the keycode that corresponds to a scancode
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @scancode: the scancode to look for
|
||||
* @return: the corresponding keycode, or KEY_RESERVED
|
||||
*
|
||||
* This routine is used by drivers which need to convert a scancode to a
|
||||
* keycode. Normally it should not be used since drivers should have no
|
||||
* interest in keycodes.
|
||||
*
|
||||
* return: the corresponding keycode, or KEY_RESERVED
|
||||
*/
|
||||
u32 rc_g_keycode_from_table(struct rc_dev *dev, u32 scancode)
|
||||
{
|
||||
@ -625,7 +633,8 @@ EXPORT_SYMBOL_GPL(rc_keyup);
|
||||
|
||||
/**
|
||||
* ir_timer_keyup() - generates a keyup event after a timeout
|
||||
* @cookie: a pointer to the struct rc_dev for the device
|
||||
*
|
||||
* @t: a pointer to the struct timer_list
|
||||
*
|
||||
* This routine will generate a keyup event some time after a keydown event
|
||||
* is generated when no further activity has been detected.
|
||||
@ -780,7 +789,8 @@ EXPORT_SYMBOL_GPL(rc_keydown_notimeout);
|
||||
* provides sensible defaults
|
||||
* @dev: the struct rc_dev descriptor of the device
|
||||
* @filter: the scancode and mask
|
||||
* @return: 0 or -EINVAL if the filter is not valid
|
||||
*
|
||||
* return: 0 or -EINVAL if the filter is not valid
|
||||
*/
|
||||
static int rc_validate_filter(struct rc_dev *dev,
|
||||
struct rc_scancode_filter *filter)
|
||||
|
@ -57,7 +57,7 @@ static void add_read_queue(int flag, unsigned long val);
|
||||
static irqreturn_t sir_interrupt(int irq, void *dev_id);
|
||||
static void send_space(unsigned long len);
|
||||
static void send_pulse(unsigned long len);
|
||||
static void init_hardware(void);
|
||||
static int init_hardware(void);
|
||||
static void drop_hardware(void);
|
||||
/* Initialisation */
|
||||
|
||||
@ -263,11 +263,36 @@ static void send_pulse(unsigned long len)
|
||||
}
|
||||
}
|
||||
|
||||
static void init_hardware(void)
|
||||
static int init_hardware(void)
|
||||
{
|
||||
u8 scratch, scratch2, scratch3;
|
||||
unsigned long flags;
|
||||
|
||||
spin_lock_irqsave(&hardware_lock, flags);
|
||||
|
||||
/*
|
||||
* This is a simple port existence test, borrowed from the autoconfig
|
||||
* function in drivers/tty/serial/8250/8250_port.c
|
||||
*/
|
||||
scratch = sinp(UART_IER);
|
||||
soutp(UART_IER, 0);
|
||||
#ifdef __i386__
|
||||
outb(0xff, 0x080);
|
||||
#endif
|
||||
scratch2 = sinp(UART_IER) & 0x0f;
|
||||
soutp(UART_IER, 0x0f);
|
||||
#ifdef __i386__
|
||||
outb(0x00, 0x080);
|
||||
#endif
|
||||
scratch3 = sinp(UART_IER) & 0x0f;
|
||||
soutp(UART_IER, scratch);
|
||||
if (scratch2 != 0 || scratch3 != 0x0f) {
|
||||
/* we fail, there's nothing here */
|
||||
spin_unlock_irqrestore(&hardware_lock, flags);
|
||||
pr_err("port existence test failed, cannot continue\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* reset UART */
|
||||
outb(0, io + UART_MCR);
|
||||
outb(0, io + UART_IER);
|
||||
@ -285,6 +310,8 @@ static void init_hardware(void)
|
||||
/* turn on UART */
|
||||
outb(UART_MCR_DTR | UART_MCR_RTS | UART_MCR_OUT2, io + UART_MCR);
|
||||
spin_unlock_irqrestore(&hardware_lock, flags);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void drop_hardware(void)
|
||||
@ -334,14 +361,19 @@ static int sir_ir_probe(struct platform_device *dev)
|
||||
pr_err("IRQ %d already in use.\n", irq);
|
||||
return retval;
|
||||
}
|
||||
|
||||
retval = init_hardware();
|
||||
if (retval) {
|
||||
del_timer_sync(&timerlist);
|
||||
return retval;
|
||||
}
|
||||
|
||||
pr_info("I/O port 0x%.4x, IRQ %d.\n", io, irq);
|
||||
|
||||
retval = devm_rc_register_device(&sir_ir_dev->dev, rcdev);
|
||||
if (retval < 0)
|
||||
return retval;
|
||||
|
||||
init_hardware();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ struct st_rc_device {
|
||||
#define IRB_RX_NOISE_SUPPR 0x5c /* noise suppression */
|
||||
#define IRB_RX_POLARITY_INV 0x68 /* polarity inverter */
|
||||
|
||||
/**
|
||||
/*
|
||||
* IRQ set: Enable full FIFO 1 -> bit 3;
|
||||
* Enable overrun IRQ 1 -> bit 2;
|
||||
* Enable last symbol IRQ 1 -> bit 1:
|
||||
@ -72,7 +72,7 @@ static void st_rc_send_lirc_timeout(struct rc_dev *rdev)
|
||||
ir_raw_event_store(rdev, &ev);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* RX graphical example to better understand the difference between ST IR block
|
||||
* output and standard definition used by LIRC (and most of the world!)
|
||||
*
|
||||
@ -317,7 +317,7 @@ static int st_rc_probe(struct platform_device *pdev)
|
||||
device_init_wakeup(dev, true);
|
||||
dev_pm_set_wake_irq(dev, rc_dev->irq);
|
||||
|
||||
/**
|
||||
/*
|
||||
* for LIRC_MODE_MODE2 or LIRC_MODE_PULSE or LIRC_MODE_RAW
|
||||
* lircd expects a long space first before a signal train to sync.
|
||||
*/
|
||||
|
@ -191,7 +191,7 @@ static void sz_push_half_space(struct streamzap_ir *sz,
|
||||
sz_push_full_space(sz, value & SZ_SPACE_MASK);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* streamzap_callback - usb IRQ handler callback
|
||||
*
|
||||
* This procedure is invoked on reception of data from
|
||||
@ -321,7 +321,7 @@ out:
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* streamzap_probe
|
||||
*
|
||||
* Called by usb-core to associated with a candidate device
|
||||
@ -450,7 +450,7 @@ free_sz:
|
||||
return retval;
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* streamzap_disconnect
|
||||
*
|
||||
* Called by the usb core when the device is removed from the system.
|
||||
|
@ -1397,9 +1397,9 @@ static u32 MT2063_Round_fLO(u32 f_LO, u32 f_LO_Step, u32 f_ref)
|
||||
* risk of overflow. It accurately calculates
|
||||
* f_ref * num / denom to within 1 HZ with fixed math.
|
||||
*
|
||||
* @num : Fractional portion of the multiplier
|
||||
* @f_ref: SRO frequency.
|
||||
* @num: Fractional portion of the multiplier
|
||||
* @denom: denominator portion of the ratio
|
||||
* @f_Ref: SRO frequency.
|
||||
*
|
||||
* This calculation handles f_ref as two separate 14-bit fields.
|
||||
* Therefore, a maximum value of 2^28-1 may safely be used for f_ref.
|
||||
@ -1464,8 +1464,6 @@ static u32 MT2063_CalcLO1Mult(u32 *Div,
|
||||
* @f_LO: desired LO frequency.
|
||||
* @f_LO_Step: Minimum step size for the LO (in Hz).
|
||||
* @f_Ref: SRO frequency.
|
||||
* @f_Avoid: Range of PLL frequencies to avoid near
|
||||
* integer multiples of f_Ref (in Hz).
|
||||
*
|
||||
* Returns: Recalculated LO frequency.
|
||||
*/
|
||||
|
@ -26,7 +26,7 @@
|
||||
#include "cinergyT2.h"
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
* convert linux-dvb frontend parameter set into TPS.
|
||||
* See ETSI ETS-300744, section 4.6.2, table 9 for details.
|
||||
*
|
||||
|
@ -1677,10 +1677,10 @@ static int dib8096_set_param_override(struct dvb_frontend *fe)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
/** Update PLL if needed ratio **/
|
||||
/* Update PLL if needed ratio */
|
||||
state->dib8000_ops.update_pll(fe, &dib8090_pll_config_12mhz, fe->dtv_property_cache.bandwidth_hz / 1000, 0);
|
||||
|
||||
/** Get optimize PLL ratio to remove spurious **/
|
||||
/* Get optimize PLL ratio to remove spurious */
|
||||
pll_ratio = dib8090_compute_pll_parameters(fe);
|
||||
if (pll_ratio == 17)
|
||||
timf = 21387946;
|
||||
@ -1691,7 +1691,7 @@ static int dib8096_set_param_override(struct dvb_frontend *fe)
|
||||
else
|
||||
timf = 18179756;
|
||||
|
||||
/** Update ratio **/
|
||||
/* Update ratio */
|
||||
state->dib8000_ops.update_pll(fe, &dib8090_pll_config_12mhz, fe->dtv_property_cache.bandwidth_hz / 1000, pll_ratio);
|
||||
|
||||
state->dib8000_ops.ctrl_timf(fe, DEMOD_TIMF_SET, timf);
|
||||
@ -3357,7 +3357,7 @@ static int novatd_sleep_override(struct dvb_frontend* fe)
|
||||
return state->sleep(fe);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* novatd_frontend_attach - Nova-TD specific attach
|
||||
*
|
||||
* Nova-TD has GPIO0, 1 and 2 for LEDs. So do not fiddle with them except for
|
||||
|
@ -223,8 +223,20 @@ EXPORT_SYMBOL(dibusb_i2c_algo);
|
||||
|
||||
int dibusb_read_eeprom_byte(struct dvb_usb_device *d, u8 offs, u8 *val)
|
||||
{
|
||||
u8 wbuf[1] = { offs };
|
||||
return dibusb_i2c_msg(d, 0x50, wbuf, 1, val, 1);
|
||||
u8 *buf;
|
||||
int rc;
|
||||
|
||||
buf = kmalloc(2, GFP_KERNEL);
|
||||
if (!buf)
|
||||
return -ENOMEM;
|
||||
|
||||
buf[0] = offs;
|
||||
|
||||
rc = dibusb_i2c_msg(d, 0x50, &buf[0], 1, &buf[1], 1);
|
||||
*val = buf[1];
|
||||
kfree(buf);
|
||||
|
||||
return rc;
|
||||
}
|
||||
EXPORT_SYMBOL(dibusb_read_eeprom_byte);
|
||||
|
||||
|
@ -297,7 +297,7 @@ static int jdvbt90502_set_frontend(struct dvb_frontend *fe)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
* (reg, val) commad list to initialize this module.
|
||||
* captured on a Windows box.
|
||||
*/
|
||||
|
@ -21,7 +21,7 @@ MODULE_PARM_DESC(debug,
|
||||
|
||||
DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
||||
|
||||
/**
|
||||
/*
|
||||
* Indirect I2C access to the PLL via FE.
|
||||
* whole I2C protocol data to the PLL is sent via the FE's I2C register.
|
||||
* This is done by a control msg to the FE with the I2C data accompanied, and
|
||||
|
@ -1,4 +1,4 @@
|
||||
/**
|
||||
/*
|
||||
* OV519 driver
|
||||
*
|
||||
* Copyright (C) 2008-2011 Jean-François Moine <moinejf@free.fr>
|
||||
|
@ -649,11 +649,10 @@ static void DecompressBand23(struct pwc_dec23_private *pdec,
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* Uncompress a pwc23 buffer.
|
||||
*
|
||||
* src: raw data
|
||||
* dst: image output
|
||||
* @pdev: pointer to pwc device's internal struct
|
||||
* @src: raw data
|
||||
* @dst: image output
|
||||
*/
|
||||
void pwc_dec23_decompress(struct pwc_device *pdev,
|
||||
const void *src,
|
||||
|
@ -74,7 +74,7 @@ struct smsusb_device_t {
|
||||
static int smsusb_submit_urb(struct smsusb_device_t *dev,
|
||||
struct smsusb_urb_t *surb);
|
||||
|
||||
/**
|
||||
/*
|
||||
* Completing URB's callback handler - bottom half (proccess context)
|
||||
* submits the URB prepared on smsusb_onresponse()
|
||||
*/
|
||||
@ -86,7 +86,7 @@ static void do_submit_urb(struct work_struct *work)
|
||||
smsusb_submit_urb(dev, surb);
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* Completing URB's callback handler - top half (interrupt context)
|
||||
* adds completing sms urb to the global surbs list and activtes the worker
|
||||
* thread the surb
|
||||
|
@ -76,7 +76,7 @@ DVB_DEFINE_MOD_OPT_ADAPTER_NR(adapter_nr);
|
||||
#define TTUSB_REV_2_2 0x22
|
||||
#define TTUSB_BUDGET_NAME "ttusb_stc_fw"
|
||||
|
||||
/**
|
||||
/*
|
||||
* since we're casting (struct ttusb*) <-> (struct dvb_demux*) around
|
||||
* the dvb_demux field must be the first in struct!!
|
||||
*/
|
||||
@ -713,7 +713,7 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
* if length is valid and we reached the end:
|
||||
* goto next muxpack
|
||||
*/
|
||||
@ -729,7 +729,7 @@ static void ttusb_process_frame(struct ttusb *ttusb, u8 * data, int len)
|
||||
/* maximum bytes, until we know the length */
|
||||
ttusb->muxpack_len = 2;
|
||||
|
||||
/**
|
||||
/*
|
||||
* no muxpacks left?
|
||||
* return to search-sync state
|
||||
*/
|
||||
|
@ -144,6 +144,7 @@ static void usbtv_disconnect(struct usb_interface *intf)
|
||||
|
||||
static const struct usb_device_id usbtv_id_table[] = {
|
||||
{ USB_DEVICE(0x1b71, 0x3002) },
|
||||
{ USB_DEVICE(0x1f71, 0x3301) },
|
||||
{}
|
||||
};
|
||||
MODULE_DEVICE_TABLE(usb, usbtv_id_table);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user