From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=2a00:1450:400c:c0c::231; helo=mail-wr0-x231.google.com; envelope-from=leif.lindholm@linaro.org; receiver=edk2-devel@lists.01.org Received: from mail-wr0-x231.google.com (mail-wr0-x231.google.com [IPv6:2a00:1450:400c:c0c::231]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id E2E1D21E080E6 for ; Thu, 19 Apr 2018 09:02:51 -0700 (PDT) Received: by mail-wr0-x231.google.com with SMTP id u4-v6so15450936wrg.10 for ; Thu, 19 Apr 2018 09:02:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=3wD/21P41782DlMml0pZT8Q3a36V52AD6um9QUGVk2A=; b=FaVzgZ4NAglxQK0VVJDgaqY8OgWNQtW0auNRqvBbyq977/pO5SGAtfbVdoAWSd+Sfi OQRCYZfxJLT5sgi8R3GLUldxsBK21XVc2qzCkKBpRBMRPC7YaLFxItbd19Gotv0OdPu2 XOmK+O23IsDlfaxsS+y9CTIXHsIsHqjPJcHFY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=3wD/21P41782DlMml0pZT8Q3a36V52AD6um9QUGVk2A=; b=JyskRVcY5RJ0gw0X1RWIJMuhW1TnPAk3o+XPRLtarXQWQmbTy1jwqAS2A53yidJDkb RNjmDSDzpo/YWjxUK0FAmhrbdRu3OcBIaQ7VBCL2ptmAixgrHMtyC9uk9JqQhKTbBBSs Sx0wa4virw4K/Z4D2IWOscTH2WFXgjNACK31AGgPom29lgCE+3jzi8I8wEZrkEC1QqM/ oJRZ+nnedpgnsCryypfHx0Mu6QvDJIAEsvgm7CSesJGl0LWEGpxfI/DLqlwd/p1mkT+w LwuX48myWOIAsDomNTu27tVvtBvjJuSUBCzv52PVZur+Xda8I/EIaqVTio9vW3ma/YvD YS/g== X-Gm-Message-State: ALQs6tBalyDgr1UZMOZxoD6p2lEXY9yZ/MZxfk0ZzZQlfKZf+LbWnEMH SPw3HOCspbs69kuZhFsFAIuC5w== X-Google-Smtp-Source: AIpwx49OBWjFcNxq4XonM0yC/xgwjW6ogywIQlLc5oVuCdTAtm7yz9CXrIyZ5+IOoVfPim7MEWjDXw== X-Received: by 10.28.145.139 with SMTP id t133mr4945841wmd.138.1524153770230; Thu, 19 Apr 2018 09:02:50 -0700 (PDT) Received: from bivouac.eciton.net (bivouac.eciton.net. [2a00:1098:0:86:1000:23:0:2]) by smtp.gmail.com with ESMTPSA id b5-v6sm3960931wrf.40.2018.04.19.09.02.48 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 19 Apr 2018 09:02:48 -0700 (PDT) Date: Thu, 19 Apr 2018 17:02:47 +0100 From: Leif Lindholm To: Meenakshi Cc: ard.biesheuvel@linaro.org, edk2-devel@lists.01.org, udit.kumar@nxp.com, v.sethi@nxp.com, Wasim Khan Message-ID: <20180419160247.pmxgtvlr2yo5q4g3@bivouac.eciton.net> References: <1518771035-6733-1-git-send-email-meenakshi.aggarwal@nxp.com> <1518771035-6733-27-git-send-email-meenakshi.aggarwal@nxp.com> MIME-Version: 1.0 In-Reply-To: <1518771035-6733-27-git-send-email-meenakshi.aggarwal@nxp.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [PATCH edk2-platforms 26/39] Silicon/Maxim: DS3232 RTC Library Support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Apr 2018 16:02:52 -0000 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Feb 16, 2018 at 02:20:22PM +0530, Meenakshi wrote: > From: Wasim Khan > > Add Maxim DS3232 RTC Library support > > Contributed-under: TianoCore Contribution Agreement 1.1 > Signed-off-by: Wasim Khan Reviewed-by: Leif Lindholm > --- > Silicon/Maxim/Library/Ds3232RtcLib/Ds3232Rtc.h | 49 +++ > Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.c | 370 +++++++++++++++++++++ > .../Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.dec | 31 ++ > .../Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.inf | 49 +++ > 4 files changed, 499 insertions(+) > create mode 100644 Silicon/Maxim/Library/Ds3232RtcLib/Ds3232Rtc.h > create mode 100644 Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.c > create mode 100644 Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.dec > create mode 100644 Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.inf > > diff --git a/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232Rtc.h b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232Rtc.h > new file mode 100644 > index 0000000..cd1a321 > --- /dev/null > +++ b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232Rtc.h > @@ -0,0 +1,49 @@ > +/** Ds3232Rtc.h > +* > +* Copyright 2017 NXP > +* > +* This program and the accompanying materials > +* are licensed and made available under the terms and conditions of the BSD License > +* which accompanies this distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > +#ifndef __DS3232RTC_H__ > +#define __DS3232RTC_H__ > + > +//RTC time register > +#define DS3232_SEC_REG_ADDR 0x00 > +#define DS3232_MIN_REG_ADDR 0x01 > +#define DS3232_HR_REG_ADDR 0x02 > +#define DS3232_DAY_REG_ADDR 0x03 > +#define DS3232_DATE_REG_ADDR 0x04 > +#define DS3232_MON_REG_ADDR 0x05 > +#define DS3232_YR_REG_ADDR 0x06 > + > +#define DS3232_SEC_BIT_CH 0x80 // Clock Halt (in Register 0) > + > +//RTC control register > +#define DS3232_CTL_REG_ADDR 0x0e > +#define DS3232_STAT_REG_ADDR 0x0f > + > +#define START_YEAR 1970 > +#define END_YEAR 2070 > + > +//TIME MASKS > +#define MASK_SEC 0x7F > +#define MASK_MIN 0x7F > +#define MASK_HOUR 0x3F > +#define MASK_DAY 0x3F > +#define MASK_MONTH 0x1F > + > +typedef struct { > + UINTN OperationCount; > + EFI_I2C_OPERATION SetAddressOp; > + EFI_I2C_OPERATION GetSetDateTimeOp; > +} RTC_I2C_REQUEST; > + > +#endif // __DS3232RTC_H__ > diff --git a/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.c b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.c > new file mode 100644 > index 0000000..1a852e9 > --- /dev/null > +++ b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.c > @@ -0,0 +1,370 @@ > +/** Ds3232RtcLib.c > +* Implement EFI RealTimeClock via RTC Lib for DS3232 RTC. > +* > +* Based on RTC implementation available in > +* EmbeddedPkg/Library/TemplateRealTimeClockLib/RealTimeClockLib.c > +* > +* Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.
> +* Copyright 2017 NXP > +* > +* This program and the accompanying materials > +* are licensed and made available under the terms and conditions of the BSD License > +* which accompanies this distribution. The full text of the license may be found at > +* http://opensource.org/licenses/bsd-license.php > +* > +* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +* > +**/ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include "Ds3232Rtc.h" > + > +STATIC VOID *mDriverEventRegistration; > +STATIC EFI_I2C_MASTER_PROTOCOL *mI2cMaster; > + > +/** > + Read RTC register. > + > + @param SlaveDeviceAddress Slave device address offset of RTC to be read. > + @param RtcRegAddr Register offset of RTC to be read. > + > + @retval Register Value read > + > +**/ > +STATIC > +UINT8 > +RtcRead ( > + IN UINT8 SlaveDeviceAddress, > + IN UINT8 RtcRegAddr > + ) > +{ > + RTC_I2C_REQUEST Req; > + EFI_STATUS Status; > + UINT8 Val; > + > + Val = 0; > + > + Req.OperationCount = 2; > + > + Req.SetAddressOp.Flags = 0; > + Req.SetAddressOp.LengthInBytes = sizeof (RtcRegAddr); > + Req.SetAddressOp.Buffer = &RtcRegAddr; > + > + Req.GetSetDateTimeOp.Flags = I2C_FLAG_READ; > + Req.GetSetDateTimeOp.LengthInBytes = sizeof (Val); > + Req.GetSetDateTimeOp.Buffer = &Val; > + > + Status = mI2cMaster->StartRequest (mI2cMaster, SlaveDeviceAddress, > + (VOID *)&Req, > + NULL, NULL); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "RTC read error at Addr:0x%x\n", RtcRegAddr)); > + } > + > + return Val; > +} > + > +/** > + Write RTC register. > + > + @param SlaveDeviceAddress Slave device address offset of RTC to be read. > + @param RtcRegAddr Register offset of RTC to write. > + @param Val Value to be written > + > +**/ > +STATIC > +VOID > +RtcWrite ( > + IN UINT8 SlaveDeviceAddress, > + IN UINT8 RtcRegAddr, > + IN UINT8 Val > + ) > +{ > + RTC_I2C_REQUEST Req; > + EFI_STATUS Status; > + > + Req.OperationCount = 2; > + > + Req.SetAddressOp.Flags = 0; > + Req.SetAddressOp.LengthInBytes = sizeof (RtcRegAddr); > + Req.SetAddressOp.Buffer = &RtcRegAddr; > + > + Req.GetSetDateTimeOp.Flags = 0; > + Req.GetSetDateTimeOp.LengthInBytes = sizeof (Val); > + Req.GetSetDateTimeOp.Buffer = &Val; > + > + Status = mI2cMaster->StartRequest (mI2cMaster, SlaveDeviceAddress, > + (VOID *)&Req, > + NULL, NULL); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "RTC write error at Addr:0x%x\n", RtcRegAddr)); > + } > +} > + > +/** > + Configure the MUX device connected to I2C. > + > + @param RegValue Value to write on mux device register address > + > +**/ > +VOID > +ConfigureMuxDevice ( > + IN UINT8 RegValue > + ) > +{ > + RtcWrite (FixedPcdGet8 (PcdMuxDeviceAddress), FixedPcdGet8 (PcdMuxControlRegOffset), RegValue); > +} > + > +/** > + Returns the current time and date information, and the time-keeping capabilities > + of the hardware platform. > + > + @param Time A pointer to storage to receive a snapshot of the current time. > + @param Capabilities An optional pointer to a buffer to receive the real time clock > + device's capabilities. > + > + @retval EFI_SUCCESS The operation completed successfully. > + @retval EFI_INVALID_PARAMETER Time is NULL. > + @retval EFI_DEVICE_ERROR The time could not be retrieved due to hardware error. > + > +**/ > +EFI_STATUS > +EFIAPI > +LibGetTime ( > + OUT EFI_TIME *Time, > + OUT EFI_TIME_CAPABILITIES *Capabilities > + ) > +{ > + EFI_STATUS Status; > + UINT8 Second; > + UINT8 Minute; > + UINT8 Hour; > + UINT8 Day; > + UINT8 Month; > + UINT8 Year; > + > + if (mI2cMaster == NULL) { > + return EFI_DEVICE_ERROR; > + } > + > + Status = EFI_SUCCESS; > + > + // > + // Check if the I2C device is connected though a MUX device. > + // > + if (FixedPcdGetBool (PcdIsRtcDeviceMuxed)) { > + // Switch to the channel connected to Ds3232 RTC > + ConfigureMuxDevice (FixedPcdGet8 (PcdMuxRtcChannelValue)); > + } > + > + Second = RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_SEC_REG_ADDR); > + Minute = RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_MIN_REG_ADDR); > + Hour = RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_HR_REG_ADDR); > + Day = RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_DATE_REG_ADDR); > + Month = RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_MON_REG_ADDR); > + Year = RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_YR_REG_ADDR); > + > + if (Second & DS3232_SEC_BIT_CH) { > + DEBUG ((DEBUG_ERROR, "### Warning: RTC oscillator has stopped\n")); > + /* clear the CH flag */ > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_SEC_REG_ADDR, > + RtcRead (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_SEC_REG_ADDR) & ~DS3232_SEC_BIT_CH); > + Status = EFI_DEVICE_ERROR; > + goto EXIT; > + } > + > + Time->Second = BcdToDecimal8 (Second & MASK_SEC); > + Time->Minute = BcdToDecimal8 (Minute & MASK_MIN); > + Time->Hour = BcdToDecimal8 (Hour & MASK_HOUR); > + Time->Day = BcdToDecimal8 (Day & MASK_DAY); > + Time->Month = BcdToDecimal8 (Month & MASK_MONTH); > + > + // > + // RTC can save year 1970 to 2069 > + // On writing Year, save year % 100 > + // On Reading reversing the operation e.g. 2012 > + // write = 12 (2012 % 100) > + // read = 2012 (12 + 2000) > + // > + Time->Year = BcdToDecimal8 (Year) + > + (BcdToDecimal8 (Year) >= 70 ? START_YEAR - 70 : END_YEAR -70); > + > +EXIT: > + if (FixedPcdGetBool (PcdIsRtcDeviceMuxed)) { > + // Switch to the default channel > + ConfigureMuxDevice (FixedPcdGet8 (PcdMuxDefaultChannelValue)); > + } > + > + return Status; > +} > + > +/** > + Sets the current local time and date information. > + > + @param Time A pointer to the current time. > + > + @retval EFI_SUCCESS The operation completed successfully. > + @retval EFI_INVALID_PARAMETER A time field is out of range. > + > +**/ > +EFI_STATUS > +EFIAPI > +LibSetTime ( > + IN EFI_TIME *Time > + ) > +{ > + if (mI2cMaster == NULL) { > + return EFI_DEVICE_ERROR; > + } > + > + if (Time->Year < START_YEAR || Time->Year >= END_YEAR){ > + DEBUG ((DEBUG_ERROR, "WARNING: Year should be between 1970 and 2069!\n")); > + return EFI_INVALID_PARAMETER; > + } > + > + // > + // Check if the I2C device is connected though a MUX device. > + // > + if (FixedPcdGetBool (PcdIsRtcDeviceMuxed)) { > + // Switch to the channel connected to Ds3232 RTC > + ConfigureMuxDevice (FixedPcdGet8 (PcdMuxRtcChannelValue)); > + } > + > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_YR_REG_ADDR, DecimalToBcd8 (Time->Year % 100)); > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_MON_REG_ADDR, DecimalToBcd8 (Time->Month)); > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_DATE_REG_ADDR, DecimalToBcd8 (Time->Day)); > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_HR_REG_ADDR, DecimalToBcd8 (Time->Hour)); > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_MIN_REG_ADDR, DecimalToBcd8 (Time->Minute)); > + RtcWrite (FixedPcdGet8 (PcdI2cSlaveAddress), DS3232_SEC_REG_ADDR, DecimalToBcd8 (Time->Second)); > + > + if (FixedPcdGetBool (PcdIsRtcDeviceMuxed)) { > + // Switch to the default channel > + ConfigureMuxDevice (FixedPcdGet8 (PcdMuxDefaultChannelValue)); > + } > + > + return EFI_SUCCESS; > +} > + > +/** > + Returns the current wakeup alarm clock setting. > + > + @param Enabled Indicates if the alarm is currently enabled or disabled. > + @param Pending Indicates if the alarm signal is pending and requires acknowledgement. > + @param Time The current alarm setting. > + > + @retval EFI_SUCCESS The alarm settings were returned. > + @retval EFI_INVALID_PARAMETER Any parameter is NULL. > + @retval EFI_DEVICE_ERROR The wakeup time could not be retrieved due to a hardware error. > + > +**/ > +EFI_STATUS > +EFIAPI > +LibGetWakeupTime ( > + OUT BOOLEAN *Enabled, > + OUT BOOLEAN *Pending, > + OUT EFI_TIME *Time > + ) > +{ > + // Currently not supporting this feature. > + return EFI_UNSUPPORTED; > +} > + > +/** > + Sets the system wakeup alarm clock time. > + > + @param Enabled Enable or disable the wakeup alarm. > + @param Time If Enable is TRUE, the time to set the wakeup alarm for. > + > + @retval EFI_SUCCESS If Enable is TRUE, then the wakeup alarm was enabled. If > + Enable is FALSE, then the wakeup alarm was disabled. > + @retval EFI_INVALID_PARAMETER A time field is out of range. > + @retval EFI_DEVICE_ERROR The wakeup time could not be set due to a hardware error. > + @retval EFI_UNSUPPORTED A wakeup timer is not supported on this platform. > + > +**/ > +EFI_STATUS > +EFIAPI > +LibSetWakeupTime ( > + IN BOOLEAN Enabled, > + OUT EFI_TIME *Time > + ) > +{ > + // Currently not supporting this feature. > + return EFI_UNSUPPORTED; > +} > + > +STATIC > +VOID > +I2cDriverRegistrationEvent ( > + IN EFI_EVENT Event, > + IN VOID *Context > + ) > +{ > + EFI_STATUS Status; > + EFI_I2C_MASTER_PROTOCOL *I2cMaster; > + UINTN BusFrequency; > + > + Status = gBS->LocateProtocol (&gEfiI2cMasterProtocolGuid, NULL, (VOID **)&I2cMaster); > + > + gBS->CloseEvent (Event); > + > + ASSERT_EFI_ERROR (Status); > + > + Status = I2cMaster->Reset (I2cMaster); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a: I2CMaster->Reset () failed - %r\n", > + __FUNCTION__, Status)); > + return; > + } > + > + BusFrequency = FixedPcdGet16 (PcdI2cBusFrequency); > + Status = I2cMaster->SetBusFrequency (I2cMaster, &BusFrequency); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "%a: I2CMaster->SetBusFrequency () failed - %r\n", > + __FUNCTION__, Status)); > + return; > + } > + > + mI2cMaster = I2cMaster; > +} > + > +/** > + This is the declaration of an EFI image entry point. This can be the entry point to an application > + written to this specification, an EFI boot service driver. > + > + @param ImageHandle Handle that identifies the loaded image. > + @param SystemTable System Table for this image. > + > + @retval EFI_SUCCESS The operation completed successfully. > + > +**/ > +EFI_STATUS > +EFIAPI > +LibRtcInitialize ( > + IN EFI_HANDLE ImageHandle, > + IN EFI_SYSTEM_TABLE *SystemTable > + ) > +{ > + // > + // Register a protocol registration notification callback on the driver > + // binding protocol so we can attempt to connect our I2C master to it > + // as soon as it appears. > + // > + EfiCreateProtocolNotifyEvent ( > + &gEfiI2cMasterProtocolGuid, > + TPL_CALLBACK, > + I2cDriverRegistrationEvent, > + NULL, > + &mDriverEventRegistration); > + > + return EFI_SUCCESS; > +} > diff --git a/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.dec b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.dec > new file mode 100644 > index 0000000..4471d57 > --- /dev/null > +++ b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.dec > @@ -0,0 +1,31 @@ > +#/** @file > +# > +# Copyright 2017 NXP > +# > +# This program and the accompanying materials > +# are licensed and made available under the terms and conditions of the BSD License > +# which accompanies this distribution. The full text of the license may be found at > +# http://opensource.org/licenses/bsd-license.php > +# > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +# > +#**/ > + > +[Defines] > + DEC_SPECIFICATION = 0x0001001A > + PACKAGE_NAME = Ds3232RtcLib > + PACKAGE_GUID = 0b4192f7-e404-4019-b2e5-1e6004da3313 > + PACKAGE_VERSION = 0.1 > + > +[Guids] > + gDs3232RtcLibTokenSpaceGuid = { 0x7960fc51, 0x0832, 0x4f0b, { 0xb4, 0x22, 0x53, 0x87, 0x03, 0xaa, 0x85, 0xda }} > + > +[PcdsFixedAtBuild] > + gDs3232RtcLibTokenSpaceGuid.PcdI2cSlaveAddress|0|UINT8|0x00000001 > + gDs3232RtcLibTokenSpaceGuid.PcdI2cBusFrequency|0|UINT32|0x00000002 > + gDs3232RtcLibTokenSpaceGuid.PcdIsRtcDeviceMuxed|FALSE|BOOLEAN|0x00000003 > + gDs3232RtcLibTokenSpaceGuid.PcdMuxDeviceAddress|0|UINT8|0x00000004 > + gDs3232RtcLibTokenSpaceGuid.PcdMuxControlRegOffset|0|UINT8|0x00000005 > + gDs3232RtcLibTokenSpaceGuid.PcdMuxRtcChannelValue|0|UINT8|0x00000006 > + gDs3232RtcLibTokenSpaceGuid.PcdMuxDefaultChannelValue|0|UINT8|0x00000007 > diff --git a/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.inf b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.inf > new file mode 100644 > index 0000000..9cac100 > --- /dev/null > +++ b/Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.inf > @@ -0,0 +1,49 @@ > +# @Ds3232RtcLib.inf > +# > +# Copyright (c) 2016, Freescale Semiconductor, Inc. All rights reserved. > +# Copyright 2017 NXP > +# > +# This program and the accompanying materials > +# are licensed and made available under the terms and conditions of the BSD License > +# which accompanies this distribution. The full text of the license may be found at > +# http://opensource.org/licenses/bsd-license.php > +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, > +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. > +# > +# > + > +[Defines] > + INF_VERSION = 0x0001001A > + BASE_NAME = Ds3232RtcLib > + FILE_GUID = 97f1f2c2-51e1-47ad-9660-70b33da1fe71 > + MODULE_TYPE = BASE > + VERSION_STRING = 1.0 > + LIBRARY_CLASS = RealTimeClockLib > + > +[Sources.common] > + Ds3232RtcLib.c > + > +[Packages] > + EmbeddedPkg/EmbeddedPkg.dec > + MdePkg/MdePkg.dec > + Silicon/Maxim/Library/Ds3232RtcLib/Ds3232RtcLib.dec > + > +[LibraryClasses] > + DebugLib > + UefiBootServicesTableLib > + UefiLib > + > +[Protocols] > + gEfiI2cMasterProtocolGuid ## CONSUMES > + > +[FixedPcd] > + gDs3232RtcLibTokenSpaceGuid.PcdI2cSlaveAddress > + gDs3232RtcLibTokenSpaceGuid.PcdI2cBusFrequency > + gDs3232RtcLibTokenSpaceGuid.PcdIsRtcDeviceMuxed > + gDs3232RtcLibTokenSpaceGuid.PcdMuxDeviceAddress > + gDs3232RtcLibTokenSpaceGuid.PcdMuxControlRegOffset > + gDs3232RtcLibTokenSpaceGuid.PcdMuxRtcChannelValue > + gDs3232RtcLibTokenSpaceGuid.PcdMuxDefaultChannelValue > + > +[Depex] > + gEfiI2cMasterProtocolGuid > -- > 1.9.1 >