On Apr 20, 2009, at 2:06 PM, Becky Bruce wrote:
On Apr 20, 2009, at 1:31 PM, Kumar Gala wrote:
On Apr 20, 2009, at 11:26 AM, Becky Bruce wrote:
+static int ppc_swiotlb_bus_notify(struct notifier_block *nb,
+ unsigned long action, void *data)
+{
+ struct device *dev = data;
+
+ /* We are only intereted in device addition */
+ if (action != BUS_NOTIFY_ADD_DEVICE)
+ return 0;
+
+ if (dma_get_mask(dev) < DMA_BIT_MASK(36))
+ set_dma_ops(dev, &swiotlb_dma_ops);
+
+ return NOTIFY_DONE;
+}
+
+static struct notifier_block ppc_swiotlb_plat_bus_notifier = {
+ .notifier_call = ppc_swiotlb_bus_notify,
+ .priority = 0,
+};
+
+static struct notifier_block ppc_swiotlb_of_bus_notifier = {
+ .notifier_call = ppc_swiotlb_bus_notify,
+ .priority = 0,
+};
+
+static int __init setup_bus_notifier(void)
+{
+ bus_register_notifier(&platform_bus_type,
+ &ppc_swiotlb_plat_bus_notifier);
+ bus_register_notifier(&of_platform_bus_type,
+ &ppc_swiotlb_of_bus_notifier);
+
+ return 0;
+}
I think we should move all this into the platform code for now. I
don't like having to duplicate it but that gives us the proper
flexibility for now.
Ugh, gross. I'd like to think about this some more.
I'm suggesting we do it one for FSL in fsl_soc.c, the 4xx guys can do
it once, etc. Since the behavior desired is going to be a bit unique
to SoCs/chipsets.
- k
_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@ozlabs.org
https://ozlabs.org/mailman/listinfo/linuxppc-dev