提交 77071bc6 编写于 作者: L Linus Torvalds

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
  ...
****************
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. ...@@ -41,4 +41,5 @@ For more details see the file COPYING in the source distribution of Linux.
technisat technisat
ttusb-dec ttusb-dec
udev udev
frontends
contributors contributors
...@@ -12643,6 +12643,14 @@ S: Maintained ...@@ -12643,6 +12643,14 @@ S: Maintained
F: drivers/ssb/ F: drivers/ssb/
F: include/linux/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 SONY MEMORYSTICK CARD SUPPORT
M: Alex Dubov <oakad@yahoo.com> M: Alex Dubov <oakad@yahoo.com>
W: http://tifmxx.berlios.de/ W: http://tifmxx.berlios.de/
......
...@@ -521,13 +521,13 @@ static void list_add_locked(struct list_head *new, struct list_head *head, ...@@ -521,13 +521,13 @@ static void list_add_locked(struct list_head *new, struct list_head *head,
spin_unlock_irqrestore(lock, flags); spin_unlock_irqrestore(lock, flags);
} }
/** /*
* register a client callback that called when device plugged in/unplugged * register a client callback that called when device plugged in/unplugged
* NOTE: if devices exist callback is called immediately for each device * NOTE: if devices exist callback is called immediately for each device
* *
* @param hotplug callback * @param hotplug callback
* *
* @return 0 on success, <0 on error. * return: 0 on success, <0 on error.
*/ */
int smscore_register_hotplug(hotplug_t hotplug) int smscore_register_hotplug(hotplug_t hotplug)
{ {
...@@ -562,7 +562,7 @@ int smscore_register_hotplug(hotplug_t hotplug) ...@@ -562,7 +562,7 @@ int smscore_register_hotplug(hotplug_t hotplug)
} }
EXPORT_SYMBOL_GPL(smscore_register_hotplug); EXPORT_SYMBOL_GPL(smscore_register_hotplug);
/** /*
* unregister a client callback that called when device plugged in/unplugged * unregister a client callback that called when device plugged in/unplugged
* *
* @param hotplug callback * @param hotplug callback
...@@ -636,7 +636,7 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer, ...@@ -636,7 +636,7 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer,
return cb; return cb;
} }
/** /*
* creates coredev object for a device, prepares buffers, * creates coredev object for a device, prepares buffers,
* creates buffer mappings, notifies registered hotplugs about new device. * creates buffer mappings, notifies registered hotplugs about new device.
* *
...@@ -644,7 +644,7 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer, ...@@ -644,7 +644,7 @@ smscore_buffer_t *smscore_createbuffer(u8 *buffer, void *common_buffer,
* and handlers * and handlers
* @param coredev pointer to a value that receives created coredev object * @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, int smscore_register_device(struct smsdevice_params_t *params,
struct smscore_device_t **coredev, struct smscore_device_t **coredev,
...@@ -764,10 +764,10 @@ static int smscore_sendrequest_and_wait(struct smscore_device_t *coredev, ...@@ -764,10 +764,10 @@ static int smscore_sendrequest_and_wait(struct smscore_device_t *coredev,
0 : -ETIME; 0 : -ETIME;
} }
/** /*
* Starts & enables IR operations * 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) static int smscore_init_ir(struct smscore_device_t *coredev)
{ {
...@@ -812,13 +812,13 @@ 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; return 0;
} }
/** /*
* configures device features according to board configuration structure. * configures device features according to board configuration structure.
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
* smscore_register_device * 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) static int smscore_configure_board(struct smscore_device_t *coredev)
{ {
...@@ -861,13 +861,13 @@ 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; return 0;
} }
/** /*
* sets initial device mode and notifies client hotplugs that device is ready * sets initial device mode and notifies client hotplugs that device is ready
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
* smscore_register_device * 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) int smscore_start_device(struct smscore_device_t *coredev)
{ {
...@@ -1087,7 +1087,7 @@ static char *smscore_fw_lkup[][DEVICE_MODE_MAX] = { ...@@ -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 * get firmware file name from one of the two mechanisms : sms_boards or
* smscore_fw_lkup. * smscore_fw_lkup.
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
...@@ -1096,7 +1096,7 @@ static char *smscore_fw_lkup[][DEVICE_MODE_MAX] = { ...@@ -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 * @param lookup if 1, always get the fw filename from smscore_fw_lkup
* table. if 0, try first to get from sms_boards * 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, static char *smscore_get_fw_filename(struct smscore_device_t *coredev,
int mode) int mode)
...@@ -1125,7 +1125,7 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev, ...@@ -1125,7 +1125,7 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev,
return fw[mode]; return fw[mode];
} }
/** /*
* loads specified firmware into a buffer and calls device loadfirmware_handler * loads specified firmware into a buffer and calls device loadfirmware_handler
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
...@@ -1133,7 +1133,7 @@ static char *smscore_get_fw_filename(struct smscore_device_t *coredev, ...@@ -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 filename null-terminated string specifies firmware file name
* @param loadfirmware_handler device handler that loads firmware * @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, static int smscore_load_firmware_from_file(struct smscore_device_t *coredev,
int mode, int mode,
...@@ -1182,14 +1182,14 @@ static int smscore_load_firmware_from_file(struct smscore_device_t *coredev, ...@@ -1182,14 +1182,14 @@ static int smscore_load_firmware_from_file(struct smscore_device_t *coredev,
return rc; return rc;
} }
/** /*
* notifies all clients registered with the device, notifies hotplugs, * notifies all clients registered with the device, notifies hotplugs,
* frees all buffers and coredev object * frees all buffers and coredev object
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
* smscore_register_device * 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) void smscore_unregister_device(struct smscore_device_t *coredev)
{ {
...@@ -1282,14 +1282,14 @@ static int smscore_detect_mode(struct smscore_device_t *coredev) ...@@ -1282,14 +1282,14 @@ static int smscore_detect_mode(struct smscore_device_t *coredev)
return rc; return rc;
} }
/** /*
* send init device request and wait for response * send init device request and wait for response
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
* smscore_register_device * smscore_register_device
* @param mode requested mode of operation * @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) 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) ...@@ -1315,7 +1315,7 @@ static int smscore_init_device(struct smscore_device_t *coredev, int mode)
return rc; return rc;
} }
/** /*
* calls device handler to change mode of operation * calls device handler to change mode of operation
* NOTE: stellar/usb may disconnect when changing mode * NOTE: stellar/usb may disconnect when changing mode
* *
...@@ -1323,7 +1323,7 @@ static int smscore_init_device(struct smscore_device_t *coredev, int mode) ...@@ -1323,7 +1323,7 @@ static int smscore_init_device(struct smscore_device_t *coredev, int mode)
* smscore_register_device * smscore_register_device
* @param mode requested mode of operation * @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) 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) ...@@ -1411,13 +1411,13 @@ int smscore_set_device_mode(struct smscore_device_t *coredev, int mode)
return rc; return rc;
} }
/** /*
* calls device handler to get current mode of operation * calls device handler to get current mode of operation
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
* smscore_register_device * smscore_register_device
* *
* @return current mode * return: current mode
*/ */
int smscore_get_device_mode(struct smscore_device_t *coredev) int smscore_get_device_mode(struct smscore_device_t *coredev)
{ {
...@@ -1425,7 +1425,7 @@ 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); EXPORT_SYMBOL_GPL(smscore_get_device_mode);
/** /*
* find client by response id & type within the clients list. * find client by response id & type within the clients list.
* return client handle or NULL. * return client handle or NULL.
* *
...@@ -1462,7 +1462,7 @@ smscore_client_t *smscore_find_client(struct smscore_device_t *coredev, ...@@ -1462,7 +1462,7 @@ smscore_client_t *smscore_find_client(struct smscore_device_t *coredev,
return client; return client;
} }
/** /*
* find client by response id/type, call clients onresponse handler * find client by response id/type, call clients onresponse handler
* return buffer to pool on error * return buffer to pool on error
* *
...@@ -1615,13 +1615,13 @@ void smscore_onresponse(struct smscore_device_t *coredev, ...@@ -1615,13 +1615,13 @@ void smscore_onresponse(struct smscore_device_t *coredev,
} }
EXPORT_SYMBOL_GPL(smscore_onresponse); EXPORT_SYMBOL_GPL(smscore_onresponse);
/** /*
* return pointer to next free buffer descriptor from core pool * return pointer to next free buffer descriptor from core pool
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
* smscore_register_device * 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) 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) ...@@ -1648,7 +1648,7 @@ struct smscore_buffer_t *smscore_getbuffer(struct smscore_device_t *coredev)
} }
EXPORT_SYMBOL_GPL(smscore_getbuffer); EXPORT_SYMBOL_GPL(smscore_getbuffer);
/** /*
* return buffer descriptor to a pool * return buffer descriptor to a pool
* *
* @param coredev pointer to a coredev object returned by * @param coredev pointer to a coredev object returned by
...@@ -1693,7 +1693,7 @@ static int smscore_validate_client(struct smscore_device_t *coredev, ...@@ -1693,7 +1693,7 @@ static int smscore_validate_client(struct smscore_device_t *coredev,
return 0; return 0;
} }
/** /*
* creates smsclient object, check that id is taken by another client * creates smsclient object, check that id is taken by another client
* *
* @param coredev pointer to a coredev object from clients hotplug * @param coredev pointer to a coredev object from clients hotplug
...@@ -1705,7 +1705,7 @@ static int smscore_validate_client(struct smscore_device_t *coredev, ...@@ -1705,7 +1705,7 @@ static int smscore_validate_client(struct smscore_device_t *coredev,
* @param context client-specific context * @param context client-specific context
* @param client pointer to a value that receives created smsclient object * @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, int smscore_register_client(struct smscore_device_t *coredev,
struct smsclient_params_t *params, struct smsclient_params_t *params,
...@@ -1740,7 +1740,7 @@ int smscore_register_client(struct smscore_device_t *coredev, ...@@ -1740,7 +1740,7 @@ int smscore_register_client(struct smscore_device_t *coredev,
} }
EXPORT_SYMBOL_GPL(smscore_register_client); EXPORT_SYMBOL_GPL(smscore_register_client);
/** /*
* frees smsclient object and all subclients associated with it * frees smsclient object and all subclients associated with it
* *
* @param client pointer to smsclient object returned by * @param client pointer to smsclient object returned by
...@@ -1771,7 +1771,7 @@ void smscore_unregister_client(struct smscore_client_t *client) ...@@ -1771,7 +1771,7 @@ void smscore_unregister_client(struct smscore_client_t *client)
} }
EXPORT_SYMBOL_GPL(smscore_unregister_client); EXPORT_SYMBOL_GPL(smscore_unregister_client);
/** /*
* verifies that source id is not taken by another client, * verifies that source id is not taken by another client,
* calls device handler to send requests to the device * calls device handler to send requests to the device
* *
...@@ -1780,7 +1780,7 @@ EXPORT_SYMBOL_GPL(smscore_unregister_client); ...@@ -1780,7 +1780,7 @@ EXPORT_SYMBOL_GPL(smscore_unregister_client);
* @param buffer pointer to a request buffer * @param buffer pointer to a request buffer
* @param size size (in bytes) of 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, int smsclient_sendrequest(struct smscore_client_t *client,
void *buffer, size_t size) void *buffer, size_t size)
......
...@@ -206,7 +206,7 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot, ...@@ -206,7 +206,7 @@ static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot,
* @hlen: Number of bytes in haystack. * @hlen: Number of bytes in haystack.
* @needle: Buffer to find. * @needle: Buffer to find.
* @nlen: Number of bytes in needle. * @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) 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) ...@@ -226,7 +226,7 @@ static char *findstr(char *haystack, int hlen, char *needle, int nlen)
/* ************************************************************************** */ /* ************************************************************************** */
/* EN50221 physical interface functions */ /* EN50221 physical interface functions */
/** /*
* dvb_ca_en50221_check_camstatus - Check CAM status. * dvb_ca_en50221_check_camstatus - Check CAM status.
*/ */
static int dvb_ca_en50221_check_camstatus(struct dvb_ca_private *ca, int slot) 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) ...@@ -275,9 +275,9 @@ static int dvb_ca_en50221_check_camstatus(struct dvb_ca_private *ca, int slot)
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot on interface. * @slot: Slot on interface.
* @waitfor: Flags to wait for. * @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, static int dvb_ca_en50221_wait_if_status(struct dvb_ca_private *ca, int slot,
u8 waitfor, int timeout_hz) u8 waitfor, int timeout_hz)
...@@ -325,7 +325,7 @@ static int dvb_ca_en50221_wait_if_status(struct dvb_ca_private *ca, int slot, ...@@ -325,7 +325,7 @@ static int dvb_ca_en50221_wait_if_status(struct dvb_ca_private *ca, int slot,
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot id. * @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) 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) ...@@ -397,11 +397,11 @@ static int dvb_ca_en50221_link_init(struct dvb_ca_private *ca, int slot)
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot id. * @slot: Slot id.
* @address: Address to read from. Updated. * @address: Address to read from. Updated.
* @tupleType: Tuple id byte. Updated. * @tuple_type: Tuple id byte. Updated.
* @tupleLength: Tuple length. Updated. * @tuple_length: Tuple length. Updated.
* @tuple: Dest buffer for tuple (must be 256 bytes). 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, static int dvb_ca_en50221_read_tuple(struct dvb_ca_private *ca, int slot,
int *address, int *tuple_type, int *address, int *tuple_type,
...@@ -455,7 +455,7 @@ static int dvb_ca_en50221_read_tuple(struct dvb_ca_private *ca, int slot, ...@@ -455,7 +455,7 @@ static int dvb_ca_en50221_read_tuple(struct dvb_ca_private *ca, int slot,
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot id. * @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) 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) ...@@ -632,10 +632,11 @@ static int dvb_ca_en50221_set_configoption(struct dvb_ca_private *ca, int slot)
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot to read from. * @slot: Slot to read from.
* @ebuf: If non-NULL, the data will be written to this buffer. If NULL, * @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. * @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, static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot,
u8 *ebuf, int ecount) u8 *ebuf, int ecount)
...@@ -784,11 +785,11 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot, ...@@ -784,11 +785,11 @@ static int dvb_ca_en50221_read_data(struct dvb_ca_private *ca, int slot,
* *
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot to write to. * @slot: Slot to write to.
* @ebuf: The data in this buffer is treated as a complete link-level packet to * @buf: The data in this buffer is treated as a complete link-level packet to
* be written. * be written.
* @count: Size of ebuf. * @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, static int dvb_ca_en50221_write_data(struct dvb_ca_private *ca, int slot,
u8 *buf, int bytes_write) u8 *buf, int bytes_write)
...@@ -933,7 +934,7 @@ static int dvb_ca_en50221_slot_shutdown(struct dvb_ca_private *ca, int slot) ...@@ -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. * dvb_ca_en50221_camchange_irq - A CAMCHANGE IRQ has occurred.
* *
* @ca: CA instance. * @pubca: CA instance.
* @slot: Slot concerned. * @slot: Slot concerned.
* @change_type: One of the DVB_CA_CAMCHANGE_* values. * @change_type: One of the DVB_CA_CAMCHANGE_* values.
*/ */
...@@ -963,7 +964,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_camchange_irq); ...@@ -963,7 +964,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_camchange_irq);
/** /**
* dvb_ca_en50221_camready_irq - A CAMREADY IRQ has occurred. * dvb_ca_en50221_camready_irq - A CAMREADY IRQ has occurred.
* *
* @ca: CA instance. * @pubca: CA instance.
* @slot: Slot concerned. * @slot: Slot concerned.
*/ */
void dvb_ca_en50221_camready_irq(struct dvb_ca_en50221 *pubca, int slot) void dvb_ca_en50221_camready_irq(struct dvb_ca_en50221 *pubca, int slot)
...@@ -983,7 +984,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_camready_irq); ...@@ -983,7 +984,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_camready_irq);
/** /**
* dvb_ca_en50221_frda_irq - An FR or DA IRQ has occurred. * dvb_ca_en50221_frda_irq - An FR or DA IRQ has occurred.
* *
* @ca: CA instance. * @pubca: CA instance.
* @slot: Slot concerned. * @slot: Slot concerned.
*/ */
void dvb_ca_en50221_frda_irq(struct dvb_ca_en50221 *pubca, int slot) 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) ...@@ -1091,7 +1092,7 @@ static void dvb_ca_en50221_thread_update_delay(struct dvb_ca_private *ca)
* *
* @ca: CA instance. * @ca: CA instance.
* @slot: Slot to process. * @slot: Slot to process.
* @return: 0 .. no change * return:: 0 .. no change
* 1 .. CAM state changed * 1 .. CAM state changed
*/ */
...@@ -1296,7 +1297,7 @@ static void dvb_ca_en50221_thread_state_machine(struct dvb_ca_private *ca, ...@@ -1296,7 +1297,7 @@ static void dvb_ca_en50221_thread_state_machine(struct dvb_ca_private *ca,
mutex_unlock(&sl->slot_lock); mutex_unlock(&sl->slot_lock);
} }
/** /*
* Kernel thread which monitors CA slots for CAM changes, and performs data * Kernel thread which monitors CA slots for CAM changes, and performs data
* transfers. * transfers.
*/ */
...@@ -1336,12 +1337,11 @@ static int dvb_ca_en50221_thread(void *data) ...@@ -1336,12 +1337,11 @@ static int dvb_ca_en50221_thread(void *data)
* Real ioctl implementation. * Real ioctl implementation.
* NOTE: CA_SEND_MSG/CA_GET_MSG ioctls have userspace buffers passed to them. * NOTE: CA_SEND_MSG/CA_GET_MSG ioctls have userspace buffers passed to them.
* *
* @inode: Inode concerned.
* @file: File concerned. * @file: File concerned.
* @cmd: IOCTL command. * @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, static int dvb_ca_en50221_io_do_ioctl(struct file *file,
unsigned int cmd, void *parg) unsigned int cmd, void *parg)
...@@ -1420,12 +1420,11 @@ static int dvb_ca_en50221_io_do_ioctl(struct file *file, ...@@ -1420,12 +1420,11 @@ static int dvb_ca_en50221_io_do_ioctl(struct file *file,
/** /**
* Wrapper for ioctl implementation. * Wrapper for ioctl implementation.
* *
* @inode: Inode concerned.
* @file: File concerned. * @file: File concerned.
* @cmd: IOCTL command. * @cmd: IOCTL command.
* @arg: Associated argument. * @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, static long dvb_ca_en50221_io_ioctl(struct file *file,
unsigned int cmd, unsigned long arg) unsigned int cmd, unsigned long arg)
...@@ -1441,7 +1440,7 @@ static long dvb_ca_en50221_io_ioctl(struct file *file, ...@@ -1441,7 +1440,7 @@ static long dvb_ca_en50221_io_ioctl(struct file *file,
* @count: Size of source buffer. * @count: Size of source buffer.
* @ppos: Position in file (ignored). * @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, static ssize_t dvb_ca_en50221_io_write(struct file *file,
const char __user *buf, size_t count, const char __user *buf, size_t count,
...@@ -1536,7 +1535,7 @@ static ssize_t dvb_ca_en50221_io_write(struct file *file, ...@@ -1536,7 +1535,7 @@ static ssize_t dvb_ca_en50221_io_write(struct file *file,
return status; return status;
} }
/** /*
* Condition for waking up in dvb_ca_en50221_io_read_condition * Condition for waking up in dvb_ca_en50221_io_read_condition
*/ */
static int dvb_ca_en50221_io_read_condition(struct dvb_ca_private *ca, static int dvb_ca_en50221_io_read_condition(struct dvb_ca_private *ca,
...@@ -1593,7 +1592,7 @@ static int dvb_ca_en50221_io_read_condition(struct dvb_ca_private *ca, ...@@ -1593,7 +1592,7 @@ static int dvb_ca_en50221_io_read_condition(struct dvb_ca_private *ca,
* @count: Size of destination buffer. * @count: Size of destination buffer.
* @ppos: Position in file (ignored). * @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, static ssize_t dvb_ca_en50221_io_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos) size_t count, loff_t *ppos)
...@@ -1702,7 +1701,7 @@ static ssize_t dvb_ca_en50221_io_read(struct file *file, char __user *buf, ...@@ -1702,7 +1701,7 @@ static ssize_t dvb_ca_en50221_io_read(struct file *file, char __user *buf,
* @inode: Inode concerned. * @inode: Inode concerned.
* @file: File 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) 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) ...@@ -1752,7 +1751,7 @@ static int dvb_ca_en50221_io_open(struct inode *inode, struct file *file)
* @inode: Inode concerned. * @inode: Inode concerned.
* @file: File 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) 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) ...@@ -1781,7 +1780,7 @@ static int dvb_ca_en50221_io_release(struct inode *inode, struct file *file)
* @file: File concerned. * @file: File concerned.
* @wait: poll wait table. * @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) 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 = { ...@@ -1838,11 +1837,11 @@ static const struct dvb_device dvbdev_ca = {
* Initialise a new DVB CA EN50221 interface device. * Initialise a new DVB CA EN50221 interface device.
* *
* @dvb_adapter: DVB adapter to attach the new CA device to. * @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_*). * @flags: Flags describing the CA device (DVB_CA_FLAG_*).
* @slot_count: Number of slots supported. * @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, int dvb_ca_en50221_init(struct dvb_adapter *dvb_adapter,
struct dvb_ca_en50221 *pubca, int flags, int slot_count) struct dvb_ca_en50221 *pubca, int flags, int slot_count)
...@@ -1929,8 +1928,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_init); ...@@ -1929,8 +1928,7 @@ EXPORT_SYMBOL(dvb_ca_en50221_init);
/** /**
* Release a DVB CA EN50221 interface device. * Release a DVB CA EN50221 interface device.
* *
* @ca_dev: The dvb_device_t instance for the CA device. * @pubca: The associated dvb_ca instance.
* @ca: The associated dvb_ca instance.
*/ */
void dvb_ca_en50221_release(struct dvb_ca_en50221 *pubca) 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 ...@@ -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. * @fe: The frontend concerned.
* @param check_wrapped Checks if an iteration has completed. DO NOT SET ON THE FIRST ATTEMPT * @check_wrapped: Checks if an iteration has completed.
* @returns Number of complete iterations that have been performed. * 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) 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, ...@@ -1253,7 +1256,7 @@ dtv_property_legacy_params_sync(struct dvb_frontend *fe,
* dtv_get_frontend - calls a callback for retrieving DTV parameters * dtv_get_frontend - calls a callback for retrieving DTV parameters
* @fe: struct dvb_frontend pointer * @fe: struct dvb_frontend pointer
* @c: struct dtv_frontend_properties pointer (DVBv5 cache) * @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. * 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. * If c is not null, it will update the DVBv5 cache struct pointed by it.
......
...@@ -125,7 +125,7 @@ struct dvb_net_priv { ...@@ -125,7 +125,7 @@ struct dvb_net_priv {
}; };
/** /*
* Determine the packet's protocol ID. The rule here is that we * 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. * 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. * 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, ...@@ -155,7 +155,7 @@ static __be16 dvb_net_eth_type_trans(struct sk_buff *skb,
rawp = skb->data; rawp = skb->data;
/** /*
* This is a magic hack to spot IPX packets. Older Novell breaks * 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 * 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 * 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, ...@@ -164,7 +164,7 @@ static __be16 dvb_net_eth_type_trans(struct sk_buff *skb,
if (*(unsigned short *)rawp == 0xFFFF) if (*(unsigned short *)rawp == 0xFFFF)
return htons(ETH_P_802_3); return htons(ETH_P_802_3);
/** /*
* Real 802.2 LLC * Real 802.2 LLC
*/ */
return htons(ETH_P_802_2); return htons(ETH_P_802_2);
...@@ -215,7 +215,8 @@ static int ule_exthdr_padding(struct dvb_net_priv *p) ...@@ -215,7 +215,8 @@ static int ule_exthdr_padding(struct dvb_net_priv *p)
return 0; 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. * 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 * Returns: >= 0: nr. of bytes consumed by next extension header
* -1: Mandatory extension header that is not recognized or TEST SNDU; discard. * -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 ) ...@@ -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 ) static inline void reset_ule( struct dvb_net_priv *p )
{ {
p->ule_skb = NULL; p->ule_skb = NULL;
...@@ -304,7 +305,7 @@ static inline void reset_ule( struct dvb_net_priv *p ) ...@@ -304,7 +305,7 @@ static inline void reset_ule( struct dvb_net_priv *p )
p->ule_bridged = 0; p->ule_bridged = 0;
} }
/** /*
* Decode ULE SNDUs according to draft-ietf-ipdvb-ule-03.txt from a sequence of * Decode ULE SNDUs according to draft-ietf-ipdvb-ule-03.txt from a sequence of
* TS cells of a single PID. * TS cells of a single PID.
*/ */
...@@ -1005,7 +1006,7 @@ static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len, ...@@ -1005,7 +1006,7 @@ static int dvb_net_sec_callback(const u8 *buffer1, size_t buffer1_len,
{ {
struct net_device *dev = filter->priv; struct net_device *dev = filter->priv;
/** /*
* we rely on the DVB API definition where exactly one complete * we rely on the DVB API definition where exactly one complete
* section is delivered in buffer1 * section is delivered in buffer1
*/ */
......
...@@ -38,6 +38,13 @@ ...@@ -38,6 +38,13 @@
* @api_version: Firmware API version. * @api_version: Firmware API version.
* @gpio: GPIOs. * @gpio: GPIOs.
* @get_dvb_frontend: Get DVB frontend callback. * @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 { struct af9013_platform_data {
/* /*
...@@ -89,16 +96,15 @@ struct af9013_platform_data { ...@@ -89,16 +96,15 @@ struct af9013_platform_data {
#define AF9013_TS_PARALLEL AF9013_TS_MODE_PARALLEL #define AF9013_TS_PARALLEL AF9013_TS_MODE_PARALLEL
#define AF9013_TS_SERIAL AF9013_TS_MODE_SERIAL #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) #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, extern struct dvb_frontend *af9013_attach(const struct af9013_config *config,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
#else #else
......
...@@ -41,6 +41,15 @@ struct ascot2e_config { ...@@ -41,6 +41,15 @@ struct ascot2e_config {
}; };
#if IS_REACHABLE(CONFIG_DVB_ASCOT2E) #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, extern struct dvb_frontend *ascot2e_attach(struct dvb_frontend *fe,
const struct ascot2e_config *config, const struct ascot2e_config *config,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
......
...@@ -49,7 +49,6 @@ ...@@ -49,7 +49,6 @@
* @gpio_chip_base: GPIO. * @gpio_chip_base: GPIO.
* @get_dvb_frontend: Get DVB frontend. * @get_dvb_frontend: Get DVB frontend.
*/ */
struct cxd2820r_platform_data { struct cxd2820r_platform_data {
u8 ts_mode; u8 ts_mode;
bool ts_clk_inv; bool ts_clk_inv;
...@@ -62,6 +61,17 @@ struct cxd2820r_platform_data { ...@@ -62,6 +61,17 @@ struct cxd2820r_platform_data {
bool attach_in_use; 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 { struct cxd2820r_config {
/* Demodulator I2C address. /* Demodulator I2C address.
* Driver determines DVB-C slave I2C address automatically from master * Driver determines DVB-C slave I2C address automatically from master
...@@ -98,6 +108,18 @@ struct cxd2820r_config { ...@@ -98,6 +108,18 @@ struct cxd2820r_config {
#if IS_REACHABLE(CONFIG_DVB_CXD2820R) #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( extern struct dvb_frontend *cxd2820r_attach(
const struct cxd2820r_config *config, const struct cxd2820r_config *config,
struct i2c_adapter *i2c, struct i2c_adapter *i2c,
......
...@@ -52,7 +52,7 @@ struct i2c_device_addr { ...@@ -52,7 +52,7 @@ struct i2c_device_addr {
}; };
/** /*
* \def IS_I2C_10BIT( addr ) * \def IS_I2C_10BIT( addr )
* \brief Determine if I2C address 'addr' is a 10 bits address or not. * \brief Determine if I2C address 'addr' is a 10 bits address or not.
* \param addr The I2C address. * \param addr The I2C address.
...@@ -67,7 +67,7 @@ struct i2c_device_addr { ...@@ -67,7 +67,7 @@ struct i2c_device_addr {
Exported FUNCTIONS Exported FUNCTIONS
------------------------------------------------------------------------------*/ ------------------------------------------------------------------------------*/
/** /*
* \fn drxbsp_i2c_init() * \fn drxbsp_i2c_init()
* \brief Initialize I2C communication module. * \brief Initialize I2C communication module.
* \return drx_status_t Return status. * \return drx_status_t Return status.
...@@ -76,7 +76,7 @@ Exported FUNCTIONS ...@@ -76,7 +76,7 @@ Exported FUNCTIONS
*/ */
drx_status_t drxbsp_i2c_init(void); drx_status_t drxbsp_i2c_init(void);
/** /*
* \fn drxbsp_i2c_term() * \fn drxbsp_i2c_term()
* \brief Terminate I2C communication module. * \brief Terminate I2C communication module.
* \return drx_status_t Return status. * \return drx_status_t Return status.
...@@ -85,7 +85,7 @@ Exported FUNCTIONS ...@@ -85,7 +85,7 @@ Exported FUNCTIONS
*/ */
drx_status_t drxbsp_i2c_term(void); drx_status_t drxbsp_i2c_term(void);
/** /*
* \fn drx_status_t drxbsp_i2c_write_read( struct i2c_device_addr *w_dev_addr, * \fn drx_status_t drxbsp_i2c_write_read( struct i2c_device_addr *w_dev_addr,
* u16 w_count, * u16 w_count,
* u8 *wData, * u8 *wData,
...@@ -121,7 +121,7 @@ Exported FUNCTIONS ...@@ -121,7 +121,7 @@ Exported FUNCTIONS
struct i2c_device_addr *r_dev_addr, struct i2c_device_addr *r_dev_addr,
u16 r_count, u8 *r_data); u16 r_count, u8 *r_data);
/** /*
* \fn drxbsp_i2c_error_text() * \fn drxbsp_i2c_error_text()
* \brief Returns a human readable error. * \brief Returns a human readable error.
* Counter part of numerical drx_i2c_error_g. * Counter part of numerical drx_i2c_error_g.
...@@ -130,7 +130,7 @@ Exported FUNCTIONS ...@@ -130,7 +130,7 @@ Exported FUNCTIONS
*/ */
char *drxbsp_i2c_error_text(void); char *drxbsp_i2c_error_text(void);
/** /*
* \var drx_i2c_error_g; * \var drx_i2c_error_g;
* \brief I2C specific error codes, platform dependent. * \brief I2C specific error codes, platform dependent.
*/ */
......
...@@ -69,15 +69,15 @@ TYPEDEFS ...@@ -69,15 +69,15 @@ TYPEDEFS
struct drxjscu_cmd { struct drxjscu_cmd {
u16 command; u16 command;
/**< Command number */ /*< Command number */
u16 parameter_len; u16 parameter_len;
/**< Data length in byte */ /*< Data length in byte */
u16 result_len; u16 result_len;
/**< result length in byte */ /*< result length in byte */
u16 *parameter; u16 *parameter;
/**< General purpous param */ /*< General purpous param */
u16 *result; u16 *result;
/**< General purpous param */}; /*< General purpous param */};
/*============================================================================*/ /*============================================================================*/
/*============================================================================*/ /*============================================================================*/
...@@ -130,7 +130,7 @@ TYPEDEFS ...@@ -130,7 +130,7 @@ TYPEDEFS
DRXJ_CFG_MAX /* dummy, never to be used */}; DRXJ_CFG_MAX /* dummy, never to be used */};
/** /*
* /struct enum drxj_cfg_smart_ant_io * smart antenna i/o. * /struct enum drxj_cfg_smart_ant_io * smart antenna i/o.
*/ */
enum drxj_cfg_smart_ant_io { enum drxj_cfg_smart_ant_io {
...@@ -138,7 +138,7 @@ enum drxj_cfg_smart_ant_io { ...@@ -138,7 +138,7 @@ enum drxj_cfg_smart_ant_io {
DRXJ_SMT_ANT_INPUT DRXJ_SMT_ANT_INPUT
}; };
/** /*
* /struct struct drxj_cfg_smart_ant * Set smart antenna. * /struct struct drxj_cfg_smart_ant * Set smart antenna.
*/ */
struct drxj_cfg_smart_ant { struct drxj_cfg_smart_ant {
...@@ -146,7 +146,7 @@ enum drxj_cfg_smart_ant_io { ...@@ -146,7 +146,7 @@ enum drxj_cfg_smart_ant_io {
u16 ctrl_data; u16 ctrl_data;
}; };
/** /*
* /struct DRXJAGCSTATUS_t * /struct DRXJAGCSTATUS_t
* AGC status information from the DRXJ-IQM-AF. * AGC status information from the DRXJ-IQM-AF.
*/ */
...@@ -158,7 +158,7 @@ struct drxj_agc_status { ...@@ -158,7 +158,7 @@ struct drxj_agc_status {
/* DRXJ_CFG_AGC_RF, DRXJ_CFG_AGC_IF */ /* DRXJ_CFG_AGC_RF, DRXJ_CFG_AGC_IF */
/** /*
* /struct enum drxj_agc_ctrl_mode * Available AGCs modes in the DRXJ. * /struct enum drxj_agc_ctrl_mode * Available AGCs modes in the DRXJ.
*/ */
enum drxj_agc_ctrl_mode { enum drxj_agc_ctrl_mode {
...@@ -166,7 +166,7 @@ struct drxj_agc_status { ...@@ -166,7 +166,7 @@ struct drxj_agc_status {
DRX_AGC_CTRL_USER, DRX_AGC_CTRL_USER,
DRX_AGC_CTRL_OFF}; DRX_AGC_CTRL_OFF};
/** /*
* /struct struct drxj_cfg_agc * Generic interface for all AGCs present on the DRXJ. * /struct struct drxj_cfg_agc * Generic interface for all AGCs present on the DRXJ.
*/ */
struct drxj_cfg_agc { struct drxj_cfg_agc {
...@@ -182,7 +182,7 @@ struct drxj_agc_status { ...@@ -182,7 +182,7 @@ struct drxj_agc_status {
/* DRXJ_CFG_PRE_SAW */ /* DRXJ_CFG_PRE_SAW */
/** /*
* /struct struct drxj_cfg_pre_saw * Interface to configure pre SAW sense. * /struct struct drxj_cfg_pre_saw * Interface to configure pre SAW sense.
*/ */
struct drxj_cfg_pre_saw { struct drxj_cfg_pre_saw {
...@@ -192,14 +192,14 @@ struct drxj_agc_status { ...@@ -192,14 +192,14 @@ struct drxj_agc_status {
/* DRXJ_CFG_AFE_GAIN */ /* DRXJ_CFG_AFE_GAIN */
/** /*
* /struct struct drxj_cfg_afe_gain * Interface to configure gain of AFE (LNA + PGA). * /struct struct drxj_cfg_afe_gain * Interface to configure gain of AFE (LNA + PGA).
*/ */
struct drxj_cfg_afe_gain { struct drxj_cfg_afe_gain {
enum drx_standard standard; /* standard to which these settings apply */ enum drx_standard standard; /* standard to which these settings apply */
u16 gain; /* gain in 0.1 dB steps, DRXJ range 140 .. 335 */}; u16 gain; /* gain in 0.1 dB steps, DRXJ range 140 .. 335 */};
/** /*
* /struct drxjrs_errors * /struct drxjrs_errors
* Available failure information in DRXJ_FEC_RS. * Available failure information in DRXJ_FEC_RS.
* *
...@@ -208,25 +208,25 @@ struct drxj_agc_status { ...@@ -208,25 +208,25 @@ struct drxj_agc_status {
*/ */
struct drxjrs_errors { struct drxjrs_errors {
u16 nr_bit_errors; u16 nr_bit_errors;
/**< no of pre RS bit errors */ /*< no of pre RS bit errors */
u16 nr_symbol_errors; u16 nr_symbol_errors;
/**< no of pre RS symbol errors */ /*< no of pre RS symbol errors */
u16 nr_packet_errors; u16 nr_packet_errors;
/**< no of pre RS packet errors */ /*< no of pre RS packet errors */
u16 nr_failures; u16 nr_failures;
/**< no of post RS failures to decode */ /*< no of post RS failures to decode */
u16 nr_snc_par_fail_count; 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 struct drxj_cfg_vsb_misc * symbol error rate
*/ */
struct drxj_cfg_vsb_misc { struct drxj_cfg_vsb_misc {
u32 symb_error; u32 symb_error;
/**< symbol error rate sps */}; /*< symbol error rate sps */};
/** /*
* /enum enum drxj_mpeg_output_clock_rate * Mpeg output clock rate. * /enum enum drxj_mpeg_output_clock_rate * Mpeg output clock rate.
* *
*/ */
...@@ -234,7 +234,7 @@ struct drxj_agc_status { ...@@ -234,7 +234,7 @@ struct drxj_agc_status {
DRXJ_MPEG_START_WIDTH_1CLKCYC, DRXJ_MPEG_START_WIDTH_1CLKCYC,
DRXJ_MPEG_START_WIDTH_8CLKCYC}; DRXJ_MPEG_START_WIDTH_8CLKCYC};
/** /*
* /enum enum drxj_mpeg_output_clock_rate * Mpeg output clock rate. * /enum enum drxj_mpeg_output_clock_rate * Mpeg output clock rate.
* *
*/ */
...@@ -247,20 +247,20 @@ struct drxj_agc_status { ...@@ -247,20 +247,20 @@ struct drxj_agc_status {
DRXJ_MPEGOUTPUT_CLOCK_RATE_25313K, DRXJ_MPEGOUTPUT_CLOCK_RATE_25313K,
DRXJ_MPEGOUTPUT_CLOCK_RATE_21696K}; DRXJ_MPEGOUTPUT_CLOCK_RATE_21696K};
/** /*
* /struct DRXJCfgMisc_t * /struct DRXJCfgMisc_t
* Change TEI bit of MPEG output * Change TEI bit of MPEG output
* reverse MPEG output bit order * reverse MPEG output bit order
* set MPEG output clock rate * set MPEG output clock rate
*/ */
struct drxj_cfg_mpeg_output_misc { struct drxj_cfg_mpeg_output_misc {
bool disable_tei_handling; /**< if true pass (not change) TEI bit */ 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 bit_reverse_mpeg_outout; /*< if true, parallel: msb on MD0; serial: lsb out first */
enum drxj_mpeg_output_clock_rate mpeg_output_clock_rate; enum drxj_mpeg_output_clock_rate mpeg_output_clock_rate;
/**< set MPEG output clock rate that overwirtes the derived one from symbol 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 */}; enum drxj_mpeg_start_width mpeg_start_width; /*< set MPEG output start width */};
/** /*
* /enum enum drxj_xtal_freq * Supported external crystal reference frequency. * /enum enum drxj_xtal_freq * Supported external crystal reference frequency.
*/ */
enum drxj_xtal_freq { enum drxj_xtal_freq {
...@@ -269,21 +269,21 @@ struct drxj_agc_status { ...@@ -269,21 +269,21 @@ struct drxj_agc_status {
DRXJ_XTAL_FREQ_20P25MHZ, DRXJ_XTAL_FREQ_20P25MHZ,
DRXJ_XTAL_FREQ_4MHZ}; DRXJ_XTAL_FREQ_4MHZ};
/** /*
* /enum enum drxj_xtal_freq * Supported external crystal reference frequency. * /enum enum drxj_xtal_freq * Supported external crystal reference frequency.
*/ */
enum drxji2c_speed { enum drxji2c_speed {
DRXJ_I2C_SPEED_400KBPS, DRXJ_I2C_SPEED_400KBPS,
DRXJ_I2C_SPEED_100KBPS}; DRXJ_I2C_SPEED_100KBPS};
/** /*
* /struct struct drxj_cfg_hw_cfg * Get hw configuration, such as crystal reference frequency, I2C speed, etc... * /struct struct drxj_cfg_hw_cfg * Get hw configuration, such as crystal reference frequency, I2C speed, etc...
*/ */
struct drxj_cfg_hw_cfg { struct drxj_cfg_hw_cfg {
enum drxj_xtal_freq xtal_freq; enum drxj_xtal_freq xtal_freq;
/**< crystal reference frequency */ /*< crystal reference frequency */
enum drxji2c_speed i2c_speed; enum drxji2c_speed i2c_speed;
/**< 100 or 400 kbps */}; /*< 100 or 400 kbps */};
/* /*
* DRXJ_CFG_ATV_MISC * DRXJ_CFG_ATV_MISC
...@@ -352,7 +352,7 @@ struct drxj_cfg_oob_misc { ...@@ -352,7 +352,7 @@ struct drxj_cfg_oob_misc {
* DRXJ_CFG_ATV_OUTPUT * DRXJ_CFG_ATV_OUTPUT
*/ */
/** /*
* /enum DRXJAttenuation_t * /enum DRXJAttenuation_t
* Attenuation setting for SIF AGC. * Attenuation setting for SIF AGC.
* *
...@@ -363,7 +363,7 @@ struct drxj_cfg_oob_misc { ...@@ -363,7 +363,7 @@ struct drxj_cfg_oob_misc {
DRXJ_SIF_ATTENUATION_6DB, DRXJ_SIF_ATTENUATION_6DB,
DRXJ_SIF_ATTENUATION_9DB}; DRXJ_SIF_ATTENUATION_9DB};
/** /*
* /struct struct drxj_cfg_atv_output * SIF attenuation setting. * /struct struct drxj_cfg_atv_output * SIF attenuation setting.
* *
*/ */
...@@ -398,7 +398,7 @@ struct drxj_cfg_atv_output { ...@@ -398,7 +398,7 @@ struct drxj_cfg_atv_output {
/*============================================================================*/ /*============================================================================*/
/*========================================*/ /*========================================*/
/** /*
* /struct struct drxj_data * DRXJ specific attributes. * /struct struct drxj_data * DRXJ specific attributes.
* *
* Global data container for DRXJ specific data. * Global data container for DRXJ specific data.
...@@ -406,93 +406,93 @@ struct drxj_cfg_atv_output { ...@@ -406,93 +406,93 @@ struct drxj_cfg_atv_output {
*/ */
struct drxj_data { struct drxj_data {
/* device capabilties (determined during drx_open()) */ /* device capabilties (determined during drx_open()) */
bool has_lna; /**< true if LNA (aka PGA) present */ bool has_lna; /*< true if LNA (aka PGA) present */
bool has_oob; /**< true if OOB supported */ bool has_oob; /*< true if OOB supported */
bool has_ntsc; /**< true if NTSC supported */ bool has_ntsc; /*< true if NTSC supported */
bool has_btsc; /**< true if BTSC supported */ bool has_btsc; /*< true if BTSC supported */
bool has_smatx; /**< true if mat_tx is available */ bool has_smatx; /*< true if mat_tx is available */
bool has_smarx; /**< true if mat_rx is available */ bool has_smarx; /*< true if mat_rx is available */
bool has_gpio; /**< true if GPIO is available */ bool has_gpio; /*< true if GPIO is available */
bool has_irqn; /**< true if IRQN is available */ bool has_irqn; /*< true if IRQN is available */
/* A1/A2/A... */ /* A1/A2/A... */
u8 mfx; /**< metal fix */ u8 mfx; /*< metal fix */
/* tuner settings */ /* 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 */ /* standard/channel settings */
enum drx_standard standard; /**< current standard information */ enum drx_standard standard; /*< current standard information */
enum drx_modulation constellation; enum drx_modulation constellation;
/**< current constellation */ /*< current constellation */
s32 frequency; /**< center signal frequency in KHz */ s32 frequency; /*< center signal frequency in KHz */
enum drx_bandwidth curr_bandwidth; enum drx_bandwidth curr_bandwidth;
/**< current channel bandwidth */ /*< current channel bandwidth */
enum drx_mirror mirror; /**< current channel mirror */ enum drx_mirror mirror; /*< current channel mirror */
/* signal quality information */ /* signal quality information */
u32 fec_bits_desired; /**< BER accounting period */ u32 fec_bits_desired; /*< BER accounting period */
u16 fec_vd_plen; /**< no of trellis symbols: VD SER measurement period */ u16 fec_vd_plen; /*< no of trellis symbols: VD SER measurement period */
u16 qam_vd_prescale; /**< Viterbi Measurement Prescale */ u16 qam_vd_prescale; /*< Viterbi Measurement Prescale */
u16 qam_vd_period; /**< Viterbi Measurement period */ u16 qam_vd_period; /*< Viterbi Measurement period */
u16 fec_rs_plen; /**< defines RS BER measurement period */ u16 fec_rs_plen; /*< defines RS BER measurement period */
u16 fec_rs_prescale; /**< ReedSolomon Measurement Prescale */ u16 fec_rs_prescale; /*< ReedSolomon Measurement Prescale */
u16 fec_rs_period; /**< ReedSolomon Measurement period */ u16 fec_rs_period; /*< ReedSolomon Measurement period */
bool reset_pkt_err_acc; /**< Set a flag to reset accumulated packet error */ 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 */ u16 pkt_err_acc_start; /*< Set a flag to reset accumulated packet error */
/* HI configuration */ /* HI configuration */
u16 hi_cfg_timing_div; /**< HI Configure() parameter 2 */ u16 hi_cfg_timing_div; /*< HI Configure() parameter 2 */
u16 hi_cfg_bridge_delay; /**< HI Configure() parameter 3 */ u16 hi_cfg_bridge_delay; /*< HI Configure() parameter 3 */
u16 hi_cfg_wake_up_key; /**< HI Configure() parameter 4 */ u16 hi_cfg_wake_up_key; /*< HI Configure() parameter 4 */
u16 hi_cfg_ctrl; /**< HI Configure() parameter 5 */ u16 hi_cfg_ctrl; /*< HI Configure() parameter 5 */
u16 hi_cfg_transmit; /**< HI Configure() parameter 6 */ u16 hi_cfg_transmit; /*< HI Configure() parameter 6 */
/* UIO configuration */ /* UIO configuration */
enum drxuio_mode uio_sma_rx_mode;/**< current mode of SmaRx 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_sma_tx_mode;/*< current mode of SmaTx pin */
enum drxuio_mode uio_gpio_mode; /**< current mode of ASEL 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_irqn_mode; /*< current mode of IRQN pin */
/* IQM fs frequecy shift and inversion */ /* IQM fs frequecy shift and inversion */
u32 iqm_fs_rate_ofs; /**< frequency shifter setting after setchannel */ u32 iqm_fs_rate_ofs; /*< frequency shifter setting after setchannel */
bool pos_image; /**< Ture: positive image */ bool pos_image; /*< Ture: positive image */
/* IQM RC frequecy shift */ /* 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 */ /* ATV configuration */
u32 atv_cfg_changed_flags; /**< flag: flags cfg changes */ 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_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_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_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 */ s16 atv_top_equ3[DRXJ_COEF_IDX_MAX]; /*< shadow of ATV_TOP_EQU3__A */
bool phase_correction_bypass;/**< flag: true=bypass */ bool phase_correction_bypass;/*< flag: true=bypass */
s16 atv_top_vid_peak; /**< shadow of ATV_TOP_VID_PEAK__A */ s16 atv_top_vid_peak; /*< shadow of ATV_TOP_VID_PEAK__A */
u16 atv_top_noise_th; /**< shadow of ATV_TOP_NOISE_TH__A */ u16 atv_top_noise_th; /*< shadow of ATV_TOP_NOISE_TH__A */
bool enable_cvbs_output; /**< flag CVBS ouput enable */ bool enable_cvbs_output; /*< flag CVBS ouput enable */
bool enable_sif_output; /**< flag SIF ouput enable */ bool enable_sif_output; /*< flag SIF ouput enable */
enum drxjsif_attenuation sif_attenuation; enum drxjsif_attenuation sif_attenuation;
/**< current SIF att setting */ /*< current SIF att setting */
/* Agc configuration for QAM and VSB */ /* Agc configuration for QAM and VSB */
struct drxj_cfg_agc qam_rf_agc_cfg; /**< qam RF 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 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_rf_agc_cfg; /*< vsb RF AGC config */
struct drxj_cfg_agc vsb_if_agc_cfg; /**< vsb IF AGC config */ struct drxj_cfg_agc vsb_if_agc_cfg; /*< vsb IF AGC config */
/* PGA gain configuration for QAM and VSB */ /* PGA gain configuration for QAM and VSB */
u16 qam_pga_cfg; /**< qam PGA config */ u16 qam_pga_cfg; /*< qam PGA config */
u16 vsb_pga_cfg; /**< vsb PGA config */ u16 vsb_pga_cfg; /*< vsb PGA config */
/* Pre SAW configuration for QAM and VSB */ /* Pre SAW configuration for QAM and VSB */
struct drxj_cfg_pre_saw qam_pre_saw_cfg; 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; struct drxj_cfg_pre_saw vsb_pre_saw_cfg;
/**< qam pre SAW config */ /*< qam pre SAW config */
/* Version information */ /* Version information */
char v_text[2][12]; /**< allocated text versions */ char v_text[2][12]; /*< allocated text versions */
struct drx_version v_version[2]; /**< allocated versions structs */ struct drx_version v_version[2]; /*< allocated versions structs */
struct drx_version_list v_list_elements[2]; struct drx_version_list v_list_elements[2];
/**< allocated version list */ /*< allocated version list */
/* smart antenna configuration */ /* smart antenna configuration */
bool smart_ant_inverted; bool smart_ant_inverted;
...@@ -502,25 +502,25 @@ struct drxj_cfg_atv_output { ...@@ -502,25 +502,25 @@ struct drxj_cfg_atv_output {
bool oob_power_on; bool oob_power_on;
/* MPEG static bitrate setting */ /* MPEG static bitrate setting */
u32 mpeg_ts_static_bitrate; /**< bitrate static MPEG output */ u32 mpeg_ts_static_bitrate; /*< bitrate static MPEG output */
bool disable_te_ihandling; /**< MPEG TS TEI handling */ bool disable_te_ihandling; /*< MPEG TS TEI handling */
bool bit_reverse_mpeg_outout;/**< MPEG output bit order */ bool bit_reverse_mpeg_outout;/*< MPEG output bit order */
enum drxj_mpeg_output_clock_rate mpeg_output_clock_rate; 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; enum drxj_mpeg_start_width mpeg_start_width;
/**< MPEG Start width */ /*< MPEG Start width */
/* Pre SAW & Agc configuration for ATV */ /* Pre SAW & Agc configuration for ATV */
struct drxj_cfg_pre_saw atv_pre_saw_cfg; struct drxj_cfg_pre_saw atv_pre_saw_cfg;
/**< atv pre SAW config */ /*< atv pre SAW config */
struct drxj_cfg_agc atv_rf_agc_cfg; /**< atv RF AGC 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 */ struct drxj_cfg_agc atv_if_agc_cfg; /*< atv IF AGC config */
u16 atv_pga_cfg; /**< atv pga config */ u16 atv_pga_cfg; /*< atv pga config */
u32 curr_symbol_rate; u32 curr_symbol_rate;
/* pin-safe mode */ /* 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_gpio;
u16 pdr_safe_restore_val_v_sync; u16 pdr_safe_restore_val_v_sync;
u16 pdr_safe_restore_val_sma_rx; u16 pdr_safe_restore_val_sma_rx;
...@@ -531,12 +531,12 @@ struct drxj_cfg_atv_output { ...@@ -531,12 +531,12 @@ struct drxj_cfg_atv_output {
enum drxj_cfg_oob_lo_power oob_lo_pow; enum drxj_cfg_oob_lo_power oob_lo_pow;
struct drx_aud_data aud_data; struct drx_aud_data aud_data;
/**< audio storage */}; /*< audio storage */};
/*------------------------------------------------------------------------- /*-------------------------------------------------------------------------
Access MACROS Access MACROS
-------------------------------------------------------------------------*/ -------------------------------------------------------------------------*/
/** /*
* \brief Compilable references to attributes * \brief Compilable references to attributes
* \param d pointer to demod instance * \param d pointer to demod instance
* *
...@@ -554,7 +554,7 @@ Access MACROS ...@@ -554,7 +554,7 @@ Access MACROS
DEFINES DEFINES
-------------------------------------------------------------------------*/ -------------------------------------------------------------------------*/
/** /*
* \def DRXJ_NTSC_CARRIER_FREQ_OFFSET * \def DRXJ_NTSC_CARRIER_FREQ_OFFSET
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain * \brief Offset from picture carrier to centre frequency in kHz, in RF domain
* *
...@@ -569,7 +569,7 @@ DEFINES ...@@ -569,7 +569,7 @@ DEFINES
*/ */
#define DRXJ_NTSC_CARRIER_FREQ_OFFSET ((s32)(1750)) #define DRXJ_NTSC_CARRIER_FREQ_OFFSET ((s32)(1750))
/** /*
* \def DRXJ_PAL_SECAM_BG_CARRIER_FREQ_OFFSET * \def DRXJ_PAL_SECAM_BG_CARRIER_FREQ_OFFSET
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain * \brief Offset from picture carrier to centre frequency in kHz, in RF domain
* *
...@@ -585,7 +585,7 @@ DEFINES ...@@ -585,7 +585,7 @@ DEFINES
*/ */
#define DRXJ_PAL_SECAM_BG_CARRIER_FREQ_OFFSET ((s32)(2375)) #define DRXJ_PAL_SECAM_BG_CARRIER_FREQ_OFFSET ((s32)(2375))
/** /*
* \def DRXJ_PAL_SECAM_DKIL_CARRIER_FREQ_OFFSET * \def DRXJ_PAL_SECAM_DKIL_CARRIER_FREQ_OFFSET
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain * \brief Offset from picture carrier to centre frequency in kHz, in RF domain
* *
...@@ -601,7 +601,7 @@ DEFINES ...@@ -601,7 +601,7 @@ DEFINES
*/ */
#define DRXJ_PAL_SECAM_DKIL_CARRIER_FREQ_OFFSET ((s32)(2775)) #define DRXJ_PAL_SECAM_DKIL_CARRIER_FREQ_OFFSET ((s32)(2775))
/** /*
* \def DRXJ_PAL_SECAM_LP_CARRIER_FREQ_OFFSET * \def DRXJ_PAL_SECAM_LP_CARRIER_FREQ_OFFSET
* \brief Offset from picture carrier to centre frequency in kHz, in RF domain * \brief Offset from picture carrier to centre frequency in kHz, in RF domain
* *
...@@ -616,7 +616,7 @@ DEFINES ...@@ -616,7 +616,7 @@ DEFINES
*/ */
#define DRXJ_PAL_SECAM_LP_CARRIER_FREQ_OFFSET ((s32)(-3255)) #define DRXJ_PAL_SECAM_LP_CARRIER_FREQ_OFFSET ((s32)(-3255))
/** /*
* \def DRXJ_FM_CARRIER_FREQ_OFFSET * \def DRXJ_FM_CARRIER_FREQ_OFFSET
* \brief Offset from sound carrier to centre frequency in kHz, in RF domain * \brief Offset from sound carrier to centre frequency in kHz, in RF domain
* *
......
...@@ -20,17 +20,18 @@ ...@@ -20,17 +20,18 @@
* @antenna_dvbt: GPIO bit for changing antenna to DVB-C. A value of 1 * @antenna_dvbt: GPIO bit for changing antenna to DVB-C. A value of 1
* means that 1=DVBC, 0 = DVBT. Zero means the opposite. * means that 1=DVBC, 0 = DVBT. Zero means the opposite.
* @mpeg_out_clk_strength: DRXK Mpeg output clock drive strength. * @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 * @microcode_name: Name of the firmware file with the microcode
* @qam_demod_parameter_count: The number of parameters used for the command * @qam_demod_parameter_count: The number of parameters used for the command
* to set the demodulator parameters. All * to set the demodulator parameters. All
* firmwares are using the 2-parameter commmand. * 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. * which uses the 4-parameter command.
* A value of 0 (default) or lower indicates that * A value of 0 (default) or lower indicates that
* the correct number of parameters will be * the correct number of parameters will be
* automatically detected. * 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. * UIO-3.
*/ */
struct drxk_config { struct drxk_config {
...@@ -52,6 +53,14 @@ struct drxk_config { ...@@ -52,6 +53,14 @@ struct drxk_config {
}; };
#if IS_REACHABLE(CONFIG_DVB_DRXK) #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, extern struct dvb_frontend *drxk_attach(const struct drxk_config *config,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
#else #else
......
...@@ -207,9 +207,9 @@ static inline u32 log10times100(u32 value) ...@@ -207,9 +207,9 @@ static inline u32 log10times100(u32 value)
return (100L * intlog10(value)) >> 24; return (100L * intlog10(value)) >> 24;
} }
/****************************************************************************/ /***************************************************************************/
/* I2C **********************************************************************/ /* I2C **********************************************************************/
/****************************************************************************/ /***************************************************************************/
static int drxk_i2c_lock(struct drxk_state *state) static int drxk_i2c_lock(struct drxk_state *state)
{ {
...@@ -3444,7 +3444,7 @@ static int dvbt_ctrl_set_sqi_speed(struct drxk_state *state, ...@@ -3444,7 +3444,7 @@ static int dvbt_ctrl_set_sqi_speed(struct drxk_state *state,
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Activate DVBT specific presets * \brief Activate DVBT specific presets
* \param demod instance of demodulator. * \param demod instance of demodulator.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -3484,7 +3484,7 @@ static int dvbt_activate_presets(struct drxk_state *state) ...@@ -3484,7 +3484,7 @@ static int dvbt_activate_presets(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Initialize channelswitch-independent settings for DVBT. * \brief Initialize channelswitch-independent settings for DVBT.
* \param demod instance of demodulator. * \param demod instance of demodulator.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -3696,7 +3696,7 @@ static int set_dvbt_standard(struct drxk_state *state, ...@@ -3696,7 +3696,7 @@ static int set_dvbt_standard(struct drxk_state *state,
} }
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief start dvbt demodulating for channel. * \brief start dvbt demodulating for channel.
* \param demod instance of demodulator. * \param demod instance of demodulator.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -3732,7 +3732,7 @@ static int dvbt_start(struct drxk_state *state) ...@@ -3732,7 +3732,7 @@ static int dvbt_start(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Set up dvbt demodulator for channel. * \brief Set up dvbt demodulator for channel.
* \param demod instance of demodulator. * \param demod instance of demodulator.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -4086,7 +4086,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz, ...@@ -4086,7 +4086,7 @@ static int set_dvbt(struct drxk_state *state, u16 intermediate_freqk_hz,
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Retrieve lock status . * \brief Retrieve lock status .
* \param demod Pointer to demodulator instance. * \param demod Pointer to demodulator instance.
* \param lockStat Pointer to lock status structure. * \param lockStat Pointer to lock status structure.
...@@ -4148,7 +4148,7 @@ static int power_up_qam(struct drxk_state *state) ...@@ -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) static int power_down_qam(struct drxk_state *state)
{ {
u16 data = 0; u16 data = 0;
...@@ -4186,7 +4186,7 @@ static int power_down_qam(struct drxk_state *state) ...@@ -4186,7 +4186,7 @@ static int power_down_qam(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Setup of the QAM Measurement intervals for signal quality * \brief Setup of the QAM Measurement intervals for signal quality
* \param demod instance of demod. * \param demod instance of demod.
* \param modulation current modulation. * \param modulation current modulation.
...@@ -4461,7 +4461,7 @@ static int set_qam16(struct drxk_state *state) ...@@ -4461,7 +4461,7 @@ static int set_qam16(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief QAM32 specific setup * \brief QAM32 specific setup
* \param demod instance of demod. * \param demod instance of demod.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -4657,7 +4657,7 @@ static int set_qam32(struct drxk_state *state) ...@@ -4657,7 +4657,7 @@ static int set_qam32(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief QAM64 specific setup * \brief QAM64 specific setup
* \param demod instance of demod. * \param demod instance of demod.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -4852,7 +4852,7 @@ static int set_qam64(struct drxk_state *state) ...@@ -4852,7 +4852,7 @@ static int set_qam64(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief QAM128 specific setup * \brief QAM128 specific setup
* \param demod: instance of demod. * \param demod: instance of demod.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -5049,7 +5049,7 @@ static int set_qam128(struct drxk_state *state) ...@@ -5049,7 +5049,7 @@ static int set_qam128(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief QAM256 specific setup * \brief QAM256 specific setup
* \param demod: instance of demod. * \param demod: instance of demod.
* \return DRXStatus_t. * \return DRXStatus_t.
...@@ -5244,7 +5244,7 @@ static int set_qam256(struct drxk_state *state) ...@@ -5244,7 +5244,7 @@ static int set_qam256(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Reset QAM block. * \brief Reset QAM block.
* \param demod: instance of demod. * \param demod: instance of demod.
* \param channel: pointer to channel data. * \param channel: pointer to channel data.
...@@ -5272,7 +5272,7 @@ static int qam_reset_qam(struct drxk_state *state) ...@@ -5272,7 +5272,7 @@ static int qam_reset_qam(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Set QAM symbolrate. * \brief Set QAM symbolrate.
* \param demod: instance of demod. * \param demod: instance of demod.
* \param channel: pointer to channel data. * \param channel: pointer to channel data.
...@@ -5341,7 +5341,7 @@ static int qam_set_symbolrate(struct drxk_state *state) ...@@ -5341,7 +5341,7 @@ static int qam_set_symbolrate(struct drxk_state *state)
/*============================================================================*/ /*============================================================================*/
/** /*
* \brief Get QAM lock status. * \brief Get QAM lock status.
* \param demod: instance of demod. * \param demod: instance of demod.
* \param channel: pointer to channel data. * \param channel: pointer to channel data.
......
...@@ -30,16 +30,17 @@ ...@@ -30,16 +30,17 @@
#define DVB_PLL_TDEE4 18 #define DVB_PLL_TDEE4 18
#define DVB_PLL_THOMSON_DTT7520X 19 #define DVB_PLL_THOMSON_DTT7520X 19
#if IS_REACHABLE(CONFIG_DVB_PLL)
/** /**
* Attach a dvb-pll to the supplied frontend structure. * Attach a dvb-pll to the supplied frontend structure.
* *
* @param fe Frontend to attach to. * @fe: Frontend to attach to.
* @param pll_addr i2c address of the PLL (if used). * @pll_addr: i2c address of the PLL (if used).
* @param i2c i2c adapter to use (set to NULL if not used). * @i2c: i2c adapter to use (set to NULL if not used).
* @param pll_desc_id dvb_pll_desc to use. * @pll_desc_id: dvb_pll_desc to use.
* @return Frontend pointer on success, NULL on failure *
* 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, extern struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe,
int pll_addr, int pll_addr,
struct i2c_adapter *i2c, struct i2c_adapter *i2c,
......
...@@ -38,6 +38,7 @@ enum helene_xtal { ...@@ -38,6 +38,7 @@ enum helene_xtal {
* @set_tuner_priv: Callback function private context * @set_tuner_priv: Callback function private context
* @set_tuner_callback: Callback function that notifies the parent driver * @set_tuner_callback: Callback function that notifies the parent driver
* which tuner is active now * which tuner is active now
* @xtal: Cristal frequency as described by &enum helene_xtal
*/ */
struct helene_config { struct helene_config {
u8 i2c_address; u8 i2c_address;
...@@ -48,9 +49,31 @@ struct helene_config { ...@@ -48,9 +49,31 @@ struct helene_config {
}; };
#if IS_REACHABLE(CONFIG_DVB_HELENE) #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, extern struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
const struct helene_config *config, const struct helene_config *config,
struct i2c_adapter *i2c); 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 #else
static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe, static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
const struct helene_config *config, const struct helene_config *config,
...@@ -59,13 +82,6 @@ static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe, ...@@ -59,13 +82,6 @@ static inline struct dvb_frontend *helene_attach(struct dvb_frontend *fe,
pr_warn("%s: driver disabled by Kconfig\n", __func__); pr_warn("%s: driver disabled by Kconfig\n", __func__);
return NULL; 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, static inline struct dvb_frontend *helene_attach_s(struct dvb_frontend *fe,
const struct helene_config *config, const struct helene_config *config,
struct i2c_adapter *i2c) struct i2c_adapter *i2c)
......
...@@ -41,6 +41,15 @@ struct horus3a_config { ...@@ -41,6 +41,15 @@ struct horus3a_config {
}; };
#if IS_REACHABLE(CONFIG_DVB_HORUS3A) #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, extern struct dvb_frontend *horus3a_attach(struct dvb_frontend *fe,
const struct horus3a_config *config, const struct horus3a_config *config,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
......
/** /*
* Driver for Sharp IX2505V (marked B0017) DVB-S silicon tuner * Driver for Sharp IX2505V (marked B0017) DVB-S silicon tuner
* *
* Copyright (C) 2010 Malcolm Priestley * Copyright (C) 2010 Malcolm Priestley
...@@ -36,7 +36,7 @@ struct ix2505v_state { ...@@ -36,7 +36,7 @@ struct ix2505v_state {
u32 frequency; u32 frequency;
}; };
/** /*
* Data read format of the Sharp IX2505V B0017 * Data read format of the Sharp IX2505V B0017
* *
* byte1: 1 | 1 | 0 | 0 | 0 | MA1 | MA0 | 1 * byte1: 1 | 1 | 0 | 0 | 0 | MA1 | MA0 | 1
...@@ -99,7 +99,7 @@ static void ix2505v_release(struct dvb_frontend *fe) ...@@ -99,7 +99,7 @@ static void ix2505v_release(struct dvb_frontend *fe)
} }
/** /*
* Data write format of the Sharp IX2505V B0017 * Data write format of the Sharp IX2505V B0017
* *
* byte1: 1 | 1 | 0 | 0 | 0 | 0(MA1)| 0(MA0)| 0 * byte1: 1 | 1 | 0 | 0 | 0 | 0(MA1)| 0(MA0)| 0
......
...@@ -20,31 +20,33 @@ ...@@ -20,31 +20,33 @@
#include "dvb_frontend.h" #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. * @tuner_address: tuner address
* @param config ix2505v_config structure * @tuner_gain: Baseband AMP gain control 0/1=0dB(default) 2=-2bB 3=-4dB
* @return FE pointer on success, NULL on failure. * @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 { struct ix2505v_config {
u8 tuner_address; u8 tuner_address;
/*Baseband AMP gain control 0/1=0dB(default) 2=-2bB 3=-4dB */
u8 tuner_gain; u8 tuner_gain;
/*Charge pump output +/- 0=120 1=260 2=555 3=1200(default) */
u8 tuner_chargepump; u8 tuner_chargepump;
/* delay after tune */
int min_delay_ms; int min_delay_ms;
/* disables reads*/
u8 tuner_write_only; u8 tuner_write_only;
}; };
#if IS_REACHABLE(CONFIG_DVB_IX2505V) #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, extern struct dvb_frontend *ix2505v_attach(struct dvb_frontend *fe,
const struct ix2505v_config *config, struct i2c_adapter *i2c); const struct ix2505v_config *config, struct i2c_adapter *i2c);
#else #else
......
...@@ -517,7 +517,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config, ...@@ -517,7 +517,7 @@ struct dvb_frontend* l64781_attach(const struct l64781_config* config,
state->i2c = i2c; state->i2c = i2c;
state->first = 1; state->first = 1;
/** /*
* the L64781 won't show up before we send the reset_and_configure() * the L64781 won't show up before we send the reset_and_configure()
* broadcast. If nothing responds there is no L64781 on the bus... * broadcast. If nothing responds there is no L64781 on the bus...
*/ */
......
...@@ -24,6 +24,34 @@ ...@@ -24,6 +24,34 @@
* 0x68, * 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 * struct m88ds3103_platform_data - Platform data for the m88ds3103 driver
* @clk: Clock frequency. * @clk: Clock frequency.
...@@ -44,24 +72,16 @@ ...@@ -44,24 +72,16 @@
* @get_dvb_frontend: Get DVB frontend. * @get_dvb_frontend: Get DVB frontend.
* @get_i2c_adapter: Get I2C adapter. * @get_i2c_adapter: Get I2C adapter.
*/ */
struct m88ds3103_platform_data { struct m88ds3103_platform_data {
u32 clk; u32 clk;
u16 i2c_wr_max; u16 i2c_wr_max;
#define M88DS3103_TS_SERIAL 0 /* TS output pin D0, normal */ enum m88ds3103_ts_mode ts_mode;
#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;
u32 ts_clk; u32 ts_clk;
enum m88ds3103_clock_out clk_out;
u8 ts_clk_pol:1; u8 ts_clk_pol:1;
u8 spec_inv:1; u8 spec_inv:1;
u8 agc; u8 agc;
u8 agc_inv:1; 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 envelope_mode:1;
u8 lnb_hv_pol:1; u8 lnb_hv_pol:1;
u8 lnb_en_pol:1; u8 lnb_en_pol:1;
...@@ -73,105 +93,60 @@ struct m88ds3103_platform_data { ...@@ -73,105 +93,60 @@ struct m88ds3103_platform_data {
u8 attach_in_use:1; 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 { struct m88ds3103_config {
/*
* I2C address
* Default: none, must set
* 0x68, ...
*/
u8 i2c_addr; u8 i2c_addr;
/*
* clock
* Default: none, must set
* 27000000
*/
u32 clock; u32 clock;
/*
* max bytes I2C provider is asked to write at once
* Default: none, must set
* 33, 65, ...
*/
u16 i2c_wr_max; 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; u8 ts_mode;
/*
* TS clk in KHz
* Default: 0.
*/
u32 ts_clk; u32 ts_clk;
/*
* TS clk polarity.
* Default: 0. 1-active at falling edge; 0-active at rising edge.
*/
u8 ts_clk_pol:1; u8 ts_clk_pol:1;
/*
* spectrum inversion
* Default: 0
*/
u8 spec_inv:1; u8 spec_inv:1;
/*
* AGC polarity
* Default: 0
*/
u8 agc_inv:1; 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; u8 clock_out;
/*
* DiSEqC envelope mode
* Default: 0
*/
u8 envelope_mode:1; u8 envelope_mode:1;
/*
* AGC configuration
* Default: none, must set
*/
u8 agc; 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; 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; u8 lnb_en_pol:1;
}; };
#if defined(CONFIG_DVB_M88DS3103) || \ #if defined(CONFIG_DVB_M88DS3103) || \
(defined(CONFIG_DVB_M88DS3103_MODULE) && defined(MODULE)) (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( extern struct dvb_frontend *m88ds3103_attach(
const struct m88ds3103_config *config, const struct m88ds3103_config *config,
struct i2c_adapter *i2c, struct i2c_adapter *i2c,
......
...@@ -26,7 +26,6 @@ ...@@ -26,7 +26,6 @@
* @demod_address: the demodulator's i2c address * @demod_address: the demodulator's i2c address
* @is_serial: if true, TS is serial. Otherwise, TS is parallel * @is_serial: if true, TS is serial. Otherwise, TS is parallel
*/ */
struct mb86a20s_config { struct mb86a20s_config {
u32 fclk; u32 fclk;
u8 demod_address; u8 demod_address;
...@@ -34,9 +33,17 @@ struct mb86a20s_config { ...@@ -34,9 +33,17 @@ struct mb86a20s_config {
}; };
#if IS_REACHABLE(CONFIG_DVB_MB86A20S) #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, extern struct dvb_frontend *mb86a20s_attach(const struct mb86a20s_config *config,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
extern struct i2c_adapter *mb86a20s_get_tuner_i2c_adapter(struct dvb_frontend *);
#else #else
static inline struct dvb_frontend *mb86a20s_attach( static inline struct dvb_frontend *mb86a20s_attach(
const struct mb86a20s_config *config, struct i2c_adapter *i2c) const struct mb86a20s_config *config, struct i2c_adapter *i2c)
...@@ -44,12 +51,6 @@ static inline struct dvb_frontend *mb86a20s_attach( ...@@ -44,12 +51,6 @@ static inline struct dvb_frontend *mb86a20s_attach(
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
return NULL; 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
#endif /* MB86A20S */ #endif /* MB86A20S */
...@@ -19,21 +19,21 @@ ...@@ -19,21 +19,21 @@
#include <linux/dvb/frontend.h> #include <linux/dvb/frontend.h>
/* 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 * struct mn88472_config - Platform data for the mn88472 driver
* @xtal: Clock frequency. * @xtal: Clock frequency.
* @ts_mode: TS mode. * @ts_mode: TS mode.
* @ts_clock: TS clock config. * @ts_clock: TS clock config.
* @i2c_wr_max: Max number of bytes driver writes to I2C at once. * @i2c_wr_max: Max number of bytes driver writes to I2C at once.
* @get_dvb_frontend: Get DVB frontend. * @fe: pointer to a frontend pointer
* @get_dvb_frontend: Get DVB frontend callback.
*/ */
/* 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 { struct mn88472_config {
unsigned int xtal; unsigned int xtal;
......
...@@ -32,7 +32,6 @@ ...@@ -32,7 +32,6 @@
* @pid_filter: Set PID to PID filter. * @pid_filter: Set PID to PID filter.
* @pid_filter_ctrl: Control PID filter. * @pid_filter_ctrl: Control PID filter.
*/ */
struct rtl2830_platform_data { struct rtl2830_platform_data {
u32 clk; u32 clk;
bool spec_inv; bool spec_inv;
......
...@@ -35,7 +35,6 @@ ...@@ -35,7 +35,6 @@
* @pid_filter: Set PID to PID filter. * @pid_filter: Set PID to PID filter.
* @pid_filter_ctrl: Control PID filter. * @pid_filter_ctrl: Control PID filter.
*/ */
struct rtl2832_platform_data { struct rtl2832_platform_data {
u32 clk; u32 clk;
/* /*
......
...@@ -33,15 +33,11 @@ ...@@ -33,15 +33,11 @@
* struct rtl2832_sdr_platform_data - Platform data for the rtl2832_sdr driver * struct rtl2832_sdr_platform_data - Platform data for the rtl2832_sdr driver
* @clk: Clock frequency (4000000, 16000000, 25000000, 28800000). * @clk: Clock frequency (4000000, 16000000, 25000000, 28800000).
* @tuner: Used tuner model. * @tuner: Used tuner model.
* @i2c_client: rtl2832 demod driver I2C client. * @regmap: pointer to &struct regmap.
* @bulk_read: rtl2832 driver private I/O interface.
* @bulk_write: rtl2832 driver private I/O interface.
* @update_bits: rtl2832 driver private I/O interface.
* @dvb_frontend: rtl2832 DVB frontend. * @dvb_frontend: rtl2832 DVB frontend.
* @v4l2_subdev: Tuner v4l2 controls. * @v4l2_subdev: Tuner v4l2 controls.
* @dvb_usb_device: DVB USB interface for USB streaming. * @dvb_usb_device: DVB USB interface for USB streaming.
*/ */
struct rtl2832_sdr_platform_data { struct rtl2832_sdr_platform_data {
u32 clk; u32 clk;
/* /*
......
...@@ -57,7 +57,7 @@ static int sp887x_writereg (struct sp887x_state* state, u16 reg, u16 data) ...@@ -57,7 +57,7 @@ static int sp887x_writereg (struct sp887x_state* state, u16 reg, u16 data)
int ret; int ret;
if ((ret = i2c_transfer(state->i2c, &msg, 1)) != 1) { if ((ret = i2c_transfer(state->i2c, &msg, 1)) != 1) {
/** /*
* in case of soft reset we ignore ACK errors... * in case of soft reset we ignore ACK errors...
*/ */
if (!(reg == 0xf1a && data == 0x000 && if (!(reg == 0xf1a && data == 0x000 &&
...@@ -130,7 +130,7 @@ static void sp887x_setup_agc (struct sp887x_state* state) ...@@ -130,7 +130,7 @@ static void sp887x_setup_agc (struct sp887x_state* state)
#define BLOCKSIZE 30 #define BLOCKSIZE 30
#define FW_SIZE 0x4000 #define FW_SIZE 0x4000
/** /*
* load firmware and setup MPEG interface... * load firmware and setup MPEG interface...
*/ */
static int sp887x_initial_setup (struct dvb_frontend* fe, const struct firmware *fw) 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) ...@@ -279,7 +279,7 @@ static int configure_reg0xc05(struct dtv_frontend_properties *p, u16 *reg0xc05)
return 0; return 0;
} }
/** /*
* estimates division of two 24bit numbers, * estimates division of two 24bit numbers,
* derived from the ves1820/stv0299 driver code * derived from the ves1820/stv0299 driver code
*/ */
......
...@@ -26,15 +26,16 @@ ...@@ -26,15 +26,16 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include "dvb_frontend.h" #include "dvb_frontend.h"
#if IS_REACHABLE(CONFIG_DVB_STB6000)
/** /**
* Attach a stb6000 tuner to the supplied frontend structure. * Attach a stb6000 tuner to the supplied frontend structure.
* *
* @param fe Frontend to attach to. * @fe: Frontend to attach to.
* @param addr i2c address of the tuner. * @addr: i2c address of the tuner.
* @param i2c i2c adapter to use. * @i2c: i2c adapter to use.
* @return FE pointer on success, NULL on failure. *
* 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, extern struct dvb_frontend *stb6000_attach(struct dvb_frontend *fe, int addr,
struct i2c_adapter *i2c); struct i2c_adapter *i2c);
#else #else
......
...@@ -368,7 +368,7 @@ static int stv0299_set_voltage(struct dvb_frontend *fe, ...@@ -368,7 +368,7 @@ static int stv0299_set_voltage(struct dvb_frontend *fe,
reg0x08 = stv0299_readreg (state, 0x08); reg0x08 = stv0299_readreg (state, 0x08);
reg0x0c = stv0299_readreg (state, 0x0c); reg0x0c = stv0299_readreg (state, 0x0c);
/** /*
* H/V switching over OP0, OP1 and OP2 are LNB power enable bits * H/V switching over OP0, OP1 and OP2 are LNB power enable bits
*/ */
reg0x0c &= 0x0f; reg0x0c &= 0x0f;
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
* @tuner_i2c_addr: CX24118A tuner I2C address (0x14, 0x54, ...). * @tuner_i2c_addr: CX24118A tuner I2C address (0x14, 0x54, ...).
* @get_dvb_frontend: Get DVB frontend. * @get_dvb_frontend: Get DVB frontend.
*/ */
struct tda10071_platform_data { struct tda10071_platform_data {
u32 clk; u32 clk;
u16 i2c_wr_max; u16 i2c_wr_max;
......
...@@ -29,11 +29,12 @@ ...@@ -29,11 +29,12 @@
/** /**
* Attach a tda826x tuner to the supplied frontend structure. * Attach a tda826x tuner to the supplied frontend structure.
* *
* @param fe Frontend to attach to. * @fe: Frontend to attach to.
* @param addr i2c address of the tuner. * @addr: i2c address of the tuner.
* @param i2c i2c adapter to use. * @i2c: i2c adapter to use.
* @param has_loopthrough Set to 1 if the card has a loopthrough RF connector. * @has_loopthrough: Set to 1 if the card has a loopthrough RF connector.
* @return FE pointer on success, NULL on failure. *
* return: FE pointer on success, NULL on failure.
*/ */
#if IS_REACHABLE(CONFIG_DVB_TDA826X) #if IS_REACHABLE(CONFIG_DVB_TDA826X)
extern struct dvb_frontend* tda826x_attach(struct dvb_frontend *fe, int addr, extern struct dvb_frontend* tda826x_attach(struct dvb_frontend *fe, int addr,
......
/** /*
* Driver for Infineon tua6100 pll. * Driver for Infineon tua6100 pll.
* *
* (c) 2006 Andrew de Quincey * (c) 2006 Andrew de Quincey
......
/** /*
* Driver for Infineon tua6100 PLL. * Driver for Infineon tua6100 PLL.
* *
* (c) 2006 Andrew de Quincey * (c) 2006 Andrew de Quincey
......
...@@ -27,7 +27,6 @@ ...@@ -27,7 +27,6 @@
* @reg_read: Register read callback. * @reg_read: Register read callback.
* @reg_write: Register write callback. * @reg_write: Register write callback.
*/ */
struct zd1301_demod_platform_data { struct zd1301_demod_platform_data {
void *reg_priv; void *reg_priv;
int (*reg_read)(void *, u16, u8 *); int (*reg_read)(void *, u16, u8 *);
...@@ -41,8 +40,7 @@ struct zd1301_demod_platform_data { ...@@ -41,8 +40,7 @@ struct zd1301_demod_platform_data {
* *
* Return: Pointer to DVB frontend which given platform device owns. * Return: Pointer to DVB frontend which given platform device owns.
*/ */
struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *pdev);
struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *);
/** /**
* zd1301_demod_get_i2c_adapter() - Get pointer to I2C adapter * 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 *); ...@@ -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. * Return: Pointer to I2C adapter which given platform device owns.
*/ */
struct i2c_adapter *zd1301_demod_get_i2c_adapter(struct platform_device *pdev);
struct i2c_adapter *zd1301_demod_get_i2c_adapter(struct platform_device *);
#else #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) static inline struct dvb_frontend *zd1301_demod_get_dvb_frontend(struct platform_device *dev)
{ {
printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__); printk(KERN_WARNING "%s: driver disabled by Kconfig\n", __func__);
......
/** /*
* Driver for Zarlink zl10036 DVB-S silicon tuner * Driver for Zarlink zl10036 DVB-S silicon tuner
* *
* Copyright (C) 2006 Tino Reichardt * Copyright (C) 2006 Tino Reichardt
...@@ -157,7 +157,7 @@ static int zl10036_sleep(struct dvb_frontend *fe) ...@@ -157,7 +157,7 @@ static int zl10036_sleep(struct dvb_frontend *fe)
return ret; return ret;
} }
/** /*
* register map of the ZL10036/ZL10038 * register map of the ZL10036/ZL10038
* *
* reg[default] content * reg[default] content
...@@ -219,7 +219,7 @@ static int zl10036_set_bandwidth(struct zl10036_state *state, u32 fbw) ...@@ -219,7 +219,7 @@ static int zl10036_set_bandwidth(struct zl10036_state *state, u32 fbw)
if (fbw <= 28820) { if (fbw <= 28820) {
br = _BR_MAXIMUM; br = _BR_MAXIMUM;
} else { } else {
/** /*
* f(bw)=34,6MHz f(xtal)=10.111MHz * f(bw)=34,6MHz f(xtal)=10.111MHz
* br = (10111/34600) * 63 * 1/K = 14; * br = (10111/34600) * 63 * 1/K = 14;
*/ */
...@@ -315,7 +315,7 @@ static int zl10036_set_params(struct dvb_frontend *fe) ...@@ -315,7 +315,7 @@ static int zl10036_set_params(struct dvb_frontend *fe)
|| (frequency > fe->ops.info.frequency_max)) || (frequency > fe->ops.info.frequency_max))
return -EINVAL; return -EINVAL;
/** /*
* alpha = 1.35 for dvb-s * alpha = 1.35 for dvb-s
* fBW = (alpha*symbolrate)/(2*0.8) * fBW = (alpha*symbolrate)/(2*0.8)
* 1.35 / (2*0.8) = 27 / 32 * 1.35 / (2*0.8) = 27 / 32
......
...@@ -20,20 +20,20 @@ ...@@ -20,20 +20,20 @@
#include <linux/i2c.h> #include <linux/i2c.h>
#include "dvb_frontend.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 { struct zl10036_config {
u8 tuner_address; u8 tuner_address;
int rf_loop_enable; int rf_loop_enable;
}; };
#if IS_REACHABLE(CONFIG_DVB_ZL10036) #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, extern struct dvb_frontend *zl10036_attach(struct dvb_frontend *fe,
const struct zl10036_config *config, struct i2c_adapter *i2c); const struct zl10036_config *config, struct i2c_adapter *i2c);
#else #else
......
...@@ -676,6 +676,7 @@ config VIDEO_OV13858 ...@@ -676,6 +676,7 @@ config VIDEO_OV13858
tristate "OmniVision OV13858 sensor support" tristate "OmniVision OV13858 sensor support"
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
depends on MEDIA_CAMERA_SUPPORT depends on MEDIA_CAMERA_SUPPORT
select V4L2_FWNODE
---help--- ---help---
This is a Video4Linux2 sensor-level driver for the OmniVision This is a Video4Linux2 sensor-level driver for the OmniVision
OV13858 camera. OV13858 camera.
......
config VIDEO_ET8EK8 config VIDEO_ET8EK8
tristate "ET8EK8 camera sensor support" tristate "ET8EK8 camera sensor support"
depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API depends on I2C && VIDEO_V4L2 && VIDEO_V4L2_SUBDEV_API
select V4L2_FWNODE
---help--- ---help---
This is a driver for the Toshiba ET8EK8 5 MP camera sensor. This is a driver for the Toshiba ET8EK8 5 MP camera sensor.
It is used for example in Nokia N900 (RX-51). It is used for example in Nokia N900 (RX-51).
...@@ -1770,8 +1770,7 @@ static int imx274_probe(struct i2c_client *client, ...@@ -1770,8 +1770,7 @@ static int imx274_probe(struct i2c_client *client,
return 0; return 0;
err_ctrls: err_ctrls:
v4l2_async_unregister_subdev(sd); v4l2_ctrl_handler_free(&imx274->ctrls.handler);
v4l2_ctrl_handler_free(sd->ctrl_handler);
err_me: err_me:
media_entity_cleanup(&sd->entity); media_entity_cleanup(&sd->entity);
err_regmap: err_regmap:
...@@ -1788,7 +1787,7 @@ static int imx274_remove(struct i2c_client *client) ...@@ -1788,7 +1787,7 @@ static int imx274_remove(struct i2c_client *client)
imx274_write_table(imx274, mode_table[IMX274_MODE_STOP_STREAM]); imx274_write_table(imx274, mode_table[IMX274_MODE_STOP_STREAM]);
v4l2_async_unregister_subdev(sd); v4l2_async_unregister_subdev(sd);
v4l2_ctrl_handler_free(sd->ctrl_handler); v4l2_ctrl_handler_free(&imx274->ctrls.handler);
media_entity_cleanup(&sd->entity); media_entity_cleanup(&sd->entity);
mutex_destroy(&imx274->lock); mutex_destroy(&imx274->lock);
return 0; return 0;
......
...@@ -50,6 +50,7 @@ enum led_enable { ...@@ -50,6 +50,7 @@ enum led_enable {
/** /**
* struct lm3560_flash * struct lm3560_flash
* *
* @dev: pointer to &struct device
* @pdata: platform data * @pdata: platform data
* @regmap: reg. map for i2c * @regmap: reg. map for i2c
* @lock: muxtex for serial access. * @lock: muxtex for serial access.
......
...@@ -33,6 +33,10 @@ ...@@ -33,6 +33,10 @@
/** /**
* m5mols_read_rational - I2C read of a rational number * 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 * Read numerator and denominator from registers @addr_num and @addr_den
* respectively and return the division result in @val. * respectively and return the division result in @val.
...@@ -53,6 +57,7 @@ static int m5mols_read_rational(struct v4l2_subdev *sd, u32 addr_num, ...@@ -53,6 +57,7 @@ static int m5mols_read_rational(struct v4l2_subdev *sd, u32 addr_num,
/** /**
* m5mols_capture_info - Gather captured image information * m5mols_capture_info - Gather captured image information
* @info: M-5MOLS driver data structure
* *
* For now it gathers only EXIF information and file size. * For now it gathers only EXIF information and file size.
*/ */
......
...@@ -126,6 +126,7 @@ static struct m5mols_scenemode m5mols_default_scenemode[] = { ...@@ -126,6 +126,7 @@ static struct m5mols_scenemode m5mols_default_scenemode[] = {
/** /**
* m5mols_do_scenemode() - Change current scenemode * m5mols_do_scenemode() - Change current scenemode
* @info: M-5MOLS driver data structure
* @mode: Desired mode of the scenemode * @mode: Desired mode of the scenemode
* *
* WARNING: The execution order is important. Do not change the order. * WARNING: The execution order is important. Do not change the order.
......
...@@ -114,7 +114,8 @@ static const struct m5mols_resolution m5mols_reg_res[] = { ...@@ -114,7 +114,8 @@ static const struct m5mols_resolution m5mols_reg_res[] = {
/** /**
* m5mols_swap_byte - an byte array to integer conversion function * 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 * Convert I2C data byte array with performing any required byte
* reordering to assure proper values for each data type, regardless * reordering to assure proper values for each data type, regardless
...@@ -132,8 +133,9 @@ static u32 m5mols_swap_byte(u8 *data, u8 length) ...@@ -132,8 +133,9 @@ static u32 m5mols_swap_byte(u8 *data, u8 length)
/** /**
* m5mols_read - I2C read function * 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 * @size: desired size of I2C packet
* @reg: combination of size, category and command for the I2C packet
* @val: read value * @val: read value
* *
* Returns 0 on success, or else negative errno. * Returns 0 on success, or else negative errno.
...@@ -232,6 +234,7 @@ int m5mols_read_u32(struct v4l2_subdev *sd, u32 reg, u32 *val) ...@@ -232,6 +234,7 @@ int m5mols_read_u32(struct v4l2_subdev *sd, u32 reg, u32 *val)
/** /**
* m5mols_write - I2C command write function * 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 * @reg: combination of size, category and command for the I2C packet
* @val: value to write * @val: value to write
* *
...@@ -284,6 +287,7 @@ int m5mols_write(struct v4l2_subdev *sd, u32 reg, u32 val) ...@@ -284,6 +287,7 @@ int m5mols_write(struct v4l2_subdev *sd, u32 reg, u32 val)
/** /**
* m5mols_busy_wait - Busy waiting with I2C register polling * 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 * @reg: the I2C_REG() address of an 8-bit status register to check
* @value: expected status register value * @value: expected status register value
* @mask: bit mask for the read 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, ...@@ -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 * 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 * Before writing desired interrupt value the INT_FACTOR register should
* be read to clear pending interrupts. * be read to clear pending interrupts.
...@@ -349,6 +355,8 @@ int m5mols_wait_interrupt(struct v4l2_subdev *sd, u8 irq_mask, u32 timeout) ...@@ -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 * 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 * It always accompanies a little delay changing the M-5MOLS mode, so it is
* needed checking current busy status to guarantee right mode. * needed checking current busy status to guarantee right mode.
...@@ -364,6 +372,7 @@ static int m5mols_reg_mode(struct v4l2_subdev *sd, u8 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 * m5mols_set_mode - set the M-5MOLS controller mode
* @info: M-5MOLS driver data structure
* @mode: the required operation mode * @mode: the required operation mode
* *
* The commands of M-5MOLS are grouped into specific modes. Each functionality * 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) ...@@ -421,6 +430,7 @@ int m5mols_set_mode(struct m5mols_info *info, u8 mode)
/** /**
* m5mols_get_version - retrieve full revisions information of M-5MOLS * 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, * The version information includes revisions of hardware and firmware,
* AutoFocus alghorithm version and the version string. * AutoFocus alghorithm version and the version string.
...@@ -489,6 +499,7 @@ static enum m5mols_restype __find_restype(u32 code) ...@@ -489,6 +499,7 @@ static enum m5mols_restype __find_restype(u32 code)
/** /**
* __find_resolution - Lookup preset and type of M-5MOLS's resolution * __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 * @mf: pixel format to find/negotiate the resolution preset for
* @type: M-5MOLS resolution type * @type: M-5MOLS resolution type
* @resolution: M-5MOLS resolution preset register value * @resolution: M-5MOLS resolution preset register value
...@@ -662,6 +673,7 @@ static const struct v4l2_subdev_pad_ops m5mols_pad_ops = { ...@@ -662,6 +673,7 @@ static const struct v4l2_subdev_pad_ops m5mols_pad_ops = {
/** /**
* m5mols_restore_controls - Apply current control values to the registers * 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 * m5mols_do_scenemode() handles all parameters for which there is yet no
* individual control. It should be replaced at some point by setting each * individual control. It should be replaced at some point by setting each
...@@ -686,6 +698,7 @@ int m5mols_restore_controls(struct m5mols_info *info) ...@@ -686,6 +698,7 @@ int m5mols_restore_controls(struct m5mols_info *info)
/** /**
* m5mols_start_monitor - Start the monitor mode * m5mols_start_monitor - Start the monitor mode
* @info: M-5MOLS driver data structure
* *
* Before applying the controls setup the resolution and frame rate * Before applying the controls setup the resolution and frame rate
* in PARAMETER mode, and then switch over to MONITOR mode. * in PARAMETER mode, and then switch over to MONITOR mode.
...@@ -789,6 +802,7 @@ int __attribute__ ((weak)) m5mols_update_fw(struct v4l2_subdev *sd, ...@@ -789,6 +802,7 @@ int __attribute__ ((weak)) m5mols_update_fw(struct v4l2_subdev *sd,
/** /**
* m5mols_fw_start - M-5MOLS internal ARM controller initialization * 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. * Execute the M-5MOLS internal ARM controller initialization sequence.
* This function should be called after the supply voltage has been * 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) ...@@ -844,6 +858,8 @@ static int m5mols_auto_focus_stop(struct m5mols_info *info)
/** /**
* m5mols_s_power - Main sensor power control function * 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 * To prevent breaking the lens when the sensor is powered off the Soft-Landing
* algorithm is called where available. The Soft-Landing algorithm availability * algorithm is called where available. The Soft-Landing algorithm availability
......
...@@ -428,8 +428,8 @@ static int ov5647_sensor_set_register(struct v4l2_subdev *sd, ...@@ -428,8 +428,8 @@ static int ov5647_sensor_set_register(struct v4l2_subdev *sd,
} }
#endif #endif
/** /*
* @short Subdev core operations registration * Subdev core operations registration
*/ */
static const struct v4l2_subdev_core_ops ov5647_subdev_core_ops = { static const struct v4l2_subdev_core_ops ov5647_subdev_core_ops = {
.s_power = ov5647_sensor_power, .s_power = ov5647_sensor_power,
......
...@@ -53,6 +53,9 @@ enum { ...@@ -53,6 +53,9 @@ enum {
* @gpio_reset: GPIO connected to the sensor's reset pin * @gpio_reset: GPIO connected to the sensor's reset pin
* @lock: mutex protecting the structure's members below * @lock: mutex protecting the structure's members below
* @format: media bus format at the sensor's source pad * @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 s5k6a3 {
struct device *dev; struct device *dev;
......
...@@ -421,6 +421,7 @@ static int s5k6aa_set_ahb_address(struct i2c_client *client) ...@@ -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_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. * Configure the internal ISP PLL for the required output frequency.
* Locking: called with s5k6aa.lock mutex held. * Locking: called with s5k6aa.lock mutex held.
...@@ -669,6 +670,7 @@ static int s5k6aa_set_input_params(struct s5k6aa *s5k6aa) ...@@ -669,6 +670,7 @@ static int s5k6aa_set_input_params(struct s5k6aa *s5k6aa)
/** /**
* s5k6aa_configure_video_bus - configure the video output interface * 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 * @bus_type: video bus type: parallel or MIPI-CSI
* @nlanes: number of MIPI lanes to be used (MIPI-CSI only) * @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, ...@@ -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_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 * Configure output resolution and color fromat, pixel clock
* frequency range, device frame rate type and frame period range. * frequency range, device frame rate type and frame period range.
...@@ -777,6 +781,7 @@ static int s5k6aa_set_prev_config(struct s5k6aa *s5k6aa, ...@@ -777,6 +781,7 @@ static int s5k6aa_set_prev_config(struct s5k6aa *s5k6aa,
/** /**
* s5k6aa_initialize_isp - basic ISP MCU initialization * s5k6aa_initialize_isp - basic ISP MCU initialization
* @sd: pointer to V4L2 sub-device descriptor
* *
* Configure AHB addresses for registers read/write; configure PLLs for * Configure AHB addresses for registers read/write; configure PLLs for
* required output pixel clock. The ISP power supply needs to be already * 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); ...@@ -86,6 +86,7 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
/** /**
* struct tvp514x_decoder - TVP5146/47 decoder object * struct tvp514x_decoder - TVP5146/47 decoder object
* @sd: Subdevice Slave handle * @sd: Subdevice Slave handle
* @hdl: embedded &struct v4l2_ctrl_handler
* @tvp514x_regs: copy of hw's regs with preset values. * @tvp514x_regs: copy of hw's regs with preset values.
* @pdata: Board specific * @pdata: Board specific
* @ver: Chip version * @ver: Chip version
...@@ -98,6 +99,9 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable); ...@@ -98,6 +99,9 @@ static int tvp514x_s_stream(struct v4l2_subdev *sd, int enable);
* @std_list: Standards list * @std_list: Standards list
* @input: Input routing at chip level * @input: Input routing at chip level
* @output: Output 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 tvp514x_decoder {
struct v4l2_subdev sd; struct v4l2_subdev sd;
...@@ -211,7 +215,7 @@ static struct tvp514x_reg tvp514x_reg_list_default[] = { ...@@ -211,7 +215,7 @@ static struct tvp514x_reg tvp514x_reg_list_default[] = {
{TOK_TERM, 0, 0}, {TOK_TERM, 0, 0},
}; };
/** /*
* List of image formats supported by TVP5146/47 decoder * List of image formats supported by TVP5146/47 decoder
* Currently we are using 8 bit mode only, but can be * Currently we are using 8 bit mode only, but can be
* extended to 10/20 bit mode. * extended to 10/20 bit mode.
...@@ -226,7 +230,7 @@ static const struct v4l2_fmtdesc tvp514x_fmt_list[] = { ...@@ -226,7 +230,7 @@ static const struct v4l2_fmtdesc tvp514x_fmt_list[] = {
}, },
}; };
/** /*
* Supported standards - * Supported standards -
* *
* Currently supports two standards only, need to add support for rest of the * 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, ...@@ -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 * tvp514x_set_pad_format() - V4L2 decoder interface handler for set pad format
* @sd: pointer to standard V4L2 sub-device structure * @sd: pointer to standard V4L2 sub-device structure
* @cfg: pad configuration * @cfg: pad configuration
* @format: pointer to v4l2_subdev_format structure * @fmt: pointer to v4l2_subdev_format structure
* *
* Set pad format for the output pad * Set pad format for the output pad
*/ */
...@@ -1199,7 +1203,7 @@ static const struct tvp514x_reg tvp514xm_init_reg_seq[] = { ...@@ -1199,7 +1203,7 @@ static const struct tvp514x_reg tvp514xm_init_reg_seq[] = {
{TOK_TERM, 0, 0}, {TOK_TERM, 0, 0},
}; };
/** /*
* I2C Device Table - * I2C Device Table -
* *
* name - Name of the actual device/chip. * name - Name of the actual device/chip.
......
...@@ -175,7 +175,7 @@ int solo_osd_print(struct solo_enc_dev *solo_enc) ...@@ -175,7 +175,7 @@ int solo_osd_print(struct solo_enc_dev *solo_enc)
return 0; return 0;
} }
/** /*
* Set channel Quality Profile (0-3). * Set channel Quality Profile (0-3).
*/ */
void solo_s_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch, void solo_s_jpeg_qp(struct solo_dev *solo_dev, unsigned int ch,
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
/** /*
* OV519 driver * OV519 driver
* *
* Copyright (C) 2008-2011 Jean-François Moine <moinejf@free.fr> * Copyright (C) 2008-2011 Jean-François Moine <moinejf@free.fr>
......
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册