|
@@ -183,3 +183,83 @@ struct ia64_machine_vector {
|
|
|
ia64_mv_inb_t *inb;
|
|
|
ia64_mv_inw_t *inw;
|
|
|
ia64_mv_inl_t *inl;
|
|
|
+ ia64_mv_outb_t *outb;
|
|
|
+ ia64_mv_outw_t *outw;
|
|
|
+ ia64_mv_outl_t *outl;
|
|
|
+ ia64_mv_mmiowb_t *mmiowb;
|
|
|
+ ia64_mv_readb_t *readb;
|
|
|
+ ia64_mv_readw_t *readw;
|
|
|
+ ia64_mv_readl_t *readl;
|
|
|
+ ia64_mv_readq_t *readq;
|
|
|
+ ia64_mv_readb_relaxed_t *readb_relaxed;
|
|
|
+ ia64_mv_readw_relaxed_t *readw_relaxed;
|
|
|
+ ia64_mv_readl_relaxed_t *readl_relaxed;
|
|
|
+ ia64_mv_readq_relaxed_t *readq_relaxed;
|
|
|
+ ia64_mv_migrate_t *migrate;
|
|
|
+ ia64_mv_setup_msi_irq_t *setup_msi_irq;
|
|
|
+ ia64_mv_teardown_msi_irq_t *teardown_msi_irq;
|
|
|
+ ia64_mv_pci_fixup_bus_t *pci_fixup_bus;
|
|
|
+ ia64_mv_kernel_launch_event_t *kernel_launch_event;
|
|
|
+} __attribute__((__aligned__(16))); /* align attrib? see above comment */
|
|
|
+
|
|
|
+#define MACHVEC_INIT(name) \
|
|
|
+{ \
|
|
|
+ #name, \
|
|
|
+ platform_setup, \
|
|
|
+ platform_cpu_init, \
|
|
|
+ platform_irq_init, \
|
|
|
+ platform_send_ipi, \
|
|
|
+ platform_timer_interrupt, \
|
|
|
+ platform_global_tlb_purge, \
|
|
|
+ platform_tlb_migrate_finish, \
|
|
|
+ platform_dma_init, \
|
|
|
+ platform_dma_get_required_mask, \
|
|
|
+ platform_dma_get_ops, \
|
|
|
+ platform_irq_to_vector, \
|
|
|
+ platform_local_vector_to_irq, \
|
|
|
+ platform_pci_get_legacy_mem, \
|
|
|
+ platform_pci_legacy_read, \
|
|
|
+ platform_pci_legacy_write, \
|
|
|
+ platform_inb, \
|
|
|
+ platform_inw, \
|
|
|
+ platform_inl, \
|
|
|
+ platform_outb, \
|
|
|
+ platform_outw, \
|
|
|
+ platform_outl, \
|
|
|
+ platform_mmiowb, \
|
|
|
+ platform_readb, \
|
|
|
+ platform_readw, \
|
|
|
+ platform_readl, \
|
|
|
+ platform_readq, \
|
|
|
+ platform_readb_relaxed, \
|
|
|
+ platform_readw_relaxed, \
|
|
|
+ platform_readl_relaxed, \
|
|
|
+ platform_readq_relaxed, \
|
|
|
+ platform_migrate, \
|
|
|
+ platform_setup_msi_irq, \
|
|
|
+ platform_teardown_msi_irq, \
|
|
|
+ platform_pci_fixup_bus, \
|
|
|
+ platform_kernel_launch_event \
|
|
|
+}
|
|
|
+
|
|
|
+extern struct ia64_machine_vector ia64_mv;
|
|
|
+extern void machvec_init (const char *name);
|
|
|
+extern void machvec_init_from_cmdline(const char *cmdline);
|
|
|
+
|
|
|
+# else
|
|
|
+# error Unknown configuration. Update arch/ia64/include/asm/machvec.h.
|
|
|
+# endif /* CONFIG_IA64_GENERIC */
|
|
|
+
|
|
|
+extern void swiotlb_dma_init(void);
|
|
|
+extern struct dma_map_ops *dma_get_ops(struct device *);
|
|
|
+
|
|
|
+/*
|
|
|
+ * Define default versions so we can extend machvec for new platforms without having
|
|
|
+ * to update the machvec files for all existing platforms.
|
|
|
+ */
|
|
|
+#ifndef platform_setup
|
|
|
+# define platform_setup machvec_setup
|
|
|
+#endif
|
|
|
+#ifndef platform_cpu_init
|
|
|
+# define platform_cpu_init machvec_noop
|
|
|
+#endif
|