Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2426)

Unified Diff: arch/arm/mach-tegra/nv/include/nvsnor_controller.h

Issue 3256004: [ARM] tegra: add nvos/nvrm/nvmap drivers (Closed) Base URL: ssh://git@gitrw.chromium.org/kernel.git
Patch Set: remove ap15 headers Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvrm_xpc.h ('k') | arch/arm/mach-tegra/nv/include/nvutil.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: arch/arm/mach-tegra/nv/include/nvsnor_controller.h
diff --git a/arch/arm/mach-tegra/nv/include/nvsnor_controller.h b/arch/arm/mach-tegra/nv/include/nvsnor_controller.h
new file mode 100644
index 0000000000000000000000000000000000000000..66d7ee87bea40b4db44d1d6b0ceda29ef8ed6ff1
--- /dev/null
+++ b/arch/arm/mach-tegra/nv/include/nvsnor_controller.h
@@ -0,0 +1,165 @@
+/*
+ * Copyright (c) 2009 NVIDIA Corporation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * Neither the name of the NVIDIA Corporation nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+
+#ifndef __NVSNOR_CONTROLLER_H
+#define __NVSNOR_CONTROLLER_H
+
+#include "mach/nvrm_linux.h"
+#include "nvos.h"
+#include "nvassert.h"
+#include "nvodm_query.h"
+
+#include "nvodm_services.h"
+#include "nvodm_query_discovery.h"
+
+#include "ap20/arsnor.h"
+#include "nvrm_hardware_access.h"
+#include "nvrm_power.h"
+#include "nvrm_drf.h"
+#include "nvrm_module.h"
+#include "nvrm_memmgr.h"
+#include "nvrm_interrupt.h"
+
+#define SNOR_CONTROLLER_CHIPSELECT_MAX 8
+
+#define SNOR_DMA_BUFFER_SIZE_BYTE 0x1000 //4KB
+//#define SNOR_DMA_BUFFER_SIZE_BYTE 0x4000 //16KB
+
+
+#define SNOR_READ32(pSnorHwRegsVirtBaseAdd, reg) \
+ NV_READ32((pSnorHwRegsVirtBaseAdd) + ((SNOR_##reg##_0)/4))
+
+#define SNOR_WRITE32(pSnorHwRegsVirtBaseAdd, reg, val) \
+ do \
+ { \
+ NV_WRITE32((((pSnorHwRegsVirtBaseAdd) + ((SNOR_##reg##_0)/4))), (val)); \
+ } while (0)
+
+typedef struct
+{
+ NvRmPhysAddr DeviceBaseAddress;
+ NvU32 DeviceAddressSize;
+ NvU16 *pDeviceBaseVirtAddress;
+ NvU32 DevicePureAddress;
+} ConnectedDeviceIntRegister;
+
+typedef struct
+{
+ NvU32 Config;
+
+ NvU32 Status;
+ NvU32 NorAddressPtr;
+ NvU32 AhbAddrPtr;
+ NvU32 Timing0;
+ NvU32 Timing1;
+ NvU32 MioCfg;
+ NvU32 MioTiming;
+ NvU32 DmaConfig;
+ NvU32 ChipSelectMuxConfig;
+} SnorControllerRegs;
+
+typedef struct
+{
+ NvU32 Muxed_Width;
+ NvU32 Hold_Width;
+ NvU32 ADV_dWidth;
+ NvU32 WE_Width;
+ NvU32 OE_Width;
+ NvU32 Wait_Width;
+
+} SnorControllerTimingRegVals;
+
+
+typedef struct NvSnorRec
+{
+ NvRmDeviceHandle hRmDevice;
+
+ NvU32 OpenCount;
+
+ // Physical Address of the SNOR controller instance
+ NvU32 SnorControllerBaseAdd;
+
+ // Virtual address for the SNOR controller instance
+ NvU32 *pSnorControllerVirtBaseAdd;
+
+ // Size of the SNOR register map
+ NvU32 SnorRegMapSize;
+
+ // Semaphore for registering the client with the power manager.
+ NvOsSemaphoreHandle hRmPowerEventSema;
+
+ // Power client Id.
+ NvU32 RmPowerClientId;
+
+ // Command complete semaphore
+ NvOsSemaphoreHandle hCommandCompleteSema;
+
+ // Interrupt handle
+ NvOsInterruptHandle hIntr;
+ //For SNOR controller's DMA allocation
+ NvRmMemHandle hRmMemory;
+ NvRmPhysAddr DmaBuffPhysAdd;
+ NvU32 *pAhbDmaBuffer;
+ NvU32 Snor_DmaBufSize;
+
+ //Number of devices present
+ NvU32 NumOfDevicesConnected;
+
+ // Tells whether the device is avialble or not.
+ //NvU32 IsDevAvailable[SNOR_CONTROLLER_CHIPSELECT_MAX];
+
+ // Device interface register to access the devices which is controlled by SNOR controller.
+ ConnectedDeviceIntRegister ConnectedDevReg;
+
+ SnorControllerRegs SnorRegs;
+} NvSnor;
+
+typedef struct NvSnorRec *NvSnorHandle;
+
+typedef struct
+{
+ NvRmDeviceHandle hRmDevice;
+ NvSnorHandle hSnor;
+} NvSnorInformation;
+
+
+NvError InitSnorInformation(void);
+void DeinitSnorInformation(void);
+void InitSnorController(NvSnorHandle hSnor, NvU32 DevTypeSNOREn, SnorControllerTimingRegVals TimingRegVals);
+void SetChipSelect(NvSnorHandle hSnor, NvU32 ChipSelId);
+NvError CreateSnorHandle(NvRmDeviceHandle hRmDevice, NvSnorHandle *phSnor);
+void DestroySnorHandle(NvSnorHandle hSnor);
+
+void NvReadViaSNORControllerDMA (NvSnorHandle hSnor, void* SnorAddr, NvU32 word32bit_count);
+void NvWriteViaSNORControllerDMA (NvSnorHandle hSnor, void* SnorAddr, NvU32 word32bit_count);
+
+#endif
« no previous file with comments | « arch/arm/mach-tegra/nv/include/nvrm_xpc.h ('k') | arch/arm/mach-tegra/nv/include/nvutil.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698