From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751635AbdE0Pp1 (ORCPT ); Sat, 27 May 2017 11:45:27 -0400 Received: from mail-qt0-f170.google.com ([209.85.216.170]:35950 "EHLO mail-qt0-f170.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750771AbdE0PpZ (ORCPT ); Sat, 27 May 2017 11:45:25 -0400 MIME-Version: 1.0 In-Reply-To: <20170526160936.54265-10-mika.westerberg@linux.intel.com> References: <20170526160936.54265-1-mika.westerberg@linux.intel.com> <20170526160936.54265-10-mika.westerberg@linux.intel.com> From: Andy Shevchenko Date: Sat, 27 May 2017 18:45:24 +0300 Message-ID: Subject: Re: [PATCH v2 09/27] thunderbolt: Convert switch to a device To: Mika Westerberg Cc: Greg Kroah-Hartman , Andreas Noever , Michael Jamet , Yehezkel Bernat , Lukas Wunner , Amir Levy , Andy Lutomirski , Mario Limonciello , Jared.Dominguez@dell.com, Andy Shevchenko , "linux-kernel@vger.kernel.org" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, May 26, 2017 at 7:09 PM, Mika Westerberg wrote: > Thunderbolt domain consists of switches that are connected to each > other, forming a bus. This will convert each switch into a real Linux > device structure and adds them to the domain. The advantage here is > that we get all the goodies from the driver core, like reference > counting and sysfs hierarchy for free. > > Also expose device identification information to the userspace via new > sysfs attributes. > > In order to support internal connection manager (ICM) we separate switch > configuration into its own function (tb_switch_configure()) which is > only called by the existing native connection manager implementation > used on Macs. > + /* > + * The newer controllers include fused UUID as part of link > + * controller specific registers > + */ > + cap = tb_switch_find_vsec_cap(sw, TB_VSEC_CAP_LINK_CONTROLLER); > + if (cap > 0) { > + tb_sw_read(sw, uuid, TB_CFG_SWITCH, cap + 3, 4); > + } else { > + /* > + * By default the UUID will be based on UID where upper two > + * dwords are filled with ones. > + */ > + uuid[0] = sw->uid & 0xffffffff; > + uuid[1] = (sw->uid >> 32) & 0xffffffff; > + uuid[2] = 0xffffffff; > + uuid[3] = 0xffffffff; > + } It might make sense to add some comment as we discussed earlier (privately) about (non-)compatibiliness with UUID by spec and why 0xff are used. -- With Best Regards, Andy Shevchenko