mirror of
https://github.com/torvalds/linux.git
synced 2024-12-02 00:51:44 +00:00
Merge branch 'merge' into next
Merge a pile of fixes that went into the "merge" branch (3.13-rc's) such as Anton Little Endian fixes. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
commit
dece8ada99
@ -77,7 +77,6 @@
|
|||||||
compatible = "fsl,mpc5121-immr";
|
compatible = "fsl,mpc5121-immr";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
#interrupt-cells = <2>;
|
|
||||||
ranges = <0x0 0x80000000 0x400000>;
|
ranges = <0x0 0x80000000 0x400000>;
|
||||||
reg = <0x80000000 0x400000>;
|
reg = <0x80000000 0x400000>;
|
||||||
bus-frequency = <66000000>; /* 66 MHz ips bus */
|
bus-frequency = <66000000>; /* 66 MHz ips bus */
|
||||||
|
@ -58,7 +58,6 @@
|
|||||||
compatible = "fsl,mpc5121-immr";
|
compatible = "fsl,mpc5121-immr";
|
||||||
#address-cells = <1>;
|
#address-cells = <1>;
|
||||||
#size-cells = <1>;
|
#size-cells = <1>;
|
||||||
#interrupt-cells = <2>;
|
|
||||||
ranges = <0x0 0x80000000 0x400000>;
|
ranges = <0x0 0x80000000 0x400000>;
|
||||||
reg = <0x80000000 0x400000>;
|
reg = <0x80000000 0x400000>;
|
||||||
bus-frequency = <66000000>; // 66 MHz ips bus
|
bus-frequency = <66000000>; // 66 MHz ips bus
|
||||||
@ -189,6 +188,10 @@
|
|||||||
reg = <0xA000 0x1000>;
|
reg = <0xA000 0x1000>;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// disable USB1 port
|
||||||
|
// TODO:
|
||||||
|
// correct pinmux config and fix USB3320 ulpi dependency
|
||||||
|
// before re-enabling it
|
||||||
usb@3000 {
|
usb@3000 {
|
||||||
compatible = "fsl,mpc5121-usb2-dr";
|
compatible = "fsl,mpc5121-usb2-dr";
|
||||||
reg = <0x3000 0x400>;
|
reg = <0x3000 0x400>;
|
||||||
@ -197,6 +200,7 @@
|
|||||||
interrupts = <43 0x8>;
|
interrupts = <43 0x8>;
|
||||||
dr_mode = "host";
|
dr_mode = "host";
|
||||||
phy_type = "ulpi";
|
phy_type = "ulpi";
|
||||||
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
// 5125 PSCs are not 52xx or 5121 PSC compatible
|
// 5125 PSCs are not 52xx or 5121 PSC compatible
|
||||||
|
@ -12,7 +12,6 @@ CONFIG_EXPERT=y
|
|||||||
CONFIG_PPC_MPC52xx=y
|
CONFIG_PPC_MPC52xx=y
|
||||||
CONFIG_PPC_MPC5200_SIMPLE=y
|
CONFIG_PPC_MPC5200_SIMPLE=y
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_BESTCOMM=y
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
CONFIG_SPARSE_IRQ=y
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
# CONFIG_PCI is not set
|
# CONFIG_PCI is not set
|
||||||
@ -71,6 +70,8 @@ CONFIG_USB_DEVICEFS=y
|
|||||||
CONFIG_USB_OHCI_HCD=y
|
CONFIG_USB_OHCI_HCD=y
|
||||||
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
||||||
CONFIG_USB_STORAGE=y
|
CONFIG_USB_STORAGE=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_PPC_BESTCOMM=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
|
@ -15,7 +15,6 @@ CONFIG_PPC_MPC52xx=y
|
|||||||
CONFIG_PPC_MPC5200_SIMPLE=y
|
CONFIG_PPC_MPC5200_SIMPLE=y
|
||||||
CONFIG_PPC_LITE5200=y
|
CONFIG_PPC_LITE5200=y
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_BESTCOMM=y
|
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_SPARSE_IRQ=y
|
CONFIG_SPARSE_IRQ=y
|
||||||
@ -59,6 +58,8 @@ CONFIG_I2C_CHARDEV=y
|
|||||||
CONFIG_I2C_MPC=y
|
CONFIG_I2C_MPC=y
|
||||||
# CONFIG_HWMON is not set
|
# CONFIG_HWMON is not set
|
||||||
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
CONFIG_VIDEO_OUTPUT_CONTROL=m
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_PPC_BESTCOMM=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
|
@ -12,7 +12,6 @@ CONFIG_EXPERT=y
|
|||||||
CONFIG_PPC_MPC52xx=y
|
CONFIG_PPC_MPC52xx=y
|
||||||
CONFIG_PPC_MPC5200_SIMPLE=y
|
CONFIG_PPC_MPC5200_SIMPLE=y
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_BESTCOMM=y
|
|
||||||
CONFIG_SPARSE_IRQ=y
|
CONFIG_SPARSE_IRQ=y
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
# CONFIG_PCI is not set
|
# CONFIG_PCI is not set
|
||||||
@ -84,6 +83,8 @@ CONFIG_LEDS_TRIGGERS=y
|
|||||||
CONFIG_LEDS_TRIGGER_TIMER=y
|
CONFIG_LEDS_TRIGGER_TIMER=y
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_DS1307=y
|
CONFIG_RTC_DRV_DS1307=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_PPC_BESTCOMM=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
|
@ -21,7 +21,6 @@ CONFIG_MODULE_UNLOAD=y
|
|||||||
CONFIG_PPC_MPC52xx=y
|
CONFIG_PPC_MPC52xx=y
|
||||||
CONFIG_PPC_MPC5200_SIMPLE=y
|
CONFIG_PPC_MPC5200_SIMPLE=y
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_BESTCOMM=y
|
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
CONFIG_HZ_100=y
|
CONFIG_HZ_100=y
|
||||||
@ -87,6 +86,8 @@ CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
|
|||||||
CONFIG_USB_STORAGE=m
|
CONFIG_USB_STORAGE=m
|
||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_PCF8563=m
|
CONFIG_RTC_DRV_PCF8563=m
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_PPC_BESTCOMM=y
|
||||||
CONFIG_EXT2_FS=m
|
CONFIG_EXT2_FS=m
|
||||||
CONFIG_EXT3_FS=m
|
CONFIG_EXT3_FS=m
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
|
@ -17,7 +17,6 @@ CONFIG_PPC_MPC52xx=y
|
|||||||
CONFIG_PPC_MPC5200_SIMPLE=y
|
CONFIG_PPC_MPC5200_SIMPLE=y
|
||||||
CONFIG_PPC_MPC5200_BUGFIX=y
|
CONFIG_PPC_MPC5200_BUGFIX=y
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_BESTCOMM=y
|
|
||||||
CONFIG_PM=y
|
CONFIG_PM=y
|
||||||
# CONFIG_PCI is not set
|
# CONFIG_PCI is not set
|
||||||
CONFIG_NET=y
|
CONFIG_NET=y
|
||||||
@ -86,6 +85,8 @@ CONFIG_USB_STORAGE=y
|
|||||||
CONFIG_RTC_CLASS=y
|
CONFIG_RTC_CLASS=y
|
||||||
CONFIG_RTC_DRV_DS1307=y
|
CONFIG_RTC_DRV_DS1307=y
|
||||||
CONFIG_RTC_DRV_DS1374=y
|
CONFIG_RTC_DRV_DS1374=y
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_PPC_BESTCOMM=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
|
@ -15,7 +15,6 @@ CONFIG_PPC_MEDIA5200=y
|
|||||||
CONFIG_PPC_MPC5200_BUGFIX=y
|
CONFIG_PPC_MPC5200_BUGFIX=y
|
||||||
CONFIG_PPC_MPC5200_LPBFIFO=m
|
CONFIG_PPC_MPC5200_LPBFIFO=m
|
||||||
# CONFIG_PPC_PMAC is not set
|
# CONFIG_PPC_PMAC is not set
|
||||||
CONFIG_PPC_BESTCOMM=y
|
|
||||||
CONFIG_SIMPLE_GPIO=y
|
CONFIG_SIMPLE_GPIO=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
@ -125,6 +124,8 @@ CONFIG_RTC_CLASS=y
|
|||||||
CONFIG_RTC_DRV_DS1307=y
|
CONFIG_RTC_DRV_DS1307=y
|
||||||
CONFIG_RTC_DRV_DS1374=y
|
CONFIG_RTC_DRV_DS1374=y
|
||||||
CONFIG_RTC_DRV_PCF8563=m
|
CONFIG_RTC_DRV_PCF8563=m
|
||||||
|
CONFIG_DMADEVICES=y
|
||||||
|
CONFIG_PPC_BESTCOMM=y
|
||||||
CONFIG_EXT2_FS=y
|
CONFIG_EXT2_FS=y
|
||||||
CONFIG_EXT3_FS=y
|
CONFIG_EXT3_FS=y
|
||||||
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
|
||||||
|
@ -2,7 +2,6 @@ CONFIG_PPC64=y
|
|||||||
CONFIG_ALTIVEC=y
|
CONFIG_ALTIVEC=y
|
||||||
CONFIG_SMP=y
|
CONFIG_SMP=y
|
||||||
CONFIG_NR_CPUS=2
|
CONFIG_NR_CPUS=2
|
||||||
CONFIG_EXPERIMENTAL=y
|
|
||||||
CONFIG_SYSVIPC=y
|
CONFIG_SYSVIPC=y
|
||||||
CONFIG_NO_HZ=y
|
CONFIG_NO_HZ=y
|
||||||
CONFIG_HIGH_RES_TIMERS=y
|
CONFIG_HIGH_RES_TIMERS=y
|
||||||
@ -45,8 +44,9 @@ CONFIG_INET_AH=y
|
|||||||
CONFIG_INET_ESP=y
|
CONFIG_INET_ESP=y
|
||||||
# CONFIG_IPV6 is not set
|
# CONFIG_IPV6 is not set
|
||||||
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
|
||||||
|
CONFIG_DEVTMPFS=y
|
||||||
|
CONFIG_DEVTMPFS_MOUNT=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_MTD_CHAR=y
|
|
||||||
CONFIG_MTD_BLOCK=y
|
CONFIG_MTD_BLOCK=y
|
||||||
CONFIG_MTD_SLRAM=y
|
CONFIG_MTD_SLRAM=y
|
||||||
CONFIG_MTD_PHRAM=y
|
CONFIG_MTD_PHRAM=y
|
||||||
@ -88,7 +88,6 @@ CONFIG_BLK_DEV_DM=y
|
|||||||
CONFIG_DM_CRYPT=y
|
CONFIG_DM_CRYPT=y
|
||||||
CONFIG_NETDEVICES=y
|
CONFIG_NETDEVICES=y
|
||||||
CONFIG_DUMMY=y
|
CONFIG_DUMMY=y
|
||||||
CONFIG_MII=y
|
|
||||||
CONFIG_TIGON3=y
|
CONFIG_TIGON3=y
|
||||||
CONFIG_E1000=y
|
CONFIG_E1000=y
|
||||||
CONFIG_PASEMI_MAC=y
|
CONFIG_PASEMI_MAC=y
|
||||||
@ -174,8 +173,8 @@ CONFIG_NLS_CODEPAGE_437=y
|
|||||||
CONFIG_NLS_ISO8859_1=y
|
CONFIG_NLS_ISO8859_1=y
|
||||||
CONFIG_CRC_CCITT=y
|
CONFIG_CRC_CCITT=y
|
||||||
CONFIG_PRINTK_TIME=y
|
CONFIG_PRINTK_TIME=y
|
||||||
CONFIG_MAGIC_SYSRQ=y
|
|
||||||
CONFIG_DEBUG_FS=y
|
CONFIG_DEBUG_FS=y
|
||||||
|
CONFIG_MAGIC_SYSRQ=y
|
||||||
CONFIG_DEBUG_KERNEL=y
|
CONFIG_DEBUG_KERNEL=y
|
||||||
CONFIG_DETECT_HUNG_TASK=y
|
CONFIG_DETECT_HUNG_TASK=y
|
||||||
# CONFIG_SCHED_DEBUG is not set
|
# CONFIG_SCHED_DEBUG is not set
|
||||||
|
@ -284,7 +284,7 @@ do_kvm_##n: \
|
|||||||
subi r1,r1,INT_FRAME_SIZE; /* alloc frame on kernel stack */ \
|
subi r1,r1,INT_FRAME_SIZE; /* alloc frame on kernel stack */ \
|
||||||
beq- 1f; \
|
beq- 1f; \
|
||||||
ld r1,PACAKSAVE(r13); /* kernel stack to use */ \
|
ld r1,PACAKSAVE(r13); /* kernel stack to use */ \
|
||||||
1: cmpdi cr1,r1,0; /* check if r1 is in userspace */ \
|
1: cmpdi cr1,r1,-INT_FRAME_SIZE; /* check if r1 is in userspace */ \
|
||||||
blt+ cr1,3f; /* abort if it is */ \
|
blt+ cr1,3f; /* abort if it is */ \
|
||||||
li r1,(n); /* will be reloaded later */ \
|
li r1,(n); /* will be reloaded later */ \
|
||||||
sth r1,PACA_TRAP_SAVE(r13); \
|
sth r1,PACA_TRAP_SAVE(r13); \
|
||||||
|
@ -811,13 +811,13 @@ int64_t opal_pci_next_error(uint64_t phb_id, uint64_t *first_frozen_pe,
|
|||||||
int64_t opal_pci_poll(uint64_t phb_id);
|
int64_t opal_pci_poll(uint64_t phb_id);
|
||||||
int64_t opal_return_cpu(void);
|
int64_t opal_return_cpu(void);
|
||||||
|
|
||||||
int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, uint64_t *val);
|
int64_t opal_xscom_read(uint32_t gcid, uint32_t pcb_addr, __be64 *val);
|
||||||
int64_t opal_xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val);
|
int64_t opal_xscom_write(uint32_t gcid, uint32_t pcb_addr, uint64_t val);
|
||||||
|
|
||||||
int64_t opal_lpc_write(uint32_t chip_id, enum OpalLPCAddressType addr_type,
|
int64_t opal_lpc_write(uint32_t chip_id, enum OpalLPCAddressType addr_type,
|
||||||
uint32_t addr, uint32_t data, uint32_t sz);
|
uint32_t addr, uint32_t data, uint32_t sz);
|
||||||
int64_t opal_lpc_read(uint32_t chip_id, enum OpalLPCAddressType addr_type,
|
int64_t opal_lpc_read(uint32_t chip_id, enum OpalLPCAddressType addr_type,
|
||||||
uint32_t addr, uint32_t *data, uint32_t sz);
|
uint32_t addr, __be32 *data, uint32_t sz);
|
||||||
int64_t opal_validate_flash(uint64_t buffer, uint32_t *size, uint32_t *result);
|
int64_t opal_validate_flash(uint64_t buffer, uint32_t *size, uint32_t *result);
|
||||||
int64_t opal_manage_flash(uint8_t op);
|
int64_t opal_manage_flash(uint8_t op);
|
||||||
int64_t opal_update_flash(uint64_t blk_list);
|
int64_t opal_update_flash(uint64_t blk_list);
|
||||||
|
@ -84,10 +84,8 @@ static inline void pgtable_free_tlb(struct mmu_gather *tlb,
|
|||||||
static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table,
|
static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table,
|
||||||
unsigned long address)
|
unsigned long address)
|
||||||
{
|
{
|
||||||
struct page *page = page_address(table);
|
|
||||||
|
|
||||||
tlb_flush_pgtable(tlb, address);
|
tlb_flush_pgtable(tlb, address);
|
||||||
pgtable_page_dtor(page);
|
pgtable_page_dtor(table);
|
||||||
pgtable_free_tlb(tlb, page, 0);
|
pgtable_free_tlb(tlb, page_address(table), 0);
|
||||||
}
|
}
|
||||||
#endif /* _ASM_POWERPC_PGALLOC_32_H */
|
#endif /* _ASM_POWERPC_PGALLOC_32_H */
|
||||||
|
@ -148,11 +148,9 @@ static inline void pgtable_free_tlb(struct mmu_gather *tlb,
|
|||||||
static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table,
|
static inline void __pte_free_tlb(struct mmu_gather *tlb, pgtable_t table,
|
||||||
unsigned long address)
|
unsigned long address)
|
||||||
{
|
{
|
||||||
struct page *page = page_address(table);
|
|
||||||
|
|
||||||
tlb_flush_pgtable(tlb, address);
|
tlb_flush_pgtable(tlb, address);
|
||||||
pgtable_page_dtor(page);
|
pgtable_page_dtor(table);
|
||||||
pgtable_free_tlb(tlb, page, 0);
|
pgtable_free_tlb(tlb, page_address(table), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* if CONFIG_PPC_64K_PAGES */
|
#else /* if CONFIG_PPC_64K_PAGES */
|
||||||
|
@ -4,13 +4,18 @@
|
|||||||
#ifdef __KERNEL__
|
#ifdef __KERNEL__
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The PowerPC can do unaligned accesses itself in big endian mode.
|
* The PowerPC can do unaligned accesses itself based on its endian mode.
|
||||||
*/
|
*/
|
||||||
#include <linux/unaligned/access_ok.h>
|
#include <linux/unaligned/access_ok.h>
|
||||||
#include <linux/unaligned/generic.h>
|
#include <linux/unaligned/generic.h>
|
||||||
|
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
#define get_unaligned __get_unaligned_le
|
||||||
|
#define put_unaligned __put_unaligned_le
|
||||||
|
#else
|
||||||
#define get_unaligned __get_unaligned_be
|
#define get_unaligned __get_unaligned_be
|
||||||
#define put_unaligned __put_unaligned_be
|
#define put_unaligned __put_unaligned_be
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif /* _ASM_POWERPC_UNALIGNED_H */
|
#endif /* _ASM_POWERPC_UNALIGNED_H */
|
||||||
|
@ -124,15 +124,15 @@ ssize_t copy_oldmem_page(unsigned long pfn, char *buf,
|
|||||||
void crash_free_reserved_phys_range(unsigned long begin, unsigned long end)
|
void crash_free_reserved_phys_range(unsigned long begin, unsigned long end)
|
||||||
{
|
{
|
||||||
unsigned long addr;
|
unsigned long addr;
|
||||||
const u32 *basep, *sizep;
|
const __be32 *basep, *sizep;
|
||||||
unsigned int rtas_start = 0, rtas_end = 0;
|
unsigned int rtas_start = 0, rtas_end = 0;
|
||||||
|
|
||||||
basep = of_get_property(rtas.dev, "linux,rtas-base", NULL);
|
basep = of_get_property(rtas.dev, "linux,rtas-base", NULL);
|
||||||
sizep = of_get_property(rtas.dev, "rtas-size", NULL);
|
sizep = of_get_property(rtas.dev, "rtas-size", NULL);
|
||||||
|
|
||||||
if (basep && sizep) {
|
if (basep && sizep) {
|
||||||
rtas_start = *basep;
|
rtas_start = be32_to_cpup(basep);
|
||||||
rtas_end = *basep + *sizep;
|
rtas_end = rtas_start + be32_to_cpup(sizep);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (addr = begin; addr < end; addr += PAGE_SIZE) {
|
for (addr = begin; addr < end; addr += PAGE_SIZE) {
|
||||||
|
@ -80,6 +80,7 @@ END_FTR_SECTION(0, 1)
|
|||||||
* of the function that the cpu should jump to to continue
|
* of the function that the cpu should jump to to continue
|
||||||
* initialization.
|
* initialization.
|
||||||
*/
|
*/
|
||||||
|
.balign 8
|
||||||
.globl __secondary_hold_spinloop
|
.globl __secondary_hold_spinloop
|
||||||
__secondary_hold_spinloop:
|
__secondary_hold_spinloop:
|
||||||
.llong 0x0
|
.llong 0x0
|
||||||
@ -470,6 +471,7 @@ _STATIC(__after_prom_start)
|
|||||||
mtctr r8
|
mtctr r8
|
||||||
bctr
|
bctr
|
||||||
|
|
||||||
|
.balign 8
|
||||||
p_end: .llong _end - _stext
|
p_end: .llong _end - _stext
|
||||||
|
|
||||||
4: /* Now copy the rest of the kernel up to _end */
|
4: /* Now copy the rest of the kernel up to _end */
|
||||||
|
@ -148,7 +148,7 @@ void __init reserve_crashkernel(void)
|
|||||||
* a small SLB (128MB) since the crash kernel needs to place
|
* a small SLB (128MB) since the crash kernel needs to place
|
||||||
* itself and some stacks to be in the first segment.
|
* itself and some stacks to be in the first segment.
|
||||||
*/
|
*/
|
||||||
crashk_res.start = min(0x80000000ULL, (ppc64_rma_size / 2));
|
crashk_res.start = min(0x8000000ULL, (ppc64_rma_size / 2));
|
||||||
#else
|
#else
|
||||||
crashk_res.start = KDUMP_KERNELBASE;
|
crashk_res.start = KDUMP_KERNELBASE;
|
||||||
#endif
|
#endif
|
||||||
|
@ -252,8 +252,8 @@ _GLOBAL(__bswapdi2)
|
|||||||
or r3,r7,r9
|
or r3,r7,r9
|
||||||
blr
|
blr
|
||||||
|
|
||||||
#if defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE)
|
|
||||||
|
|
||||||
|
#ifdef CONFIG_PPC_EARLY_DEBUG_BOOTX
|
||||||
_GLOBAL(rmci_on)
|
_GLOBAL(rmci_on)
|
||||||
sync
|
sync
|
||||||
isync
|
isync
|
||||||
@ -283,6 +283,9 @@ _GLOBAL(rmci_off)
|
|||||||
isync
|
isync
|
||||||
sync
|
sync
|
||||||
blr
|
blr
|
||||||
|
#endif /* CONFIG_PPC_EARLY_DEBUG_BOOTX */
|
||||||
|
|
||||||
|
#if defined(CONFIG_PPC_PMAC) || defined(CONFIG_PPC_MAPLE)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Do an IO access in real mode
|
* Do an IO access in real mode
|
||||||
|
@ -1555,7 +1555,7 @@ long arch_ptrace(struct task_struct *child, long request,
|
|||||||
|
|
||||||
flush_fp_to_thread(child);
|
flush_fp_to_thread(child);
|
||||||
if (fpidx < (PT_FPSCR - PT_FPR0))
|
if (fpidx < (PT_FPSCR - PT_FPR0))
|
||||||
memcpy(&tmp, &child->thread.fp_state.fpr,
|
memcpy(&tmp, &child->thread.TS_FPR(fpidx),
|
||||||
sizeof(long));
|
sizeof(long));
|
||||||
else
|
else
|
||||||
tmp = child->thread.fp_state.fpscr;
|
tmp = child->thread.fp_state.fpscr;
|
||||||
@ -1588,7 +1588,7 @@ long arch_ptrace(struct task_struct *child, long request,
|
|||||||
|
|
||||||
flush_fp_to_thread(child);
|
flush_fp_to_thread(child);
|
||||||
if (fpidx < (PT_FPSCR - PT_FPR0))
|
if (fpidx < (PT_FPSCR - PT_FPR0))
|
||||||
memcpy(&child->thread.fp_state.fpr, &data,
|
memcpy(&child->thread.TS_FPR(fpidx), &data,
|
||||||
sizeof(long));
|
sizeof(long));
|
||||||
else
|
else
|
||||||
child->thread.fp_state.fpscr = data;
|
child->thread.fp_state.fpscr = data;
|
||||||
|
@ -479,7 +479,7 @@ void __init smp_setup_cpu_maps(void)
|
|||||||
if (machine_is(pseries) && firmware_has_feature(FW_FEATURE_LPAR) &&
|
if (machine_is(pseries) && firmware_has_feature(FW_FEATURE_LPAR) &&
|
||||||
(dn = of_find_node_by_path("/rtas"))) {
|
(dn = of_find_node_by_path("/rtas"))) {
|
||||||
int num_addr_cell, num_size_cell, maxcpus;
|
int num_addr_cell, num_size_cell, maxcpus;
|
||||||
const unsigned int *ireg;
|
const __be32 *ireg;
|
||||||
|
|
||||||
num_addr_cell = of_n_addr_cells(dn);
|
num_addr_cell = of_n_addr_cells(dn);
|
||||||
num_size_cell = of_n_size_cells(dn);
|
num_size_cell = of_n_size_cells(dn);
|
||||||
@ -489,7 +489,7 @@ void __init smp_setup_cpu_maps(void)
|
|||||||
if (!ireg)
|
if (!ireg)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
maxcpus = ireg[num_addr_cell + num_size_cell];
|
maxcpus = be32_to_cpup(ireg + num_addr_cell + num_size_cell);
|
||||||
|
|
||||||
/* Double maxcpus for processors which have SMT capability */
|
/* Double maxcpus for processors which have SMT capability */
|
||||||
if (cpu_has_feature(CPU_FTR_SMT))
|
if (cpu_has_feature(CPU_FTR_SMT))
|
||||||
|
@ -575,7 +575,7 @@ int __cpu_up(unsigned int cpu, struct task_struct *tidle)
|
|||||||
int cpu_to_core_id(int cpu)
|
int cpu_to_core_id(int cpu)
|
||||||
{
|
{
|
||||||
struct device_node *np;
|
struct device_node *np;
|
||||||
const int *reg;
|
const __be32 *reg;
|
||||||
int id = -1;
|
int id = -1;
|
||||||
|
|
||||||
np = of_get_cpu_node(cpu, NULL);
|
np = of_get_cpu_node(cpu, NULL);
|
||||||
@ -586,7 +586,7 @@ int cpu_to_core_id(int cpu)
|
|||||||
if (!reg)
|
if (!reg)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
id = *reg;
|
id = be32_to_cpup(reg);
|
||||||
out:
|
out:
|
||||||
of_node_put(np);
|
of_node_put(np);
|
||||||
return id;
|
return id;
|
||||||
|
@ -9,6 +9,14 @@
|
|||||||
#include <asm/processor.h>
|
#include <asm/processor.h>
|
||||||
#include <asm/ppc_asm.h>
|
#include <asm/ppc_asm.h>
|
||||||
|
|
||||||
|
#ifdef __BIG_ENDIAN__
|
||||||
|
#define sLd sld /* Shift towards low-numbered address. */
|
||||||
|
#define sHd srd /* Shift towards high-numbered address. */
|
||||||
|
#else
|
||||||
|
#define sLd srd /* Shift towards low-numbered address. */
|
||||||
|
#define sHd sld /* Shift towards high-numbered address. */
|
||||||
|
#endif
|
||||||
|
|
||||||
.align 7
|
.align 7
|
||||||
_GLOBAL(__copy_tofrom_user)
|
_GLOBAL(__copy_tofrom_user)
|
||||||
BEGIN_FTR_SECTION
|
BEGIN_FTR_SECTION
|
||||||
@ -118,10 +126,10 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD)
|
|||||||
|
|
||||||
24: ld r9,0(r4) /* 3+2n loads, 2+2n stores */
|
24: ld r9,0(r4) /* 3+2n loads, 2+2n stores */
|
||||||
25: ld r0,8(r4)
|
25: ld r0,8(r4)
|
||||||
sld r6,r9,r10
|
sLd r6,r9,r10
|
||||||
26: ldu r9,16(r4)
|
26: ldu r9,16(r4)
|
||||||
srd r7,r0,r11
|
sHd r7,r0,r11
|
||||||
sld r8,r0,r10
|
sLd r8,r0,r10
|
||||||
or r7,r7,r6
|
or r7,r7,r6
|
||||||
blt cr6,79f
|
blt cr6,79f
|
||||||
27: ld r0,8(r4)
|
27: ld r0,8(r4)
|
||||||
@ -129,35 +137,35 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD)
|
|||||||
|
|
||||||
28: ld r0,0(r4) /* 4+2n loads, 3+2n stores */
|
28: ld r0,0(r4) /* 4+2n loads, 3+2n stores */
|
||||||
29: ldu r9,8(r4)
|
29: ldu r9,8(r4)
|
||||||
sld r8,r0,r10
|
sLd r8,r0,r10
|
||||||
addi r3,r3,-8
|
addi r3,r3,-8
|
||||||
blt cr6,5f
|
blt cr6,5f
|
||||||
30: ld r0,8(r4)
|
30: ld r0,8(r4)
|
||||||
srd r12,r9,r11
|
sHd r12,r9,r11
|
||||||
sld r6,r9,r10
|
sLd r6,r9,r10
|
||||||
31: ldu r9,16(r4)
|
31: ldu r9,16(r4)
|
||||||
or r12,r8,r12
|
or r12,r8,r12
|
||||||
srd r7,r0,r11
|
sHd r7,r0,r11
|
||||||
sld r8,r0,r10
|
sLd r8,r0,r10
|
||||||
addi r3,r3,16
|
addi r3,r3,16
|
||||||
beq cr6,78f
|
beq cr6,78f
|
||||||
|
|
||||||
1: or r7,r7,r6
|
1: or r7,r7,r6
|
||||||
32: ld r0,8(r4)
|
32: ld r0,8(r4)
|
||||||
76: std r12,8(r3)
|
76: std r12,8(r3)
|
||||||
2: srd r12,r9,r11
|
2: sHd r12,r9,r11
|
||||||
sld r6,r9,r10
|
sLd r6,r9,r10
|
||||||
33: ldu r9,16(r4)
|
33: ldu r9,16(r4)
|
||||||
or r12,r8,r12
|
or r12,r8,r12
|
||||||
77: stdu r7,16(r3)
|
77: stdu r7,16(r3)
|
||||||
srd r7,r0,r11
|
sHd r7,r0,r11
|
||||||
sld r8,r0,r10
|
sLd r8,r0,r10
|
||||||
bdnz 1b
|
bdnz 1b
|
||||||
|
|
||||||
78: std r12,8(r3)
|
78: std r12,8(r3)
|
||||||
or r7,r7,r6
|
or r7,r7,r6
|
||||||
79: std r7,16(r3)
|
79: std r7,16(r3)
|
||||||
5: srd r12,r9,r11
|
5: sHd r12,r9,r11
|
||||||
or r12,r8,r12
|
or r12,r8,r12
|
||||||
80: std r12,24(r3)
|
80: std r12,24(r3)
|
||||||
bne 6f
|
bne 6f
|
||||||
@ -165,23 +173,38 @@ END_FTR_SECTION_IFCLR(CPU_FTR_UNALIGNED_LD_STD)
|
|||||||
blr
|
blr
|
||||||
6: cmpwi cr1,r5,8
|
6: cmpwi cr1,r5,8
|
||||||
addi r3,r3,32
|
addi r3,r3,32
|
||||||
sld r9,r9,r10
|
sLd r9,r9,r10
|
||||||
ble cr1,7f
|
ble cr1,7f
|
||||||
34: ld r0,8(r4)
|
34: ld r0,8(r4)
|
||||||
srd r7,r0,r11
|
sHd r7,r0,r11
|
||||||
or r9,r7,r9
|
or r9,r7,r9
|
||||||
7:
|
7:
|
||||||
bf cr7*4+1,1f
|
bf cr7*4+1,1f
|
||||||
|
#ifdef __BIG_ENDIAN__
|
||||||
rotldi r9,r9,32
|
rotldi r9,r9,32
|
||||||
|
#endif
|
||||||
94: stw r9,0(r3)
|
94: stw r9,0(r3)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
rotrdi r9,r9,32
|
||||||
|
#endif
|
||||||
addi r3,r3,4
|
addi r3,r3,4
|
||||||
1: bf cr7*4+2,2f
|
1: bf cr7*4+2,2f
|
||||||
|
#ifdef __BIG_ENDIAN__
|
||||||
rotldi r9,r9,16
|
rotldi r9,r9,16
|
||||||
|
#endif
|
||||||
95: sth r9,0(r3)
|
95: sth r9,0(r3)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
rotrdi r9,r9,16
|
||||||
|
#endif
|
||||||
addi r3,r3,2
|
addi r3,r3,2
|
||||||
2: bf cr7*4+3,3f
|
2: bf cr7*4+3,3f
|
||||||
|
#ifdef __BIG_ENDIAN__
|
||||||
rotldi r9,r9,8
|
rotldi r9,r9,8
|
||||||
|
#endif
|
||||||
96: stb r9,0(r3)
|
96: stb r9,0(r3)
|
||||||
|
#ifdef __LITTLE_ENDIAN__
|
||||||
|
rotrdi r9,r9,8
|
||||||
|
#endif
|
||||||
3: li r3,0
|
3: li r3,0
|
||||||
blr
|
blr
|
||||||
|
|
||||||
|
@ -36,7 +36,6 @@
|
|||||||
#include "powernv.h"
|
#include "powernv.h"
|
||||||
#include "pci.h"
|
#include "pci.h"
|
||||||
|
|
||||||
static char *hub_diag = NULL;
|
|
||||||
static int ioda_eeh_nb_init = 0;
|
static int ioda_eeh_nb_init = 0;
|
||||||
|
|
||||||
static int ioda_eeh_event(struct notifier_block *nb,
|
static int ioda_eeh_event(struct notifier_block *nb,
|
||||||
@ -140,15 +139,6 @@ static int ioda_eeh_post_init(struct pci_controller *hose)
|
|||||||
ioda_eeh_nb_init = 1;
|
ioda_eeh_nb_init = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* We needn't HUB diag-data on PHB3 */
|
|
||||||
if (phb->type == PNV_PHB_IODA1 && !hub_diag) {
|
|
||||||
hub_diag = (char *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
|
|
||||||
if (!hub_diag) {
|
|
||||||
pr_err("%s: Out of memory !\n", __func__);
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_FS
|
#ifdef CONFIG_DEBUG_FS
|
||||||
if (phb->dbgfs) {
|
if (phb->dbgfs) {
|
||||||
debugfs_create_file("err_injct_outbound", 0600,
|
debugfs_create_file("err_injct_outbound", 0600,
|
||||||
@ -630,11 +620,10 @@ static void ioda_eeh_hub_diag_common(struct OpalIoP7IOCErrorData *data)
|
|||||||
static void ioda_eeh_hub_diag(struct pci_controller *hose)
|
static void ioda_eeh_hub_diag(struct pci_controller *hose)
|
||||||
{
|
{
|
||||||
struct pnv_phb *phb = hose->private_data;
|
struct pnv_phb *phb = hose->private_data;
|
||||||
struct OpalIoP7IOCErrorData *data;
|
struct OpalIoP7IOCErrorData *data = &phb->diag.hub_diag;
|
||||||
long rc;
|
long rc;
|
||||||
|
|
||||||
data = (struct OpalIoP7IOCErrorData *)ioda_eeh_hub_diag;
|
rc = opal_pci_get_hub_diag_data(phb->hub_id, data, sizeof(*data));
|
||||||
rc = opal_pci_get_hub_diag_data(phb->hub_id, data, PAGE_SIZE);
|
|
||||||
if (rc != OPAL_SUCCESS) {
|
if (rc != OPAL_SUCCESS) {
|
||||||
pr_warning("%s: Failed to get HUB#%llx diag-data (%ld)\n",
|
pr_warning("%s: Failed to get HUB#%llx diag-data (%ld)\n",
|
||||||
__func__, phb->hub_id, rc);
|
__func__, phb->hub_id, rc);
|
||||||
|
@ -24,25 +24,25 @@ static int opal_lpc_chip_id = -1;
|
|||||||
static u8 opal_lpc_inb(unsigned long port)
|
static u8 opal_lpc_inb(unsigned long port)
|
||||||
{
|
{
|
||||||
int64_t rc;
|
int64_t rc;
|
||||||
uint32_t data;
|
__be32 data;
|
||||||
|
|
||||||
if (opal_lpc_chip_id < 0 || port > 0xffff)
|
if (opal_lpc_chip_id < 0 || port > 0xffff)
|
||||||
return 0xff;
|
return 0xff;
|
||||||
rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 1);
|
rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 1);
|
||||||
return rc ? 0xff : data;
|
return rc ? 0xff : be32_to_cpu(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static __le16 __opal_lpc_inw(unsigned long port)
|
static __le16 __opal_lpc_inw(unsigned long port)
|
||||||
{
|
{
|
||||||
int64_t rc;
|
int64_t rc;
|
||||||
uint32_t data;
|
__be32 data;
|
||||||
|
|
||||||
if (opal_lpc_chip_id < 0 || port > 0xfffe)
|
if (opal_lpc_chip_id < 0 || port > 0xfffe)
|
||||||
return 0xffff;
|
return 0xffff;
|
||||||
if (port & 1)
|
if (port & 1)
|
||||||
return (__le16)opal_lpc_inb(port) << 8 | opal_lpc_inb(port + 1);
|
return (__le16)opal_lpc_inb(port) << 8 | opal_lpc_inb(port + 1);
|
||||||
rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 2);
|
rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 2);
|
||||||
return rc ? 0xffff : data;
|
return rc ? 0xffff : be32_to_cpu(data);
|
||||||
}
|
}
|
||||||
static u16 opal_lpc_inw(unsigned long port)
|
static u16 opal_lpc_inw(unsigned long port)
|
||||||
{
|
{
|
||||||
@ -52,7 +52,7 @@ static u16 opal_lpc_inw(unsigned long port)
|
|||||||
static __le32 __opal_lpc_inl(unsigned long port)
|
static __le32 __opal_lpc_inl(unsigned long port)
|
||||||
{
|
{
|
||||||
int64_t rc;
|
int64_t rc;
|
||||||
uint32_t data;
|
__be32 data;
|
||||||
|
|
||||||
if (opal_lpc_chip_id < 0 || port > 0xfffc)
|
if (opal_lpc_chip_id < 0 || port > 0xfffc)
|
||||||
return 0xffffffff;
|
return 0xffffffff;
|
||||||
@ -62,7 +62,7 @@ static __le32 __opal_lpc_inl(unsigned long port)
|
|||||||
(__le32)opal_lpc_inb(port + 2) << 8 |
|
(__le32)opal_lpc_inb(port + 2) << 8 |
|
||||||
opal_lpc_inb(port + 3);
|
opal_lpc_inb(port + 3);
|
||||||
rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 4);
|
rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port, &data, 4);
|
||||||
return rc ? 0xffffffff : data;
|
return rc ? 0xffffffff : be32_to_cpu(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static u32 opal_lpc_inl(unsigned long port)
|
static u32 opal_lpc_inl(unsigned long port)
|
||||||
|
@ -96,9 +96,11 @@ static int opal_scom_read(scom_map_t map, u64 reg, u64 *value)
|
|||||||
{
|
{
|
||||||
struct opal_scom_map *m = map;
|
struct opal_scom_map *m = map;
|
||||||
int64_t rc;
|
int64_t rc;
|
||||||
|
__be64 v;
|
||||||
|
|
||||||
reg = opal_scom_unmangle(reg);
|
reg = opal_scom_unmangle(reg);
|
||||||
rc = opal_xscom_read(m->chip, m->addr + reg, (uint64_t *)__pa(value));
|
rc = opal_xscom_read(m->chip, m->addr + reg, (__be64 *)__pa(&v));
|
||||||
|
*value = be64_to_cpu(v);
|
||||||
return opal_xscom_err_xlate(rc);
|
return opal_xscom_err_xlate(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -720,6 +720,7 @@ static void pnv_pci_ioda2_setup_dma_pe(struct pnv_phb *phb,
|
|||||||
tbl->it_type = TCE_PCI_SWINV_CREATE | TCE_PCI_SWINV_FREE;
|
tbl->it_type = TCE_PCI_SWINV_CREATE | TCE_PCI_SWINV_FREE;
|
||||||
}
|
}
|
||||||
iommu_init_table(tbl, phb->hose->node);
|
iommu_init_table(tbl, phb->hose->node);
|
||||||
|
iommu_register_group(tbl, pci_domain_nr(pe->pbus), pe->pe_number);
|
||||||
|
|
||||||
if (pe->pdev)
|
if (pe->pdev)
|
||||||
set_iommu_table_base_and_group(&pe->pdev->dev, tbl);
|
set_iommu_table_base_and_group(&pe->pdev->dev, tbl);
|
||||||
|
@ -172,12 +172,14 @@ struct pnv_phb {
|
|||||||
} ioda;
|
} ioda;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* PHB status structure */
|
/* PHB and hub status structure */
|
||||||
union {
|
union {
|
||||||
unsigned char blob[PNV_PCI_DIAG_BUF_SIZE];
|
unsigned char blob[PNV_PCI_DIAG_BUF_SIZE];
|
||||||
struct OpalIoP7IOCPhbErrorData p7ioc;
|
struct OpalIoP7IOCPhbErrorData p7ioc;
|
||||||
struct OpalIoPhb3ErrorData phb3;
|
struct OpalIoPhb3ErrorData phb3;
|
||||||
|
struct OpalIoP7IOCErrorData hub_diag;
|
||||||
} diag;
|
} diag;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct pci_ops pnv_pci_ops;
|
extern struct pci_ops pnv_pci_ops;
|
||||||
|
@ -157,7 +157,7 @@ static void parse_ppp_data(struct seq_file *m)
|
|||||||
{
|
{
|
||||||
struct hvcall_ppp_data ppp_data;
|
struct hvcall_ppp_data ppp_data;
|
||||||
struct device_node *root;
|
struct device_node *root;
|
||||||
const int *perf_level;
|
const __be32 *perf_level;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
rc = h_get_ppp(&ppp_data);
|
rc = h_get_ppp(&ppp_data);
|
||||||
@ -201,7 +201,7 @@ static void parse_ppp_data(struct seq_file *m)
|
|||||||
perf_level = of_get_property(root,
|
perf_level = of_get_property(root,
|
||||||
"ibm,partition-performance-parameters-level",
|
"ibm,partition-performance-parameters-level",
|
||||||
NULL);
|
NULL);
|
||||||
if (perf_level && (*perf_level >= 1)) {
|
if (perf_level && (be32_to_cpup(perf_level) >= 1)) {
|
||||||
seq_printf(m,
|
seq_printf(m,
|
||||||
"physical_procs_allocated_to_virtualization=%d\n",
|
"physical_procs_allocated_to_virtualization=%d\n",
|
||||||
ppp_data.phys_platform_procs);
|
ppp_data.phys_platform_procs);
|
||||||
@ -435,7 +435,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
|
|||||||
int partition_potential_processors;
|
int partition_potential_processors;
|
||||||
int partition_active_processors;
|
int partition_active_processors;
|
||||||
struct device_node *rtas_node;
|
struct device_node *rtas_node;
|
||||||
const int *lrdrp = NULL;
|
const __be32 *lrdrp = NULL;
|
||||||
|
|
||||||
rtas_node = of_find_node_by_path("/rtas");
|
rtas_node = of_find_node_by_path("/rtas");
|
||||||
if (rtas_node)
|
if (rtas_node)
|
||||||
@ -444,7 +444,7 @@ static int pseries_lparcfg_data(struct seq_file *m, void *v)
|
|||||||
if (lrdrp == NULL) {
|
if (lrdrp == NULL) {
|
||||||
partition_potential_processors = vdso_data->processorCount;
|
partition_potential_processors = vdso_data->processorCount;
|
||||||
} else {
|
} else {
|
||||||
partition_potential_processors = *(lrdrp + 4);
|
partition_potential_processors = be32_to_cpup(lrdrp + 4);
|
||||||
}
|
}
|
||||||
of_node_put(rtas_node);
|
of_node_put(rtas_node);
|
||||||
|
|
||||||
@ -654,7 +654,7 @@ static int lparcfg_data(struct seq_file *m, void *v)
|
|||||||
const char *model = "";
|
const char *model = "";
|
||||||
const char *system_id = "";
|
const char *system_id = "";
|
||||||
const char *tmp;
|
const char *tmp;
|
||||||
const unsigned int *lp_index_ptr;
|
const __be32 *lp_index_ptr;
|
||||||
unsigned int lp_index = 0;
|
unsigned int lp_index = 0;
|
||||||
|
|
||||||
seq_printf(m, "%s %s\n", MODULE_NAME, MODULE_VERS);
|
seq_printf(m, "%s %s\n", MODULE_NAME, MODULE_VERS);
|
||||||
@ -670,7 +670,7 @@ static int lparcfg_data(struct seq_file *m, void *v)
|
|||||||
lp_index_ptr = of_get_property(rootdn, "ibm,partition-no",
|
lp_index_ptr = of_get_property(rootdn, "ibm,partition-no",
|
||||||
NULL);
|
NULL);
|
||||||
if (lp_index_ptr)
|
if (lp_index_ptr)
|
||||||
lp_index = *lp_index_ptr;
|
lp_index = be32_to_cpup(lp_index_ptr);
|
||||||
of_node_put(rootdn);
|
of_node_put(rootdn);
|
||||||
}
|
}
|
||||||
seq_printf(m, "serial_number=%s\n", system_id);
|
seq_printf(m, "serial_number=%s\n", system_id);
|
||||||
|
@ -130,7 +130,8 @@ static int check_req(struct pci_dev *pdev, int nvec, char *prop_name)
|
|||||||
{
|
{
|
||||||
struct device_node *dn;
|
struct device_node *dn;
|
||||||
struct pci_dn *pdn;
|
struct pci_dn *pdn;
|
||||||
const u32 *req_msi;
|
const __be32 *p;
|
||||||
|
u32 req_msi;
|
||||||
|
|
||||||
pdn = pci_get_pdn(pdev);
|
pdn = pci_get_pdn(pdev);
|
||||||
if (!pdn)
|
if (!pdn)
|
||||||
@ -138,19 +139,20 @@ static int check_req(struct pci_dev *pdev, int nvec, char *prop_name)
|
|||||||
|
|
||||||
dn = pdn->node;
|
dn = pdn->node;
|
||||||
|
|
||||||
req_msi = of_get_property(dn, prop_name, NULL);
|
p = of_get_property(dn, prop_name, NULL);
|
||||||
if (!req_msi) {
|
if (!p) {
|
||||||
pr_debug("rtas_msi: No %s on %s\n", prop_name, dn->full_name);
|
pr_debug("rtas_msi: No %s on %s\n", prop_name, dn->full_name);
|
||||||
return -ENOENT;
|
return -ENOENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*req_msi < nvec) {
|
req_msi = be32_to_cpup(p);
|
||||||
|
if (req_msi < nvec) {
|
||||||
pr_debug("rtas_msi: %s requests < %d MSIs\n", prop_name, nvec);
|
pr_debug("rtas_msi: %s requests < %d MSIs\n", prop_name, nvec);
|
||||||
|
|
||||||
if (*req_msi == 0) /* Be paranoid */
|
if (req_msi == 0) /* Be paranoid */
|
||||||
return -ENOSPC;
|
return -ENOSPC;
|
||||||
|
|
||||||
return *req_msi;
|
return req_msi;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -171,7 +173,7 @@ static int check_req_msix(struct pci_dev *pdev, int nvec)
|
|||||||
static struct device_node *find_pe_total_msi(struct pci_dev *dev, int *total)
|
static struct device_node *find_pe_total_msi(struct pci_dev *dev, int *total)
|
||||||
{
|
{
|
||||||
struct device_node *dn;
|
struct device_node *dn;
|
||||||
const u32 *p;
|
const __be32 *p;
|
||||||
|
|
||||||
dn = of_node_get(pci_device_to_OF_node(dev));
|
dn = of_node_get(pci_device_to_OF_node(dev));
|
||||||
while (dn) {
|
while (dn) {
|
||||||
@ -179,7 +181,7 @@ static struct device_node *find_pe_total_msi(struct pci_dev *dev, int *total)
|
|||||||
if (p) {
|
if (p) {
|
||||||
pr_debug("rtas_msi: found prop on dn %s\n",
|
pr_debug("rtas_msi: found prop on dn %s\n",
|
||||||
dn->full_name);
|
dn->full_name);
|
||||||
*total = *p;
|
*total = be32_to_cpup(p);
|
||||||
return dn;
|
return dn;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -232,13 +234,13 @@ struct msi_counts {
|
|||||||
static void *count_non_bridge_devices(struct device_node *dn, void *data)
|
static void *count_non_bridge_devices(struct device_node *dn, void *data)
|
||||||
{
|
{
|
||||||
struct msi_counts *counts = data;
|
struct msi_counts *counts = data;
|
||||||
const u32 *p;
|
const __be32 *p;
|
||||||
u32 class;
|
u32 class;
|
||||||
|
|
||||||
pr_debug("rtas_msi: counting %s\n", dn->full_name);
|
pr_debug("rtas_msi: counting %s\n", dn->full_name);
|
||||||
|
|
||||||
p = of_get_property(dn, "class-code", NULL);
|
p = of_get_property(dn, "class-code", NULL);
|
||||||
class = p ? *p : 0;
|
class = p ? be32_to_cpup(p) : 0;
|
||||||
|
|
||||||
if ((class >> 8) != PCI_CLASS_BRIDGE_PCI)
|
if ((class >> 8) != PCI_CLASS_BRIDGE_PCI)
|
||||||
counts->num_devices++;
|
counts->num_devices++;
|
||||||
@ -249,7 +251,7 @@ static void *count_non_bridge_devices(struct device_node *dn, void *data)
|
|||||||
static void *count_spare_msis(struct device_node *dn, void *data)
|
static void *count_spare_msis(struct device_node *dn, void *data)
|
||||||
{
|
{
|
||||||
struct msi_counts *counts = data;
|
struct msi_counts *counts = data;
|
||||||
const u32 *p;
|
const __be32 *p;
|
||||||
int req;
|
int req;
|
||||||
|
|
||||||
if (dn == counts->requestor)
|
if (dn == counts->requestor)
|
||||||
@ -260,11 +262,11 @@ static void *count_spare_msis(struct device_node *dn, void *data)
|
|||||||
req = 0;
|
req = 0;
|
||||||
p = of_get_property(dn, "ibm,req#msi", NULL);
|
p = of_get_property(dn, "ibm,req#msi", NULL);
|
||||||
if (p)
|
if (p)
|
||||||
req = *p;
|
req = be32_to_cpup(p);
|
||||||
|
|
||||||
p = of_get_property(dn, "ibm,req#msi-x", NULL);
|
p = of_get_property(dn, "ibm,req#msi-x", NULL);
|
||||||
if (p)
|
if (p)
|
||||||
req = max(req, (int)*p);
|
req = max(req, (int)be32_to_cpup(p));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (req < counts->quota)
|
if (req < counts->quota)
|
||||||
|
@ -43,8 +43,8 @@ static char nvram_buf[NVRW_CNT]; /* assume this is in the first 4GB */
|
|||||||
static DEFINE_SPINLOCK(nvram_lock);
|
static DEFINE_SPINLOCK(nvram_lock);
|
||||||
|
|
||||||
struct err_log_info {
|
struct err_log_info {
|
||||||
int error_type;
|
__be32 error_type;
|
||||||
unsigned int seq_num;
|
__be32 seq_num;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct nvram_os_partition {
|
struct nvram_os_partition {
|
||||||
@ -79,9 +79,9 @@ static const char *pseries_nvram_os_partitions[] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct oops_log_info {
|
struct oops_log_info {
|
||||||
u16 version;
|
__be16 version;
|
||||||
u16 report_length;
|
__be16 report_length;
|
||||||
u64 timestamp;
|
__be64 timestamp;
|
||||||
} __attribute__((packed));
|
} __attribute__((packed));
|
||||||
|
|
||||||
static void oops_to_nvram(struct kmsg_dumper *dumper,
|
static void oops_to_nvram(struct kmsg_dumper *dumper,
|
||||||
@ -291,8 +291,8 @@ int nvram_write_os_partition(struct nvram_os_partition *part, char * buff,
|
|||||||
length = part->size;
|
length = part->size;
|
||||||
}
|
}
|
||||||
|
|
||||||
info.error_type = err_type;
|
info.error_type = cpu_to_be32(err_type);
|
||||||
info.seq_num = error_log_cnt;
|
info.seq_num = cpu_to_be32(error_log_cnt);
|
||||||
|
|
||||||
tmp_index = part->index;
|
tmp_index = part->index;
|
||||||
|
|
||||||
@ -364,8 +364,8 @@ int nvram_read_partition(struct nvram_os_partition *part, char *buff,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (part->os_partition) {
|
if (part->os_partition) {
|
||||||
*error_log_cnt = info.seq_num;
|
*error_log_cnt = be32_to_cpu(info.seq_num);
|
||||||
*err_type = info.error_type;
|
*err_type = be32_to_cpu(info.error_type);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -529,9 +529,9 @@ static int zip_oops(size_t text_len)
|
|||||||
pr_err("nvram: logging uncompressed oops/panic report\n");
|
pr_err("nvram: logging uncompressed oops/panic report\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
oops_hdr->version = OOPS_HDR_VERSION;
|
oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION);
|
||||||
oops_hdr->report_length = (u16) zipped_len;
|
oops_hdr->report_length = cpu_to_be16(zipped_len);
|
||||||
oops_hdr->timestamp = get_seconds();
|
oops_hdr->timestamp = cpu_to_be64(get_seconds());
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -574,9 +574,9 @@ static int nvram_pstore_write(enum pstore_type_id type,
|
|||||||
clobbering_unread_rtas_event())
|
clobbering_unread_rtas_event())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
oops_hdr->version = OOPS_HDR_VERSION;
|
oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION);
|
||||||
oops_hdr->report_length = (u16) size;
|
oops_hdr->report_length = cpu_to_be16(size);
|
||||||
oops_hdr->timestamp = get_seconds();
|
oops_hdr->timestamp = cpu_to_be64(get_seconds());
|
||||||
|
|
||||||
if (compressed)
|
if (compressed)
|
||||||
err_type = ERR_TYPE_KERNEL_PANIC_GZ;
|
err_type = ERR_TYPE_KERNEL_PANIC_GZ;
|
||||||
@ -670,16 +670,16 @@ static ssize_t nvram_pstore_read(u64 *id, enum pstore_type_id *type,
|
|||||||
size_t length, hdr_size;
|
size_t length, hdr_size;
|
||||||
|
|
||||||
oops_hdr = (struct oops_log_info *)buff;
|
oops_hdr = (struct oops_log_info *)buff;
|
||||||
if (oops_hdr->version < OOPS_HDR_VERSION) {
|
if (be16_to_cpu(oops_hdr->version) < OOPS_HDR_VERSION) {
|
||||||
/* Old format oops header had 2-byte record size */
|
/* Old format oops header had 2-byte record size */
|
||||||
hdr_size = sizeof(u16);
|
hdr_size = sizeof(u16);
|
||||||
length = oops_hdr->version;
|
length = be16_to_cpu(oops_hdr->version);
|
||||||
time->tv_sec = 0;
|
time->tv_sec = 0;
|
||||||
time->tv_nsec = 0;
|
time->tv_nsec = 0;
|
||||||
} else {
|
} else {
|
||||||
hdr_size = sizeof(*oops_hdr);
|
hdr_size = sizeof(*oops_hdr);
|
||||||
length = oops_hdr->report_length;
|
length = be16_to_cpu(oops_hdr->report_length);
|
||||||
time->tv_sec = oops_hdr->timestamp;
|
time->tv_sec = be64_to_cpu(oops_hdr->timestamp);
|
||||||
time->tv_nsec = 0;
|
time->tv_nsec = 0;
|
||||||
}
|
}
|
||||||
*buf = kmalloc(length, GFP_KERNEL);
|
*buf = kmalloc(length, GFP_KERNEL);
|
||||||
@ -889,13 +889,13 @@ static void oops_to_nvram(struct kmsg_dumper *dumper,
|
|||||||
kmsg_dump_get_buffer(dumper, false,
|
kmsg_dump_get_buffer(dumper, false,
|
||||||
oops_data, oops_data_sz, &text_len);
|
oops_data, oops_data_sz, &text_len);
|
||||||
err_type = ERR_TYPE_KERNEL_PANIC;
|
err_type = ERR_TYPE_KERNEL_PANIC;
|
||||||
oops_hdr->version = OOPS_HDR_VERSION;
|
oops_hdr->version = cpu_to_be16(OOPS_HDR_VERSION);
|
||||||
oops_hdr->report_length = (u16) text_len;
|
oops_hdr->report_length = cpu_to_be16(text_len);
|
||||||
oops_hdr->timestamp = get_seconds();
|
oops_hdr->timestamp = cpu_to_be64(get_seconds());
|
||||||
}
|
}
|
||||||
|
|
||||||
(void) nvram_write_os_partition(&oops_log_partition, oops_buf,
|
(void) nvram_write_os_partition(&oops_log_partition, oops_buf,
|
||||||
(int) (sizeof(*oops_hdr) + oops_hdr->report_length), err_type,
|
(int) (sizeof(*oops_hdr) + text_len), err_type,
|
||||||
++oops_count);
|
++oops_count);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&lock, flags);
|
spin_unlock_irqrestore(&lock, flags);
|
||||||
|
@ -113,7 +113,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge)
|
|||||||
{
|
{
|
||||||
struct device_node *dn, *pdn;
|
struct device_node *dn, *pdn;
|
||||||
struct pci_bus *bus;
|
struct pci_bus *bus;
|
||||||
const uint32_t *pcie_link_speed_stats;
|
const __be32 *pcie_link_speed_stats;
|
||||||
|
|
||||||
bus = bridge->bus;
|
bus = bridge->bus;
|
||||||
|
|
||||||
@ -122,7 +122,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
for (pdn = dn; pdn != NULL; pdn = of_get_next_parent(pdn)) {
|
for (pdn = dn; pdn != NULL; pdn = of_get_next_parent(pdn)) {
|
||||||
pcie_link_speed_stats = (const uint32_t *) of_get_property(pdn,
|
pcie_link_speed_stats = of_get_property(pdn,
|
||||||
"ibm,pcie-link-speed-stats", NULL);
|
"ibm,pcie-link-speed-stats", NULL);
|
||||||
if (pcie_link_speed_stats)
|
if (pcie_link_speed_stats)
|
||||||
break;
|
break;
|
||||||
@ -135,7 +135,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pcie_link_speed_stats[0]) {
|
switch (be32_to_cpup(pcie_link_speed_stats)) {
|
||||||
case 0x01:
|
case 0x01:
|
||||||
bus->max_bus_speed = PCIE_SPEED_2_5GT;
|
bus->max_bus_speed = PCIE_SPEED_2_5GT;
|
||||||
break;
|
break;
|
||||||
@ -147,7 +147,7 @@ int pseries_root_bridge_prepare(struct pci_host_bridge *bridge)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (pcie_link_speed_stats[1]) {
|
switch (be32_to_cpup(pcie_link_speed_stats)) {
|
||||||
case 0x01:
|
case 0x01:
|
||||||
bus->cur_bus_speed = PCIE_SPEED_2_5GT;
|
bus->cur_bus_speed = PCIE_SPEED_2_5GT;
|
||||||
break;
|
break;
|
||||||
|
@ -339,7 +339,7 @@ void *ppc4xx_ocm_alloc(phys_addr_t *phys, int size, int align,
|
|||||||
if (IS_ERR_VALUE(offset))
|
if (IS_ERR_VALUE(offset))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
ocm_blk = kzalloc(sizeof(struct ocm_block *), GFP_KERNEL);
|
ocm_blk = kzalloc(sizeof(struct ocm_block), GFP_KERNEL);
|
||||||
if (!ocm_blk) {
|
if (!ocm_blk) {
|
||||||
printk(KERN_ERR "PPC4XX OCM: could not allocate ocm block");
|
printk(KERN_ERR "PPC4XX OCM: could not allocate ocm block");
|
||||||
rh_free(ocm_reg->rh, offset);
|
rh_free(ocm_reg->rh, offset);
|
||||||
|
@ -91,6 +91,15 @@ extern boot_infos_t *boot_infos;
|
|||||||
#define AVIVO_DC_LUTB_WHITE_OFFSET_GREEN 0x6cd4
|
#define AVIVO_DC_LUTB_WHITE_OFFSET_GREEN 0x6cd4
|
||||||
#define AVIVO_DC_LUTB_WHITE_OFFSET_RED 0x6cd8
|
#define AVIVO_DC_LUTB_WHITE_OFFSET_RED 0x6cd8
|
||||||
|
|
||||||
|
#define FB_RIGHT_POS(p, bpp) (fb_be_math(p) ? 0 : (32 - (bpp)))
|
||||||
|
|
||||||
|
static inline u32 offb_cmap_byteswap(struct fb_info *info, u32 value)
|
||||||
|
{
|
||||||
|
u32 bpp = info->var.bits_per_pixel;
|
||||||
|
|
||||||
|
return cpu_to_be32(value) >> FB_RIGHT_POS(info, bpp);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set a single color register. The values supplied are already
|
* Set a single color register. The values supplied are already
|
||||||
* rounded down to the hardware's capabilities (according to the
|
* rounded down to the hardware's capabilities (according to the
|
||||||
@ -120,7 +129,7 @@ static int offb_setcolreg(u_int regno, u_int red, u_int green, u_int blue,
|
|||||||
mask <<= info->var.transp.offset;
|
mask <<= info->var.transp.offset;
|
||||||
value |= mask;
|
value |= mask;
|
||||||
}
|
}
|
||||||
pal[regno] = value;
|
pal[regno] = offb_cmap_byteswap(info, value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -301,7 +310,7 @@ static struct fb_ops offb_ops = {
|
|||||||
static void __iomem *offb_map_reg(struct device_node *np, int index,
|
static void __iomem *offb_map_reg(struct device_node *np, int index,
|
||||||
unsigned long offset, unsigned long size)
|
unsigned long offset, unsigned long size)
|
||||||
{
|
{
|
||||||
const u32 *addrp;
|
const __be32 *addrp;
|
||||||
u64 asize, taddr;
|
u64 asize, taddr;
|
||||||
unsigned int flags;
|
unsigned int flags;
|
||||||
|
|
||||||
@ -369,7 +378,11 @@ static void offb_init_palette_hacks(struct fb_info *info, struct device_node *dp
|
|||||||
}
|
}
|
||||||
of_node_put(pciparent);
|
of_node_put(pciparent);
|
||||||
} else if (dp && of_device_is_compatible(dp, "qemu,std-vga")) {
|
} else if (dp && of_device_is_compatible(dp, "qemu,std-vga")) {
|
||||||
const u32 io_of_addr[3] = { 0x01000000, 0x0, 0x0 };
|
#ifdef __BIG_ENDIAN
|
||||||
|
const __be32 io_of_addr[3] = { 0x01000000, 0x0, 0x0 };
|
||||||
|
#else
|
||||||
|
const __be32 io_of_addr[3] = { 0x00000001, 0x0, 0x0 };
|
||||||
|
#endif
|
||||||
u64 io_addr = of_translate_address(dp, io_of_addr);
|
u64 io_addr = of_translate_address(dp, io_of_addr);
|
||||||
if (io_addr != OF_BAD_ADDR) {
|
if (io_addr != OF_BAD_ADDR) {
|
||||||
par->cmap_adr = ioremap(io_addr + 0x3c8, 2);
|
par->cmap_adr = ioremap(io_addr + 0x3c8, 2);
|
||||||
@ -535,7 +548,7 @@ static void __init offb_init_nodriver(struct device_node *dp, int no_real_node)
|
|||||||
unsigned int flags, rsize, addr_prop = 0;
|
unsigned int flags, rsize, addr_prop = 0;
|
||||||
unsigned long max_size = 0;
|
unsigned long max_size = 0;
|
||||||
u64 rstart, address = OF_BAD_ADDR;
|
u64 rstart, address = OF_BAD_ADDR;
|
||||||
const u32 *pp, *addrp, *up;
|
const __be32 *pp, *addrp, *up;
|
||||||
u64 asize;
|
u64 asize;
|
||||||
int foreign_endian = 0;
|
int foreign_endian = 0;
|
||||||
|
|
||||||
@ -551,25 +564,25 @@ static void __init offb_init_nodriver(struct device_node *dp, int no_real_node)
|
|||||||
if (pp == NULL)
|
if (pp == NULL)
|
||||||
pp = of_get_property(dp, "depth", &len);
|
pp = of_get_property(dp, "depth", &len);
|
||||||
if (pp && len == sizeof(u32))
|
if (pp && len == sizeof(u32))
|
||||||
depth = *pp;
|
depth = be32_to_cpup(pp);
|
||||||
|
|
||||||
pp = of_get_property(dp, "linux,bootx-width", &len);
|
pp = of_get_property(dp, "linux,bootx-width", &len);
|
||||||
if (pp == NULL)
|
if (pp == NULL)
|
||||||
pp = of_get_property(dp, "width", &len);
|
pp = of_get_property(dp, "width", &len);
|
||||||
if (pp && len == sizeof(u32))
|
if (pp && len == sizeof(u32))
|
||||||
width = *pp;
|
width = be32_to_cpup(pp);
|
||||||
|
|
||||||
pp = of_get_property(dp, "linux,bootx-height", &len);
|
pp = of_get_property(dp, "linux,bootx-height", &len);
|
||||||
if (pp == NULL)
|
if (pp == NULL)
|
||||||
pp = of_get_property(dp, "height", &len);
|
pp = of_get_property(dp, "height", &len);
|
||||||
if (pp && len == sizeof(u32))
|
if (pp && len == sizeof(u32))
|
||||||
height = *pp;
|
height = be32_to_cpup(pp);
|
||||||
|
|
||||||
pp = of_get_property(dp, "linux,bootx-linebytes", &len);
|
pp = of_get_property(dp, "linux,bootx-linebytes", &len);
|
||||||
if (pp == NULL)
|
if (pp == NULL)
|
||||||
pp = of_get_property(dp, "linebytes", &len);
|
pp = of_get_property(dp, "linebytes", &len);
|
||||||
if (pp && len == sizeof(u32) && (*pp != 0xffffffffu))
|
if (pp && len == sizeof(u32) && (*pp != 0xffffffffu))
|
||||||
pitch = *pp;
|
pitch = be32_to_cpup(pp);
|
||||||
else
|
else
|
||||||
pitch = width * ((depth + 7) / 8);
|
pitch = width * ((depth + 7) / 8);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user