SD-FEC statistic data are: - count of data interface errors (isr_err_count) - count of Correctable ECC errors (cecc_count) - count of Uncorrectable ECC errors (uecc_count) Add support: 1. clear stats ioctl callback which clears collected statistic data, 2. get stats ioctl callback which reads a collected statistic data, 3. set default configuration ioctl callback, 4. start ioctl callback enables SD-FEC HW, 5. stop ioctl callback disables SD-FEC HW. In a failed state driver enables the following ioctls: - get status - get statistics - clear stats - set default SD-FEC device configuration
Showing the changes to include/uapi (1 of 2 files). Show all
Unified · Split
| @@ -233,6 +233,21 @@ struct xsdfec_config { · 232 unmodified lines | |||
| 233 | __s8 code_wr_protect; | 233 | __s8 code_wr_protect; |
| 234 | }; | 234 | }; |
| 235 | 235 | ||
| 236 | /** | ||
| 237 | * struct xsdfec_stats - Stats retrived by ioctl XSDFEC_GET_STATS. Used | ||
| 238 | * to buffer atomic_t variables from struct | ||
| 239 | * xsdfec_dev. Counts are accumulated until | ||
| 240 | * the user clears them. | ||
| 241 | * @isr_err_count: Count of ISR errors | ||
| 242 | * @cecc_count: Count of Correctable ECC errors (SBE) | ||
| 243 | * @uecc_count: Count of Uncorrectable ECC errors (MBE) | ||
| 244 | */ | ||
| 245 | struct xsdfec_stats { | ||
| 246 | __u32 isr_err_count; | ||
| 247 | __u32 cecc_count; | ||
| 248 | __u32 uecc_count; | ||
| 249 | }; | ||
| 250 | |||
| 236 | /** | 251 | /** |
| 237 | * struct xsdfec_ldpc_param_table_sizes - Used to store sizes of SD-FEC table | 252 | * struct xsdfec_ldpc_param_table_sizes - Used to store sizes of SD-FEC table |
| 238 | * entries for an individual LPDC code | 253 | * entries for an individual LPDC code |
| @@ -251,6 +266,32 @@ struct xsdfec_ldpc_param_table_sizes { · 12 unmodified lines | |||
| 251 | * XSDFEC IOCTL List | 266 | * XSDFEC IOCTL List |
| 252 | */ | 267 | */ |
| 253 | #define XSDFEC_MAGIC 'f' | 268 | #define XSDFEC_MAGIC 'f' |
| 269 | /** | ||
| 270 | * DOC: XSDFEC_START_DEV | ||
| 271 | * | ||
| 272 | * @Description | ||
| 273 | * | ||
| 274 | * ioctl to start SD-FEC core | ||
| 275 | * | ||
| 276 | * This fails if the XSDFEC_SET_ORDER ioctl has not been previously called | ||
| 277 | */ | ||
| 278 | #define XSDFEC_START_DEV _IO(XSDFEC_MAGIC, 0) | ||
| 279 | /** | ||
| 280 | * DOC: XSDFEC_STOP_DEV | ||
| 281 | * | ||
| 282 | * @Description | ||
| 283 | * | ||
| 284 | * ioctl to stop the SD-FEC core | ||
| 285 | */ | ||
| 286 | #define XSDFEC_STOP_DEV _IO(XSDFEC_MAGIC, 1) | ||
| 287 | /** | ||
| 288 | * DOC: XSDFEC_GET_STATUS | ||
| 289 | * | ||
| 290 | * @Description | ||
| 291 | * | ||
| 292 | * ioctl that returns status of SD-FEC core | ||
| 293 | */ | ||
| 294 | #define XSDFEC_GET_STATUS _IOR(XSDFEC_MAGIC, 2, struct xsdfec_status) | ||
| 254 | /** | 295 | /** |
| 255 | * DOC: XSDFEC_SET_IRQ | 296 | * DOC: XSDFEC_SET_IRQ |
| 256 | * @Parameters | 297 | * @Parameters |
| @@ -370,4 +411,38 @@ struct xsdfec_ldpc_param_table_sizes { · 113 unmodified lines | |||
| 370 | * ioctl that determines if SD-FEC is processing data | 411 | * ioctl that determines if SD-FEC is processing data |
| 371 | */ | 412 | */ |
| 372 | #define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 10, bool) | 413 | #define XSDFEC_IS_ACTIVE _IOR(XSDFEC_MAGIC, 10, bool) |
| 414 | /** | ||
| 415 | * DOC: XSDFEC_CLEAR_STATS | ||
| 416 | * | ||
| 417 | * @Description | ||
| 418 | * | ||
| 419 | * ioctl that clears error stats collected during interrupts | ||
| 420 | */ | ||
| 421 | #define XSDFEC_CLEAR_STATS _IO(XSDFEC_MAGIC, 11) | ||
| 422 | /** | ||
| 423 | * DOC: XSDFEC_GET_STATS | ||
| 424 | * @Parameters | ||
| 425 | * | ||
| 426 | * @struct xsdfec_stats * | ||
| 427 | * Pointer to the &struct xsdfec_stats that will contain the updated stats | ||
| 428 | * values | ||
| 429 | * | ||
| 430 | * @Description | ||
| 431 | * | ||
| 432 | * ioctl that returns SD-FEC core stats | ||
| 433 | * | ||
| 434 | * This can only be used when the driver is in the XSDFEC_STOPPED state | ||
| 435 | */ | ||
| 436 | #define XSDFEC_GET_STATS _IOR(XSDFEC_MAGIC, 12, struct xsdfec_stats) | ||
| 437 | /** | ||
| 438 | * DOC: XSDFEC_SET_DEFAULT_CONFIG | ||
| 439 | * | ||
| 440 | * @Description | ||
| 441 | * | ||
| 442 | * ioctl that returns SD-FEC core to default config, use after a reset | ||
| 443 | * | ||
| 444 | * This can only be used when the driver is in the XSDFEC_STOPPED state | ||
| 445 | */ | ||
| 446 | #define XSDFEC_SET_DEFAULT_CONFIG _IO(XSDFEC_MAGIC, 13) | ||
| 447 | |||
| 373 | #endif /* __XILINX_SDFEC_H__ */ | 448 | #endif /* __XILINX_SDFEC_H__ */ |