Re: [PATCH v4] rfim: add new test for verifying RFIM sysfs interface

Andrea Cervesato via ltp <[email protected]>
Newsgroups gmane.linux.ltp
Message-ID <[email protected]>
Hi Piotr,

> +#include "tst_test.h"
> +
> +#define RFIM_ROOT "/sys/bus/pci/devices/0000:00:04.0"
> +
> +static bool have_dvfs, have_fivr, have_dlvr;
> +
> +static const char * const fivr_nodes[] = {
> +	RFIM_ROOT "/fivr/vco_ref_code_lo",
> +	RFIM_ROOT "/fivr/vco_ref_code_hi",
> +	RFIM_ROOT "/fivr/spread_spectrum_pct",
> +	RFIM_ROOT "/fivr/spread_spectrum_clk_enable",
> +	RFIM_ROOT "/fivr/rfi_vco_ref_code",
> +	RFIM_ROOT "/fivr/fivr_fffc_rev",
> +	NULL
> +};
> +
> +static const char * const ro_dvfs_nodes[] = {
> +	RFIM_ROOT "/dvfs/ddr_data_rate_point_0",
> +	RFIM_ROOT "/dvfs/ddr_data_rate_point_1",
> +	RFIM_ROOT "/dvfs/ddr_data_rate_point_2",
> +	RFIM_ROOT "/dvfs/ddr_data_rate_point_3",
> +	RFIM_ROOT "/dvfs/ddr_data_rate",
> +	NULL
> +};
> +
> +static const char * const ro_dlvr_nodes[] = {
> +	RFIM_ROOT "/dlvr/dlvr_hardware_rev",
> +	RFIM_ROOT "/dlvr/dlvr_freq_mhz",
> +	RFIM_ROOT "/dlvr/dlvr_pll_busy",
> +	NULL
> +};
> +
> +static const char * const rw_dlvr_nodes[] = {
> +	RFIM_ROOT "/dlvr/dlvr_freq_select",
> +	RFIM_ROOT "/dlvr/dlvr_rfim_enable",
> +	RFIM_ROOT "/dlvr/dlvr_spread_spectrum_pct",
> +	RFIM_ROOT "/dlvr/dlvr_control_mode",
> +	RFIM_ROOT "/dlvr/dlvr_control_lock",
> +	NULL
> +};
> +
> +static const char * const rw_dvfs_nodes[] = {
> +	RFIM_ROOT "/dvfs/rfi_restriction_run_busy",
> +	RFIM_ROOT "/dvfs/rfi_restriction_err_code",
> +	RFIM_ROOT "/dvfs/rfi_restriction_data_rate_base",
> +	RFIM_ROOT "/dvfs/rfi_restriction_data_rate",
> +	RFIM_ROOT "/dvfs/rfi_restriction",
> +	RFIM_ROOT "/dvfs/rfi_disable",
> +	NULL
> +};

I was thinking that we can make it easier now. Instead of verifying
RW on different functions, we can simply create a .tcase structure
where we assign to each sysfs patch a specific read or write flag.
And according to that, we simply make a check inside the run()
function.

static struct tcase {
	const char *path;
  int read;
  int write;
} tcases[] = {
  ...
};

static run(unsigned int i)
{
	static struct *tc = &tcases[i];

  if (tc->read && !tc->write) {
    /* open with read -> pass */
    /* open with write -> fail */
  } else if (!tc->read && tc->write) {
    /* open with read -> fail */
    /* open with write -> pass */
  } else if (tc->read && tc->write) {
    /* open with read/write -> pass */
  } else {
    /* TBROK */
  }
}

Something like this. Feel free to optimize it, it's just a draft.

Regards,
--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato-IBi9RG/[email protected]

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.