* [PATCH] regulator: twl: Provide of_map_mode for twl4030 [not found] ` <20160328093938.GA2350-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> @ 2016-04-04 18:57 ` Ivaylo Dimitrov 2016-04-04 22:26 ` Mark Brown 0 siblings, 1 reply; 8+ messages in thread From: Ivaylo Dimitrov @ 2016-04-04 18:57 UTC (permalink / raw) To: broonie-DgEjT+Ai2ygdnm+yROfE0A, robh+dt-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, tony-4v6yS6AI5VpBDgjK7y7TUQ, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA, Ivaylo Dimitrov of_map_mode is needed so to be possible to set initial regulators mode from the board DTS. Otherwise, for DT boot, regulators are left in their default state after reset/reboot. Document device specific modes as well. Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> --- .../devicetree/bindings/regulator/twl-regulator.txt | 8 ++++++++ drivers/regulator/twl-regulator.c | 16 +++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt index 75b0c16..fe759903 100644 --- a/Documentation/devicetree/bindings/regulator/twl-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt @@ -57,6 +57,14 @@ For twl4030 regulators/LDOs Optional properties: - Any optional property defined in bindings/regulator/regulator.txt +For twl4030 regulators/LDOs: + - regulator-initial-mode: + - 0x00 - Off mode, the output voltage is not maintained and voltage regulator + power consumption is 0. + - 0x08 - Sleep mode, the nominal output voltage is maintained with low power + consumption with low load current capability. + - 0x0e - Active mode, the regulator can deliver its nominal output voltage + with full-load current capability. Example: diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c index aad748b0..be8d05e 100644 --- a/drivers/regulator/twl-regulator.c +++ b/drivers/regulator/twl-regulator.c @@ -395,6 +395,12 @@ static int twl4030reg_set_mode(struct regulator_dev *rdev, unsigned mode) return twl4030_send_pb_msg(message); } +static inline unsigned int twl4030reg_map_mode(unsigned int mode) +{ + return mode == RES_STATE_ACTIVE ? + REGULATOR_MODE_NORMAL : REGULATOR_MODE_STANDBY; +} + static int twl6030reg_set_mode(struct regulator_dev *rdev, unsigned mode) { struct twlreg_info *info = rdev_get_drvdata(rdev); @@ -897,10 +903,11 @@ static struct regulator_ops twlsmps_ops = { #define TWL4030_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \ remap_conf) \ TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \ - remap_conf, TWL4030, twl4030fixed_ops) + remap_conf, TWL4030, twl4030fixed_ops, \ + twl4030reg_map_mode) #define TWL6030_FIXED_LDO(label, offset, mVolts, turnon_delay) \ TWL_FIXED_LDO(label, offset, mVolts, 0x0, turnon_delay, \ - 0x0, TWL6030, twl6030fixed_ops) + 0x0, TWL6030, twl6030fixed_ops, 0x0) #define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) \ static const struct twlreg_info TWL4030_INFO_##label = { \ @@ -917,6 +924,7 @@ static const struct twlreg_info TWL4030_INFO_##label = { \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ .enable_time = turnon_delay, \ + .of_map_mode = twl4030reg_map_mode, \ }, \ } @@ -932,6 +940,7 @@ static const struct twlreg_info TWL4030_INFO_##label = { \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ .enable_time = turnon_delay, \ + .of_map_mode = twl4030reg_map_mode, \ }, \ } @@ -977,7 +986,7 @@ static const struct twlreg_info TWL6032_INFO_##label = { \ } #define TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, remap_conf, \ - family, operations) \ + family, operations, map_mode) \ static const struct twlreg_info TWLFIXED_INFO_##label = { \ .base = offset, \ .id = num, \ @@ -992,6 +1001,7 @@ static const struct twlreg_info TWLFIXED_INFO_##label = { \ .owner = THIS_MODULE, \ .min_uV = mVolts * 1000, \ .enable_time = turnon_delay, \ + .of_map_mode = map_mode, \ }, \ } -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH] regulator: twl: Provide of_map_mode for twl4030 2016-04-04 18:57 ` [PATCH] regulator: twl: Provide of_map_mode for twl4030 Ivaylo Dimitrov @ 2016-04-04 22:26 ` Mark Brown 2016-04-05 5:59 ` [PATCH v1] " Ivaylo Dimitrov 0 siblings, 1 reply; 8+ messages in thread From: Mark Brown @ 2016-04-04 22:26 UTC (permalink / raw) To: Ivaylo Dimitrov Cc: robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, tony, lgirdwood, devicetree, linux-kernel, linux-omap [-- Attachment #1: Type: text/plain, Size: 557 bytes --] On Mon, Apr 04, 2016 at 09:57:14PM +0300, Ivaylo Dimitrov wrote: > +For twl4030 regulators/LDOs: > + - regulator-initial-mode: > + - 0x00 - Off mode, the output voltage is not maintained and voltage regulator > + power consumption is 0. This isn't a mode, it's just the regulator being off. Just drop it. > +static inline unsigned int twl4030reg_map_mode(unsigned int mode) > +{ > + return mode == RES_STATE_ACTIVE ? > + REGULATOR_MODE_NORMAL : REGULATOR_MODE_STANDBY; > +} Please write normal if statements, the code should be readable. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 473 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 2016-04-04 22:26 ` Mark Brown @ 2016-04-05 5:59 ` Ivaylo Dimitrov 2016-04-07 17:57 ` Rob Herring 0 siblings, 1 reply; 8+ messages in thread From: Ivaylo Dimitrov @ 2016-04-05 5:59 UTC (permalink / raw) To: broonie, robh+dt, pawel.moll, mark.rutland, ijc+devicetree, galak, tony, lgirdwood Cc: devicetree, linux-kernel, linux-omap, Ivaylo Dimitrov of_map_mode is needed so to be possible to set initial regulators mode from the board DTS. Otherwise, for DT boot, regulators are left in their default state after reset/reboot. Document device specific modes as well. Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com> --- .../bindings/regulator/twl-regulator.txt | 6 ++++++ drivers/regulator/twl-regulator.c | 22 +++++++++++++++++++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/Documentation/devicetree/bindings/regulator/twl-regulator.txt b/Documentation/devicetree/bindings/regulator/twl-regulator.txt index 75b0c16..74a91c4 100644 --- a/Documentation/devicetree/bindings/regulator/twl-regulator.txt +++ b/Documentation/devicetree/bindings/regulator/twl-regulator.txt @@ -57,6 +57,12 @@ For twl4030 regulators/LDOs Optional properties: - Any optional property defined in bindings/regulator/regulator.txt +For twl4030 regulators/LDOs: + - regulator-initial-mode: + - 0x08 - Sleep mode, the nominal output voltage is maintained with low power + consumption with low load current capability. + - 0x0e - Active mode, the regulator can deliver its nominal output voltage + with full-load current capability. Example: diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regulator.c index aad748b0..53fcbb0 100644 --- a/drivers/regulator/twl-regulator.c +++ b/drivers/regulator/twl-regulator.c @@ -395,6 +395,18 @@ static int twl4030reg_set_mode(struct regulator_dev *rdev, unsigned mode) return twl4030_send_pb_msg(message); } +static inline unsigned int twl4030reg_map_mode(unsigned int mode) +{ + switch (mode) { + case RES_STATE_ACTIVE: + return REGULATOR_MODE_NORMAL; + case RES_STATE_SLEEP: + return REGULATOR_MODE_STANDBY; + default: + return -EINVAL; + } +} + static int twl6030reg_set_mode(struct regulator_dev *rdev, unsigned mode) { struct twlreg_info *info = rdev_get_drvdata(rdev); @@ -897,10 +909,11 @@ static struct regulator_ops twlsmps_ops = { #define TWL4030_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \ remap_conf) \ TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, \ - remap_conf, TWL4030, twl4030fixed_ops) + remap_conf, TWL4030, twl4030fixed_ops, \ + twl4030reg_map_mode) #define TWL6030_FIXED_LDO(label, offset, mVolts, turnon_delay) \ TWL_FIXED_LDO(label, offset, mVolts, 0x0, turnon_delay, \ - 0x0, TWL6030, twl6030fixed_ops) + 0x0, TWL6030, twl6030fixed_ops, 0x0) #define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_conf) \ static const struct twlreg_info TWL4030_INFO_##label = { \ @@ -917,6 +930,7 @@ static const struct twlreg_info TWL4030_INFO_##label = { \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ .enable_time = turnon_delay, \ + .of_map_mode = twl4030reg_map_mode, \ }, \ } @@ -932,6 +946,7 @@ static const struct twlreg_info TWL4030_INFO_##label = { \ .type = REGULATOR_VOLTAGE, \ .owner = THIS_MODULE, \ .enable_time = turnon_delay, \ + .of_map_mode = twl4030reg_map_mode, \ }, \ } @@ -977,7 +992,7 @@ static const struct twlreg_info TWL6032_INFO_##label = { \ } #define TWL_FIXED_LDO(label, offset, mVolts, num, turnon_delay, remap_conf, \ - family, operations) \ + family, operations, map_mode) \ static const struct twlreg_info TWLFIXED_INFO_##label = { \ .base = offset, \ .id = num, \ @@ -992,6 +1007,7 @@ static const struct twlreg_info TWLFIXED_INFO_##label = { \ .owner = THIS_MODULE, \ .min_uV = mVolts * 1000, \ .enable_time = turnon_delay, \ + .of_map_mode = map_mode, \ }, \ } -- 1.9.1 ^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 2016-04-05 5:59 ` [PATCH v1] " Ivaylo Dimitrov @ 2016-04-07 17:57 ` Rob Herring 2016-04-08 15:49 ` Tony Lindgren 0 siblings, 1 reply; 8+ messages in thread From: Rob Herring @ 2016-04-07 17:57 UTC (permalink / raw) To: Ivaylo Dimitrov Cc: broonie, pawel.moll, mark.rutland, ijc+devicetree, galak, tony, lgirdwood, devicetree, linux-kernel, linux-omap On Tue, Apr 05, 2016 at 08:59:34AM +0300, Ivaylo Dimitrov wrote: > of_map_mode is needed so to be possible to set initial regulators mode from > the board DTS. Otherwise, for DT boot, regulators are left in their default > state after reset/reboot. Document device specific modes as well. > > Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com> > --- > .../bindings/regulator/twl-regulator.txt | 6 ++++++ Acked-by: Rob Herring <robh@kernel.org> > drivers/regulator/twl-regulator.c | 22 +++++++++++++++++++--- > 2 files changed, 25 insertions(+), 3 deletions(-) > ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 2016-04-07 17:57 ` Rob Herring @ 2016-04-08 15:49 ` Tony Lindgren [not found] ` <20160408154907.GT16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Tony Lindgren @ 2016-04-08 15:49 UTC (permalink / raw) To: Rob Herring Cc: Ivaylo Dimitrov, broonie, pawel.moll, mark.rutland, ijc+devicetree, galak, lgirdwood, devicetree, linux-kernel, linux-omap * Rob Herring <robh@kernel.org> [160407 10:58]: > On Tue, Apr 05, 2016 at 08:59:34AM +0300, Ivaylo Dimitrov wrote: > > of_map_mode is needed so to be possible to set initial regulators mode from > > the board DTS. Otherwise, for DT boot, regulators are left in their default > > state after reset/reboot. Document device specific modes as well. > > > > Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75@gmail.com> > > --- > > .../bindings/regulator/twl-regulator.txt | 6 ++++++ > > Acked-by: Rob Herring <robh@kernel.org> I'd like to test these patches, but I don't know which combination of patches needed? It seems we're waiting for an update on at least one of the patches in this series? Might be best to repost the whole series so people can test the right patches. Regards, Tony ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20160408154907.GT16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 [not found] ` <20160408154907.GT16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> @ 2016-04-08 16:08 ` Sebastian Reichel 2016-04-08 16:19 ` Tony Lindgren 0 siblings, 1 reply; 8+ messages in thread From: Sebastian Reichel @ 2016-04-08 16:08 UTC (permalink / raw) To: Tony Lindgren Cc: Rob Herring, Ivaylo Dimitrov, broonie-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA [-- Attachment #1: Type: text/plain, Size: 1182 bytes --] Hi Tony, On Fri, Apr 08, 2016 at 08:49:07AM -0700, Tony Lindgren wrote: > * Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> [160407 10:58]: > > On Tue, Apr 05, 2016 at 08:59:34AM +0300, Ivaylo Dimitrov wrote: > > > of_map_mode is needed so to be possible to set initial regulators mode from > > > the board DTS. Otherwise, for DT boot, regulators are left in their default > > > state after reset/reboot. Document device specific modes as well. > > > > > > Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > --- > > > .../bindings/regulator/twl-regulator.txt | 6 ++++++ > > > > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > > I'd like to test these patches, but I don't know which combination > of patches needed? It seems we're waiting for an update on at least > one of the patches in this series? > > Might be best to repost the whole series so people can test the > right patches. As far as I can see Mark has already queued all patches in his for-next branch and they are already in today's linux-next, so you can just test linux-next. -- Sebastian [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 819 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 2016-04-08 16:08 ` Sebastian Reichel @ 2016-04-08 16:19 ` Tony Lindgren [not found] ` <20160408161923.GW16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 0 siblings, 1 reply; 8+ messages in thread From: Tony Lindgren @ 2016-04-08 16:19 UTC (permalink / raw) To: Sebastian Reichel Cc: Rob Herring, Ivaylo Dimitrov, broonie-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA * Sebastian Reichel <sre-GFxCN5SEZAc@public.gmane.org> [160408 09:09]: > Hi Tony, > > On Fri, Apr 08, 2016 at 08:49:07AM -0700, Tony Lindgren wrote: > > * Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> [160407 10:58]: > > > On Tue, Apr 05, 2016 at 08:59:34AM +0300, Ivaylo Dimitrov wrote: > > > > of_map_mode is needed so to be possible to set initial regulators mode from > > > > the board DTS. Otherwise, for DT boot, regulators are left in their default > > > > state after reset/reboot. Document device specific modes as well. > > > > > > > > Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > --- > > > > .../bindings/regulator/twl-regulator.txt | 6 ++++++ > > > > > > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > > > > I'd like to test these patches, but I don't know which combination > > of patches needed? It seems we're waiting for an update on at least > > one of the patches in this series? > > > > Might be best to repost the whole series so people can test the > > right patches. > > As far as I can see Mark has already queued all patches in his > for-next branch and they are already in today's linux-next, so > you can just test linux-next. OK thanks will do. Tony -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
[parent not found: <20160408161923.GW16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH v1] regulator: twl: Provide of_map_mode for twl4030 [not found] ` <20160408161923.GW16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> @ 2016-04-08 17:54 ` Tony Lindgren 0 siblings, 0 replies; 8+ messages in thread From: Tony Lindgren @ 2016-04-08 17:54 UTC (permalink / raw) To: Sebastian Reichel Cc: Rob Herring, Ivaylo Dimitrov, broonie-DgEjT+Ai2ygdnm+yROfE0A, pawel.moll-5wv7dgnIgG8, mark.rutland-5wv7dgnIgG8, ijc+devicetree-KcIKpvwj1kUDXYZnReoRVg, galak-sgV2jX0FEOL9JmXXK+q4OQ, lgirdwood-Re5JQEeQqe8AvxtiuMwx3w, devicetree-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-omap-u79uwXL29TY76Z2rM5mHXA * Tony Lindgren <tony-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> [160408 09:21]: > * Sebastian Reichel <sre-GFxCN5SEZAc@public.gmane.org> [160408 09:09]: > > Hi Tony, > > > > On Fri, Apr 08, 2016 at 08:49:07AM -0700, Tony Lindgren wrote: > > > * Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> [160407 10:58]: > > > > On Tue, Apr 05, 2016 at 08:59:34AM +0300, Ivaylo Dimitrov wrote: > > > > > of_map_mode is needed so to be possible to set initial regulators mode from > > > > > the board DTS. Otherwise, for DT boot, regulators are left in their default > > > > > state after reset/reboot. Document device specific modes as well. > > > > > > > > > > Signed-off-by: Ivaylo Dimitrov <ivo.g.dimitrov.75-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> > > > > > --- > > > > > .../bindings/regulator/twl-regulator.txt | 6 ++++++ > > > > > > > > Acked-by: Rob Herring <robh-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org> > > > > > > I'd like to test these patches, but I don't know which combination > > > of patches needed? It seems we're waiting for an update on at least > > > one of the patches in this series? > > > > > > Might be best to repost the whole series so people can test the > > > right patches. > > > > As far as I can see Mark has already queued all patches in his > > for-next branch and they are already in today's linux-next, so > > you can just test linux-next. > > OK thanks will do. Yup PM seems to work just fine with these. Tony -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-04-08 17:54 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <20160328093938.GA2350@sirena.org.uk> [not found] ` <20160328093938.GA2350-GFdadSzt00ze9xe1eoZjHA@public.gmane.org> 2016-04-04 18:57 ` [PATCH] regulator: twl: Provide of_map_mode for twl4030 Ivaylo Dimitrov 2016-04-04 22:26 ` Mark Brown 2016-04-05 5:59 ` [PATCH v1] " Ivaylo Dimitrov 2016-04-07 17:57 ` Rob Herring 2016-04-08 15:49 ` Tony Lindgren [not found] ` <20160408154907.GT16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 2016-04-08 16:08 ` Sebastian Reichel 2016-04-08 16:19 ` Tony Lindgren [not found] ` <20160408161923.GW16484-4v6yS6AI5VpBDgjK7y7TUQ@public.gmane.org> 2016-04-08 17:54 ` Tony Lindgren
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).