diff --git a/modules/wishbone/wb_onewire_master/wb_onewire_master.vhd b/modules/wishbone/wb_onewire_master/wb_onewire_master.vhd
index d8e256450170a3e61207650d8fe40a836e81e881..56c95d534f3a0db1e45d2731ff5818f0a6edbfca 100644
--- a/modules/wishbone/wb_onewire_master/wb_onewire_master.vhd
+++ b/modules/wishbone/wb_onewire_master/wb_onewire_master.vhd
@@ -1,29 +1,59 @@
+------------------------------------------------------------------------------
+-- Title      : Wishbone 1-Wire Master
+-- Project    : General Cores Library (gencores)
+------------------------------------------------------------------------------
+-- Author     : Tomasz Wlostowski
+-- Company    : CERN BE-Co-HT
+-- Created    : 2010-05-18
+-- Last update: 2011-10-04
+-- Platform   : FPGA-generic
+-- Standard   : VHDL'93
+-------------------------------------------------------------------------------
+-- Description: Wishbone Dallas/Maxim Semiconductor 1-Wire master.
+-------------------------------------------------------------------------------
+-- 
+-- Based on sockit_owm project Copyright (c) 2010 Iztok Jeras.
+-- http://opencores.org/project,sockit_owm
+--
+-- sockit_owm RTL is licensed under LGPL 3.
+
+-- wb_onewire_master.vhd copyright (c) 2011 CERN
+-------------------------------------------------------------------------------
+-- Revisions  :
+-- Date        Version  Author          Description
+-- 2011-09-18  1.0      twlostow        Created
+-------------------------------------------------------------------------------
+
 library ieee;
 use ieee.STD_LOGIC_1164.all;
 
 use work.gencores_pkg.all;
