diff for duplicates of <1481069081.7840.3.camel@aj.id.au> diff --git a/a/1.txt b/N1/1.txt index ad598e9..c6594a9 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,5 +1,5 @@ -On Tue, 2016-12-06 at 16:02 +0100, C?dric Le Goater wrote: -> [ this is a resend bc of some mailing list issues]? +On Tue, 2016-12-06 at 16:02 +0100, Cédric Le Goater wrote: +> [ this is a resend bc of some mailing list issues] Thanks for resending. @@ -22,7 +22,7 @@ Thanks for resending. > > > > Signed-off-by: Andrew Jeffery <andrew@aj.id.au> > -> It would be nice to have an example of the associated binding.? +> It would be nice to have an example of the associated binding. > I did not see it. Essentially because the approach of the patch means there's no required @@ -30,7 +30,7 @@ change to the bindings documentation. So, pulling together the various patches I've sent out, a partial devicetree using the new bindings might look something like: -lpc: lpc at 1e789000 { +lpc: lpc@1e789000 { compatible = "aspeed,ast2500-lpc", "simple-mfd"; reg = <0x1e789000 0x1000>; @@ -38,13 +38,13 @@ lpc: lpc at 1e789000 { #size-cells = <1>; ranges = <0 0x1e789000 0x1000>; - lpc_bmc: lpc-bmc at 0 { + lpc_bmc: lpc-bmc@0 { compatible = "aspeed,ast2500-lpc-bmc"; reg = <0x0 0x80>; reg-io-width = <1>; }; - lpc_host: lpc-host at 80 { + lpc_host: lpc-host@80 { compatible = "aspeed,ast2500-lpc-host", "simple-mfd", "syscon"; reg = <0x80 0x1e0>; @@ -54,7 +54,7 @@ lpc: lpc at 1e789000 { reg-io-width = <4>; - ibt: ibt at c0 { + ibt: ibt@c0 { compatible = "aspeed,ast2400-bt-bmc"; reg = <0xc0 0x18>; interrupts = <8>; @@ -72,69 +72,69 @@ Andrew > A part from that : > -> > Reviewed-by: C?dric Le Goater <clg@kaod.org> +> > Reviewed-by: Cédric Le Goater <clg@kaod.org> > > Thanks, > > C. > > > --- -> > ?drivers/char/ipmi/Kconfig??|??1 + -> > ?drivers/char/ipmi/bt-bmc.c | 82 ++++++++++++++++++++++++++++++++++------------ -> > ?2 files changed, 62 insertions(+), 21 deletions(-) +> > drivers/char/ipmi/Kconfig | 1 + +> > drivers/char/ipmi/bt-bmc.c | 82 ++++++++++++++++++++++++++++++++++------------ +> > 2 files changed, 62 insertions(+), 21 deletions(-) > > > > diff --git a/drivers/char/ipmi/Kconfig b/drivers/char/ipmi/Kconfig > > index 7f816655cbbf..b5d48d9af124 100644 > > --- a/drivers/char/ipmi/Kconfig > > +++ b/drivers/char/ipmi/Kconfig > > @@ -79,6 +79,7 @@ endif # IPMI_HANDLER -> > ? -> > ?config ASPEED_BT_IPMI_BMC -> > > > ? depends on ARCH_ASPEED -> > +????????depends on REGMAP && REGMAP_MMIO && MFD_SYSCON -> > > > ? tristate "BT IPMI bmc driver" -> > > > ? help -> > > > ? ??Provides a driver for the BT (Block Transfer) IPMI interface +> > +> > config ASPEED_BT_IPMI_BMC +> > > > depends on ARCH_ASPEED +> > + depends on REGMAP && REGMAP_MMIO && MFD_SYSCON +> > > > tristate "BT IPMI bmc driver" +> > > > help +> > > > Provides a driver for the BT (Block Transfer) IPMI interface > > diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c > > index fc9e8891eae3..ca1e20f6c6c5 100644 > > --- a/drivers/char/ipmi/bt-bmc.c > > +++ b/drivers/char/ipmi/bt-bmc.c > > @@ -12,10 +12,13 @@ -> > ?#include <linux/errno.h> -> > ?#include <linux/interrupt.h> -> > ?#include <linux/io.h> +> > #include <linux/errno.h> +> > #include <linux/interrupt.h> +> > #include <linux/io.h> > > +#include <linux/mfd/syscon.h> -> > ?#include <linux/miscdevice.h> -> > ?#include <linux/module.h> +> > #include <linux/miscdevice.h> +> > #include <linux/module.h> > > +#include <linux/of.h> -> > ?#include <linux/platform_device.h> -> > ?#include <linux/poll.h> +> > #include <linux/platform_device.h> +> > #include <linux/poll.h> > > +#include <linux/regmap.h> -> > ?#include <linux/sched.h> -> > ?#include <linux/timer.h> -> > ? +> > #include <linux/sched.h> +> > #include <linux/timer.h> +> > > > @@ -60,7 +63,8 @@ -> > ?struct bt_bmc { -> > > > > > ? struct device dev; -> > > > > > ? struct miscdevice miscdev; +> > struct bt_bmc { +> > > > > > struct device dev; +> > > > > > struct miscdevice miscdev; > > > > > > - void __iomem *base; > > > > > > + struct regmap *map; > > > > > > + int offset; -> > > > > > ? int irq; -> > > > > > ? wait_queue_head_t queue; -> > > > > > ? struct timer_list poll_timer; +> > > > > > int irq; +> > > > > > wait_queue_head_t queue; +> > > > > > struct timer_list poll_timer; > > @@ -69,14 +73,31 @@ struct bt_bmc { -> > ? -> > ?static atomic_t open_count = ATOMIC_INIT(0); -> > ? +> > +> > static atomic_t open_count = ATOMIC_INIT(0); +> > > > +static struct regmap_config bt_regmap_cfg = { > > > > + .reg_bits = 32, > > > > + .val_bits = 32, > > > > + .reg_stride = 4, > > +}; > > + -> > ?static u8 bt_inb(struct bt_bmc *bt_bmc, int reg) -> > ?{ +> > static u8 bt_inb(struct bt_bmc *bt_bmc, int reg) +> > { > > > > - return ioread8(bt_bmc->base + reg); > > > > + uint32_t val = 0; > > > > + int rc; @@ -144,75 +144,75 @@ Andrew > > > > + __FILE__, __LINE__, rc); > > + > > > > + return rc == 0 ? (u8) val : 0; -> > ?} -> > ? -> > ?static void bt_outb(struct bt_bmc *bt_bmc, u8 data, int reg) -> > ?{ +> > } +> > +> > static void bt_outb(struct bt_bmc *bt_bmc, u8 data, int reg) +> > { > > > > - iowrite8(data, bt_bmc->base + reg); > > > > + int rc; > > + > > > > + rc = regmap_write(bt_bmc->map, bt_bmc->offset + reg, data); > > > > + WARN(rc != 0, "%s:%d: regmap_write() failed: %d\n", > > > > + __FILE__, __LINE__, rc); -> > ?} -> > ? -> > ?static void clr_rd_ptr(struct bt_bmc *bt_bmc) +> > } +> > +> > static void clr_rd_ptr(struct bt_bmc *bt_bmc) > > @@ -367,14 +388,18 @@ static irqreturn_t bt_bmc_irq(int irq, void *arg) -> > ?{ -> > > > ? struct bt_bmc *bt_bmc = arg; -> > > > ? u32 reg; +> > { +> > > > struct bt_bmc *bt_bmc = arg; +> > > > u32 reg; > > > > + int rc; > > + > > > > + rc = regmap_read(bt_bmc->map, bt_bmc->offset + BT_CR2, ®); > > > > + if (rc) > > > > + return IRQ_NONE; -> > ? +> > > > > > - reg = ioread32(bt_bmc->base + BT_CR2); -> > > > ? reg &= BT_CR2_IRQ_H2B | BT_CR2_IRQ_HBUSY; -> > > > ? if (!reg) -> > > > ? return IRQ_NONE; -> > ? -> > > > ? /* ack pending IRQs */ +> > > > reg &= BT_CR2_IRQ_H2B | BT_CR2_IRQ_HBUSY; +> > > > if (!reg) +> > > > return IRQ_NONE; +> > +> > > > /* ack pending IRQs */ > > > > - iowrite32(reg, bt_bmc->base + BT_CR2); > > > > + regmap_write(bt_bmc->map, bt_bmc->offset + BT_CR2, reg); -> > ? -> > > > ? wake_up(&bt_bmc->queue); -> > > > ? return IRQ_HANDLED; +> > +> > > > wake_up(&bt_bmc->queue); +> > > > return IRQ_HANDLED; > > @@ -384,7 +409,6 @@ static int bt_bmc_config_irq(struct bt_bmc *bt_bmc, -> > > > ? ?????struct platform_device *pdev) -> > ?{ -> > > > ? struct device *dev = &pdev->dev; +> > > > struct platform_device *pdev) +> > { +> > > > struct device *dev = &pdev->dev; > > > > - u32 reg; -> > > > ? int rc; -> > ? -> > > > ? bt_bmc->irq = platform_get_irq(pdev, 0); +> > > > int rc; +> > +> > > > bt_bmc->irq = platform_get_irq(pdev, 0); > > @@ -405,18 +429,17 @@ static int bt_bmc_config_irq(struct bt_bmc *bt_bmc, -> > > > ? ?* will be cleared (along with B2H) when we can write the next -> > > > ? ?* message to the BT buffer -> > > > ? ?*/ +> > > > * will be cleared (along with B2H) when we can write the next +> > > > * message to the BT buffer +> > > > */ > > > > - reg = ioread32(bt_bmc->base + BT_CR1); > > > > - reg |= BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY; > > > > - iowrite32(reg, bt_bmc->base + BT_CR1); > > > > + rc = regmap_update_bits(bt_bmc->map, bt_bmc->offset + BT_CR1, > > > > + (BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY), > > > > + (BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY)); -> > ? +> > > > > > - return 0; > > > > + return rc; -> > ?} -> > ? -> > ?static int bt_bmc_probe(struct platform_device *pdev) -> > ?{ -> > > > ? struct bt_bmc *bt_bmc; -> > > > ? struct device *dev; +> > } +> > +> > static int bt_bmc_probe(struct platform_device *pdev) +> > { +> > > > struct bt_bmc *bt_bmc; +> > > > struct device *dev; > > > > - struct resource *res; -> > > > ? int rc; -> > ? -> > > > ? if (!pdev || !pdev->dev.of_node) +> > > > int rc; +> > +> > > > if (!pdev || !pdev->dev.of_node) > > @@ -431,10 +454,27 @@ static int bt_bmc_probe(struct platform_device *pdev) -> > ? -> > > > ? dev_set_drvdata(&pdev->dev, bt_bmc); -> > ? +> > +> > > > dev_set_drvdata(&pdev->dev, bt_bmc); +> > > > > > - res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > > > - bt_bmc->base = devm_ioremap_resource(&pdev->dev, res); > > > > - if (IS_ERR(bt_bmc->base)) @@ -223,9 +223,9 @@ Andrew > > > > + void __iomem *base; > > + > > > > + /* -> > > > + ?* Assume it's not the MFD-based devicetree description, in -> > > > + ?* which case generate a regmap ourselves -> > > > + ?*/ +> > > > + * Assume it's not the MFD-based devicetree description, in +> > > > + * which case generate a regmap ourselves +> > > > + */ > > > > + res = platform_get_resource(pdev, IORESOURCE_MEM, 0); > > > > + base = devm_ioremap_resource(&pdev->dev, res); > > > > + if (IS_ERR(base)) @@ -238,35 +238,28 @@ Andrew > > > > + if (rc) > > > > + return rc; > > > > + } -> > ? -> > > > ? mutex_init(&bt_bmc->mutex); -> > > > ? init_waitqueue_head(&bt_bmc->queue); +> > +> > > > mutex_init(&bt_bmc->mutex); +> > > > init_waitqueue_head(&bt_bmc->queue); > > @@ -461,12 +501,12 @@ static int bt_bmc_probe(struct platform_device *pdev) -> > > > ? add_timer(&bt_bmc->poll_timer); -> > > > ? } -> > ? +> > > > add_timer(&bt_bmc->poll_timer); +> > > > } +> > > > > > - iowrite32((BT_IO_BASE << BT_CR0_IO_BASE) | -> > > > - ??(BT_IRQ << BT_CR0_IRQ) | -> > > > - ??BT_CR0_EN_CLR_SLV_RDP | -> > > > - ??BT_CR0_EN_CLR_SLV_WRP | -> > > > - ??BT_CR0_ENABLE_IBT, -> > > > - ??bt_bmc->base + BT_CR0); +> > > > - (BT_IRQ << BT_CR0_IRQ) | +> > > > - BT_CR0_EN_CLR_SLV_RDP | +> > > > - BT_CR0_EN_CLR_SLV_WRP | +> > > > - BT_CR0_ENABLE_IBT, +> > > > - bt_bmc->base + BT_CR0); > > > > + regmap_write(bt_bmc->map, bt_bmc->offset + BT_CR0, -> > > > + ?????(BT_IO_BASE << BT_CR0_IO_BASE) | -> > > > + ?????(BT_IRQ << BT_CR0_IRQ) | -> > > > + ?????BT_CR0_EN_CLR_SLV_RDP | -> > > > + ?????BT_CR0_EN_CLR_SLV_WRP | -> > > > + ?????BT_CR0_ENABLE_IBT); -> > ? -> > > > ? clr_b_busy(bt_bmc); -> > ? +> > > > + (BT_IO_BASE << BT_CR0_IO_BASE) | +> > > > + (BT_IRQ << BT_CR0_IRQ) | +> > > > + BT_CR0_EN_CLR_SLV_RDP | +> > > > + BT_CR0_EN_CLR_SLV_WRP | +> > > > + BT_CR0_ENABLE_IBT); +> > +> > > > clr_b_busy(bt_bmc); +> > > > > -> --------------- next part -------------- -A non-text attachment was scrubbed... -Name: signature.asc -Type: application/pgp-signature -Size: 801 bytes -Desc: This is a digitally signed message part -URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161207/5506c9cf/attachment-0001.sig> +> diff --git a/N1/2.bin b/N1/2.bin new file mode 100644 index 0000000..b62f095 --- /dev/null +++ b/N1/2.bin @@ -0,0 +1,16 @@ +-----BEGIN PGP SIGNATURE----- + +iQIcBAABCgAGBQJYR1IZAAoJEJ0dnzgO5LT5FEgP/R4DwNs/P67UZftn2wdYgzT+ +zQ0/qxM9ajgTAcCmDIftp8bGzmk6vPSMtfXcWcqtQT0RmbM2UhHAJ9GUYV2nY8n0 +rXOS8RvaWK2zNJmMRaFXGFAYz1D/GhsSWD+9/VVyeJ4DTDTTqE4YLJqSv7mTiAGH +FG5F58aqUB3ltb8M8HLEyThlEwCy9x9jSHch9CFvBdXMJG2860EN3qWoVozUJmEO +XpYd9vpkQKMIl1n7EdvWgCuodfwygkoLS0afiwFjfs5yVfVqpzhGNxGw8jPDdMNr +yzPH7pHQkff6IQZi0Z/bfTwRI9qHbTw5GMLjlk1ZsJnn2jCUn8kgeJishiH0Q9Cm +4YyzZW6bvLKCgM4+s8fIr6eJmq+KmaXTgHC05ZwUquxuU3FTPbI8CMtI1gjd/3PE +GgjmktecutW8J3YxbW0dgZjqZOPsHntvIvrPMFzPlGw/mPwWMVA8tur8HyZAwKEP +VI361OjukVMBxDXUTgKtfjUdH+yvysrUmQTlhZEvXQdmTOWe8isweEyfsP2U2dEJ +aW5qoK6cHMgmo31Vey8+NXuqZwBpG4E0KG0NfTFyRQpcfhzQRQsPH+haq9B/GgkB +UZVngo3oqMtbJ7aHmxpcjYq5XYacyk734o/izOOkbh7IW2Lq3scBReacYP1SPcS/ +t6VMqkqpu9AsOE5LOlL0 +=eWQm +-----END PGP SIGNATURE----- diff --git a/N1/2.hdr b/N1/2.hdr new file mode 100644 index 0000000..da6d245 --- /dev/null +++ b/N1/2.hdr @@ -0,0 +1,3 @@ +Content-Type: application/pgp-signature; name="signature.asc" +Content-Description: This is a digitally signed message part +Content-Transfer-Encoding: 7bit diff --git a/a/content_digest b/N1/content_digest index da907bd..c052e19 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -1,13 +1,18 @@ "ref\020161206025715.2002-1-andrew@aj.id.au\0" "ref\036014e0c-82f8-eeaf-ee2a-6c1e413b957d@kaod.org\0" - "From\0andrew@aj.id.au (Andrew Jeffery)\0" - "Subject\0[PATCH] ipmi: bt-bmc: Use a regmap for register access\0" + "From\0Andrew Jeffery <andrew@aj.id.au>\0" + "Subject\0Re: [PATCH] ipmi: bt-bmc: Use a regmap for register access\0" "Date\0Wed, 07 Dec 2016 11:04:41 +1100\0" - "To\0linux-arm-kernel@lists.infradead.org\0" - "\00:1\0" + "To\0C\303\251dric Le Goater <clg@kaod.org>" + " Corey Minyard <minyard@acm.org>\0" + "Cc\0Joel Stanley <joel@jms.id.au>" + openipmi-developer@lists.sourceforge.net + linux-arm-kernel@lists.infradead.org + " linux-kernel@vger.kernel.org\0" + "\01:1\0" "b\0" - "On Tue, 2016-12-06 at 16:02 +0100, C?dric Le Goater wrote:\n" - "> [ this is a resend bc of some mailing list issues]?\n" + "On Tue, 2016-12-06 at 16:02 +0100, C\303\251dric Le Goater wrote:\n" + "> [ this is a resend bc of some mailing list issues]\302\240\n" "\n" "Thanks for resending.\n" "\n" @@ -30,7 +35,7 @@ "> > \n" "> > Signed-off-by: Andrew Jeffery <andrew@aj.id.au>\n" "> \n" - "> It would be nice to have an example of the associated binding.?\n" + "> It would be nice to have an example of the associated binding.\302\240\n" "> I did not see it.\n" "\n" "Essentially because the approach of the patch means there's no required\n" @@ -38,7 +43,7 @@ "patches I've sent out, a partial devicetree using the new bindings\n" "might look something like:\n" "\n" - "lpc: lpc at 1e789000 {\n" + "lpc: lpc@1e789000 {\n" "\tcompatible = \"aspeed,ast2500-lpc\", \"simple-mfd\";\n" "\treg = <0x1e789000 0x1000>;\n" "\n" @@ -46,13 +51,13 @@ "\t#size-cells = <1>;\n" "\tranges = <0 0x1e789000 0x1000>;\n" "\n" - "\tlpc_bmc: lpc-bmc at 0 {\n" + "\tlpc_bmc: lpc-bmc@0 {\n" "\t\tcompatible = \"aspeed,ast2500-lpc-bmc\";\n" "\t\treg = <0x0 0x80>;\n" "\t\treg-io-width = <1>;\n" "\t};\n" "\n" - "\tlpc_host: lpc-host at 80 {\n" + "\tlpc_host: lpc-host@80 {\n" "\t\tcompatible = \"aspeed,ast2500-lpc-host\", \"simple-mfd\", \"syscon\";\n" "\t\treg = <0x80 0x1e0>;\n" "\n" @@ -62,7 +67,7 @@ "\n" "\t\treg-io-width = <4>;\n" "\n" - "\t\tibt: ibt at c0 {\n" + "\t\tibt: ibt@c0 {\n" "\t\t\tcompatible = \"aspeed,ast2400-bt-bmc\";\n" "\t\t\treg = <0xc0 0x18>;\n" "\t\t\tinterrupts = <8>;\n" @@ -80,69 +85,69 @@ "\n" "> A part from that :\n" "> \n" - "> > Reviewed-by: C?dric Le Goater <clg@kaod.org>\n" + "> > Reviewed-by: C\303\251dric Le Goater <clg@kaod.org>\n" "> \n" "> Thanks,\n" "> \n" "> C.\n" "> \n" "> > ---\n" - "> > ?drivers/char/ipmi/Kconfig??|??1 +\n" - "> > ?drivers/char/ipmi/bt-bmc.c | 82 ++++++++++++++++++++++++++++++++++------------\n" - "> > ?2 files changed, 62 insertions(+), 21 deletions(-)\n" + "> > \302\240drivers/char/ipmi/Kconfig\302\240\302\240|\302\240\302\2401 +\n" + "> > \302\240drivers/char/ipmi/bt-bmc.c | 82 ++++++++++++++++++++++++++++++++++------------\n" + "> > \302\2402 files changed, 62 insertions(+), 21 deletions(-)\n" "> > \n" "> > diff --git a/drivers/char/ipmi/Kconfig b/drivers/char/ipmi/Kconfig\n" "> > index 7f816655cbbf..b5d48d9af124 100644\n" "> > --- a/drivers/char/ipmi/Kconfig\n" "> > +++ b/drivers/char/ipmi/Kconfig\n" "> > @@ -79,6 +79,7 @@ endif # IPMI_HANDLER\n" - "> > ?\n" - "> > ?config ASPEED_BT_IPMI_BMC\n" - "> > > > ?\tdepends on ARCH_ASPEED\n" - "> > +????????depends on REGMAP && REGMAP_MMIO && MFD_SYSCON\n" - "> > > > ?\ttristate \"BT IPMI bmc driver\"\n" - "> > > > ?\thelp\n" - "> > > > ?\t??Provides a driver for the BT (Block Transfer) IPMI interface\n" + "> > \302\240\n" + "> > \302\240config ASPEED_BT_IPMI_BMC\n" + "> > > > \302\240\tdepends on ARCH_ASPEED\n" + "> > +\302\240\302\240\302\240\302\240\302\240\302\240\302\240\302\240depends on REGMAP && REGMAP_MMIO && MFD_SYSCON\n" + "> > > > \302\240\ttristate \"BT IPMI bmc driver\"\n" + "> > > > \302\240\thelp\n" + "> > > > \302\240\t\302\240\302\240Provides a driver for the BT (Block Transfer) IPMI interface\n" "> > diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c\n" "> > index fc9e8891eae3..ca1e20f6c6c5 100644\n" "> > --- a/drivers/char/ipmi/bt-bmc.c\n" "> > +++ b/drivers/char/ipmi/bt-bmc.c\n" "> > @@ -12,10 +12,13 @@\n" - "> > ?#include <linux/errno.h>\n" - "> > ?#include <linux/interrupt.h>\n" - "> > ?#include <linux/io.h>\n" + "> > \302\240#include <linux/errno.h>\n" + "> > \302\240#include <linux/interrupt.h>\n" + "> > \302\240#include <linux/io.h>\n" "> > +#include <linux/mfd/syscon.h>\n" - "> > ?#include <linux/miscdevice.h>\n" - "> > ?#include <linux/module.h>\n" + "> > \302\240#include <linux/miscdevice.h>\n" + "> > \302\240#include <linux/module.h>\n" "> > +#include <linux/of.h>\n" - "> > ?#include <linux/platform_device.h>\n" - "> > ?#include <linux/poll.h>\n" + "> > \302\240#include <linux/platform_device.h>\n" + "> > \302\240#include <linux/poll.h>\n" "> > +#include <linux/regmap.h>\n" - "> > ?#include <linux/sched.h>\n" - "> > ?#include <linux/timer.h>\n" - "> > ?\n" + "> > \302\240#include <linux/sched.h>\n" + "> > \302\240#include <linux/timer.h>\n" + "> > \302\240\n" "> > @@ -60,7 +63,8 @@\n" - "> > ?struct bt_bmc {\n" - "> > > > > > ?\tstruct device\t\tdev;\n" - "> > > > > > ?\tstruct miscdevice\tmiscdev;\n" + "> > \302\240struct bt_bmc {\n" + "> > > > > > \302\240\tstruct device\t\tdev;\n" + "> > > > > > \302\240\tstruct miscdevice\tmiscdev;\n" "> > > > > > -\tvoid __iomem\t\t*base;\n" "> > > > > > +\tstruct regmap\t\t*map;\n" "> > > > > > +\tint\t\t\toffset;\n" - "> > > > > > ?\tint\t\t\tirq;\n" - "> > > > > > ?\twait_queue_head_t\tqueue;\n" - "> > > > > > ?\tstruct timer_list\tpoll_timer;\n" + "> > > > > > \302\240\tint\t\t\tirq;\n" + "> > > > > > \302\240\twait_queue_head_t\tqueue;\n" + "> > > > > > \302\240\tstruct timer_list\tpoll_timer;\n" "> > @@ -69,14 +73,31 @@ struct bt_bmc {\n" - "> > ?\n" - "> > ?static atomic_t open_count = ATOMIC_INIT(0);\n" - "> > ?\n" + "> > \302\240\n" + "> > \302\240static atomic_t open_count = ATOMIC_INIT(0);\n" + "> > \302\240\n" "> > +static struct regmap_config bt_regmap_cfg = {\n" "> > > > +\t.reg_bits = 32,\n" "> > > > +\t.val_bits = 32,\n" "> > > > +\t.reg_stride = 4,\n" "> > +};\n" "> > +\n" - "> > ?static u8 bt_inb(struct bt_bmc *bt_bmc, int reg)\n" - "> > ?{\n" + "> > \302\240static u8 bt_inb(struct bt_bmc *bt_bmc, int reg)\n" + "> > \302\240{\n" "> > > > -\treturn ioread8(bt_bmc->base + reg);\n" "> > > > +\tuint32_t val = 0;\n" "> > > > +\tint rc;\n" @@ -152,75 +157,75 @@ "> > > > +\t\t\t__FILE__, __LINE__, rc);\n" "> > +\n" "> > > > +\treturn rc == 0 ? (u8) val : 0;\n" - "> > ?}\n" - "> > ?\n" - "> > ?static void bt_outb(struct bt_bmc *bt_bmc, u8 data, int reg)\n" - "> > ?{\n" + "> > \302\240}\n" + "> > \302\240\n" + "> > \302\240static void bt_outb(struct bt_bmc *bt_bmc, u8 data, int reg)\n" + "> > \302\240{\n" "> > > > -\tiowrite8(data, bt_bmc->base + reg);\n" "> > > > +\tint rc;\n" "> > +\n" "> > > > +\trc = regmap_write(bt_bmc->map, bt_bmc->offset + reg, data);\n" "> > > > +\tWARN(rc != 0, \"%s:%d: regmap_write() failed: %d\\n\",\n" "> > > > +\t\t\t__FILE__, __LINE__, rc);\n" - "> > ?}\n" - "> > ?\n" - "> > ?static void clr_rd_ptr(struct bt_bmc *bt_bmc)\n" + "> > \302\240}\n" + "> > \302\240\n" + "> > \302\240static void clr_rd_ptr(struct bt_bmc *bt_bmc)\n" "> > @@ -367,14 +388,18 @@ static irqreturn_t bt_bmc_irq(int irq, void *arg)\n" - "> > ?{\n" - "> > > > ?\tstruct bt_bmc *bt_bmc = arg;\n" - "> > > > ?\tu32 reg;\n" + "> > \302\240{\n" + "> > > > \302\240\tstruct bt_bmc *bt_bmc = arg;\n" + "> > > > \302\240\tu32 reg;\n" "> > > > +\tint rc;\n" "> > +\n" "> > > > +\trc = regmap_read(bt_bmc->map, bt_bmc->offset + BT_CR2, ®);\n" "> > > > +\tif (rc)\n" "> > > > +\t\treturn IRQ_NONE;\n" - "> > ?\n" + "> > \302\240\n" "> > > > -\treg = ioread32(bt_bmc->base + BT_CR2);\n" - "> > > > ?\treg &= BT_CR2_IRQ_H2B | BT_CR2_IRQ_HBUSY;\n" - "> > > > ?\tif (!reg)\n" - "> > > > ?\t\treturn IRQ_NONE;\n" - "> > ?\n" - "> > > > ?\t/* ack pending IRQs */\n" + "> > > > \302\240\treg &= BT_CR2_IRQ_H2B | BT_CR2_IRQ_HBUSY;\n" + "> > > > \302\240\tif (!reg)\n" + "> > > > \302\240\t\treturn IRQ_NONE;\n" + "> > \302\240\n" + "> > > > \302\240\t/* ack pending IRQs */\n" "> > > > -\tiowrite32(reg, bt_bmc->base + BT_CR2);\n" "> > > > +\tregmap_write(bt_bmc->map, bt_bmc->offset + BT_CR2, reg);\n" - "> > ?\n" - "> > > > ?\twake_up(&bt_bmc->queue);\n" - "> > > > ?\treturn IRQ_HANDLED;\n" + "> > \302\240\n" + "> > > > \302\240\twake_up(&bt_bmc->queue);\n" + "> > > > \302\240\treturn IRQ_HANDLED;\n" "> > @@ -384,7 +409,6 @@ static int bt_bmc_config_irq(struct bt_bmc *bt_bmc,\n" - "> > > > ?\t\t\t?????struct platform_device *pdev)\n" - "> > ?{\n" - "> > > > ?\tstruct device *dev = &pdev->dev;\n" + "> > > > \302\240\t\t\t\302\240\302\240\302\240\302\240\302\240struct platform_device *pdev)\n" + "> > \302\240{\n" + "> > > > \302\240\tstruct device *dev = &pdev->dev;\n" "> > > > -\tu32 reg;\n" - "> > > > ?\tint rc;\n" - "> > ?\n" - "> > > > ?\tbt_bmc->irq = platform_get_irq(pdev, 0);\n" + "> > > > \302\240\tint rc;\n" + "> > \302\240\n" + "> > > > \302\240\tbt_bmc->irq = platform_get_irq(pdev, 0);\n" "> > @@ -405,18 +429,17 @@ static int bt_bmc_config_irq(struct bt_bmc *bt_bmc,\n" - "> > > > ?\t?* will be cleared (along with B2H) when we can write the next\n" - "> > > > ?\t?* message to the BT buffer\n" - "> > > > ?\t?*/\n" + "> > > > \302\240\t\302\240* will be cleared (along with B2H) when we can write the next\n" + "> > > > \302\240\t\302\240* message to the BT buffer\n" + "> > > > \302\240\t\302\240*/\n" "> > > > -\treg = ioread32(bt_bmc->base + BT_CR1);\n" "> > > > -\treg |= BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY;\n" "> > > > -\tiowrite32(reg, bt_bmc->base + BT_CR1);\n" "> > > > +\trc = regmap_update_bits(bt_bmc->map, bt_bmc->offset + BT_CR1,\n" "> > > > +\t\t\t\t(BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY),\n" "> > > > +\t\t\t\t(BT_CR1_IRQ_H2B | BT_CR1_IRQ_HBUSY));\n" - "> > ?\n" + "> > \302\240\n" "> > > > -\treturn 0;\n" "> > > > +\treturn rc;\n" - "> > ?}\n" - "> > ?\n" - "> > ?static int bt_bmc_probe(struct platform_device *pdev)\n" - "> > ?{\n" - "> > > > ?\tstruct bt_bmc *bt_bmc;\n" - "> > > > ?\tstruct device *dev;\n" + "> > \302\240}\n" + "> > \302\240\n" + "> > \302\240static int bt_bmc_probe(struct platform_device *pdev)\n" + "> > \302\240{\n" + "> > > > \302\240\tstruct bt_bmc *bt_bmc;\n" + "> > > > \302\240\tstruct device *dev;\n" "> > > > -\tstruct resource *res;\n" - "> > > > ?\tint rc;\n" - "> > ?\n" - "> > > > ?\tif (!pdev || !pdev->dev.of_node)\n" + "> > > > \302\240\tint rc;\n" + "> > \302\240\n" + "> > > > \302\240\tif (!pdev || !pdev->dev.of_node)\n" "> > @@ -431,10 +454,27 @@ static int bt_bmc_probe(struct platform_device *pdev)\n" - "> > ?\n" - "> > > > ?\tdev_set_drvdata(&pdev->dev, bt_bmc);\n" - "> > ?\n" + "> > \302\240\n" + "> > > > \302\240\tdev_set_drvdata(&pdev->dev, bt_bmc);\n" + "> > \302\240\n" "> > > > -\tres = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n" "> > > > -\tbt_bmc->base = devm_ioremap_resource(&pdev->dev, res);\n" "> > > > -\tif (IS_ERR(bt_bmc->base))\n" @@ -231,9 +236,9 @@ "> > > > +\t\tvoid __iomem *base;\n" "> > +\n" "> > > > +\t\t/*\n" - "> > > > +\t\t?* Assume it's not the MFD-based devicetree description, in\n" - "> > > > +\t\t?* which case generate a regmap ourselves\n" - "> > > > +\t\t?*/\n" + "> > > > +\t\t\302\240* Assume it's not the MFD-based devicetree description, in\n" + "> > > > +\t\t\302\240* which case generate a regmap ourselves\n" + "> > > > +\t\t\302\240*/\n" "> > > > +\t\tres = platform_get_resource(pdev, IORESOURCE_MEM, 0);\n" "> > > > +\t\tbase = devm_ioremap_resource(&pdev->dev, res);\n" "> > > > +\t\tif (IS_ERR(base))\n" @@ -246,37 +251,50 @@ "> > > > +\t\tif (rc)\n" "> > > > +\t\t\treturn rc;\n" "> > > > +\t}\n" - "> > ?\n" - "> > > > ?\tmutex_init(&bt_bmc->mutex);\n" - "> > > > ?\tinit_waitqueue_head(&bt_bmc->queue);\n" + "> > \302\240\n" + "> > > > \302\240\tmutex_init(&bt_bmc->mutex);\n" + "> > > > \302\240\tinit_waitqueue_head(&bt_bmc->queue);\n" "> > @@ -461,12 +501,12 @@ static int bt_bmc_probe(struct platform_device *pdev)\n" - "> > > > ?\t\tadd_timer(&bt_bmc->poll_timer);\n" - "> > > > ?\t}\n" - "> > ?\n" + "> > > > \302\240\t\tadd_timer(&bt_bmc->poll_timer);\n" + "> > > > \302\240\t}\n" + "> > \302\240\n" "> > > > -\tiowrite32((BT_IO_BASE << BT_CR0_IO_BASE) |\n" - "> > > > -\t\t??(BT_IRQ << BT_CR0_IRQ) |\n" - "> > > > -\t\t??BT_CR0_EN_CLR_SLV_RDP |\n" - "> > > > -\t\t??BT_CR0_EN_CLR_SLV_WRP |\n" - "> > > > -\t\t??BT_CR0_ENABLE_IBT,\n" - "> > > > -\t\t??bt_bmc->base + BT_CR0);\n" + "> > > > -\t\t\302\240\302\240(BT_IRQ << BT_CR0_IRQ) |\n" + "> > > > -\t\t\302\240\302\240BT_CR0_EN_CLR_SLV_RDP |\n" + "> > > > -\t\t\302\240\302\240BT_CR0_EN_CLR_SLV_WRP |\n" + "> > > > -\t\t\302\240\302\240BT_CR0_ENABLE_IBT,\n" + "> > > > -\t\t\302\240\302\240bt_bmc->base + BT_CR0);\n" "> > > > +\tregmap_write(bt_bmc->map, bt_bmc->offset + BT_CR0,\n" - "> > > > +\t\t?????(BT_IO_BASE << BT_CR0_IO_BASE) |\n" - "> > > > +\t\t?????(BT_IRQ << BT_CR0_IRQ) |\n" - "> > > > +\t\t?????BT_CR0_EN_CLR_SLV_RDP |\n" - "> > > > +\t\t?????BT_CR0_EN_CLR_SLV_WRP |\n" - "> > > > +\t\t?????BT_CR0_ENABLE_IBT);\n" - "> > ?\n" - "> > > > ?\tclr_b_busy(bt_bmc);\n" - "> > ?\n" + "> > > > +\t\t\302\240\302\240\302\240\302\240\302\240(BT_IO_BASE << BT_CR0_IO_BASE) |\n" + "> > > > +\t\t\302\240\302\240\302\240\302\240\302\240(BT_IRQ << BT_CR0_IRQ) |\n" + "> > > > +\t\t\302\240\302\240\302\240\302\240\302\240BT_CR0_EN_CLR_SLV_RDP |\n" + "> > > > +\t\t\302\240\302\240\302\240\302\240\302\240BT_CR0_EN_CLR_SLV_WRP |\n" + "> > > > +\t\t\302\240\302\240\302\240\302\240\302\240BT_CR0_ENABLE_IBT);\n" + "> > \302\240\n" + "> > > > \302\240\tclr_b_busy(bt_bmc);\n" + "> > \302\240\n" "> > \n" "> \n" - "> \n" - "-------------- next part --------------\n" - "A non-text attachment was scrubbed...\n" - "Name: signature.asc\n" - "Type: application/pgp-signature\n" - "Size: 801 bytes\n" - "Desc: This is a digitally signed message part\n" - URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20161207/5506c9cf/attachment-0001.sig> + > + "\01:2\0" + "fn\0signature.asc\0" + "d\0This is a digitally signed message part\0" + "b\0" + "-----BEGIN PGP SIGNATURE-----\n" + "\n" + "iQIcBAABCgAGBQJYR1IZAAoJEJ0dnzgO5LT5FEgP/R4DwNs/P67UZftn2wdYgzT+\n" + "zQ0/qxM9ajgTAcCmDIftp8bGzmk6vPSMtfXcWcqtQT0RmbM2UhHAJ9GUYV2nY8n0\n" + "rXOS8RvaWK2zNJmMRaFXGFAYz1D/GhsSWD+9/VVyeJ4DTDTTqE4YLJqSv7mTiAGH\n" + "FG5F58aqUB3ltb8M8HLEyThlEwCy9x9jSHch9CFvBdXMJG2860EN3qWoVozUJmEO\n" + "XpYd9vpkQKMIl1n7EdvWgCuodfwygkoLS0afiwFjfs5yVfVqpzhGNxGw8jPDdMNr\n" + "yzPH7pHQkff6IQZi0Z/bfTwRI9qHbTw5GMLjlk1ZsJnn2jCUn8kgeJishiH0Q9Cm\n" + "4YyzZW6bvLKCgM4+s8fIr6eJmq+KmaXTgHC05ZwUquxuU3FTPbI8CMtI1gjd/3PE\n" + "GgjmktecutW8J3YxbW0dgZjqZOPsHntvIvrPMFzPlGw/mPwWMVA8tur8HyZAwKEP\n" + "VI361OjukVMBxDXUTgKtfjUdH+yvysrUmQTlhZEvXQdmTOWe8isweEyfsP2U2dEJ\n" + "aW5qoK6cHMgmo31Vey8+NXuqZwBpG4E0KG0NfTFyRQpcfhzQRQsPH+haq9B/GgkB\n" + "UZVngo3oqMtbJ7aHmxpcjYq5XYacyk734o/izOOkbh7IW2Lq3scBReacYP1SPcS/\n" + "t6VMqkqpu9AsOE5LOlL0\n" + "=eWQm\n" + "-----END PGP SIGNATURE-----\n" -586086c318db4611e0c19173ec317e8caba7508774582fd6eb3339571688c9f4 +ed054fd3a6038b13da5bb34e0e6d4c1baeb4fe8965a927bdcd219a05aaf61805
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.