snd_ps3.c (df9b42963f2d010ae3163a894ce22cf6b27cd344) | snd_ps3.c (5cc3203f72d89064da315529103f277124f57005) |
---|---|
1/* 2 * Audio support for PS3 3 * Copyright (C) 2007 Sony Computer Entertainment Inc. 4 * All rights reserved. 5 * Copyright 2006, 2007 Sony Corporation 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License --- 772 unchanged lines hidden (view full) --- 781 .hw_params = snd_ps3_pcm_hw_params, 782 .hw_free = snd_ps3_pcm_hw_free, 783 .prepare = snd_ps3_pcm_prepare, 784 .trigger = snd_ps3_pcm_trigger, 785 .pointer = snd_ps3_pcm_pointer, 786}; 787 788 | 1/* 2 * Audio support for PS3 3 * Copyright (C) 2007 Sony Computer Entertainment Inc. 4 * All rights reserved. 5 * Copyright 2006, 2007 Sony Corporation 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License --- 772 unchanged lines hidden (view full) --- 781 .hw_params = snd_ps3_pcm_hw_params, 782 .hw_free = snd_ps3_pcm_hw_free, 783 .prepare = snd_ps3_pcm_prepare, 784 .trigger = snd_ps3_pcm_trigger, 785 .pointer = snd_ps3_pcm_pointer, 786}; 787 788 |
789static int __devinit snd_ps3_map_mmio(void) | 789static int snd_ps3_map_mmio(void) |
790{ 791 the_card.mapped_mmio_vaddr = 792 ioremap(the_card.ps3_dev->m_region->bus_addr, 793 the_card.ps3_dev->m_region->len); 794 795 if (!the_card.mapped_mmio_vaddr) { 796 pr_info("%s: ioremap 0 failed p=%#lx l=%#lx \n", 797 __func__, the_card.ps3_dev->m_region->lpar_addr, --- 5 unchanged lines hidden (view full) --- 803}; 804 805static void snd_ps3_unmap_mmio(void) 806{ 807 iounmap(the_card.mapped_mmio_vaddr); 808 the_card.mapped_mmio_vaddr = NULL; 809} 810 | 790{ 791 the_card.mapped_mmio_vaddr = 792 ioremap(the_card.ps3_dev->m_region->bus_addr, 793 the_card.ps3_dev->m_region->len); 794 795 if (!the_card.mapped_mmio_vaddr) { 796 pr_info("%s: ioremap 0 failed p=%#lx l=%#lx \n", 797 __func__, the_card.ps3_dev->m_region->lpar_addr, --- 5 unchanged lines hidden (view full) --- 803}; 804 805static void snd_ps3_unmap_mmio(void) 806{ 807 iounmap(the_card.mapped_mmio_vaddr); 808 the_card.mapped_mmio_vaddr = NULL; 809} 810 |
811static int __devinit snd_ps3_allocate_irq(void) | 811static int snd_ps3_allocate_irq(void) |
812{ 813 int ret; 814 u64 lpar_addr, lpar_size; 815 u64 __iomem *mapped; 816 817 /* FIXME: move this to device_init (H/W probe) */ 818 819 /* get irq outlet */ --- 41 unchanged lines hidden (view full) --- 861}; 862 863static void snd_ps3_free_irq(void) 864{ 865 free_irq(the_card.irq_no, &the_card); 866 ps3_irq_plug_destroy(the_card.irq_no); 867} 868 | 812{ 813 int ret; 814 u64 lpar_addr, lpar_size; 815 u64 __iomem *mapped; 816 817 /* FIXME: move this to device_init (H/W probe) */ 818 819 /* get irq outlet */ --- 41 unchanged lines hidden (view full) --- 861}; 862 863static void snd_ps3_free_irq(void) 864{ 865 free_irq(the_card.irq_no, &the_card); 866 ps3_irq_plug_destroy(the_card.irq_no); 867} 868 |
869static void __devinit snd_ps3_audio_set_base_addr(uint64_t ioaddr_start) | 869static void snd_ps3_audio_set_base_addr(uint64_t ioaddr_start) |
870{ 871 uint64_t val; 872 int ret; 873 874 val = (ioaddr_start & (0x0fUL << 32)) >> (32 - 20) | 875 (0x03UL << 24) | 876 (0x0fUL << 12) | 877 (PS3_AUDIO_IOID); 878 879 ret = lv1_gpu_attribute(0x100, 0x007, val); 880 if (ret) 881 pr_info("%s: gpu_attribute failed %d\n", __func__, 882 ret); 883} 884 | 870{ 871 uint64_t val; 872 int ret; 873 874 val = (ioaddr_start & (0x0fUL << 32)) >> (32 - 20) | 875 (0x03UL << 24) | 876 (0x0fUL << 12) | 877 (PS3_AUDIO_IOID); 878 879 ret = lv1_gpu_attribute(0x100, 0x007, val); 880 if (ret) 881 pr_info("%s: gpu_attribute failed %d\n", __func__, 882 ret); 883} 884 |
885static void __devinit snd_ps3_audio_fixup(struct snd_ps3_card_info *card) | 885static void snd_ps3_audio_fixup(struct snd_ps3_card_info *card) |
886{ 887 /* 888 * avsetting driver seems to never change the followings 889 * so, init them here once 890 */ 891 892 /* no dma interrupt needed */ 893 write_reg(PS3_AUDIO_INTR_EN_0, 0); --- 7 unchanged lines hidden (view full) --- 901 update_mask_reg(PS3_AUDIO_AO_3WMCTRL, 902 ~(PS3_AUDIO_AO_3WMCTRL_ASOBCLKD_DISABLED | 903 PS3_AUDIO_AO_3WMCTRL_ASOLRCKD_DISABLED), 904 0); 905 update_reg(PS3_AUDIO_AO_3WMCTRL, 906 PS3_AUDIO_AO_3WMCTRL_ASOPLRCK_DEFAULT); 907} 908 | 886{ 887 /* 888 * avsetting driver seems to never change the followings 889 * so, init them here once 890 */ 891 892 /* no dma interrupt needed */ 893 write_reg(PS3_AUDIO_INTR_EN_0, 0); --- 7 unchanged lines hidden (view full) --- 901 update_mask_reg(PS3_AUDIO_AO_3WMCTRL, 902 ~(PS3_AUDIO_AO_3WMCTRL_ASOBCLKD_DISABLED | 903 PS3_AUDIO_AO_3WMCTRL_ASOLRCKD_DISABLED), 904 0); 905 update_reg(PS3_AUDIO_AO_3WMCTRL, 906 PS3_AUDIO_AO_3WMCTRL_ASOPLRCK_DEFAULT); 907} 908 |
909static int __devinit snd_ps3_init_avsetting(struct snd_ps3_card_info *card) | 909static int snd_ps3_init_avsetting(struct snd_ps3_card_info *card) |
910{ 911 int ret; 912 pr_debug("%s: start\n", __func__); 913 card->avs.avs_audio_ch = PS3AV_CMD_AUDIO_NUM_OF_CH_2; 914 card->avs.avs_audio_rate = PS3AV_CMD_AUDIO_FS_48K; 915 card->avs.avs_audio_width = PS3AV_CMD_AUDIO_WORD_BITS_16; 916 card->avs.avs_audio_format = PS3AV_CMD_AUDIO_FORMAT_PCM; 917 card->avs.avs_audio_source = PS3AV_CMD_AUDIO_SOURCE_SERIAL; --- 5 unchanged lines hidden (view full) --- 923 924 /* to start to generate SPDIF signal, fill data */ 925 snd_ps3_program_dma(card, SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL); 926 snd_ps3_kick_dma(card); 927 pr_debug("%s: end\n", __func__); 928 return ret; 929} 930 | 910{ 911 int ret; 912 pr_debug("%s: start\n", __func__); 913 card->avs.avs_audio_ch = PS3AV_CMD_AUDIO_NUM_OF_CH_2; 914 card->avs.avs_audio_rate = PS3AV_CMD_AUDIO_FS_48K; 915 card->avs.avs_audio_width = PS3AV_CMD_AUDIO_WORD_BITS_16; 916 card->avs.avs_audio_format = PS3AV_CMD_AUDIO_FORMAT_PCM; 917 card->avs.avs_audio_source = PS3AV_CMD_AUDIO_SOURCE_SERIAL; --- 5 unchanged lines hidden (view full) --- 923 924 /* to start to generate SPDIF signal, fill data */ 925 snd_ps3_program_dma(card, SND_PS3_DMA_FILLTYPE_SILENT_FIRSTFILL); 926 snd_ps3_kick_dma(card); 927 pr_debug("%s: end\n", __func__); 928 return ret; 929} 930 |
931static int __devinit snd_ps3_driver_probe(struct ps3_system_bus_device *dev) | 931static int snd_ps3_driver_probe(struct ps3_system_bus_device *dev) |
932{ 933 int i, ret; 934 u64 lpar_addr, lpar_size; 935 936 BUG_ON(!firmware_has_feature(FW_FEATURE_PS3_LV1)); 937 BUG_ON(dev->match_id != PS3_MATCH_ID_SOUND); 938 939 the_card.ps3_dev = dev; --- 222 unchanged lines hidden --- | 932{ 933 int i, ret; 934 u64 lpar_addr, lpar_size; 935 936 BUG_ON(!firmware_has_feature(FW_FEATURE_PS3_LV1)); 937 BUG_ON(dev->match_id != PS3_MATCH_ID_SOUND); 938 939 the_card.ps3_dev = dev; --- 222 unchanged lines hidden --- |