Lines Matching +full:0 +full:x01200000
28 #define PCI_VENDOR_ID_FACEBOOK 0x1d9b
29 #define PCI_DEVICE_ID_FACEBOOK_TIMECARD 0x0400
31 #define PCI_VENDOR_ID_CELESTICA 0x18d4
32 #define PCI_DEVICE_ID_CELESTICA_TIMECARD 0x1008
34 #define PCI_VENDOR_ID_OROLIA 0x1ad7
35 #define PCI_DEVICE_ID_OROLIA_ARTCARD 0xa000
37 #define PCI_VENDOR_ID_ADVA 0xad5a
38 #define PCI_DEVICE_ID_ADVA_TIMECARD 0x0400
76 #define OCP_CTRL_ENABLE BIT(0)
84 #define OCP_STATUS_IN_SYNC BIT(0)
87 #define OCP_SELECT_CLK_NONE 0
88 #define OCP_SELECT_CLK_REG 0xfe
106 #define TOD_CTRL_ENABLE BIT(0)
107 #define TOD_CTRL_GNSS_MASK GENMASK(3, 0)
110 #define TOD_STATUS_UTC_MASK GENMASK(7, 0)
141 #define PPS_STATUS_FILTER_ERR BIT(0)
164 #define IRIG_M_CTRL_ENABLE BIT(0)
175 #define IRIG_S_CTRL_ENABLE BIT(0)
185 #define DCF_M_CTRL_ENABLE BIT(0)
195 #define DCF_S_CTRL_ENABLE BIT(0)
229 #define FREQ_STATUS_MASK GENMASK(23, 0)
296 #define OCP_CAP_BASIC BIT(0)
391 #define OCP_REQ_TIMESTAMP BIT(0)
445 { EEPROM_ENTRY(0x43, board_id) },
446 { EEPROM_ENTRY(0x00, serial), .tag = "mac" },
451 { EEPROM_ENTRY(0x200 + 0x43, board_id) },
452 { EEPROM_ENTRY(0x200 + 0x63, serial) },
480 * 0: PPS (TS5)
509 .offset = 0x01000000, .size = 0x10000,
513 .offset = 0x01010000, .size = 0x10000, .irq_vec = 1,
515 .index = 0,
522 .offset = 0x01020000, .size = 0x10000, .irq_vec = 2,
531 .offset = 0x01060000, .size = 0x10000, .irq_vec = 6,
540 .offset = 0x01110000, .size = 0x10000, .irq_vec = 15,
549 .offset = 0x01120000, .size = 0x10000, .irq_vec = 16,
559 .offset = 0x010C0000, .size = 0x10000, .irq_vec = 0,
567 OCP_EXT_RESOURCE(signal_out[0]),
568 .offset = 0x010D0000, .size = 0x10000, .irq_vec = 11,
577 .offset = 0x010E0000, .size = 0x10000, .irq_vec = 12,
586 .offset = 0x010F0000, .size = 0x10000, .irq_vec = 13,
595 .offset = 0x01100000, .size = 0x10000, .irq_vec = 14,
604 .offset = 0x01030000, .size = 0x10000,
608 .offset = 0x01040000, .size = 0x10000,
612 .offset = 0x01050000, .size = 0x10000,
616 .offset = 0x01070000, .size = 0x10000,
620 .offset = 0x01080000, .size = 0x10000,
624 .offset = 0x01090000, .size = 0x10000,
628 .offset = 0x010A0000, .size = 0x10000,
632 .offset = 0x010B0000, .size = 0x10000,
636 .offset = 0x00020000, .size = 0x1000,
640 .offset = 0x00130000, .size = 0x1000,
644 .offset = 0x00140000, .size = 0x1000,
648 .offset = 0x00220000, .size = 0x1000,
652 .offset = 0x00150000, .size = 0x10000, .irq_vec = 7,
660 { I2C_BOARD_INFO("24c02", 0x50) },
661 { I2C_BOARD_INFO("24mac402", 0x58),
669 .offset = 0x00160000 + 0x1000, .irq_vec = 3,
676 .offset = 0x00170000 + 0x1000, .irq_vec = 4,
683 .offset = 0x00180000 + 0x1000, .irq_vec = 5,
690 .offset = 0x00190000 + 0x1000, .irq_vec = 10,
694 .offset = 0x00310000, .size = 0x10000, .irq_vec = 9,
696 .name = "xilinx_spi", .pci_offset = 0,
710 OCP_MEM_RESOURCE(freq_in[0]),
711 .offset = 0x01200000, .size = 0x10000,
715 .offset = 0x01210000, .size = 0x10000,
719 .offset = 0x01220000, .size = 0x10000,
723 .offset = 0x01230000, .size = 0x10000,
728 .servo_offset_p = 0x2000,
729 .servo_offset_i = 0x1000,
730 .servo_drift_p = 0,
731 .servo_drift_i = 0,
750 .offset = 0x01000000, .size = 0x10000,
754 .offset = 0x00160000 + 0x1000, .irq_vec = 3,
761 .offset = 0x003C0000, .size = 0x1000,
766 .offset = 0x360000, .size = 0x20, .irq_vec = 12,
768 .index = 0,
775 .offset = 0x380000, .size = 0x20, .irq_vec = 8,
784 .offset = 0x390000, .size = 0x20, .irq_vec = 10,
793 .offset = 0x3A0000, .size = 0x20, .irq_vec = 14,
802 .offset = 0x3B0000, .size = 0x20, .irq_vec = 15,
812 .offset = 0x00330000, .size = 0x20, .irq_vec = 11,
821 .offset = 0x00310000, .size = 0x10000, .irq_vec = 9,
823 .name = "spi_altera", .pci_offset = 0,
836 .offset = 0x350000, .size = 0x100, .irq_vec = 4,
846 I2C_BOARD_INFO("24c08", 0x50),
853 .offset = 0x00190000, .irq_vec = 7,
860 .offset = 0x210000, .size = 0x1000,
865 .servo_offset_p = 0x2000,
866 .servo_offset_i = 0x1000,
867 .servo_drift_p = 0,
868 .servo_drift_i = 0,
877 .offset = 0x01000000, .size = 0x10000,
881 .offset = 0x01010000, .size = 0x10000, .irq_vec = 1,
883 .index = 0,
890 .offset = 0x01020000, .size = 0x10000, .irq_vec = 2,
899 .offset = 0x01060000, .size = 0x10000, .irq_vec = 6,
909 .offset = 0x010C0000, .size = 0x10000, .irq_vec = 0,
917 OCP_EXT_RESOURCE(signal_out[0]),
918 .offset = 0x010D0000, .size = 0x10000, .irq_vec = 11,
927 .offset = 0x010E0000, .size = 0x10000, .irq_vec = 12,
936 .offset = 0x01030000, .size = 0x10000,
940 .offset = 0x01040000, .size = 0x10000,
944 .offset = 0x01050000, .size = 0x10000,
948 .offset = 0x00020000, .size = 0x1000,
952 .offset = 0x00130000, .size = 0x1000,
956 .offset = 0x00140000, .size = 0x1000,
960 .offset = 0x00220000, .size = 0x1000,
964 .offset = 0x00160000 + 0x1000, .irq_vec = 3,
971 .offset = 0x00180000 + 0x1000, .irq_vec = 5,
977 OCP_MEM_RESOURCE(freq_in[0]),
978 .offset = 0x01200000, .size = 0x10000,
982 .offset = 0x01210000, .size = 0x10000,
986 .offset = 0x00310400, .size = 0x10000, .irq_vec = 9,
988 .name = "spi_altera", .pci_offset = 0,
1001 .offset = 0x150000, .size = 0x100, .irq_vec = 7,
1013 { I2C_BOARD_INFO("24c02", 0x50) },
1014 { I2C_BOARD_INFO("24mac402", 0x58),
1023 .servo_offset_p = 0xc000,
1024 .servo_offset_i = 0x1000,
1025 .servo_drift_p = 0,
1026 .servo_drift_i = 0,
1051 { .name = "NONE", .value = 0 },
1058 { .name = "REGS", .value = 0xfe },
1059 { .name = "EXT", .value = 0xff },
1065 #define SMA_SELECT_MASK GENMASK(14, 0)
1068 { .name = "10Mhz", .value = 0x0000, .frequency = 10000000 },
1069 { .name = "PPS1", .value = 0x0001, .frequency = 1 },
1070 { .name = "PPS2", .value = 0x0002, .frequency = 1 },
1071 { .name = "TS1", .value = 0x0004, .frequency = 0 },
1072 { .name = "TS2", .value = 0x0008, .frequency = 0 },
1073 { .name = "IRIG", .value = 0x0010, .frequency = 10000 },
1074 { .name = "DCF", .value = 0x0020, .frequency = 77500 },
1075 { .name = "TS3", .value = 0x0040, .frequency = 0 },
1076 { .name = "TS4", .value = 0x0080, .frequency = 0 },
1077 { .name = "FREQ1", .value = 0x0100, .frequency = 0 },
1078 { .name = "FREQ2", .value = 0x0200, .frequency = 0 },
1079 { .name = "FREQ3", .value = 0x0400, .frequency = 0 },
1080 { .name = "FREQ4", .value = 0x0800, .frequency = 0 },
1081 { .name = "None", .value = SMA_DISABLE, .frequency = 0 },
1086 { .name = "10Mhz", .value = 0x0000, .frequency = 10000000 },
1087 { .name = "PHC", .value = 0x0001, .frequency = 1 },
1088 { .name = "MAC", .value = 0x0002, .frequency = 1 },
1089 { .name = "GNSS1", .value = 0x0004, .frequency = 1 },
1090 { .name = "GNSS2", .value = 0x0008, .frequency = 1 },
1091 { .name = "IRIG", .value = 0x0010, .frequency = 10000 },
1092 { .name = "DCF", .value = 0x0020, .frequency = 77000 },
1093 { .name = "GEN1", .value = 0x0040 },
1094 { .name = "GEN2", .value = 0x0080 },
1095 { .name = "GEN3", .value = 0x0100 },
1096 { .name = "GEN4", .value = 0x0200 },
1097 { .name = "GND", .value = 0x2000 },
1098 { .name = "VCC", .value = 0x4000 },
1103 { .name = "PPS1", .value = 0x0001, .frequency = 1 },
1104 { .name = "10Mhz", .value = 0x0008, .frequency = 1000000 },
1109 { .name = "PHC", .value = 0x0002, .frequency = 1 },
1110 { .name = "GNSS", .value = 0x0004, .frequency = 1 },
1111 { .name = "10Mhz", .value = 0x0010, .frequency = 10000000 },
1116 { .name = "10Mhz", .value = 0x0000, .frequency = 10000000},
1117 { .name = "PPS1", .value = 0x0001, .frequency = 1 },
1118 { .name = "PPS2", .value = 0x0002, .frequency = 1 },
1119 { .name = "TS1", .value = 0x0004, .frequency = 0 },
1120 { .name = "TS2", .value = 0x0008, .frequency = 0 },
1121 { .name = "FREQ1", .value = 0x0100, .frequency = 0 },
1122 { .name = "FREQ2", .value = 0x0200, .frequency = 0 },
1123 { .name = "None", .value = SMA_DISABLE, .frequency = 0 },
1128 { .name = "10Mhz", .value = 0x0000, .frequency = 10000000},
1129 { .name = "PHC", .value = 0x0001, .frequency = 1 },
1130 { .name = "MAC", .value = 0x0002, .frequency = 1 },
1131 { .name = "GNSS1", .value = 0x0004, .frequency = 1 },
1132 { .name = "GEN1", .value = 0x0040 },
1133 { .name = "GEN2", .value = 0x0080 },
1134 { .name = "GND", .value = 0x2000 },
1135 { .name = "VCC", .value = 0x4000 },
1176 for (i = 0; tbl[i].name; i++) in ptp_ocp_select_name_from_val()
1188 for (i = 0; tbl[i].name; i++) { in ptp_ocp_select_val_from_name()
1202 count = 0; in ptp_ocp_select_table_show()
1203 for (i = 0; tbl[i].name; i++) in ptp_ocp_select_table_show()
1223 for (i = 0; i < 100; i++) { in __ptp_ocp_gettime_locked()
1242 return ctrl & OCP_CTRL_READ_TIME_DONE ? 0 : -ETIMEDOUT; in __ptp_ocp_gettime_locked()
1292 return 0; in ptp_ocp_settime()
1339 return 0; in ptp_ocp_adjtime()
1342 sign = delta_ns < 0 ? BIT(31) : 0; in ptp_ocp_adjtime()
1349 return 0; in ptp_ocp_adjtime()
1355 if (scaled_ppm == 0) in ptp_ocp_null_adjfine()
1356 return 0; in ptp_ocp_null_adjfine()
1364 return 0; in ptp_ocp_null_getmaxphase()
1386 case 0: in ptp_ocp_enable()
1412 case 0: in ptp_ocp_enable()
1417 rq->perout.period.nsec != 0)) in ptp_ocp_enable()
1419 return 0; in ptp_ocp_enable()
1456 return 0; in ptp_ocp_verify()
1458 /* channel 0 is 1PPS from PHC. in ptp_ocp_verify()
1498 iowrite32(0, &bp->reg->drift_ns); in __ptp_ocp_clear_drift_locked()
1545 bp->gnss_lost = 0; in ptp_ocp_watchdog()
1569 for (i = 0; i < 3; i++) { in ptp_ocp_estimate_pci_timing()
1605 if ((ioread32(&bp->reg->ctrl) & OCP_CTRL_ENABLE) == 0) { in ptp_ocp_init_clock()
1620 timer_setup(&bp->watchdog, ptp_ocp_watchdog, 0); in ptp_ocp_init_clock()
1624 return 0; in ptp_ocp_init_clock()
1685 return 0; in ptp_ocp_nvmem_match()
1690 return 0; in ptp_ocp_nvmem_match()
1784 NULL, 0, 0); in ptp_ocp_devlink_fw_image()
1792 NULL, 0, 0); in ptp_ocp_devlink_fw_image()
1801 NULL, 0, 0); in ptp_ocp_devlink_fw_image()
1805 crc = crc16(0xffff, &fw->data[offset], length); in ptp_ocp_devlink_fw_image()
1809 NULL, 0, 0); in ptp_ocp_devlink_fw_image()
1816 return 0; in ptp_ocp_devlink_fw_image()
1835 off = 0; in ptp_ocp_devlink_flash()
1880 NULL, 0, 0); in ptp_ocp_devlink_flash_update()
1885 devlink_flash_update_status_notify(devlink, msg, NULL, 0, 0); in ptp_ocp_devlink_flash_update()
1909 return 0; in ptp_ocp_devlink_info_get()
1923 return 0; in ptp_ocp_devlink_info_get()
1944 start = pci_resource_start(bp->pdev, 0) + r->offset; in ptp_ocp_get_mem()
1958 start = pci_resource_start(pdev, 0) + r->offset; in ptp_ocp_register_spi()
1959 res[0] = DEFINE_RES_MEM(start, r->size); in ptp_ocp_register_spi()
1974 return 0; in ptp_ocp_register_spi()
1985 start = pci_resource_start(pdev, 0) + r->offset; in ptp_ocp_i2c_bus()
1986 res[0] = DEFINE_RES_MEM(start, r->size); in ptp_ocp_i2c_bus()
2008 clk = clk_hw_register_fixed_rate(&pdev->dev, buf, NULL, 0, in ptp_ocp_register_i2c()
2022 return 0; in ptp_ocp_register_i2c()
2042 iowrite32(0, ®->intr_mask); in ptp_ocp_signal_irq()
2043 iowrite32(0, ®->enable); in ptp_ocp_signal_irq()
2047 iowrite32(0, ®->intr); /* ack interrupt */ in ptp_ocp_signal_irq()
2061 return 0; in ptp_ocp_signal_set()
2089 return 0; in ptp_ocp_signal_set()
2105 return 0; in ptp_ocp_signal_from_perout()
2131 iowrite32(0, ®->intr_mask); in ptp_ocp_signal_enable()
2132 iowrite32(0, ®->enable); in ptp_ocp_signal_enable()
2135 return 0; in ptp_ocp_signal_enable()
2150 iowrite32(0, ®->repeat_count); in ptp_ocp_signal_enable()
2152 iowrite32(0, ®->intr); /* clear interrupt state */ in ptp_ocp_signal_enable()
2158 return 0; in ptp_ocp_signal_enable()
2175 if ((ext->bp->pps_req_map & ~OCP_REQ_PPS) == 0) in ptp_ocp_ts_irq()
2211 if ((!!old_map ^ !!bp->pps_req_map) == 0) in ptp_ocp_ts_enable()
2212 return 0; in ptp_ocp_ts_enable()
2220 iowrite32(0, ®->intr_mask); in ptp_ocp_ts_enable()
2221 iowrite32(0, ®->enable); in ptp_ocp_ts_enable()
2224 return 0; in ptp_ocp_ts_enable()
2230 ext->info->enable(ext, ~0, false); in ptp_ocp_unregister_ext()
2265 return 0; in ptp_ocp_register_ext()
2281 memset(&uart, 0, sizeof(uart)); in ptp_ocp_serial_line()
2285 uart.port.mapbase = pci_resource_start(pdev, 0) + r->offset; in ptp_ocp_serial_line()
2301 if (port.line < 0) in ptp_ocp_register_serial()
2309 return 0; in ptp_ocp_register_serial()
2323 return 0; in ptp_ocp_register_mem()
2332 iowrite32(0, &bp->nmea_out->ctrl); /* disable */ in ptp_ocp_nmea_out_init()
2342 iowrite32(0, ®->enable); /* disable */ in _ptp_ocp_signal_init()
2354 for (i = 0; i < 4; i++) in ptp_ocp_signal_init()
2374 count = 0; in ptp_ocp_attr_group_add()
2375 for (i = 0; attr_tbl[i].cap; i++) in ptp_ocp_attr_group_add()
2384 count = 0; in ptp_ocp_attr_group_add()
2385 for (i = 0; attr_tbl[i].cap; i++) in ptp_ocp_attr_group_add()
2391 bp->attr_group[0] = NULL; in ptp_ocp_attr_group_add()
2406 ctrl |= enable ? bit : 0; in ptp_ocp_enable_fpga()
2442 ptp_ocp_irig_out(bp, val & 0x00100010); in __handle_signal_outputs()
2443 ptp_ocp_dcf_out(bp, val & 0x00200020); in __handle_signal_outputs()
2449 ptp_ocp_irig_in(bp, val & 0x00100010); in __handle_signal_inputs()
2450 ptp_ocp_dcf_in(bp, val & 0x00200020); in __handle_signal_inputs()
2466 shift = sma_nr & 1 ? 0 : 16; in ptp_ocp_sma_fb_get()
2468 return (ioread32(gpio) >> shift) & 0xffff; in ptp_ocp_sma_fb_get()
2479 shift = sma_nr & 1 ? 0 : 16; in ptp_ocp_sma_fb_set_output()
2481 mask = 0xffff << (16 - shift); in ptp_ocp_sma_fb_set_output()
2494 return 0; in ptp_ocp_sma_fb_set_output()
2505 shift = sma_nr & 1 ? 0 : 16; in ptp_ocp_sma_fb_set_inputs()
2507 mask = 0xffff << (16 - shift); in ptp_ocp_sma_fb_set_inputs()
2520 return 0; in ptp_ocp_sma_fb_set_inputs()
2538 for (i = 0; i < OCP_SMA_NUM; i++) { in ptp_ocp_sma_fb_init()
2544 bp->sma[0].mode = SMA_MODE_IN; in ptp_ocp_sma_fb_init()
2550 for (i = 0; i < OCP_SMA_NUM; i++) { in ptp_ocp_sma_fb_init()
2563 if (reg == 0xffffffff) { in ptp_ocp_sma_fb_init()
2564 for (i = 0; i < OCP_SMA_NUM; i++) in ptp_ocp_sma_fb_init()
2568 bp->sma[0].mode = reg & BIT(15) ? SMA_MODE_IN : SMA_MODE_OUT; in ptp_ocp_sma_fb_init()
2593 shift = sma_nr & 1 ? 0 : 16; in ptp_ocp_sma_adva_set_output()
2595 mask = 0xffff << (16 - shift); in ptp_ocp_sma_adva_set_output()
2606 return 0; in ptp_ocp_sma_adva_set_output()
2617 shift = sma_nr & 1 ? 0 : 16; in ptp_ocp_sma_adva_set_inputs()
2619 mask = 0xffff << (16 - shift); in ptp_ocp_sma_adva_set_inputs()
2630 return 0; in ptp_ocp_sma_adva_set_inputs()
2651 for (i = 0; i < 4; i++) { in ptp_ocp_set_pins()
2659 return 0; in ptp_ocp_set_pins()
2671 if ((version & 0xffff) == 0) { in ptp_ocp_fb_set_version()
2677 bp->fw_version = version & 0x7fff; in ptp_ocp_fb_set_version()
2740 int err = 0; in ptp_ocp_register_resources()
2763 .capabilities = 0, in ptp_ocp_art_sma_init()
2772 bp->sma[0].mode = SMA_MODE_IN; in ptp_ocp_art_sma_init()
2777 bp->sma[0].default_fcn = 0x08; /* IN: 10Mhz */ in ptp_ocp_art_sma_init()
2778 bp->sma[1].default_fcn = 0x01; /* IN: PPS1 */ in ptp_ocp_art_sma_init()
2779 bp->sma[2].default_fcn = 0x10; /* OUT: 10Mhz */ in ptp_ocp_art_sma_init()
2780 bp->sma[3].default_fcn = 0x02; /* OUT: PHC */ in ptp_ocp_art_sma_init()
2782 for (i = 0; i < OCP_SMA_NUM; i++) { in ptp_ocp_art_sma_init()
2794 switch (reg & 0xff) { in ptp_ocp_art_sma_init()
2795 case 0: in ptp_ocp_art_sma_init()
2820 return ioread32(&bp->art_sma->map[sma_nr - 1].gpio) & 0xff; in ptp_ocp_art_sma_get()
2823 /* note: store 0 is considered invalid. */
2829 int err = 0; in ptp_ocp_art_sma_set()
2840 if (((reg >> 16) & val) == 0) { in ptp_ocp_art_sma_set()
2843 reg = (reg & 0xff00) | (val & 0xff); in ptp_ocp_art_sma_set()
2865 bp->flash_start = 0x1000000; in ptp_ocp_art_board_init()
2896 bp->flash_start = 0xA00000; in ptp_ocp_adva_board_init()
2904 if ((version & 0xffff) == 0) { in ptp_ocp_adva_board_init()
2909 bp->fw_version = version & 0xffff; in ptp_ocp_adva_board_init()
2952 for (i = 0; tbl[i].name; i++) { in ptp_ocp_show_inputs()
2958 if (!val && def_val >= 0) { in ptp_ocp_show_inputs()
2984 idx = 0; in sma_parse_inputs()
2985 dir = *mode == SMA_MODE_IN ? 0 : 1; in sma_parse_inputs()
2986 if (!strcasecmp("IN:", argv[0])) { in sma_parse_inputs()
2987 dir = 0; in sma_parse_inputs()
2990 if (!strcasecmp("OUT:", argv[0])) { in sma_parse_inputs()
2994 *mode = dir == 0 ? SMA_MODE_IN : SMA_MODE_OUT; in sma_parse_inputs()
2996 ret = 0; in sma_parse_inputs()
2999 if (ret < 0) in sma_parse_inputs()
3021 return ptp_ocp_show_inputs(tbl[0], val, buf, default_in_val); in ptp_ocp_sma_show()
3032 return ptp_ocp_sma_show(bp, 1, buf, 0, 1); in sma1_show()
3048 return ptp_ocp_sma_show(bp, 3, buf, -1, 0); in sma3_show()
3070 return 0; in ptp_ocp_sma_store_val()
3077 ptp_ocp_sma_set_output(bp, sma_nr, 0); in ptp_ocp_sma_store_val()
3079 ptp_ocp_sma_set_inputs(bp, sma_nr, 0); in ptp_ocp_sma_store_val()
3087 val = 0; in ptp_ocp_sma_store_val()
3106 if (val < 0) in ptp_ocp_sma_store()
3165 return ptp_ocp_select_table_show(bp->sma_op->tbl[0], buf); in available_sma_inputs_show()
3218 err = kstrtou64(argv[argc], 0, &s.phase); in signal_store()
3224 err = kstrtoint(argv[argc], 0, &s.duty); in signal_store()
3230 err = kstrtou64(argv[argc], 0, &s.period); in signal_store()
3242 err = ptp_ocp_signal_enable(bp->signal_out[gen], gen, s.period != 0); in signal_store()
3270 static EXT_ATTR_RW(signal, signal, 0);
3284 static EXT_ATTR_RO(signal, duty, 0);
3298 static EXT_ATTR_RO(signal, period, 0);
3312 static EXT_ATTR_RO(signal, phase, 0);
3327 static EXT_ATTR_RO(signal, polarity, 0);
3341 static EXT_ATTR_RO(signal, running, 0);
3357 static EXT_ATTR_RO(signal, start, 0);
3372 err = kstrtou32(buf, 0, &val); in seconds_store()
3375 if (val > 0xff) in seconds_store()
3379 val = (val << 8) | 0x1; in seconds_store()
3396 val = (val >> 8) & 0xff; in seconds_show()
3398 val = 0; in seconds_show()
3402 static EXT_ATTR_RW(freq, seconds, 0);
3422 return 0; in frequency_show()
3424 static EXT_ATTR_RO(freq, frequency, 0);
3452 return port->line == -1 ? 0 : 0444; in ptp_ocp_timecard_tty_is_visible()
3522 err = kstrtou32(buf, 0, &val); in utc_tai_offset_store()
3550 err = kstrtou32(buf, 0, &val); in ts_window_adjust_store()
3567 val = (val >> 16) & 0x07; in irig_b_mode_show()
3582 err = kstrtou8(buf, 0, &val); in irig_b_mode_store()
3588 reg = ((val & 0x7) << 16); in irig_b_mode_store()
3591 iowrite32(0, &bp->irig_out->ctrl); /* disable */ in irig_b_mode_store()
3622 if (val < 0) in clock_source_store()
3692 u32 val = 0; in tod_correction_store()
3694 err = kstrtos32(buf, 0, &res); in tod_correction_store()
3697 if (res < 0) { in tod_correction_store()
3731 DEVICE_SIGNAL_GROUP(gen1, 0);
3751 DEVICE_FREQ_GROUP(freq1, 0);
3771 err = 0; in disciplining_config_read()
3808 err = nvmem_device_write(nvmem, 0x00, count, buf); in disciplining_config_write()
3833 err = 0; in temperature_table_read()
3841 err = nvmem_device_read(nvmem, 0x90 + off, count, buf); in temperature_table_read()
3870 err = nvmem_device_write(nvmem, 0x90, count, buf); in temperature_table_write()
3988 for (i = 0; i < 4; i++) { in gpio_input_map()
3991 if (map[i][0] & (1 << bit)) { in gpio_input_map()
4008 for (i = 0; i < 4; i++) { in gpio_output_map()
4054 val = (val >> 8) & 0xff; in _frequency_summary_show()
4091 for (i = 0; i < __PORT_COUNT; i++) { in ptp_ocp_summary_show()
4097 memset(sma_val, 0xff, sizeof(sma_val)); in ptp_ocp_summary_show()
4102 sma_val[0][0] = reg & 0xffff; in ptp_ocp_summary_show()
4103 sma_val[1][0] = reg >> 16; in ptp_ocp_summary_show()
4106 sma_val[2][1] = reg & 0xffff; in ptp_ocp_summary_show()
4110 sma_val[2][0] = reg & 0xffff; in ptp_ocp_summary_show()
4111 sma_val[3][0] = reg >> 16; in ptp_ocp_summary_show()
4114 sma_val[0][1] = reg & 0xffff; in ptp_ocp_summary_show()
4120 sma_val[0][0], sma_val[0][1], buf); in ptp_ocp_summary_show()
4124 sma_val[1][0], sma_val[1][1], buf); in ptp_ocp_summary_show()
4128 sma_val[2][0], sma_val[2][1], buf); in ptp_ocp_summary_show()
4132 sma_val[3][0], sma_val[3][1], buf); in ptp_ocp_summary_show()
4188 for (i = 0; i < bp->signals_nr; i++) in ptp_ocp_summary_show()
4192 for (i = 0; i < bp->freq_in_nr; i++) in ptp_ocp_summary_show()
4240 if (val & 0x01) { in ptp_ocp_summary_show()
4241 gpio_input_map(src, bp, sma_val, 0, NULL); in ptp_ocp_summary_show()
4243 } else if (val & 0x02) { in ptp_ocp_summary_show()
4245 } else if (val & 0x04) { in ptp_ocp_summary_show()
4263 case 0: in ptp_ocp_summary_show()
4303 return 0; in ptp_ocp_summary_show()
4320 return 0; in ptp_ocp_tod_status_show()
4322 seq_printf(s, "TOD Slave enabled, Control Register 0x%08X\n", val); in ptp_ocp_tod_status_show()
4324 idx = val & TOD_CTRL_PROTOCOL ? 4 : 0; in ptp_ocp_tod_status_show()
4333 val >> 24, (val >> 16) & 0xff, val & 0xffff); in ptp_ocp_tod_status_show()
4336 seq_printf(s, "Status register: 0x%08X\n", val); in ptp_ocp_tod_status_show()
4344 seq_printf(s, "UTC status register: 0x%08X\n", val); in ptp_ocp_tod_status_show()
4346 val & TOD_STATUS_UTC_MASK, val & TOD_STATUS_UTC_VALID ? 1 : 0); in ptp_ocp_tod_status_show()
4348 val & TOD_STATUS_LEAP_VALID ? 1 : 0, in ptp_ocp_tod_status_show()
4349 val & TOD_STATUS_LEAP_ANNOUNCE ? 1 : 0); in ptp_ocp_tod_status_show()
4354 return 0; in ptp_ocp_tod_status_show()
4408 err = idr_alloc(&ptp_ocp_idr, bp, 0, 0, GFP_KERNEL); in ptp_ocp_device_init()
4410 if (err < 0) { in ptp_ocp_device_init()
4419 for (i = 0; i < __PORT_COUNT; i++) in ptp_ocp_device_init()
4439 return 0; in ptp_ocp_device_init()
4487 return 0; in ptp_ocp_complete()
4499 version >> 24, (version >> 16) & 0xff, version & 0xffff, in ptp_ocp_phc_info()
4530 for (i = 0; i < __PORT_COUNT; i++) { in ptp_ocp_info()
4574 for (i = 0; i < 4; i++) in ptp_ocp_detach()
4577 for (i = 0; i < __PORT_COUNT; i++) in ptp_ocp_detach()
4602 return 0; in ptp_ocp_dpll_lock_status_get()
4617 return 0; in ptp_ocp_dpll_state_get()
4627 return 0; in ptp_ocp_dpll_mode_get()
4642 return 0; in ptp_ocp_dpll_direction_get()
4661 return ptp_ocp_sma_store_val(bp, 0, mode, sma_nr + 1); in ptp_ocp_dpll_direction_set()
4680 for (i = 0; tbl[i].name; i++) in ptp_ocp_dpll_frequency_set()
4701 for (i = 0; tbl[i].name; i++) in ptp_ocp_dpll_frequency_get()
4704 return 0; in ptp_ocp_dpll_frequency_get()
4773 if (err < 0) { in ptp_ocp_probe()
4800 bp->dpll = dpll_device_get(clkid, 0, THIS_MODULE); in ptp_ocp_probe()
4811 for (i = 0; i < OCP_SMA_NUM; i++) { in ptp_ocp_probe()
4827 return 0; in ptp_ocp_probe()
4852 for (i = 0; i < OCP_SMA_NUM; i++) { in ptp_ocp_remove()
4888 return 0; in ptp_ocp_i2c_notifier_call()
4892 return 0; in ptp_ocp_i2c_notifier_call()
4898 return 0; in ptp_ocp_i2c_notifier_call()
4907 return 0; in ptp_ocp_i2c_notifier_call()
4937 return 0; in ptp_ocp_init()