18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * drivers/net/ethernet/ibm/emac/tah.h 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Driver for PowerPC 4xx on-chip ethernet controller, TAH support. 68c2ecf20Sopenharmony_ci * 78c2ecf20Sopenharmony_ci * Copyright 2007 Benjamin Herrenschmidt, IBM Corp. 88c2ecf20Sopenharmony_ci * <benh@kernel.crashing.org> 98c2ecf20Sopenharmony_ci * 108c2ecf20Sopenharmony_ci * Based on the arch/ppc version of the driver: 118c2ecf20Sopenharmony_ci * 128c2ecf20Sopenharmony_ci * Copyright 2004 MontaVista Software, Inc. 138c2ecf20Sopenharmony_ci * Matt Porter <mporter@kernel.crashing.org> 148c2ecf20Sopenharmony_ci * 158c2ecf20Sopenharmony_ci * Copyright (c) 2005 Eugene Surovegin <ebs@ebshome.net> 168c2ecf20Sopenharmony_ci */ 178c2ecf20Sopenharmony_ci 188c2ecf20Sopenharmony_ci#ifndef __IBM_NEWEMAC_TAH_H 198c2ecf20Sopenharmony_ci#define __IBM_NEWEMAC_TAH_H 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* TAH */ 228c2ecf20Sopenharmony_cistruct tah_regs { 238c2ecf20Sopenharmony_ci u32 revid; 248c2ecf20Sopenharmony_ci u32 pad[3]; 258c2ecf20Sopenharmony_ci u32 mr; 268c2ecf20Sopenharmony_ci u32 ssr0; 278c2ecf20Sopenharmony_ci u32 ssr1; 288c2ecf20Sopenharmony_ci u32 ssr2; 298c2ecf20Sopenharmony_ci u32 ssr3; 308c2ecf20Sopenharmony_ci u32 ssr4; 318c2ecf20Sopenharmony_ci u32 ssr5; 328c2ecf20Sopenharmony_ci u32 tsr; 338c2ecf20Sopenharmony_ci}; 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci/* TAH device */ 378c2ecf20Sopenharmony_cistruct tah_instance { 388c2ecf20Sopenharmony_ci struct tah_regs __iomem *base; 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ci /* Only one EMAC whacks us at a time */ 418c2ecf20Sopenharmony_ci struct mutex lock; 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ci /* number of EMACs using this TAH */ 448c2ecf20Sopenharmony_ci int users; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci /* OF device instance */ 478c2ecf20Sopenharmony_ci struct platform_device *ofdev; 488c2ecf20Sopenharmony_ci}; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci 518c2ecf20Sopenharmony_ci/* TAH engine */ 528c2ecf20Sopenharmony_ci#define TAH_MR_CVR 0x80000000 538c2ecf20Sopenharmony_ci#define TAH_MR_SR 0x40000000 548c2ecf20Sopenharmony_ci#define TAH_MR_ST_256 0x01000000 558c2ecf20Sopenharmony_ci#define TAH_MR_ST_512 0x02000000 568c2ecf20Sopenharmony_ci#define TAH_MR_ST_768 0x03000000 578c2ecf20Sopenharmony_ci#define TAH_MR_ST_1024 0x04000000 588c2ecf20Sopenharmony_ci#define TAH_MR_ST_1280 0x05000000 598c2ecf20Sopenharmony_ci#define TAH_MR_ST_1536 0x06000000 608c2ecf20Sopenharmony_ci#define TAH_MR_TFS_16KB 0x00000000 618c2ecf20Sopenharmony_ci#define TAH_MR_TFS_2KB 0x00200000 628c2ecf20Sopenharmony_ci#define TAH_MR_TFS_4KB 0x00400000 638c2ecf20Sopenharmony_ci#define TAH_MR_TFS_6KB 0x00600000 648c2ecf20Sopenharmony_ci#define TAH_MR_TFS_8KB 0x00800000 658c2ecf20Sopenharmony_ci#define TAH_MR_TFS_10KB 0x00a00000 668c2ecf20Sopenharmony_ci#define TAH_MR_DTFP 0x00100000 678c2ecf20Sopenharmony_ci#define TAH_MR_DIG 0x00080000 688c2ecf20Sopenharmony_ci 698c2ecf20Sopenharmony_ci#ifdef CONFIG_IBM_EMAC_TAH 708c2ecf20Sopenharmony_ci 718c2ecf20Sopenharmony_ciint tah_init(void); 728c2ecf20Sopenharmony_civoid tah_exit(void); 738c2ecf20Sopenharmony_ciint tah_attach(struct platform_device *ofdev, int channel); 748c2ecf20Sopenharmony_civoid tah_detach(struct platform_device *ofdev, int channel); 758c2ecf20Sopenharmony_civoid tah_reset(struct platform_device *ofdev); 768c2ecf20Sopenharmony_ciint tah_get_regs_len(struct platform_device *ofdev); 778c2ecf20Sopenharmony_civoid *tah_dump_regs(struct platform_device *ofdev, void *buf); 788c2ecf20Sopenharmony_ci 798c2ecf20Sopenharmony_ci#else 808c2ecf20Sopenharmony_ci 818c2ecf20Sopenharmony_ci# define tah_init() 0 828c2ecf20Sopenharmony_ci# define tah_exit() do { } while(0) 838c2ecf20Sopenharmony_ci# define tah_attach(x,y) (-ENXIO) 848c2ecf20Sopenharmony_ci# define tah_detach(x,y) do { } while(0) 858c2ecf20Sopenharmony_ci# define tah_reset(x) do { } while(0) 868c2ecf20Sopenharmony_ci# define tah_get_regs_len(x) 0 878c2ecf20Sopenharmony_ci# define tah_dump_regs(x,buf) (buf) 888c2ecf20Sopenharmony_ci 898c2ecf20Sopenharmony_ci#endif /* !CONFIG_IBM_EMAC_TAH */ 908c2ecf20Sopenharmony_ci 918c2ecf20Sopenharmony_ci#endif /* __IBM_NEWEMAC_TAH_H */ 92