.. | .. |
---|
| 1 | +// SPDX-License-Identifier: GPL-2.0-only |
---|
1 | 2 | /* |
---|
2 | 3 | * drxk_hard: DRX-K DVB-C/T demodulator driver |
---|
3 | 4 | * |
---|
4 | 5 | * Copyright (C) 2010-2011 Digital Devices GmbH |
---|
5 | | - * |
---|
6 | | - * This program is free software; you can redistribute it and/or |
---|
7 | | - * modify it under the terms of the GNU General Public License |
---|
8 | | - * version 2 only, as published by the Free Software Foundation. |
---|
9 | | - * |
---|
10 | | - * |
---|
11 | | - * This program is distributed in the hope that it will be useful, |
---|
12 | | - * but WITHOUT ANY WARRANTY; without even the implied warranty of |
---|
13 | | - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
---|
14 | | - * GNU General Public License for more details. |
---|
15 | | - * |
---|
16 | | - * To obtain the license, point your browser to |
---|
17 | | - * http://www.gnu.org/copyleft/gpl.html |
---|
18 | 6 | */ |
---|
19 | 7 | |
---|
20 | 8 | #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt |
---|
.. | .. |
---|
166 | 154 | if (debug >= level) \ |
---|
167 | 155 | printk(KERN_DEBUG KBUILD_MODNAME ": %s " fmt, __func__, ##arg); \ |
---|
168 | 156 | } while (0) |
---|
169 | | - |
---|
170 | | - |
---|
171 | | -static inline u32 MulDiv32(u32 a, u32 b, u32 c) |
---|
172 | | -{ |
---|
173 | | - u64 tmp64; |
---|
174 | | - |
---|
175 | | - tmp64 = (u64) a * (u64) b; |
---|
176 | | - do_div(tmp64, c); |
---|
177 | | - |
---|
178 | | - return (u32) tmp64; |
---|
179 | | -} |
---|
180 | 157 | |
---|
181 | 158 | static inline u32 Frac28a(u32 a, u32 c) |
---|
182 | 159 | { |
---|
.. | .. |
---|
723 | 700 | state->m_drxk_state = DRXK_UNINITIALIZED; |
---|
724 | 701 | |
---|
725 | 702 | /* MPEG output configuration */ |
---|
726 | | - state->m_enable_mpeg_output = true; /* If TRUE; enable MPEG ouput */ |
---|
| 703 | + state->m_enable_mpeg_output = true; /* If TRUE; enable MPEG output */ |
---|
727 | 704 | state->m_insert_rs_byte = false; /* If TRUE; insert RS byte */ |
---|
728 | 705 | state->m_invert_data = false; /* If TRUE; invert DATA signals */ |
---|
729 | 706 | state->m_invert_err = false; /* If TRUE; invert ERR signal */ |
---|
.. | .. |
---|
1034 | 1011 | retry_count += 1; |
---|
1035 | 1012 | status = read16(state, SIO_HI_RA_RAM_CMD__A, |
---|
1036 | 1013 | &wait_cmd); |
---|
1037 | | - } while ((status < 0) && (retry_count < DRXK_MAX_RETRIES) |
---|
1038 | | - && (wait_cmd != 0)); |
---|
| 1014 | + } while ((status < 0 || wait_cmd) && (retry_count < DRXK_MAX_RETRIES)); |
---|
1039 | 1015 | if (status < 0) |
---|
1040 | 1016 | goto error; |
---|
1041 | 1017 | status = read16(state, SIO_HI_RA_RAM_RES__A, p_result); |
---|
.. | .. |
---|
1105 | 1081 | |
---|
1106 | 1082 | static int mpegts_configure_pins(struct drxk_state *state, bool mpeg_enable) |
---|
1107 | 1083 | { |
---|
1108 | | - int status = -1; |
---|
| 1084 | + int status; |
---|
1109 | 1085 | u16 sio_pdr_mclk_cfg = 0; |
---|
1110 | 1086 | u16 sio_pdr_mdx_cfg = 0; |
---|
1111 | 1087 | u16 err_cfg = 0; |
---|
.. | .. |
---|
1474 | 1450 | |
---|
1475 | 1451 | /* assume that the command register is ready |
---|
1476 | 1452 | since it is checked afterwards */ |
---|
1477 | | - for (ii = parameter_len - 1; ii >= 0; ii -= 1) { |
---|
1478 | | - buffer[cnt++] = (parameter[ii] & 0xFF); |
---|
1479 | | - buffer[cnt++] = ((parameter[ii] >> 8) & 0xFF); |
---|
| 1453 | + if (parameter) { |
---|
| 1454 | + for (ii = parameter_len - 1; ii >= 0; ii -= 1) { |
---|
| 1455 | + buffer[cnt++] = (parameter[ii] & 0xFF); |
---|
| 1456 | + buffer[cnt++] = ((parameter[ii] >> 8) & 0xFF); |
---|
| 1457 | + } |
---|
1480 | 1458 | } |
---|
1481 | 1459 | buffer[cnt++] = (cmd & 0xFF); |
---|
1482 | 1460 | buffer[cnt++] = ((cmd >> 8) & 0xFF); |
---|
.. | .. |
---|
1777 | 1755 | goto error; |
---|
1778 | 1756 | state->m_operation_mode = OM_NONE; |
---|
1779 | 1757 | break; |
---|
1780 | | - case OM_QAM_ITU_A: /* fallthrough */ |
---|
| 1758 | + case OM_QAM_ITU_A: |
---|
1781 | 1759 | case OM_QAM_ITU_C: |
---|
1782 | 1760 | status = mpegts_stop(state); |
---|
1783 | 1761 | if (status < 0) |
---|
.. | .. |
---|
1804 | 1782 | if (status < 0) |
---|
1805 | 1783 | goto error; |
---|
1806 | 1784 | break; |
---|
1807 | | - case OM_QAM_ITU_A: /* fallthrough */ |
---|
| 1785 | + case OM_QAM_ITU_A: |
---|
1808 | 1786 | case OM_QAM_ITU_C: |
---|
1809 | 1787 | dprintk(1, ": DVB-C Annex %c\n", |
---|
1810 | 1788 | (state->m_operation_mode == OM_QAM_ITU_A) ? 'A' : 'C'); |
---|
.. | .. |
---|
2033 | 2011 | fec_oc_rcn_ctl_rate = 0xC00000; |
---|
2034 | 2012 | static_clk = state->m_dvbt_static_clk; |
---|
2035 | 2013 | break; |
---|
2036 | | - case OM_QAM_ITU_A: /* fallthrough */ |
---|
| 2014 | + case OM_QAM_ITU_A: |
---|
2037 | 2015 | case OM_QAM_ITU_C: |
---|
2038 | 2016 | fec_oc_tmd_mode = 0x0004; |
---|
2039 | 2017 | fec_oc_rcn_ctl_rate = 0xD2B4EE; /* good for >63 Mb/s */ |
---|
.. | .. |
---|
3270 | 3248 | case OFDM_SC_RA_RAM_CMD_SET_PREF_PARAM: |
---|
3271 | 3249 | case OFDM_SC_RA_RAM_CMD_PROGRAM_PARAM: |
---|
3272 | 3250 | status |= write16(state, OFDM_SC_RA_RAM_PARAM1__A, param1); |
---|
3273 | | - /* fall through - All commands using 1 parameters */ |
---|
| 3251 | + fallthrough; /* All commands using 1 parameters */ |
---|
3274 | 3252 | case OFDM_SC_RA_RAM_CMD_SET_ECHO_TIMING: |
---|
3275 | 3253 | case OFDM_SC_RA_RAM_CMD_USER_IO: |
---|
3276 | 3254 | status |= write16(state, OFDM_SC_RA_RAM_PARAM0__A, param0); |
---|
3277 | | - /* fall through - All commands using 0 parameters */ |
---|
| 3255 | + fallthrough; /* All commands using 0 parameters */ |
---|
3278 | 3256 | case OFDM_SC_RA_RAM_CMD_GET_OP_PARAM: |
---|
3279 | 3257 | case OFDM_SC_RA_RAM_CMD_NULL: |
---|
3280 | 3258 | /* Write command */ |
---|
.. | .. |
---|
3782 | 3760 | case TRANSMISSION_MODE_AUTO: |
---|
3783 | 3761 | default: |
---|
3784 | 3762 | operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_MODE__M; |
---|
3785 | | - /* fall through - try first guess DRX_FFTMODE_8K */ |
---|
| 3763 | + fallthrough; /* try first guess DRX_FFTMODE_8K */ |
---|
3786 | 3764 | case TRANSMISSION_MODE_8K: |
---|
3787 | 3765 | transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_MODE_8K; |
---|
3788 | 3766 | break; |
---|
.. | .. |
---|
3796 | 3774 | default: |
---|
3797 | 3775 | case GUARD_INTERVAL_AUTO: |
---|
3798 | 3776 | operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_GUARD__M; |
---|
3799 | | - /* fall through - try first guess DRX_GUARD_1DIV4 */ |
---|
| 3777 | + fallthrough; /* try first guess DRX_GUARD_1DIV4 */ |
---|
3800 | 3778 | case GUARD_INTERVAL_1_4: |
---|
3801 | 3779 | transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_GUARD_4; |
---|
3802 | 3780 | break; |
---|
.. | .. |
---|
3819 | 3797 | operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_HIER__M; |
---|
3820 | 3798 | /* try first guess SC_RA_RAM_OP_PARAM_HIER_NO */ |
---|
3821 | 3799 | /* transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_HIER_NO; */ |
---|
3822 | | - /* fall through */ |
---|
| 3800 | + fallthrough; |
---|
3823 | 3801 | case HIERARCHY_1: |
---|
3824 | 3802 | transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_HIER_A1; |
---|
3825 | 3803 | break; |
---|
.. | .. |
---|
3837 | 3815 | case QAM_AUTO: |
---|
3838 | 3816 | default: |
---|
3839 | 3817 | operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_CONST__M; |
---|
3840 | | - /* fall through - try first guess DRX_CONSTELLATION_QAM64 */ |
---|
| 3818 | + fallthrough; /* try first guess DRX_CONSTELLATION_QAM64 */ |
---|
3841 | 3819 | case QAM_64: |
---|
3842 | 3820 | transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_CONST_QAM64; |
---|
3843 | 3821 | break; |
---|
.. | .. |
---|
3862 | 3840 | WR16(dev_addr, OFDM_EC_SB_PRIOR__A, |
---|
3863 | 3841 | OFDM_EC_SB_PRIOR_HI)); |
---|
3864 | 3842 | break; |
---|
3865 | | - case DRX_PRIORITY_UNKNOWN: /* fall through */ |
---|
| 3843 | + case DRX_PRIORITY_UNKNOWN: |
---|
3866 | 3844 | default: |
---|
3867 | 3845 | status = -EINVAL; |
---|
3868 | 3846 | goto error; |
---|
3869 | 3847 | } |
---|
3870 | 3848 | #else |
---|
3871 | | - /* Set Priorty high */ |
---|
| 3849 | + /* Set Priority high */ |
---|
3872 | 3850 | transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_PRIO_HI; |
---|
3873 | 3851 | status = write16(state, OFDM_EC_SB_PRIOR__A, OFDM_EC_SB_PRIOR_HI); |
---|
3874 | 3852 | if (status < 0) |
---|
.. | .. |
---|
3880 | 3858 | case FEC_AUTO: |
---|
3881 | 3859 | default: |
---|
3882 | 3860 | operation_mode |= OFDM_SC_RA_RAM_OP_AUTO_RATE__M; |
---|
3883 | | - /* fall through - try first guess DRX_CODERATE_2DIV3 */ |
---|
| 3861 | + fallthrough; /* try first guess DRX_CODERATE_2DIV3 */ |
---|
3884 | 3862 | case FEC_2_3: |
---|
3885 | 3863 | transmission_params |= OFDM_SC_RA_RAM_OP_PARAM_RATE_2_3; |
---|
3886 | 3864 | break; |
---|
.. | .. |
---|
3899 | 3877 | } |
---|
3900 | 3878 | |
---|
3901 | 3879 | /* |
---|
3902 | | - * SAW filter selection: normaly not necesarry, but if wanted |
---|
| 3880 | + * SAW filter selection: normally not necessary, but if wanted |
---|
3903 | 3881 | * the application can select a SAW filter via the driver by |
---|
3904 | 3882 | * using UIOs |
---|
3905 | 3883 | */ |
---|
.. | .. |
---|
3914 | 3892 | switch (state->props.bandwidth_hz) { |
---|
3915 | 3893 | case 0: |
---|
3916 | 3894 | state->props.bandwidth_hz = 8000000; |
---|
3917 | | - /* fall through */ |
---|
| 3895 | + fallthrough; |
---|
3918 | 3896 | case 8000000: |
---|
3919 | 3897 | bandwidth = DRXK_BANDWIDTH_8MHZ_IN_HZ; |
---|
3920 | 3898 | status = write16(state, OFDM_SC_RA_RAM_SRMM_FIX_FACT_8K__A, |
---|
.. | .. |
---|
5421 | 5399 | |
---|
5422 | 5400 | set_param_parameters[3] |= (QAM_MIRROR_AUTO_ON); |
---|
5423 | 5401 | /* Env parameters */ |
---|
5424 | | - /* check for LOCKRANGE Extented */ |
---|
| 5402 | + /* check for LOCKRANGE Extended */ |
---|
5425 | 5403 | /* set_param_parameters[3] |= QAM_LOCKRANGE_NORMAL; */ |
---|
5426 | 5404 | |
---|
5427 | 5405 | status = scu_command(state, |
---|
.. | .. |
---|
6694 | 6672 | static int drxk_read_ucblocks(struct dvb_frontend *fe, u32 *ucblocks) |
---|
6695 | 6673 | { |
---|
6696 | 6674 | struct drxk_state *state = fe->demodulator_priv; |
---|
6697 | | - u16 err; |
---|
| 6675 | + u16 err = 0; |
---|
6698 | 6676 | |
---|
6699 | 6677 | dprintk(1, "\n"); |
---|
6700 | 6678 | |
---|
.. | .. |
---|
6867 | 6845 | kfree(state); |
---|
6868 | 6846 | return NULL; |
---|
6869 | 6847 | } |
---|
6870 | | -EXPORT_SYMBOL(drxk_attach); |
---|
| 6848 | +EXPORT_SYMBOL_GPL(drxk_attach); |
---|
6871 | 6849 | |
---|
6872 | 6850 | MODULE_DESCRIPTION("DRX-K driver"); |
---|
6873 | 6851 | MODULE_AUTHOR("Ralph Metzler"); |
---|