2011-9-18 14:31:20

 

2011-9-18 14:31:20

总线和总线驱动

static struct platform_driver goldfish_pdev_bus_driver = {
 .probe = goldfish_pdev_bus_probe,
 .remove = __devexit_p(goldfish_pdev_bus_remove),
 .driver = {
  .name = "goldfish_pdev_bus"
 }
};

这个平台驱动有自己的probe和remove方法

注册了这样一个驱动

static int platform_match(struct device *dev, struct device_driver *drv)
{
 struct platform_device *pdev;

 pdev = container_of(dev, struct platform_device, dev);
 return (strcmp(pdev->name, drv->name) == 0);
}

比较名字是否相等

driver的方法和bus的方法不能冲突


如果读得是偏移0x地址是

PDEV_BUS_OP_ADD_DEV

static int __devinit goldfish_pdev_bus_probe(struct platform_device *pdev)
{
 int ret;
 struct resource *r;
 r = platform_get_resource(pdev, IORESOURCE_IO, 0);
 if(r == NULL)
  return -EINVAL;
 pdev_bus_base = IO_ADDRESS(r->start);

 r = platform_get_resource(pdev, IORESOURCE_IRQ, 0);
 if(r == NULL)
  return -EINVAL;
 pdev_bus_irq = r->start;

 ret = request_irq(pdev_bus_irq, goldfish_pdev_bus_interrupt, IRQF_SHARED, "goldfish_pdev_bus", pdev);
 if(ret)
  goto err_request_irq_failed;

 writel(PDEV_BUS_OP_INIT, pdev_bus_base + PDEV_BUS_OP);

err_request_irq_failed:
 return ret;
}

设备增删都是emulator通知的。。。。

还有一个 machine info

MACHINE_START(GOLDFISH, "Goldfish")
 .phys_io = IO_START,
 .io_pg_offst = ((IO_BASE) >> 18) & 0xfffc,
 .boot_params = 0x00000100,
 .map_io  = goldfish_map_io,
 .init_irq = goldfish_init_irq,
 .init_machine = goldfish_init,
 .timer  = &goldfish_timer,
MACHINE_END

这个在setup的时候使用

现在看一下这个视频采集设备在不在

名字相同就应该会出来

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值