public inbox for llvm@lists.linux.dev
 help / color / mirror / Atom feed
* [rw-misc:omap_debugfs_v1 2/4] drivers/base/regmap/regmap.c:700:7: error: no member named 'debugfs_disable' in 'struct regmap'
@ 2025-11-30 22:51 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2025-11-30 22:51 UTC (permalink / raw)
  To: Richard Weinberger; +Cc: llvm, oe-kbuild-all

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/rw/misc.git omap_debugfs_v1
head:   f4327f002373895988de39ed7412557eb00f32de
commit: 0faa34f64f7a0f3792e34721e8c807652946f054 [2/4] regmap: Allow disabling debugfs via regmap_config
config: loongarch-randconfig-002-20251201 (https://download.01.org/0day-ci/archive/20251201/202512010643.wu0PeBNB-lkp@intel.com/config)
compiler: clang version 18.1.8 (https://github.com/llvm/llvm-project 3b5b5c1ec4a3095ab096dd780e84d7ab81f3d7ff)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251201/202512010643.wu0PeBNB-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202512010643.wu0PeBNB-lkp@intel.com/

All errors (new ones prefixed by >>):

>> drivers/base/regmap/regmap.c:700:7: error: no member named 'debugfs_disable' in 'struct regmap'
     700 |         map->debugfs_disable = config->debugfs_disable;
         |         ~~~  ^
   1 error generated.


vim +700 drivers/base/regmap/regmap.c

   674	
   675	struct regmap *__regmap_init(struct device *dev,
   676				     const struct regmap_bus *bus,
   677				     void *bus_context,
   678				     const struct regmap_config *config,
   679				     struct lock_class_key *lock_key,
   680				     const char *lock_name)
   681	{
   682		struct regmap *map;
   683		int ret = -EINVAL;
   684		enum regmap_endian reg_endian, val_endian;
   685		int i, j;
   686	
   687		if (!config)
   688			goto err;
   689	
   690		map = kzalloc(sizeof(*map), GFP_KERNEL);
   691		if (map == NULL) {
   692			ret = -ENOMEM;
   693			goto err;
   694		}
   695	
   696		ret = regmap_set_name(map, config);
   697		if (ret)
   698			goto err_map;
   699	
 > 700		map->debugfs_disable = config->debugfs_disable;
   701	
   702		ret = -EINVAL; /* Later error paths rely on this */
   703	
   704		if (config->disable_locking) {
   705			map->lock = map->unlock = regmap_lock_unlock_none;
   706			map->can_sleep = config->can_sleep;
   707			regmap_debugfs_disable(map);
   708		} else if (config->lock && config->unlock) {
   709			map->lock = config->lock;
   710			map->unlock = config->unlock;
   711			map->lock_arg = config->lock_arg;
   712			map->can_sleep = config->can_sleep;
   713		} else if (config->use_hwlock) {
   714			map->hwlock = hwspin_lock_request_specific(config->hwlock_id);
   715			if (!map->hwlock) {
   716				ret = -ENXIO;
   717				goto err_name;
   718			}
   719	
   720			switch (config->hwlock_mode) {
   721			case HWLOCK_IRQSTATE:
   722				map->lock = regmap_lock_hwlock_irqsave;
   723				map->unlock = regmap_unlock_hwlock_irqrestore;
   724				break;
   725			case HWLOCK_IRQ:
   726				map->lock = regmap_lock_hwlock_irq;
   727				map->unlock = regmap_unlock_hwlock_irq;
   728				break;
   729			default:
   730				map->lock = regmap_lock_hwlock;
   731				map->unlock = regmap_unlock_hwlock;
   732				break;
   733			}
   734	
   735			map->lock_arg = map;
   736		} else {
   737			if ((bus && bus->fast_io) ||
   738			    config->fast_io) {
   739				if (config->use_raw_spinlock) {
   740					raw_spin_lock_init(&map->raw_spinlock);
   741					map->lock = regmap_lock_raw_spinlock;
   742					map->unlock = regmap_unlock_raw_spinlock;
   743					lockdep_set_class_and_name(&map->raw_spinlock,
   744								   lock_key, lock_name);
   745				} else {
   746					spin_lock_init(&map->spinlock);
   747					map->lock = regmap_lock_spinlock;
   748					map->unlock = regmap_unlock_spinlock;
   749					lockdep_set_class_and_name(&map->spinlock,
   750								   lock_key, lock_name);
   751				}
   752			} else {
   753				mutex_init(&map->mutex);
   754				map->lock = regmap_lock_mutex;
   755				map->unlock = regmap_unlock_mutex;
   756				map->can_sleep = true;
   757				lockdep_set_class_and_name(&map->mutex,
   758							   lock_key, lock_name);
   759			}
   760			map->lock_arg = map;
   761			map->lock_key = lock_key;
   762		}
   763	
   764		/*
   765		 * When we write in fast-paths with regmap_bulk_write() don't allocate
   766		 * scratch buffers with sleeping allocations.
   767		 */
   768		if ((bus && bus->fast_io) || config->fast_io)
   769			map->alloc_flags = GFP_ATOMIC;
   770		else
   771			map->alloc_flags = GFP_KERNEL;
   772	
   773		map->reg_base = config->reg_base;
   774		map->reg_shift = config->pad_bits % 8;
   775	
   776		map->format.pad_bytes = config->pad_bits / 8;
   777		map->format.reg_shift = config->reg_shift;
   778		map->format.reg_bytes = BITS_TO_BYTES(config->reg_bits);
   779		map->format.val_bytes = BITS_TO_BYTES(config->val_bits);
   780		map->format.buf_size = BITS_TO_BYTES(config->reg_bits + config->val_bits + config->pad_bits);
   781		if (config->reg_stride)
   782			map->reg_stride = config->reg_stride;
   783		else
   784			map->reg_stride = 1;
   785		if (is_power_of_2(map->reg_stride))
   786			map->reg_stride_order = ilog2(map->reg_stride);
   787		else
   788			map->reg_stride_order = -1;
   789		map->use_single_read = config->use_single_read || !(config->read || (bus && bus->read));
   790		map->use_single_write = config->use_single_write || !(config->write || (bus && bus->write));
   791		map->can_multi_write = config->can_multi_write && (config->write || (bus && bus->write));
   792		if (bus) {
   793			map->max_raw_read = bus->max_raw_read;
   794			map->max_raw_write = bus->max_raw_write;
   795		} else if (config->max_raw_read && config->max_raw_write) {
   796			map->max_raw_read = config->max_raw_read;
   797			map->max_raw_write = config->max_raw_write;
   798		}
   799		map->dev = dev;
   800		map->bus = bus;
   801		map->bus_context = bus_context;
   802		map->max_register = config->max_register;
   803		map->max_register_is_set = map->max_register ?: config->max_register_is_0;
   804		map->wr_table = config->wr_table;
   805		map->rd_table = config->rd_table;
   806		map->volatile_table = config->volatile_table;
   807		map->precious_table = config->precious_table;
   808		map->wr_noinc_table = config->wr_noinc_table;
   809		map->rd_noinc_table = config->rd_noinc_table;
   810		map->writeable_reg = config->writeable_reg;
   811		map->readable_reg = config->readable_reg;
   812		map->volatile_reg = config->volatile_reg;
   813		map->precious_reg = config->precious_reg;
   814		map->writeable_noinc_reg = config->writeable_noinc_reg;
   815		map->readable_noinc_reg = config->readable_noinc_reg;
   816		map->cache_type = config->cache_type;
   817	
   818		spin_lock_init(&map->async_lock);
   819		INIT_LIST_HEAD(&map->async_list);
   820		INIT_LIST_HEAD(&map->async_free);
   821		init_waitqueue_head(&map->async_waitq);
   822	
   823		if (config->read_flag_mask ||
   824		    config->write_flag_mask ||
   825		    config->zero_flag_mask) {
   826			map->read_flag_mask = config->read_flag_mask;
   827			map->write_flag_mask = config->write_flag_mask;
   828		} else if (bus) {
   829			map->read_flag_mask = bus->read_flag_mask;
   830		}
   831	
   832		if (config->read && config->write) {
   833			map->reg_read  = _regmap_bus_read;
   834			if (config->reg_update_bits)
   835				map->reg_update_bits = config->reg_update_bits;
   836	
   837			/* Bulk read/write */
   838			map->read = config->read;
   839			map->write = config->write;
   840	
   841			reg_endian = REGMAP_ENDIAN_NATIVE;
   842			val_endian = REGMAP_ENDIAN_NATIVE;
   843		} else if (!bus) {
   844			map->reg_read  = config->reg_read;
   845			map->reg_write = config->reg_write;
   846			map->reg_update_bits = config->reg_update_bits;
   847	
   848			map->defer_caching = false;
   849			goto skip_format_initialization;
   850		} else if (!bus->read || !bus->write) {
   851			map->reg_read = _regmap_bus_reg_read;
   852			map->reg_write = _regmap_bus_reg_write;
   853			map->reg_update_bits = bus->reg_update_bits;
   854	
   855			map->defer_caching = false;
   856			goto skip_format_initialization;
   857		} else {
   858			map->reg_read  = _regmap_bus_read;
   859			map->reg_update_bits = bus->reg_update_bits;
   860			/* Bulk read/write */
   861			map->read = bus->read;
   862			map->write = bus->write;
   863	
   864			reg_endian = regmap_get_reg_endian(bus, config);
   865			val_endian = regmap_get_val_endian(dev, bus, config);
   866		}
   867	
   868		switch (config->reg_bits + map->reg_shift) {
   869		case 2:
   870			switch (config->val_bits) {
   871			case 6:
   872				map->format.format_write = regmap_format_2_6_write;
   873				break;
   874			default:
   875				goto err_hwlock;
   876			}
   877			break;
   878	
   879		case 4:
   880			switch (config->val_bits) {
   881			case 12:
   882				map->format.format_write = regmap_format_4_12_write;
   883				break;
   884			default:
   885				goto err_hwlock;
   886			}
   887			break;
   888	
   889		case 7:
   890			switch (config->val_bits) {
   891			case 9:
   892				map->format.format_write = regmap_format_7_9_write;
   893				break;
   894			case 17:
   895				map->format.format_write = regmap_format_7_17_write;
   896				break;
   897			default:
   898				goto err_hwlock;
   899			}
   900			break;
   901	
   902		case 10:
   903			switch (config->val_bits) {
   904			case 14:
   905				map->format.format_write = regmap_format_10_14_write;
   906				break;
   907			default:
   908				goto err_hwlock;
   909			}
   910			break;
   911	
   912		case 12:
   913			switch (config->val_bits) {
   914			case 20:
   915				map->format.format_write = regmap_format_12_20_write;
   916				break;
   917			default:
   918				goto err_hwlock;
   919			}
   920			break;
   921	
   922		case 8:
   923			map->format.format_reg = regmap_format_8;
   924			break;
   925	
   926		case 16:
   927			switch (reg_endian) {
   928			case REGMAP_ENDIAN_BIG:
   929				map->format.format_reg = regmap_format_16_be;
   930				break;
   931			case REGMAP_ENDIAN_LITTLE:
   932				map->format.format_reg = regmap_format_16_le;
   933				break;
   934			case REGMAP_ENDIAN_NATIVE:
   935				map->format.format_reg = regmap_format_16_native;
   936				break;
   937			default:
   938				goto err_hwlock;
   939			}
   940			break;
   941	
   942		case 24:
   943			switch (reg_endian) {
   944			case REGMAP_ENDIAN_BIG:
   945				map->format.format_reg = regmap_format_24_be;
   946				break;
   947			default:
   948				goto err_hwlock;
   949			}
   950			break;
   951	
   952		case 32:
   953			switch (reg_endian) {
   954			case REGMAP_ENDIAN_BIG:
   955				map->format.format_reg = regmap_format_32_be;
   956				break;
   957			case REGMAP_ENDIAN_LITTLE:
   958				map->format.format_reg = regmap_format_32_le;
   959				break;
   960			case REGMAP_ENDIAN_NATIVE:
   961				map->format.format_reg = regmap_format_32_native;
   962				break;
   963			default:
   964				goto err_hwlock;
   965			}
   966			break;
   967	
   968		default:
   969			goto err_hwlock;
   970		}
   971	
   972		if (val_endian == REGMAP_ENDIAN_NATIVE)
   973			map->format.parse_inplace = regmap_parse_inplace_noop;
   974	
   975		switch (config->val_bits) {
   976		case 8:
   977			map->format.format_val = regmap_format_8;
   978			map->format.parse_val = regmap_parse_8;
   979			map->format.parse_inplace = regmap_parse_inplace_noop;
   980			break;
   981		case 16:
   982			switch (val_endian) {
   983			case REGMAP_ENDIAN_BIG:
   984				map->format.format_val = regmap_format_16_be;
   985				map->format.parse_val = regmap_parse_16_be;
   986				map->format.parse_inplace = regmap_parse_16_be_inplace;
   987				break;
   988			case REGMAP_ENDIAN_LITTLE:
   989				map->format.format_val = regmap_format_16_le;
   990				map->format.parse_val = regmap_parse_16_le;
   991				map->format.parse_inplace = regmap_parse_16_le_inplace;
   992				break;
   993			case REGMAP_ENDIAN_NATIVE:
   994				map->format.format_val = regmap_format_16_native;
   995				map->format.parse_val = regmap_parse_16_native;
   996				break;
   997			default:
   998				goto err_hwlock;
   999			}
  1000			break;
  1001		case 24:
  1002			switch (val_endian) {
  1003			case REGMAP_ENDIAN_BIG:
  1004				map->format.format_val = regmap_format_24_be;
  1005				map->format.parse_val = regmap_parse_24_be;
  1006				break;
  1007			default:
  1008				goto err_hwlock;
  1009			}
  1010			break;
  1011		case 32:
  1012			switch (val_endian) {
  1013			case REGMAP_ENDIAN_BIG:
  1014				map->format.format_val = regmap_format_32_be;
  1015				map->format.parse_val = regmap_parse_32_be;
  1016				map->format.parse_inplace = regmap_parse_32_be_inplace;
  1017				break;
  1018			case REGMAP_ENDIAN_LITTLE:
  1019				map->format.format_val = regmap_format_32_le;
  1020				map->format.parse_val = regmap_parse_32_le;
  1021				map->format.parse_inplace = regmap_parse_32_le_inplace;
  1022				break;
  1023			case REGMAP_ENDIAN_NATIVE:
  1024				map->format.format_val = regmap_format_32_native;
  1025				map->format.parse_val = regmap_parse_32_native;
  1026				break;
  1027			default:
  1028				goto err_hwlock;
  1029			}
  1030			break;
  1031		}
  1032	
  1033		if (map->format.format_write) {
  1034			if ((reg_endian != REGMAP_ENDIAN_BIG) ||
  1035			    (val_endian != REGMAP_ENDIAN_BIG))
  1036				goto err_hwlock;
  1037			map->use_single_write = true;
  1038		}
  1039	
  1040		if (!map->format.format_write &&
  1041		    !(map->format.format_reg && map->format.format_val))
  1042			goto err_hwlock;
  1043	
  1044		map->work_buf = kzalloc(map->format.buf_size, GFP_KERNEL);
  1045		if (map->work_buf == NULL) {
  1046			ret = -ENOMEM;
  1047			goto err_hwlock;
  1048		}
  1049	
  1050		if (map->format.format_write) {
  1051			map->defer_caching = false;
  1052			map->reg_write = _regmap_bus_formatted_write;
  1053		} else if (map->format.format_val) {
  1054			map->defer_caching = true;
  1055			map->reg_write = _regmap_bus_raw_write;
  1056		}
  1057	
  1058	skip_format_initialization:
  1059	
  1060		map->range_tree = RB_ROOT;
  1061		for (i = 0; i < config->num_ranges; i++) {
  1062			const struct regmap_range_cfg *range_cfg = &config->ranges[i];
  1063			struct regmap_range_node *new;
  1064	
  1065			/* Sanity check */
  1066			if (range_cfg->range_max < range_cfg->range_min) {
  1067				dev_err(map->dev, "Invalid range %d: %u < %u\n", i,
  1068					range_cfg->range_max, range_cfg->range_min);
  1069				goto err_range;
  1070			}
  1071	
  1072			if (range_cfg->range_max > map->max_register) {
  1073				dev_err(map->dev, "Invalid range %d: %u > %u\n", i,
  1074					range_cfg->range_max, map->max_register);
  1075				goto err_range;
  1076			}
  1077	
  1078			if (range_cfg->selector_reg > map->max_register) {
  1079				dev_err(map->dev,
  1080					"Invalid range %d: selector out of map\n", i);
  1081				goto err_range;
  1082			}
  1083	
  1084			if (range_cfg->window_len == 0) {
  1085				dev_err(map->dev, "Invalid range %d: window_len 0\n",
  1086					i);
  1087				goto err_range;
  1088			}
  1089	
  1090			/* Make sure, that this register range has no selector
  1091			   or data window within its boundary */
  1092			for (j = 0; j < config->num_ranges; j++) {
  1093				unsigned int sel_reg = config->ranges[j].selector_reg;
  1094				unsigned int win_min = config->ranges[j].window_start;
  1095				unsigned int win_max = win_min +
  1096						       config->ranges[j].window_len - 1;
  1097	
  1098				/* Allow data window inside its own virtual range */
  1099				if (j == i)
  1100					continue;
  1101	
  1102				if (range_cfg->range_min <= sel_reg &&
  1103				    sel_reg <= range_cfg->range_max) {
  1104					dev_err(map->dev,
  1105						"Range %d: selector for %d in window\n",
  1106						i, j);
  1107					goto err_range;
  1108				}
  1109	
  1110				if (!(win_max < range_cfg->range_min ||
  1111				      win_min > range_cfg->range_max)) {
  1112					dev_err(map->dev,
  1113						"Range %d: window for %d in window\n",
  1114						i, j);
  1115					goto err_range;
  1116				}
  1117			}
  1118	
  1119			new = kzalloc(sizeof(*new), GFP_KERNEL);
  1120			if (new == NULL) {
  1121				ret = -ENOMEM;
  1122				goto err_range;
  1123			}
  1124	
  1125			new->map = map;
  1126			new->name = range_cfg->name;
  1127			new->range_min = range_cfg->range_min;
  1128			new->range_max = range_cfg->range_max;
  1129			new->selector_reg = range_cfg->selector_reg;
  1130			new->selector_mask = range_cfg->selector_mask;
  1131			new->selector_shift = range_cfg->selector_shift;
  1132			new->window_start = range_cfg->window_start;
  1133			new->window_len = range_cfg->window_len;
  1134	
  1135			if (!_regmap_range_add(map, new)) {
  1136				dev_err(map->dev, "Failed to add range %d\n", i);
  1137				kfree(new);
  1138				goto err_range;
  1139			}
  1140	
  1141			if (map->selector_work_buf == NULL) {
  1142				map->selector_work_buf =
  1143					kzalloc(map->format.buf_size, GFP_KERNEL);
  1144				if (map->selector_work_buf == NULL) {
  1145					ret = -ENOMEM;
  1146					goto err_range;
  1147				}
  1148			}
  1149		}
  1150	
  1151		ret = regcache_init(map, config);
  1152		if (ret != 0)
  1153			goto err_range;
  1154	
  1155		if (dev) {
  1156			ret = regmap_attach_dev(dev, map, config);
  1157			if (ret != 0)
  1158				goto err_regcache;
  1159		} else {
  1160			regmap_debugfs_init(map);
  1161		}
  1162	
  1163		return map;
  1164	
  1165	err_regcache:
  1166		regcache_exit(map);
  1167	err_range:
  1168		regmap_range_exit(map);
  1169		kfree(map->work_buf);
  1170	err_hwlock:
  1171		if (map->hwlock)
  1172			hwspin_lock_free(map->hwlock);
  1173	err_name:
  1174		kfree_const(map->name);
  1175	err_map:
  1176		kfree(map);
  1177	err:
  1178		if (bus && bus->free_on_exit)
  1179			kfree(bus);
  1180		return ERR_PTR(ret);
  1181	}
  1182	EXPORT_SYMBOL_GPL(__regmap_init);
  1183	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-11-30 22:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-11-30 22:51 [rw-misc:omap_debugfs_v1 2/4] drivers/base/regmap/regmap.c:700:7: error: no member named 'debugfs_disable' in 'struct regmap' kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox