linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: sboyd@codeaurora.org (Stephen Boyd)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 04/10] spmi: Add MSM PMIC Arbiter SPMI controller
Date: Wed, 30 Oct 2013 11:05:36 -0700	[thread overview]
Message-ID: <20131030180536.GI21983@codeaurora.org> (raw)
In-Reply-To: <7467ed718314cb98c9e40f135e9926cf14ed218b.1382985169.git.joshc@codeaurora.org>

On 10/28, Josh Cartwright wrote:
> +
> +/**
> + * pa_write_data: write 1..4 bytes from buf to pmic-arb's register
> + * @bc byte-count -1. range: 0..3
> + * @reg register's address
> + * @buf buffer to write. length must be bc+1

Missing colon between variable and description.

> + */
> +static void
> +pa_write_data(struct spmi_pmic_arb_dev *dev, const u8 *buf, u32 reg, u8 bc)
> +{
> +	u32 data = 0;
> +	memcpy(&data, buf, (bc & 3) + 1);
> +	pmic_arb_base_write(dev, reg, data);
> +}
> +
[...]
> +static int pmic_arb_read_cmd(struct spmi_controller *ctrl,
> +			     u8 opc, u8 sid, u16 addr, u8 bc, u8 *buf)
> +{
> +	struct spmi_pmic_arb_dev *pmic_arb = spmi_controller_get_drvdata(ctrl);
> +	unsigned long flags;
> +	u32 cmd;
> +	int rc;
> +
> +	if (bc >= PMIC_ARB_MAX_TRANS_BYTES) {
> +		dev_err(&ctrl->dev,
> +			"pmic-arb supports 1..%d bytes per trans, but:%d requested",

Nitpick: Please replace the colon between but and %d with a space.

> +			PMIC_ARB_MAX_TRANS_BYTES, bc+1);

Space around that '+' please.

> +		return  -EINVAL;
> +	}
> +	dev_dbg(&ctrl->dev,
> +		"op:0x%x sid:%d bc:%d addr:0x%x\n", opc, sid, bc, addr);
> +
> +	/* Check the opcode */
> +	if (opc >= 0x60 && opc <= 0x7F)
> +		opc = PMIC_ARB_OP_READ;
> +	else if (opc >= 0x20 && opc <= 0x2F)
> +		opc = PMIC_ARB_OP_EXT_READ;
> +	else if (opc >= 0x38 && opc <= 0x3F)
> +		opc = PMIC_ARB_OP_EXT_READL;
> +	else
> +		return -EINVAL;
> +
> +	cmd = (opc << 27) | ((sid & 0xf) << 20) | (addr << 4) | (bc & 0x7);
> +
> +	spin_lock_irqsave(&pmic_arb->lock, flags);
> +	pmic_arb_base_write(pmic_arb, PMIC_ARB_CMD(pmic_arb->channel), cmd);
> +	rc = pmic_arb_wait_for_done(ctrl);
> +	if (rc)
> +		goto done;
> +
> +	/* Read from FIFO, note 'bc' is actually number of bytes minus 1 */
> +	pa_read_data(pmic_arb, buf, PMIC_ARB_RDATA0(pmic_arb->channel)
> +							, min_t(u8, bc, 3));

Nitpick: Weird comma starting a line here.

> +
> +	if (bc > 3)
> +		pa_read_data(pmic_arb, buf + 4,
> +				PMIC_ARB_RDATA1(pmic_arb->channel), bc - 4);
> +
> +done:
> +	spin_unlock_irqrestore(&pmic_arb->lock, flags);
> +	return rc;
> +}
> +
[...]
> +static int spmi_pmic_arb_probe(struct platform_device *pdev)
> +{
> +	struct spmi_pmic_arb_dev *pa;
> +	struct spmi_controller *ctrl;
> +	struct resource *res;
> +	int err, i;
> +
> +	ctrl = spmi_controller_alloc(&pdev->dev, sizeof(*pa));
> +	if (!ctrl)
> +		return -ENOMEM;
> +
> +	pa = spmi_controller_get_drvdata(ctrl);
> +
> +	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "core");
> +	pa->base = devm_ioremap_resource(&ctrl->dev, res);
> +	if (IS_ERR(pa->base)) {
> +		err = PTR_ERR(pa->base);
> +		goto err_put_ctrl;
> +	}
> +
> +	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "intr");
> +	pa->intr = devm_ioremap_resource(&ctrl->dev, res);
> +	if (IS_ERR(pa->intr)) {
> +		err = PTR_ERR(pa->intr);
> +		goto err_put_ctrl;
> +	}
> +
> +	res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "cnfg");
> +	pa->cnfg = devm_ioremap_resource(&ctrl->dev, res);
> +	if (IS_ERR(pa->cnfg)) {
> +		err = PTR_ERR(pa->cnfg);
> +		goto err_put_ctrl;
> +	}
> +
> +	for (i = 0; i < ARRAY_SIZE(pa->mapping_table); ++i)
> +		pa->mapping_table[i] = readl_relaxed(
> +				pa->cnfg + SPMI_MAPPING_TABLE_REG(i));
> +
> +	platform_set_drvdata(pdev, ctrl);
> +	spin_lock_init(&pa->lock);
> +
> +	pa->channel = 0;
> +	pa->max_apid = 0;
> +	pa->min_apid = PMIC_ARB_MAX_PERIPHS - 1;

