All of lore.kernel.org
 help / color / mirror / Atom feed
From: kbuild test robot <lkp@intel.com>
To: Mark Brown <broonie@kernel.org>
Cc: kbuild-all@01.org, Chen-Yu Tsai <wens@csie.org>,
	Mark Brown <broonie@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: Applied "regulator: axp20x: support AXP809 variant" to the regulator tree
Date: Wed, 30 Mar 2016 01:19:45 +0800	[thread overview]
Message-ID: <201603300110.ewocTe2F%fengguang.wu@intel.com> (raw)
In-Reply-To: <E1akwvL-0000qf-Ve@finisterre>

[-- Attachment #1: Type: text/plain, Size: 28822 bytes --]

Hi Mark,

[auto build test ERROR on regulator/for-next]
[also build test ERROR on v4.6-rc1 next-20160329]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]

url:    https://github.com/0day-ci/linux/commits/Mark-Brown/Applied-regulator-axp20x-support-AXP809-variant-to-the-regulator-tree/20160330-005751
base:   https://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git for-next
config: sparc64-allmodconfig (attached as .config)
reproduce:
        wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        make.cross ARCH=sparc64 

All error/warnings (new ones prefixed by >>):

>> drivers/regulator/axp20x-regulator.c:238:11: error: 'AXP809_DCDC1' undeclared here (not in a function)
     AXP_DESC(AXP809, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
>> drivers/regulator/axp20x-regulator.c:238:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
     ^
   drivers/regulator/axp20x-regulator.c:238:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:240:11: error: 'AXP809_DCDC2' undeclared here (not in a function)
     AXP_DESC(AXP809, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:240:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
     ^
   drivers/regulator/axp20x-regulator.c:240:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:242:11: error: 'AXP809_DCDC3' undeclared here (not in a function)
     AXP_DESC(AXP809, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:242:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
     ^
   drivers/regulator/axp20x-regulator.c:242:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:244:18: error: 'AXP809_DCDC4' undeclared here (not in a function)
     AXP_DESC_RANGES(AXP809, DCDC4, "dcdc4", "vin4", axp809_dcdc4_ranges,
                     ^
   drivers/regulator/axp20x-regulator.c:111:3: note: in definition of macro 'AXP_DESC_RANGES'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:244:2: error: array index in initializer not of integer type
     AXP_DESC_RANGES(AXP809, DCDC4, "dcdc4", "vin4", axp809_dcdc4_ranges,
     ^
   drivers/regulator/axp20x-regulator.c:244:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:247:11: error: 'AXP809_DCDC5' undeclared here (not in a function)
     AXP_DESC(AXP809, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:247:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
     ^
   drivers/regulator/axp20x-regulator.c:247:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:250:14: error: 'AXP809_DC1SW' undeclared here (not in a function)
     AXP_DESC_SW(AXP809, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
                 ^
   drivers/regulator/axp20x-regulator.c:82:3: note: in definition of macro 'AXP_DESC_SW'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:250:2: error: array index in initializer not of integer type
     AXP_DESC_SW(AXP809, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
     ^
   drivers/regulator/axp20x-regulator.c:250:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:253:11: error: 'AXP809_DC5LDO' undeclared here (not in a function)
     AXP_DESC(AXP809, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:253:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
     ^
   drivers/regulator/axp20x-regulator.c:253:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:255:11: error: 'AXP809_ALDO1' undeclared here (not in a function)
     AXP_DESC(AXP809, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:255:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:255:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:257:11: error: 'AXP809_ALDO2' undeclared here (not in a function)
     AXP_DESC(AXP809, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:257:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:257:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:259:11: error: 'AXP809_ALDO3' undeclared here (not in a function)
     AXP_DESC(AXP809, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:259:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:259:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:261:18: error: 'AXP809_DLDO1' undeclared here (not in a function)
     AXP_DESC_RANGES(AXP809, DLDO1, "dldo1", "dldoin", axp809_dldo1_ranges,
                     ^
   drivers/regulator/axp20x-regulator.c:111:3: note: in definition of macro 'AXP_DESC_RANGES'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:261:2: error: array index in initializer not of integer type
     AXP_DESC_RANGES(AXP809, DLDO1, "dldo1", "dldoin", axp809_dldo1_ranges,
     ^
   drivers/regulator/axp20x-regulator.c:261:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:264:11: error: 'AXP809_DLDO2' undeclared here (not in a function)
     AXP_DESC(AXP809, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:264:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:264:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:266:11: error: 'AXP809_ELDO1' undeclared here (not in a function)
     AXP_DESC(AXP809, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:266:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:266:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:268:11: error: 'AXP809_ELDO2' undeclared here (not in a function)
     AXP_DESC(AXP809, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:268:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:268:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:270:11: error: 'AXP809_ELDO3' undeclared here (not in a function)
     AXP_DESC(AXP809, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
              ^
   drivers/regulator/axp20x-regulator.c:63:3: note: in definition of macro 'AXP_DESC'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:270:2: error: array index in initializer not of integer type
     AXP_DESC(AXP809, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:270:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:272:14: error: 'AXP809_LDO_IO0' undeclared here (not in a function)
     AXP_DESC_IO(AXP809, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100,
                 ^
   drivers/regulator/axp20x-regulator.c:41:3: note: in definition of macro 'AXP_DESC_IO'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:272:2: error: array index in initializer not of integer type
     AXP_DESC_IO(AXP809, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:272:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:275:14: error: 'AXP809_LDO_IO1' undeclared here (not in a function)
     AXP_DESC_IO(AXP809, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100,
                 ^
   drivers/regulator/axp20x-regulator.c:41:3: note: in definition of macro 'AXP_DESC_IO'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:275:2: error: array index in initializer not of integer type
     AXP_DESC_IO(AXP809, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100,
     ^
   drivers/regulator/axp20x-regulator.c:275:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:278:17: error: 'AXP809_RTC_LDO' undeclared here (not in a function)
     AXP_DESC_FIXED(AXP809, RTC_LDO, "rtc_ldo", "ips", 1800),
                    ^
   drivers/regulator/axp20x-regulator.c:96:3: note: in definition of macro 'AXP_DESC_FIXED'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:278:2: error: array index in initializer not of integer type
     AXP_DESC_FIXED(AXP809, RTC_LDO, "rtc_ldo", "ips", 1800),
     ^
   drivers/regulator/axp20x-regulator.c:278:2: error: (near initialization for 'axp809_regulators')
>> drivers/regulator/axp20x-regulator.c:279:14: error: 'AXP809_SW' undeclared here (not in a function)
     AXP_DESC_SW(AXP809, SW, "sw", "swin", AXP22X_PWR_OUT_CTRL2, BIT(6)),
                 ^
   drivers/regulator/axp20x-regulator.c:82:3: note: in definition of macro 'AXP_DESC_SW'
     [_family##_##_id] = {       \
      ^
   drivers/regulator/axp20x-regulator.c:279:2: error: array index in initializer not of integer type
     AXP_DESC_SW(AXP809, SW, "sw", "swin", AXP22X_PWR_OUT_CTRL2, BIT(6)),
     ^
   drivers/regulator/axp20x-regulator.c:279:2: error: (near initialization for 'axp809_regulators')
   drivers/regulator/axp20x-regulator.c: In function 'axp20x_set_dcdc_freq':

vim +/AXP809_DCDC1 +238 drivers/regulator/axp20x-regulator.c

    35	#define AXP22X_WORKMODE_DCDCX_MASK(x)	BIT(x)
    36	
    37	#define AXP20X_FREQ_DCDC_MASK		0x0f
    38	
    39	#define AXP_DESC_IO(_family, _id, _match, _supply, _min, _max, _step, _vreg,	\
    40			    _vmask, _ereg, _emask, _enable_val, _disable_val)		\
  > 41		[_family##_##_id] = {							\
    42			.name		= (_match),					\
    43			.supply_name	= (_supply),					\
    44			.of_match	= of_match_ptr(_match),				\
    45			.regulators_node = of_match_ptr("regulators"),			\
    46			.type		= REGULATOR_VOLTAGE,				\
    47			.id		= _family##_##_id,				\
    48			.n_voltages	= (((_max) - (_min)) / (_step) + 1),		\
    49			.owner		= THIS_MODULE,					\
    50			.min_uV		= (_min) * 1000,				\
    51			.uV_step	= (_step) * 1000,				\
    52			.vsel_reg	= (_vreg),					\
    53			.vsel_mask	= (_vmask),					\
    54			.enable_reg	= (_ereg),					\
    55			.enable_mask	= (_emask),					\
    56			.enable_val	= (_enable_val),				\
    57			.disable_val	= (_disable_val),				\
    58			.ops		= &axp20x_ops,					\
    59		}
    60	
    61	#define AXP_DESC(_family, _id, _match, _supply, _min, _max, _step, _vreg,	\
    62			 _vmask, _ereg, _emask) 					\
  > 63		[_family##_##_id] = {							\
    64			.name		= (_match),					\
    65			.supply_name	= (_supply),					\
    66			.of_match	= of_match_ptr(_match),				\
    67			.regulators_node = of_match_ptr("regulators"),			\
    68			.type		= REGULATOR_VOLTAGE,				\
    69			.id		= _family##_##_id,				\
    70			.n_voltages	= (((_max) - (_min)) / (_step) + 1),		\
    71			.owner		= THIS_MODULE,					\
    72			.min_uV		= (_min) * 1000,				\
    73			.uV_step	= (_step) * 1000,				\
    74			.vsel_reg	= (_vreg),					\
    75			.vsel_mask	= (_vmask),					\
    76			.enable_reg	= (_ereg),					\
    77			.enable_mask	= (_emask),					\
    78			.ops		= &axp20x_ops,					\
    79		}
    80	
    81	#define AXP_DESC_SW(_family, _id, _match, _supply, _ereg, _emask)		\
  > 82		[_family##_##_id] = {							\
    83			.name		= (_match),					\
    84			.supply_name	= (_supply),					\
    85			.of_match	= of_match_ptr(_match),				\
    86			.regulators_node = of_match_ptr("regulators"),			\
    87			.type		= REGULATOR_VOLTAGE,				\
    88			.id		= _family##_##_id,				\
    89			.owner		= THIS_MODULE,					\
    90			.enable_reg	= (_ereg),					\
    91			.enable_mask	= (_emask),					\
    92			.ops		= &axp20x_ops_sw,				\
    93		}
    94	
    95	#define AXP_DESC_FIXED(_family, _id, _match, _supply, _volt)			\
  > 96		[_family##_##_id] = {							\
    97			.name		= (_match),					\
    98			.supply_name	= (_supply),					\
    99			.of_match	= of_match_ptr(_match),				\
   100			.regulators_node = of_match_ptr("regulators"),			\
   101			.type		= REGULATOR_VOLTAGE,				\
   102			.id		= _family##_##_id,				\
   103			.n_voltages	= 1,						\
   104			.owner		= THIS_MODULE,					\
   105			.min_uV		= (_volt) * 1000,				\
   106			.ops		= &axp20x_ops_fixed				\
   107		}
   108	
   109	#define AXP_DESC_RANGES(_family, _id, _match, _supply, _ranges, _n_voltages,	\
   110				_vreg, _vmask, _ereg, _emask)				\
 > 111		[_family##_##_id] = {							\
   112			.name		= (_match),					\
   113			.supply_name	= (_supply),					\
   114			.of_match	= of_match_ptr(_match),				\
   115			.regulators_node = of_match_ptr("regulators"),			\
   116			.type		= REGULATOR_VOLTAGE,				\
   117			.id		= _family##_##_id,				\
   118			.n_voltages	= (_n_voltages),				\
   119			.owner		= THIS_MODULE,					\
   120			.vsel_reg	= (_vreg),					\
   121			.vsel_mask	= (_vmask),					\
   122			.enable_reg	= (_ereg),					\
   123			.enable_mask	= (_emask),					\
   124			.linear_ranges	= (_ranges),					\
   125			.n_linear_ranges = ARRAY_SIZE(_ranges),				\
   126			.ops		= &axp20x_ops_range,				\
   127		}
   128	
   129	static struct regulator_ops axp20x_ops_fixed = {
   130		.list_voltage		= regulator_list_voltage_linear,
   131	};
   132	
   133	static struct regulator_ops axp20x_ops_range = {
   134		.set_voltage_sel	= regulator_set_voltage_sel_regmap,
   135		.get_voltage_sel	= regulator_get_voltage_sel_regmap,
   136		.list_voltage		= regulator_list_voltage_linear_range,
   137		.enable			= regulator_enable_regmap,
   138		.disable		= regulator_disable_regmap,
   139		.is_enabled		= regulator_is_enabled_regmap,
   140	};
   141	
   142	static struct regulator_ops axp20x_ops = {
   143		.set_voltage_sel	= regulator_set_voltage_sel_regmap,
   144		.get_voltage_sel	= regulator_get_voltage_sel_regmap,
   145		.list_voltage		= regulator_list_voltage_linear,
   146		.enable			= regulator_enable_regmap,
   147		.disable		= regulator_disable_regmap,
   148		.is_enabled		= regulator_is_enabled_regmap,
   149	};
   150	
   151	static struct regulator_ops axp20x_ops_sw = {
   152		.enable			= regulator_enable_regmap,
   153		.disable		= regulator_disable_regmap,
   154		.is_enabled		= regulator_is_enabled_regmap,
   155	};
   156	
   157	static const struct regulator_linear_range axp20x_ldo4_ranges[] = {
   158		REGULATOR_LINEAR_RANGE(1250000, 0x0, 0x0, 0),
   159		REGULATOR_LINEAR_RANGE(1300000, 0x1, 0x8, 100000),
   160		REGULATOR_LINEAR_RANGE(2500000, 0x9, 0xf, 100000),
   161	};
   162	
   163	static const struct regulator_desc axp20x_regulators[] = {
   164		AXP_DESC(AXP20X, DCDC2, "dcdc2", "vin2", 700, 2275, 25,
   165			 AXP20X_DCDC2_V_OUT, 0x3f, AXP20X_PWR_OUT_CTRL, 0x10),
   166		AXP_DESC(AXP20X, DCDC3, "dcdc3", "vin3", 700, 3500, 25,
   167			 AXP20X_DCDC3_V_OUT, 0x7f, AXP20X_PWR_OUT_CTRL, 0x02),
   168		AXP_DESC_FIXED(AXP20X, LDO1, "ldo1", "acin", 1300),
   169		AXP_DESC(AXP20X, LDO2, "ldo2", "ldo24in", 1800, 3300, 100,
   170			 AXP20X_LDO24_V_OUT, 0xf0, AXP20X_PWR_OUT_CTRL, 0x04),
   171		AXP_DESC(AXP20X, LDO3, "ldo3", "ldo3in", 700, 3500, 25,
   172			 AXP20X_LDO3_V_OUT, 0x7f, AXP20X_PWR_OUT_CTRL, 0x40),
   173		AXP_DESC_RANGES(AXP20X, LDO4, "ldo4", "ldo24in", axp20x_ldo4_ranges,
   174				16, AXP20X_LDO24_V_OUT, 0x0f, AXP20X_PWR_OUT_CTRL,
   175				0x08),
   176		AXP_DESC_IO(AXP20X, LDO5, "ldo5", "ldo5in", 1800, 3300, 100,
   177			    AXP20X_LDO5_V_OUT, 0xf0, AXP20X_GPIO0_CTRL, 0x07,
   178			    AXP20X_IO_ENABLED, AXP20X_IO_DISABLED),
   179	};
   180	
   181	static const struct regulator_desc axp22x_regulators[] = {
   182		AXP_DESC(AXP22X, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
   183			 AXP22X_DCDC1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(1)),
   184		AXP_DESC(AXP22X, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
   185			 AXP22X_DCDC2_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(2)),
   186		AXP_DESC(AXP22X, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
   187			 AXP22X_DCDC3_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)),
   188		AXP_DESC(AXP22X, DCDC4, "dcdc4", "vin4", 600, 1540, 20,
   189			 AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(4)),
   190		AXP_DESC(AXP22X, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
   191			 AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(5)),
   192		/* secondary switchable output of DCDC1 */
   193		AXP_DESC_SW(AXP22X, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
   194			    BIT(7)),
   195		/* LDO regulator internally chained to DCDC5 */
   196		AXP_DESC(AXP22X, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
   197			 AXP22X_DC5LDO_V_OUT, 0x7, AXP22X_PWR_OUT_CTRL1, BIT(0)),
   198		AXP_DESC(AXP22X, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
   199			 AXP22X_ALDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(6)),
   200		AXP_DESC(AXP22X, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
   201			 AXP22X_ALDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(7)),
   202		AXP_DESC(AXP22X, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
   203			 AXP22X_ALDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL3, BIT(7)),
   204		AXP_DESC(AXP22X, DLDO1, "dldo1", "dldoin", 700, 3300, 100,
   205			 AXP22X_DLDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(3)),
   206		AXP_DESC(AXP22X, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
   207			 AXP22X_DLDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(4)),
   208		AXP_DESC(AXP22X, DLDO3, "dldo3", "dldoin", 700, 3300, 100,
   209			 AXP22X_DLDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(5)),
   210		AXP_DESC(AXP22X, DLDO4, "dldo4", "dldoin", 700, 3300, 100,
   211			 AXP22X_DLDO4_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(6)),
   212		AXP_DESC(AXP22X, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
   213			 AXP22X_ELDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(0)),
   214		AXP_DESC(AXP22X, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
   215			 AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)),
   216		AXP_DESC(AXP22X, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
   217			 AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)),
   218		AXP_DESC_IO(AXP22X, LDO_IO0, "ldo_io0", "ips", 1800, 3300, 100,
   219			    AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07,
   220			    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
   221		AXP_DESC_IO(AXP22X, LDO_IO1, "ldo_io1", "ips", 1800, 3300, 100,
   222			    AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07,
   223			    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
   224		AXP_DESC_FIXED(AXP22X, RTC_LDO, "rtc_ldo", "ips", 3000),
   225	};
   226	
   227	static const struct regulator_linear_range axp809_dcdc4_ranges[] = {
   228		REGULATOR_LINEAR_RANGE(600000, 0x0, 0x2f, 20000),
   229		REGULATOR_LINEAR_RANGE(1800000, 0x30, 0x38, 100000),
   230	};
   231	
   232	static const struct regulator_linear_range axp809_dldo1_ranges[] = {
   233		REGULATOR_LINEAR_RANGE(700000, 0x0, 0x1a, 100000),
   234		REGULATOR_LINEAR_RANGE(3400000, 0x1b, 0x1f, 200000),
   235	};
   236	
   237	static const struct regulator_desc axp809_regulators[] = {
 > 238		AXP_DESC(AXP809, DCDC1, "dcdc1", "vin1", 1600, 3400, 100,
   239			 AXP22X_DCDC1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(1)),
 > 240		AXP_DESC(AXP809, DCDC2, "dcdc2", "vin2", 600, 1540, 20,
   241			 AXP22X_DCDC2_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(2)),
 > 242		AXP_DESC(AXP809, DCDC3, "dcdc3", "vin3", 600, 1860, 20,
   243			 AXP22X_DCDC3_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1, BIT(3)),
 > 244		AXP_DESC_RANGES(AXP809, DCDC4, "dcdc4", "vin4", axp809_dcdc4_ranges,
   245				57, AXP22X_DCDC4_V_OUT, 0x3f, AXP22X_PWR_OUT_CTRL1,
   246				BIT(4)),
 > 247		AXP_DESC(AXP809, DCDC5, "dcdc5", "vin5", 1000, 2550, 50,
   248			 AXP22X_DCDC5_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(5)),
   249		/* secondary switchable output of DCDC1 */
 > 250		AXP_DESC_SW(AXP809, DC1SW, "dc1sw", NULL, AXP22X_PWR_OUT_CTRL2,
   251			    BIT(7)),
   252		/* LDO regulator internally chained to DCDC5 */
 > 253		AXP_DESC(AXP809, DC5LDO, "dc5ldo", NULL, 700, 1400, 100,
   254			 AXP22X_DC5LDO_V_OUT, 0x7, AXP22X_PWR_OUT_CTRL1, BIT(0)),
 > 255		AXP_DESC(AXP809, ALDO1, "aldo1", "aldoin", 700, 3300, 100,
   256			 AXP22X_ALDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(6)),
 > 257		AXP_DESC(AXP809, ALDO2, "aldo2", "aldoin", 700, 3300, 100,
   258			 AXP22X_ALDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL1, BIT(7)),
 > 259		AXP_DESC(AXP809, ALDO3, "aldo3", "aldoin", 700, 3300, 100,
   260			 AXP22X_ALDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(5)),
 > 261		AXP_DESC_RANGES(AXP809, DLDO1, "dldo1", "dldoin", axp809_dldo1_ranges,
   262				32, AXP22X_DLDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2,
   263				BIT(3)),
 > 264		AXP_DESC(AXP809, DLDO2, "dldo2", "dldoin", 700, 3300, 100,
   265			 AXP22X_DLDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(4)),
 > 266		AXP_DESC(AXP809, ELDO1, "eldo1", "eldoin", 700, 3300, 100,
   267			 AXP22X_ELDO1_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(0)),
 > 268		AXP_DESC(AXP809, ELDO2, "eldo2", "eldoin", 700, 3300, 100,
   269			 AXP22X_ELDO2_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(1)),
 > 270		AXP_DESC(AXP809, ELDO3, "eldo3", "eldoin", 700, 3300, 100,
   271			 AXP22X_ELDO3_V_OUT, 0x1f, AXP22X_PWR_OUT_CTRL2, BIT(2)),
 > 272		AXP_DESC_IO(AXP809, LDO_IO0, "ldo_io0", "ips", 700, 3300, 100,
   273			    AXP22X_LDO_IO0_V_OUT, 0x1f, AXP20X_GPIO0_CTRL, 0x07,
   274			    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
 > 275		AXP_DESC_IO(AXP809, LDO_IO1, "ldo_io1", "ips", 700, 3300, 100,
   276			    AXP22X_LDO_IO1_V_OUT, 0x1f, AXP20X_GPIO1_CTRL, 0x07,
   277			    AXP22X_IO_ENABLED, AXP22X_IO_DISABLED),
 > 278		AXP_DESC_FIXED(AXP809, RTC_LDO, "rtc_ldo", "ips", 1800),
 > 279		AXP_DESC_SW(AXP809, SW, "sw", "swin", AXP22X_PWR_OUT_CTRL2, BIT(6)),
   280	};
   281	
   282	static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq)
   283	{
   284		struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
   285		u32 min, max, def, step;
   286	
   287		switch (axp20x->variant) {
   288		case AXP202_ID:
   289		case AXP209_ID:
   290			min = 750;
   291			max = 1875;
   292			def = 1500;
   293			step = 75;
   294			break;
   295		case AXP221_ID:
   296		case AXP223_ID:
 > 297		case AXP809_ID:
   298			min = 1800;
   299			max = 4050;
   300			def = 3000;
   301			step = 150;
   302			break;
   303		default:
   304			dev_err(&pdev->dev,
   305				"Setting DCDC frequency for unsupported AXP variant\n");
   306			return -EINVAL;
   307		}
   308	
   309		if (dcdcfreq == 0)
   310			dcdcfreq = def;
   311	
   312		if (dcdcfreq < min) {
   313			dcdcfreq = min;
   314			dev_warn(&pdev->dev, "DCDC frequency too low. Set to %ukHz\n",
   315				 min);
   316		}
   317	
   318		if (dcdcfreq > max) {
   319			dcdcfreq = max;
   320			dev_warn(&pdev->dev, "DCDC frequency too high. Set to %ukHz\n",
   321				 max);
   322		}
   323	
   324		dcdcfreq = (dcdcfreq - min) / step;
   325	
   326		return regmap_update_bits(axp20x->regmap, AXP20X_DCDC_FREQ,
   327					  AXP20X_FREQ_DCDC_MASK, dcdcfreq);
   328	}
   329	
   330	static int axp20x_regulator_parse_dt(struct platform_device *pdev)
   331	{
   332		struct device_node *np, *regulators;
   333		int ret;
   334		u32 dcdcfreq = 0;
   335	
   336		np = of_node_get(pdev->dev.parent->of_node);
   337		if (!np)
   338			return 0;
   339	
   340		regulators = of_get_child_by_name(np, "regulators");
   341		if (!regulators) {
   342			dev_warn(&pdev->dev, "regulators node not found\n");
   343		} else {
   344			of_property_read_u32(regulators, "x-powers,dcdc-freq", &dcdcfreq);
   345			ret = axp20x_set_dcdc_freq(pdev, dcdcfreq);
   346			if (ret < 0) {
   347				dev_err(&pdev->dev, "Error setting dcdc frequency: %d\n", ret);
   348				return ret;
   349			}
   350	
   351			of_node_put(regulators);
   352		}
   353	
   354		return 0;
   355	}
   356	
   357	static int axp20x_set_dcdc_workmode(struct regulator_dev *rdev, int id, u32 workmode)
   358	{
   359		struct axp20x_dev *axp20x = rdev_get_drvdata(rdev);
   360		unsigned int mask;
   361	
   362		switch (axp20x->variant) {
   363		case AXP202_ID:
   364		case AXP209_ID:
   365			if ((id != AXP20X_DCDC2) && (id != AXP20X_DCDC3))
   366				return -EINVAL;
   367	
   368			mask = AXP20X_WORKMODE_DCDC2_MASK;
   369			if (id == AXP20X_DCDC3)
   370				mask = AXP20X_WORKMODE_DCDC3_MASK;
   371	
   372			workmode <<= ffs(mask) - 1;
   373			break;
   374	
   375		case AXP221_ID:
   376		case AXP223_ID:
   377		case AXP809_ID:
   378			if (id < AXP22X_DCDC1 || id > AXP22X_DCDC5)
   379				return -EINVAL;
   380	
   381			mask = AXP22X_WORKMODE_DCDCX_MASK(id - AXP22X_DCDC1);
   382			workmode <<= id - AXP22X_DCDC1;
   383			break;
   384	
   385		default:
   386			/* should not happen */
   387			WARN_ON(1);
   388			return -EINVAL;
   389		}
   390	
   391		return regmap_update_bits(rdev->regmap, AXP20X_DCDC_MODE, mask, workmode);
   392	}
   393	
   394	static int axp20x_regulator_probe(struct platform_device *pdev)
   395	{
   396		struct regulator_dev *rdev;
   397		struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent);
   398		const struct regulator_desc *regulators;
   399		struct regulator_config config = {
   400			.dev = pdev->dev.parent,
   401			.regmap = axp20x->regmap,
   402			.driver_data = axp20x,
   403		};
   404		int ret, i, nregulators;
   405		u32 workmode;
   406		const char *dcdc1_name = axp22x_regulators[AXP22X_DCDC1].name;
   407		const char *dcdc5_name = axp22x_regulators[AXP22X_DCDC5].name;
   408	
   409		switch (axp20x->variant) {
   410		case AXP202_ID:
   411		case AXP209_ID:
   412			regulators = axp20x_regulators;
   413			nregulators = AXP20X_REG_ID_MAX;
   414			break;
   415		case AXP221_ID:
   416		case AXP223_ID:
   417			regulators = axp22x_regulators;
   418			nregulators = AXP22X_REG_ID_MAX;
   419			break;
 > 420		case AXP809_ID:
   421			regulators = axp809_regulators;
 > 422			nregulators = AXP809_REG_ID_MAX;
   423			break;
   424		default:
   425			dev_err(&pdev->dev, "Unsupported AXP variant: %ld\n",

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 45793 bytes --]

  reply	other threads:[~2016-03-29 17:20 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-29 16:55 Applied "regulator: axp20x: support AXP809 variant" to the regulator tree Mark Brown
2016-03-29 17:19 ` kbuild test robot [this message]
2016-03-29 17:24   ` Mark Brown
2016-03-29 19:09 ` kbuild test robot
  -- strict thread matches above, loose matches on Subject: below --
2016-02-02 10:27 [PATCH 06/11] regulator: axp20x: support AXP809 variant Chen-Yu Tsai
2016-05-31 17:46 ` Applied "regulator: axp20x: support AXP809 variant" to the regulator tree Mark Brown
2016-05-31 17:46   ` Mark Brown
2016-05-31 17:46   ` Mark Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201603300110.ewocTe2F%fengguang.wu@intel.com \
    --to=lkp@intel.com \
    --cc=broonie@kernel.org \
    --cc=kbuild-all@01.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.