Lines Matching +full:rc +full:- +full:map +full:- +full:name

1 // SPDX-License-Identifier: GPL-2.0
7 #define pr_fmt(fmt) "nuvoton-kcs-bmc: " fmt
22 #define DEVICE_NAME "npcm-kcs-bmc"
50 * Registers in this module are 8 bits. An 8-bit register must be accessed
51 * by an 8-bit read or write.
68 struct regmap *map; member
83 int rc; in npcm7xx_kcs_inb() local
85 rc = regmap_read(priv->map, reg, &val); in npcm7xx_kcs_inb()
86 WARN(rc != 0, "regmap_read() failed: %d\n", rc); in npcm7xx_kcs_inb()
88 return rc == 0 ? (u8)val : 0; in npcm7xx_kcs_inb()
94 int rc; in npcm7xx_kcs_outb() local
96 rc = regmap_write(priv->map, reg, data); in npcm7xx_kcs_outb()
97 WARN(rc != 0, "regmap_write() failed: %d\n", rc); in npcm7xx_kcs_outb()
104 regmap_update_bits(priv->map, priv->reg->ctl, KCS_CTL_IBFIE, in npcm7xx_kcs_enable_channel()
107 regmap_update_bits(priv->map, priv->reg->ie, KCS_IE_IRQE | KCS_IE_HIRQE, in npcm7xx_kcs_enable_channel()
124 struct device *dev = &pdev->dev; in npcm7xx_kcs_config_irq()
137 struct device *dev = &pdev->dev; in npcm7xx_kcs_probe()
141 int rc; in npcm7xx_kcs_probe() local
143 rc = of_property_read_u32(dev->of_node, "kcs_chan", &chan); in npcm7xx_kcs_probe()
144 if (rc != 0 || chan == 0 || chan > KCS_CHANNEL_MAX) { in npcm7xx_kcs_probe()
146 return -ENODEV; in npcm7xx_kcs_probe()
151 return -ENOMEM; in npcm7xx_kcs_probe()
154 priv->map = syscon_node_to_regmap(dev->parent->of_node); in npcm7xx_kcs_probe()
155 if (IS_ERR(priv->map)) { in npcm7xx_kcs_probe()
157 return -ENODEV; in npcm7xx_kcs_probe()
159 priv->reg = &npcm7xx_kcs_reg_tbl[chan - 1]; in npcm7xx_kcs_probe()
161 kcs_bmc->ioreg.idr = priv->reg->dib; in npcm7xx_kcs_probe()
162 kcs_bmc->ioreg.odr = priv->reg->dob; in npcm7xx_kcs_probe()
163 kcs_bmc->ioreg.str = priv->reg->sts; in npcm7xx_kcs_probe()
164 kcs_bmc->io_inputb = npcm7xx_kcs_inb; in npcm7xx_kcs_probe()
165 kcs_bmc->io_outputb = npcm7xx_kcs_outb; in npcm7xx_kcs_probe()
170 rc = npcm7xx_kcs_config_irq(kcs_bmc, pdev); in npcm7xx_kcs_probe()
171 if (rc) in npcm7xx_kcs_probe()
172 return rc; in npcm7xx_kcs_probe()
174 rc = misc_register(&kcs_bmc->miscdev); in npcm7xx_kcs_probe()
175 if (rc) { in npcm7xx_kcs_probe()
177 return rc; in npcm7xx_kcs_probe()
182 kcs_bmc->ioreg.idr, kcs_bmc->ioreg.odr, kcs_bmc->ioreg.str); in npcm7xx_kcs_probe()
189 struct kcs_bmc *kcs_bmc = dev_get_drvdata(&pdev->dev); in npcm7xx_kcs_remove()
191 misc_deregister(&kcs_bmc->miscdev); in npcm7xx_kcs_remove()
197 { .compatible = "nuvoton,npcm750-kcs-bmc" },
204 .name = DEVICE_NAME,