+use work.wishbone_pkg.all;
 
 entity wb_onewire_master is
 
   generic(
-    g_num_ports        : integer := 1;
-    g_ow_btp_normal    : string  := "5.0";
-    g_ow_btp_overdrive : string  := "1.0"
+    g_interface_mode      : t_wishbone_interface_mode      := CLASSIC;
+    g_address_granularity : t_wishbone_address_granularity := WORD;
+    g_num_ports           : integer                        := 1;
+    g_ow_btp_normal       : string                         := "5.0";
+    g_ow_btp_overdrive    : string                         := "1.0"
     );  
 
   port (
     clk_sys_i : in std_logic;
     rst_n_i   : in std_logic;
 
-    wb_cyc_i : in std_logic;
-    wb_sel_i : in std_logic_vector(3 downto 0);
-    wb_stb_i : in std_logic;
-    wb_we_i  : in std_logic;
-    wb_adr_i : in std_logic_vector(1 downto 0);
-    wb_dat_i : in std_logic_vector(31 downto 0);
-    wb_dat_o : out std_logic_vector(31 downto 0);
-    wb_ack_o : out std_logic;
-    wb_int_o: out std_logic;
+    wb_cyc_i   : in  std_logic;
+    wb_sel_i   : in  std_logic_vector(c_wishbone_data_width/8-1 downto 0);
+    wb_stb_i   : in  std_logic;
+    wb_we_i    : in  std_logic;
+    wb_adr_i   : in  std_logic_vector(2 downto 0);
+    wb_dat_i   : in  std_logic_vector(c_wishbone_data_width-1 downto 0);
+    wb_dat_o   : out std_logic_vector(c_wishbone_data_width-1 downto 0);
+    wb_ack_o   : out std_logic;
+    wb_int_o   : out std_logic;
+    wb_stall_o : out std_logic;
 
     owr_pwren_o : out std_logic_vector(g_num_ports -1 downto 0);
     owr_en_o    : out std_logic_vector(g_num_ports -1 downto 0);
@@ -59,13 +89,52 @@ architecture rtl of wb_onewire_master is
   signal bus_wen : std_logic;
   signal bus_ren : std_logic;
   signal rst     : std_logic;
+
+  signal slave_in  : t_wishbone_slave_in;
+  signal slave_out : t_wishbone_slave_out;
+
+  signal adp_out : t_wishbone_master_out;
+  signal adp_in  : t_wishbone_master_in;
+  
 begin  -- rtl
 
-  bus_wen <= wb_cyc_i and wb_stb_i and wb_we_i;
-  bus_ren <= wb_cyc_i and wb_stb_i and not wb_we_i;
+  slave_in.adr(2 downto 0)                          <= wb_adr_i;
+  slave_in.adr(c_wishbone_address_width-1 downto 3) <= (others => '0');
+  slave_in.cyc                                      <= wb_cyc_i;
+  slave_in.stb                                      <= wb_stb_i;
+  slave_in.sel                                      <= wb_sel_i;
+  slave_in.dat                                      <= wb_dat_i;
+  slave_in.we                                       <= wb_we_i;
+
+  wb_int_o   <= slave_out.int;
+  wb_dat_o   <= slave_out.dat;
+  wb_stall_o <= slave_out.stall;
+  wb_ack_o   <= slave_out.ack;
+
+
+  U_Slave_adapter : wb_slave_adapter
+    generic map (
+      g_master_use_struct  => true,
+      g_master_mode        => CLASSIC,
+      g_master_granularity => WORD,
+      g_slave_use_struct   => true,
+      g_slave_mode         => g_interface_mode,
+      g_slave_granularity  => g_address_granularity)
+    port map (
+      clk_sys_i => clk_sys_i,
+      rst_n_i   => rst_n_i,
+
+      slave_i  => slave_in,
+      slave_o  => slave_out,
+      master_i => adp_in,
+      master_o => adp_out);
+
+  
+  bus_wen <= adp_out.cyc and adp_out.stb and adp_out.we;
+  bus_ren <= adp_out.cyc and adp_out.stb and not adp_out.we;
 
-  wb_ack_o <= wb_stb_i and wb_cyc_i;
-  rst      <= not rst_n_i;
+  adp_in.ack <= adp_out.stb and adp_out.cyc;
+  rst        <= not rst_n_i;
 
   Wrapped_1wire : sockit_owm
     generic map (
@@ -77,10 +146,10 @@ begin  -- rtl
       rst     => rst,
       bus_ren => bus_ren,
       bus_wen => bus_wen,
-      bus_adr => wb_adr_i(0 downto 0),
-      bus_wdt => wb_dat_i,
-      bus_rdt => wb_dat_o,
-      bus_irq => wb_int_o,
+      bus_adr => adp_out.adr(0 downto 0),
+      bus_wdt => adp_out.dat,
+      bus_rdt => adp_in.dat,
+      bus_irq => adp_in.int,
       owr_p   => owr_pwren_o,
       owr_e   => owr_en_o,
       owr_i   => owr_i);
diff --git a/modules/wishbone/wb_onewire_master/xwb_onewire_master.vhd b/modules/wishbone/wb_onewire_master/xwb_onewire_master.vhd
index 67d949ab0f86be37c6fc94d4573b259c8dca5935..b0501ca645642647b3581e390950086992f47935 100644
--- a/modules/wishbone/wb_onewire_master/xwb_onewire_master.vhd
+++ b/modules/wishbone/wb_onewire_master/xwb_onewire_master.vhd
@@ -5,10 +5,11 @@ use work.wishbone_pkg.all;
 
 entity xwb_onewire_master is
   generic(
-    g_interface_mode   : t_wishbone_interface_mode := CLASSIC;
-    g_num_ports        : integer                   := 1;
-    g_ow_btp_normal    : string                    := "5.0";
-    g_ow_btp_overdrive : string                    := "1.0"
+    g_interface_mode      : t_wishbone_interface_mode      := CLASSIC;
+    g_address_granularity : t_wishbone_address_granularity := WORD;
+    g_num_ports           : integer                        := 1;
+    g_ow_btp_normal       : string                         := "5.0";
+    g_ow_btp_overdrive    : string                         := "1.0"
     );
 
   port(
@@ -32,19 +33,21 @@ architecture rtl of xwb_onewire_master is
 
   component wb_onewire_master
     generic (
-      g_num_ports        : integer;
-      g_ow_btp_normal    : string;
-      g_ow_btp_overdrive : string);
+      g_interface_mode      : t_wishbone_interface_mode      := CLASSIC;
+      g_address_granularity : t_wishbone_address_granularity := WORD;
+      g_num_ports           : integer;
+      g_ow_btp_normal       : string;
+      g_ow_btp_overdrive    : string);
     port (
       clk_sys_i   : in  std_logic;
       rst_n_i     : in  std_logic;
       wb_cyc_i    : in  std_logic;
-      wb_sel_i    : in  std_logic_vector(3 downto 0);
+      wb_sel_i    : in  std_logic_vector(c_wishbone_data_width/8-1 downto 0);
       wb_stb_i    : in  std_logic;
       wb_we_i     : in  std_logic;
-      wb_adr_i    : in  std_logic_vector(1 downto 0);
-      wb_dat_i    : in  std_logic_vector(31 downto 0);
-      wb_dat_o    : out std_logic_vector(31 downto 0);
+      wb_adr_i    : in  std_logic_vector(2 downto 0);
+      wb_dat_i    : in  std_logic_vector(c_wishbone_data_width-1 downto 0);
+      wb_dat_o    : out std_logic_vector(c_wishbone_data_width-1 downto 0);
       wb_ack_o    : out std_logic;
       wb_int_o    : out std_logic;
       owr_pwren_o : out std_logic_vector(g_num_ports -1 downto 0);
@@ -54,26 +57,22 @@ architecture rtl of xwb_onewire_master is
   
 begin  -- rtl
 
-  gen_test_mode : if(g_interface_mode /= CLASSIC) generate
-
-    assert false report "xwb_onewire_master: this module can only work with CLASSIC wishbone interface" severity failure;
-
-  end generate gen_test_mode;
-
-  Wrapped_OW : wb_onewire_master
+  U_Wrapped_1W : wb_onewire_master
     generic map (
-      g_num_ports        => g_num_ports,
-      g_ow_btp_normal    => g_ow_btp_normal,
-      g_ow_btp_overdrive => g_ow_btp_overdrive)
+      g_interface_mode      => g_interface_mode,
+      g_address_granularity => g_address_granularity,
+      g_num_ports           => g_num_ports,
+      g_ow_btp_normal       => g_ow_btp_normal,
+      g_ow_btp_overdrive    => g_ow_btp_overdrive)
     port map (
       clk_sys_i   => clk_sys_i,
       rst_n_i     => rst_n_i,
-      wb_cyc_i    => slave_i.Cyc,
-      wb_sel_i    => slave_i.Sel,
+      wb_cyc_i    => slave_i.cyc,
+      wb_sel_i    => slave_i.sel,
       wb_stb_i    => slave_i.stb,
       wb_we_i     => slave_i.we,
-      wb_adr_i    => slave_i.adr(1 downto 0),
-      wb_dat_i    => slave_i.Dat,
+      wb_adr_i    => slave_i.adr(2 downto 0),
+      wb_dat_i    => slave_i.dat,
       wb_dat_o    => slave_o.dat,
       wb_ack_o    => slave_o.ack,
       wb_int_o    => slave_o.int,
@@ -81,8 +80,7 @@ begin  -- rtl
       owr_en_o    => owr_en_o,
       owr_i       => owr_i);
 
-  slave_o.stall <= '0';
-  slave_o.err   <= '0';
-  slave_o.rty   <= '0';
+  slave_o.err <= '0';
+  slave_o.rty <= '0';
   
 end rtl;