Lines Matching refs:mbox
63 return container_of(link->mbox, struct bcm2835_mbox, controller);
68 struct bcm2835_mbox *mbox = dev_id;
69 struct device *dev = mbox->controller.dev;
70 struct mbox_chan *link = &mbox->controller.chans[0];
72 while (!(readl(mbox->regs + MAIL0_STA) & ARM_MS_EMPTY)) {
73 u32 msg = readl(mbox->regs + MAIL0_RD);
82 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link);
85 spin_lock(&mbox->lock);
86 writel(msg, mbox->regs + MAIL1_WRT);
87 dev_dbg(mbox->controller.dev, "Request 0x%08X\n", msg);
88 spin_unlock(&mbox->lock);
94 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link);
97 writel(ARM_MC_IHAVEDATAIRQEN, mbox->regs + MAIL0_CNF);
104 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link);
106 writel(0, mbox->regs + MAIL0_CNF);
111 struct bcm2835_mbox *mbox = bcm2835_link_mbox(link);
114 spin_lock(&mbox->lock);
115 ret = !(readl(mbox->regs + MAIL1_STA) & ARM_MS_FULL);
116 spin_unlock(&mbox->lock);
127 static struct mbox_chan *bcm2835_mbox_index_xlate(struct mbox_controller *mbox,
133 return &mbox->chans[0];
141 struct bcm2835_mbox *mbox;
143 mbox = devm_kzalloc(dev, sizeof(*mbox), GFP_KERNEL);
144 if (mbox == NULL)
146 spin_lock_init(&mbox->lock);
149 bcm2835_mbox_irq, 0, dev_name(dev), mbox);
157 mbox->regs = devm_ioremap_resource(&pdev->dev, iomem);
158 if (IS_ERR(mbox->regs)) {
159 ret = PTR_ERR(mbox->regs);
164 mbox->controller.txdone_poll = true;
165 mbox->controller.txpoll_period = 5;
166 mbox->controller.ops = &bcm2835_mbox_chan_ops;
167 mbox->controller.of_xlate = &bcm2835_mbox_index_xlate;
168 mbox->controller.dev = dev;
169 mbox->controller.num_chans = 1;
170 mbox->controller.chans = devm_kzalloc(dev,
171 sizeof(*mbox->controller.chans), GFP_KERNEL);
172 if (!mbox->controller.chans)
175 ret = devm_mbox_controller_register(dev, &mbox->controller);
179 platform_set_drvdata(pdev, mbox);
186 { .compatible = "brcm,bcm2835-mbox", },
193 .name = "bcm2835-mbox",