Lines Matching refs:mbox

69 	return container_of(link->mbox, struct bcm2835_mbox, controller);  in bcm2835_link_mbox()
74 struct bcm2835_mbox *mbox = dev_id; in bcm2835_mbox_irq() local
75 struct device *dev = mbox->controller.dev; in bcm2835_mbox_irq()
76 struct mbox_chan *link = &mbox->controller.chans[0]; in bcm2835_mbox_irq()
78 while (!(readl(mbox->regs + MAIL0_STA) & ARM_MS_EMPTY)) { in bcm2835_mbox_irq()
79 u32 msg = readl(mbox->regs + MAIL0_RD); in bcm2835_mbox_irq()
88 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link); in bcm2835_send_data() local
91 spin_lock(&mbox->lock); in bcm2835_send_data()
92 writel(msg, mbox->regs + MAIL1_WRT); in bcm2835_send_data()
93 dev_dbg(mbox->controller.dev, "Request 0x%08X\n", msg); in bcm2835_send_data()
94 spin_unlock(&mbox->lock); in bcm2835_send_data()
100 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link); in bcm2835_startup() local
103 writel(ARM_MC_IHAVEDATAIRQEN, mbox->regs + MAIL0_CNF); in bcm2835_startup()
110 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link); in bcm2835_shutdown() local
112 writel(0, mbox->regs + MAIL0_CNF); in bcm2835_shutdown()
117 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link); in bcm2835_last_tx_done() local
120 spin_lock(&mbox->lock); in bcm2835_last_tx_done()
121 ret = !(readl(mbox->regs + MAIL1_STA) & ARM_MS_FULL); in bcm2835_last_tx_done()
122 spin_unlock(&mbox->lock); in bcm2835_last_tx_done()
133 static struct mbox_chan *bcm2835_mbox_index_xlate(struct mbox_controller *mbox, in bcm2835_mbox_index_xlate() argument
139 return &mbox->chans[0]; in bcm2835_mbox_index_xlate()
147 struct bcm2835_mbox *mbox; in bcm2835_mbox_probe() local
149 mbox = devm_kzalloc(dev, sizeof(*mbox), GFP_KERNEL); in bcm2835_mbox_probe()
150 if (mbox == NULL) in bcm2835_mbox_probe()
152 spin_lock_init(&mbox->lock); in bcm2835_mbox_probe()
155 bcm2835_mbox_irq, 0, dev_name(dev), mbox); in bcm2835_mbox_probe()
163 mbox->regs = devm_ioremap_resource(&pdev->dev, iomem); in bcm2835_mbox_probe()
164 if (IS_ERR(mbox->regs)) { in bcm2835_mbox_probe()
165 ret = PTR_ERR(mbox->regs); in bcm2835_mbox_probe()
170 mbox->controller.txdone_poll = true; in bcm2835_mbox_probe()
171 mbox->controller.txpoll_period = 5; in bcm2835_mbox_probe()
172 mbox->controller.ops = &bcm2835_mbox_chan_ops; in bcm2835_mbox_probe()
173 mbox->controller.of_xlate = &bcm2835_mbox_index_xlate; in bcm2835_mbox_probe()
174 mbox->controller.dev = dev; in bcm2835_mbox_probe()
175 mbox->controller.num_chans = 1; in bcm2835_mbox_probe()
176 mbox->controller.chans = devm_kzalloc(dev, in bcm2835_mbox_probe()
177 sizeof(*mbox->controller.chans), GFP_KERNEL); in bcm2835_mbox_probe()
178 if (!mbox->controller.chans) in bcm2835_mbox_probe()
181 ret = mbox_controller_register(&mbox->controller); in bcm2835_mbox_probe()
185 platform_set_drvdata(pdev, mbox); in bcm2835_mbox_probe()
193 struct bcm2835_mbox *mbox = platform_get_drvdata(pdev); in bcm2835_mbox_remove() local
194 mbox_controller_unregister(&mbox->controller); in bcm2835_mbox_remove()