1 /* 2 * linux/arch/arm/mach-pxa/pxa2xx.c 3 * 4 * code specific to pxa2xx 5 * 6 * Copyright (C) 2008 Dmitry Baryshkov 7 * 8 * This program is free software; you can redistribute it and/or modify 9 * it under the terms of the GNU General Public License version 2 as 10 * published by the Free Software Foundation. 11 */ 12 13 #include <linux/module.h> 14 #include <linux/kernel.h> 15 #include <linux/device.h> 16 17 #include <asm/arch/mfp-pxa2xx.h> 18 #include <asm/arch/mfp-pxa25x.h> 19 #include <asm/arch/irda.h> 20 21 static unsigned long pxa2xx_mfp_fir[] = { 22 GPIO46_FICP_RXD, 23 GPIO47_FICP_TXD, 24 }; 25 26 static unsigned long pxa2xx_mfp_sir[] = { 27 GPIO46_STUART_RXD, 28 GPIO47_STUART_TXD, 29 }; 30 31 static unsigned long pxa2xx_mfp_off[] = { 32 GPIO46_GPIO | MFP_LPM_DRIVE_LOW, 33 GPIO47_GPIO | MFP_LPM_DRIVE_LOW, 34 }; 35 36 void pxa2xx_transceiver_mode(struct device *dev, int mode) 37 { 38 if (mode & IR_OFF) { 39 pxa2xx_mfp_config(pxa2xx_mfp_off, ARRAY_SIZE(pxa2xx_mfp_off)); 40 } else if (mode & IR_SIRMODE) { 41 pxa2xx_mfp_config(pxa2xx_mfp_sir, ARRAY_SIZE(pxa2xx_mfp_sir)); 42 } else if (mode & IR_FIRMODE) { 43 pxa2xx_mfp_config(pxa2xx_mfp_fir, ARRAY_SIZE(pxa2xx_mfp_fir)); 44 } else 45 BUG(); 46 } 47