That looks backwards. Is this right?

> +
> +	ctrl->cmd = pmic_arb_cmd;
> +	ctrl->read_cmd = pmic_arb_read_cmd;
> +	ctrl->write_cmd = pmic_arb_write_cmd;
> +
> +	err = spmi_controller_add(ctrl);
> +	if (err)
> +		goto err_put_ctrl;
> +
> +	dev_dbg(&ctrl->dev, "PMIC Arb Version 0x%x\n",
> +		pmic_arb_base_read(pa, PMIC_ARB_VERSION));
> +
> +	return 0;
> +
> +err_put_ctrl:
> +	spmi_controller_put(ctrl);
> +	return err;
> +}
> +
> +static int __exit spmi_pmic_arb_remove(struct platform_device *pdev)

__exit shouldn't be here. We want this function in modules.

> +{
> +	struct spmi_controller *ctrl = platform_get_drvdata(pdev);
> +	spmi_controller_remove(ctrl);
> +	return 0;
> +}
> +
> +static struct of_device_id spmi_pmic_arb_match_table[] = {
> +	{	.compatible = "qcom,spmi-pmic-arb", },
> +	{},
> +};
> +MODULE_DEVICE_TABLE(of, spmi_pmic_arb_match_table);
> +
> +static struct platform_driver spmi_pmic_arb_driver = {
> +	.probe		= spmi_pmic_arb_probe,
> +	.remove		= __exit_p(spmi_pmic_arb_remove),

Please drop this __exit_p() usage as well.

> +	.driver		= {
> +		.name	= "spmi_pmic_arb",
> +		.owner	= THIS_MODULE,
> +		.of_match_table = spmi_pmic_arb_match_table,
> +	},
> +};
> +module_platform_driver(spmi_pmic_arb_driver);

MODULE_LICENSE()
MODULE_ALIAS()
?

-- 
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
hosted by The Linux Foundation

  reply	other threads:[~2013-10-30 18:05 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-10-28 18:32 [PATCH v3 00/10] Add support for the System Power Management Interface (SPMI) Josh Cartwright
2013-10-28 18:12 ` [PATCH v3 05/10] spmi: pmic_arb: add support for interrupt handling Josh Cartwright
2013-10-30 18:17   ` Stephen Boyd
2013-10-30 19:10     ` Josh Cartwright
2013-10-28 18:12 ` [PATCH v3 10/10] rtc: pm8xxx: add support for pm8941 Josh Cartwright
2013-10-29 20:09   ` Stephen Boyd
2013-10-29 20:15     ` Greg Kroah-Hartman
2013-10-29 20:20       ` Stephen Boyd
2013-10-29 20:32         ` Greg Kroah-Hartman
2013-10-28 18:12 ` [PATCH v3 08/10] mfd: pm8x41: add support for Qualcomm 8x41 PMICs Josh Cartwright
2013-10-29  0:40   ` Stephen Boyd
2013-10-29 15:56   ` Lee Jones
2013-10-29 16:03     ` Josh Cartwright
2013-10-28 18:12 ` [PATCH v3 04/10] spmi: Add MSM PMIC Arbiter SPMI controller Josh Cartwright
2013-10-30 18:05   ` Stephen Boyd [this message]
2013-10-30 19:17     ` Josh Cartwright
2013-10-28 18:12 ` [PATCH v3 03/10] spmi: add generic SPMI controller binding documentation Josh Cartwright
2013-10-28 18:12 ` [PATCH v3 09/10] mfd: pm8x41: document device tree bindings Josh Cartwright
2013-10-29 14:18   ` Ivan T. Ivanov
2013-10-29 15:05     ` Josh Cartwright
2013-10-29 15:31       ` Ivan T. Ivanov
2013-10-28 18:12 ` [PATCH v3 07/10] regmap: add SPMI support Josh Cartwright
2013-10-28 20:01   ` Mark Brown
2013-10-28 18:12 ` [PATCH v3 02/10] spmi: Linux driver framework for SPMI Josh Cartwright
2013-10-29 15:02   ` Ivan T. Ivanov
2013-10-29 16:26     ` Josh Cartwright
2013-10-29 18:00       ` Ivan T. Ivanov
2013-10-29 15:21   ` Lars-Peter Clausen
2013-10-29 15:56     ` Josh Cartwright
2013-10-29 16:30       ` Stephen Boyd
2013-10-29 19:18         ` Lars-Peter Clausen
2013-10-29 19:26       ` Lars-Peter Clausen
2013-10-29 16:52   ` Stephen Boyd
2013-10-30 19:37     ` Josh Cartwright
2013-10-30 19:45       ` Stephen Boyd
2013-10-30  0:11   ` Russell King - ARM Linux
2013-10-28 18:12 ` [PATCH v3 01/10] of: Add empty for_each_available_child_of_node() macro definition Josh Cartwright
2013-10-29  5:50   ` Rob Herring
2013-10-28 18:12 ` [PATCH v3 06/10] spmi: document the PMIC arbiter SPMI bindings Josh Cartwright
2013-10-29 14:08   ` Ivan T. Ivanov
2013-10-29 15:12     ` Josh Cartwright

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=20131030180536.GI21983@codeaurora.org \
    --to=sboyd@codeaurora.org \
    --cc=linux-arm-kernel@lists.infradead.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 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).