Symbol: idtcm
drivers/ptp/ptp_clockmatrix.c
1015
idtcm->tod_write_overhead_ns = lowest_ns;
drivers/ptp/ptp_clockmatrix.c
1023
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1030
idtcm->calculate_overhead_flag = 1;
drivers/ptp/ptp_clockmatrix.c
1051
static int idtcm_state_machine_reset(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
1058
clear_boot_status(idtcm);
drivers/ptp/ptp_clockmatrix.c
1060
err = idtcm_write(idtcm, RESET_CTRL,
drivers/ptp/ptp_clockmatrix.c
1061
IDTCM_FW_REG(idtcm->fw_ver, V520, SM_RESET),
drivers/ptp/ptp_clockmatrix.c
1067
read_boot_status(idtcm, &status);
drivers/ptp/ptp_clockmatrix.c
1070
dev_dbg(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1077
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1084
static int idtcm_read_hw_rev_id(struct idtcm *idtcm, u8 *hw_rev_id)
drivers/ptp/ptp_clockmatrix.c
1086
return idtcm_read(idtcm, HW_REVISION, REV_ID, hw_rev_id, sizeof(u8));
drivers/ptp/ptp_clockmatrix.c
1089
static int idtcm_read_product_id(struct idtcm *idtcm, u16 *product_id)
drivers/ptp/ptp_clockmatrix.c
1094
err = idtcm_read(idtcm, GENERAL_STATUS, PRODUCT_ID, buf, sizeof(buf));
drivers/ptp/ptp_clockmatrix.c
1101
static int idtcm_read_major_release(struct idtcm *idtcm, u8 *major)
drivers/ptp/ptp_clockmatrix.c
1106
err = idtcm_read(idtcm, GENERAL_STATUS, MAJ_REL, &buf, sizeof(buf));
drivers/ptp/ptp_clockmatrix.c
1113
static int idtcm_read_minor_release(struct idtcm *idtcm, u8 *minor)
drivers/ptp/ptp_clockmatrix.c
1115
return idtcm_read(idtcm, GENERAL_STATUS, MIN_REL, minor, sizeof(u8));
drivers/ptp/ptp_clockmatrix.c
1118
static int idtcm_read_hotfix_release(struct idtcm *idtcm, u8 *hotfix)
drivers/ptp/ptp_clockmatrix.c
1120
return idtcm_read(idtcm,
drivers/ptp/ptp_clockmatrix.c
1127
static int idtcm_read_otp_scsr_config_select(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
1130
return idtcm_read(idtcm, GENERAL_STATUS, OTP_SCSR_CONFIG_SELECT,
drivers/ptp/ptp_clockmatrix.c
1134
static int set_pll_output_mask(struct idtcm *idtcm, u16 addr, u8 val)
drivers/ptp/ptp_clockmatrix.c
1140
SET_U16_LSB(idtcm->channel[0].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1143
SET_U16_MSB(idtcm->channel[0].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1146
SET_U16_LSB(idtcm->channel[1].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1149
SET_U16_MSB(idtcm->channel[1].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1152
SET_U16_LSB(idtcm->channel[2].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1155
SET_U16_MSB(idtcm->channel[2].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1158
SET_U16_LSB(idtcm->channel[3].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1161
SET_U16_MSB(idtcm->channel[3].output_mask, val);
drivers/ptp/ptp_clockmatrix.c
1171
static int set_tod_ptp_pll(struct idtcm *idtcm, u8 index, u8 pll)
drivers/ptp/ptp_clockmatrix.c
1174
dev_err(idtcm->dev, "ToD%d not supported", index);
drivers/ptp/ptp_clockmatrix.c
1179
dev_err(idtcm->dev, "Pll%d not supported", pll);
drivers/ptp/ptp_clockmatrix.c
1183
idtcm->channel[index].pll = pll;
drivers/ptp/ptp_clockmatrix.c
1188
static int check_and_set_masks(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
1197
dev_err(idtcm->dev, "Invalid TOD mask 0x%02x", val);
drivers/ptp/ptp_clockmatrix.c
1200
idtcm->tod_mask = val;
drivers/ptp/ptp_clockmatrix.c
1204
err = set_tod_ptp_pll(idtcm, 0, val);
drivers/ptp/ptp_clockmatrix.c
1207
err = set_tod_ptp_pll(idtcm, 1, val);
drivers/ptp/ptp_clockmatrix.c
1210
err = set_tod_ptp_pll(idtcm, 2, val);
drivers/ptp/ptp_clockmatrix.c
1213
err = set_tod_ptp_pll(idtcm, 3, val);
drivers/ptp/ptp_clockmatrix.c
1216
err = set_pll_output_mask(idtcm, regaddr, val);
drivers/ptp/ptp_clockmatrix.c
1223
static void display_pll_and_masks(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
1228
dev_dbg(idtcm->dev, "tod_mask = 0x%02x", idtcm->tod_mask);
drivers/ptp/ptp_clockmatrix.c
1233
if (mask & idtcm->tod_mask)
drivers/ptp/ptp_clockmatrix.c
1234
dev_dbg(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1236
i, idtcm->channel[i].pll,
drivers/ptp/ptp_clockmatrix.c
1237
idtcm->channel[i].output_mask);
drivers/ptp/ptp_clockmatrix.c
1241
static int idtcm_load_firmware(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
1244
u16 scratch = IDTCM_FW_REG(idtcm->fw_ver, V520, SCRATCH);
drivers/ptp/ptp_clockmatrix.c
1257
dev_info(idtcm->dev, "requesting firmware '%s'", fname);
drivers/ptp/ptp_clockmatrix.c
1261
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1266
dev_dbg(idtcm->dev, "firmware size %zu bytes", fw->size);
drivers/ptp/ptp_clockmatrix.c
1270
if (contains_full_configuration(idtcm, fw))
drivers/ptp/ptp_clockmatrix.c
1271
idtcm_state_machine_reset(idtcm);
drivers/ptp/ptp_clockmatrix.c
1275
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1287
err = check_and_set_masks(idtcm, regaddr, val);
drivers/ptp/ptp_clockmatrix.c
1301
err = idtcm_write(idtcm, regaddr, 0, &val, sizeof(val));
drivers/ptp/ptp_clockmatrix.c
1308
display_pll_and_masks(idtcm);
drivers/ptp/ptp_clockmatrix.c
1318
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1323
base = get_output_base_addr(idtcm->fw_ver, outn);
drivers/ptp/ptp_clockmatrix.c
1326
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1331
err = idtcm_read(idtcm, (u16)base, OUT_CTRL_1, &val, sizeof(val));
drivers/ptp/ptp_clockmatrix.c
1340
return idtcm_write(idtcm, (u16)base, OUT_CTRL_1, &val, sizeof(val));
drivers/ptp/ptp_clockmatrix.c
1347
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1354
dev_err(idtcm->dev, "Unable to set output enable");
drivers/ptp/ptp_clockmatrix.c
1365
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1369
err = idtcm_read(idtcm, channel->dpll_n,
drivers/ptp/ptp_clockmatrix.c
1370
IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_MODE),
drivers/ptp/ptp_clockmatrix.c
1383
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1387
err = idtcm_read(idtcm, channel->dpll_n,
drivers/ptp/ptp_clockmatrix.c
1388
IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_MODE),
drivers/ptp/ptp_clockmatrix.c
1397
err = idtcm_write(idtcm, channel->dpll_n,
drivers/ptp/ptp_clockmatrix.c
1398
IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_MODE),
drivers/ptp/ptp_clockmatrix.c
1406
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1410
err = idtcm_read(idtcm, channel->dpll_ctrl_n,
drivers/ptp/ptp_clockmatrix.c
1426
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1430
err = idtcm_read(idtcm, channel->dpll_ctrl_n,
drivers/ptp/ptp_clockmatrix.c
1440
err = idtcm_write(idtcm, channel->dpll_ctrl_n,
drivers/ptp/ptp_clockmatrix.c
1449
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1455
dev_err(idtcm->dev, "Failed to set pll mode to write frequency");
drivers/ptp/ptp_clockmatrix.c
1464
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1470
dev_err(idtcm->dev, "Failed to set pll mode to write phase");
drivers/ptp/ptp_clockmatrix.c
1479
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1485
dev_err(idtcm->dev, "Failed to set manual reference to write frequency");
drivers/ptp/ptp_clockmatrix.c
1494
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1500
dev_err(idtcm->dev, "Failed to set manual reference to write phase");
drivers/ptp/ptp_clockmatrix.c
1523
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1525
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1529
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1599
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1614
dev_warn(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1624
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1640
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1652
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1659
dev_err(idtcm->dev, "Unable to read pll mode!");
drivers/ptp/ptp_clockmatrix.c
1666
dev_err(idtcm->dev, "Unable to read manual reference!");
drivers/ptp/ptp_clockmatrix.c
1703
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1722
err = idtcm_write(idtcm, channel->dpll_phase, DPLL_WR_PHASE,
drivers/ptp/ptp_clockmatrix.c
1730
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1766
err = idtcm_write(idtcm, channel->dpll_freq, DPLL_WR_FREQ,
drivers/ptp/ptp_clockmatrix.c
1775
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1778
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1780
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1783
dev_err(idtcm->dev, "Failed at line %d in %s!",
drivers/ptp/ptp_clockmatrix.c
1793
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1796
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1798
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1801
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1811
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1814
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1816
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1819
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1828
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1831
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1833
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1836
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1845
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1853
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1868
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1871
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1880
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1883
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1885
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1888
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1897
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1906
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1908
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1911
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1923
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1926
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1946
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
1949
dev_err(channel->idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
1957
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
1959
u16 tod_cfg = IDTCM_FW_REG(idtcm->fw_ver, V520, TOD_CFG);
drivers/ptp/ptp_clockmatrix.c
1966
err = idtcm_read(idtcm, channel->tod_n, tod_cfg, &cfg, sizeof(cfg));
drivers/ptp/ptp_clockmatrix.c
1972
err = idtcm_write(idtcm, channel->tod_n, tod_cfg, &cfg, sizeof(cfg));
drivers/ptp/ptp_clockmatrix.c
1976
if (idtcm->fw_ver < V487)
drivers/ptp/ptp_clockmatrix.c
1983
static void idtcm_set_version_info(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
199
static int clear_boot_status(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
1992
idtcm_read_major_release(idtcm, &major);
drivers/ptp/ptp_clockmatrix.c
1993
idtcm_read_minor_release(idtcm, &minor);
drivers/ptp/ptp_clockmatrix.c
1994
idtcm_read_hotfix_release(idtcm, &hotfix);
drivers/ptp/ptp_clockmatrix.c
1996
idtcm_read_product_id(idtcm, &product_id);
drivers/ptp/ptp_clockmatrix.c
1997
idtcm_read_hw_rev_id(idtcm, &hw_rev_id);
drivers/ptp/ptp_clockmatrix.c
1999
idtcm_read_otp_scsr_config_select(idtcm, &config_select);
drivers/ptp/ptp_clockmatrix.c
2001
snprintf(idtcm->version, sizeof(idtcm->version), "%u.%u.%u",
drivers/ptp/ptp_clockmatrix.c
2004
idtcm->fw_ver = idtcm_fw_version(idtcm->version);
drivers/ptp/ptp_clockmatrix.c
2006
dev_info(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
203
return idtcm_write(idtcm, GENERAL_STATUS, BOOT_STATUS, buf, sizeof(buf));
drivers/ptp/ptp_clockmatrix.c
206
static int read_boot_status(struct idtcm *idtcm, u32 *status)
drivers/ptp/ptp_clockmatrix.c
2066
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
2088
channel->dpll_n = IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_2);
drivers/ptp/ptp_clockmatrix.c
2104
channel->dpll_n = IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_4);
drivers/ptp/ptp_clockmatrix.c
211
err = idtcm_read(idtcm, GENERAL_STATUS, BOOT_STATUS, buf, sizeof(buf));
drivers/ptp/ptp_clockmatrix.c
2120
channel->dpll_n = IDTCM_FW_REG(idtcm->fw_ver, V520, DPLL_6);
drivers/ptp/ptp_clockmatrix.c
2147
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
2155
err = idtcm_read(idtcm, channel->dpll_ctrl_n,
drivers/ptp/ptp_clockmatrix.c
2160
err = idtcm_read(idtcm, channel->dpll_ctrl_n,
drivers/ptp/ptp_clockmatrix.c
218
static int wait_for_boot_status_ready(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
2181
enum fw_version fw_ver = channel->idtcm->fw_ver;
drivers/ptp/ptp_clockmatrix.c
2220
static int idtcm_enable_channel(struct idtcm *idtcm, u32 index)
drivers/ptp/ptp_clockmatrix.c
2229
channel = &idtcm->channel[index];
drivers/ptp/ptp_clockmatrix.c
2231
channel->idtcm = idtcm;
drivers/ptp/ptp_clockmatrix.c
2244
if (idtcm->fw_ver < V487)
drivers/ptp/ptp_clockmatrix.c
225
err = read_boot_status(idtcm, &status);
drivers/ptp/ptp_clockmatrix.c
2269
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
2287
dev_info(idtcm->dev, "PLL%d registered as ptp%d",
drivers/ptp/ptp_clockmatrix.c
2293
static int idtcm_enable_extts_channel(struct idtcm *idtcm, u32 index)
drivers/ptp/ptp_clockmatrix.c
2301
channel = &idtcm->channel[index];
drivers/ptp/ptp_clockmatrix.c
2302
channel->idtcm = idtcm;
drivers/ptp/ptp_clockmatrix.c
2309
channel->idtcm = idtcm;
drivers/ptp/ptp_clockmatrix.c
2316
struct idtcm *idtcm = container_of(work, struct idtcm, extts_work.work);
drivers/ptp/ptp_clockmatrix.c
2322
if (idtcm->extts_mask == 0)
drivers/ptp/ptp_clockmatrix.c
2325
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
2330
if ((idtcm->extts_mask & mask) == 0)
drivers/ptp/ptp_clockmatrix.c
2333
err = idtcm_extts_check_channel(idtcm, i);
drivers/ptp/ptp_clockmatrix.c
2337
if (idtcm->extts_single_shot) {
drivers/ptp/ptp_clockmatrix.c
2338
idtcm->extts_mask &= ~mask;
drivers/ptp/ptp_clockmatrix.c
2341
channel = &idtcm->channel[i];
drivers/ptp/ptp_clockmatrix.c
2347
if (idtcm->extts_mask)
drivers/ptp/ptp_clockmatrix.c
2348
schedule_delayed_work(&idtcm->extts_work,
drivers/ptp/ptp_clockmatrix.c
2351
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
2354
static void ptp_clock_unregister_all(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
2360
channel = &idtcm->channel[i];
drivers/ptp/ptp_clockmatrix.c
2366
static void set_default_masks(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
2368
idtcm->tod_mask = DEFAULT_TOD_MASK;
drivers/ptp/ptp_clockmatrix.c
2369
idtcm->extts_mask = 0;
drivers/ptp/ptp_clockmatrix.c
237
dev_warn(idtcm->dev, "%s timed out", __func__);
drivers/ptp/ptp_clockmatrix.c
2371
idtcm->channel[0].tod = 0;
drivers/ptp/ptp_clockmatrix.c
2372
idtcm->channel[1].tod = 1;
drivers/ptp/ptp_clockmatrix.c
2373
idtcm->channel[2].tod = 2;
drivers/ptp/ptp_clockmatrix.c
2374
idtcm->channel[3].tod = 3;
drivers/ptp/ptp_clockmatrix.c
2376
idtcm->channel[0].pll = DEFAULT_TOD0_PTP_PLL;
drivers/ptp/ptp_clockmatrix.c
2377
idtcm->channel[1].pll = DEFAULT_TOD1_PTP_PLL;
drivers/ptp/ptp_clockmatrix.c
2378
idtcm->channel[2].pll = DEFAULT_TOD2_PTP_PLL;
drivers/ptp/ptp_clockmatrix.c
2379
idtcm->channel[3].pll = DEFAULT_TOD3_PTP_PLL;
drivers/ptp/ptp_clockmatrix.c
2381
idtcm->channel[0].output_mask = DEFAULT_OUTPUT_MASK_PLL0;
drivers/ptp/ptp_clockmatrix.c
2382
idtcm->channel[1].output_mask = DEFAULT_OUTPUT_MASK_PLL1;
drivers/ptp/ptp_clockmatrix.c
2383
idtcm->channel[2].output_mask = DEFAULT_OUTPUT_MASK_PLL2;
drivers/ptp/ptp_clockmatrix.c
2384
idtcm->channel[3].output_mask = DEFAULT_OUTPUT_MASK_PLL3;
drivers/ptp/ptp_clockmatrix.c
2390
struct idtcm *idtcm;
drivers/ptp/ptp_clockmatrix.c
2394
idtcm = devm_kzalloc(&pdev->dev, sizeof(struct idtcm), GFP_KERNEL);
drivers/ptp/ptp_clockmatrix.c
2396
if (!idtcm)
drivers/ptp/ptp_clockmatrix.c
2399
idtcm->dev = &pdev->dev;
drivers/ptp/ptp_clockmatrix.c
2400
idtcm->mfd = pdev->dev.parent;
drivers/ptp/ptp_clockmatrix.c
2401
idtcm->lock = &ddata->lock;
drivers/ptp/ptp_clockmatrix.c
2402
idtcm->regmap = ddata->regmap;
drivers/ptp/ptp_clockmatrix.c
2403
idtcm->calculate_overhead_flag = 0;
drivers/ptp/ptp_clockmatrix.c
2405
INIT_DELAYED_WORK(&idtcm->extts_work, idtcm_extts_check);
drivers/ptp/ptp_clockmatrix.c
2407
set_default_masks(idtcm);
drivers/ptp/ptp_clockmatrix.c
2409
mutex_lock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
2411
idtcm_set_version_info(idtcm);
drivers/ptp/ptp_clockmatrix.c
2413
err = idtcm_load_firmware(idtcm, &pdev->dev);
drivers/ptp/ptp_clockmatrix.c
2416
dev_warn(idtcm->dev, "loading firmware failed with %d", err);
drivers/ptp/ptp_clockmatrix.c
2418
wait_for_chip_ready(idtcm);
drivers/ptp/ptp_clockmatrix.c
2420
if (idtcm->tod_mask) {
drivers/ptp/ptp_clockmatrix.c
2422
if (idtcm->tod_mask & (1 << i))
drivers/ptp/ptp_clockmatrix.c
2423
err = idtcm_enable_channel(idtcm, i);
drivers/ptp/ptp_clockmatrix.c
2425
err = idtcm_enable_extts_channel(idtcm, i);
drivers/ptp/ptp_clockmatrix.c
2427
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
2433
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
2438
mutex_unlock(idtcm->lock);
drivers/ptp/ptp_clockmatrix.c
244
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
2441
ptp_clock_unregister_all(idtcm);
drivers/ptp/ptp_clockmatrix.c
2445
platform_set_drvdata(pdev, idtcm);
drivers/ptp/ptp_clockmatrix.c
245
u16 tod_read_cmd = IDTCM_FW_REG(idtcm->fw_ver, V520, TOD_READ_SECONDARY_CMD);
drivers/ptp/ptp_clockmatrix.c
2452
struct idtcm *idtcm = platform_get_drvdata(pdev);
drivers/ptp/ptp_clockmatrix.c
2454
idtcm->extts_mask = 0;
drivers/ptp/ptp_clockmatrix.c
2455
ptp_clock_unregister_all(idtcm);
drivers/ptp/ptp_clockmatrix.c
2456
cancel_delayed_work_sync(&idtcm->extts_work);
drivers/ptp/ptp_clockmatrix.c
252
err = idtcm_write(idtcm, channel->tod_read_secondary,
drivers/ptp/ptp_clockmatrix.c
259
err = idtcm_write(idtcm, channel->tod_read_secondary, tod_read_cmd,
drivers/ptp/ptp_clockmatrix.c
262
dev_err(idtcm->dev, "%s: err = %d", __func__, err);
drivers/ptp/ptp_clockmatrix.c
277
struct idtcm *idtcm;
drivers/ptp/ptp_clockmatrix.c
283
idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
284
old_mask = idtcm->extts_mask;
drivers/ptp/ptp_clockmatrix.c
295
dev_err(idtcm->dev, "%s: No valid pin found for TOD%d!\n",
drivers/ptp/ptp_clockmatrix.c
300
err = arm_tod_read_trig_sel_refclk(&idtcm->channel[index], ref);
drivers/ptp/ptp_clockmatrix.c
303
idtcm->extts_mask |= mask;
drivers/ptp/ptp_clockmatrix.c
304
idtcm->event_channel[index] = channel;
drivers/ptp/ptp_clockmatrix.c
305
idtcm->channel[index].refn = ref;
drivers/ptp/ptp_clockmatrix.c
306
idtcm->extts_single_shot = is_single_shot(idtcm->extts_mask);
drivers/ptp/ptp_clockmatrix.c
311
schedule_delayed_work(&idtcm->extts_work,
drivers/ptp/ptp_clockmatrix.c
315
idtcm->extts_mask &= ~mask;
drivers/ptp/ptp_clockmatrix.c
316
idtcm->extts_single_shot = is_single_shot(idtcm->extts_mask);
drivers/ptp/ptp_clockmatrix.c
318
if (idtcm->extts_mask == 0)
drivers/ptp/ptp_clockmatrix.c
319
cancel_delayed_work(&idtcm->extts_work);
drivers/ptp/ptp_clockmatrix.c
325
static int read_sys_apll_status(struct idtcm *idtcm, u8 *status)
drivers/ptp/ptp_clockmatrix.c
327
return idtcm_read(idtcm, STATUS, DPLL_SYS_APLL_STATUS, status,
drivers/ptp/ptp_clockmatrix.c
331
static int read_sys_dpll_status(struct idtcm *idtcm, u8 *status)
drivers/ptp/ptp_clockmatrix.c
333
return idtcm_read(idtcm, STATUS, DPLL_SYS_STATUS, status, sizeof(u8));
drivers/ptp/ptp_clockmatrix.c
336
static int wait_for_sys_apll_dpll_lock(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
344
err = read_sys_apll_status(idtcm, &apll);
drivers/ptp/ptp_clockmatrix.c
348
err = read_sys_dpll_status(idtcm, &dpll);
drivers/ptp/ptp_clockmatrix.c
361
dev_warn(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
369
dev_warn(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
376
static void wait_for_chip_ready(struct idtcm *idtcm)
drivers/ptp/ptp_clockmatrix.c
378
if (wait_for_boot_status_ready(idtcm))
drivers/ptp/ptp_clockmatrix.c
379
dev_warn(idtcm->dev, "BOOT_STATUS != 0xA0");
drivers/ptp/ptp_clockmatrix.c
381
if (wait_for_sys_apll_dpll_lock(idtcm))
drivers/ptp/ptp_clockmatrix.c
382
dev_warn(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
389
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
390
u16 tod_read_cmd = IDTCM_FW_REG(idtcm->fw_ver, V520, TOD_READ_SECONDARY_CMD);
drivers/ptp/ptp_clockmatrix.c
395
err = idtcm_read(idtcm, channel->tod_read_secondary,
drivers/ptp/ptp_clockmatrix.c
403
err = idtcm_read(idtcm, channel->tod_read_secondary,
drivers/ptp/ptp_clockmatrix.c
414
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
415
u16 tod_read_cmd = IDTCM_FW_REG(idtcm->fw_ver, V520, TOD_READ_PRIMARY_CMD);
drivers/ptp/ptp_clockmatrix.c
425
if (idtcm->calculate_overhead_flag)
drivers/ptp/ptp_clockmatrix.c
426
idtcm->start_time = ktime_get_raw();
drivers/ptp/ptp_clockmatrix.c
428
err = idtcm_read(idtcm, channel->tod_read_primary,
drivers/ptp/ptp_clockmatrix.c
43
static inline int idtcm_read(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
435
err = idtcm_read(idtcm, channel->tod_read_primary,
drivers/ptp/ptp_clockmatrix.c
445
static int idtcm_extts_check_channel(struct idtcm *idtcm, u8 todn)
drivers/ptp/ptp_clockmatrix.c
453
extts_channel = &idtcm->channel[todn];
drivers/ptp/ptp_clockmatrix.c
454
ptp_channel = idtcm->event_channel[todn];
drivers/ptp/ptp_clockmatrix.c
475
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
477
u16 tod_read_cmd = IDTCM_FW_REG(idtcm->fw_ver, V520, TOD_READ_PRIMARY_CMD);
drivers/ptp/ptp_clockmatrix.c
481
err = idtcm_write(idtcm, channel->tod_read_primary,
drivers/ptp/ptp_clockmatrix.c
489
static int _sync_pll_output(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
49
return regmap_bulk_read(idtcm->regmap, module + regaddr, buf, count);
drivers/ptp/ptp_clockmatrix.c
52
static inline int idtcm_write(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
544
err = idtcm_write(idtcm, 0, sync_ctrl1, &val, sizeof(val));
drivers/ptp/ptp_clockmatrix.c
548
err = idtcm_write(idtcm, 0, sync_ctrl0, &sync_src, sizeof(sync_src));
drivers/ptp/ptp_clockmatrix.c
561
err = idtcm_write(idtcm, 0, sync_ctrl1, &val, sizeof(val));
drivers/ptp/ptp_clockmatrix.c
567
err = idtcm_read(idtcm, 0, HW_Q8_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
574
err = idtcm_write(idtcm, 0, HW_Q8_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
58
return regmap_bulk_write(idtcm->regmap, module + regaddr, buf, count);
drivers/ptp/ptp_clockmatrix.c
581
err = idtcm_write(idtcm, 0, HW_Q8_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
589
err = idtcm_read(idtcm, 0, HW_Q11_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
596
err = idtcm_write(idtcm, 0, HW_Q11_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
603
err = idtcm_write(idtcm, 0, HW_Q11_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
61
static int contains_full_configuration(struct idtcm *idtcm,
drivers/ptp/ptp_clockmatrix.c
611
err = idtcm_write(idtcm, 0, sync_ctrl1, &val, sizeof(val));
drivers/ptp/ptp_clockmatrix.c
618
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
628
err = idtcm_read(idtcm, 0, HW_Q8_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
637
err = idtcm_read(idtcm, 0, HW_Q11_CTRL_SPARE,
drivers/ptp/ptp_clockmatrix.c
65
u16 scratch = IDTCM_FW_REG(idtcm->fw_ver, V520, SCRATCH);
drivers/ptp/ptp_clockmatrix.c
683
err = _sync_pll_output(idtcm, pll, channel->sync_src,
drivers/ptp/ptp_clockmatrix.c
697
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
705
err = idtcm_read(idtcm, channel->hw_dpll_n, HW_DPLL_TOD_CTRL_1,
drivers/ptp/ptp_clockmatrix.c
713
err = idtcm_write(idtcm, channel->hw_dpll_n, HW_DPLL_TOD_CTRL_1,
drivers/ptp/ptp_clockmatrix.c
723
err = idtcm_write(idtcm, channel->hw_dpll_n,
drivers/ptp/ptp_clockmatrix.c
732
err = idtcm_write(idtcm, channel->hw_dpll_n, HW_DPLL_TOD_CTRL_1,
drivers/ptp/ptp_clockmatrix.c
736
if (idtcm->calculate_overhead_flag) {
drivers/ptp/ptp_clockmatrix.c
739
idtcm->start_time);
drivers/ptp/ptp_clockmatrix.c
741
+ idtcm->tod_write_overhead_ns
drivers/ptp/ptp_clockmatrix.c
746
idtcm->calculate_overhead_flag = 0;
drivers/ptp/ptp_clockmatrix.c
753
err = idtcm_write(idtcm, channel->hw_dpll_n,
drivers/ptp/ptp_clockmatrix.c
765
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
776
err = idtcm_write(idtcm, channel->tod_write, TOD_WRITE,
drivers/ptp/ptp_clockmatrix.c
782
err = idtcm_read(idtcm, channel->tod_write, TOD_WRITE_CMD,
drivers/ptp/ptp_clockmatrix.c
792
err = idtcm_write(idtcm, channel->tod_write, TOD_WRITE_CMD,
drivers/ptp/ptp_clockmatrix.c
803
err = idtcm_read(idtcm, channel->tod_write, TOD_WRITE_CMD,
drivers/ptp/ptp_clockmatrix.c
812
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
872
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
877
dev_err(idtcm->dev,
drivers/ptp/ptp_clockmatrix.c
899
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
907
err = idtcm_write(idtcm, channel->dpll_phase_pull_in, PULL_IN_OFFSET,
drivers/ptp/ptp_clockmatrix.c
918
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
929
err = idtcm_write(idtcm, channel->dpll_phase_pull_in,
drivers/ptp/ptp_clockmatrix.c
938
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
941
err = idtcm_read(idtcm, channel->dpll_phase_pull_in, PULL_IN_CTRL,
drivers/ptp/ptp_clockmatrix.c
948
err = idtcm_write(idtcm, channel->dpll_phase_pull_in,
drivers/ptp/ptp_clockmatrix.c
978
struct idtcm *idtcm = channel->idtcm;
drivers/ptp/ptp_clockmatrix.c
990
idtcm_write(idtcm, channel->hw_dpll_n, HW_DPLL_TOD_OVR__0,
drivers/ptp/ptp_clockmatrix.c
996
err = idtcm_write(idtcm, channel->hw_dpll_n,
drivers/ptp/ptp_clockmatrix.h
81
struct idtcm;
drivers/ptp/ptp_clockmatrix.h
86
struct idtcm *idtcm;