if UNISYSSPAR
 
 source "drivers/staging/unisys/visorutil/Kconfig"
-source "drivers/staging/unisys/visorchipset/Kconfig"
 source "drivers/staging/unisys/visorbus/Kconfig"
 
 endif # UNISYSSPAR
 
 # Makefile for Unisys SPAR drivers
 #
 obj-$(CONFIG_UNISYS_VISORUTIL)         += visorutil/
-obj-$(CONFIG_UNISYS_VISORCHIPSET)      += visorchipset/
 obj-$(CONFIG_UNISYS_VISORBUS)          += visorbus/
 
 
 config UNISYS_VISORBUS
        tristate "Unisys visorbus driver"
-       depends on UNISYSSPAR && UNISYS_VISORUTIL && UNISYS_VISORCHIPSET
+       depends on UNISYSSPAR && UNISYS_VISORUTIL
        ---help---
        If you say Y here, you will enable the Unisys visorbus driver.
 
 
 visorbus-y := visorbus_main.o
 visorbus-y += visorchannel.o
+visorbus-y += visorchipset.o
 
 ccflags-y += -Idrivers/staging/unisys/include
-ccflags-y += -Idrivers/staging/unisys/visorchipset
 ccflags-y += -Idrivers/staging/unisys/common-spar/include
 ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels
 ccflags-y += -Idrivers/staging/unisys/visorutil
 
 #include <linux/uuid.h>
 
 #include "visorbus.h"
-#include "visorchipset.h"
+#include "visorbus_private.h"
 #include "version.h"
 #include "timskmod.h"
 #include "periodic_work.h"
 #include "guestlinuxdebug.h"
 #include "vbusdeviceinfo.h"
 
+#define MYDRVNAME "visorbus"
+
 /* module parameters */
 int visorbus_debug;
 int visorbus_forcematch;
        unsigned long max_size;
 };
 
-static int __init
+int __init
 visorbus_init(void)
 {
        int rc = 0;
        return rc;
 }
 
-static void
+void
 visorbus_exit(void)
 {
        struct list_head *listentry, *listtmp;
                 "non-0 to just create 2 serial devices on the same channel");
 int visorbus_serialloopbacktest = 0;
 
-module_init(visorbus_init);
-module_exit(visorbus_exit);
-
 MODULE_AUTHOR("Unisys");
 MODULE_LICENSE("GPL");
 MODULE_DESCRIPTION("Supervisor bus driver for service partition: ver " VERSION);
 
 int visorchipset_file_init(dev_t majorDev,
                           struct visorchannel **pControlVm_channel);
 void visorchipset_file_cleanup(dev_t major_dev);
+
+/* visorbus init and exit functions */
+int __init visorbus_init(void);
+void visorbus_exit(void);
 #endif
 
 #include "uisutils.h"
 #include "controlvmcompletionstatus.h"
 #include "guestlinuxdebug.h"
-#include "visorchipset.h"
+#include "visorbus_private.h"
 
 
 #include <linux/ctype.h>
  * process it again the next time controlvm_periodic_work() runs.
  */
 static struct controlvm_message controlvm_pending_msg;
-static bool controlvm_pending_msg_valid = false;
+static bool controlvm_pending_msg_valid;
 
 /* This identifies a data buffer that has been received via a controlvm messages
  * in a remote --> local CONTROLVM_TRANSMIT_FILE conversation.
                goto cleanup;
        }
        POSTCODE_LINUX_2(CHIPSET_INIT_SUCCESS_PC, POSTCODE_SEVERITY_INFO);
-       rc = 0;
+
+       rc = visorbus_init();
 cleanup:
        if (rc) {
                POSTCODE_LINUX_3(CHIPSET_INIT_FAILURE_PC, rc,
 {
        POSTCODE_LINUX_2(DRIVER_EXIT_PC, POSTCODE_SEVERITY_INFO);
 
+       visorbus_exit();
+
        if (visorchipset_disable_controlvm) {
                ;
        } else {
 
+++ /dev/null
-#
-# Unisys visorchipset configuration
-#
-
-config UNISYS_VISORCHIPSET
-       tristate "Unisys visorchipset driver"
-       select UNISYS_VISORUTIL
-       select UNISYS_VISORBUS
-       ---help---
-       If you say Y here, you will enable the Unisys visorchipset driver.
-
 
+++ /dev/null
-#
-# Makefile for Unisys visorchipset
-#
-
-obj-$(CONFIG_UNISYS_VISORCHIPSET)      += visorchipset.o
-
-visorchipset-y := visorchipset_main.o
-
-ccflags-y += -Idrivers/staging/unisys/include
-ccflags-y += -Idrivers/staging/unisys/uislib
-ccflags-y += -Idrivers/staging/unisys/common-spar/include
-ccflags-y += -Idrivers/staging/unisys/common-spar/include/channels
-ccflags-y += -Idrivers/staging/unisys/visorutil
-ccflags-y += -Idrivers/staging/unisys/visorbus
-ccflags-y += -Iinclude/generated